@charcoal-ui/styled 2.3.0 → 2.4.0

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.
package/dist/index.cjs CHANGED
@@ -10,7 +10,7 @@ var warning__default = /*#__PURE__*/_interopDefaultLegacy(warning);
10
10
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
11
11
 
12
12
  function _extends() {
13
- _extends = Object.assign || function (target) {
13
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
14
14
  for (var i = 1; i < arguments.length; i++) {
15
15
  var source = arguments[i];
16
16
 
@@ -23,7 +23,6 @@ function _extends() {
23
23
 
24
24
  return target;
25
25
  };
26
-
27
26
  return _extends.apply(this, arguments);
28
27
  }
29
28
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/util.ts","../src/lib.ts","../src/TokenInjector.tsx","../src/helper.ts","../src/SetThemeScript.tsx","../src/index.ts"],"sourcesContent":["import {\n applyEffect,\n customPropertyToken,\n filterObject,\n flatMapObject,\n} from '@charcoal-ui/utils'\nimport { CharcoalAbstractTheme } from '@charcoal-ui/theme'\nimport { CSSObject } from 'styled-components'\n\n/**\n * Function used to assert a given code path is unreachable\n */\nexport function unreachable(): never\n/**\n * Function used to assert a given code path is unreachable.\n * Very useful for ensuring switches are exhaustive:\n *\n * ```ts\n * switch (a.type) {\n * case Types.A:\n * case Types.B:\n * break\n * default:\n * unreachable(a) // will cause a build error if there was\n * // a Types.C that was not checked\n * }\n * ```\n *\n * @param value Value to be asserted as unreachable\n */\n// NOTE: Uses separate overloads, _not_ `value?: never`, to not allow `undefined` to be passed\n// eslint-disable-next-line @typescript-eslint/unified-signatures\nexport function unreachable(value: never): never\nexport function unreachable(value?: never): never {\n throw new Error(\n arguments.length === 0\n ? 'unreachable'\n : `unreachable (${JSON.stringify(value)})`\n )\n}\n\n/**\n * Check whether a value is non-null and non-undefined\n *\n * @param value nullable\n */\nexport const isPresent = <T>(value: T): value is NonNullable<T> => value != null\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Head<U> = U extends [infer T, ...any[]] ? T : never\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Tail<U> = U extends [any, any, ...any[]]\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((...args: U) => any) extends (head: any, ...args: infer T) => any\n ? T\n : never\n : never\n// Buggy at ts@4.0.0-dev20200506\n// type Tail<U> = U extends [any, ...infer T] ? T : never\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype RecursiveObjectAssign<T, S extends any[]> = {\n 0: T & Head<S>\n 1: RecursiveObjectAssign<T & Head<S>, Tail<S>>\n}[Tail<S> extends never ? 0 : 1]\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ObjectAssign<T extends any[]> = RecursiveObjectAssign<\n Record<string, unknown>,\n T\n>\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function objectAssign<T extends any[]>(...sources: T) {\n return Object.assign({}, ...sources) as ObjectAssign<T>\n}\n\nexport function objectKeys<V extends object, K extends keyof V>(obj: V) {\n return Object.keys(obj) as K[]\n}\n\nexport interface ReadonlyArrayConstructor {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isArray(value: any): value is readonly any[]\n}\n\nexport function extractNonNullKeys<V, K extends keyof V>(obj: {\n [key in K]: V[key]\n}) {\n return Object.entries(obj)\n .filter(([_, v]) => v !== null)\n .map(([k]) => k) as { [key in K]: V[key] extends null ? never : key }[K][]\n}\n\nexport const noThemeProvider = new Error(\n '`theme` is invalid. `<ThemeProvider>` is not likely mounted.'\n)\n\ntype NonNullableCSSObject = Record<keyof CSSObject, string | number>\n\n/**\n * 子孫要素で使われるカラーテーマの CSS Variables を上書きする\n *\n * @params colorParams - 上書きしたい色の定義( `theme.color` の一部だけ書けば良い )\n * @params effectParams - effect の定義を上書きしたい場合は渡す(必須ではない)\n *\n * @example\n * ```tsx\n * const LocalTheme = styled.div`\n * ${defineThemeVariables({ text1: '#ff0000' })}\n * // `text1` is now defined as red\n * ${theme((o) => [o.font.text1])}\n * `\n * ```\n */\nexport function defineThemeVariables(\n colorParams: Partial<CharcoalAbstractTheme['color']>,\n effectParams?: Partial<CharcoalAbstractTheme['effect']>\n) {\n return function toCssObject(props: {\n theme?: Pick<CharcoalAbstractTheme, 'effect'>\n }): NonNullableCSSObject {\n if (!isPresent(props.theme)) {\n throw noThemeProvider\n }\n\n const colors = filterObject(colorParams, isPresent)\n\n // flatMapObject の中で毎回 Object.entries を呼ぶのは無駄なので外で呼ぶ\n const effects = Object.entries({\n ...props.theme.effect,\n ...effectParams,\n })\n\n return flatMapObject(colors, (colorKey, color) => [\n [customPropertyToken(colorKey), color],\n\n ...effects.map<[string, string]>(([effectKey, effect]) => [\n customPropertyToken(colorKey, [effectKey]),\n applyEffect(color, [effect]),\n ]),\n ])\n }\n}\n","import { Key } from '@charcoal-ui/theme'\nimport { unreachable } from './util'\n\n/**\n * 配列で指定したプロパティを動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param member オブジェクトに生やすプロパティ一覧\n * @param chain プロパティに格納される値を生成する関数\n *\n * @example\n *\n * const o = factory({}, ['red', 'blue'],\n * color => hex(color)\n * )\n *\n * console.log(o.red) //=> #ff0000\n */\nexport const factory = <TSource, TMember extends readonly Key[], TValue>(\n source: TSource,\n member: TMember,\n chain: (key: TMember[number]) => TValue\n) =>\n Object.defineProperties(\n source,\n Object.fromEntries(\n member.map((key) => [\n key,\n { get: () => chain(key), enumerable: true, configurable: true },\n ])\n )\n ) as TSource & { readonly [key in TMember[number]]: TValue }\n\n/**\n * 配列で指定した名前のメソッドを動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param member オブジェクトに生やすメソッド名一覧\n * @param chain メソッドの戻り値になる値を生成する関数\n *\n * @example\n *\n * const o = argumentedFactory({}, ['red', 'blue'],\n * (color, alpha: number) => hex(color, alpha)\n * )\n *\n * console.log(o.red(0.5)) //=> #ff000077\n */\nexport const argumentedFactory = <\n TSource,\n TMember extends readonly string[],\n TValue,\n TArguments extends unknown[]\n>(\n source: TSource,\n member: TMember,\n chain: (key: TMember[number], ...args: TArguments) => TValue\n) =>\n Object.defineProperties(\n source,\n Object.fromEntries(\n member.map((key) => [\n key,\n {\n value: (...args: TArguments) => chain(key, ...args),\n enumerable: true,\n configurable: true,\n },\n ])\n )\n ) as TSource & {\n readonly [key in TMember[number]]: (...args: TArguments) => TValue\n }\n\n/**\n * オブジェクトで指定したプロパティ名と値を動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param def オブジェクトに生やす定義(プロパティ名と値)\n *\n * @example\n *\n * const o = constFactory({}, {\n * red: '#f00',\n * blue: '#00f',\n * })\n *\n * console.log(o.red) //=> #f00\n */\nexport const constFactory = <TSource, TDef extends { [key: string]: unknown }>(\n source: TSource,\n def: TDef\n) =>\n factory(source, Object.keys(def), (key) => def[key]) as TSource &\n Readonly<TDef>\n\n/**\n * 配列で指定したモディファイア(プロパティ)をチェーン可能な再帰オブジェクトを動的に生やす\n *\n * @param modifiers オブジェクトに生やすモディファイヤ一覧\n * @param source 指定されたモディファイヤの一覧から値を生成する関数\n *\n * @example\n *\n * const o = modifiedArgumentedFactory(['red', 'blue'],\n * modifiers => modifiers.map(color => hex(color)).join(',')\n * )\n *\n * console.log(o.red.blue) => #f00,#00f\n */\nexport const modifiedFactory = <TSource, T extends Key>(\n modifiers: readonly T[],\n source: (applied: readonly T[]) => TSource\n) =>\n (function recursiveModifiedFactory(\n applied: readonly T[]\n ): Modified<TSource, T> {\n const notApplied = modifiers.filter((v) => !applied.includes(v))\n return factory(source(applied), notApplied, (modifier) =>\n notApplied.length === 0\n ? unreachable()\n : recursiveModifiedFactory([...applied, modifier])\n )\n })([])\n\nexport type Modified<TSource, TModifiers extends Key> = TSource & {\n readonly [key in TModifiers]: Modified<TSource, Exclude<TModifiers, key>>\n}\n\n/**\n * 配列で指定したモディファイア(メソッド)をチェーン可能な再帰オブジェクトを動的に生やす\n *\n * @param modifiers オブジェクトに生やすモディファイヤ一覧\n * @param source 指定されたモディファイヤの一覧から値を生成する関数\n * @param _inferPhantom 関数形式のモディファイヤの引数型を推論するためのメタタイプ(引数の個数に合わせてタプルで指定する)\n *\n * @example\n *\n * const o = modifiedArgumentedFactory(['red', 'blue'],\n * modifiers => modifiers.map(([color, alpha]) => hex(color, alpha)).join(',')\n * , {} as [number])\n *\n * console.log(o.red(0.5).blue(1)) => #ff000077,#0000ffff\n */\nexport const modifiedArgumentedFactory = <\n TSource,\n T extends string,\n TArguments extends unknown[]\n>(\n modifiers: readonly T[],\n source: (applied: readonly [T, ...TArguments][]) => TSource,\n ..._inferPhantom: TArguments\n) =>\n (function recursiveModifiedFactory(\n applied: readonly [T, ...TArguments][]\n ): ModifiedArgumented<TSource, T, TArguments> {\n const notApplied = modifiers.filter(\n (v) => !applied.map(([w]) => w).includes(v)\n )\n return argumentedFactory(\n source(applied),\n notApplied,\n (modifier, ...args: TArguments) =>\n notApplied.length === 0\n ? unreachable()\n : recursiveModifiedFactory([...applied, [modifier, ...args]])\n )\n })([])\n\nexport type ModifiedArgumented<\n TSource,\n TModifiers extends string,\n TArguments extends unknown[]\n> = TSource & {\n readonly [key in TModifiers]: (\n ...args: TArguments\n ) => ModifiedArgumented<TSource, Exclude<TModifiers, key>, TArguments>\n}\n\nexport const variable = (value: string) => `var(${value})`\n","import React from 'react'\nimport { createGlobalStyle, css } from 'styled-components'\nimport { CharcoalAbstractTheme } from '@charcoal-ui/theme'\nimport { defineThemeVariables } from './util'\n\nconst GlobalStyle = createGlobalStyle`\n ${<T extends Theme>({\n themeMap,\n background,\n }: {\n themeMap: ThemeMap<T>\n background?: keyof ThemeMap<T>[string]['color']\n }) =>\n Object.entries(themeMap).map(([key, theme]) =>\n key.startsWith('@media')\n ? css`\n ${key} {\n :root {\n ${background !== undefined &&\n css`\n background-color: ${theme.color[background]};\n `}\n ${defineColorVariableCSS(theme)}\n }\n }\n `\n : css`\n /* stylelint-disable-next-line no-duplicate-selectors */\n ${key} {\n ${background !== undefined &&\n css`\n background-color: ${theme.color[background]};\n `}\n ${defineColorVariableCSS(theme)}\n }\n `\n )}\n`\n\nexport interface ThemeMap<T extends Theme> {\n ':root': T\n [mediaQuery: `@media (${string})`]: T\n [selector: string]: T\n}\n\ntype Theme = Pick<CharcoalAbstractTheme, 'color' | 'effect'>\n\nexport default function TokenInjector<T extends Theme>({\n theme: themeMap,\n background,\n}: {\n theme: ThemeMap<T>\n background?: keyof ThemeMap<T>[string]['color']\n}) {\n return <GlobalStyle themeMap={themeMap} background={background} />\n}\n\nconst defineColorVariableCSS = (theme: Theme) =>\n Object.entries(defineThemeVariables(theme.color)({ theme }))\n .map(([varName, value]) => variableDefinition(varName, value.toString()))\n .join(';')\n\nconst variableDefinition = (prop: string, value: string) => `${prop}: ${value}`\n","import { useEffect, useMemo, useState } from 'react'\n\nexport const LOCAL_STORAGE_KEY = 'charcoal-theme'\nexport const DEFAULT_ROOT_ATTRIBUTE = 'theme'\n\nconst keyStringRegExp = new RegExp(/^(\\w|-)+$/)\n\n/**\n * 文字列が英数字_-のみで構成されているか検証する。不正な文字列ならエラーを投げる\n * @param key 検証するキー\n */\nexport function assertKeyString(key: string) {\n if (!keyStringRegExp.test(key)) {\n throw new Error(`Unexpected key :${key}, expect: /^(\\\\w|-)+$/`)\n }\n}\n\n/**\n * `<html data-theme=\"dark\">` のような設定を行うデフォルトのセッター\n */\nexport const themeSetter =\n (attr: string = DEFAULT_ROOT_ATTRIBUTE) =>\n (theme: string | undefined) => {\n assertKeyString(attr)\n if (theme !== undefined) {\n document.documentElement.dataset[attr] = theme\n } else {\n delete document.documentElement.dataset[attr]\n }\n }\n\n/**\n * `<html data-theme=\"dark\">` にマッチするセレクタを生成する\n */\nexport function themeSelector<\n T extends string,\n S extends string = typeof DEFAULT_ROOT_ATTRIBUTE\n>(theme: T, attr?: S) {\n return `:root[data-${attr ?? DEFAULT_ROOT_ATTRIBUTE}='${theme}']` as const\n}\n\n/**\n * prefers-color-scheme を利用する media クエリを生成する\n */\nexport function prefersColorScheme<T extends 'light' | 'dark'>(theme: T) {\n return `@media (prefers-color-scheme: ${theme})` as const\n}\n\n/**\n * LocalStorageからテーマの情報を取得して、変化時にテーマをセットするhooks\n */\nexport function useThemeSetter({\n key = LOCAL_STORAGE_KEY,\n setter = themeSetter(),\n}: { key?: string; setter?: (theme: string | undefined) => void } = {}) {\n const [theme, , system] = useTheme(key)\n\n useEffect(() => {\n if (theme === undefined) {\n return\n }\n // prefers-color-scheme から値を取っている場合にはcssのみで処理したいのでアンセットする\n setter(system ? undefined : theme)\n }, [setter, system, theme])\n}\n\n/**\n * 同期的にLocalStorageからテーマを取得するヘルパ\n */\nexport function getThemeSync(key: string = LOCAL_STORAGE_KEY) {\n const theme = localStorage.getItem(key)\n return theme\n}\n\n/**\n * LocalStorage, prefers-color-scheme からテーマの情報を取得して、現在のテーマを返すhooks\n *\n * `dark` `light` という名前だけは特別扱いされていて、prefers-color-schemeにマッチした場合に返ります\n */\nexport const useTheme = (key: string = LOCAL_STORAGE_KEY) => {\n assertKeyString(key)\n const isDark = useMedia('(prefers-color-scheme: dark)')\n const media = isDark !== undefined ? (isDark ? 'dark' : 'light') : undefined\n const [local, setTheme, ready] = useLocalStorage<string>(key)\n const theme = !ready || media === undefined ? undefined : local ?? media\n const system = local === undefined\n return [theme, setTheme, system] as const\n}\n\nexport function useLocalStorage<T>(key: string, defaultValue?: () => T) {\n const [ready, setReady] = useState(false)\n const [state, setState] = useState<T>()\n const defaultValueMemo = useMemo(() => defaultValue?.(), [defaultValue])\n\n useEffect(() => {\n fetch()\n window.addEventListener('storage', handleStorage)\n return () => {\n window.removeEventListener('storage', handleStorage)\n }\n })\n\n const handleStorage = (e: StorageEvent) => {\n if (e.storageArea !== localStorage) {\n return\n }\n if (e.key !== key) {\n return\n }\n fetch()\n }\n\n const fetch = () => {\n const raw = localStorage.getItem(key)\n setState((raw !== null ? deserialize(raw) : null) ?? defaultValueMemo)\n setReady(true)\n }\n\n const set = (value: T | undefined) => {\n if (value === undefined) {\n // undefinedがセットされる場合にはkeyごと削除\n localStorage.removeItem(key)\n } else {\n const raw = serialize(value)\n localStorage.setItem(key, raw)\n }\n\n // 同一ウィンドウではstorageイベントが発火しないので、手動で発火させる\n const event = new StorageEvent('storage', {\n bubbles: true,\n cancelable: false,\n key,\n url: location.href,\n storageArea: localStorage,\n })\n dispatchEvent(event)\n }\n\n return [state ?? defaultValueMemo, set, ready] as const\n}\n\nfunction deserialize<T>(raw: string): T {\n try {\n return JSON.parse(raw) as T\n } catch {\n // syntax error はすべて文字列として扱う\n return raw as unknown as T\n }\n}\n\nfunction serialize(value: unknown): string {\n if (typeof value === 'string') {\n return value\n } else {\n return JSON.stringify(value)\n }\n}\n\nexport function useMedia(query: string) {\n const [match, setState] = useState<boolean>()\n\n useEffect(() => {\n const matcher = window.matchMedia(query)\n\n const onChange = () => {\n setState(matcher.matches)\n }\n\n matcher.addEventListener('change', onChange)\n\n setState(matcher.matches)\n\n return () => {\n matcher.removeEventListener('change', onChange)\n }\n }, [query])\n\n return match\n}\n","import React from 'react'\nimport {\n assertKeyString,\n DEFAULT_ROOT_ATTRIBUTE,\n LOCAL_STORAGE_KEY,\n} from './helper'\n\ninterface Props {\n localStorageKey: string\n rootAttribute: string\n}\n\n/**\n * 同期的にテーマをローカルストレージから取得してhtmlの属性に設定するコードを取得する\n * @param props localStorageのキー、htmlのdataになる属性のキーを含むオブジェクト\n * @returns ソースコードの文字列\n */\nexport function makeSetThemeScriptCode({\n localStorageKey = defaultProps.localStorageKey,\n rootAttribute = defaultProps.rootAttribute,\n}: Partial<Props> = defaultProps) {\n assertKeyString(localStorageKey)\n assertKeyString(rootAttribute)\n return `'use strict';\n(function () {\n var localStorageKey = '${localStorageKey}'\n var rootAttribute = '${rootAttribute}'\n var currentTheme = localStorage.getItem(localStorageKey);\n if (currentTheme) {\n document.documentElement.dataset[rootAttribute] = currentTheme;\n }\n})();\n`\n}\n\n/**\n * 同期的にテーマをローカルストレージから取得してhtmlの属性に設定するスクリプトタグ\n * @param props localStorageのキー、htmlのdataになる属性のキーを含むオブジェクト\n * @returns\n */\nexport function SetThemeScript(props: Props) {\n const src = makeSetThemeScriptCode(props)\n return (\n <script\n dangerouslySetInnerHTML={{\n __html: src,\n }}\n />\n )\n}\n\nconst defaultProps: Props = {\n localStorageKey: LOCAL_STORAGE_KEY,\n rootAttribute: DEFAULT_ROOT_ATTRIBUTE,\n}\n\nSetThemeScript.defaultProps = defaultProps\n","import { CSSObject, ThemedStyledInterface } from 'styled-components'\nimport warning from 'warning'\nimport {\n factory,\n modifiedFactory,\n constFactory,\n modifiedArgumentedFactory,\n variable,\n} from './lib'\nimport {\n EffectType,\n CharcoalAbstractTheme as Theme,\n Key,\n} from '@charcoal-ui/theme'\nimport {\n objectAssign,\n unreachable,\n ReadonlyArrayConstructor,\n objectKeys,\n isPresent,\n noThemeProvider,\n} from './util'\nimport { columnSystem } from '@charcoal-ui/foundation'\nimport {\n halfLeading,\n applyEffect,\n applyEffectToGradient,\n dur,\n gradient,\n GradientDirection,\n notDisabledSelector,\n disabledSelector,\n px,\n customPropertyToken,\n} from '@charcoal-ui/utils'\nexport { type Modified, type ModifiedArgumented } from './lib'\nexport { default as TokenInjector } from './TokenInjector'\nexport {\n getThemeSync,\n themeSetter,\n themeSelector,\n prefersColorScheme,\n useTheme,\n useThemeSetter,\n useLocalStorage,\n useMedia,\n} from './helper'\nexport { defineThemeVariables } from './util'\nexport * from './SetThemeScript'\n\nconst colorProperties = ['bg', 'font'] as const\ntype ColorProperty = typeof colorProperties[number]\n\nconst spacingProperties = ['margin', 'padding'] as const\nconst spacingDirections = [\n 'top',\n 'right',\n 'bottom',\n 'left',\n 'vertical',\n 'horizontal',\n 'all',\n] as const\ntype SpacingProperty = typeof spacingProperties[number]\ntype SpacingDirection = typeof spacingDirections[number]\n\nconst fixedProperties = ['width', 'height'] as const\ntype FixedProperty = typeof fixedProperties[number]\n\nconst borderDirections = ['top', 'right', 'bottom', 'left'] as const\ntype BorderDirection = typeof borderDirections[number]\n\nconst outlineType = ['focus'] as const\ntype OutlineType = typeof outlineType[number]\n\n/**\n * `theme(o => [...])` の `o` の部分を構築する\n *\n * @param theme テーマオブジェクト\n * @param isPhantom 型推論のためだけに使う場合にランタイムコストをゼロにするフラグ\n */\nfunction builder<T extends Theme>(\n theme: {\n // factoryの第二引数に入れ込むものだけ明示的に型変数を展開しておくことで型の具象化を遅延する\n color: T['color']\n gradientColor: T['gradientColor']\n border: T['border']\n outline: T['outline']\n } & Omit<T, 'color' | 'gradientColor' | 'border' | 'outline'>,\n isPhantom = false\n) {\n if (isPhantom) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {} as never\n }\n const colors = objectKeys(theme.color)\n const effects = objectKeys(theme.effect)\n\n // 色\n const gradientColors = objectKeys(theme.gradientColor)\n const colorCss = createColorCss(theme)\n const gradientColorCss = createGradientColorCss(theme)\n const colorObject = constFactory(\n {},\n {\n bg: objectAssign(\n factory({}, colors, (color) =>\n modifiedFactory(effects, (modifiers) =>\n colorCss('bg', color, modifiers)\n )\n ),\n factory(\n {},\n gradientColors,\n (color) => (direction: GradientDirection) =>\n modifiedFactory(effects, (modifiers) =>\n gradientColorCss(color, modifiers, direction)\n )\n )\n ),\n font: factory({}, colors, (color) =>\n modifiedFactory(effects, (modifiers) =>\n colorCss('font', color, modifiers)\n )\n ),\n }\n )\n\n // タイポグラフィ\n const typographyModifiers = [\n // TODO\n 'monospace',\n 'bold',\n 'preserveHalfLeading',\n ] as const\n const typographyCss = createTypographyCss(theme)\n const typographyObject = factory(\n {},\n ['typography'] as const,\n (_) => (size: keyof T['typography']['size']) =>\n modifiedFactory(typographyModifiers, (modifiers) =>\n typographyCss(size, {\n preserveHalfLeading: modifiers.includes('preserveHalfLeading'),\n monospace: modifiers.includes('monospace'),\n bold: modifiers.includes('bold'),\n })\n )\n )\n\n // スペーシング\n const spacingCss = createSpacingCss(theme)\n const spacingObject = factory({}, spacingProperties, (spacingProperty) =>\n modifiedArgumentedFactory(\n spacingDirections,\n (modifiers) => spacingCss(spacingProperty, modifiers),\n {} as keyof T['spacing'] | 'auto' // 推論のためのメタタイプ\n )\n )\n\n // 大きさ\n const fixedPxCss = createFixedPxCss(theme)\n const fixedColumnCss = createFixedColumnCss(theme)\n const fixedRelativeCss = createFixedRelativeCss(theme)\n const fixedObject = factory({}, fixedProperties, (property) =>\n constFactory(\n {},\n {\n px: (size: keyof T['spacing'] | 'auto') => fixedPxCss(property, size),\n column: (span: number) => fixedColumnCss(property, span),\n auto: fixedRelativeCss(property, 'auto'),\n full: fixedRelativeCss(property, '100%'),\n }\n )\n )\n\n // 要素へのエフェクト (etc: 透過)\n const elementEffectCss = createElementEffectCss(theme)\n const elementEffectObject = modifiedFactory(\n objectKeys(theme.elementEffect),\n (modifiers) => elementEffectCss(modifiers)\n )\n\n // ボーダー\n const borderCss = createBorderCss(theme)\n const borderObject = constFactory(\n {},\n {\n border: factory({}, objectKeys(theme.border), (variant) =>\n modifiedFactory(borderDirections, (modifiers) =>\n borderCss(variant, modifiers)\n )\n ),\n }\n )\n\n // 角丸\n const borderRadiusCss = createBorderRadiusCss(theme)\n const borderRadiusObject = constFactory(\n {},\n {\n borderRadius: (radius: keyof T['borderRadius']) =>\n borderRadiusCss(radius),\n }\n )\n\n // アウトライン\n const outlineCss = createOutlineColorCss(theme)\n const outlineObject = constFactory(\n {},\n {\n outline: factory({}, objectKeys(theme.outline), (variant) =>\n modifiedFactory(outlineType, (modifiers) =>\n outlineCss(variant, modifiers)\n )\n ),\n }\n )\n\n return objectAssign(\n colorObject,\n typographyObject,\n spacingObject,\n fixedObject,\n elementEffectObject,\n borderObject,\n borderRadiusObject,\n outlineObject\n )\n}\n\nfunction targetProperty(target: ColorProperty) {\n return target === 'bg' ? 'background-color' : 'color'\n}\n\nfunction isSupportedEffect(effect: Key): effect is EffectType {\n return ['hover', 'press', 'disabled'].includes(effect as string)\n}\n\nfunction onEffectPseudo(effect: EffectType, css: CSSObject) {\n return effect === 'hover'\n ? { '&:hover': { [notDisabledSelector]: css } }\n : effect === 'press'\n ? { '&:active': { [notDisabledSelector]: css } }\n : // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n effect === 'disabled'\n ? { [disabledSelector]: css }\n : unreachable(effect)\n}\n\nconst createColorCss =\n <T extends Theme>(_theme: T) =>\n (\n target: ColorProperty,\n color: keyof T['color'],\n effects: readonly (keyof T['effect'])[] = []\n ): Internal =>\n internal(\n () => ({\n [targetProperty(target)]: variable(\n customPropertyToken(color.toString())\n ),\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n [targetProperty(target)]: variable(\n customPropertyToken(color.toString(), [effect])\n ),\n }),\n }),\n {}\n ),\n }),\n effects.length > 0\n ? target === 'font'\n ? {\n colorTransition: true,\n }\n : {\n backgroundColorTransition: true,\n }\n : {}\n )\n\n// TODO: deprecate\nconst TRANSITION_DURATION = 0.2\n\nconst createGradientColorCss =\n <T extends Theme>(theme: T) =>\n (\n color: keyof T['gradientColor'],\n effects: readonly (keyof T['effect'])[] = [],\n direction: GradientDirection\n ): Internal => {\n const toLinearGradient = gradient(direction)\n return internal((context) => {\n const optimized = !useHalfLeadingCanceller(context)\n const duration = dur(TRANSITION_DURATION)\n if (optimized && effects.length > 0) {\n return {\n position: 'relative',\n zIndex: 0,\n overflow: 'hidden',\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n '&::before': {\n zIndex: -1,\n ...overlayElement,\n transition: `${duration} background-color`,\n },\n '&::after': {\n zIndex: -2,\n ...overlayElement,\n ...toLinearGradient(theme.gradientColor[color]),\n },\n ...onEffectPseudo(effect, {\n '&::before': {\n backgroundColor: applyEffect(\n null,\n theme.effect[effect] ?? []\n ),\n },\n }),\n }),\n {}\n ),\n }\n } else {\n warning(\n effects.length === 0,\n // eslint-disable-next-line max-len\n `'Transition' will not be applied. You can get around this by specifying 'preserveHalfLeading' or both 'padding' and 'typograpy'.`\n )\n return {\n ...toLinearGradient(theme.gradientColor[color]),\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n ...toLinearGradient(\n applyEffectToGradient(theme.effect[effect] ?? [])(\n theme.gradientColor[color]\n )\n ),\n }),\n }),\n {}\n ),\n }\n }\n })\n }\n\n/**\n * @see https://developer.mozilla.org/ja/docs/Web/CSS/:focus-visible#selectively_showing_the_focus_indicator\n */\nconst onFocus = (css: CSSObject) => ({\n [notDisabledSelector]: {\n '&:focus, &:active': {\n outline: 'none',\n ...css,\n },\n\n '&:focus:not(:focus-visible), &:active:not(:focus-visible)': {\n outline: 'none',\n },\n\n '&:focus-visible': {\n outline: 'none',\n ...css,\n },\n },\n})\n\nconst outlineCss = (weight: number, color: string) => ({\n boxShadow: `0 0 0 ${px(weight)} ${color}`,\n})\n\nconst createOutlineColorCss =\n <T extends Theme>(theme: T) =>\n (\n variant: keyof T['outline'],\n modifiers: readonly OutlineType[]\n ): Internal => {\n const weight = theme.outline[variant].weight\n const color = theme.outline[variant].color\n return internal(\n () =>\n modifiers.includes('focus')\n ? onFocus(outlineCss(weight, color))\n : { '&&': { [notDisabledSelector]: outlineCss(weight, color) } },\n {\n boxShadowTransition: true,\n }\n )\n }\n\nconst overlayElement: CSSObject = {\n content: \"''\",\n display: 'block',\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n}\n\n// half-leadingをキャンセルするとき && 垂直方向のpaddingが無い時\n// -> before/afterを入れる\nconst useHalfLeadingCanceller = ({\n cancelHalfLeadingPx,\n hasVerticalPadding = false,\n}: Context) => cancelHalfLeadingPx !== undefined && !hasVerticalPadding\n\nconst createTypographyCss =\n <T extends Theme>(theme: T) =>\n (\n size: keyof T['typography']['size'],\n options: {\n preserveHalfLeading?: boolean\n monospace?: boolean\n bold?: boolean\n } = {}\n ): Internal => {\n const {\n preserveHalfLeading = false,\n monospace = false,\n bold = false,\n } = options\n const descriptor = theme.typography.size[size]\n const margin = -halfLeading(descriptor)\n\n return internal(\n (context) => ({\n fontSize: px(descriptor.fontSize),\n lineHeight: px(descriptor.lineHeight),\n ...(monospace && {\n fontFamily: 'monospace',\n }),\n ...(bold && {\n fontWeight: 'bold',\n }),\n ...(useHalfLeadingCanceller(context) && {\n // prevent margin collapsing\n display: 'flow-root',\n // cancel half-leading with negative margin\n '&::before': {\n ...leadingCancel,\n marginTop: px(margin),\n },\n '&::after': {\n ...leadingCancel,\n marginBottom: px(margin),\n },\n }),\n }),\n !preserveHalfLeading\n ? {\n cancelHalfLeadingPx: margin,\n }\n : {}\n )\n }\n\nconst leadingCancel: CSSObject = {\n display: 'block',\n width: 0,\n height: 0,\n content: `''`,\n}\n\nfunction spacingProperty(\n property: SpacingProperty,\n direction: 'top' | 'right' | 'bottom' | 'left'\n) {\n return `${property}-${direction}`\n}\n\nconst createSpacingCss =\n <T extends Theme>(theme: { spacing: T['spacing'] }) =>\n (\n property: SpacingProperty,\n modifiers: readonly [SpacingDirection, keyof T['spacing'] | 'auto'][]\n ): Internal => {\n const { top, right, bottom, left } = modifiers.reduce(\n (acc, [direction, size]) => {\n if (direction === 'all') {\n acc.top = size\n acc.right = size\n acc.bottom = size\n acc.left = size\n } else if (direction === 'vertical') {\n acc.top = size\n acc.bottom = size\n } else if (direction === 'horizontal') {\n acc.right = size\n acc.left = size\n } else {\n acc[direction] = size\n }\n return acc\n },\n {} as Partial<\n Record<'top' | 'right' | 'bottom' | 'left', keyof T['spacing'] | 'auto'>\n >\n )\n\n const hasVerticalPadding =\n property === 'padding' &&\n top !== undefined &&\n bottom !== undefined &&\n top !== 'auto' &&\n bottom !== 'auto'\n\n return internal(\n ({ cancelHalfLeadingPx = 0 }) => ({\n ...(top !== undefined && {\n [spacingProperty(property, 'top')]:\n top === 'auto'\n ? 'auto'\n : px(\n theme.spacing[top] +\n (hasVerticalPadding ? cancelHalfLeadingPx : 0)\n ),\n }),\n ...(bottom !== undefined && {\n [spacingProperty(property, 'bottom')]:\n bottom === 'auto'\n ? 'auto'\n : px(\n theme.spacing[bottom] +\n (hasVerticalPadding ? cancelHalfLeadingPx : 0)\n ),\n }),\n ...(right !== undefined && {\n [spacingProperty(property, 'right')]:\n right === 'auto' ? 'auto' : px(theme.spacing[right]),\n }),\n ...(left !== undefined && {\n [spacingProperty(property, 'left')]:\n left === 'auto' ? 'auto' : px(theme.spacing[left]),\n }),\n }),\n hasVerticalPadding ? { hasVerticalPadding: true } : {}\n )\n }\n\nconst createFixedPxCss =\n <T extends Theme>(theme: T) =>\n (property: FixedProperty, size: keyof T['spacing'] | 'auto'): Internal =>\n internal(() => ({\n [property]: size === 'auto' ? 'auto' : px(theme.spacing[size]),\n }))\n\nconst createFixedRelativeCss =\n <T extends Theme>(_theme: T) =>\n (property: FixedProperty, amount: '100%' | 'auto'): Internal =>\n internal(() => ({\n [property]: amount,\n }))\n\nconst createFixedColumnCss =\n <T extends Theme>(theme: T) =>\n (property: FixedProperty, span: number): Internal =>\n internal(() => ({\n [property]: px(\n columnSystem(span, theme.grid.unit.column, theme.grid.unit.gutter)\n ),\n }))\n\nconst createElementEffectCss =\n <T extends Theme, TElementEffect extends T['elementEffect']>(theme: {\n elementEffect: TElementEffect\n }) =>\n (effects: readonly (keyof TElementEffect)[] = []): Internal =>\n internal(() =>\n effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n opacity:\n !(Array as ReadonlyArrayConstructor).isArray(\n theme.elementEffect[effect]\n ) && theme.elementEffect[effect]?.type === 'opacity'\n ? theme.elementEffect[effect]?.opacity\n : unreachable(),\n }),\n }),\n {}\n )\n )\n\nfunction borderProperty(direction: BorderDirection) {\n return `border-${direction}`\n}\n\nfunction borderShorthand(color: string) {\n return `solid 1px ${color}`\n}\n\nconst createBorderCss =\n <T extends Theme>(theme: T) =>\n (\n variant: keyof T['border'],\n directions: readonly BorderDirection[]\n ): Internal => {\n const all = directions.length === 0\n const value = borderShorthand(theme.border[variant].color)\n return internal(() => ({\n ...(all\n ? { border: value }\n : directions.reduce<CSSObject>(\n (acc, direction) => ({\n ...acc,\n [borderProperty(direction)]: value,\n }),\n {}\n )),\n }))\n }\n\nconst createBorderRadiusCss =\n <T extends Theme>(theme: T) =>\n (size: keyof T['borderRadius']): Internal =>\n internal(() => ({\n borderRadius: px(theme.borderRadius[size]),\n }))\n\ninterface Context {\n cancelHalfLeadingPx?: number\n hasVerticalPadding?: boolean\n boxShadowTransition?: boolean\n colorTransition?: boolean\n backgroundColorTransition?: boolean\n}\n\nconst commonSpec = (_theme: unknown): Internal => {\n const duration = dur(TRANSITION_DURATION)\n const transition = (property: string[]) => ({\n transition: property.map((v) => `${duration} ${v}`).join(', '),\n })\n return internal(\n ({\n colorTransition = false,\n backgroundColorTransition = false,\n boxShadowTransition = false,\n }) =>\n transition(\n [\n colorTransition ? 'color' : null,\n backgroundColorTransition ? 'background-color' : null,\n boxShadowTransition ? 'box-shadow' : null,\n ].filter(isPresent)\n )\n )\n}\n\nconst internalSym: unique symbol = Symbol('internal')\n\nfunction internal(\n operation: (context: Context) => CSSObject,\n context: Context = {}\n): Internal {\n return {\n [internalSym]: {\n operation,\n context,\n },\n }\n}\n\nexport interface Internal {\n [internalSym]: {\n operation: (context: Context) => CSSObject\n context: Context\n }\n}\n\ntype Blank = null | undefined | false\n\nconst nonBlank = <T>(value: T): value is T extends Blank ? never : T =>\n isPresent(value) && (value as unknown) !== false\n\n/**\n * `theme(o => [...])` の `theme` ユーティリティを構築する\n *\n * @param _styled styled-componnets の `styled` そのもの (型推論のために用いられる)\n *\n * @example\n *\n * import styled from 'styled-components'\n * const theme = createTheme(styled)\n *\n * @example\n *\n * const theme = createTheme<DefaultTheme>()\n */\nexport function createTheme<T extends Theme>(\n _styled?: ThemedStyledInterface<T>\n) {\n // `theme(o => [...])` の `o` の部分の型推論のためだけに使う意味のない変数\n // Tを型変数のまま渡してcreateThemeが呼ばれるまで型の具象化が行われないようにする\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any\n const _phantomBuilder = builder<T>({} as any, true)\n // ランタイムの `theme(o => [...])` のインターフェースを構築する\n return (\n // ユーザー定義\n spec: (\n o: typeof _phantomBuilder\n ) => Blank | Internal | (Blank | Internal)[]\n ): ThemeProp<T> =>\n ({ theme }) => {\n if (!isPresent(theme)) {\n // テーマが入っていない場合は復旧不可能なのでエラーにする\n throw noThemeProvider\n }\n // styled-componentsのランタイムから受け取ったthemeオブジェクトをbuilderに食わせて`o`をつくる\n // さらに、ユーザー定義にbuilderが構築した`o`を食わせる\n // (`o`を一時変数に入れてしまうと型Tの具象化が行われるので関数合成を優先する)\n const rawSpecDescriptor = spec(builder(theme))\n // ユーザー定義の配列を整形\n const specDescriptor = [\n ...(Array.isArray(rawSpecDescriptor)\n ? rawSpecDescriptor\n : [rawSpecDescriptor]),\n commonSpec(theme),\n ].filter(nonBlank)\n\n // 1パス目\n // 全ユーザー定義を舐めて相互に影響し合う定義をチェックし、その結果(コンテキスト)を取得\n const context = specDescriptor.reduce<Context>(\n (acc, v) => ({ ...acc, ...v[internalSym].context }),\n {}\n )\n // 2パス目\n // コンテキストを見ながら最適化されたCSSを構築\n return specDescriptor.map((v) => v[internalSym].operation(context))\n }\n}\n\nexport type ThemeProp<T> = ({\n theme,\n}: {\n theme: T | undefined\n}) => CSSObject | CSSObject[]\n"],"names":["unreachable","value","Error","arguments","length","JSON","stringify","isPresent","objectAssign","Object","assign","objectKeys","obj","keys","noThemeProvider","defineThemeVariables","colorParams","effectParams","toCssObject","props","theme","colors","filterObject","effects","entries","effect","flatMapObject","colorKey","color","customPropertyToken","map","effectKey","applyEffect","factory","source","member","chain","defineProperties","fromEntries","key","get","enumerable","configurable","argumentedFactory","constFactory","def","modifiedFactory","modifiers","recursiveModifiedFactory","applied","notApplied","filter","v","includes","modifier","modifiedArgumentedFactory","w","variable","GlobalStyle","createGlobalStyle","themeMap","background","startsWith","css","undefined","defineColorVariableCSS","TokenInjector","React","varName","variableDefinition","toString","join","prop","LOCAL_STORAGE_KEY","DEFAULT_ROOT_ATTRIBUTE","keyStringRegExp","RegExp","assertKeyString","test","themeSetter","attr","document","documentElement","dataset","themeSelector","prefersColorScheme","useThemeSetter","setter","useTheme","system","useEffect","getThemeSync","localStorage","getItem","isDark","useMedia","media","useLocalStorage","local","setTheme","ready","defaultValue","useState","setReady","state","setState","defaultValueMemo","useMemo","fetch","window","addEventListener","handleStorage","removeEventListener","e","storageArea","raw","deserialize","set","removeItem","serialize","setItem","event","StorageEvent","bubbles","cancelable","url","location","href","dispatchEvent","parse","query","match","matcher","matchMedia","onChange","matches","makeSetThemeScriptCode","defaultProps","localStorageKey","rootAttribute","SetThemeScript","src","__html","spacingProperties","spacingDirections","fixedProperties","borderDirections","outlineType","builder","isPhantom","gradientColors","gradientColor","colorCss","createColorCss","gradientColorCss","createGradientColorCss","colorObject","bg","direction","font","typographyModifiers","typographyCss","createTypographyCss","typographyObject","_","size","preserveHalfLeading","monospace","bold","spacingCss","createSpacingCss","spacingObject","spacingProperty","fixedPxCss","createFixedPxCss","fixedColumnCss","createFixedColumnCss","fixedRelativeCss","createFixedRelativeCss","fixedObject","property","px","column","span","auto","full","elementEffectCss","createElementEffectCss","elementEffectObject","elementEffect","borderCss","createBorderCss","borderObject","border","variant","borderRadiusCss","createBorderRadiusCss","borderRadiusObject","borderRadius","radius","outlineCss","createOutlineColorCss","outlineObject","outline","targetProperty","target","isSupportedEffect","onEffectPseudo","notDisabledSelector","disabledSelector","_theme","internal","reduce","acc","colorTransition","backgroundColorTransition","TRANSITION_DURATION","toLinearGradient","gradient","context","optimized","useHalfLeadingCanceller","duration","dur","position","zIndex","overflow","overlayElement","transition","backgroundColor","warning","applyEffectToGradient","onFocus","weight","boxShadow","boxShadowTransition","content","display","width","height","top","left","cancelHalfLeadingPx","hasVerticalPadding","options","descriptor","typography","margin","halfLeading","fontSize","lineHeight","fontFamily","fontWeight","leadingCancel","marginTop","marginBottom","right","bottom","spacing","amount","columnSystem","grid","unit","gutter","opacity","Array","isArray","type","borderProperty","borderShorthand","directions","all","commonSpec","internalSym","Symbol","operation","nonBlank","createTheme","_styled","spec","rawSpecDescriptor","specDescriptor"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/util.ts","../src/lib.ts","../src/TokenInjector.tsx","../src/helper.ts","../src/SetThemeScript.tsx","../src/index.ts"],"sourcesContent":["import {\n applyEffect,\n customPropertyToken,\n filterObject,\n flatMapObject,\n} from '@charcoal-ui/utils'\nimport { CharcoalAbstractTheme } from '@charcoal-ui/theme'\nimport { CSSObject } from 'styled-components'\n\n/**\n * Function used to assert a given code path is unreachable\n */\nexport function unreachable(): never\n/**\n * Function used to assert a given code path is unreachable.\n * Very useful for ensuring switches are exhaustive:\n *\n * ```ts\n * switch (a.type) {\n * case Types.A:\n * case Types.B:\n * break\n * default:\n * unreachable(a) // will cause a build error if there was\n * // a Types.C that was not checked\n * }\n * ```\n *\n * @param value Value to be asserted as unreachable\n */\n// NOTE: Uses separate overloads, _not_ `value?: never`, to not allow `undefined` to be passed\n// eslint-disable-next-line @typescript-eslint/unified-signatures\nexport function unreachable(value: never): never\nexport function unreachable(value?: never): never {\n throw new Error(\n arguments.length === 0\n ? 'unreachable'\n : `unreachable (${JSON.stringify(value)})`\n )\n}\n\n/**\n * Check whether a value is non-null and non-undefined\n *\n * @param value nullable\n */\nexport const isPresent = <T>(value: T): value is NonNullable<T> => value != null\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Head<U> = U extends [infer T, ...any[]] ? T : never\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Tail<U> = U extends [any, any, ...any[]]\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((...args: U) => any) extends (head: any, ...args: infer T) => any\n ? T\n : never\n : never\n// Buggy at ts@4.0.0-dev20200506\n// type Tail<U> = U extends [any, ...infer T] ? T : never\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype RecursiveObjectAssign<T, S extends any[]> = {\n 0: T & Head<S>\n 1: RecursiveObjectAssign<T & Head<S>, Tail<S>>\n}[Tail<S> extends never ? 0 : 1]\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ObjectAssign<T extends any[]> = RecursiveObjectAssign<\n Record<string, unknown>,\n T\n>\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function objectAssign<T extends any[]>(...sources: T) {\n return Object.assign({}, ...sources) as ObjectAssign<T>\n}\n\nexport function objectKeys<V extends object, K extends keyof V>(obj: V) {\n return Object.keys(obj) as K[]\n}\n\nexport interface ReadonlyArrayConstructor {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isArray(value: any): value is readonly any[]\n}\n\nexport function extractNonNullKeys<V, K extends keyof V>(obj: {\n [key in K]: V[key]\n}) {\n return Object.entries(obj)\n .filter(([_, v]) => v !== null)\n .map(([k]) => k) as { [key in K]: V[key] extends null ? never : key }[K][]\n}\n\nexport const noThemeProvider = new Error(\n '`theme` is invalid. `<ThemeProvider>` is not likely mounted.'\n)\n\ntype NonNullableCSSObject = Record<keyof CSSObject, string | number>\n\n/**\n * 子孫要素で使われるカラーテーマの CSS Variables を上書きする\n *\n * @params colorParams - 上書きしたい色の定義( `theme.color` の一部だけ書けば良い )\n * @params effectParams - effect の定義を上書きしたい場合は渡す(必須ではない)\n *\n * @example\n * ```tsx\n * const LocalTheme = styled.div`\n * ${defineThemeVariables({ text1: '#ff0000' })}\n * // `text1` is now defined as red\n * ${theme((o) => [o.font.text1])}\n * `\n * ```\n */\nexport function defineThemeVariables(\n colorParams: Partial<CharcoalAbstractTheme['color']>,\n effectParams?: Partial<CharcoalAbstractTheme['effect']>\n) {\n return function toCssObject(props: {\n theme?: Pick<CharcoalAbstractTheme, 'effect'>\n }): NonNullableCSSObject {\n if (!isPresent(props.theme)) {\n throw noThemeProvider\n }\n\n const colors = filterObject(colorParams, isPresent)\n\n // flatMapObject の中で毎回 Object.entries を呼ぶのは無駄なので外で呼ぶ\n const effects = Object.entries({\n ...props.theme.effect,\n ...effectParams,\n })\n\n return flatMapObject(colors, (colorKey, color) => [\n [customPropertyToken(colorKey), color],\n\n ...effects.map<[string, string]>(([effectKey, effect]) => [\n customPropertyToken(colorKey, [effectKey]),\n applyEffect(color, [effect]),\n ]),\n ])\n }\n}\n","import { Key } from '@charcoal-ui/theme'\nimport { unreachable } from './util'\n\n/**\n * 配列で指定したプロパティを動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param member オブジェクトに生やすプロパティ一覧\n * @param chain プロパティに格納される値を生成する関数\n *\n * @example\n *\n * const o = factory({}, ['red', 'blue'],\n * color => hex(color)\n * )\n *\n * console.log(o.red) //=> #ff0000\n */\nexport const factory = <TSource, TMember extends readonly Key[], TValue>(\n source: TSource,\n member: TMember,\n chain: (key: TMember[number]) => TValue\n) =>\n Object.defineProperties(\n source,\n Object.fromEntries(\n member.map((key) => [\n key,\n { get: () => chain(key), enumerable: true, configurable: true },\n ])\n )\n ) as TSource & { readonly [key in TMember[number]]: TValue }\n\n/**\n * 配列で指定した名前のメソッドを動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param member オブジェクトに生やすメソッド名一覧\n * @param chain メソッドの戻り値になる値を生成する関数\n *\n * @example\n *\n * const o = argumentedFactory({}, ['red', 'blue'],\n * (color, alpha: number) => hex(color, alpha)\n * )\n *\n * console.log(o.red(0.5)) //=> #ff000077\n */\nexport const argumentedFactory = <\n TSource,\n TMember extends readonly string[],\n TValue,\n TArguments extends unknown[]\n>(\n source: TSource,\n member: TMember,\n chain: (key: TMember[number], ...args: TArguments) => TValue\n) =>\n Object.defineProperties(\n source,\n Object.fromEntries(\n member.map((key) => [\n key,\n {\n value: (...args: TArguments) => chain(key, ...args),\n enumerable: true,\n configurable: true,\n },\n ])\n )\n ) as TSource & {\n readonly [key in TMember[number]]: (...args: TArguments) => TValue\n }\n\n/**\n * オブジェクトで指定したプロパティ名と値を動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param def オブジェクトに生やす定義(プロパティ名と値)\n *\n * @example\n *\n * const o = constFactory({}, {\n * red: '#f00',\n * blue: '#00f',\n * })\n *\n * console.log(o.red) //=> #f00\n */\nexport const constFactory = <TSource, TDef extends { [key: string]: unknown }>(\n source: TSource,\n def: TDef\n) =>\n factory(source, Object.keys(def), (key) => def[key]) as TSource &\n Readonly<TDef>\n\n/**\n * 配列で指定したモディファイア(プロパティ)をチェーン可能な再帰オブジェクトを動的に生やす\n *\n * @param modifiers オブジェクトに生やすモディファイヤ一覧\n * @param source 指定されたモディファイヤの一覧から値を生成する関数\n *\n * @example\n *\n * const o = modifiedArgumentedFactory(['red', 'blue'],\n * modifiers => modifiers.map(color => hex(color)).join(',')\n * )\n *\n * console.log(o.red.blue) => #f00,#00f\n */\nexport const modifiedFactory = <TSource, T extends Key>(\n modifiers: readonly T[],\n source: (applied: readonly T[]) => TSource\n) =>\n (function recursiveModifiedFactory(\n applied: readonly T[]\n ): Modified<TSource, T> {\n const notApplied = modifiers.filter((v) => !applied.includes(v))\n return factory(source(applied), notApplied, (modifier) =>\n notApplied.length === 0\n ? unreachable()\n : recursiveModifiedFactory([...applied, modifier])\n )\n })([])\n\nexport type Modified<TSource, TModifiers extends Key> = TSource & {\n readonly [key in TModifiers]: Modified<TSource, Exclude<TModifiers, key>>\n}\n\n/**\n * 配列で指定したモディファイア(メソッド)をチェーン可能な再帰オブジェクトを動的に生やす\n *\n * @param modifiers オブジェクトに生やすモディファイヤ一覧\n * @param source 指定されたモディファイヤの一覧から値を生成する関数\n * @param _inferPhantom 関数形式のモディファイヤの引数型を推論するためのメタタイプ(引数の個数に合わせてタプルで指定する)\n *\n * @example\n *\n * const o = modifiedArgumentedFactory(['red', 'blue'],\n * modifiers => modifiers.map(([color, alpha]) => hex(color, alpha)).join(',')\n * , {} as [number])\n *\n * console.log(o.red(0.5).blue(1)) => #ff000077,#0000ffff\n */\nexport const modifiedArgumentedFactory = <\n TSource,\n T extends string,\n TArguments extends unknown[]\n>(\n modifiers: readonly T[],\n source: (applied: readonly [T, ...TArguments][]) => TSource,\n ..._inferPhantom: TArguments\n) =>\n (function recursiveModifiedFactory(\n applied: readonly [T, ...TArguments][]\n ): ModifiedArgumented<TSource, T, TArguments> {\n const notApplied = modifiers.filter(\n (v) => !applied.map(([w]) => w).includes(v)\n )\n return argumentedFactory(\n source(applied),\n notApplied,\n (modifier, ...args: TArguments) =>\n notApplied.length === 0\n ? unreachable()\n : recursiveModifiedFactory([...applied, [modifier, ...args]])\n )\n })([])\n\nexport type ModifiedArgumented<\n TSource,\n TModifiers extends string,\n TArguments extends unknown[]\n> = TSource & {\n readonly [key in TModifiers]: (\n ...args: TArguments\n ) => ModifiedArgumented<TSource, Exclude<TModifiers, key>, TArguments>\n}\n\nexport const variable = (value: string) => `var(${value})`\n","import React from 'react'\nimport { createGlobalStyle, css } from 'styled-components'\nimport { CharcoalAbstractTheme } from '@charcoal-ui/theme'\nimport { defineThemeVariables } from './util'\n\nconst GlobalStyle = createGlobalStyle`\n ${<T extends Theme>({\n themeMap,\n background,\n }: {\n themeMap: ThemeMap<T>\n background?: keyof ThemeMap<T>[string]['color']\n }) =>\n Object.entries(themeMap).map(([key, theme]) =>\n key.startsWith('@media')\n ? css`\n ${key} {\n :root {\n ${background !== undefined &&\n css`\n background-color: ${theme.color[background]};\n `}\n ${defineColorVariableCSS(theme)}\n }\n }\n `\n : css`\n /* stylelint-disable-next-line no-duplicate-selectors */\n ${key} {\n ${background !== undefined &&\n css`\n background-color: ${theme.color[background]};\n `}\n ${defineColorVariableCSS(theme)}\n }\n `\n )}\n`\n\nexport interface ThemeMap<T extends Theme> {\n ':root': T\n [mediaQuery: `@media (${string})`]: T\n [selector: string]: T\n}\n\ntype Theme = Pick<CharcoalAbstractTheme, 'color' | 'effect'>\n\nexport default function TokenInjector<T extends Theme>({\n theme: themeMap,\n background,\n}: {\n theme: ThemeMap<T>\n background?: keyof ThemeMap<T>[string]['color']\n}) {\n return <GlobalStyle themeMap={themeMap} background={background} />\n}\n\nconst defineColorVariableCSS = (theme: Theme) =>\n Object.entries(defineThemeVariables(theme.color)({ theme }))\n .map(([varName, value]) => variableDefinition(varName, value.toString()))\n .join(';')\n\nconst variableDefinition = (prop: string, value: string) => `${prop}: ${value}`\n","import { useEffect, useMemo, useState } from 'react'\n\nexport const LOCAL_STORAGE_KEY = 'charcoal-theme'\nexport const DEFAULT_ROOT_ATTRIBUTE = 'theme'\n\nconst keyStringRegExp = new RegExp(/^(\\w|-)+$/)\n\n/**\n * 文字列が英数字_-のみで構成されているか検証する。不正な文字列ならエラーを投げる\n * @param key 検証するキー\n */\nexport function assertKeyString(key: string) {\n if (!keyStringRegExp.test(key)) {\n throw new Error(`Unexpected key :${key}, expect: /^(\\\\w|-)+$/`)\n }\n}\n\n/**\n * `<html data-theme=\"dark\">` のような設定を行うデフォルトのセッター\n */\nexport const themeSetter =\n (attr: string = DEFAULT_ROOT_ATTRIBUTE) =>\n (theme: string | undefined) => {\n assertKeyString(attr)\n if (theme !== undefined) {\n document.documentElement.dataset[attr] = theme\n } else {\n delete document.documentElement.dataset[attr]\n }\n }\n\n/**\n * `<html data-theme=\"dark\">` にマッチするセレクタを生成する\n */\nexport function themeSelector<\n T extends string,\n S extends string = typeof DEFAULT_ROOT_ATTRIBUTE\n>(theme: T, attr?: S) {\n return `:root[data-${attr ?? DEFAULT_ROOT_ATTRIBUTE}='${theme}']` as const\n}\n\n/**\n * prefers-color-scheme を利用する media クエリを生成する\n */\nexport function prefersColorScheme<T extends 'light' | 'dark'>(theme: T) {\n return `@media (prefers-color-scheme: ${theme})` as const\n}\n\n/**\n * LocalStorageからテーマの情報を取得して、変化時にテーマをセットするhooks\n */\nexport function useThemeSetter({\n key = LOCAL_STORAGE_KEY,\n setter = themeSetter(),\n}: { key?: string; setter?: (theme: string | undefined) => void } = {}) {\n const [theme, , system] = useTheme(key)\n\n useEffect(() => {\n if (theme === undefined) {\n return\n }\n // prefers-color-scheme から値を取っている場合にはcssのみで処理したいのでアンセットする\n setter(system ? undefined : theme)\n }, [setter, system, theme])\n}\n\n/**\n * 同期的にLocalStorageからテーマを取得するヘルパ\n */\nexport function getThemeSync(key: string = LOCAL_STORAGE_KEY) {\n const theme = localStorage.getItem(key)\n return theme\n}\n\n/**\n * LocalStorage, prefers-color-scheme からテーマの情報を取得して、現在のテーマを返すhooks\n *\n * `dark` `light` という名前だけは特別扱いされていて、prefers-color-schemeにマッチした場合に返ります\n */\nexport const useTheme = (key: string = LOCAL_STORAGE_KEY) => {\n assertKeyString(key)\n const isDark = useMedia('(prefers-color-scheme: dark)')\n const media = isDark !== undefined ? (isDark ? 'dark' : 'light') : undefined\n const [local, setTheme, ready] = useLocalStorage<string>(key)\n const theme = !ready || media === undefined ? undefined : local ?? media\n const system = local === undefined\n return [theme, setTheme, system] as const\n}\n\nexport function useLocalStorage<T>(key: string, defaultValue?: () => T) {\n const [ready, setReady] = useState(false)\n const [state, setState] = useState<T>()\n const defaultValueMemo = useMemo(() => defaultValue?.(), [defaultValue])\n\n useEffect(() => {\n fetch()\n window.addEventListener('storage', handleStorage)\n return () => {\n window.removeEventListener('storage', handleStorage)\n }\n })\n\n const handleStorage = (e: StorageEvent) => {\n if (e.storageArea !== localStorage) {\n return\n }\n if (e.key !== key) {\n return\n }\n fetch()\n }\n\n const fetch = () => {\n const raw = localStorage.getItem(key)\n setState((raw !== null ? deserialize(raw) : null) ?? defaultValueMemo)\n setReady(true)\n }\n\n const set = (value: T | undefined) => {\n if (value === undefined) {\n // undefinedがセットされる場合にはkeyごと削除\n localStorage.removeItem(key)\n } else {\n const raw = serialize(value)\n localStorage.setItem(key, raw)\n }\n\n // 同一ウィンドウではstorageイベントが発火しないので、手動で発火させる\n const event = new StorageEvent('storage', {\n bubbles: true,\n cancelable: false,\n key,\n url: location.href,\n storageArea: localStorage,\n })\n dispatchEvent(event)\n }\n\n return [state ?? defaultValueMemo, set, ready] as const\n}\n\nfunction deserialize<T>(raw: string): T {\n try {\n return JSON.parse(raw) as T\n } catch {\n // syntax error はすべて文字列として扱う\n return raw as unknown as T\n }\n}\n\nfunction serialize(value: unknown): string {\n if (typeof value === 'string') {\n return value\n } else {\n return JSON.stringify(value)\n }\n}\n\nexport function useMedia(query: string) {\n const [match, setState] = useState<boolean>()\n\n useEffect(() => {\n const matcher = window.matchMedia(query)\n\n const onChange = () => {\n setState(matcher.matches)\n }\n\n matcher.addEventListener('change', onChange)\n\n setState(matcher.matches)\n\n return () => {\n matcher.removeEventListener('change', onChange)\n }\n }, [query])\n\n return match\n}\n","import React from 'react'\nimport {\n assertKeyString,\n DEFAULT_ROOT_ATTRIBUTE,\n LOCAL_STORAGE_KEY,\n} from './helper'\n\ninterface Props {\n localStorageKey: string\n rootAttribute: string\n}\n\n/**\n * 同期的にテーマをローカルストレージから取得してhtmlの属性に設定するコードを取得する\n * @param props localStorageのキー、htmlのdataになる属性のキーを含むオブジェクト\n * @returns ソースコードの文字列\n */\nexport function makeSetThemeScriptCode({\n localStorageKey = defaultProps.localStorageKey,\n rootAttribute = defaultProps.rootAttribute,\n}: Partial<Props> = defaultProps) {\n assertKeyString(localStorageKey)\n assertKeyString(rootAttribute)\n return `'use strict';\n(function () {\n var localStorageKey = '${localStorageKey}'\n var rootAttribute = '${rootAttribute}'\n var currentTheme = localStorage.getItem(localStorageKey);\n if (currentTheme) {\n document.documentElement.dataset[rootAttribute] = currentTheme;\n }\n})();\n`\n}\n\n/**\n * 同期的にテーマをローカルストレージから取得してhtmlの属性に設定するスクリプトタグ\n * @param props localStorageのキー、htmlのdataになる属性のキーを含むオブジェクト\n * @returns\n */\nexport function SetThemeScript(props: Props) {\n const src = makeSetThemeScriptCode(props)\n return (\n <script\n dangerouslySetInnerHTML={{\n __html: src,\n }}\n />\n )\n}\n\nconst defaultProps: Props = {\n localStorageKey: LOCAL_STORAGE_KEY,\n rootAttribute: DEFAULT_ROOT_ATTRIBUTE,\n}\n\nSetThemeScript.defaultProps = defaultProps\n","import { CSSObject, ThemedStyledInterface } from 'styled-components'\nimport warning from 'warning'\nimport {\n factory,\n modifiedFactory,\n constFactory,\n modifiedArgumentedFactory,\n variable,\n} from './lib'\nimport {\n EffectType,\n CharcoalAbstractTheme as Theme,\n Key,\n} from '@charcoal-ui/theme'\nimport {\n objectAssign,\n unreachable,\n ReadonlyArrayConstructor,\n objectKeys,\n isPresent,\n noThemeProvider,\n} from './util'\nimport { columnSystem } from '@charcoal-ui/foundation'\nimport {\n halfLeading,\n applyEffect,\n applyEffectToGradient,\n dur,\n gradient,\n GradientDirection,\n notDisabledSelector,\n disabledSelector,\n px,\n customPropertyToken,\n} from '@charcoal-ui/utils'\nexport { type Modified, type ModifiedArgumented } from './lib'\nexport { default as TokenInjector } from './TokenInjector'\nexport {\n getThemeSync,\n themeSetter,\n themeSelector,\n prefersColorScheme,\n useTheme,\n useThemeSetter,\n useLocalStorage,\n useMedia,\n} from './helper'\nexport { defineThemeVariables } from './util'\nexport * from './SetThemeScript'\n\nconst colorProperties = ['bg', 'font'] as const\ntype ColorProperty = typeof colorProperties[number]\n\nconst spacingProperties = ['margin', 'padding'] as const\nconst spacingDirections = [\n 'top',\n 'right',\n 'bottom',\n 'left',\n 'vertical',\n 'horizontal',\n 'all',\n] as const\ntype SpacingProperty = typeof spacingProperties[number]\ntype SpacingDirection = typeof spacingDirections[number]\n\nconst fixedProperties = ['width', 'height'] as const\ntype FixedProperty = typeof fixedProperties[number]\n\nconst borderDirections = ['top', 'right', 'bottom', 'left'] as const\ntype BorderDirection = typeof borderDirections[number]\n\nconst outlineType = ['focus'] as const\ntype OutlineType = typeof outlineType[number]\n\n/**\n * `theme(o => [...])` の `o` の部分を構築する\n *\n * @param theme テーマオブジェクト\n * @param isPhantom 型推論のためだけに使う場合にランタイムコストをゼロにするフラグ\n */\nfunction builder<T extends Theme>(\n theme: {\n // factoryの第二引数に入れ込むものだけ明示的に型変数を展開しておくことで型の具象化を遅延する\n color: T['color']\n gradientColor: T['gradientColor']\n border: T['border']\n outline: T['outline']\n } & Omit<T, 'color' | 'gradientColor' | 'border' | 'outline'>,\n isPhantom = false\n) {\n if (isPhantom) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {} as never\n }\n const colors = objectKeys(theme.color)\n const effects = objectKeys(theme.effect)\n\n // 色\n const gradientColors = objectKeys(theme.gradientColor)\n const colorCss = createColorCss(theme)\n const gradientColorCss = createGradientColorCss(theme)\n const colorObject = constFactory(\n {},\n {\n bg: objectAssign(\n factory({}, colors, (color) =>\n modifiedFactory(effects, (modifiers) =>\n colorCss('bg', color, modifiers)\n )\n ),\n factory(\n {},\n gradientColors,\n (color) => (direction: GradientDirection) =>\n modifiedFactory(effects, (modifiers) =>\n gradientColorCss(color, modifiers, direction)\n )\n )\n ),\n font: factory({}, colors, (color) =>\n modifiedFactory(effects, (modifiers) =>\n colorCss('font', color, modifiers)\n )\n ),\n }\n )\n\n // タイポグラフィ\n const typographyModifiers = [\n // TODO\n 'monospace',\n 'bold',\n 'preserveHalfLeading',\n ] as const\n const typographyCss = createTypographyCss(theme)\n const typographyObject = factory(\n {},\n ['typography'] as const,\n (_) => (size: keyof T['typography']['size']) =>\n modifiedFactory(typographyModifiers, (modifiers) =>\n typographyCss(size, {\n preserveHalfLeading: modifiers.includes('preserveHalfLeading'),\n monospace: modifiers.includes('monospace'),\n bold: modifiers.includes('bold'),\n })\n )\n )\n\n // スペーシング\n const spacingCss = createSpacingCss(theme)\n const spacingObject = factory({}, spacingProperties, (spacingProperty) =>\n modifiedArgumentedFactory(\n spacingDirections,\n (modifiers) => spacingCss(spacingProperty, modifiers),\n {} as keyof T['spacing'] | 'auto' // 推論のためのメタタイプ\n )\n )\n\n // 大きさ\n const fixedPxCss = createFixedPxCss(theme)\n const fixedColumnCss = createFixedColumnCss(theme)\n const fixedRelativeCss = createFixedRelativeCss(theme)\n const fixedObject = factory({}, fixedProperties, (property) =>\n constFactory(\n {},\n {\n px: (size: keyof T['spacing'] | 'auto') => fixedPxCss(property, size),\n column: (span: number) => fixedColumnCss(property, span),\n auto: fixedRelativeCss(property, 'auto'),\n full: fixedRelativeCss(property, '100%'),\n }\n )\n )\n\n // 要素へのエフェクト (etc: 透過)\n const elementEffectCss = createElementEffectCss(theme)\n const elementEffectObject = modifiedFactory(\n objectKeys(theme.elementEffect),\n (modifiers) => elementEffectCss(modifiers)\n )\n\n // ボーダー\n const borderCss = createBorderCss(theme)\n const borderObject = constFactory(\n {},\n {\n border: factory({}, objectKeys(theme.border), (variant) =>\n modifiedFactory(borderDirections, (modifiers) =>\n borderCss(variant, modifiers)\n )\n ),\n }\n )\n\n // 角丸\n const borderRadiusCss = createBorderRadiusCss(theme)\n const borderRadiusObject = constFactory(\n {},\n {\n borderRadius: (radius: keyof T['borderRadius']) =>\n borderRadiusCss(radius),\n }\n )\n\n // アウトライン\n const outlineCss = createOutlineColorCss(theme)\n const outlineObject = constFactory(\n {},\n {\n outline: factory({}, objectKeys(theme.outline), (variant) =>\n modifiedFactory(outlineType, (modifiers) =>\n outlineCss(variant, modifiers)\n )\n ),\n }\n )\n\n return objectAssign(\n colorObject,\n typographyObject,\n spacingObject,\n fixedObject,\n elementEffectObject,\n borderObject,\n borderRadiusObject,\n outlineObject\n )\n}\n\nfunction targetProperty(target: ColorProperty) {\n return target === 'bg' ? 'background-color' : 'color'\n}\n\nfunction isSupportedEffect(effect: Key): effect is EffectType {\n return ['hover', 'press', 'disabled'].includes(effect as string)\n}\n\nfunction onEffectPseudo(effect: EffectType, css: CSSObject) {\n return effect === 'hover'\n ? { '&:hover': { [notDisabledSelector]: css } }\n : effect === 'press'\n ? { '&:active': { [notDisabledSelector]: css } }\n : // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n effect === 'disabled'\n ? { [disabledSelector]: css }\n : unreachable(effect)\n}\n\nconst createColorCss =\n <T extends Theme>(_theme: T) =>\n (\n target: ColorProperty,\n color: keyof T['color'],\n effects: readonly (keyof T['effect'])[] = []\n ): Internal =>\n internal(\n () => ({\n [targetProperty(target)]: variable(\n customPropertyToken(color.toString())\n ),\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n [targetProperty(target)]: variable(\n customPropertyToken(color.toString(), [effect])\n ),\n }),\n }),\n {}\n ),\n }),\n effects.length > 0\n ? target === 'font'\n ? {\n colorTransition: true,\n }\n : {\n backgroundColorTransition: true,\n }\n : {}\n )\n\n// TODO: deprecate\nconst TRANSITION_DURATION = 0.2\n\nconst createGradientColorCss =\n <T extends Theme>(theme: T) =>\n (\n color: keyof T['gradientColor'],\n effects: readonly (keyof T['effect'])[] = [],\n direction: GradientDirection\n ): Internal => {\n const toLinearGradient = gradient(direction)\n return internal((context) => {\n const optimized = !useHalfLeadingCanceller(context)\n const duration = dur(TRANSITION_DURATION)\n if (optimized && effects.length > 0) {\n return {\n position: 'relative',\n zIndex: 0,\n overflow: 'hidden',\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n '&::before': {\n zIndex: -1,\n ...overlayElement,\n transition: `${duration} background-color`,\n },\n '&::after': {\n zIndex: -2,\n ...overlayElement,\n ...toLinearGradient(theme.gradientColor[color]),\n },\n ...onEffectPseudo(effect, {\n '&::before': {\n backgroundColor: applyEffect(\n null,\n theme.effect[effect] ?? []\n ),\n },\n }),\n }),\n {}\n ),\n }\n } else {\n warning(\n effects.length === 0,\n // eslint-disable-next-line max-len\n `'Transition' will not be applied. You can get around this by specifying 'preserveHalfLeading' or both 'padding' and 'typograpy'.`\n )\n return {\n ...toLinearGradient(theme.gradientColor[color]),\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n ...toLinearGradient(\n applyEffectToGradient(theme.effect[effect] ?? [])(\n theme.gradientColor[color]\n )\n ),\n }),\n }),\n {}\n ),\n }\n }\n })\n }\n\n/**\n * @see https://developer.mozilla.org/ja/docs/Web/CSS/:focus-visible#selectively_showing_the_focus_indicator\n */\nconst onFocus = (css: CSSObject) => ({\n [notDisabledSelector]: {\n '&:focus, &:active': {\n outline: 'none',\n ...css,\n },\n\n '&:focus:not(:focus-visible), &:active:not(:focus-visible)': {\n outline: 'none',\n },\n\n '&:focus-visible': {\n outline: 'none',\n ...css,\n },\n },\n})\n\nconst outlineCss = (weight: number, color: string) => ({\n boxShadow: `0 0 0 ${px(weight)} ${color}`,\n})\n\nconst createOutlineColorCss =\n <T extends Theme>(theme: T) =>\n (\n variant: keyof T['outline'],\n modifiers: readonly OutlineType[]\n ): Internal => {\n const weight = theme.outline[variant].weight\n const color = theme.outline[variant].color\n return internal(\n () =>\n modifiers.includes('focus')\n ? onFocus(outlineCss(weight, color))\n : { '&&': { [notDisabledSelector]: outlineCss(weight, color) } },\n {\n boxShadowTransition: true,\n }\n )\n }\n\nconst overlayElement: CSSObject = {\n content: \"''\",\n display: 'block',\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n}\n\n// half-leadingをキャンセルするとき && 垂直方向のpaddingが無い時\n// -> before/afterを入れる\nconst useHalfLeadingCanceller = ({\n cancelHalfLeadingPx,\n hasVerticalPadding = false,\n}: Context) => cancelHalfLeadingPx !== undefined && !hasVerticalPadding\n\nconst createTypographyCss =\n <T extends Theme>(theme: T) =>\n (\n size: keyof T['typography']['size'],\n options: {\n preserveHalfLeading?: boolean\n monospace?: boolean\n bold?: boolean\n } = {}\n ): Internal => {\n const {\n preserveHalfLeading = false,\n monospace = false,\n bold = false,\n } = options\n const descriptor = theme.typography.size[size]\n const margin = -halfLeading(descriptor)\n\n return internal(\n (context) => ({\n fontSize: px(descriptor.fontSize),\n lineHeight: px(descriptor.lineHeight),\n ...(monospace && {\n fontFamily: 'monospace',\n }),\n ...(bold && {\n fontWeight: 'bold',\n }),\n ...(useHalfLeadingCanceller(context) && {\n // prevent margin collapsing\n display: 'flow-root',\n // cancel half-leading with negative margin\n '&::before': {\n ...leadingCancel,\n marginTop: px(margin),\n },\n '&::after': {\n ...leadingCancel,\n marginBottom: px(margin),\n },\n }),\n }),\n !preserveHalfLeading\n ? {\n cancelHalfLeadingPx: margin,\n }\n : {}\n )\n }\n\nconst leadingCancel: CSSObject = {\n display: 'block',\n width: 0,\n height: 0,\n content: `''`,\n}\n\nfunction spacingProperty(\n property: SpacingProperty,\n direction: 'top' | 'right' | 'bottom' | 'left'\n) {\n return `${property}-${direction}`\n}\n\nconst createSpacingCss =\n <T extends Theme>(theme: { spacing: T['spacing'] }) =>\n (\n property: SpacingProperty,\n modifiers: readonly [SpacingDirection, keyof T['spacing'] | 'auto'][]\n ): Internal => {\n const { top, right, bottom, left } = modifiers.reduce(\n (acc, [direction, size]) => {\n if (direction === 'all') {\n acc.top = size\n acc.right = size\n acc.bottom = size\n acc.left = size\n } else if (direction === 'vertical') {\n acc.top = size\n acc.bottom = size\n } else if (direction === 'horizontal') {\n acc.right = size\n acc.left = size\n } else {\n acc[direction] = size\n }\n return acc\n },\n {} as Partial<\n Record<'top' | 'right' | 'bottom' | 'left', keyof T['spacing'] | 'auto'>\n >\n )\n\n const hasVerticalPadding =\n property === 'padding' &&\n top !== undefined &&\n bottom !== undefined &&\n top !== 'auto' &&\n bottom !== 'auto'\n\n return internal(\n ({ cancelHalfLeadingPx = 0 }) => ({\n ...(top !== undefined && {\n [spacingProperty(property, 'top')]:\n top === 'auto'\n ? 'auto'\n : px(\n theme.spacing[top] +\n (hasVerticalPadding ? cancelHalfLeadingPx : 0)\n ),\n }),\n ...(bottom !== undefined && {\n [spacingProperty(property, 'bottom')]:\n bottom === 'auto'\n ? 'auto'\n : px(\n theme.spacing[bottom] +\n (hasVerticalPadding ? cancelHalfLeadingPx : 0)\n ),\n }),\n ...(right !== undefined && {\n [spacingProperty(property, 'right')]:\n right === 'auto' ? 'auto' : px(theme.spacing[right]),\n }),\n ...(left !== undefined && {\n [spacingProperty(property, 'left')]:\n left === 'auto' ? 'auto' : px(theme.spacing[left]),\n }),\n }),\n hasVerticalPadding ? { hasVerticalPadding: true } : {}\n )\n }\n\nconst createFixedPxCss =\n <T extends Theme>(theme: T) =>\n (property: FixedProperty, size: keyof T['spacing'] | 'auto'): Internal =>\n internal(() => ({\n [property]: size === 'auto' ? 'auto' : px(theme.spacing[size]),\n }))\n\nconst createFixedRelativeCss =\n <T extends Theme>(_theme: T) =>\n (property: FixedProperty, amount: '100%' | 'auto'): Internal =>\n internal(() => ({\n [property]: amount,\n }))\n\nconst createFixedColumnCss =\n <T extends Theme>(theme: T) =>\n (property: FixedProperty, span: number): Internal =>\n internal(() => ({\n [property]: px(\n columnSystem(span, theme.grid.unit.column, theme.grid.unit.gutter)\n ),\n }))\n\nconst createElementEffectCss =\n <T extends Theme, TElementEffect extends T['elementEffect']>(theme: {\n elementEffect: TElementEffect\n }) =>\n (effects: readonly (keyof TElementEffect)[] = []): Internal =>\n internal(() =>\n effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n opacity:\n !(Array as ReadonlyArrayConstructor).isArray(\n theme.elementEffect[effect]\n ) && theme.elementEffect[effect]?.type === 'opacity'\n ? theme.elementEffect[effect]?.opacity\n : unreachable(),\n }),\n }),\n {}\n )\n )\n\nfunction borderProperty(direction: BorderDirection) {\n return `border-${direction}`\n}\n\nfunction borderShorthand(color: string) {\n return `solid 1px ${color}`\n}\n\nconst createBorderCss =\n <T extends Theme>(theme: T) =>\n (\n variant: keyof T['border'],\n directions: readonly BorderDirection[]\n ): Internal => {\n const all = directions.length === 0\n const value = borderShorthand(theme.border[variant].color)\n return internal(() => ({\n ...(all\n ? { border: value }\n : directions.reduce<CSSObject>(\n (acc, direction) => ({\n ...acc,\n [borderProperty(direction)]: value,\n }),\n {}\n )),\n }))\n }\n\nconst createBorderRadiusCss =\n <T extends Theme>(theme: T) =>\n (size: keyof T['borderRadius']): Internal =>\n internal(() => ({\n borderRadius: px(theme.borderRadius[size]),\n }))\n\ninterface Context {\n cancelHalfLeadingPx?: number\n hasVerticalPadding?: boolean\n boxShadowTransition?: boolean\n colorTransition?: boolean\n backgroundColorTransition?: boolean\n}\n\nconst commonSpec = (_theme: unknown): Internal => {\n const duration = dur(TRANSITION_DURATION)\n const transition = (property: string[]) => ({\n transition: property.map((v) => `${duration} ${v}`).join(', '),\n })\n return internal(\n ({\n colorTransition = false,\n backgroundColorTransition = false,\n boxShadowTransition = false,\n }) =>\n transition(\n [\n colorTransition ? 'color' : null,\n backgroundColorTransition ? 'background-color' : null,\n boxShadowTransition ? 'box-shadow' : null,\n ].filter(isPresent)\n )\n )\n}\n\nconst internalSym: unique symbol = Symbol('internal')\n\nfunction internal(\n operation: (context: Context) => CSSObject,\n context: Context = {}\n): Internal {\n return {\n [internalSym]: {\n operation,\n context,\n },\n }\n}\n\nexport interface Internal {\n [internalSym]: {\n operation: (context: Context) => CSSObject\n context: Context\n }\n}\n\ntype Blank = null | undefined | false\n\nconst nonBlank = <T>(value: T): value is T extends Blank ? never : T =>\n isPresent(value) && (value as unknown) !== false\n\n/**\n * `theme(o => [...])` の `theme` ユーティリティを構築する\n *\n * @param _styled styled-componnets の `styled` そのもの (型推論のために用いられる)\n *\n * @example\n *\n * import styled from 'styled-components'\n * const theme = createTheme(styled)\n *\n * @example\n *\n * const theme = createTheme<DefaultTheme>()\n */\nexport function createTheme<T extends Theme>(\n _styled?: ThemedStyledInterface<T>\n) {\n // `theme(o => [...])` の `o` の部分の型推論のためだけに使う意味のない変数\n // Tを型変数のまま渡してcreateThemeが呼ばれるまで型の具象化が行われないようにする\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any\n const _phantomBuilder = builder<T>({} as any, true)\n // ランタイムの `theme(o => [...])` のインターフェースを構築する\n return (\n // ユーザー定義\n spec: (\n o: typeof _phantomBuilder\n ) => Blank | Internal | (Blank | Internal)[]\n ): ThemeProp<T> =>\n ({ theme }) => {\n if (!isPresent(theme)) {\n // テーマが入っていない場合は復旧不可能なのでエラーにする\n throw noThemeProvider\n }\n // styled-componentsのランタイムから受け取ったthemeオブジェクトをbuilderに食わせて`o`をつくる\n // さらに、ユーザー定義にbuilderが構築した`o`を食わせる\n // (`o`を一時変数に入れてしまうと型Tの具象化が行われるので関数合成を優先する)\n const rawSpecDescriptor = spec(builder(theme))\n // ユーザー定義の配列を整形\n const specDescriptor = [\n ...(Array.isArray(rawSpecDescriptor)\n ? rawSpecDescriptor\n : [rawSpecDescriptor]),\n commonSpec(theme),\n ].filter(nonBlank)\n\n // 1パス目\n // 全ユーザー定義を舐めて相互に影響し合う定義をチェックし、その結果(コンテキスト)を取得\n const context = specDescriptor.reduce<Context>(\n (acc, v) => ({ ...acc, ...v[internalSym].context }),\n {}\n )\n // 2パス目\n // コンテキストを見ながら最適化されたCSSを構築\n return specDescriptor.map((v) => v[internalSym].operation(context))\n }\n}\n\nexport type ThemeProp<T> = ({\n theme,\n}: {\n theme: T | undefined\n}) => CSSObject | CSSObject[]\n"],"names":["unreachable","value","Error","arguments","length","JSON","stringify","isPresent","objectAssign","Object","assign","objectKeys","obj","keys","noThemeProvider","defineThemeVariables","colorParams","effectParams","toCssObject","props","theme","colors","filterObject","effects","entries","effect","flatMapObject","colorKey","color","customPropertyToken","map","effectKey","applyEffect","factory","source","member","chain","defineProperties","fromEntries","key","get","enumerable","configurable","argumentedFactory","constFactory","def","modifiedFactory","modifiers","recursiveModifiedFactory","applied","notApplied","filter","v","includes","modifier","modifiedArgumentedFactory","w","variable","GlobalStyle","createGlobalStyle","themeMap","background","startsWith","css","undefined","defineColorVariableCSS","TokenInjector","React","varName","variableDefinition","toString","join","prop","LOCAL_STORAGE_KEY","DEFAULT_ROOT_ATTRIBUTE","keyStringRegExp","RegExp","assertKeyString","test","themeSetter","attr","document","documentElement","dataset","themeSelector","prefersColorScheme","useThemeSetter","setter","useTheme","system","useEffect","getThemeSync","localStorage","getItem","isDark","useMedia","media","useLocalStorage","local","setTheme","ready","defaultValue","useState","setReady","state","setState","defaultValueMemo","useMemo","fetch","window","addEventListener","handleStorage","removeEventListener","e","storageArea","raw","deserialize","set","removeItem","serialize","setItem","event","StorageEvent","bubbles","cancelable","url","location","href","dispatchEvent","parse","query","match","matcher","matchMedia","onChange","matches","makeSetThemeScriptCode","defaultProps","localStorageKey","rootAttribute","SetThemeScript","src","__html","spacingProperties","spacingDirections","fixedProperties","borderDirections","outlineType","builder","isPhantom","gradientColors","gradientColor","colorCss","createColorCss","gradientColorCss","createGradientColorCss","colorObject","bg","direction","font","typographyModifiers","typographyCss","createTypographyCss","typographyObject","_","size","preserveHalfLeading","monospace","bold","spacingCss","createSpacingCss","spacingObject","spacingProperty","fixedPxCss","createFixedPxCss","fixedColumnCss","createFixedColumnCss","fixedRelativeCss","createFixedRelativeCss","fixedObject","property","px","column","span","auto","full","elementEffectCss","createElementEffectCss","elementEffectObject","elementEffect","borderCss","createBorderCss","borderObject","border","variant","borderRadiusCss","createBorderRadiusCss","borderRadiusObject","borderRadius","radius","outlineCss","createOutlineColorCss","outlineObject","outline","targetProperty","target","isSupportedEffect","onEffectPseudo","notDisabledSelector","disabledSelector","_theme","internal","reduce","acc","colorTransition","backgroundColorTransition","TRANSITION_DURATION","toLinearGradient","gradient","context","optimized","useHalfLeadingCanceller","duration","dur","position","zIndex","overflow","overlayElement","transition","backgroundColor","warning","applyEffectToGradient","onFocus","weight","boxShadow","boxShadowTransition","content","display","width","height","top","left","cancelHalfLeadingPx","hasVerticalPadding","options","descriptor","typography","margin","halfLeading","fontSize","lineHeight","fontFamily","fontWeight","leadingCancel","marginTop","marginBottom","right","bottom","spacing","amount","columnSystem","grid","unit","gutter","opacity","Array","isArray","type","borderProperty","borderShorthand","directions","all","commonSpec","internalSym","Symbol","operation","nonBlank","createTheme","_styled","spec","rawSpecDescriptor","specDescriptor"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import warning from 'warning';
2
- import { filterObject, flatMapObject, customPropertyToken, applyEffect, notDisabledSelector, disabledSelector, px, halfLeading, dur, applyEffectToGradient, gradient } from '@charcoal-ui/utils';
2
+ import { filterObject, flatMapObject, customPropertyToken, applyEffect, dur, gradient, applyEffectToGradient, notDisabledSelector, halfLeading, px, disabledSelector } from '@charcoal-ui/utils';
3
3
  import { columnSystem } from '@charcoal-ui/foundation';
4
4
  import React, { useEffect, useState, useMemo } from 'react';
5
5
  import { createGlobalStyle, css } from 'styled-components';
6
6
 
7
7
  function _extends() {
8
- _extends = Object.assign || function (target) {
8
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
9
9
  for (var i = 1; i < arguments.length; i++) {
10
10
  var source = arguments[i];
11
11
 
@@ -18,7 +18,6 @@ function _extends() {
18
18
 
19
19
  return target;
20
20
  };
21
-
22
21
  return _extends.apply(this, arguments);
23
22
  }
24
23
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.js","sources":["../src/util.ts","../src/lib.ts","../src/TokenInjector.tsx","../src/helper.ts","../src/SetThemeScript.tsx","../src/index.ts"],"sourcesContent":["import {\n applyEffect,\n customPropertyToken,\n filterObject,\n flatMapObject,\n} from '@charcoal-ui/utils'\nimport { CharcoalAbstractTheme } from '@charcoal-ui/theme'\nimport { CSSObject } from 'styled-components'\n\n/**\n * Function used to assert a given code path is unreachable\n */\nexport function unreachable(): never\n/**\n * Function used to assert a given code path is unreachable.\n * Very useful for ensuring switches are exhaustive:\n *\n * ```ts\n * switch (a.type) {\n * case Types.A:\n * case Types.B:\n * break\n * default:\n * unreachable(a) // will cause a build error if there was\n * // a Types.C that was not checked\n * }\n * ```\n *\n * @param value Value to be asserted as unreachable\n */\n// NOTE: Uses separate overloads, _not_ `value?: never`, to not allow `undefined` to be passed\n// eslint-disable-next-line @typescript-eslint/unified-signatures\nexport function unreachable(value: never): never\nexport function unreachable(value?: never): never {\n throw new Error(\n arguments.length === 0\n ? 'unreachable'\n : `unreachable (${JSON.stringify(value)})`\n )\n}\n\n/**\n * Check whether a value is non-null and non-undefined\n *\n * @param value nullable\n */\nexport const isPresent = <T>(value: T): value is NonNullable<T> => value != null\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Head<U> = U extends [infer T, ...any[]] ? T : never\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Tail<U> = U extends [any, any, ...any[]]\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((...args: U) => any) extends (head: any, ...args: infer T) => any\n ? T\n : never\n : never\n// Buggy at ts@4.0.0-dev20200506\n// type Tail<U> = U extends [any, ...infer T] ? T : never\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype RecursiveObjectAssign<T, S extends any[]> = {\n 0: T & Head<S>\n 1: RecursiveObjectAssign<T & Head<S>, Tail<S>>\n}[Tail<S> extends never ? 0 : 1]\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ObjectAssign<T extends any[]> = RecursiveObjectAssign<\n Record<string, unknown>,\n T\n>\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function objectAssign<T extends any[]>(...sources: T) {\n return Object.assign({}, ...sources) as ObjectAssign<T>\n}\n\nexport function objectKeys<V extends object, K extends keyof V>(obj: V) {\n return Object.keys(obj) as K[]\n}\n\nexport interface ReadonlyArrayConstructor {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isArray(value: any): value is readonly any[]\n}\n\nexport function extractNonNullKeys<V, K extends keyof V>(obj: {\n [key in K]: V[key]\n}) {\n return Object.entries(obj)\n .filter(([_, v]) => v !== null)\n .map(([k]) => k) as { [key in K]: V[key] extends null ? never : key }[K][]\n}\n\nexport const noThemeProvider = new Error(\n '`theme` is invalid. `<ThemeProvider>` is not likely mounted.'\n)\n\ntype NonNullableCSSObject = Record<keyof CSSObject, string | number>\n\n/**\n * 子孫要素で使われるカラーテーマの CSS Variables を上書きする\n *\n * @params colorParams - 上書きしたい色の定義( `theme.color` の一部だけ書けば良い )\n * @params effectParams - effect の定義を上書きしたい場合は渡す(必須ではない)\n *\n * @example\n * ```tsx\n * const LocalTheme = styled.div`\n * ${defineThemeVariables({ text1: '#ff0000' })}\n * // `text1` is now defined as red\n * ${theme((o) => [o.font.text1])}\n * `\n * ```\n */\nexport function defineThemeVariables(\n colorParams: Partial<CharcoalAbstractTheme['color']>,\n effectParams?: Partial<CharcoalAbstractTheme['effect']>\n) {\n return function toCssObject(props: {\n theme?: Pick<CharcoalAbstractTheme, 'effect'>\n }): NonNullableCSSObject {\n if (!isPresent(props.theme)) {\n throw noThemeProvider\n }\n\n const colors = filterObject(colorParams, isPresent)\n\n // flatMapObject の中で毎回 Object.entries を呼ぶのは無駄なので外で呼ぶ\n const effects = Object.entries({\n ...props.theme.effect,\n ...effectParams,\n })\n\n return flatMapObject(colors, (colorKey, color) => [\n [customPropertyToken(colorKey), color],\n\n ...effects.map<[string, string]>(([effectKey, effect]) => [\n customPropertyToken(colorKey, [effectKey]),\n applyEffect(color, [effect]),\n ]),\n ])\n }\n}\n","import { Key } from '@charcoal-ui/theme'\nimport { unreachable } from './util'\n\n/**\n * 配列で指定したプロパティを動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param member オブジェクトに生やすプロパティ一覧\n * @param chain プロパティに格納される値を生成する関数\n *\n * @example\n *\n * const o = factory({}, ['red', 'blue'],\n * color => hex(color)\n * )\n *\n * console.log(o.red) //=> #ff0000\n */\nexport const factory = <TSource, TMember extends readonly Key[], TValue>(\n source: TSource,\n member: TMember,\n chain: (key: TMember[number]) => TValue\n) =>\n Object.defineProperties(\n source,\n Object.fromEntries(\n member.map((key) => [\n key,\n { get: () => chain(key), enumerable: true, configurable: true },\n ])\n )\n ) as TSource & { readonly [key in TMember[number]]: TValue }\n\n/**\n * 配列で指定した名前のメソッドを動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param member オブジェクトに生やすメソッド名一覧\n * @param chain メソッドの戻り値になる値を生成する関数\n *\n * @example\n *\n * const o = argumentedFactory({}, ['red', 'blue'],\n * (color, alpha: number) => hex(color, alpha)\n * )\n *\n * console.log(o.red(0.5)) //=> #ff000077\n */\nexport const argumentedFactory = <\n TSource,\n TMember extends readonly string[],\n TValue,\n TArguments extends unknown[]\n>(\n source: TSource,\n member: TMember,\n chain: (key: TMember[number], ...args: TArguments) => TValue\n) =>\n Object.defineProperties(\n source,\n Object.fromEntries(\n member.map((key) => [\n key,\n {\n value: (...args: TArguments) => chain(key, ...args),\n enumerable: true,\n configurable: true,\n },\n ])\n )\n ) as TSource & {\n readonly [key in TMember[number]]: (...args: TArguments) => TValue\n }\n\n/**\n * オブジェクトで指定したプロパティ名と値を動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param def オブジェクトに生やす定義(プロパティ名と値)\n *\n * @example\n *\n * const o = constFactory({}, {\n * red: '#f00',\n * blue: '#00f',\n * })\n *\n * console.log(o.red) //=> #f00\n */\nexport const constFactory = <TSource, TDef extends { [key: string]: unknown }>(\n source: TSource,\n def: TDef\n) =>\n factory(source, Object.keys(def), (key) => def[key]) as TSource &\n Readonly<TDef>\n\n/**\n * 配列で指定したモディファイア(プロパティ)をチェーン可能な再帰オブジェクトを動的に生やす\n *\n * @param modifiers オブジェクトに生やすモディファイヤ一覧\n * @param source 指定されたモディファイヤの一覧から値を生成する関数\n *\n * @example\n *\n * const o = modifiedArgumentedFactory(['red', 'blue'],\n * modifiers => modifiers.map(color => hex(color)).join(',')\n * )\n *\n * console.log(o.red.blue) => #f00,#00f\n */\nexport const modifiedFactory = <TSource, T extends Key>(\n modifiers: readonly T[],\n source: (applied: readonly T[]) => TSource\n) =>\n (function recursiveModifiedFactory(\n applied: readonly T[]\n ): Modified<TSource, T> {\n const notApplied = modifiers.filter((v) => !applied.includes(v))\n return factory(source(applied), notApplied, (modifier) =>\n notApplied.length === 0\n ? unreachable()\n : recursiveModifiedFactory([...applied, modifier])\n )\n })([])\n\nexport type Modified<TSource, TModifiers extends Key> = TSource & {\n readonly [key in TModifiers]: Modified<TSource, Exclude<TModifiers, key>>\n}\n\n/**\n * 配列で指定したモディファイア(メソッド)をチェーン可能な再帰オブジェクトを動的に生やす\n *\n * @param modifiers オブジェクトに生やすモディファイヤ一覧\n * @param source 指定されたモディファイヤの一覧から値を生成する関数\n * @param _inferPhantom 関数形式のモディファイヤの引数型を推論するためのメタタイプ(引数の個数に合わせてタプルで指定する)\n *\n * @example\n *\n * const o = modifiedArgumentedFactory(['red', 'blue'],\n * modifiers => modifiers.map(([color, alpha]) => hex(color, alpha)).join(',')\n * , {} as [number])\n *\n * console.log(o.red(0.5).blue(1)) => #ff000077,#0000ffff\n */\nexport const modifiedArgumentedFactory = <\n TSource,\n T extends string,\n TArguments extends unknown[]\n>(\n modifiers: readonly T[],\n source: (applied: readonly [T, ...TArguments][]) => TSource,\n ..._inferPhantom: TArguments\n) =>\n (function recursiveModifiedFactory(\n applied: readonly [T, ...TArguments][]\n ): ModifiedArgumented<TSource, T, TArguments> {\n const notApplied = modifiers.filter(\n (v) => !applied.map(([w]) => w).includes(v)\n )\n return argumentedFactory(\n source(applied),\n notApplied,\n (modifier, ...args: TArguments) =>\n notApplied.length === 0\n ? unreachable()\n : recursiveModifiedFactory([...applied, [modifier, ...args]])\n )\n })([])\n\nexport type ModifiedArgumented<\n TSource,\n TModifiers extends string,\n TArguments extends unknown[]\n> = TSource & {\n readonly [key in TModifiers]: (\n ...args: TArguments\n ) => ModifiedArgumented<TSource, Exclude<TModifiers, key>, TArguments>\n}\n\nexport const variable = (value: string) => `var(${value})`\n","import React from 'react'\nimport { createGlobalStyle, css } from 'styled-components'\nimport { CharcoalAbstractTheme } from '@charcoal-ui/theme'\nimport { defineThemeVariables } from './util'\n\nconst GlobalStyle = createGlobalStyle`\n ${<T extends Theme>({\n themeMap,\n background,\n }: {\n themeMap: ThemeMap<T>\n background?: keyof ThemeMap<T>[string]['color']\n }) =>\n Object.entries(themeMap).map(([key, theme]) =>\n key.startsWith('@media')\n ? css`\n ${key} {\n :root {\n ${background !== undefined &&\n css`\n background-color: ${theme.color[background]};\n `}\n ${defineColorVariableCSS(theme)}\n }\n }\n `\n : css`\n /* stylelint-disable-next-line no-duplicate-selectors */\n ${key} {\n ${background !== undefined &&\n css`\n background-color: ${theme.color[background]};\n `}\n ${defineColorVariableCSS(theme)}\n }\n `\n )}\n`\n\nexport interface ThemeMap<T extends Theme> {\n ':root': T\n [mediaQuery: `@media (${string})`]: T\n [selector: string]: T\n}\n\ntype Theme = Pick<CharcoalAbstractTheme, 'color' | 'effect'>\n\nexport default function TokenInjector<T extends Theme>({\n theme: themeMap,\n background,\n}: {\n theme: ThemeMap<T>\n background?: keyof ThemeMap<T>[string]['color']\n}) {\n return <GlobalStyle themeMap={themeMap} background={background} />\n}\n\nconst defineColorVariableCSS = (theme: Theme) =>\n Object.entries(defineThemeVariables(theme.color)({ theme }))\n .map(([varName, value]) => variableDefinition(varName, value.toString()))\n .join(';')\n\nconst variableDefinition = (prop: string, value: string) => `${prop}: ${value}`\n","import { useEffect, useMemo, useState } from 'react'\n\nexport const LOCAL_STORAGE_KEY = 'charcoal-theme'\nexport const DEFAULT_ROOT_ATTRIBUTE = 'theme'\n\nconst keyStringRegExp = new RegExp(/^(\\w|-)+$/)\n\n/**\n * 文字列が英数字_-のみで構成されているか検証する。不正な文字列ならエラーを投げる\n * @param key 検証するキー\n */\nexport function assertKeyString(key: string) {\n if (!keyStringRegExp.test(key)) {\n throw new Error(`Unexpected key :${key}, expect: /^(\\\\w|-)+$/`)\n }\n}\n\n/**\n * `<html data-theme=\"dark\">` のような設定を行うデフォルトのセッター\n */\nexport const themeSetter =\n (attr: string = DEFAULT_ROOT_ATTRIBUTE) =>\n (theme: string | undefined) => {\n assertKeyString(attr)\n if (theme !== undefined) {\n document.documentElement.dataset[attr] = theme\n } else {\n delete document.documentElement.dataset[attr]\n }\n }\n\n/**\n * `<html data-theme=\"dark\">` にマッチするセレクタを生成する\n */\nexport function themeSelector<\n T extends string,\n S extends string = typeof DEFAULT_ROOT_ATTRIBUTE\n>(theme: T, attr?: S) {\n return `:root[data-${attr ?? DEFAULT_ROOT_ATTRIBUTE}='${theme}']` as const\n}\n\n/**\n * prefers-color-scheme を利用する media クエリを生成する\n */\nexport function prefersColorScheme<T extends 'light' | 'dark'>(theme: T) {\n return `@media (prefers-color-scheme: ${theme})` as const\n}\n\n/**\n * LocalStorageからテーマの情報を取得して、変化時にテーマをセットするhooks\n */\nexport function useThemeSetter({\n key = LOCAL_STORAGE_KEY,\n setter = themeSetter(),\n}: { key?: string; setter?: (theme: string | undefined) => void } = {}) {\n const [theme, , system] = useTheme(key)\n\n useEffect(() => {\n if (theme === undefined) {\n return\n }\n // prefers-color-scheme から値を取っている場合にはcssのみで処理したいのでアンセットする\n setter(system ? undefined : theme)\n }, [setter, system, theme])\n}\n\n/**\n * 同期的にLocalStorageからテーマを取得するヘルパ\n */\nexport function getThemeSync(key: string = LOCAL_STORAGE_KEY) {\n const theme = localStorage.getItem(key)\n return theme\n}\n\n/**\n * LocalStorage, prefers-color-scheme からテーマの情報を取得して、現在のテーマを返すhooks\n *\n * `dark` `light` という名前だけは特別扱いされていて、prefers-color-schemeにマッチした場合に返ります\n */\nexport const useTheme = (key: string = LOCAL_STORAGE_KEY) => {\n assertKeyString(key)\n const isDark = useMedia('(prefers-color-scheme: dark)')\n const media = isDark !== undefined ? (isDark ? 'dark' : 'light') : undefined\n const [local, setTheme, ready] = useLocalStorage<string>(key)\n const theme = !ready || media === undefined ? undefined : local ?? media\n const system = local === undefined\n return [theme, setTheme, system] as const\n}\n\nexport function useLocalStorage<T>(key: string, defaultValue?: () => T) {\n const [ready, setReady] = useState(false)\n const [state, setState] = useState<T>()\n const defaultValueMemo = useMemo(() => defaultValue?.(), [defaultValue])\n\n useEffect(() => {\n fetch()\n window.addEventListener('storage', handleStorage)\n return () => {\n window.removeEventListener('storage', handleStorage)\n }\n })\n\n const handleStorage = (e: StorageEvent) => {\n if (e.storageArea !== localStorage) {\n return\n }\n if (e.key !== key) {\n return\n }\n fetch()\n }\n\n const fetch = () => {\n const raw = localStorage.getItem(key)\n setState((raw !== null ? deserialize(raw) : null) ?? defaultValueMemo)\n setReady(true)\n }\n\n const set = (value: T | undefined) => {\n if (value === undefined) {\n // undefinedがセットされる場合にはkeyごと削除\n localStorage.removeItem(key)\n } else {\n const raw = serialize(value)\n localStorage.setItem(key, raw)\n }\n\n // 同一ウィンドウではstorageイベントが発火しないので、手動で発火させる\n const event = new StorageEvent('storage', {\n bubbles: true,\n cancelable: false,\n key,\n url: location.href,\n storageArea: localStorage,\n })\n dispatchEvent(event)\n }\n\n return [state ?? defaultValueMemo, set, ready] as const\n}\n\nfunction deserialize<T>(raw: string): T {\n try {\n return JSON.parse(raw) as T\n } catch {\n // syntax error はすべて文字列として扱う\n return raw as unknown as T\n }\n}\n\nfunction serialize(value: unknown): string {\n if (typeof value === 'string') {\n return value\n } else {\n return JSON.stringify(value)\n }\n}\n\nexport function useMedia(query: string) {\n const [match, setState] = useState<boolean>()\n\n useEffect(() => {\n const matcher = window.matchMedia(query)\n\n const onChange = () => {\n setState(matcher.matches)\n }\n\n matcher.addEventListener('change', onChange)\n\n setState(matcher.matches)\n\n return () => {\n matcher.removeEventListener('change', onChange)\n }\n }, [query])\n\n return match\n}\n","import React from 'react'\nimport {\n assertKeyString,\n DEFAULT_ROOT_ATTRIBUTE,\n LOCAL_STORAGE_KEY,\n} from './helper'\n\ninterface Props {\n localStorageKey: string\n rootAttribute: string\n}\n\n/**\n * 同期的にテーマをローカルストレージから取得してhtmlの属性に設定するコードを取得する\n * @param props localStorageのキー、htmlのdataになる属性のキーを含むオブジェクト\n * @returns ソースコードの文字列\n */\nexport function makeSetThemeScriptCode({\n localStorageKey = defaultProps.localStorageKey,\n rootAttribute = defaultProps.rootAttribute,\n}: Partial<Props> = defaultProps) {\n assertKeyString(localStorageKey)\n assertKeyString(rootAttribute)\n return `'use strict';\n(function () {\n var localStorageKey = '${localStorageKey}'\n var rootAttribute = '${rootAttribute}'\n var currentTheme = localStorage.getItem(localStorageKey);\n if (currentTheme) {\n document.documentElement.dataset[rootAttribute] = currentTheme;\n }\n})();\n`\n}\n\n/**\n * 同期的にテーマをローカルストレージから取得してhtmlの属性に設定するスクリプトタグ\n * @param props localStorageのキー、htmlのdataになる属性のキーを含むオブジェクト\n * @returns\n */\nexport function SetThemeScript(props: Props) {\n const src = makeSetThemeScriptCode(props)\n return (\n <script\n dangerouslySetInnerHTML={{\n __html: src,\n }}\n />\n )\n}\n\nconst defaultProps: Props = {\n localStorageKey: LOCAL_STORAGE_KEY,\n rootAttribute: DEFAULT_ROOT_ATTRIBUTE,\n}\n\nSetThemeScript.defaultProps = defaultProps\n","import { CSSObject, ThemedStyledInterface } from 'styled-components'\nimport warning from 'warning'\nimport {\n factory,\n modifiedFactory,\n constFactory,\n modifiedArgumentedFactory,\n variable,\n} from './lib'\nimport {\n EffectType,\n CharcoalAbstractTheme as Theme,\n Key,\n} from '@charcoal-ui/theme'\nimport {\n objectAssign,\n unreachable,\n ReadonlyArrayConstructor,\n objectKeys,\n isPresent,\n noThemeProvider,\n} from './util'\nimport { columnSystem } from '@charcoal-ui/foundation'\nimport {\n halfLeading,\n applyEffect,\n applyEffectToGradient,\n dur,\n gradient,\n GradientDirection,\n notDisabledSelector,\n disabledSelector,\n px,\n customPropertyToken,\n} from '@charcoal-ui/utils'\nexport { type Modified, type ModifiedArgumented } from './lib'\nexport { default as TokenInjector } from './TokenInjector'\nexport {\n getThemeSync,\n themeSetter,\n themeSelector,\n prefersColorScheme,\n useTheme,\n useThemeSetter,\n useLocalStorage,\n useMedia,\n} from './helper'\nexport { defineThemeVariables } from './util'\nexport * from './SetThemeScript'\n\nconst colorProperties = ['bg', 'font'] as const\ntype ColorProperty = typeof colorProperties[number]\n\nconst spacingProperties = ['margin', 'padding'] as const\nconst spacingDirections = [\n 'top',\n 'right',\n 'bottom',\n 'left',\n 'vertical',\n 'horizontal',\n 'all',\n] as const\ntype SpacingProperty = typeof spacingProperties[number]\ntype SpacingDirection = typeof spacingDirections[number]\n\nconst fixedProperties = ['width', 'height'] as const\ntype FixedProperty = typeof fixedProperties[number]\n\nconst borderDirections = ['top', 'right', 'bottom', 'left'] as const\ntype BorderDirection = typeof borderDirections[number]\n\nconst outlineType = ['focus'] as const\ntype OutlineType = typeof outlineType[number]\n\n/**\n * `theme(o => [...])` の `o` の部分を構築する\n *\n * @param theme テーマオブジェクト\n * @param isPhantom 型推論のためだけに使う場合にランタイムコストをゼロにするフラグ\n */\nfunction builder<T extends Theme>(\n theme: {\n // factoryの第二引数に入れ込むものだけ明示的に型変数を展開しておくことで型の具象化を遅延する\n color: T['color']\n gradientColor: T['gradientColor']\n border: T['border']\n outline: T['outline']\n } & Omit<T, 'color' | 'gradientColor' | 'border' | 'outline'>,\n isPhantom = false\n) {\n if (isPhantom) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {} as never\n }\n const colors = objectKeys(theme.color)\n const effects = objectKeys(theme.effect)\n\n // 色\n const gradientColors = objectKeys(theme.gradientColor)\n const colorCss = createColorCss(theme)\n const gradientColorCss = createGradientColorCss(theme)\n const colorObject = constFactory(\n {},\n {\n bg: objectAssign(\n factory({}, colors, (color) =>\n modifiedFactory(effects, (modifiers) =>\n colorCss('bg', color, modifiers)\n )\n ),\n factory(\n {},\n gradientColors,\n (color) => (direction: GradientDirection) =>\n modifiedFactory(effects, (modifiers) =>\n gradientColorCss(color, modifiers, direction)\n )\n )\n ),\n font: factory({}, colors, (color) =>\n modifiedFactory(effects, (modifiers) =>\n colorCss('font', color, modifiers)\n )\n ),\n }\n )\n\n // タイポグラフィ\n const typographyModifiers = [\n // TODO\n 'monospace',\n 'bold',\n 'preserveHalfLeading',\n ] as const\n const typographyCss = createTypographyCss(theme)\n const typographyObject = factory(\n {},\n ['typography'] as const,\n (_) => (size: keyof T['typography']['size']) =>\n modifiedFactory(typographyModifiers, (modifiers) =>\n typographyCss(size, {\n preserveHalfLeading: modifiers.includes('preserveHalfLeading'),\n monospace: modifiers.includes('monospace'),\n bold: modifiers.includes('bold'),\n })\n )\n )\n\n // スペーシング\n const spacingCss = createSpacingCss(theme)\n const spacingObject = factory({}, spacingProperties, (spacingProperty) =>\n modifiedArgumentedFactory(\n spacingDirections,\n (modifiers) => spacingCss(spacingProperty, modifiers),\n {} as keyof T['spacing'] | 'auto' // 推論のためのメタタイプ\n )\n )\n\n // 大きさ\n const fixedPxCss = createFixedPxCss(theme)\n const fixedColumnCss = createFixedColumnCss(theme)\n const fixedRelativeCss = createFixedRelativeCss(theme)\n const fixedObject = factory({}, fixedProperties, (property) =>\n constFactory(\n {},\n {\n px: (size: keyof T['spacing'] | 'auto') => fixedPxCss(property, size),\n column: (span: number) => fixedColumnCss(property, span),\n auto: fixedRelativeCss(property, 'auto'),\n full: fixedRelativeCss(property, '100%'),\n }\n )\n )\n\n // 要素へのエフェクト (etc: 透過)\n const elementEffectCss = createElementEffectCss(theme)\n const elementEffectObject = modifiedFactory(\n objectKeys(theme.elementEffect),\n (modifiers) => elementEffectCss(modifiers)\n )\n\n // ボーダー\n const borderCss = createBorderCss(theme)\n const borderObject = constFactory(\n {},\n {\n border: factory({}, objectKeys(theme.border), (variant) =>\n modifiedFactory(borderDirections, (modifiers) =>\n borderCss(variant, modifiers)\n )\n ),\n }\n )\n\n // 角丸\n const borderRadiusCss = createBorderRadiusCss(theme)\n const borderRadiusObject = constFactory(\n {},\n {\n borderRadius: (radius: keyof T['borderRadius']) =>\n borderRadiusCss(radius),\n }\n )\n\n // アウトライン\n const outlineCss = createOutlineColorCss(theme)\n const outlineObject = constFactory(\n {},\n {\n outline: factory({}, objectKeys(theme.outline), (variant) =>\n modifiedFactory(outlineType, (modifiers) =>\n outlineCss(variant, modifiers)\n )\n ),\n }\n )\n\n return objectAssign(\n colorObject,\n typographyObject,\n spacingObject,\n fixedObject,\n elementEffectObject,\n borderObject,\n borderRadiusObject,\n outlineObject\n )\n}\n\nfunction targetProperty(target: ColorProperty) {\n return target === 'bg' ? 'background-color' : 'color'\n}\n\nfunction isSupportedEffect(effect: Key): effect is EffectType {\n return ['hover', 'press', 'disabled'].includes(effect as string)\n}\n\nfunction onEffectPseudo(effect: EffectType, css: CSSObject) {\n return effect === 'hover'\n ? { '&:hover': { [notDisabledSelector]: css } }\n : effect === 'press'\n ? { '&:active': { [notDisabledSelector]: css } }\n : // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n effect === 'disabled'\n ? { [disabledSelector]: css }\n : unreachable(effect)\n}\n\nconst createColorCss =\n <T extends Theme>(_theme: T) =>\n (\n target: ColorProperty,\n color: keyof T['color'],\n effects: readonly (keyof T['effect'])[] = []\n ): Internal =>\n internal(\n () => ({\n [targetProperty(target)]: variable(\n customPropertyToken(color.toString())\n ),\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n [targetProperty(target)]: variable(\n customPropertyToken(color.toString(), [effect])\n ),\n }),\n }),\n {}\n ),\n }),\n effects.length > 0\n ? target === 'font'\n ? {\n colorTransition: true,\n }\n : {\n backgroundColorTransition: true,\n }\n : {}\n )\n\n// TODO: deprecate\nconst TRANSITION_DURATION = 0.2\n\nconst createGradientColorCss =\n <T extends Theme>(theme: T) =>\n (\n color: keyof T['gradientColor'],\n effects: readonly (keyof T['effect'])[] = [],\n direction: GradientDirection\n ): Internal => {\n const toLinearGradient = gradient(direction)\n return internal((context) => {\n const optimized = !useHalfLeadingCanceller(context)\n const duration = dur(TRANSITION_DURATION)\n if (optimized && effects.length > 0) {\n return {\n position: 'relative',\n zIndex: 0,\n overflow: 'hidden',\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n '&::before': {\n zIndex: -1,\n ...overlayElement,\n transition: `${duration} background-color`,\n },\n '&::after': {\n zIndex: -2,\n ...overlayElement,\n ...toLinearGradient(theme.gradientColor[color]),\n },\n ...onEffectPseudo(effect, {\n '&::before': {\n backgroundColor: applyEffect(\n null,\n theme.effect[effect] ?? []\n ),\n },\n }),\n }),\n {}\n ),\n }\n } else {\n warning(\n effects.length === 0,\n // eslint-disable-next-line max-len\n `'Transition' will not be applied. You can get around this by specifying 'preserveHalfLeading' or both 'padding' and 'typograpy'.`\n )\n return {\n ...toLinearGradient(theme.gradientColor[color]),\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n ...toLinearGradient(\n applyEffectToGradient(theme.effect[effect] ?? [])(\n theme.gradientColor[color]\n )\n ),\n }),\n }),\n {}\n ),\n }\n }\n })\n }\n\n/**\n * @see https://developer.mozilla.org/ja/docs/Web/CSS/:focus-visible#selectively_showing_the_focus_indicator\n */\nconst onFocus = (css: CSSObject) => ({\n [notDisabledSelector]: {\n '&:focus, &:active': {\n outline: 'none',\n ...css,\n },\n\n '&:focus:not(:focus-visible), &:active:not(:focus-visible)': {\n outline: 'none',\n },\n\n '&:focus-visible': {\n outline: 'none',\n ...css,\n },\n },\n})\n\nconst outlineCss = (weight: number, color: string) => ({\n boxShadow: `0 0 0 ${px(weight)} ${color}`,\n})\n\nconst createOutlineColorCss =\n <T extends Theme>(theme: T) =>\n (\n variant: keyof T['outline'],\n modifiers: readonly OutlineType[]\n ): Internal => {\n const weight = theme.outline[variant].weight\n const color = theme.outline[variant].color\n return internal(\n () =>\n modifiers.includes('focus')\n ? onFocus(outlineCss(weight, color))\n : { '&&': { [notDisabledSelector]: outlineCss(weight, color) } },\n {\n boxShadowTransition: true,\n }\n )\n }\n\nconst overlayElement: CSSObject = {\n content: \"''\",\n display: 'block',\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n}\n\n// half-leadingをキャンセルするとき && 垂直方向のpaddingが無い時\n// -> before/afterを入れる\nconst useHalfLeadingCanceller = ({\n cancelHalfLeadingPx,\n hasVerticalPadding = false,\n}: Context) => cancelHalfLeadingPx !== undefined && !hasVerticalPadding\n\nconst createTypographyCss =\n <T extends Theme>(theme: T) =>\n (\n size: keyof T['typography']['size'],\n options: {\n preserveHalfLeading?: boolean\n monospace?: boolean\n bold?: boolean\n } = {}\n ): Internal => {\n const {\n preserveHalfLeading = false,\n monospace = false,\n bold = false,\n } = options\n const descriptor = theme.typography.size[size]\n const margin = -halfLeading(descriptor)\n\n return internal(\n (context) => ({\n fontSize: px(descriptor.fontSize),\n lineHeight: px(descriptor.lineHeight),\n ...(monospace && {\n fontFamily: 'monospace',\n }),\n ...(bold && {\n fontWeight: 'bold',\n }),\n ...(useHalfLeadingCanceller(context) && {\n // prevent margin collapsing\n display: 'flow-root',\n // cancel half-leading with negative margin\n '&::before': {\n ...leadingCancel,\n marginTop: px(margin),\n },\n '&::after': {\n ...leadingCancel,\n marginBottom: px(margin),\n },\n }),\n }),\n !preserveHalfLeading\n ? {\n cancelHalfLeadingPx: margin,\n }\n : {}\n )\n }\n\nconst leadingCancel: CSSObject = {\n display: 'block',\n width: 0,\n height: 0,\n content: `''`,\n}\n\nfunction spacingProperty(\n property: SpacingProperty,\n direction: 'top' | 'right' | 'bottom' | 'left'\n) {\n return `${property}-${direction}`\n}\n\nconst createSpacingCss =\n <T extends Theme>(theme: { spacing: T['spacing'] }) =>\n (\n property: SpacingProperty,\n modifiers: readonly [SpacingDirection, keyof T['spacing'] | 'auto'][]\n ): Internal => {\n const { top, right, bottom, left } = modifiers.reduce(\n (acc, [direction, size]) => {\n if (direction === 'all') {\n acc.top = size\n acc.right = size\n acc.bottom = size\n acc.left = size\n } else if (direction === 'vertical') {\n acc.top = size\n acc.bottom = size\n } else if (direction === 'horizontal') {\n acc.right = size\n acc.left = size\n } else {\n acc[direction] = size\n }\n return acc\n },\n {} as Partial<\n Record<'top' | 'right' | 'bottom' | 'left', keyof T['spacing'] | 'auto'>\n >\n )\n\n const hasVerticalPadding =\n property === 'padding' &&\n top !== undefined &&\n bottom !== undefined &&\n top !== 'auto' &&\n bottom !== 'auto'\n\n return internal(\n ({ cancelHalfLeadingPx = 0 }) => ({\n ...(top !== undefined && {\n [spacingProperty(property, 'top')]:\n top === 'auto'\n ? 'auto'\n : px(\n theme.spacing[top] +\n (hasVerticalPadding ? cancelHalfLeadingPx : 0)\n ),\n }),\n ...(bottom !== undefined && {\n [spacingProperty(property, 'bottom')]:\n bottom === 'auto'\n ? 'auto'\n : px(\n theme.spacing[bottom] +\n (hasVerticalPadding ? cancelHalfLeadingPx : 0)\n ),\n }),\n ...(right !== undefined && {\n [spacingProperty(property, 'right')]:\n right === 'auto' ? 'auto' : px(theme.spacing[right]),\n }),\n ...(left !== undefined && {\n [spacingProperty(property, 'left')]:\n left === 'auto' ? 'auto' : px(theme.spacing[left]),\n }),\n }),\n hasVerticalPadding ? { hasVerticalPadding: true } : {}\n )\n }\n\nconst createFixedPxCss =\n <T extends Theme>(theme: T) =>\n (property: FixedProperty, size: keyof T['spacing'] | 'auto'): Internal =>\n internal(() => ({\n [property]: size === 'auto' ? 'auto' : px(theme.spacing[size]),\n }))\n\nconst createFixedRelativeCss =\n <T extends Theme>(_theme: T) =>\n (property: FixedProperty, amount: '100%' | 'auto'): Internal =>\n internal(() => ({\n [property]: amount,\n }))\n\nconst createFixedColumnCss =\n <T extends Theme>(theme: T) =>\n (property: FixedProperty, span: number): Internal =>\n internal(() => ({\n [property]: px(\n columnSystem(span, theme.grid.unit.column, theme.grid.unit.gutter)\n ),\n }))\n\nconst createElementEffectCss =\n <T extends Theme, TElementEffect extends T['elementEffect']>(theme: {\n elementEffect: TElementEffect\n }) =>\n (effects: readonly (keyof TElementEffect)[] = []): Internal =>\n internal(() =>\n effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n opacity:\n !(Array as ReadonlyArrayConstructor).isArray(\n theme.elementEffect[effect]\n ) && theme.elementEffect[effect]?.type === 'opacity'\n ? theme.elementEffect[effect]?.opacity\n : unreachable(),\n }),\n }),\n {}\n )\n )\n\nfunction borderProperty(direction: BorderDirection) {\n return `border-${direction}`\n}\n\nfunction borderShorthand(color: string) {\n return `solid 1px ${color}`\n}\n\nconst createBorderCss =\n <T extends Theme>(theme: T) =>\n (\n variant: keyof T['border'],\n directions: readonly BorderDirection[]\n ): Internal => {\n const all = directions.length === 0\n const value = borderShorthand(theme.border[variant].color)\n return internal(() => ({\n ...(all\n ? { border: value }\n : directions.reduce<CSSObject>(\n (acc, direction) => ({\n ...acc,\n [borderProperty(direction)]: value,\n }),\n {}\n )),\n }))\n }\n\nconst createBorderRadiusCss =\n <T extends Theme>(theme: T) =>\n (size: keyof T['borderRadius']): Internal =>\n internal(() => ({\n borderRadius: px(theme.borderRadius[size]),\n }))\n\ninterface Context {\n cancelHalfLeadingPx?: number\n hasVerticalPadding?: boolean\n boxShadowTransition?: boolean\n colorTransition?: boolean\n backgroundColorTransition?: boolean\n}\n\nconst commonSpec = (_theme: unknown): Internal => {\n const duration = dur(TRANSITION_DURATION)\n const transition = (property: string[]) => ({\n transition: property.map((v) => `${duration} ${v}`).join(', '),\n })\n return internal(\n ({\n colorTransition = false,\n backgroundColorTransition = false,\n boxShadowTransition = false,\n }) =>\n transition(\n [\n colorTransition ? 'color' : null,\n backgroundColorTransition ? 'background-color' : null,\n boxShadowTransition ? 'box-shadow' : null,\n ].filter(isPresent)\n )\n )\n}\n\nconst internalSym: unique symbol = Symbol('internal')\n\nfunction internal(\n operation: (context: Context) => CSSObject,\n context: Context = {}\n): Internal {\n return {\n [internalSym]: {\n operation,\n context,\n },\n }\n}\n\nexport interface Internal {\n [internalSym]: {\n operation: (context: Context) => CSSObject\n context: Context\n }\n}\n\ntype Blank = null | undefined | false\n\nconst nonBlank = <T>(value: T): value is T extends Blank ? never : T =>\n isPresent(value) && (value as unknown) !== false\n\n/**\n * `theme(o => [...])` の `theme` ユーティリティを構築する\n *\n * @param _styled styled-componnets の `styled` そのもの (型推論のために用いられる)\n *\n * @example\n *\n * import styled from 'styled-components'\n * const theme = createTheme(styled)\n *\n * @example\n *\n * const theme = createTheme<DefaultTheme>()\n */\nexport function createTheme<T extends Theme>(\n _styled?: ThemedStyledInterface<T>\n) {\n // `theme(o => [...])` の `o` の部分の型推論のためだけに使う意味のない変数\n // Tを型変数のまま渡してcreateThemeが呼ばれるまで型の具象化が行われないようにする\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any\n const _phantomBuilder = builder<T>({} as any, true)\n // ランタイムの `theme(o => [...])` のインターフェースを構築する\n return (\n // ユーザー定義\n spec: (\n o: typeof _phantomBuilder\n ) => Blank | Internal | (Blank | Internal)[]\n ): ThemeProp<T> =>\n ({ theme }) => {\n if (!isPresent(theme)) {\n // テーマが入っていない場合は復旧不可能なのでエラーにする\n throw noThemeProvider\n }\n // styled-componentsのランタイムから受け取ったthemeオブジェクトをbuilderに食わせて`o`をつくる\n // さらに、ユーザー定義にbuilderが構築した`o`を食わせる\n // (`o`を一時変数に入れてしまうと型Tの具象化が行われるので関数合成を優先する)\n const rawSpecDescriptor = spec(builder(theme))\n // ユーザー定義の配列を整形\n const specDescriptor = [\n ...(Array.isArray(rawSpecDescriptor)\n ? rawSpecDescriptor\n : [rawSpecDescriptor]),\n commonSpec(theme),\n ].filter(nonBlank)\n\n // 1パス目\n // 全ユーザー定義を舐めて相互に影響し合う定義をチェックし、その結果(コンテキスト)を取得\n const context = specDescriptor.reduce<Context>(\n (acc, v) => ({ ...acc, ...v[internalSym].context }),\n {}\n )\n // 2パス目\n // コンテキストを見ながら最適化されたCSSを構築\n return specDescriptor.map((v) => v[internalSym].operation(context))\n }\n}\n\nexport type ThemeProp<T> = ({\n theme,\n}: {\n theme: T | undefined\n}) => CSSObject | CSSObject[]\n"],"names":["unreachable","value","Error","arguments","length","JSON","stringify","isPresent","objectAssign","sources","Object","assign","objectKeys","obj","keys","noThemeProvider","defineThemeVariables","colorParams","effectParams","toCssObject","props","theme","colors","filterObject","effects","entries","effect","flatMapObject","colorKey","color","customPropertyToken","map","effectKey","applyEffect","factory","source","member","chain","defineProperties","fromEntries","key","get","enumerable","configurable","argumentedFactory","args","constFactory","def","modifiedFactory","modifiers","recursiveModifiedFactory","applied","notApplied","filter","v","includes","modifier","modifiedArgumentedFactory","_inferPhantom","w","variable","GlobalStyle","createGlobalStyle","themeMap","background","startsWith","css","undefined","defineColorVariableCSS","TokenInjector","varName","variableDefinition","toString","join","prop","LOCAL_STORAGE_KEY","DEFAULT_ROOT_ATTRIBUTE","keyStringRegExp","RegExp","assertKeyString","test","themeSetter","attr","document","documentElement","dataset","themeSelector","prefersColorScheme","useThemeSetter","setter","system","useTheme","useEffect","getThemeSync","localStorage","getItem","isDark","useMedia","media","local","setTheme","ready","useLocalStorage","defaultValue","setReady","useState","state","setState","defaultValueMemo","useMemo","fetch","window","addEventListener","handleStorage","removeEventListener","e","storageArea","raw","deserialize","set","removeItem","serialize","setItem","event","StorageEvent","bubbles","cancelable","url","location","href","dispatchEvent","parse","query","match","matcher","matchMedia","onChange","matches","makeSetThemeScriptCode","localStorageKey","defaultProps","rootAttribute","SetThemeScript","src","__html","spacingProperties","spacingDirections","fixedProperties","borderDirections","outlineType","builder","isPhantom","gradientColors","gradientColor","colorCss","createColorCss","gradientColorCss","createGradientColorCss","colorObject","bg","direction","font","typographyModifiers","typographyCss","createTypographyCss","typographyObject","_","size","preserveHalfLeading","monospace","bold","spacingCss","createSpacingCss","spacingObject","spacingProperty","fixedPxCss","createFixedPxCss","fixedColumnCss","createFixedColumnCss","fixedRelativeCss","createFixedRelativeCss","fixedObject","property","px","column","span","auto","full","elementEffectCss","createElementEffectCss","elementEffectObject","elementEffect","borderCss","createBorderCss","borderObject","border","variant","borderRadiusCss","createBorderRadiusCss","borderRadiusObject","borderRadius","radius","outlineCss","createOutlineColorCss","outlineObject","outline","targetProperty","target","isSupportedEffect","onEffectPseudo","notDisabledSelector","disabledSelector","_theme","internal","reduce","acc","colorTransition","backgroundColorTransition","TRANSITION_DURATION","toLinearGradient","gradient","context","optimized","useHalfLeadingCanceller","duration","dur","position","zIndex","overflow","overlayElement","transition","backgroundColor","warning","applyEffectToGradient","onFocus","weight","boxShadow","boxShadowTransition","content","display","width","height","top","left","cancelHalfLeadingPx","hasVerticalPadding","options","descriptor","typography","margin","halfLeading","fontSize","lineHeight","fontFamily","fontWeight","leadingCancel","marginTop","marginBottom","right","bottom","spacing","amount","columnSystem","grid","unit","gutter","opacity","Array","isArray","type","borderProperty","borderShorthand","directions","all","commonSpec","internalSym","Symbol","operation","nonBlank","createTheme","_styled","spec","rawSpecDescriptor","specDescriptor"],"mappings":"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"}
1
+ {"version":3,"file":"index.modern.js","sources":["../src/util.ts","../src/lib.ts","../src/TokenInjector.tsx","../src/helper.ts","../src/SetThemeScript.tsx","../src/index.ts"],"sourcesContent":["import {\n applyEffect,\n customPropertyToken,\n filterObject,\n flatMapObject,\n} from '@charcoal-ui/utils'\nimport { CharcoalAbstractTheme } from '@charcoal-ui/theme'\nimport { CSSObject } from 'styled-components'\n\n/**\n * Function used to assert a given code path is unreachable\n */\nexport function unreachable(): never\n/**\n * Function used to assert a given code path is unreachable.\n * Very useful for ensuring switches are exhaustive:\n *\n * ```ts\n * switch (a.type) {\n * case Types.A:\n * case Types.B:\n * break\n * default:\n * unreachable(a) // will cause a build error if there was\n * // a Types.C that was not checked\n * }\n * ```\n *\n * @param value Value to be asserted as unreachable\n */\n// NOTE: Uses separate overloads, _not_ `value?: never`, to not allow `undefined` to be passed\n// eslint-disable-next-line @typescript-eslint/unified-signatures\nexport function unreachable(value: never): never\nexport function unreachable(value?: never): never {\n throw new Error(\n arguments.length === 0\n ? 'unreachable'\n : `unreachable (${JSON.stringify(value)})`\n )\n}\n\n/**\n * Check whether a value is non-null and non-undefined\n *\n * @param value nullable\n */\nexport const isPresent = <T>(value: T): value is NonNullable<T> => value != null\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Head<U> = U extends [infer T, ...any[]] ? T : never\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Tail<U> = U extends [any, any, ...any[]]\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((...args: U) => any) extends (head: any, ...args: infer T) => any\n ? T\n : never\n : never\n// Buggy at ts@4.0.0-dev20200506\n// type Tail<U> = U extends [any, ...infer T] ? T : never\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype RecursiveObjectAssign<T, S extends any[]> = {\n 0: T & Head<S>\n 1: RecursiveObjectAssign<T & Head<S>, Tail<S>>\n}[Tail<S> extends never ? 0 : 1]\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ObjectAssign<T extends any[]> = RecursiveObjectAssign<\n Record<string, unknown>,\n T\n>\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function objectAssign<T extends any[]>(...sources: T) {\n return Object.assign({}, ...sources) as ObjectAssign<T>\n}\n\nexport function objectKeys<V extends object, K extends keyof V>(obj: V) {\n return Object.keys(obj) as K[]\n}\n\nexport interface ReadonlyArrayConstructor {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isArray(value: any): value is readonly any[]\n}\n\nexport function extractNonNullKeys<V, K extends keyof V>(obj: {\n [key in K]: V[key]\n}) {\n return Object.entries(obj)\n .filter(([_, v]) => v !== null)\n .map(([k]) => k) as { [key in K]: V[key] extends null ? never : key }[K][]\n}\n\nexport const noThemeProvider = new Error(\n '`theme` is invalid. `<ThemeProvider>` is not likely mounted.'\n)\n\ntype NonNullableCSSObject = Record<keyof CSSObject, string | number>\n\n/**\n * 子孫要素で使われるカラーテーマの CSS Variables を上書きする\n *\n * @params colorParams - 上書きしたい色の定義( `theme.color` の一部だけ書けば良い )\n * @params effectParams - effect の定義を上書きしたい場合は渡す(必須ではない)\n *\n * @example\n * ```tsx\n * const LocalTheme = styled.div`\n * ${defineThemeVariables({ text1: '#ff0000' })}\n * // `text1` is now defined as red\n * ${theme((o) => [o.font.text1])}\n * `\n * ```\n */\nexport function defineThemeVariables(\n colorParams: Partial<CharcoalAbstractTheme['color']>,\n effectParams?: Partial<CharcoalAbstractTheme['effect']>\n) {\n return function toCssObject(props: {\n theme?: Pick<CharcoalAbstractTheme, 'effect'>\n }): NonNullableCSSObject {\n if (!isPresent(props.theme)) {\n throw noThemeProvider\n }\n\n const colors = filterObject(colorParams, isPresent)\n\n // flatMapObject の中で毎回 Object.entries を呼ぶのは無駄なので外で呼ぶ\n const effects = Object.entries({\n ...props.theme.effect,\n ...effectParams,\n })\n\n return flatMapObject(colors, (colorKey, color) => [\n [customPropertyToken(colorKey), color],\n\n ...effects.map<[string, string]>(([effectKey, effect]) => [\n customPropertyToken(colorKey, [effectKey]),\n applyEffect(color, [effect]),\n ]),\n ])\n }\n}\n","import { Key } from '@charcoal-ui/theme'\nimport { unreachable } from './util'\n\n/**\n * 配列で指定したプロパティを動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param member オブジェクトに生やすプロパティ一覧\n * @param chain プロパティに格納される値を生成する関数\n *\n * @example\n *\n * const o = factory({}, ['red', 'blue'],\n * color => hex(color)\n * )\n *\n * console.log(o.red) //=> #ff0000\n */\nexport const factory = <TSource, TMember extends readonly Key[], TValue>(\n source: TSource,\n member: TMember,\n chain: (key: TMember[number]) => TValue\n) =>\n Object.defineProperties(\n source,\n Object.fromEntries(\n member.map((key) => [\n key,\n { get: () => chain(key), enumerable: true, configurable: true },\n ])\n )\n ) as TSource & { readonly [key in TMember[number]]: TValue }\n\n/**\n * 配列で指定した名前のメソッドを動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param member オブジェクトに生やすメソッド名一覧\n * @param chain メソッドの戻り値になる値を生成する関数\n *\n * @example\n *\n * const o = argumentedFactory({}, ['red', 'blue'],\n * (color, alpha: number) => hex(color, alpha)\n * )\n *\n * console.log(o.red(0.5)) //=> #ff000077\n */\nexport const argumentedFactory = <\n TSource,\n TMember extends readonly string[],\n TValue,\n TArguments extends unknown[]\n>(\n source: TSource,\n member: TMember,\n chain: (key: TMember[number], ...args: TArguments) => TValue\n) =>\n Object.defineProperties(\n source,\n Object.fromEntries(\n member.map((key) => [\n key,\n {\n value: (...args: TArguments) => chain(key, ...args),\n enumerable: true,\n configurable: true,\n },\n ])\n )\n ) as TSource & {\n readonly [key in TMember[number]]: (...args: TArguments) => TValue\n }\n\n/**\n * オブジェクトで指定したプロパティ名と値を動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param def オブジェクトに生やす定義(プロパティ名と値)\n *\n * @example\n *\n * const o = constFactory({}, {\n * red: '#f00',\n * blue: '#00f',\n * })\n *\n * console.log(o.red) //=> #f00\n */\nexport const constFactory = <TSource, TDef extends { [key: string]: unknown }>(\n source: TSource,\n def: TDef\n) =>\n factory(source, Object.keys(def), (key) => def[key]) as TSource &\n Readonly<TDef>\n\n/**\n * 配列で指定したモディファイア(プロパティ)をチェーン可能な再帰オブジェクトを動的に生やす\n *\n * @param modifiers オブジェクトに生やすモディファイヤ一覧\n * @param source 指定されたモディファイヤの一覧から値を生成する関数\n *\n * @example\n *\n * const o = modifiedArgumentedFactory(['red', 'blue'],\n * modifiers => modifiers.map(color => hex(color)).join(',')\n * )\n *\n * console.log(o.red.blue) => #f00,#00f\n */\nexport const modifiedFactory = <TSource, T extends Key>(\n modifiers: readonly T[],\n source: (applied: readonly T[]) => TSource\n) =>\n (function recursiveModifiedFactory(\n applied: readonly T[]\n ): Modified<TSource, T> {\n const notApplied = modifiers.filter((v) => !applied.includes(v))\n return factory(source(applied), notApplied, (modifier) =>\n notApplied.length === 0\n ? unreachable()\n : recursiveModifiedFactory([...applied, modifier])\n )\n })([])\n\nexport type Modified<TSource, TModifiers extends Key> = TSource & {\n readonly [key in TModifiers]: Modified<TSource, Exclude<TModifiers, key>>\n}\n\n/**\n * 配列で指定したモディファイア(メソッド)をチェーン可能な再帰オブジェクトを動的に生やす\n *\n * @param modifiers オブジェクトに生やすモディファイヤ一覧\n * @param source 指定されたモディファイヤの一覧から値を生成する関数\n * @param _inferPhantom 関数形式のモディファイヤの引数型を推論するためのメタタイプ(引数の個数に合わせてタプルで指定する)\n *\n * @example\n *\n * const o = modifiedArgumentedFactory(['red', 'blue'],\n * modifiers => modifiers.map(([color, alpha]) => hex(color, alpha)).join(',')\n * , {} as [number])\n *\n * console.log(o.red(0.5).blue(1)) => #ff000077,#0000ffff\n */\nexport const modifiedArgumentedFactory = <\n TSource,\n T extends string,\n TArguments extends unknown[]\n>(\n modifiers: readonly T[],\n source: (applied: readonly [T, ...TArguments][]) => TSource,\n ..._inferPhantom: TArguments\n) =>\n (function recursiveModifiedFactory(\n applied: readonly [T, ...TArguments][]\n ): ModifiedArgumented<TSource, T, TArguments> {\n const notApplied = modifiers.filter(\n (v) => !applied.map(([w]) => w).includes(v)\n )\n return argumentedFactory(\n source(applied),\n notApplied,\n (modifier, ...args: TArguments) =>\n notApplied.length === 0\n ? unreachable()\n : recursiveModifiedFactory([...applied, [modifier, ...args]])\n )\n })([])\n\nexport type ModifiedArgumented<\n TSource,\n TModifiers extends string,\n TArguments extends unknown[]\n> = TSource & {\n readonly [key in TModifiers]: (\n ...args: TArguments\n ) => ModifiedArgumented<TSource, Exclude<TModifiers, key>, TArguments>\n}\n\nexport const variable = (value: string) => `var(${value})`\n","import React from 'react'\nimport { createGlobalStyle, css } from 'styled-components'\nimport { CharcoalAbstractTheme } from '@charcoal-ui/theme'\nimport { defineThemeVariables } from './util'\n\nconst GlobalStyle = createGlobalStyle`\n ${<T extends Theme>({\n themeMap,\n background,\n }: {\n themeMap: ThemeMap<T>\n background?: keyof ThemeMap<T>[string]['color']\n }) =>\n Object.entries(themeMap).map(([key, theme]) =>\n key.startsWith('@media')\n ? css`\n ${key} {\n :root {\n ${background !== undefined &&\n css`\n background-color: ${theme.color[background]};\n `}\n ${defineColorVariableCSS(theme)}\n }\n }\n `\n : css`\n /* stylelint-disable-next-line no-duplicate-selectors */\n ${key} {\n ${background !== undefined &&\n css`\n background-color: ${theme.color[background]};\n `}\n ${defineColorVariableCSS(theme)}\n }\n `\n )}\n`\n\nexport interface ThemeMap<T extends Theme> {\n ':root': T\n [mediaQuery: `@media (${string})`]: T\n [selector: string]: T\n}\n\ntype Theme = Pick<CharcoalAbstractTheme, 'color' | 'effect'>\n\nexport default function TokenInjector<T extends Theme>({\n theme: themeMap,\n background,\n}: {\n theme: ThemeMap<T>\n background?: keyof ThemeMap<T>[string]['color']\n}) {\n return <GlobalStyle themeMap={themeMap} background={background} />\n}\n\nconst defineColorVariableCSS = (theme: Theme) =>\n Object.entries(defineThemeVariables(theme.color)({ theme }))\n .map(([varName, value]) => variableDefinition(varName, value.toString()))\n .join(';')\n\nconst variableDefinition = (prop: string, value: string) => `${prop}: ${value}`\n","import { useEffect, useMemo, useState } from 'react'\n\nexport const LOCAL_STORAGE_KEY = 'charcoal-theme'\nexport const DEFAULT_ROOT_ATTRIBUTE = 'theme'\n\nconst keyStringRegExp = new RegExp(/^(\\w|-)+$/)\n\n/**\n * 文字列が英数字_-のみで構成されているか検証する。不正な文字列ならエラーを投げる\n * @param key 検証するキー\n */\nexport function assertKeyString(key: string) {\n if (!keyStringRegExp.test(key)) {\n throw new Error(`Unexpected key :${key}, expect: /^(\\\\w|-)+$/`)\n }\n}\n\n/**\n * `<html data-theme=\"dark\">` のような設定を行うデフォルトのセッター\n */\nexport const themeSetter =\n (attr: string = DEFAULT_ROOT_ATTRIBUTE) =>\n (theme: string | undefined) => {\n assertKeyString(attr)\n if (theme !== undefined) {\n document.documentElement.dataset[attr] = theme\n } else {\n delete document.documentElement.dataset[attr]\n }\n }\n\n/**\n * `<html data-theme=\"dark\">` にマッチするセレクタを生成する\n */\nexport function themeSelector<\n T extends string,\n S extends string = typeof DEFAULT_ROOT_ATTRIBUTE\n>(theme: T, attr?: S) {\n return `:root[data-${attr ?? DEFAULT_ROOT_ATTRIBUTE}='${theme}']` as const\n}\n\n/**\n * prefers-color-scheme を利用する media クエリを生成する\n */\nexport function prefersColorScheme<T extends 'light' | 'dark'>(theme: T) {\n return `@media (prefers-color-scheme: ${theme})` as const\n}\n\n/**\n * LocalStorageからテーマの情報を取得して、変化時にテーマをセットするhooks\n */\nexport function useThemeSetter({\n key = LOCAL_STORAGE_KEY,\n setter = themeSetter(),\n}: { key?: string; setter?: (theme: string | undefined) => void } = {}) {\n const [theme, , system] = useTheme(key)\n\n useEffect(() => {\n if (theme === undefined) {\n return\n }\n // prefers-color-scheme から値を取っている場合にはcssのみで処理したいのでアンセットする\n setter(system ? undefined : theme)\n }, [setter, system, theme])\n}\n\n/**\n * 同期的にLocalStorageからテーマを取得するヘルパ\n */\nexport function getThemeSync(key: string = LOCAL_STORAGE_KEY) {\n const theme = localStorage.getItem(key)\n return theme\n}\n\n/**\n * LocalStorage, prefers-color-scheme からテーマの情報を取得して、現在のテーマを返すhooks\n *\n * `dark` `light` という名前だけは特別扱いされていて、prefers-color-schemeにマッチした場合に返ります\n */\nexport const useTheme = (key: string = LOCAL_STORAGE_KEY) => {\n assertKeyString(key)\n const isDark = useMedia('(prefers-color-scheme: dark)')\n const media = isDark !== undefined ? (isDark ? 'dark' : 'light') : undefined\n const [local, setTheme, ready] = useLocalStorage<string>(key)\n const theme = !ready || media === undefined ? undefined : local ?? media\n const system = local === undefined\n return [theme, setTheme, system] as const\n}\n\nexport function useLocalStorage<T>(key: string, defaultValue?: () => T) {\n const [ready, setReady] = useState(false)\n const [state, setState] = useState<T>()\n const defaultValueMemo = useMemo(() => defaultValue?.(), [defaultValue])\n\n useEffect(() => {\n fetch()\n window.addEventListener('storage', handleStorage)\n return () => {\n window.removeEventListener('storage', handleStorage)\n }\n })\n\n const handleStorage = (e: StorageEvent) => {\n if (e.storageArea !== localStorage) {\n return\n }\n if (e.key !== key) {\n return\n }\n fetch()\n }\n\n const fetch = () => {\n const raw = localStorage.getItem(key)\n setState((raw !== null ? deserialize(raw) : null) ?? defaultValueMemo)\n setReady(true)\n }\n\n const set = (value: T | undefined) => {\n if (value === undefined) {\n // undefinedがセットされる場合にはkeyごと削除\n localStorage.removeItem(key)\n } else {\n const raw = serialize(value)\n localStorage.setItem(key, raw)\n }\n\n // 同一ウィンドウではstorageイベントが発火しないので、手動で発火させる\n const event = new StorageEvent('storage', {\n bubbles: true,\n cancelable: false,\n key,\n url: location.href,\n storageArea: localStorage,\n })\n dispatchEvent(event)\n }\n\n return [state ?? defaultValueMemo, set, ready] as const\n}\n\nfunction deserialize<T>(raw: string): T {\n try {\n return JSON.parse(raw) as T\n } catch {\n // syntax error はすべて文字列として扱う\n return raw as unknown as T\n }\n}\n\nfunction serialize(value: unknown): string {\n if (typeof value === 'string') {\n return value\n } else {\n return JSON.stringify(value)\n }\n}\n\nexport function useMedia(query: string) {\n const [match, setState] = useState<boolean>()\n\n useEffect(() => {\n const matcher = window.matchMedia(query)\n\n const onChange = () => {\n setState(matcher.matches)\n }\n\n matcher.addEventListener('change', onChange)\n\n setState(matcher.matches)\n\n return () => {\n matcher.removeEventListener('change', onChange)\n }\n }, [query])\n\n return match\n}\n","import React from 'react'\nimport {\n assertKeyString,\n DEFAULT_ROOT_ATTRIBUTE,\n LOCAL_STORAGE_KEY,\n} from './helper'\n\ninterface Props {\n localStorageKey: string\n rootAttribute: string\n}\n\n/**\n * 同期的にテーマをローカルストレージから取得してhtmlの属性に設定するコードを取得する\n * @param props localStorageのキー、htmlのdataになる属性のキーを含むオブジェクト\n * @returns ソースコードの文字列\n */\nexport function makeSetThemeScriptCode({\n localStorageKey = defaultProps.localStorageKey,\n rootAttribute = defaultProps.rootAttribute,\n}: Partial<Props> = defaultProps) {\n assertKeyString(localStorageKey)\n assertKeyString(rootAttribute)\n return `'use strict';\n(function () {\n var localStorageKey = '${localStorageKey}'\n var rootAttribute = '${rootAttribute}'\n var currentTheme = localStorage.getItem(localStorageKey);\n if (currentTheme) {\n document.documentElement.dataset[rootAttribute] = currentTheme;\n }\n})();\n`\n}\n\n/**\n * 同期的にテーマをローカルストレージから取得してhtmlの属性に設定するスクリプトタグ\n * @param props localStorageのキー、htmlのdataになる属性のキーを含むオブジェクト\n * @returns\n */\nexport function SetThemeScript(props: Props) {\n const src = makeSetThemeScriptCode(props)\n return (\n <script\n dangerouslySetInnerHTML={{\n __html: src,\n }}\n />\n )\n}\n\nconst defaultProps: Props = {\n localStorageKey: LOCAL_STORAGE_KEY,\n rootAttribute: DEFAULT_ROOT_ATTRIBUTE,\n}\n\nSetThemeScript.defaultProps = defaultProps\n","import { CSSObject, ThemedStyledInterface } from 'styled-components'\nimport warning from 'warning'\nimport {\n factory,\n modifiedFactory,\n constFactory,\n modifiedArgumentedFactory,\n variable,\n} from './lib'\nimport {\n EffectType,\n CharcoalAbstractTheme as Theme,\n Key,\n} from '@charcoal-ui/theme'\nimport {\n objectAssign,\n unreachable,\n ReadonlyArrayConstructor,\n objectKeys,\n isPresent,\n noThemeProvider,\n} from './util'\nimport { columnSystem } from '@charcoal-ui/foundation'\nimport {\n halfLeading,\n applyEffect,\n applyEffectToGradient,\n dur,\n gradient,\n GradientDirection,\n notDisabledSelector,\n disabledSelector,\n px,\n customPropertyToken,\n} from '@charcoal-ui/utils'\nexport { type Modified, type ModifiedArgumented } from './lib'\nexport { default as TokenInjector } from './TokenInjector'\nexport {\n getThemeSync,\n themeSetter,\n themeSelector,\n prefersColorScheme,\n useTheme,\n useThemeSetter,\n useLocalStorage,\n useMedia,\n} from './helper'\nexport { defineThemeVariables } from './util'\nexport * from './SetThemeScript'\n\nconst colorProperties = ['bg', 'font'] as const\ntype ColorProperty = typeof colorProperties[number]\n\nconst spacingProperties = ['margin', 'padding'] as const\nconst spacingDirections = [\n 'top',\n 'right',\n 'bottom',\n 'left',\n 'vertical',\n 'horizontal',\n 'all',\n] as const\ntype SpacingProperty = typeof spacingProperties[number]\ntype SpacingDirection = typeof spacingDirections[number]\n\nconst fixedProperties = ['width', 'height'] as const\ntype FixedProperty = typeof fixedProperties[number]\n\nconst borderDirections = ['top', 'right', 'bottom', 'left'] as const\ntype BorderDirection = typeof borderDirections[number]\n\nconst outlineType = ['focus'] as const\ntype OutlineType = typeof outlineType[number]\n\n/**\n * `theme(o => [...])` の `o` の部分を構築する\n *\n * @param theme テーマオブジェクト\n * @param isPhantom 型推論のためだけに使う場合にランタイムコストをゼロにするフラグ\n */\nfunction builder<T extends Theme>(\n theme: {\n // factoryの第二引数に入れ込むものだけ明示的に型変数を展開しておくことで型の具象化を遅延する\n color: T['color']\n gradientColor: T['gradientColor']\n border: T['border']\n outline: T['outline']\n } & Omit<T, 'color' | 'gradientColor' | 'border' | 'outline'>,\n isPhantom = false\n) {\n if (isPhantom) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {} as never\n }\n const colors = objectKeys(theme.color)\n const effects = objectKeys(theme.effect)\n\n // 色\n const gradientColors = objectKeys(theme.gradientColor)\n const colorCss = createColorCss(theme)\n const gradientColorCss = createGradientColorCss(theme)\n const colorObject = constFactory(\n {},\n {\n bg: objectAssign(\n factory({}, colors, (color) =>\n modifiedFactory(effects, (modifiers) =>\n colorCss('bg', color, modifiers)\n )\n ),\n factory(\n {},\n gradientColors,\n (color) => (direction: GradientDirection) =>\n modifiedFactory(effects, (modifiers) =>\n gradientColorCss(color, modifiers, direction)\n )\n )\n ),\n font: factory({}, colors, (color) =>\n modifiedFactory(effects, (modifiers) =>\n colorCss('font', color, modifiers)\n )\n ),\n }\n )\n\n // タイポグラフィ\n const typographyModifiers = [\n // TODO\n 'monospace',\n 'bold',\n 'preserveHalfLeading',\n ] as const\n const typographyCss = createTypographyCss(theme)\n const typographyObject = factory(\n {},\n ['typography'] as const,\n (_) => (size: keyof T['typography']['size']) =>\n modifiedFactory(typographyModifiers, (modifiers) =>\n typographyCss(size, {\n preserveHalfLeading: modifiers.includes('preserveHalfLeading'),\n monospace: modifiers.includes('monospace'),\n bold: modifiers.includes('bold'),\n })\n )\n )\n\n // スペーシング\n const spacingCss = createSpacingCss(theme)\n const spacingObject = factory({}, spacingProperties, (spacingProperty) =>\n modifiedArgumentedFactory(\n spacingDirections,\n (modifiers) => spacingCss(spacingProperty, modifiers),\n {} as keyof T['spacing'] | 'auto' // 推論のためのメタタイプ\n )\n )\n\n // 大きさ\n const fixedPxCss = createFixedPxCss(theme)\n const fixedColumnCss = createFixedColumnCss(theme)\n const fixedRelativeCss = createFixedRelativeCss(theme)\n const fixedObject = factory({}, fixedProperties, (property) =>\n constFactory(\n {},\n {\n px: (size: keyof T['spacing'] | 'auto') => fixedPxCss(property, size),\n column: (span: number) => fixedColumnCss(property, span),\n auto: fixedRelativeCss(property, 'auto'),\n full: fixedRelativeCss(property, '100%'),\n }\n )\n )\n\n // 要素へのエフェクト (etc: 透過)\n const elementEffectCss = createElementEffectCss(theme)\n const elementEffectObject = modifiedFactory(\n objectKeys(theme.elementEffect),\n (modifiers) => elementEffectCss(modifiers)\n )\n\n // ボーダー\n const borderCss = createBorderCss(theme)\n const borderObject = constFactory(\n {},\n {\n border: factory({}, objectKeys(theme.border), (variant) =>\n modifiedFactory(borderDirections, (modifiers) =>\n borderCss(variant, modifiers)\n )\n ),\n }\n )\n\n // 角丸\n const borderRadiusCss = createBorderRadiusCss(theme)\n const borderRadiusObject = constFactory(\n {},\n {\n borderRadius: (radius: keyof T['borderRadius']) =>\n borderRadiusCss(radius),\n }\n )\n\n // アウトライン\n const outlineCss = createOutlineColorCss(theme)\n const outlineObject = constFactory(\n {},\n {\n outline: factory({}, objectKeys(theme.outline), (variant) =>\n modifiedFactory(outlineType, (modifiers) =>\n outlineCss(variant, modifiers)\n )\n ),\n }\n )\n\n return objectAssign(\n colorObject,\n typographyObject,\n spacingObject,\n fixedObject,\n elementEffectObject,\n borderObject,\n borderRadiusObject,\n outlineObject\n )\n}\n\nfunction targetProperty(target: ColorProperty) {\n return target === 'bg' ? 'background-color' : 'color'\n}\n\nfunction isSupportedEffect(effect: Key): effect is EffectType {\n return ['hover', 'press', 'disabled'].includes(effect as string)\n}\n\nfunction onEffectPseudo(effect: EffectType, css: CSSObject) {\n return effect === 'hover'\n ? { '&:hover': { [notDisabledSelector]: css } }\n : effect === 'press'\n ? { '&:active': { [notDisabledSelector]: css } }\n : // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n effect === 'disabled'\n ? { [disabledSelector]: css }\n : unreachable(effect)\n}\n\nconst createColorCss =\n <T extends Theme>(_theme: T) =>\n (\n target: ColorProperty,\n color: keyof T['color'],\n effects: readonly (keyof T['effect'])[] = []\n ): Internal =>\n internal(\n () => ({\n [targetProperty(target)]: variable(\n customPropertyToken(color.toString())\n ),\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n [targetProperty(target)]: variable(\n customPropertyToken(color.toString(), [effect])\n ),\n }),\n }),\n {}\n ),\n }),\n effects.length > 0\n ? target === 'font'\n ? {\n colorTransition: true,\n }\n : {\n backgroundColorTransition: true,\n }\n : {}\n )\n\n// TODO: deprecate\nconst TRANSITION_DURATION = 0.2\n\nconst createGradientColorCss =\n <T extends Theme>(theme: T) =>\n (\n color: keyof T['gradientColor'],\n effects: readonly (keyof T['effect'])[] = [],\n direction: GradientDirection\n ): Internal => {\n const toLinearGradient = gradient(direction)\n return internal((context) => {\n const optimized = !useHalfLeadingCanceller(context)\n const duration = dur(TRANSITION_DURATION)\n if (optimized && effects.length > 0) {\n return {\n position: 'relative',\n zIndex: 0,\n overflow: 'hidden',\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n '&::before': {\n zIndex: -1,\n ...overlayElement,\n transition: `${duration} background-color`,\n },\n '&::after': {\n zIndex: -2,\n ...overlayElement,\n ...toLinearGradient(theme.gradientColor[color]),\n },\n ...onEffectPseudo(effect, {\n '&::before': {\n backgroundColor: applyEffect(\n null,\n theme.effect[effect] ?? []\n ),\n },\n }),\n }),\n {}\n ),\n }\n } else {\n warning(\n effects.length === 0,\n // eslint-disable-next-line max-len\n `'Transition' will not be applied. You can get around this by specifying 'preserveHalfLeading' or both 'padding' and 'typograpy'.`\n )\n return {\n ...toLinearGradient(theme.gradientColor[color]),\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n ...toLinearGradient(\n applyEffectToGradient(theme.effect[effect] ?? [])(\n theme.gradientColor[color]\n )\n ),\n }),\n }),\n {}\n ),\n }\n }\n })\n }\n\n/**\n * @see https://developer.mozilla.org/ja/docs/Web/CSS/:focus-visible#selectively_showing_the_focus_indicator\n */\nconst onFocus = (css: CSSObject) => ({\n [notDisabledSelector]: {\n '&:focus, &:active': {\n outline: 'none',\n ...css,\n },\n\n '&:focus:not(:focus-visible), &:active:not(:focus-visible)': {\n outline: 'none',\n },\n\n '&:focus-visible': {\n outline: 'none',\n ...css,\n },\n },\n})\n\nconst outlineCss = (weight: number, color: string) => ({\n boxShadow: `0 0 0 ${px(weight)} ${color}`,\n})\n\nconst createOutlineColorCss =\n <T extends Theme>(theme: T) =>\n (\n variant: keyof T['outline'],\n modifiers: readonly OutlineType[]\n ): Internal => {\n const weight = theme.outline[variant].weight\n const color = theme.outline[variant].color\n return internal(\n () =>\n modifiers.includes('focus')\n ? onFocus(outlineCss(weight, color))\n : { '&&': { [notDisabledSelector]: outlineCss(weight, color) } },\n {\n boxShadowTransition: true,\n }\n )\n }\n\nconst overlayElement: CSSObject = {\n content: \"''\",\n display: 'block',\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n}\n\n// half-leadingをキャンセルするとき && 垂直方向のpaddingが無い時\n// -> before/afterを入れる\nconst useHalfLeadingCanceller = ({\n cancelHalfLeadingPx,\n hasVerticalPadding = false,\n}: Context) => cancelHalfLeadingPx !== undefined && !hasVerticalPadding\n\nconst createTypographyCss =\n <T extends Theme>(theme: T) =>\n (\n size: keyof T['typography']['size'],\n options: {\n preserveHalfLeading?: boolean\n monospace?: boolean\n bold?: boolean\n } = {}\n ): Internal => {\n const {\n preserveHalfLeading = false,\n monospace = false,\n bold = false,\n } = options\n const descriptor = theme.typography.size[size]\n const margin = -halfLeading(descriptor)\n\n return internal(\n (context) => ({\n fontSize: px(descriptor.fontSize),\n lineHeight: px(descriptor.lineHeight),\n ...(monospace && {\n fontFamily: 'monospace',\n }),\n ...(bold && {\n fontWeight: 'bold',\n }),\n ...(useHalfLeadingCanceller(context) && {\n // prevent margin collapsing\n display: 'flow-root',\n // cancel half-leading with negative margin\n '&::before': {\n ...leadingCancel,\n marginTop: px(margin),\n },\n '&::after': {\n ...leadingCancel,\n marginBottom: px(margin),\n },\n }),\n }),\n !preserveHalfLeading\n ? {\n cancelHalfLeadingPx: margin,\n }\n : {}\n )\n }\n\nconst leadingCancel: CSSObject = {\n display: 'block',\n width: 0,\n height: 0,\n content: `''`,\n}\n\nfunction spacingProperty(\n property: SpacingProperty,\n direction: 'top' | 'right' | 'bottom' | 'left'\n) {\n return `${property}-${direction}`\n}\n\nconst createSpacingCss =\n <T extends Theme>(theme: { spacing: T['spacing'] }) =>\n (\n property: SpacingProperty,\n modifiers: readonly [SpacingDirection, keyof T['spacing'] | 'auto'][]\n ): Internal => {\n const { top, right, bottom, left } = modifiers.reduce(\n (acc, [direction, size]) => {\n if (direction === 'all') {\n acc.top = size\n acc.right = size\n acc.bottom = size\n acc.left = size\n } else if (direction === 'vertical') {\n acc.top = size\n acc.bottom = size\n } else if (direction === 'horizontal') {\n acc.right = size\n acc.left = size\n } else {\n acc[direction] = size\n }\n return acc\n },\n {} as Partial<\n Record<'top' | 'right' | 'bottom' | 'left', keyof T['spacing'] | 'auto'>\n >\n )\n\n const hasVerticalPadding =\n property === 'padding' &&\n top !== undefined &&\n bottom !== undefined &&\n top !== 'auto' &&\n bottom !== 'auto'\n\n return internal(\n ({ cancelHalfLeadingPx = 0 }) => ({\n ...(top !== undefined && {\n [spacingProperty(property, 'top')]:\n top === 'auto'\n ? 'auto'\n : px(\n theme.spacing[top] +\n (hasVerticalPadding ? cancelHalfLeadingPx : 0)\n ),\n }),\n ...(bottom !== undefined && {\n [spacingProperty(property, 'bottom')]:\n bottom === 'auto'\n ? 'auto'\n : px(\n theme.spacing[bottom] +\n (hasVerticalPadding ? cancelHalfLeadingPx : 0)\n ),\n }),\n ...(right !== undefined && {\n [spacingProperty(property, 'right')]:\n right === 'auto' ? 'auto' : px(theme.spacing[right]),\n }),\n ...(left !== undefined && {\n [spacingProperty(property, 'left')]:\n left === 'auto' ? 'auto' : px(theme.spacing[left]),\n }),\n }),\n hasVerticalPadding ? { hasVerticalPadding: true } : {}\n )\n }\n\nconst createFixedPxCss =\n <T extends Theme>(theme: T) =>\n (property: FixedProperty, size: keyof T['spacing'] | 'auto'): Internal =>\n internal(() => ({\n [property]: size === 'auto' ? 'auto' : px(theme.spacing[size]),\n }))\n\nconst createFixedRelativeCss =\n <T extends Theme>(_theme: T) =>\n (property: FixedProperty, amount: '100%' | 'auto'): Internal =>\n internal(() => ({\n [property]: amount,\n }))\n\nconst createFixedColumnCss =\n <T extends Theme>(theme: T) =>\n (property: FixedProperty, span: number): Internal =>\n internal(() => ({\n [property]: px(\n columnSystem(span, theme.grid.unit.column, theme.grid.unit.gutter)\n ),\n }))\n\nconst createElementEffectCss =\n <T extends Theme, TElementEffect extends T['elementEffect']>(theme: {\n elementEffect: TElementEffect\n }) =>\n (effects: readonly (keyof TElementEffect)[] = []): Internal =>\n internal(() =>\n effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n opacity:\n !(Array as ReadonlyArrayConstructor).isArray(\n theme.elementEffect[effect]\n ) && theme.elementEffect[effect]?.type === 'opacity'\n ? theme.elementEffect[effect]?.opacity\n : unreachable(),\n }),\n }),\n {}\n )\n )\n\nfunction borderProperty(direction: BorderDirection) {\n return `border-${direction}`\n}\n\nfunction borderShorthand(color: string) {\n return `solid 1px ${color}`\n}\n\nconst createBorderCss =\n <T extends Theme>(theme: T) =>\n (\n variant: keyof T['border'],\n directions: readonly BorderDirection[]\n ): Internal => {\n const all = directions.length === 0\n const value = borderShorthand(theme.border[variant].color)\n return internal(() => ({\n ...(all\n ? { border: value }\n : directions.reduce<CSSObject>(\n (acc, direction) => ({\n ...acc,\n [borderProperty(direction)]: value,\n }),\n {}\n )),\n }))\n }\n\nconst createBorderRadiusCss =\n <T extends Theme>(theme: T) =>\n (size: keyof T['borderRadius']): Internal =>\n internal(() => ({\n borderRadius: px(theme.borderRadius[size]),\n }))\n\ninterface Context {\n cancelHalfLeadingPx?: number\n hasVerticalPadding?: boolean\n boxShadowTransition?: boolean\n colorTransition?: boolean\n backgroundColorTransition?: boolean\n}\n\nconst commonSpec = (_theme: unknown): Internal => {\n const duration = dur(TRANSITION_DURATION)\n const transition = (property: string[]) => ({\n transition: property.map((v) => `${duration} ${v}`).join(', '),\n })\n return internal(\n ({\n colorTransition = false,\n backgroundColorTransition = false,\n boxShadowTransition = false,\n }) =>\n transition(\n [\n colorTransition ? 'color' : null,\n backgroundColorTransition ? 'background-color' : null,\n boxShadowTransition ? 'box-shadow' : null,\n ].filter(isPresent)\n )\n )\n}\n\nconst internalSym: unique symbol = Symbol('internal')\n\nfunction internal(\n operation: (context: Context) => CSSObject,\n context: Context = {}\n): Internal {\n return {\n [internalSym]: {\n operation,\n context,\n },\n }\n}\n\nexport interface Internal {\n [internalSym]: {\n operation: (context: Context) => CSSObject\n context: Context\n }\n}\n\ntype Blank = null | undefined | false\n\nconst nonBlank = <T>(value: T): value is T extends Blank ? never : T =>\n isPresent(value) && (value as unknown) !== false\n\n/**\n * `theme(o => [...])` の `theme` ユーティリティを構築する\n *\n * @param _styled styled-componnets の `styled` そのもの (型推論のために用いられる)\n *\n * @example\n *\n * import styled from 'styled-components'\n * const theme = createTheme(styled)\n *\n * @example\n *\n * const theme = createTheme<DefaultTheme>()\n */\nexport function createTheme<T extends Theme>(\n _styled?: ThemedStyledInterface<T>\n) {\n // `theme(o => [...])` の `o` の部分の型推論のためだけに使う意味のない変数\n // Tを型変数のまま渡してcreateThemeが呼ばれるまで型の具象化が行われないようにする\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any\n const _phantomBuilder = builder<T>({} as any, true)\n // ランタイムの `theme(o => [...])` のインターフェースを構築する\n return (\n // ユーザー定義\n spec: (\n o: typeof _phantomBuilder\n ) => Blank | Internal | (Blank | Internal)[]\n ): ThemeProp<T> =>\n ({ theme }) => {\n if (!isPresent(theme)) {\n // テーマが入っていない場合は復旧不可能なのでエラーにする\n throw noThemeProvider\n }\n // styled-componentsのランタイムから受け取ったthemeオブジェクトをbuilderに食わせて`o`をつくる\n // さらに、ユーザー定義にbuilderが構築した`o`を食わせる\n // (`o`を一時変数に入れてしまうと型Tの具象化が行われるので関数合成を優先する)\n const rawSpecDescriptor = spec(builder(theme))\n // ユーザー定義の配列を整形\n const specDescriptor = [\n ...(Array.isArray(rawSpecDescriptor)\n ? rawSpecDescriptor\n : [rawSpecDescriptor]),\n commonSpec(theme),\n ].filter(nonBlank)\n\n // 1パス目\n // 全ユーザー定義を舐めて相互に影響し合う定義をチェックし、その結果(コンテキスト)を取得\n const context = specDescriptor.reduce<Context>(\n (acc, v) => ({ ...acc, ...v[internalSym].context }),\n {}\n )\n // 2パス目\n // コンテキストを見ながら最適化されたCSSを構築\n return specDescriptor.map((v) => v[internalSym].operation(context))\n }\n}\n\nexport type ThemeProp<T> = ({\n theme,\n}: {\n theme: T | undefined\n}) => CSSObject | CSSObject[]\n"],"names":["unreachable","value","Error","arguments","length","JSON","stringify","isPresent","objectAssign","sources","Object","assign","objectKeys","obj","keys","noThemeProvider","defineThemeVariables","colorParams","effectParams","toCssObject","props","theme","colors","filterObject","effects","entries","effect","flatMapObject","colorKey","color","customPropertyToken","map","effectKey","applyEffect","factory","source","member","chain","defineProperties","fromEntries","key","get","enumerable","configurable","argumentedFactory","args","constFactory","def","modifiedFactory","modifiers","recursiveModifiedFactory","applied","notApplied","filter","v","includes","modifier","modifiedArgumentedFactory","_inferPhantom","w","variable","GlobalStyle","createGlobalStyle","themeMap","background","startsWith","css","undefined","defineColorVariableCSS","TokenInjector","varName","variableDefinition","toString","join","prop","LOCAL_STORAGE_KEY","DEFAULT_ROOT_ATTRIBUTE","keyStringRegExp","RegExp","assertKeyString","test","themeSetter","attr","document","documentElement","dataset","themeSelector","prefersColorScheme","useThemeSetter","setter","system","useTheme","useEffect","getThemeSync","localStorage","getItem","isDark","useMedia","media","local","setTheme","ready","useLocalStorage","defaultValue","setReady","useState","state","setState","defaultValueMemo","useMemo","fetch","window","addEventListener","handleStorage","removeEventListener","e","storageArea","raw","deserialize","set","removeItem","serialize","setItem","event","StorageEvent","bubbles","cancelable","url","location","href","dispatchEvent","parse","query","match","matcher","matchMedia","onChange","matches","makeSetThemeScriptCode","localStorageKey","defaultProps","rootAttribute","SetThemeScript","src","__html","spacingProperties","spacingDirections","fixedProperties","borderDirections","outlineType","builder","isPhantom","gradientColors","gradientColor","colorCss","createColorCss","gradientColorCss","createGradientColorCss","colorObject","bg","direction","font","typographyModifiers","typographyCss","createTypographyCss","typographyObject","_","size","preserveHalfLeading","monospace","bold","spacingCss","createSpacingCss","spacingObject","spacingProperty","fixedPxCss","createFixedPxCss","fixedColumnCss","createFixedColumnCss","fixedRelativeCss","createFixedRelativeCss","fixedObject","property","px","column","span","auto","full","elementEffectCss","createElementEffectCss","elementEffectObject","elementEffect","borderCss","createBorderCss","borderObject","border","variant","borderRadiusCss","createBorderRadiusCss","borderRadiusObject","borderRadius","radius","outlineCss","createOutlineColorCss","outlineObject","outline","targetProperty","target","isSupportedEffect","onEffectPseudo","notDisabledSelector","disabledSelector","_theme","internal","reduce","acc","colorTransition","backgroundColorTransition","TRANSITION_DURATION","toLinearGradient","gradient","context","optimized","useHalfLeadingCanceller","duration","dur","position","zIndex","overflow","overlayElement","transition","backgroundColor","warning","applyEffectToGradient","onFocus","weight","boxShadow","boxShadowTransition","content","display","width","height","top","left","cancelHalfLeadingPx","hasVerticalPadding","options","descriptor","typography","margin","halfLeading","fontSize","lineHeight","fontFamily","fontWeight","leadingCancel","marginTop","marginBottom","right","bottom","spacing","amount","columnSystem","grid","unit","gutter","opacity","Array","isArray","type","borderProperty","borderShorthand","directions","all","commonSpec","internalSym","Symbol","operation","nonBlank","createTheme","_styled","spec","rawSpecDescriptor","specDescriptor"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import warning from 'warning';
2
- import { filterObject, flatMapObject, customPropertyToken, applyEffect, notDisabledSelector, disabledSelector, px, halfLeading, dur, applyEffectToGradient, gradient } from '@charcoal-ui/utils';
2
+ import { filterObject, flatMapObject, customPropertyToken, applyEffect, dur, gradient, applyEffectToGradient, notDisabledSelector, halfLeading, px, disabledSelector } from '@charcoal-ui/utils';
3
3
  import { columnSystem } from '@charcoal-ui/foundation';
4
4
  import React, { useEffect, useState, useMemo } from 'react';
5
5
  import { createGlobalStyle, css } from 'styled-components';
6
6
 
7
7
  function _extends() {
8
- _extends = Object.assign || function (target) {
8
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
9
9
  for (var i = 1; i < arguments.length; i++) {
10
10
  var source = arguments[i];
11
11
 
@@ -18,7 +18,6 @@ function _extends() {
18
18
 
19
19
  return target;
20
20
  };
21
-
22
21
  return _extends.apply(this, arguments);
23
22
  }
24
23
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.module.js","sources":["../src/util.ts","../src/lib.ts","../src/TokenInjector.tsx","../src/helper.ts","../src/SetThemeScript.tsx","../src/index.ts"],"sourcesContent":["import {\n applyEffect,\n customPropertyToken,\n filterObject,\n flatMapObject,\n} from '@charcoal-ui/utils'\nimport { CharcoalAbstractTheme } from '@charcoal-ui/theme'\nimport { CSSObject } from 'styled-components'\n\n/**\n * Function used to assert a given code path is unreachable\n */\nexport function unreachable(): never\n/**\n * Function used to assert a given code path is unreachable.\n * Very useful for ensuring switches are exhaustive:\n *\n * ```ts\n * switch (a.type) {\n * case Types.A:\n * case Types.B:\n * break\n * default:\n * unreachable(a) // will cause a build error if there was\n * // a Types.C that was not checked\n * }\n * ```\n *\n * @param value Value to be asserted as unreachable\n */\n// NOTE: Uses separate overloads, _not_ `value?: never`, to not allow `undefined` to be passed\n// eslint-disable-next-line @typescript-eslint/unified-signatures\nexport function unreachable(value: never): never\nexport function unreachable(value?: never): never {\n throw new Error(\n arguments.length === 0\n ? 'unreachable'\n : `unreachable (${JSON.stringify(value)})`\n )\n}\n\n/**\n * Check whether a value is non-null and non-undefined\n *\n * @param value nullable\n */\nexport const isPresent = <T>(value: T): value is NonNullable<T> => value != null\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Head<U> = U extends [infer T, ...any[]] ? T : never\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Tail<U> = U extends [any, any, ...any[]]\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((...args: U) => any) extends (head: any, ...args: infer T) => any\n ? T\n : never\n : never\n// Buggy at ts@4.0.0-dev20200506\n// type Tail<U> = U extends [any, ...infer T] ? T : never\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype RecursiveObjectAssign<T, S extends any[]> = {\n 0: T & Head<S>\n 1: RecursiveObjectAssign<T & Head<S>, Tail<S>>\n}[Tail<S> extends never ? 0 : 1]\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ObjectAssign<T extends any[]> = RecursiveObjectAssign<\n Record<string, unknown>,\n T\n>\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function objectAssign<T extends any[]>(...sources: T) {\n return Object.assign({}, ...sources) as ObjectAssign<T>\n}\n\nexport function objectKeys<V extends object, K extends keyof V>(obj: V) {\n return Object.keys(obj) as K[]\n}\n\nexport interface ReadonlyArrayConstructor {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isArray(value: any): value is readonly any[]\n}\n\nexport function extractNonNullKeys<V, K extends keyof V>(obj: {\n [key in K]: V[key]\n}) {\n return Object.entries(obj)\n .filter(([_, v]) => v !== null)\n .map(([k]) => k) as { [key in K]: V[key] extends null ? never : key }[K][]\n}\n\nexport const noThemeProvider = new Error(\n '`theme` is invalid. `<ThemeProvider>` is not likely mounted.'\n)\n\ntype NonNullableCSSObject = Record<keyof CSSObject, string | number>\n\n/**\n * 子孫要素で使われるカラーテーマの CSS Variables を上書きする\n *\n * @params colorParams - 上書きしたい色の定義( `theme.color` の一部だけ書けば良い )\n * @params effectParams - effect の定義を上書きしたい場合は渡す(必須ではない)\n *\n * @example\n * ```tsx\n * const LocalTheme = styled.div`\n * ${defineThemeVariables({ text1: '#ff0000' })}\n * // `text1` is now defined as red\n * ${theme((o) => [o.font.text1])}\n * `\n * ```\n */\nexport function defineThemeVariables(\n colorParams: Partial<CharcoalAbstractTheme['color']>,\n effectParams?: Partial<CharcoalAbstractTheme['effect']>\n) {\n return function toCssObject(props: {\n theme?: Pick<CharcoalAbstractTheme, 'effect'>\n }): NonNullableCSSObject {\n if (!isPresent(props.theme)) {\n throw noThemeProvider\n }\n\n const colors = filterObject(colorParams, isPresent)\n\n // flatMapObject の中で毎回 Object.entries を呼ぶのは無駄なので外で呼ぶ\n const effects = Object.entries({\n ...props.theme.effect,\n ...effectParams,\n })\n\n return flatMapObject(colors, (colorKey, color) => [\n [customPropertyToken(colorKey), color],\n\n ...effects.map<[string, string]>(([effectKey, effect]) => [\n customPropertyToken(colorKey, [effectKey]),\n applyEffect(color, [effect]),\n ]),\n ])\n }\n}\n","import { Key } from '@charcoal-ui/theme'\nimport { unreachable } from './util'\n\n/**\n * 配列で指定したプロパティを動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param member オブジェクトに生やすプロパティ一覧\n * @param chain プロパティに格納される値を生成する関数\n *\n * @example\n *\n * const o = factory({}, ['red', 'blue'],\n * color => hex(color)\n * )\n *\n * console.log(o.red) //=> #ff0000\n */\nexport const factory = <TSource, TMember extends readonly Key[], TValue>(\n source: TSource,\n member: TMember,\n chain: (key: TMember[number]) => TValue\n) =>\n Object.defineProperties(\n source,\n Object.fromEntries(\n member.map((key) => [\n key,\n { get: () => chain(key), enumerable: true, configurable: true },\n ])\n )\n ) as TSource & { readonly [key in TMember[number]]: TValue }\n\n/**\n * 配列で指定した名前のメソッドを動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param member オブジェクトに生やすメソッド名一覧\n * @param chain メソッドの戻り値になる値を生成する関数\n *\n * @example\n *\n * const o = argumentedFactory({}, ['red', 'blue'],\n * (color, alpha: number) => hex(color, alpha)\n * )\n *\n * console.log(o.red(0.5)) //=> #ff000077\n */\nexport const argumentedFactory = <\n TSource,\n TMember extends readonly string[],\n TValue,\n TArguments extends unknown[]\n>(\n source: TSource,\n member: TMember,\n chain: (key: TMember[number], ...args: TArguments) => TValue\n) =>\n Object.defineProperties(\n source,\n Object.fromEntries(\n member.map((key) => [\n key,\n {\n value: (...args: TArguments) => chain(key, ...args),\n enumerable: true,\n configurable: true,\n },\n ])\n )\n ) as TSource & {\n readonly [key in TMember[number]]: (...args: TArguments) => TValue\n }\n\n/**\n * オブジェクトで指定したプロパティ名と値を動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param def オブジェクトに生やす定義(プロパティ名と値)\n *\n * @example\n *\n * const o = constFactory({}, {\n * red: '#f00',\n * blue: '#00f',\n * })\n *\n * console.log(o.red) //=> #f00\n */\nexport const constFactory = <TSource, TDef extends { [key: string]: unknown }>(\n source: TSource,\n def: TDef\n) =>\n factory(source, Object.keys(def), (key) => def[key]) as TSource &\n Readonly<TDef>\n\n/**\n * 配列で指定したモディファイア(プロパティ)をチェーン可能な再帰オブジェクトを動的に生やす\n *\n * @param modifiers オブジェクトに生やすモディファイヤ一覧\n * @param source 指定されたモディファイヤの一覧から値を生成する関数\n *\n * @example\n *\n * const o = modifiedArgumentedFactory(['red', 'blue'],\n * modifiers => modifiers.map(color => hex(color)).join(',')\n * )\n *\n * console.log(o.red.blue) => #f00,#00f\n */\nexport const modifiedFactory = <TSource, T extends Key>(\n modifiers: readonly T[],\n source: (applied: readonly T[]) => TSource\n) =>\n (function recursiveModifiedFactory(\n applied: readonly T[]\n ): Modified<TSource, T> {\n const notApplied = modifiers.filter((v) => !applied.includes(v))\n return factory(source(applied), notApplied, (modifier) =>\n notApplied.length === 0\n ? unreachable()\n : recursiveModifiedFactory([...applied, modifier])\n )\n })([])\n\nexport type Modified<TSource, TModifiers extends Key> = TSource & {\n readonly [key in TModifiers]: Modified<TSource, Exclude<TModifiers, key>>\n}\n\n/**\n * 配列で指定したモディファイア(メソッド)をチェーン可能な再帰オブジェクトを動的に生やす\n *\n * @param modifiers オブジェクトに生やすモディファイヤ一覧\n * @param source 指定されたモディファイヤの一覧から値を生成する関数\n * @param _inferPhantom 関数形式のモディファイヤの引数型を推論するためのメタタイプ(引数の個数に合わせてタプルで指定する)\n *\n * @example\n *\n * const o = modifiedArgumentedFactory(['red', 'blue'],\n * modifiers => modifiers.map(([color, alpha]) => hex(color, alpha)).join(',')\n * , {} as [number])\n *\n * console.log(o.red(0.5).blue(1)) => #ff000077,#0000ffff\n */\nexport const modifiedArgumentedFactory = <\n TSource,\n T extends string,\n TArguments extends unknown[]\n>(\n modifiers: readonly T[],\n source: (applied: readonly [T, ...TArguments][]) => TSource,\n ..._inferPhantom: TArguments\n) =>\n (function recursiveModifiedFactory(\n applied: readonly [T, ...TArguments][]\n ): ModifiedArgumented<TSource, T, TArguments> {\n const notApplied = modifiers.filter(\n (v) => !applied.map(([w]) => w).includes(v)\n )\n return argumentedFactory(\n source(applied),\n notApplied,\n (modifier, ...args: TArguments) =>\n notApplied.length === 0\n ? unreachable()\n : recursiveModifiedFactory([...applied, [modifier, ...args]])\n )\n })([])\n\nexport type ModifiedArgumented<\n TSource,\n TModifiers extends string,\n TArguments extends unknown[]\n> = TSource & {\n readonly [key in TModifiers]: (\n ...args: TArguments\n ) => ModifiedArgumented<TSource, Exclude<TModifiers, key>, TArguments>\n}\n\nexport const variable = (value: string) => `var(${value})`\n","import React from 'react'\nimport { createGlobalStyle, css } from 'styled-components'\nimport { CharcoalAbstractTheme } from '@charcoal-ui/theme'\nimport { defineThemeVariables } from './util'\n\nconst GlobalStyle = createGlobalStyle`\n ${<T extends Theme>({\n themeMap,\n background,\n }: {\n themeMap: ThemeMap<T>\n background?: keyof ThemeMap<T>[string]['color']\n }) =>\n Object.entries(themeMap).map(([key, theme]) =>\n key.startsWith('@media')\n ? css`\n ${key} {\n :root {\n ${background !== undefined &&\n css`\n background-color: ${theme.color[background]};\n `}\n ${defineColorVariableCSS(theme)}\n }\n }\n `\n : css`\n /* stylelint-disable-next-line no-duplicate-selectors */\n ${key} {\n ${background !== undefined &&\n css`\n background-color: ${theme.color[background]};\n `}\n ${defineColorVariableCSS(theme)}\n }\n `\n )}\n`\n\nexport interface ThemeMap<T extends Theme> {\n ':root': T\n [mediaQuery: `@media (${string})`]: T\n [selector: string]: T\n}\n\ntype Theme = Pick<CharcoalAbstractTheme, 'color' | 'effect'>\n\nexport default function TokenInjector<T extends Theme>({\n theme: themeMap,\n background,\n}: {\n theme: ThemeMap<T>\n background?: keyof ThemeMap<T>[string]['color']\n}) {\n return <GlobalStyle themeMap={themeMap} background={background} />\n}\n\nconst defineColorVariableCSS = (theme: Theme) =>\n Object.entries(defineThemeVariables(theme.color)({ theme }))\n .map(([varName, value]) => variableDefinition(varName, value.toString()))\n .join(';')\n\nconst variableDefinition = (prop: string, value: string) => `${prop}: ${value}`\n","import { useEffect, useMemo, useState } from 'react'\n\nexport const LOCAL_STORAGE_KEY = 'charcoal-theme'\nexport const DEFAULT_ROOT_ATTRIBUTE = 'theme'\n\nconst keyStringRegExp = new RegExp(/^(\\w|-)+$/)\n\n/**\n * 文字列が英数字_-のみで構成されているか検証する。不正な文字列ならエラーを投げる\n * @param key 検証するキー\n */\nexport function assertKeyString(key: string) {\n if (!keyStringRegExp.test(key)) {\n throw new Error(`Unexpected key :${key}, expect: /^(\\\\w|-)+$/`)\n }\n}\n\n/**\n * `<html data-theme=\"dark\">` のような設定を行うデフォルトのセッター\n */\nexport const themeSetter =\n (attr: string = DEFAULT_ROOT_ATTRIBUTE) =>\n (theme: string | undefined) => {\n assertKeyString(attr)\n if (theme !== undefined) {\n document.documentElement.dataset[attr] = theme\n } else {\n delete document.documentElement.dataset[attr]\n }\n }\n\n/**\n * `<html data-theme=\"dark\">` にマッチするセレクタを生成する\n */\nexport function themeSelector<\n T extends string,\n S extends string = typeof DEFAULT_ROOT_ATTRIBUTE\n>(theme: T, attr?: S) {\n return `:root[data-${attr ?? DEFAULT_ROOT_ATTRIBUTE}='${theme}']` as const\n}\n\n/**\n * prefers-color-scheme を利用する media クエリを生成する\n */\nexport function prefersColorScheme<T extends 'light' | 'dark'>(theme: T) {\n return `@media (prefers-color-scheme: ${theme})` as const\n}\n\n/**\n * LocalStorageからテーマの情報を取得して、変化時にテーマをセットするhooks\n */\nexport function useThemeSetter({\n key = LOCAL_STORAGE_KEY,\n setter = themeSetter(),\n}: { key?: string; setter?: (theme: string | undefined) => void } = {}) {\n const [theme, , system] = useTheme(key)\n\n useEffect(() => {\n if (theme === undefined) {\n return\n }\n // prefers-color-scheme から値を取っている場合にはcssのみで処理したいのでアンセットする\n setter(system ? undefined : theme)\n }, [setter, system, theme])\n}\n\n/**\n * 同期的にLocalStorageからテーマを取得するヘルパ\n */\nexport function getThemeSync(key: string = LOCAL_STORAGE_KEY) {\n const theme = localStorage.getItem(key)\n return theme\n}\n\n/**\n * LocalStorage, prefers-color-scheme からテーマの情報を取得して、現在のテーマを返すhooks\n *\n * `dark` `light` という名前だけは特別扱いされていて、prefers-color-schemeにマッチした場合に返ります\n */\nexport const useTheme = (key: string = LOCAL_STORAGE_KEY) => {\n assertKeyString(key)\n const isDark = useMedia('(prefers-color-scheme: dark)')\n const media = isDark !== undefined ? (isDark ? 'dark' : 'light') : undefined\n const [local, setTheme, ready] = useLocalStorage<string>(key)\n const theme = !ready || media === undefined ? undefined : local ?? media\n const system = local === undefined\n return [theme, setTheme, system] as const\n}\n\nexport function useLocalStorage<T>(key: string, defaultValue?: () => T) {\n const [ready, setReady] = useState(false)\n const [state, setState] = useState<T>()\n const defaultValueMemo = useMemo(() => defaultValue?.(), [defaultValue])\n\n useEffect(() => {\n fetch()\n window.addEventListener('storage', handleStorage)\n return () => {\n window.removeEventListener('storage', handleStorage)\n }\n })\n\n const handleStorage = (e: StorageEvent) => {\n if (e.storageArea !== localStorage) {\n return\n }\n if (e.key !== key) {\n return\n }\n fetch()\n }\n\n const fetch = () => {\n const raw = localStorage.getItem(key)\n setState((raw !== null ? deserialize(raw) : null) ?? defaultValueMemo)\n setReady(true)\n }\n\n const set = (value: T | undefined) => {\n if (value === undefined) {\n // undefinedがセットされる場合にはkeyごと削除\n localStorage.removeItem(key)\n } else {\n const raw = serialize(value)\n localStorage.setItem(key, raw)\n }\n\n // 同一ウィンドウではstorageイベントが発火しないので、手動で発火させる\n const event = new StorageEvent('storage', {\n bubbles: true,\n cancelable: false,\n key,\n url: location.href,\n storageArea: localStorage,\n })\n dispatchEvent(event)\n }\n\n return [state ?? defaultValueMemo, set, ready] as const\n}\n\nfunction deserialize<T>(raw: string): T {\n try {\n return JSON.parse(raw) as T\n } catch {\n // syntax error はすべて文字列として扱う\n return raw as unknown as T\n }\n}\n\nfunction serialize(value: unknown): string {\n if (typeof value === 'string') {\n return value\n } else {\n return JSON.stringify(value)\n }\n}\n\nexport function useMedia(query: string) {\n const [match, setState] = useState<boolean>()\n\n useEffect(() => {\n const matcher = window.matchMedia(query)\n\n const onChange = () => {\n setState(matcher.matches)\n }\n\n matcher.addEventListener('change', onChange)\n\n setState(matcher.matches)\n\n return () => {\n matcher.removeEventListener('change', onChange)\n }\n }, [query])\n\n return match\n}\n","import React from 'react'\nimport {\n assertKeyString,\n DEFAULT_ROOT_ATTRIBUTE,\n LOCAL_STORAGE_KEY,\n} from './helper'\n\ninterface Props {\n localStorageKey: string\n rootAttribute: string\n}\n\n/**\n * 同期的にテーマをローカルストレージから取得してhtmlの属性に設定するコードを取得する\n * @param props localStorageのキー、htmlのdataになる属性のキーを含むオブジェクト\n * @returns ソースコードの文字列\n */\nexport function makeSetThemeScriptCode({\n localStorageKey = defaultProps.localStorageKey,\n rootAttribute = defaultProps.rootAttribute,\n}: Partial<Props> = defaultProps) {\n assertKeyString(localStorageKey)\n assertKeyString(rootAttribute)\n return `'use strict';\n(function () {\n var localStorageKey = '${localStorageKey}'\n var rootAttribute = '${rootAttribute}'\n var currentTheme = localStorage.getItem(localStorageKey);\n if (currentTheme) {\n document.documentElement.dataset[rootAttribute] = currentTheme;\n }\n})();\n`\n}\n\n/**\n * 同期的にテーマをローカルストレージから取得してhtmlの属性に設定するスクリプトタグ\n * @param props localStorageのキー、htmlのdataになる属性のキーを含むオブジェクト\n * @returns\n */\nexport function SetThemeScript(props: Props) {\n const src = makeSetThemeScriptCode(props)\n return (\n <script\n dangerouslySetInnerHTML={{\n __html: src,\n }}\n />\n )\n}\n\nconst defaultProps: Props = {\n localStorageKey: LOCAL_STORAGE_KEY,\n rootAttribute: DEFAULT_ROOT_ATTRIBUTE,\n}\n\nSetThemeScript.defaultProps = defaultProps\n","import { CSSObject, ThemedStyledInterface } from 'styled-components'\nimport warning from 'warning'\nimport {\n factory,\n modifiedFactory,\n constFactory,\n modifiedArgumentedFactory,\n variable,\n} from './lib'\nimport {\n EffectType,\n CharcoalAbstractTheme as Theme,\n Key,\n} from '@charcoal-ui/theme'\nimport {\n objectAssign,\n unreachable,\n ReadonlyArrayConstructor,\n objectKeys,\n isPresent,\n noThemeProvider,\n} from './util'\nimport { columnSystem } from '@charcoal-ui/foundation'\nimport {\n halfLeading,\n applyEffect,\n applyEffectToGradient,\n dur,\n gradient,\n GradientDirection,\n notDisabledSelector,\n disabledSelector,\n px,\n customPropertyToken,\n} from '@charcoal-ui/utils'\nexport { type Modified, type ModifiedArgumented } from './lib'\nexport { default as TokenInjector } from './TokenInjector'\nexport {\n getThemeSync,\n themeSetter,\n themeSelector,\n prefersColorScheme,\n useTheme,\n useThemeSetter,\n useLocalStorage,\n useMedia,\n} from './helper'\nexport { defineThemeVariables } from './util'\nexport * from './SetThemeScript'\n\nconst colorProperties = ['bg', 'font'] as const\ntype ColorProperty = typeof colorProperties[number]\n\nconst spacingProperties = ['margin', 'padding'] as const\nconst spacingDirections = [\n 'top',\n 'right',\n 'bottom',\n 'left',\n 'vertical',\n 'horizontal',\n 'all',\n] as const\ntype SpacingProperty = typeof spacingProperties[number]\ntype SpacingDirection = typeof spacingDirections[number]\n\nconst fixedProperties = ['width', 'height'] as const\ntype FixedProperty = typeof fixedProperties[number]\n\nconst borderDirections = ['top', 'right', 'bottom', 'left'] as const\ntype BorderDirection = typeof borderDirections[number]\n\nconst outlineType = ['focus'] as const\ntype OutlineType = typeof outlineType[number]\n\n/**\n * `theme(o => [...])` の `o` の部分を構築する\n *\n * @param theme テーマオブジェクト\n * @param isPhantom 型推論のためだけに使う場合にランタイムコストをゼロにするフラグ\n */\nfunction builder<T extends Theme>(\n theme: {\n // factoryの第二引数に入れ込むものだけ明示的に型変数を展開しておくことで型の具象化を遅延する\n color: T['color']\n gradientColor: T['gradientColor']\n border: T['border']\n outline: T['outline']\n } & Omit<T, 'color' | 'gradientColor' | 'border' | 'outline'>,\n isPhantom = false\n) {\n if (isPhantom) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {} as never\n }\n const colors = objectKeys(theme.color)\n const effects = objectKeys(theme.effect)\n\n // 色\n const gradientColors = objectKeys(theme.gradientColor)\n const colorCss = createColorCss(theme)\n const gradientColorCss = createGradientColorCss(theme)\n const colorObject = constFactory(\n {},\n {\n bg: objectAssign(\n factory({}, colors, (color) =>\n modifiedFactory(effects, (modifiers) =>\n colorCss('bg', color, modifiers)\n )\n ),\n factory(\n {},\n gradientColors,\n (color) => (direction: GradientDirection) =>\n modifiedFactory(effects, (modifiers) =>\n gradientColorCss(color, modifiers, direction)\n )\n )\n ),\n font: factory({}, colors, (color) =>\n modifiedFactory(effects, (modifiers) =>\n colorCss('font', color, modifiers)\n )\n ),\n }\n )\n\n // タイポグラフィ\n const typographyModifiers = [\n // TODO\n 'monospace',\n 'bold',\n 'preserveHalfLeading',\n ] as const\n const typographyCss = createTypographyCss(theme)\n const typographyObject = factory(\n {},\n ['typography'] as const,\n (_) => (size: keyof T['typography']['size']) =>\n modifiedFactory(typographyModifiers, (modifiers) =>\n typographyCss(size, {\n preserveHalfLeading: modifiers.includes('preserveHalfLeading'),\n monospace: modifiers.includes('monospace'),\n bold: modifiers.includes('bold'),\n })\n )\n )\n\n // スペーシング\n const spacingCss = createSpacingCss(theme)\n const spacingObject = factory({}, spacingProperties, (spacingProperty) =>\n modifiedArgumentedFactory(\n spacingDirections,\n (modifiers) => spacingCss(spacingProperty, modifiers),\n {} as keyof T['spacing'] | 'auto' // 推論のためのメタタイプ\n )\n )\n\n // 大きさ\n const fixedPxCss = createFixedPxCss(theme)\n const fixedColumnCss = createFixedColumnCss(theme)\n const fixedRelativeCss = createFixedRelativeCss(theme)\n const fixedObject = factory({}, fixedProperties, (property) =>\n constFactory(\n {},\n {\n px: (size: keyof T['spacing'] | 'auto') => fixedPxCss(property, size),\n column: (span: number) => fixedColumnCss(property, span),\n auto: fixedRelativeCss(property, 'auto'),\n full: fixedRelativeCss(property, '100%'),\n }\n )\n )\n\n // 要素へのエフェクト (etc: 透過)\n const elementEffectCss = createElementEffectCss(theme)\n const elementEffectObject = modifiedFactory(\n objectKeys(theme.elementEffect),\n (modifiers) => elementEffectCss(modifiers)\n )\n\n // ボーダー\n const borderCss = createBorderCss(theme)\n const borderObject = constFactory(\n {},\n {\n border: factory({}, objectKeys(theme.border), (variant) =>\n modifiedFactory(borderDirections, (modifiers) =>\n borderCss(variant, modifiers)\n )\n ),\n }\n )\n\n // 角丸\n const borderRadiusCss = createBorderRadiusCss(theme)\n const borderRadiusObject = constFactory(\n {},\n {\n borderRadius: (radius: keyof T['borderRadius']) =>\n borderRadiusCss(radius),\n }\n )\n\n // アウトライン\n const outlineCss = createOutlineColorCss(theme)\n const outlineObject = constFactory(\n {},\n {\n outline: factory({}, objectKeys(theme.outline), (variant) =>\n modifiedFactory(outlineType, (modifiers) =>\n outlineCss(variant, modifiers)\n )\n ),\n }\n )\n\n return objectAssign(\n colorObject,\n typographyObject,\n spacingObject,\n fixedObject,\n elementEffectObject,\n borderObject,\n borderRadiusObject,\n outlineObject\n )\n}\n\nfunction targetProperty(target: ColorProperty) {\n return target === 'bg' ? 'background-color' : 'color'\n}\n\nfunction isSupportedEffect(effect: Key): effect is EffectType {\n return ['hover', 'press', 'disabled'].includes(effect as string)\n}\n\nfunction onEffectPseudo(effect: EffectType, css: CSSObject) {\n return effect === 'hover'\n ? { '&:hover': { [notDisabledSelector]: css } }\n : effect === 'press'\n ? { '&:active': { [notDisabledSelector]: css } }\n : // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n effect === 'disabled'\n ? { [disabledSelector]: css }\n : unreachable(effect)\n}\n\nconst createColorCss =\n <T extends Theme>(_theme: T) =>\n (\n target: ColorProperty,\n color: keyof T['color'],\n effects: readonly (keyof T['effect'])[] = []\n ): Internal =>\n internal(\n () => ({\n [targetProperty(target)]: variable(\n customPropertyToken(color.toString())\n ),\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n [targetProperty(target)]: variable(\n customPropertyToken(color.toString(), [effect])\n ),\n }),\n }),\n {}\n ),\n }),\n effects.length > 0\n ? target === 'font'\n ? {\n colorTransition: true,\n }\n : {\n backgroundColorTransition: true,\n }\n : {}\n )\n\n// TODO: deprecate\nconst TRANSITION_DURATION = 0.2\n\nconst createGradientColorCss =\n <T extends Theme>(theme: T) =>\n (\n color: keyof T['gradientColor'],\n effects: readonly (keyof T['effect'])[] = [],\n direction: GradientDirection\n ): Internal => {\n const toLinearGradient = gradient(direction)\n return internal((context) => {\n const optimized = !useHalfLeadingCanceller(context)\n const duration = dur(TRANSITION_DURATION)\n if (optimized && effects.length > 0) {\n return {\n position: 'relative',\n zIndex: 0,\n overflow: 'hidden',\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n '&::before': {\n zIndex: -1,\n ...overlayElement,\n transition: `${duration} background-color`,\n },\n '&::after': {\n zIndex: -2,\n ...overlayElement,\n ...toLinearGradient(theme.gradientColor[color]),\n },\n ...onEffectPseudo(effect, {\n '&::before': {\n backgroundColor: applyEffect(\n null,\n theme.effect[effect] ?? []\n ),\n },\n }),\n }),\n {}\n ),\n }\n } else {\n warning(\n effects.length === 0,\n // eslint-disable-next-line max-len\n `'Transition' will not be applied. You can get around this by specifying 'preserveHalfLeading' or both 'padding' and 'typograpy'.`\n )\n return {\n ...toLinearGradient(theme.gradientColor[color]),\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n ...toLinearGradient(\n applyEffectToGradient(theme.effect[effect] ?? [])(\n theme.gradientColor[color]\n )\n ),\n }),\n }),\n {}\n ),\n }\n }\n })\n }\n\n/**\n * @see https://developer.mozilla.org/ja/docs/Web/CSS/:focus-visible#selectively_showing_the_focus_indicator\n */\nconst onFocus = (css: CSSObject) => ({\n [notDisabledSelector]: {\n '&:focus, &:active': {\n outline: 'none',\n ...css,\n },\n\n '&:focus:not(:focus-visible), &:active:not(:focus-visible)': {\n outline: 'none',\n },\n\n '&:focus-visible': {\n outline: 'none',\n ...css,\n },\n },\n})\n\nconst outlineCss = (weight: number, color: string) => ({\n boxShadow: `0 0 0 ${px(weight)} ${color}`,\n})\n\nconst createOutlineColorCss =\n <T extends Theme>(theme: T) =>\n (\n variant: keyof T['outline'],\n modifiers: readonly OutlineType[]\n ): Internal => {\n const weight = theme.outline[variant].weight\n const color = theme.outline[variant].color\n return internal(\n () =>\n modifiers.includes('focus')\n ? onFocus(outlineCss(weight, color))\n : { '&&': { [notDisabledSelector]: outlineCss(weight, color) } },\n {\n boxShadowTransition: true,\n }\n )\n }\n\nconst overlayElement: CSSObject = {\n content: \"''\",\n display: 'block',\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n}\n\n// half-leadingをキャンセルするとき && 垂直方向のpaddingが無い時\n// -> before/afterを入れる\nconst useHalfLeadingCanceller = ({\n cancelHalfLeadingPx,\n hasVerticalPadding = false,\n}: Context) => cancelHalfLeadingPx !== undefined && !hasVerticalPadding\n\nconst createTypographyCss =\n <T extends Theme>(theme: T) =>\n (\n size: keyof T['typography']['size'],\n options: {\n preserveHalfLeading?: boolean\n monospace?: boolean\n bold?: boolean\n } = {}\n ): Internal => {\n const {\n preserveHalfLeading = false,\n monospace = false,\n bold = false,\n } = options\n const descriptor = theme.typography.size[size]\n const margin = -halfLeading(descriptor)\n\n return internal(\n (context) => ({\n fontSize: px(descriptor.fontSize),\n lineHeight: px(descriptor.lineHeight),\n ...(monospace && {\n fontFamily: 'monospace',\n }),\n ...(bold && {\n fontWeight: 'bold',\n }),\n ...(useHalfLeadingCanceller(context) && {\n // prevent margin collapsing\n display: 'flow-root',\n // cancel half-leading with negative margin\n '&::before': {\n ...leadingCancel,\n marginTop: px(margin),\n },\n '&::after': {\n ...leadingCancel,\n marginBottom: px(margin),\n },\n }),\n }),\n !preserveHalfLeading\n ? {\n cancelHalfLeadingPx: margin,\n }\n : {}\n )\n }\n\nconst leadingCancel: CSSObject = {\n display: 'block',\n width: 0,\n height: 0,\n content: `''`,\n}\n\nfunction spacingProperty(\n property: SpacingProperty,\n direction: 'top' | 'right' | 'bottom' | 'left'\n) {\n return `${property}-${direction}`\n}\n\nconst createSpacingCss =\n <T extends Theme>(theme: { spacing: T['spacing'] }) =>\n (\n property: SpacingProperty,\n modifiers: readonly [SpacingDirection, keyof T['spacing'] | 'auto'][]\n ): Internal => {\n const { top, right, bottom, left } = modifiers.reduce(\n (acc, [direction, size]) => {\n if (direction === 'all') {\n acc.top = size\n acc.right = size\n acc.bottom = size\n acc.left = size\n } else if (direction === 'vertical') {\n acc.top = size\n acc.bottom = size\n } else if (direction === 'horizontal') {\n acc.right = size\n acc.left = size\n } else {\n acc[direction] = size\n }\n return acc\n },\n {} as Partial<\n Record<'top' | 'right' | 'bottom' | 'left', keyof T['spacing'] | 'auto'>\n >\n )\n\n const hasVerticalPadding =\n property === 'padding' &&\n top !== undefined &&\n bottom !== undefined &&\n top !== 'auto' &&\n bottom !== 'auto'\n\n return internal(\n ({ cancelHalfLeadingPx = 0 }) => ({\n ...(top !== undefined && {\n [spacingProperty(property, 'top')]:\n top === 'auto'\n ? 'auto'\n : px(\n theme.spacing[top] +\n (hasVerticalPadding ? cancelHalfLeadingPx : 0)\n ),\n }),\n ...(bottom !== undefined && {\n [spacingProperty(property, 'bottom')]:\n bottom === 'auto'\n ? 'auto'\n : px(\n theme.spacing[bottom] +\n (hasVerticalPadding ? cancelHalfLeadingPx : 0)\n ),\n }),\n ...(right !== undefined && {\n [spacingProperty(property, 'right')]:\n right === 'auto' ? 'auto' : px(theme.spacing[right]),\n }),\n ...(left !== undefined && {\n [spacingProperty(property, 'left')]:\n left === 'auto' ? 'auto' : px(theme.spacing[left]),\n }),\n }),\n hasVerticalPadding ? { hasVerticalPadding: true } : {}\n )\n }\n\nconst createFixedPxCss =\n <T extends Theme>(theme: T) =>\n (property: FixedProperty, size: keyof T['spacing'] | 'auto'): Internal =>\n internal(() => ({\n [property]: size === 'auto' ? 'auto' : px(theme.spacing[size]),\n }))\n\nconst createFixedRelativeCss =\n <T extends Theme>(_theme: T) =>\n (property: FixedProperty, amount: '100%' | 'auto'): Internal =>\n internal(() => ({\n [property]: amount,\n }))\n\nconst createFixedColumnCss =\n <T extends Theme>(theme: T) =>\n (property: FixedProperty, span: number): Internal =>\n internal(() => ({\n [property]: px(\n columnSystem(span, theme.grid.unit.column, theme.grid.unit.gutter)\n ),\n }))\n\nconst createElementEffectCss =\n <T extends Theme, TElementEffect extends T['elementEffect']>(theme: {\n elementEffect: TElementEffect\n }) =>\n (effects: readonly (keyof TElementEffect)[] = []): Internal =>\n internal(() =>\n effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n opacity:\n !(Array as ReadonlyArrayConstructor).isArray(\n theme.elementEffect[effect]\n ) && theme.elementEffect[effect]?.type === 'opacity'\n ? theme.elementEffect[effect]?.opacity\n : unreachable(),\n }),\n }),\n {}\n )\n )\n\nfunction borderProperty(direction: BorderDirection) {\n return `border-${direction}`\n}\n\nfunction borderShorthand(color: string) {\n return `solid 1px ${color}`\n}\n\nconst createBorderCss =\n <T extends Theme>(theme: T) =>\n (\n variant: keyof T['border'],\n directions: readonly BorderDirection[]\n ): Internal => {\n const all = directions.length === 0\n const value = borderShorthand(theme.border[variant].color)\n return internal(() => ({\n ...(all\n ? { border: value }\n : directions.reduce<CSSObject>(\n (acc, direction) => ({\n ...acc,\n [borderProperty(direction)]: value,\n }),\n {}\n )),\n }))\n }\n\nconst createBorderRadiusCss =\n <T extends Theme>(theme: T) =>\n (size: keyof T['borderRadius']): Internal =>\n internal(() => ({\n borderRadius: px(theme.borderRadius[size]),\n }))\n\ninterface Context {\n cancelHalfLeadingPx?: number\n hasVerticalPadding?: boolean\n boxShadowTransition?: boolean\n colorTransition?: boolean\n backgroundColorTransition?: boolean\n}\n\nconst commonSpec = (_theme: unknown): Internal => {\n const duration = dur(TRANSITION_DURATION)\n const transition = (property: string[]) => ({\n transition: property.map((v) => `${duration} ${v}`).join(', '),\n })\n return internal(\n ({\n colorTransition = false,\n backgroundColorTransition = false,\n boxShadowTransition = false,\n }) =>\n transition(\n [\n colorTransition ? 'color' : null,\n backgroundColorTransition ? 'background-color' : null,\n boxShadowTransition ? 'box-shadow' : null,\n ].filter(isPresent)\n )\n )\n}\n\nconst internalSym: unique symbol = Symbol('internal')\n\nfunction internal(\n operation: (context: Context) => CSSObject,\n context: Context = {}\n): Internal {\n return {\n [internalSym]: {\n operation,\n context,\n },\n }\n}\n\nexport interface Internal {\n [internalSym]: {\n operation: (context: Context) => CSSObject\n context: Context\n }\n}\n\ntype Blank = null | undefined | false\n\nconst nonBlank = <T>(value: T): value is T extends Blank ? never : T =>\n isPresent(value) && (value as unknown) !== false\n\n/**\n * `theme(o => [...])` の `theme` ユーティリティを構築する\n *\n * @param _styled styled-componnets の `styled` そのもの (型推論のために用いられる)\n *\n * @example\n *\n * import styled from 'styled-components'\n * const theme = createTheme(styled)\n *\n * @example\n *\n * const theme = createTheme<DefaultTheme>()\n */\nexport function createTheme<T extends Theme>(\n _styled?: ThemedStyledInterface<T>\n) {\n // `theme(o => [...])` の `o` の部分の型推論のためだけに使う意味のない変数\n // Tを型変数のまま渡してcreateThemeが呼ばれるまで型の具象化が行われないようにする\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any\n const _phantomBuilder = builder<T>({} as any, true)\n // ランタイムの `theme(o => [...])` のインターフェースを構築する\n return (\n // ユーザー定義\n spec: (\n o: typeof _phantomBuilder\n ) => Blank | Internal | (Blank | Internal)[]\n ): ThemeProp<T> =>\n ({ theme }) => {\n if (!isPresent(theme)) {\n // テーマが入っていない場合は復旧不可能なのでエラーにする\n throw noThemeProvider\n }\n // styled-componentsのランタイムから受け取ったthemeオブジェクトをbuilderに食わせて`o`をつくる\n // さらに、ユーザー定義にbuilderが構築した`o`を食わせる\n // (`o`を一時変数に入れてしまうと型Tの具象化が行われるので関数合成を優先する)\n const rawSpecDescriptor = spec(builder(theme))\n // ユーザー定義の配列を整形\n const specDescriptor = [\n ...(Array.isArray(rawSpecDescriptor)\n ? rawSpecDescriptor\n : [rawSpecDescriptor]),\n commonSpec(theme),\n ].filter(nonBlank)\n\n // 1パス目\n // 全ユーザー定義を舐めて相互に影響し合う定義をチェックし、その結果(コンテキスト)を取得\n const context = specDescriptor.reduce<Context>(\n (acc, v) => ({ ...acc, ...v[internalSym].context }),\n {}\n )\n // 2パス目\n // コンテキストを見ながら最適化されたCSSを構築\n return specDescriptor.map((v) => v[internalSym].operation(context))\n }\n}\n\nexport type ThemeProp<T> = ({\n theme,\n}: {\n theme: T | undefined\n}) => CSSObject | CSSObject[]\n"],"names":["unreachable","value","Error","arguments","length","JSON","stringify","isPresent","objectAssign","Object","assign","objectKeys","obj","keys","noThemeProvider","defineThemeVariables","colorParams","effectParams","toCssObject","props","theme","colors","filterObject","effects","entries","effect","flatMapObject","colorKey","color","customPropertyToken","map","effectKey","applyEffect","factory","source","member","chain","defineProperties","fromEntries","key","get","enumerable","configurable","argumentedFactory","constFactory","def","modifiedFactory","modifiers","recursiveModifiedFactory","applied","notApplied","filter","v","includes","modifier","modifiedArgumentedFactory","w","variable","GlobalStyle","createGlobalStyle","themeMap","background","startsWith","css","undefined","defineColorVariableCSS","TokenInjector","varName","variableDefinition","toString","join","prop","LOCAL_STORAGE_KEY","DEFAULT_ROOT_ATTRIBUTE","keyStringRegExp","RegExp","assertKeyString","test","themeSetter","attr","document","documentElement","dataset","themeSelector","prefersColorScheme","useThemeSetter","setter","useTheme","system","useEffect","getThemeSync","localStorage","getItem","isDark","useMedia","media","useLocalStorage","local","setTheme","ready","defaultValue","useState","setReady","state","setState","defaultValueMemo","useMemo","fetch","window","addEventListener","handleStorage","removeEventListener","e","storageArea","raw","deserialize","set","removeItem","serialize","setItem","event","StorageEvent","bubbles","cancelable","url","location","href","dispatchEvent","parse","query","match","matcher","matchMedia","onChange","matches","makeSetThemeScriptCode","defaultProps","localStorageKey","rootAttribute","SetThemeScript","src","__html","spacingProperties","spacingDirections","fixedProperties","borderDirections","outlineType","builder","isPhantom","gradientColors","gradientColor","colorCss","createColorCss","gradientColorCss","createGradientColorCss","colorObject","bg","direction","font","typographyModifiers","typographyCss","createTypographyCss","typographyObject","_","size","preserveHalfLeading","monospace","bold","spacingCss","createSpacingCss","spacingObject","spacingProperty","fixedPxCss","createFixedPxCss","fixedColumnCss","createFixedColumnCss","fixedRelativeCss","createFixedRelativeCss","fixedObject","property","px","column","span","auto","full","elementEffectCss","createElementEffectCss","elementEffectObject","elementEffect","borderCss","createBorderCss","borderObject","border","variant","borderRadiusCss","createBorderRadiusCss","borderRadiusObject","borderRadius","radius","outlineCss","createOutlineColorCss","outlineObject","outline","targetProperty","target","isSupportedEffect","onEffectPseudo","notDisabledSelector","disabledSelector","_theme","internal","reduce","acc","colorTransition","backgroundColorTransition","TRANSITION_DURATION","toLinearGradient","gradient","context","optimized","useHalfLeadingCanceller","duration","dur","position","zIndex","overflow","overlayElement","transition","backgroundColor","warning","applyEffectToGradient","onFocus","weight","boxShadow","boxShadowTransition","content","display","width","height","top","left","cancelHalfLeadingPx","hasVerticalPadding","options","descriptor","typography","margin","halfLeading","fontSize","lineHeight","fontFamily","fontWeight","leadingCancel","marginTop","marginBottom","right","bottom","spacing","amount","columnSystem","grid","unit","gutter","opacity","Array","isArray","type","borderProperty","borderShorthand","directions","all","commonSpec","internalSym","Symbol","operation","nonBlank","createTheme","_styled","spec","rawSpecDescriptor","specDescriptor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAiCgBA,YAAYC;AAC1B,QAAM,IAAIC,KAAJ,CACJC,SAAS,CAACC,MAAV,KAAqB,CAArB,GACI,aADJ,qBAEoBC,IAAI,CAACC,SAAL,CAAeL,KAAf,CAFpB,MADI,CAAN;AAKD;AAED;;;;;;AAKO,IAAMM,SAAS,GAAG,SAAZA,SAAY,CAAIN,KAAJ;AAAA,SAA0CA,KAAK,IAAI,IAAnD;AAAA,CAAlB;;SA4BSO;AACd,SAAOC,MAAM,CAACC,MAAP,OAAAD,MAAM,GAAQ,EAAR,mCAAb;AACD;SAEeE,WAAgDC;AAC9D,SAAOH,MAAM,CAACI,IAAP,CAAYD,GAAZ,CAAP;AACD;AAeM,IAAME,eAAe,GAAG,IAAIZ,KAAJ,CAC7B,8DAD6B,CAAxB;AAMP;;;;;;;;;;;;;;;;SAegBa,qBACdC,aACAC;AAEA,SAAO,SAASC,WAAT,CAAqBC,KAArB;AAGL,QAAI,CAACZ,SAAS,CAACY,KAAK,CAACC,KAAP,CAAd,EAA6B;AAC3B,YAAMN,eAAN;AACD;;AAED,QAAMO,MAAM,GAAGC,YAAY,CAACN,WAAD,EAAcT,SAAd,CAA3B;;AAGA,QAAMgB,OAAO,GAAGd,MAAM,CAACe,OAAP,cACXL,KAAK,CAACC,KAAN,CAAYK,MADD,EAEXR,YAFW,EAAhB;AAKA,WAAOS,aAAa,CAACL,MAAD,EAAS,UAACM,QAAD,EAAWC,KAAX;AAAA,cAC3B,CAACC,mBAAmB,CAACF,QAAD,CAApB,EAAgCC,KAAhC,CAD2B,SAGxBL,OAAO,CAACO,GAAR,CAA8B;AAAA,YAAEC,SAAF;AAAA,YAAaN,MAAb;AAAA,eAAyB,CACxDI,mBAAmB,CAACF,QAAD,EAAW,CAACI,SAAD,CAAX,CADqC,EAExDC,WAAW,CAACJ,KAAD,EAAQ,CAACH,MAAD,CAAR,CAF6C,CAAzB;AAAA,OAA9B,CAHwB;AAAA,KAAT,CAApB;AAQD,GAvBD;AAwBD;;AC7ID;;;;;;;;;;;;;;;;AAeO,IAAMQ,OAAO,GAAG,SAAVA,OAAU,CACrBC,MADqB,EAErBC,MAFqB,EAGrBC,KAHqB;AAAA,SAKrB3B,MAAM,CAAC4B,gBAAP,CACEH,MADF,EAEEzB,MAAM,CAAC6B,WAAP,CACEH,MAAM,CAACL,GAAP,CAAW,UAACS,GAAD;AAAA,WAAS,CAClBA,GADkB,EAElB;AAAEC,MAAAA,GAAG,EAAE;AAAA,eAAMJ,KAAK,CAACG,GAAD,CAAX;AAAA,OAAP;AAAyBE,MAAAA,UAAU,EAAE,IAArC;AAA2CC,MAAAA,YAAY,EAAE;AAAzD,KAFkB,CAAT;AAAA,GAAX,CADF,CAFF,CALqB;AAAA,CAAhB;AAeP;;;;;;;;;;;;;;;;AAeO,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAM/BT,MAN+B,EAO/BC,MAP+B,EAQ/BC,KAR+B;AAAA,SAU/B3B,MAAM,CAAC4B,gBAAP,CACEH,MADF,EAEEzB,MAAM,CAAC6B,WAAP,CACEH,MAAM,CAACL,GAAP,CAAW,UAACS,GAAD;AAAA,WAAS,CAClBA,GADkB,EAElB;AACEtC,MAAAA,KAAK,EAAE;AAAA,eAAyBmC,KAAK,MAAL,UAAMG,GAAN,mCAAzB;AAAA,OADT;AAEEE,MAAAA,UAAU,EAAE,IAFd;AAGEC,MAAAA,YAAY,EAAE;AAHhB,KAFkB,CAAT;AAAA,GAAX,CADF,CAFF,CAV+B;AAAA,CAA1B;AA0BP;;;;;;;;;;;;;;;;AAeO,IAAME,YAAY,GAAG,SAAfA,YAAe,CAC1BV,MAD0B,EAE1BW,GAF0B;AAAA,SAI1BZ,OAAO,CAACC,MAAD,EAASzB,MAAM,CAACI,IAAP,CAAYgC,GAAZ,CAAT,EAA2B,UAACN,GAAD;AAAA,WAASM,GAAG,CAACN,GAAD,CAAZ;AAAA,GAA3B,CAJmB;AAAA,CAArB;AAOP;;;;;;;;;;;;;;;AAcO,IAAMO,eAAe,GAAG,SAAlBA,eAAkB,CAC7BC,SAD6B,EAE7Bb,MAF6B;AAAA,SAI5B,SAASc,wBAAT,CACCC,OADD;AAGC,QAAMC,UAAU,GAAGH,SAAS,CAACI,MAAV,CAAiB,UAACC,CAAD;AAAA,aAAO,CAACH,OAAO,CAACI,QAAR,CAAiBD,CAAjB,CAAR;AAAA,KAAjB,CAAnB;AACA,WAAOnB,OAAO,CAACC,MAAM,CAACe,OAAD,CAAP,EAAkBC,UAAlB,EAA8B,UAACI,QAAD;AAAA,aAC1CJ,UAAU,CAAC9C,MAAX,KAAsB,CAAtB,GACIJ,WAAW,EADf,GAEIgD,wBAAwB,WAAKC,OAAL,GAAcK,QAAd,GAHc;AAAA,KAA9B,CAAd;AAKD,GATD,CASG,EATH,CAJ6B;AAAA,CAAxB;AAmBP;;;;;;;;;;;;;;;;AAeO,IAAMC,yBAAyB,GAAG,SAA5BA,yBAA4B,CAKvCR,SALuC,EAMvCb,MANuC;AAAA,SAStC,SAASc,wBAAT,CACCC,OADD;AAGC,QAAMC,UAAU,GAAGH,SAAS,CAACI,MAAV,CACjB,UAACC,CAAD;AAAA,aAAO,CAACH,OAAO,CAACnB,GAAR,CAAY;AAAA,YAAE0B,CAAF;AAAA,eAASA,CAAT;AAAA,OAAZ,EAAwBH,QAAxB,CAAiCD,CAAjC,CAAR;AAAA,KADiB,CAAnB;AAGA,WAAOT,iBAAiB,CACtBT,MAAM,CAACe,OAAD,CADgB,EAEtBC,UAFsB,EAGtB,UAACI,QAAD;AAAA,aACEJ,UAAU,CAAC9C,MAAX,KAAsB,CAAtB,GACIJ,WAAW,EADf,GAEIgD,wBAAwB,WAAKC,OAAL,IAAeK,QAAf,wCAH9B;AAAA,KAHsB,CAAxB;AAQD,GAdD,CAcG,EAdH,CATuC;AAAA,CAAlC;AAmCA,IAAMG,QAAQ,GAAG,SAAXA,QAAW,CAACxD,KAAD;AAAA,kBAA0BA,KAA1B;AAAA,CAAjB;;;AC9KP,IAAMyD,WAAW,GAAGC,iBAAH,qFACb;AAAA,MACAC,QADA,QACAA,QADA;AAAA,MAEAC,UAFA,QAEAA,UAFA;AAAA,SAOApD,MAAM,CAACe,OAAP,CAAeoC,QAAf,EAAyB9B,GAAzB,CAA6B;AAAA,QAAES,GAAF;AAAA,QAAOnB,KAAP;AAAA,WAC3BmB,GAAG,CAACuB,UAAJ,CAAe,QAAf,IACIC,GADJ,gNAEQxB,GAFR,EAIYsB,UAAU,KAAKG,SAAf,IACFD,GADE,0IAEoB3C,KAAK,CAACQ,KAAN,CAAYiC,UAAZ,CAFpB,CAJZ,EAQYI,sBAAsB,CAAC7C,KAAD,CARlC,IAYI2C,GAZJ,0OAcQxB,GAdR,EAeUsB,UAAU,KAAKG,SAAf,IACFD,GADE,sIAEoB3C,KAAK,CAACQ,KAAN,CAAYiC,UAAZ,CAFpB,CAfV,EAmBUI,sBAAsB,CAAC7C,KAAD,CAnBhC,CAD2B;AAAA,GAA7B,CAPA;AAAA,CADa,CAAjB;SA0CwB8C;MACfN,iBAAPxC;MACAyC,mBAAAA;AAKA,sBAAO,oBAAC,WAAD;AAAa,IAAA,QAAQ,EAAED,QAAvB;AAAiC,IAAA,UAAU,EAAEC;AAA7C,IAAP;AACD;;AAED,IAAMI,sBAAsB,GAAG,SAAzBA,sBAAyB,CAAC7C,KAAD;AAAA,SAC7BX,MAAM,CAACe,OAAP,CAAeT,oBAAoB,CAACK,KAAK,CAACQ,KAAP,CAApB,CAAkC;AAAER,IAAAA,KAAK,EAALA;AAAF,GAAlC,CAAf,EACGU,GADH,CACO;AAAA,QAAEqC,OAAF;AAAA,QAAWlE,KAAX;AAAA,WAAsBmE,kBAAkB,CAACD,OAAD,EAAUlE,KAAK,CAACoE,QAAN,EAAV,CAAxC;AAAA,GADP,EAEGC,IAFH,CAEQ,GAFR,CAD6B;AAAA,CAA/B;;AAKA,IAAMF,kBAAkB,GAAG,SAArBA,kBAAqB,CAACG,IAAD,EAAetE,KAAf;AAAA,SAAoCsE,IAApC,UAA6CtE,KAA7C;AAAA,CAA3B;;AC5DO,IAAMuE,iBAAiB,GAAG,gBAA1B;AACA,IAAMC,sBAAsB,GAAG,OAA/B;AAEP,IAAMC,eAAe,GAAG,IAAIC,MAAJ,CAAW,WAAX,CAAxB;AAEA;;;;;SAIgBC,gBAAgBrC;AAC9B,MAAI,CAACmC,eAAe,CAACG,IAAhB,CAAqBtC,GAArB,CAAL,EAAgC;AAC9B,UAAM,IAAIrC,KAAJ,sBAA6BqC,GAA7B,4BAAN;AACD;AACF;AAED;;;;IAGauC,WAAW,GACtB,SADWA,WACX,CAACC,IAAD;AAAA,MAACA,IAAD;AAACA,IAAAA,IAAD,GAAgBN,sBAAhB;AAAA;;AAAA,SACA,UAACrD,KAAD;AACEwD,IAAAA,eAAe,CAACG,IAAD,CAAf;;AACA,QAAI3D,KAAK,KAAK4C,SAAd,EAAyB;AACvBgB,MAAAA,QAAQ,CAACC,eAAT,CAAyBC,OAAzB,CAAiCH,IAAjC,IAAyC3D,KAAzC;AACD,KAFD,MAEO;AACL,aAAO4D,QAAQ,CAACC,eAAT,CAAyBC,OAAzB,CAAiCH,IAAjC,CAAP;AACD;AACF,GARD;AAAA;AAUF;;;;SAGgBI,cAGd/D,OAAU2D;AACV,0BAAqBA,IAArB,WAAqBA,IAArB,GAA6BN,sBAA7B,WAAwDrD,KAAxD;AACD;AAED;;;;SAGgBgE,mBAA+ChE;AAC7D,4CAAwCA,KAAxC;AACD;AAED;;;;SAGgBiE;gCAGoD;sBAFlE9C;MAAAA,4BAAMiC;yBACNc;MAAAA,kCAASR,WAAW;;AAEpB,kBAA0BS,QAAQ,CAAChD,GAAD,CAAlC;AAAA,MAAOnB,KAAP;AAAA,MAAgBoE,MAAhB;;AAEAC,EAAAA,SAAS,CAAC;AACR,QAAIrE,KAAK,KAAK4C,SAAd,EAAyB;AACvB;AACD;;;AAEDsB,IAAAA,MAAM,CAACE,MAAM,GAAGxB,SAAH,GAAe5C,KAAtB,CAAN;AACD,GANQ,EAMN,CAACkE,MAAD,EAASE,MAAT,EAAiBpE,KAAjB,CANM,CAAT;AAOD;AAED;;;;SAGgBsE,aAAanD;MAAAA;AAAAA,IAAAA,MAAciC;;;AACzC,MAAMpD,KAAK,GAAGuE,YAAY,CAACC,OAAb,CAAqBrD,GAArB,CAAd;AACA,SAAOnB,KAAP;AACD;AAED;;;;;;IAKamE,QAAQ,GAAG,SAAXA,QAAW,CAAChD,GAAD;MAACA;AAAAA,IAAAA,MAAciC;;;AACrCI,EAAAA,eAAe,CAACrC,GAAD,CAAf;AACA,MAAMsD,MAAM,GAAGC,QAAQ,CAAC,8BAAD,CAAvB;AACA,MAAMC,KAAK,GAAGF,MAAM,KAAK7B,SAAX,GAAwB6B,MAAM,GAAG,MAAH,GAAY,OAA1C,GAAqD7B,SAAnE;;AACA,yBAAiCgC,eAAe,CAASzD,GAAT,CAAhD;AAAA,MAAO0D,KAAP;AAAA,MAAcC,QAAd;AAAA,MAAwBC,KAAxB;;AACA,MAAM/E,KAAK,GAAG,CAAC+E,KAAD,IAAUJ,KAAK,KAAK/B,SAApB,GAAgCA,SAAhC,GAA4CiC,KAA5C,WAA4CA,KAA5C,GAAqDF,KAAnE;AACA,MAAMP,MAAM,GAAGS,KAAK,KAAKjC,SAAzB;AACA,SAAO,CAAC5C,KAAD,EAAQ8E,QAAR,EAAkBV,MAAlB,CAAP;AACD;SAEeQ,gBAAmBzD,KAAa6D;AAC9C,kBAA0BC,QAAQ,CAAC,KAAD,CAAlC;AAAA,MAAOF,KAAP;AAAA,MAAcG,QAAd;;AACA,mBAA0BD,QAAQ,EAAlC;AAAA,MAAOE,KAAP;AAAA,MAAcC,QAAd;;AACA,MAAMC,gBAAgB,GAAGC,OAAO,CAAC;AAAA,WAAMN,YAAN,oBAAMA,YAAY,EAAlB;AAAA,GAAD,EAAyB,CAACA,YAAD,CAAzB,CAAhC;AAEAX,EAAAA,SAAS,CAAC;AACRkB,IAAAA,KAAK;AACLC,IAAAA,MAAM,CAACC,gBAAP,CAAwB,SAAxB,EAAmCC,aAAnC;AACA,WAAO;AACLF,MAAAA,MAAM,CAACG,mBAAP,CAA2B,SAA3B,EAAsCD,aAAtC;AACD,KAFD;AAGD,GANQ,CAAT;;AAQA,MAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAACE,CAAD;AACpB,QAAIA,CAAC,CAACC,WAAF,KAAkBtB,YAAtB,EAAoC;AAClC;AACD;;AACD,QAAIqB,CAAC,CAACzE,GAAF,KAAUA,GAAd,EAAmB;AACjB;AACD;;AACDoE,IAAAA,KAAK;AACN,GARD;;AAUA,MAAMA,KAAK,GAAG,SAARA,KAAQ;;;AACZ,QAAMO,GAAG,GAAGvB,YAAY,CAACC,OAAb,CAAqBrD,GAArB,CAAZ;AACAiE,IAAAA,QAAQ,UAAEU,GAAG,KAAK,IAAR,GAAeC,WAAW,CAACD,GAAD,CAA1B,GAAkC,IAApC,oBAA6CT,gBAA7C,CAAR;AACAH,IAAAA,QAAQ,CAAC,IAAD,CAAR;AACD,GAJD;;AAMA,MAAMc,GAAG,GAAG,SAANA,GAAM,CAACnH,KAAD;AACV,QAAIA,KAAK,KAAK+D,SAAd,EAAyB;AACvB;AACA2B,MAAAA,YAAY,CAAC0B,UAAb,CAAwB9E,GAAxB;AACD,KAHD,MAGO;AACL,UAAM2E,GAAG,GAAGI,SAAS,CAACrH,KAAD,CAArB;AACA0F,MAAAA,YAAY,CAAC4B,OAAb,CAAqBhF,GAArB,EAA0B2E,GAA1B;AACD;;;AAGD,QAAMM,KAAK,GAAG,IAAIC,YAAJ,CAAiB,SAAjB,EAA4B;AACxCC,MAAAA,OAAO,EAAE,IAD+B;AAExCC,MAAAA,UAAU,EAAE,KAF4B;AAGxCpF,MAAAA,GAAG,EAAHA,GAHwC;AAIxCqF,MAAAA,GAAG,EAAEC,QAAQ,CAACC,IAJ0B;AAKxCb,MAAAA,WAAW,EAAEtB;AAL2B,KAA5B,CAAd;AAOAoC,IAAAA,aAAa,CAACP,KAAD,CAAb;AACD,GAlBD;;AAoBA,SAAO,CAACjB,KAAD,WAACA,KAAD,GAAUE,gBAAV,EAA4BW,GAA5B,EAAiCjB,KAAjC,CAAP;AACD;;AAED,SAASgB,WAAT,CAAwBD,GAAxB;AACE,MAAI;AACF,WAAO7G,IAAI,CAAC2H,KAAL,CAAWd,GAAX,CAAP;AACD,GAFD,CAEE,gBAAM;AACN;AACA,WAAOA,GAAP;AACD;AACF;;AAED,SAASI,SAAT,CAAmBrH,KAAnB;AACE,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B,WAAOA,KAAP;AACD,GAFD,MAEO;AACL,WAAOI,IAAI,CAACC,SAAL,CAAeL,KAAf,CAAP;AACD;AACF;;SAEe6F,SAASmC;AACvB,mBAA0B5B,QAAQ,EAAlC;AAAA,MAAO6B,KAAP;AAAA,MAAc1B,QAAd;;AAEAf,EAAAA,SAAS,CAAC;AACR,QAAM0C,OAAO,GAAGvB,MAAM,CAACwB,UAAP,CAAkBH,KAAlB,CAAhB;;AAEA,QAAMI,QAAQ,GAAG,SAAXA,QAAW;AACf7B,MAAAA,QAAQ,CAAC2B,OAAO,CAACG,OAAT,CAAR;AACD,KAFD;;AAIAH,IAAAA,OAAO,CAACtB,gBAAR,CAAyB,QAAzB,EAAmCwB,QAAnC;AAEA7B,IAAAA,QAAQ,CAAC2B,OAAO,CAACG,OAAT,CAAR;AAEA,WAAO;AACLH,MAAAA,OAAO,CAACpB,mBAAR,CAA4B,QAA5B,EAAsCsB,QAAtC;AACD,KAFD;AAGD,GAdQ,EAcN,CAACJ,KAAD,CAdM,CAAT;AAgBA,SAAOC,KAAP;AACD;;ACtKD;;;;;;SAKgBK;gCAGIC;kCAFlBC;MAAAA,oDAAkBD,YAAY,CAACC;gCAC/BC;MAAAA,gDAAgBF,YAAY,CAACE;;AAE7B9D,EAAAA,eAAe,CAAC6D,eAAD,CAAf;AACA7D,EAAAA,eAAe,CAAC8D,aAAD,CAAf;AACA,wEAE2BD,eAF3B,oCAGyBC,aAHzB;AAUD;AAED;;;;;;SAKgBC,eAAexH;AAC7B,MAAMyH,GAAG,GAAGL,sBAAsB,CAACpH,KAAD,CAAlC;AACA,sBACE;AACE,IAAA,uBAAuB,EAAE;AACvB0H,MAAAA,MAAM,EAAED;AADe;AAD3B,IADF;AAOD;AAED,IAAMJ,YAAY,GAAU;AAC1BC,EAAAA,eAAe,EAAEjE,iBADS;AAE1BkE,EAAAA,aAAa,EAAEjE;AAFW,CAA5B;AAKAkE,cAAc,CAACH,YAAf,GAA8BA,YAA9B;;ACHA,IAAMM,iBAAiB,GAAG,CAAC,QAAD,EAAW,SAAX,CAA1B;AACA,IAAMC,iBAAiB,GAAG,CACxB,KADwB,EAExB,OAFwB,EAGxB,QAHwB,EAIxB,MAJwB,EAKxB,UALwB,EAMxB,YANwB,EAOxB,KAPwB,CAA1B;AAYA,IAAMC,eAAe,GAAG,CAAC,OAAD,EAAU,QAAV,CAAxB;AAGA,IAAMC,gBAAgB,GAAG,CAAC,KAAD,EAAQ,OAAR,EAAiB,QAAjB,EAA2B,MAA3B,CAAzB;AAGA,IAAMC,WAAW,GAAG,CAAC,OAAD,CAApB;AAGA;;;;;;;AAMA,SAASC,OAAT,CACE/H,KADF,EAQEgI,SARF;MAQEA;AAAAA,IAAAA,YAAY;;;AAEZ,MAAIA,SAAJ,EAAe;AACb;AACA,WAAO,EAAP;AACD;;AACD,MAAM/H,MAAM,GAAGV,UAAU,CAACS,KAAK,CAACQ,KAAP,CAAzB;AACA,MAAML,OAAO,GAAGZ,UAAU,CAACS,KAAK,CAACK,MAAP,CAA1B;;AAGA,MAAM4H,cAAc,GAAG1I,UAAU,CAACS,KAAK,CAACkI,aAAP,CAAjC;AACA,MAAMC,QAAQ,GAAGC,cAAc,CAAA,CAA/B;AACA,MAAMC,gBAAgB,GAAGC,sBAAsB,CAACtI,KAAD,CAA/C;AACA,MAAMuI,WAAW,GAAG/G,YAAY,CAC9B,EAD8B,EAE9B;AACEgH,IAAAA,EAAE,EAAEpJ,YAAY,CACdyB,OAAO,CAAC,EAAD,EAAKZ,MAAL,EAAa,UAACO,KAAD;AAAA,aAClBkB,eAAe,CAACvB,OAAD,EAAU,UAACwB,SAAD;AAAA,eACvBwG,QAAQ,CAAC,IAAD,EAAO3H,KAAP,EAAcmB,SAAd,CADe;AAAA,OAAV,CADG;AAAA,KAAb,CADO,EAMdd,OAAO,CACL,EADK,EAELoH,cAFK,EAGL,UAACzH,KAAD;AAAA,aAAW,UAACiI,SAAD;AAAA,eACT/G,eAAe,CAACvB,OAAD,EAAU,UAACwB,SAAD;AAAA,iBACvB0G,gBAAgB,CAAC7H,KAAD,EAAQmB,SAAR,EAAmB8G,SAAnB,CADO;AAAA,SAAV,CADN;AAAA,OAAX;AAAA,KAHK,CANO,CADlB;AAgBEC,IAAAA,IAAI,EAAE7H,OAAO,CAAC,EAAD,EAAKZ,MAAL,EAAa,UAACO,KAAD;AAAA,aACxBkB,eAAe,CAACvB,OAAD,EAAU,UAACwB,SAAD;AAAA,eACvBwG,QAAQ,CAAC,MAAD,EAAS3H,KAAT,EAAgBmB,SAAhB,CADe;AAAA,OAAV,CADS;AAAA,KAAb;AAhBf,GAF8B,CAAhC;;AA2BA,MAAMgH,mBAAmB,GAAG;AAE1B,aAF0B,EAG1B,MAH0B,EAI1B,qBAJ0B,CAA5B;AAMA,MAAMC,aAAa,GAAGC,mBAAmB,CAAC7I,KAAD,CAAzC;AACA,MAAM8I,gBAAgB,GAAGjI,OAAO,CAC9B,EAD8B,EAE9B,CAAC,YAAD,CAF8B,EAG9B,UAACkI,CAAD;AAAA,WAAO,UAACC,IAAD;AAAA,aACLtH,eAAe,CAACiH,mBAAD,EAAsB,UAAChH,SAAD;AAAA,eACnCiH,aAAa,CAACI,IAAD,EAAO;AAClBC,UAAAA,mBAAmB,EAAEtH,SAAS,CAACM,QAAV,CAAmB,qBAAnB,CADH;AAElBiH,UAAAA,SAAS,EAAEvH,SAAS,CAACM,QAAV,CAAmB,WAAnB,CAFO;AAGlBkH,UAAAA,IAAI,EAAExH,SAAS,CAACM,QAAV,CAAmB,MAAnB;AAHY,SAAP,CADsB;AAAA,OAAtB,CADV;AAAA,KAAP;AAAA,GAH8B,CAAhC;;AAcA,MAAMmH,UAAU,GAAGC,gBAAgB,CAACrJ,KAAD,CAAnC;AACA,MAAMsJ,aAAa,GAAGzI,OAAO,CAAC,EAAD,EAAK6G,iBAAL,EAAwB,UAAC6B,eAAD;AAAA,WACnDpH,yBAAyB,CACvBwF,iBADuB,EAEvB,UAAChG,SAAD;AAAA,aAAeyH,UAAU,CAACG,eAAD,EAAkB5H,SAAlB,CAAzB;AAAA,MAHiD;AAAA,GAAxB,CAA7B;;AASA,MAAM6H,UAAU,GAAGC,gBAAgB,CAACzJ,KAAD,CAAnC;AACA,MAAM0J,cAAc,GAAGC,oBAAoB,CAAC3J,KAAD,CAA3C;AACA,MAAM4J,gBAAgB,GAAGC,sBAAsB,CAAA,CAA/C;AACA,MAAMC,WAAW,GAAGjJ,OAAO,CAAC,EAAD,EAAK+G,eAAL,EAAsB,UAACmC,QAAD;AAAA,WAC/CvI,YAAY,CACV,EADU,EAEV;AACEwI,MAAAA,EAAE,EAAE,YAAChB,IAAD;AAAA,eAAuCQ,UAAU,CAACO,QAAD,EAAWf,IAAX,CAAjD;AAAA,OADN;AAEEiB,MAAAA,MAAM,EAAE,gBAACC,IAAD;AAAA,eAAkBR,cAAc,CAACK,QAAD,EAAWG,IAAX,CAAhC;AAAA,OAFV;AAGEC,MAAAA,IAAI,EAAEP,gBAAgB,CAACG,QAAD,EAAW,MAAX,CAHxB;AAIEK,MAAAA,IAAI,EAAER,gBAAgB,CAACG,QAAD,EAAW,MAAX;AAJxB,KAFU,CADmC;AAAA,GAAtB,CAA3B;;AAaA,MAAMM,gBAAgB,GAAGC,sBAAsB,CAACtK,KAAD,CAA/C;AACA,MAAMuK,mBAAmB,GAAG7I,eAAe,CACzCnC,UAAU,CAACS,KAAK,CAACwK,aAAP,CAD+B,EAEzC,UAAC7I,SAAD;AAAA,WAAe0I,gBAAgB,CAAC1I,SAAD,CAA/B;AAAA,GAFyC,CAA3C;;AAMA,MAAM8I,SAAS,GAAGC,eAAe,CAAC1K,KAAD,CAAjC;AACA,MAAM2K,YAAY,GAAGnJ,YAAY,CAC/B,EAD+B,EAE/B;AACEoJ,IAAAA,MAAM,EAAE/J,OAAO,CAAC,EAAD,EAAKtB,UAAU,CAACS,KAAK,CAAC4K,MAAP,CAAf,EAA+B,UAACC,OAAD;AAAA,aAC5CnJ,eAAe,CAACmG,gBAAD,EAAmB,UAAClG,SAAD;AAAA,eAChC8I,SAAS,CAACI,OAAD,EAAUlJ,SAAV,CADuB;AAAA,OAAnB,CAD6B;AAAA,KAA/B;AADjB,GAF+B,CAAjC;;AAYA,MAAMmJ,eAAe,GAAGC,qBAAqB,CAAC/K,KAAD,CAA7C;AACA,MAAMgL,kBAAkB,GAAGxJ,YAAY,CACrC,EADqC,EAErC;AACEyJ,IAAAA,YAAY,EAAE,sBAACC,MAAD;AAAA,aACZJ,eAAe,CAACI,MAAD,CADH;AAAA;AADhB,GAFqC,CAAvC;;AASA,MAAMC,UAAU,GAAGC,qBAAqB,CAACpL,KAAD,CAAxC;AACA,MAAMqL,aAAa,GAAG7J,YAAY,CAChC,EADgC,EAEhC;AACE8J,IAAAA,OAAO,EAAEzK,OAAO,CAAC,EAAD,EAAKtB,UAAU,CAACS,KAAK,CAACsL,OAAP,CAAf,EAAgC,UAACT,OAAD;AAAA,aAC9CnJ,eAAe,CAACoG,WAAD,EAAc,UAACnG,SAAD;AAAA,eAC3BwJ,UAAU,CAACN,OAAD,EAAUlJ,SAAV,CADiB;AAAA,OAAd,CAD+B;AAAA,KAAhC;AADlB,GAFgC,CAAlC;AAWA,SAAOvC,YAAY,CACjBmJ,WADiB,EAEjBO,gBAFiB,EAGjBQ,aAHiB,EAIjBQ,WAJiB,EAKjBS,mBALiB,EAMjBI,YANiB,EAOjBK,kBAPiB,EAQjBK,aARiB,CAAnB;AAUD;;AAED,SAASE,cAAT,CAAwBC,MAAxB;AACE,SAAOA,MAAM,KAAK,IAAX,GAAkB,kBAAlB,GAAuC,OAA9C;AACD;;AAED,SAASC,iBAAT,CAA2BpL,MAA3B;AACE,SAAO,CAAC,OAAD,EAAU,OAAV,EAAmB,UAAnB,EAA+B4B,QAA/B,CAAwC5B,MAAxC,CAAP;AACD;;AAED,SAASqL,cAAT,CAAwBrL,MAAxB,EAA4CsC,GAA5C;;;AACE,SAAOtC,MAAM,KAAK,OAAX,GACH;AAAE,oCAAcsL,mBAAd,IAAoChJ,GAApC;AAAF,GADG,GAEHtC,MAAM,KAAK,OAAX,GACA;AAAE,uCAAesL,mBAAf,IAAqChJ,GAArC;AAAF,GADA;AAGFtC,EAAAA,MAAM,KAAK,UAAX,oBACKuL,gBADL,IACwBjJ,GADxB,UAEE/D,WAAW,CAACyB,MAAD,CAPf;AAQD;;AAED,IAAM+H,cAAc,GAClB,SADIA,cACJ,CAAkByD,MAAlB;AAAA,SACA,UACEL,MADF,EAEEhL,KAFF,EAGEL,OAHF;AAAA,QAGEA,OAHF;AAGEA,MAAAA,OAHF,GAG4C,EAH5C;AAAA;;AAAA,WAKE2L,QAAQ,CACN;AAAA;;AAAA,iDACGP,cAAc,CAACC,MAAD,CADjB,IAC4BnJ,QAAQ,CAChC5B,mBAAmB,CAACD,KAAK,CAACyC,QAAN,EAAD,CADa,CADpC,cAIK9C,OAAO,CAAC4B,MAAR,CAAe0J,iBAAf,EAAkCM,MAAlC,CACD,UAACC,GAAD,EAAM3L,MAAN;AAAA;;AAAA,4BACK2L,GADL,EAEKN,cAAc,CAACrL,MAAD,yCACdkL,cAAc,CAACC,MAAD,CADA,IACWnJ,QAAQ,CAChC5B,mBAAmB,CAACD,KAAK,CAACyC,QAAN,EAAD,EAAmB,CAAC5C,MAAD,CAAnB,CADa,CADnB,mBAFnB;AAAA,OADC,EASD,EATC,CAJL;AAAA,KADM,EAiBNF,OAAO,CAACnB,MAAR,GAAiB,CAAjB,GACIwM,MAAM,KAAK,MAAX,GACE;AACES,MAAAA,eAAe,EAAE;AADnB,KADF,GAIE;AACEC,MAAAA,yBAAyB,EAAE;AAD7B,KALN,GAQI,EAzBE,CALV;AAAA,GADA;AAAA,CADF;;;AAoCA,IAAMC,mBAAmB,GAAG,GAA5B;;AAEA,IAAM7D,sBAAsB,GAC1B,SADIA,sBACJ,CAAkBtI,KAAlB;AAAA,SACA,UACEQ,KADF,EAEEL,OAFF,EAGEsI,SAHF;QAEEtI;AAAAA,MAAAA,UAA0C;;;AAG1C,QAAMiM,gBAAgB,GAAGC,QAAQ,CAAC5D,SAAD,CAAjC;AACA,WAAOqD,QAAQ,CAAC,UAACQ,OAAD;AACd,UAAMC,SAAS,GAAG,CAACC,uBAAuB,CAACF,OAAD,CAA1C;AACA,UAAMG,QAAQ,GAAGC,GAAG,CAACP,mBAAD,CAApB;;AACA,UAAII,SAAS,IAAIpM,OAAO,CAACnB,MAAR,GAAiB,CAAlC,EAAqC;AACnC;AACE2N,UAAAA,QAAQ,EAAE,UADZ;AAEEC,UAAAA,MAAM,EAAE,CAFV;AAGEC,UAAAA,QAAQ,EAAE;AAHZ,WAIK1M,OAAO,CAAC4B,MAAR,CAAe0J,iBAAf,EAAkCM,MAAlC,CACD,UAACC,GAAD,EAAM3L,MAAN;AAAA;;AAAA,8BACK2L,GADL;AAEE;AACEY,cAAAA,MAAM,EAAE,CAAC;AADX,eAEKE,cAFL;AAGEC,cAAAA,UAAU,EAAKN,QAAL;AAHZ,cAFF;AAOE;AACEG,cAAAA,MAAM,EAAE,CAAC;AADX,eAEKE,cAFL,EAGKV,gBAAgB,CAACpM,KAAK,CAACkI,aAAN,CAAoB1H,KAApB,CAAD,CAHrB;AAPF,aAYKkL,cAAc,CAACrL,MAAD,EAAS;AACxB,yBAAa;AACX2M,cAAAA,eAAe,EAAEpM,WAAW,CAC1B,IAD0B,0BAE1BZ,KAAK,CAACK,MAAN,CAAaA,MAAb,CAF0B,mCAEF,EAFE;AADjB;AADW,WAAT,CAZnB;AAAA,SADC,EAsBD,EAtBC,CAJL;AA6BD,OA9BD,MA8BO;AACL4M,QAAAA,OAAO,CACL9M,OAAO,CAACnB,MAAR,KAAmB,CADd;AAAA,2IAAP;AAKA,4BACKoN,gBAAgB,CAACpM,KAAK,CAACkI,aAAN,CAAoB1H,KAApB,CAAD,CADrB,EAEKL,OAAO,CAAC4B,MAAR,CAAe0J,iBAAf,EAAkCM,MAAlC,CACD,UAACC,GAAD,EAAM3L,MAAN;AAAA;;AAAA,8BACK2L,GADL,EAEKN,cAAc,CAACrL,MAAD,eACZ+L,gBAAgB,CACjBc,qBAAqB,0BAAClN,KAAK,CAACK,MAAN,CAAaA,MAAb,CAAD,oCAAyB,EAAzB,CAArB,CACEL,KAAK,CAACkI,aAAN,CAAoB1H,KAApB,CADF,CADiB,CADJ,EAFnB;AAAA,SADC,EAWD,EAXC,CAFL;AAgBD;AACF,KAxDc,CAAf;AAyDD,GAhED;AAAA,CADF;AAmEA;;;;;AAGA,IAAM2M,OAAO,GAAG,SAAVA,OAAU,CAACxK,GAAD;AAAA;;AAAA,2BACbgJ,mBADa,IACS;AACrB;AACEL,MAAAA,OAAO,EAAE;AADX,OAEK3I,GAFL,CADqB;AAMrB,iEAA6D;AAC3D2I,MAAAA,OAAO,EAAE;AADkD,KANxC;AAUrB;AACEA,MAAAA,OAAO,EAAE;AADX,OAEK3I,GAFL;AAVqB,GADT;AAAA,CAAhB;;AAkBA,IAAMwI,UAAU,GAAG,SAAbA,UAAa,CAACiC,MAAD,EAAiB5M,KAAjB;AAAA,SAAoC;AACrD6M,IAAAA,SAAS,aAAWrD,EAAE,CAACoD,MAAD,CAAb,SAAyB5M;AADmB,GAApC;AAAA,CAAnB;;AAIA,IAAM4K,qBAAqB,GACzB,SADIA,qBACJ,CAAkBpL,KAAlB;AAAA,SACA,UACE6K,OADF,EAEElJ,SAFF;AAIE,QAAMyL,MAAM,GAAGpN,KAAK,CAACsL,OAAN,CAAcT,OAAd,EAAuBuC,MAAtC;AACA,QAAM5M,KAAK,GAAGR,KAAK,CAACsL,OAAN,CAAcT,OAAd,EAAuBrK,KAArC;AACA,WAAOsL,QAAQ,CACb;AAAA;;AAAA,aACEnK,SAAS,CAACM,QAAV,CAAmB,OAAnB,IACIkL,OAAO,CAAChC,UAAU,CAACiC,MAAD,EAAS5M,KAAT,CAAX,CADX,GAEI;AAAE,2BAASmL,mBAAT,IAA+BR,UAAU,CAACiC,MAAD,EAAS5M,KAAT,CAAzC;AAAF,OAHN;AAAA,KADa,EAKb;AACE8M,MAAAA,mBAAmB,EAAE;AADvB,KALa,CAAf;AASD,GAhBD;AAAA,CADF;;AAmBA,IAAMR,cAAc,GAAc;AAChCS,EAAAA,OAAO,EAAE,IADuB;AAEhCC,EAAAA,OAAO,EAAE,OAFuB;AAGhCb,EAAAA,QAAQ,EAAE,UAHsB;AAIhCc,EAAAA,KAAK,EAAE,MAJyB;AAKhCC,EAAAA,MAAM,EAAE,MALwB;AAMhCC,EAAAA,GAAG,EAAE,CAN2B;AAOhCC,EAAAA,IAAI,EAAE;AAP0B,CAAlC;AAWA;;AACA,IAAMpB,uBAAuB,GAAG,SAA1BA,uBAA0B;AAAA,MAC9BqB,mBAD8B,SAC9BA,mBAD8B;AAAA,oCAE9BC,kBAF8B;AAAA,MAE9BA,kBAF8B,sCAET,KAFS;AAAA,SAGjBD,mBAAmB,KAAKjL,SAAxB,IAAqC,CAACkL,kBAHrB;AAAA,CAAhC;;AAKA,IAAMjF,mBAAmB,GACvB,SADIA,mBACJ,CAAkB7I,KAAlB;AAAA,SACA,UACEgJ,IADF,EAEE+E,OAFF;QAEEA;AAAAA,MAAAA,UAII;;;AAEJ,mBAIIA,OAJJ;AAAA,yCACE9E,mBADF;AAAA,QACEA,mBADF,sCACwB,KADxB;AAAA,sCAEEC,SAFF;AAAA,QAEEA,SAFF,mCAEc,KAFd;AAAA,iCAGEC,IAHF;AAAA,QAGEA,IAHF,8BAGS,KAHT;AAKA,QAAM6E,UAAU,GAAGhO,KAAK,CAACiO,UAAN,CAAiBjF,IAAjB,CAAsBA,IAAtB,CAAnB;AACA,QAAMkF,MAAM,GAAG,CAACC,WAAW,CAACH,UAAD,CAA3B;AAEA,WAAOlC,QAAQ,CACb,UAACQ,OAAD;AAAA;AACE8B,QAAAA,QAAQ,EAAEpE,EAAE,CAACgE,UAAU,CAACI,QAAZ,CADd;AAEEC,QAAAA,UAAU,EAAErE,EAAE,CAACgE,UAAU,CAACK,UAAZ;AAFhB,SAGMnF,SAAS,IAAI;AACfoF,QAAAA,UAAU,EAAE;AADG,OAHnB,EAMMnF,IAAI,IAAI;AACVoF,QAAAA,UAAU,EAAE;AADF,OANd,EASM/B,uBAAuB,CAACF,OAAD,CAAvB,IAAoC;AACtC;AACAkB,QAAAA,OAAO,EAAE,WAF6B;AAGtC;AACA,kCACKgB,aADL;AAEEC,UAAAA,SAAS,EAAEzE,EAAE,CAACkE,MAAD;AAFf,UAJsC;AAQtC,iCACKM,aADL;AAEEE,UAAAA,YAAY,EAAE1E,EAAE,CAACkE,MAAD;AAFlB;AARsC,OAT1C;AAAA,KADa,EAwBb,CAACjF,mBAAD,GACI;AACE4E,MAAAA,mBAAmB,EAAEK;AADvB,KADJ,GAII,EA5BS,CAAf;AA8BD,GA/CD;AAAA,CADF;;AAkDA,IAAMM,aAAa,GAAc;AAC/BhB,EAAAA,OAAO,EAAE,OADsB;AAE/BC,EAAAA,KAAK,EAAE,CAFwB;AAG/BC,EAAAA,MAAM,EAAE,CAHuB;AAI/BH,EAAAA,OAAO;AAJwB,CAAjC;;AAOA,SAAShE,eAAT,CACEQ,QADF,EAEEtB,SAFF;AAIE,SAAUsB,QAAV,SAAsBtB,SAAtB;AACD;;AAED,IAAMY,gBAAgB,GACpB,SADIA,gBACJ,CAAkBrJ,KAAlB;AAAA,SACA,UACE+J,QADF,EAEEpI,SAFF;AAIE,4BAAqCA,SAAS,CAACoK,MAAV,CACnC,UAACC,GAAD;UAAOvD;UAAWO;;AAChB,UAAIP,SAAS,KAAK,KAAlB,EAAyB;AACvBuD,QAAAA,GAAG,CAAC2B,GAAJ,GAAU3E,IAAV;AACAgD,QAAAA,GAAG,CAAC2C,KAAJ,GAAY3F,IAAZ;AACAgD,QAAAA,GAAG,CAAC4C,MAAJ,GAAa5F,IAAb;AACAgD,QAAAA,GAAG,CAAC4B,IAAJ,GAAW5E,IAAX;AACD,OALD,MAKO,IAAIP,SAAS,KAAK,UAAlB,EAA8B;AACnCuD,QAAAA,GAAG,CAAC2B,GAAJ,GAAU3E,IAAV;AACAgD,QAAAA,GAAG,CAAC4C,MAAJ,GAAa5F,IAAb;AACD,OAHM,MAGA,IAAIP,SAAS,KAAK,YAAlB,EAAgC;AACrCuD,QAAAA,GAAG,CAAC2C,KAAJ,GAAY3F,IAAZ;AACAgD,QAAAA,GAAG,CAAC4B,IAAJ,GAAW5E,IAAX;AACD,OAHM,MAGA;AACLgD,QAAAA,GAAG,CAACvD,SAAD,CAAH,GAAiBO,IAAjB;AACD;;AACD,aAAOgD,GAAP;AACD,KAjBkC,EAkBnC,EAlBmC,CAArC;AAAA,QAAQ2B,GAAR,qBAAQA,GAAR;AAAA,QAAagB,KAAb,qBAAaA,KAAb;AAAA,QAAoBC,MAApB,qBAAoBA,MAApB;AAAA,QAA4BhB,IAA5B,qBAA4BA,IAA5B;;AAuBA,QAAME,kBAAkB,GACtB/D,QAAQ,KAAK,SAAb,IACA4D,GAAG,KAAK/K,SADR,IAEAgM,MAAM,KAAKhM,SAFX,IAGA+K,GAAG,KAAK,MAHR,IAIAiB,MAAM,KAAK,MALb;AAOA,WAAO9C,QAAQ,CACb;AAAA;;AAAA,wCAAG+B,mBAAH;AAAA,UAAGA,mBAAH,sCAAyB,CAAzB;AAAA,0BACMF,GAAG,KAAK/K,SAAR,uBACD2G,eAAe,CAACQ,QAAD,EAAW,KAAX,CADd,IAEA4D,GAAG,KAAK,MAAR,GACI,MADJ,GAEI3D,EAAE,CACAhK,KAAK,CAAC6O,OAAN,CAAclB,GAAd,KACGG,kBAAkB,GAAGD,mBAAH,GAAyB,CAD9C,CADA,CAJN,QADN,EAUMe,MAAM,KAAKhM,SAAX,uBACD2G,eAAe,CAACQ,QAAD,EAAW,QAAX,CADd,IAEA6E,MAAM,KAAK,MAAX,GACI,MADJ,GAEI5E,EAAE,CACAhK,KAAK,CAAC6O,OAAN,CAAcD,MAAd,KACGd,kBAAkB,GAAGD,mBAAH,GAAyB,CAD9C,CADA,CAJN,QAVN,EAmBMc,KAAK,KAAK/L,SAAV,uBACD2G,eAAe,CAACQ,QAAD,EAAW,OAAX,CADd,IAEA4E,KAAK,KAAK,MAAV,GAAmB,MAAnB,GAA4B3E,EAAE,CAAChK,KAAK,CAAC6O,OAAN,CAAcF,KAAd,CAAD,CAF9B,QAnBN,EAuBMf,IAAI,KAAKhL,SAAT,uBACD2G,eAAe,CAACQ,QAAD,EAAW,MAAX,CADd,IAEA6D,IAAI,KAAK,MAAT,GAAkB,MAAlB,GAA2B5D,EAAE,CAAChK,KAAK,CAAC6O,OAAN,CAAcjB,IAAd,CAAD,CAF7B,QAvBN;AAAA,KADa,EA6BbE,kBAAkB,GAAG;AAAEA,MAAAA,kBAAkB,EAAE;AAAtB,KAAH,GAAkC,EA7BvC,CAAf;AA+BD,GAlED;AAAA,CADF;;AAqEA,IAAMrE,gBAAgB,GACpB,SADIA,gBACJ,CAAkBzJ,KAAlB;AAAA,SACA,UAAC+J,QAAD,EAA0Bf,IAA1B;AAAA,WACE8C,QAAQ,CAAC;AAAA;;AAAA,iCACN/B,QADM,IACKf,IAAI,KAAK,MAAT,GAAkB,MAAlB,GAA2BgB,EAAE,CAAChK,KAAK,CAAC6O,OAAN,CAAc7F,IAAd,CAAD,CADlC;AAAA,KAAD,CADV;AAAA,GADA;AAAA,CADF;;AAOA,IAAMa,sBAAsB,GAC1B,SADIA,sBACJ,CAAkBgC,MAAlB;AAAA,SACA,UAAC9B,QAAD,EAA0B+E,MAA1B;AAAA,WACEhD,QAAQ,CAAC;AAAA;;AAAA,iCACN/B,QADM,IACK+E,MADL;AAAA,KAAD,CADV;AAAA,GADA;AAAA,CADF;;AAOA,IAAMnF,oBAAoB,GACxB,SADIA,oBACJ,CAAkB3J,KAAlB;AAAA,SACA,UAAC+J,QAAD,EAA0BG,IAA1B;AAAA,WACE4B,QAAQ,CAAC;AAAA;;AAAA,iCACN/B,QADM,IACKC,EAAE,CACZ+E,YAAY,CAAC7E,IAAD,EAAOlK,KAAK,CAACgP,IAAN,CAAWC,IAAX,CAAgBhF,MAAvB,EAA+BjK,KAAK,CAACgP,IAAN,CAAWC,IAAX,CAAgBC,MAA/C,CADA,CADP;AAAA,KAAD,CADV;AAAA,GADA;AAAA,CADF;;AASA,IAAM5E,sBAAsB,GAC1B,SADIA,sBACJ,CAA6DtK,KAA7D;AAAA,SAGA,UAACG,OAAD;AAAA,QAACA,OAAD;AAACA,MAAAA,OAAD,GAA8C,EAA9C;AAAA;;AAAA,WACE2L,QAAQ,CAAC;AAAA,aACP3L,OAAO,CAAC4B,MAAR,CAAe0J,iBAAf,EAAkCM,MAAlC,CACE,UAACC,GAAD,EAAM3L,MAAN;AAAA;;AAAA,4BACK2L,GADL,EAEKN,cAAc,CAACrL,MAAD,EAAS;AACxB8O,UAAAA,OAAO,EACL,CAAEC,KAAkC,CAACC,OAAnC,CACArP,KAAK,CAACwK,aAAN,CAAoBnK,MAApB,CADA,CAAF,IAEK,0BAAAL,KAAK,CAACwK,aAAN,CAAoBnK,MAApB,4CAA6BiP,IAA7B,MAAsC,SAF3C,6BAGItP,KAAK,CAACwK,aAAN,CAAoBnK,MAApB,CAHJ,qBAGI,uBAA6B8O,OAHjC,GAIIvQ,WAAW;AANO,SAAT,CAFnB;AAAA,OADF,EAYE,EAZF,CADO;AAAA,KAAD,CADV;AAAA,GAHA;AAAA,CADF;;AAsBA,SAAS2Q,cAAT,CAAwB9G,SAAxB;AACE,qBAAiBA,SAAjB;AACD;;AAED,SAAS+G,eAAT,CAAyBhP,KAAzB;AACE,wBAAoBA,KAApB;AACD;;AAED,IAAMkK,eAAe,GACnB,SADIA,eACJ,CAAkB1K,KAAlB;AAAA,SACA,UACE6K,OADF,EAEE4E,UAFF;AAIE,QAAMC,GAAG,GAAGD,UAAU,CAACzQ,MAAX,KAAsB,CAAlC;AACA,QAAMH,KAAK,GAAG2Q,eAAe,CAACxP,KAAK,CAAC4K,MAAN,CAAaC,OAAb,EAAsBrK,KAAvB,CAA7B;AACA,WAAOsL,QAAQ,CAAC;AAAA,0BACV4D,GAAG,GACH;AAAE9E,QAAAA,MAAM,EAAE/L;AAAV,OADG,GAEH4Q,UAAU,CAAC1D,MAAX,CACE,UAACC,GAAD,EAAMvD,SAAN;AAAA;;AAAA,4BACKuD,GADL,6BAEGuD,cAAc,CAAC9G,SAAD,CAFjB,IAE+B5J,KAF/B;AAAA,OADF,EAKE,EALF,CAHU;AAAA,KAAD,CAAf;AAWD,GAlBD;AAAA,CADF;;AAqBA,IAAMkM,qBAAqB,GACzB,SADIA,qBACJ,CAAkB/K,KAAlB;AAAA,SACA,UAACgJ,IAAD;AAAA,WACE8C,QAAQ,CAAC;AAAA,aAAO;AACdb,QAAAA,YAAY,EAAEjB,EAAE,CAAChK,KAAK,CAACiL,YAAN,CAAmBjC,IAAnB,CAAD;AADF,OAAP;AAAA,KAAD,CADV;AAAA,GADA;AAAA,CADF;;AAeA,IAAM2G,UAAU,GAAG,SAAbA,UAAa,CAAC9D,MAAD;AACjB,MAAMY,QAAQ,GAAGC,GAAG,CAACP,mBAAD,CAApB;;AACA,MAAMY,UAAU,GAAG,SAAbA,UAAa,CAAChD,QAAD;AAAA,WAAyB;AAC1CgD,MAAAA,UAAU,EAAEhD,QAAQ,CAACrJ,GAAT,CAAa,UAACsB,CAAD;AAAA,eAAUyK,QAAV,SAAsBzK,CAAtB;AAAA,OAAb,EAAwCkB,IAAxC,CAA6C,IAA7C;AAD8B,KAAzB;AAAA,GAAnB;;AAGA,SAAO4I,QAAQ,CACb;AAAA,uCACEG,eADF;AAAA,QACEA,eADF,sCACoB,KADpB;AAAA,uCAEEC,yBAFF;AAAA,QAEEA,yBAFF,sCAE8B,KAF9B;AAAA,uCAGEoB,mBAHF;AAAA,QAGEA,mBAHF,sCAGwB,KAHxB;AAAA,WAKEP,UAAU,CACR,CACEd,eAAe,GAAG,OAAH,GAAa,IAD9B,EAEEC,yBAAyB,GAAG,kBAAH,GAAwB,IAFnD,EAGEoB,mBAAmB,GAAG,YAAH,GAAkB,IAHvC,EAIEvL,MAJF,CAIS5C,SAJT,CADQ,CALZ;AAAA,GADa,CAAf;AAcD,CAnBD;;AAqBA,IAAMyQ,WAAW,GAAkBC,MAAM,CAAC,UAAD,CAAzC;;AAEA,SAAS/D,QAAT,CACEgE,SADF,EAEExD,OAFF;;;MAEEA;AAAAA,IAAAA,UAAmB;;;AAEnB,6BACGsD,WADH,IACiB;AACbE,IAAAA,SAAS,EAATA,SADa;AAEbxD,IAAAA,OAAO,EAAPA;AAFa,GADjB;AAMD;;AAWD,IAAMyD,QAAQ,GAAG,SAAXA,QAAW,CAAIlR,KAAJ;AAAA,SACfM,SAAS,CAACN,KAAD,CAAT,IAAqBA,KAAiB,KAAK,KAD5B;AAAA,CAAjB;AAGA;;;;;;;;;;;;;;;;SAcgBmR,YACdC;AAEA;AACA;AACA;AACA,EAAwBlI,OAAO,CAAI,EAAJ,EAAe,IAAf;;;AAE/B,SAAO;AAEHmI,EAAAA,IAFG;AAAA,WAML;UAAGlQ,eAAAA;;AACD,UAAI,CAACb,SAAS,CAACa,KAAD,CAAd,EAAuB;AACrB;AACA,cAAMN,eAAN;AACD;AAED;AACA;;;AACA,UAAMyQ,iBAAiB,GAAGD,IAAI,CAACnI,OAAO,CAAC/H,KAAD,CAAR,CAA9B;;AAEA,UAAMoQ,cAAc,GAAG,UACjBhB,KAAK,CAACC,OAAN,CAAcc,iBAAd,IACAA,iBADA,GAEA,CAACA,iBAAD,CAHiB,GAIrBR,UAAU,CAAA,CAJW,GAKrB5N,MALqB,CAKdgO,QALc,CAAvB;AAQA;;AACA,UAAMzD,OAAO,GAAG8D,cAAc,CAACrE,MAAf,CACd,UAACC,GAAD,EAAMhK,CAAN;AAAA,4BAAkBgK,GAAlB,EAA0BhK,CAAC,CAAC4N,WAAD,CAAD,CAAetD,OAAzC;AAAA,OADc,EAEd,EAFc,CAAhB;AAKA;;AACA,aAAO8D,cAAc,CAAC1P,GAAf,CAAmB,UAACsB,CAAD;AAAA,eAAOA,CAAC,CAAC4N,WAAD,CAAD,CAAeE,SAAf,CAAyBxD,OAAzB,CAAP;AAAA,OAAnB,CAAP;AACD,KAhCI;AAAA,GAAP;AAiCD;;;;"}
1
+ {"version":3,"file":"index.module.js","sources":["../src/util.ts","../src/lib.ts","../src/TokenInjector.tsx","../src/helper.ts","../src/SetThemeScript.tsx","../src/index.ts"],"sourcesContent":["import {\n applyEffect,\n customPropertyToken,\n filterObject,\n flatMapObject,\n} from '@charcoal-ui/utils'\nimport { CharcoalAbstractTheme } from '@charcoal-ui/theme'\nimport { CSSObject } from 'styled-components'\n\n/**\n * Function used to assert a given code path is unreachable\n */\nexport function unreachable(): never\n/**\n * Function used to assert a given code path is unreachable.\n * Very useful for ensuring switches are exhaustive:\n *\n * ```ts\n * switch (a.type) {\n * case Types.A:\n * case Types.B:\n * break\n * default:\n * unreachable(a) // will cause a build error if there was\n * // a Types.C that was not checked\n * }\n * ```\n *\n * @param value Value to be asserted as unreachable\n */\n// NOTE: Uses separate overloads, _not_ `value?: never`, to not allow `undefined` to be passed\n// eslint-disable-next-line @typescript-eslint/unified-signatures\nexport function unreachable(value: never): never\nexport function unreachable(value?: never): never {\n throw new Error(\n arguments.length === 0\n ? 'unreachable'\n : `unreachable (${JSON.stringify(value)})`\n )\n}\n\n/**\n * Check whether a value is non-null and non-undefined\n *\n * @param value nullable\n */\nexport const isPresent = <T>(value: T): value is NonNullable<T> => value != null\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Head<U> = U extends [infer T, ...any[]] ? T : never\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Tail<U> = U extends [any, any, ...any[]]\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((...args: U) => any) extends (head: any, ...args: infer T) => any\n ? T\n : never\n : never\n// Buggy at ts@4.0.0-dev20200506\n// type Tail<U> = U extends [any, ...infer T] ? T : never\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype RecursiveObjectAssign<T, S extends any[]> = {\n 0: T & Head<S>\n 1: RecursiveObjectAssign<T & Head<S>, Tail<S>>\n}[Tail<S> extends never ? 0 : 1]\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ObjectAssign<T extends any[]> = RecursiveObjectAssign<\n Record<string, unknown>,\n T\n>\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function objectAssign<T extends any[]>(...sources: T) {\n return Object.assign({}, ...sources) as ObjectAssign<T>\n}\n\nexport function objectKeys<V extends object, K extends keyof V>(obj: V) {\n return Object.keys(obj) as K[]\n}\n\nexport interface ReadonlyArrayConstructor {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isArray(value: any): value is readonly any[]\n}\n\nexport function extractNonNullKeys<V, K extends keyof V>(obj: {\n [key in K]: V[key]\n}) {\n return Object.entries(obj)\n .filter(([_, v]) => v !== null)\n .map(([k]) => k) as { [key in K]: V[key] extends null ? never : key }[K][]\n}\n\nexport const noThemeProvider = new Error(\n '`theme` is invalid. `<ThemeProvider>` is not likely mounted.'\n)\n\ntype NonNullableCSSObject = Record<keyof CSSObject, string | number>\n\n/**\n * 子孫要素で使われるカラーテーマの CSS Variables を上書きする\n *\n * @params colorParams - 上書きしたい色の定義( `theme.color` の一部だけ書けば良い )\n * @params effectParams - effect の定義を上書きしたい場合は渡す(必須ではない)\n *\n * @example\n * ```tsx\n * const LocalTheme = styled.div`\n * ${defineThemeVariables({ text1: '#ff0000' })}\n * // `text1` is now defined as red\n * ${theme((o) => [o.font.text1])}\n * `\n * ```\n */\nexport function defineThemeVariables(\n colorParams: Partial<CharcoalAbstractTheme['color']>,\n effectParams?: Partial<CharcoalAbstractTheme['effect']>\n) {\n return function toCssObject(props: {\n theme?: Pick<CharcoalAbstractTheme, 'effect'>\n }): NonNullableCSSObject {\n if (!isPresent(props.theme)) {\n throw noThemeProvider\n }\n\n const colors = filterObject(colorParams, isPresent)\n\n // flatMapObject の中で毎回 Object.entries を呼ぶのは無駄なので外で呼ぶ\n const effects = Object.entries({\n ...props.theme.effect,\n ...effectParams,\n })\n\n return flatMapObject(colors, (colorKey, color) => [\n [customPropertyToken(colorKey), color],\n\n ...effects.map<[string, string]>(([effectKey, effect]) => [\n customPropertyToken(colorKey, [effectKey]),\n applyEffect(color, [effect]),\n ]),\n ])\n }\n}\n","import { Key } from '@charcoal-ui/theme'\nimport { unreachable } from './util'\n\n/**\n * 配列で指定したプロパティを動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param member オブジェクトに生やすプロパティ一覧\n * @param chain プロパティに格納される値を生成する関数\n *\n * @example\n *\n * const o = factory({}, ['red', 'blue'],\n * color => hex(color)\n * )\n *\n * console.log(o.red) //=> #ff0000\n */\nexport const factory = <TSource, TMember extends readonly Key[], TValue>(\n source: TSource,\n member: TMember,\n chain: (key: TMember[number]) => TValue\n) =>\n Object.defineProperties(\n source,\n Object.fromEntries(\n member.map((key) => [\n key,\n { get: () => chain(key), enumerable: true, configurable: true },\n ])\n )\n ) as TSource & { readonly [key in TMember[number]]: TValue }\n\n/**\n * 配列で指定した名前のメソッドを動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param member オブジェクトに生やすメソッド名一覧\n * @param chain メソッドの戻り値になる値を生成する関数\n *\n * @example\n *\n * const o = argumentedFactory({}, ['red', 'blue'],\n * (color, alpha: number) => hex(color, alpha)\n * )\n *\n * console.log(o.red(0.5)) //=> #ff000077\n */\nexport const argumentedFactory = <\n TSource,\n TMember extends readonly string[],\n TValue,\n TArguments extends unknown[]\n>(\n source: TSource,\n member: TMember,\n chain: (key: TMember[number], ...args: TArguments) => TValue\n) =>\n Object.defineProperties(\n source,\n Object.fromEntries(\n member.map((key) => [\n key,\n {\n value: (...args: TArguments) => chain(key, ...args),\n enumerable: true,\n configurable: true,\n },\n ])\n )\n ) as TSource & {\n readonly [key in TMember[number]]: (...args: TArguments) => TValue\n }\n\n/**\n * オブジェクトで指定したプロパティ名と値を動的に生やす\n *\n * @param source 拡張するオブジェクト\n * @param def オブジェクトに生やす定義(プロパティ名と値)\n *\n * @example\n *\n * const o = constFactory({}, {\n * red: '#f00',\n * blue: '#00f',\n * })\n *\n * console.log(o.red) //=> #f00\n */\nexport const constFactory = <TSource, TDef extends { [key: string]: unknown }>(\n source: TSource,\n def: TDef\n) =>\n factory(source, Object.keys(def), (key) => def[key]) as TSource &\n Readonly<TDef>\n\n/**\n * 配列で指定したモディファイア(プロパティ)をチェーン可能な再帰オブジェクトを動的に生やす\n *\n * @param modifiers オブジェクトに生やすモディファイヤ一覧\n * @param source 指定されたモディファイヤの一覧から値を生成する関数\n *\n * @example\n *\n * const o = modifiedArgumentedFactory(['red', 'blue'],\n * modifiers => modifiers.map(color => hex(color)).join(',')\n * )\n *\n * console.log(o.red.blue) => #f00,#00f\n */\nexport const modifiedFactory = <TSource, T extends Key>(\n modifiers: readonly T[],\n source: (applied: readonly T[]) => TSource\n) =>\n (function recursiveModifiedFactory(\n applied: readonly T[]\n ): Modified<TSource, T> {\n const notApplied = modifiers.filter((v) => !applied.includes(v))\n return factory(source(applied), notApplied, (modifier) =>\n notApplied.length === 0\n ? unreachable()\n : recursiveModifiedFactory([...applied, modifier])\n )\n })([])\n\nexport type Modified<TSource, TModifiers extends Key> = TSource & {\n readonly [key in TModifiers]: Modified<TSource, Exclude<TModifiers, key>>\n}\n\n/**\n * 配列で指定したモディファイア(メソッド)をチェーン可能な再帰オブジェクトを動的に生やす\n *\n * @param modifiers オブジェクトに生やすモディファイヤ一覧\n * @param source 指定されたモディファイヤの一覧から値を生成する関数\n * @param _inferPhantom 関数形式のモディファイヤの引数型を推論するためのメタタイプ(引数の個数に合わせてタプルで指定する)\n *\n * @example\n *\n * const o = modifiedArgumentedFactory(['red', 'blue'],\n * modifiers => modifiers.map(([color, alpha]) => hex(color, alpha)).join(',')\n * , {} as [number])\n *\n * console.log(o.red(0.5).blue(1)) => #ff000077,#0000ffff\n */\nexport const modifiedArgumentedFactory = <\n TSource,\n T extends string,\n TArguments extends unknown[]\n>(\n modifiers: readonly T[],\n source: (applied: readonly [T, ...TArguments][]) => TSource,\n ..._inferPhantom: TArguments\n) =>\n (function recursiveModifiedFactory(\n applied: readonly [T, ...TArguments][]\n ): ModifiedArgumented<TSource, T, TArguments> {\n const notApplied = modifiers.filter(\n (v) => !applied.map(([w]) => w).includes(v)\n )\n return argumentedFactory(\n source(applied),\n notApplied,\n (modifier, ...args: TArguments) =>\n notApplied.length === 0\n ? unreachable()\n : recursiveModifiedFactory([...applied, [modifier, ...args]])\n )\n })([])\n\nexport type ModifiedArgumented<\n TSource,\n TModifiers extends string,\n TArguments extends unknown[]\n> = TSource & {\n readonly [key in TModifiers]: (\n ...args: TArguments\n ) => ModifiedArgumented<TSource, Exclude<TModifiers, key>, TArguments>\n}\n\nexport const variable = (value: string) => `var(${value})`\n","import React from 'react'\nimport { createGlobalStyle, css } from 'styled-components'\nimport { CharcoalAbstractTheme } from '@charcoal-ui/theme'\nimport { defineThemeVariables } from './util'\n\nconst GlobalStyle = createGlobalStyle`\n ${<T extends Theme>({\n themeMap,\n background,\n }: {\n themeMap: ThemeMap<T>\n background?: keyof ThemeMap<T>[string]['color']\n }) =>\n Object.entries(themeMap).map(([key, theme]) =>\n key.startsWith('@media')\n ? css`\n ${key} {\n :root {\n ${background !== undefined &&\n css`\n background-color: ${theme.color[background]};\n `}\n ${defineColorVariableCSS(theme)}\n }\n }\n `\n : css`\n /* stylelint-disable-next-line no-duplicate-selectors */\n ${key} {\n ${background !== undefined &&\n css`\n background-color: ${theme.color[background]};\n `}\n ${defineColorVariableCSS(theme)}\n }\n `\n )}\n`\n\nexport interface ThemeMap<T extends Theme> {\n ':root': T\n [mediaQuery: `@media (${string})`]: T\n [selector: string]: T\n}\n\ntype Theme = Pick<CharcoalAbstractTheme, 'color' | 'effect'>\n\nexport default function TokenInjector<T extends Theme>({\n theme: themeMap,\n background,\n}: {\n theme: ThemeMap<T>\n background?: keyof ThemeMap<T>[string]['color']\n}) {\n return <GlobalStyle themeMap={themeMap} background={background} />\n}\n\nconst defineColorVariableCSS = (theme: Theme) =>\n Object.entries(defineThemeVariables(theme.color)({ theme }))\n .map(([varName, value]) => variableDefinition(varName, value.toString()))\n .join(';')\n\nconst variableDefinition = (prop: string, value: string) => `${prop}: ${value}`\n","import { useEffect, useMemo, useState } from 'react'\n\nexport const LOCAL_STORAGE_KEY = 'charcoal-theme'\nexport const DEFAULT_ROOT_ATTRIBUTE = 'theme'\n\nconst keyStringRegExp = new RegExp(/^(\\w|-)+$/)\n\n/**\n * 文字列が英数字_-のみで構成されているか検証する。不正な文字列ならエラーを投げる\n * @param key 検証するキー\n */\nexport function assertKeyString(key: string) {\n if (!keyStringRegExp.test(key)) {\n throw new Error(`Unexpected key :${key}, expect: /^(\\\\w|-)+$/`)\n }\n}\n\n/**\n * `<html data-theme=\"dark\">` のような設定を行うデフォルトのセッター\n */\nexport const themeSetter =\n (attr: string = DEFAULT_ROOT_ATTRIBUTE) =>\n (theme: string | undefined) => {\n assertKeyString(attr)\n if (theme !== undefined) {\n document.documentElement.dataset[attr] = theme\n } else {\n delete document.documentElement.dataset[attr]\n }\n }\n\n/**\n * `<html data-theme=\"dark\">` にマッチするセレクタを生成する\n */\nexport function themeSelector<\n T extends string,\n S extends string = typeof DEFAULT_ROOT_ATTRIBUTE\n>(theme: T, attr?: S) {\n return `:root[data-${attr ?? DEFAULT_ROOT_ATTRIBUTE}='${theme}']` as const\n}\n\n/**\n * prefers-color-scheme を利用する media クエリを生成する\n */\nexport function prefersColorScheme<T extends 'light' | 'dark'>(theme: T) {\n return `@media (prefers-color-scheme: ${theme})` as const\n}\n\n/**\n * LocalStorageからテーマの情報を取得して、変化時にテーマをセットするhooks\n */\nexport function useThemeSetter({\n key = LOCAL_STORAGE_KEY,\n setter = themeSetter(),\n}: { key?: string; setter?: (theme: string | undefined) => void } = {}) {\n const [theme, , system] = useTheme(key)\n\n useEffect(() => {\n if (theme === undefined) {\n return\n }\n // prefers-color-scheme から値を取っている場合にはcssのみで処理したいのでアンセットする\n setter(system ? undefined : theme)\n }, [setter, system, theme])\n}\n\n/**\n * 同期的にLocalStorageからテーマを取得するヘルパ\n */\nexport function getThemeSync(key: string = LOCAL_STORAGE_KEY) {\n const theme = localStorage.getItem(key)\n return theme\n}\n\n/**\n * LocalStorage, prefers-color-scheme からテーマの情報を取得して、現在のテーマを返すhooks\n *\n * `dark` `light` という名前だけは特別扱いされていて、prefers-color-schemeにマッチした場合に返ります\n */\nexport const useTheme = (key: string = LOCAL_STORAGE_KEY) => {\n assertKeyString(key)\n const isDark = useMedia('(prefers-color-scheme: dark)')\n const media = isDark !== undefined ? (isDark ? 'dark' : 'light') : undefined\n const [local, setTheme, ready] = useLocalStorage<string>(key)\n const theme = !ready || media === undefined ? undefined : local ?? media\n const system = local === undefined\n return [theme, setTheme, system] as const\n}\n\nexport function useLocalStorage<T>(key: string, defaultValue?: () => T) {\n const [ready, setReady] = useState(false)\n const [state, setState] = useState<T>()\n const defaultValueMemo = useMemo(() => defaultValue?.(), [defaultValue])\n\n useEffect(() => {\n fetch()\n window.addEventListener('storage', handleStorage)\n return () => {\n window.removeEventListener('storage', handleStorage)\n }\n })\n\n const handleStorage = (e: StorageEvent) => {\n if (e.storageArea !== localStorage) {\n return\n }\n if (e.key !== key) {\n return\n }\n fetch()\n }\n\n const fetch = () => {\n const raw = localStorage.getItem(key)\n setState((raw !== null ? deserialize(raw) : null) ?? defaultValueMemo)\n setReady(true)\n }\n\n const set = (value: T | undefined) => {\n if (value === undefined) {\n // undefinedがセットされる場合にはkeyごと削除\n localStorage.removeItem(key)\n } else {\n const raw = serialize(value)\n localStorage.setItem(key, raw)\n }\n\n // 同一ウィンドウではstorageイベントが発火しないので、手動で発火させる\n const event = new StorageEvent('storage', {\n bubbles: true,\n cancelable: false,\n key,\n url: location.href,\n storageArea: localStorage,\n })\n dispatchEvent(event)\n }\n\n return [state ?? defaultValueMemo, set, ready] as const\n}\n\nfunction deserialize<T>(raw: string): T {\n try {\n return JSON.parse(raw) as T\n } catch {\n // syntax error はすべて文字列として扱う\n return raw as unknown as T\n }\n}\n\nfunction serialize(value: unknown): string {\n if (typeof value === 'string') {\n return value\n } else {\n return JSON.stringify(value)\n }\n}\n\nexport function useMedia(query: string) {\n const [match, setState] = useState<boolean>()\n\n useEffect(() => {\n const matcher = window.matchMedia(query)\n\n const onChange = () => {\n setState(matcher.matches)\n }\n\n matcher.addEventListener('change', onChange)\n\n setState(matcher.matches)\n\n return () => {\n matcher.removeEventListener('change', onChange)\n }\n }, [query])\n\n return match\n}\n","import React from 'react'\nimport {\n assertKeyString,\n DEFAULT_ROOT_ATTRIBUTE,\n LOCAL_STORAGE_KEY,\n} from './helper'\n\ninterface Props {\n localStorageKey: string\n rootAttribute: string\n}\n\n/**\n * 同期的にテーマをローカルストレージから取得してhtmlの属性に設定するコードを取得する\n * @param props localStorageのキー、htmlのdataになる属性のキーを含むオブジェクト\n * @returns ソースコードの文字列\n */\nexport function makeSetThemeScriptCode({\n localStorageKey = defaultProps.localStorageKey,\n rootAttribute = defaultProps.rootAttribute,\n}: Partial<Props> = defaultProps) {\n assertKeyString(localStorageKey)\n assertKeyString(rootAttribute)\n return `'use strict';\n(function () {\n var localStorageKey = '${localStorageKey}'\n var rootAttribute = '${rootAttribute}'\n var currentTheme = localStorage.getItem(localStorageKey);\n if (currentTheme) {\n document.documentElement.dataset[rootAttribute] = currentTheme;\n }\n})();\n`\n}\n\n/**\n * 同期的にテーマをローカルストレージから取得してhtmlの属性に設定するスクリプトタグ\n * @param props localStorageのキー、htmlのdataになる属性のキーを含むオブジェクト\n * @returns\n */\nexport function SetThemeScript(props: Props) {\n const src = makeSetThemeScriptCode(props)\n return (\n <script\n dangerouslySetInnerHTML={{\n __html: src,\n }}\n />\n )\n}\n\nconst defaultProps: Props = {\n localStorageKey: LOCAL_STORAGE_KEY,\n rootAttribute: DEFAULT_ROOT_ATTRIBUTE,\n}\n\nSetThemeScript.defaultProps = defaultProps\n","import { CSSObject, ThemedStyledInterface } from 'styled-components'\nimport warning from 'warning'\nimport {\n factory,\n modifiedFactory,\n constFactory,\n modifiedArgumentedFactory,\n variable,\n} from './lib'\nimport {\n EffectType,\n CharcoalAbstractTheme as Theme,\n Key,\n} from '@charcoal-ui/theme'\nimport {\n objectAssign,\n unreachable,\n ReadonlyArrayConstructor,\n objectKeys,\n isPresent,\n noThemeProvider,\n} from './util'\nimport { columnSystem } from '@charcoal-ui/foundation'\nimport {\n halfLeading,\n applyEffect,\n applyEffectToGradient,\n dur,\n gradient,\n GradientDirection,\n notDisabledSelector,\n disabledSelector,\n px,\n customPropertyToken,\n} from '@charcoal-ui/utils'\nexport { type Modified, type ModifiedArgumented } from './lib'\nexport { default as TokenInjector } from './TokenInjector'\nexport {\n getThemeSync,\n themeSetter,\n themeSelector,\n prefersColorScheme,\n useTheme,\n useThemeSetter,\n useLocalStorage,\n useMedia,\n} from './helper'\nexport { defineThemeVariables } from './util'\nexport * from './SetThemeScript'\n\nconst colorProperties = ['bg', 'font'] as const\ntype ColorProperty = typeof colorProperties[number]\n\nconst spacingProperties = ['margin', 'padding'] as const\nconst spacingDirections = [\n 'top',\n 'right',\n 'bottom',\n 'left',\n 'vertical',\n 'horizontal',\n 'all',\n] as const\ntype SpacingProperty = typeof spacingProperties[number]\ntype SpacingDirection = typeof spacingDirections[number]\n\nconst fixedProperties = ['width', 'height'] as const\ntype FixedProperty = typeof fixedProperties[number]\n\nconst borderDirections = ['top', 'right', 'bottom', 'left'] as const\ntype BorderDirection = typeof borderDirections[number]\n\nconst outlineType = ['focus'] as const\ntype OutlineType = typeof outlineType[number]\n\n/**\n * `theme(o => [...])` の `o` の部分を構築する\n *\n * @param theme テーマオブジェクト\n * @param isPhantom 型推論のためだけに使う場合にランタイムコストをゼロにするフラグ\n */\nfunction builder<T extends Theme>(\n theme: {\n // factoryの第二引数に入れ込むものだけ明示的に型変数を展開しておくことで型の具象化を遅延する\n color: T['color']\n gradientColor: T['gradientColor']\n border: T['border']\n outline: T['outline']\n } & Omit<T, 'color' | 'gradientColor' | 'border' | 'outline'>,\n isPhantom = false\n) {\n if (isPhantom) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {} as never\n }\n const colors = objectKeys(theme.color)\n const effects = objectKeys(theme.effect)\n\n // 色\n const gradientColors = objectKeys(theme.gradientColor)\n const colorCss = createColorCss(theme)\n const gradientColorCss = createGradientColorCss(theme)\n const colorObject = constFactory(\n {},\n {\n bg: objectAssign(\n factory({}, colors, (color) =>\n modifiedFactory(effects, (modifiers) =>\n colorCss('bg', color, modifiers)\n )\n ),\n factory(\n {},\n gradientColors,\n (color) => (direction: GradientDirection) =>\n modifiedFactory(effects, (modifiers) =>\n gradientColorCss(color, modifiers, direction)\n )\n )\n ),\n font: factory({}, colors, (color) =>\n modifiedFactory(effects, (modifiers) =>\n colorCss('font', color, modifiers)\n )\n ),\n }\n )\n\n // タイポグラフィ\n const typographyModifiers = [\n // TODO\n 'monospace',\n 'bold',\n 'preserveHalfLeading',\n ] as const\n const typographyCss = createTypographyCss(theme)\n const typographyObject = factory(\n {},\n ['typography'] as const,\n (_) => (size: keyof T['typography']['size']) =>\n modifiedFactory(typographyModifiers, (modifiers) =>\n typographyCss(size, {\n preserveHalfLeading: modifiers.includes('preserveHalfLeading'),\n monospace: modifiers.includes('monospace'),\n bold: modifiers.includes('bold'),\n })\n )\n )\n\n // スペーシング\n const spacingCss = createSpacingCss(theme)\n const spacingObject = factory({}, spacingProperties, (spacingProperty) =>\n modifiedArgumentedFactory(\n spacingDirections,\n (modifiers) => spacingCss(spacingProperty, modifiers),\n {} as keyof T['spacing'] | 'auto' // 推論のためのメタタイプ\n )\n )\n\n // 大きさ\n const fixedPxCss = createFixedPxCss(theme)\n const fixedColumnCss = createFixedColumnCss(theme)\n const fixedRelativeCss = createFixedRelativeCss(theme)\n const fixedObject = factory({}, fixedProperties, (property) =>\n constFactory(\n {},\n {\n px: (size: keyof T['spacing'] | 'auto') => fixedPxCss(property, size),\n column: (span: number) => fixedColumnCss(property, span),\n auto: fixedRelativeCss(property, 'auto'),\n full: fixedRelativeCss(property, '100%'),\n }\n )\n )\n\n // 要素へのエフェクト (etc: 透過)\n const elementEffectCss = createElementEffectCss(theme)\n const elementEffectObject = modifiedFactory(\n objectKeys(theme.elementEffect),\n (modifiers) => elementEffectCss(modifiers)\n )\n\n // ボーダー\n const borderCss = createBorderCss(theme)\n const borderObject = constFactory(\n {},\n {\n border: factory({}, objectKeys(theme.border), (variant) =>\n modifiedFactory(borderDirections, (modifiers) =>\n borderCss(variant, modifiers)\n )\n ),\n }\n )\n\n // 角丸\n const borderRadiusCss = createBorderRadiusCss(theme)\n const borderRadiusObject = constFactory(\n {},\n {\n borderRadius: (radius: keyof T['borderRadius']) =>\n borderRadiusCss(radius),\n }\n )\n\n // アウトライン\n const outlineCss = createOutlineColorCss(theme)\n const outlineObject = constFactory(\n {},\n {\n outline: factory({}, objectKeys(theme.outline), (variant) =>\n modifiedFactory(outlineType, (modifiers) =>\n outlineCss(variant, modifiers)\n )\n ),\n }\n )\n\n return objectAssign(\n colorObject,\n typographyObject,\n spacingObject,\n fixedObject,\n elementEffectObject,\n borderObject,\n borderRadiusObject,\n outlineObject\n )\n}\n\nfunction targetProperty(target: ColorProperty) {\n return target === 'bg' ? 'background-color' : 'color'\n}\n\nfunction isSupportedEffect(effect: Key): effect is EffectType {\n return ['hover', 'press', 'disabled'].includes(effect as string)\n}\n\nfunction onEffectPseudo(effect: EffectType, css: CSSObject) {\n return effect === 'hover'\n ? { '&:hover': { [notDisabledSelector]: css } }\n : effect === 'press'\n ? { '&:active': { [notDisabledSelector]: css } }\n : // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n effect === 'disabled'\n ? { [disabledSelector]: css }\n : unreachable(effect)\n}\n\nconst createColorCss =\n <T extends Theme>(_theme: T) =>\n (\n target: ColorProperty,\n color: keyof T['color'],\n effects: readonly (keyof T['effect'])[] = []\n ): Internal =>\n internal(\n () => ({\n [targetProperty(target)]: variable(\n customPropertyToken(color.toString())\n ),\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n [targetProperty(target)]: variable(\n customPropertyToken(color.toString(), [effect])\n ),\n }),\n }),\n {}\n ),\n }),\n effects.length > 0\n ? target === 'font'\n ? {\n colorTransition: true,\n }\n : {\n backgroundColorTransition: true,\n }\n : {}\n )\n\n// TODO: deprecate\nconst TRANSITION_DURATION = 0.2\n\nconst createGradientColorCss =\n <T extends Theme>(theme: T) =>\n (\n color: keyof T['gradientColor'],\n effects: readonly (keyof T['effect'])[] = [],\n direction: GradientDirection\n ): Internal => {\n const toLinearGradient = gradient(direction)\n return internal((context) => {\n const optimized = !useHalfLeadingCanceller(context)\n const duration = dur(TRANSITION_DURATION)\n if (optimized && effects.length > 0) {\n return {\n position: 'relative',\n zIndex: 0,\n overflow: 'hidden',\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n '&::before': {\n zIndex: -1,\n ...overlayElement,\n transition: `${duration} background-color`,\n },\n '&::after': {\n zIndex: -2,\n ...overlayElement,\n ...toLinearGradient(theme.gradientColor[color]),\n },\n ...onEffectPseudo(effect, {\n '&::before': {\n backgroundColor: applyEffect(\n null,\n theme.effect[effect] ?? []\n ),\n },\n }),\n }),\n {}\n ),\n }\n } else {\n warning(\n effects.length === 0,\n // eslint-disable-next-line max-len\n `'Transition' will not be applied. You can get around this by specifying 'preserveHalfLeading' or both 'padding' and 'typograpy'.`\n )\n return {\n ...toLinearGradient(theme.gradientColor[color]),\n ...effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n ...toLinearGradient(\n applyEffectToGradient(theme.effect[effect] ?? [])(\n theme.gradientColor[color]\n )\n ),\n }),\n }),\n {}\n ),\n }\n }\n })\n }\n\n/**\n * @see https://developer.mozilla.org/ja/docs/Web/CSS/:focus-visible#selectively_showing_the_focus_indicator\n */\nconst onFocus = (css: CSSObject) => ({\n [notDisabledSelector]: {\n '&:focus, &:active': {\n outline: 'none',\n ...css,\n },\n\n '&:focus:not(:focus-visible), &:active:not(:focus-visible)': {\n outline: 'none',\n },\n\n '&:focus-visible': {\n outline: 'none',\n ...css,\n },\n },\n})\n\nconst outlineCss = (weight: number, color: string) => ({\n boxShadow: `0 0 0 ${px(weight)} ${color}`,\n})\n\nconst createOutlineColorCss =\n <T extends Theme>(theme: T) =>\n (\n variant: keyof T['outline'],\n modifiers: readonly OutlineType[]\n ): Internal => {\n const weight = theme.outline[variant].weight\n const color = theme.outline[variant].color\n return internal(\n () =>\n modifiers.includes('focus')\n ? onFocus(outlineCss(weight, color))\n : { '&&': { [notDisabledSelector]: outlineCss(weight, color) } },\n {\n boxShadowTransition: true,\n }\n )\n }\n\nconst overlayElement: CSSObject = {\n content: \"''\",\n display: 'block',\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n}\n\n// half-leadingをキャンセルするとき && 垂直方向のpaddingが無い時\n// -> before/afterを入れる\nconst useHalfLeadingCanceller = ({\n cancelHalfLeadingPx,\n hasVerticalPadding = false,\n}: Context) => cancelHalfLeadingPx !== undefined && !hasVerticalPadding\n\nconst createTypographyCss =\n <T extends Theme>(theme: T) =>\n (\n size: keyof T['typography']['size'],\n options: {\n preserveHalfLeading?: boolean\n monospace?: boolean\n bold?: boolean\n } = {}\n ): Internal => {\n const {\n preserveHalfLeading = false,\n monospace = false,\n bold = false,\n } = options\n const descriptor = theme.typography.size[size]\n const margin = -halfLeading(descriptor)\n\n return internal(\n (context) => ({\n fontSize: px(descriptor.fontSize),\n lineHeight: px(descriptor.lineHeight),\n ...(monospace && {\n fontFamily: 'monospace',\n }),\n ...(bold && {\n fontWeight: 'bold',\n }),\n ...(useHalfLeadingCanceller(context) && {\n // prevent margin collapsing\n display: 'flow-root',\n // cancel half-leading with negative margin\n '&::before': {\n ...leadingCancel,\n marginTop: px(margin),\n },\n '&::after': {\n ...leadingCancel,\n marginBottom: px(margin),\n },\n }),\n }),\n !preserveHalfLeading\n ? {\n cancelHalfLeadingPx: margin,\n }\n : {}\n )\n }\n\nconst leadingCancel: CSSObject = {\n display: 'block',\n width: 0,\n height: 0,\n content: `''`,\n}\n\nfunction spacingProperty(\n property: SpacingProperty,\n direction: 'top' | 'right' | 'bottom' | 'left'\n) {\n return `${property}-${direction}`\n}\n\nconst createSpacingCss =\n <T extends Theme>(theme: { spacing: T['spacing'] }) =>\n (\n property: SpacingProperty,\n modifiers: readonly [SpacingDirection, keyof T['spacing'] | 'auto'][]\n ): Internal => {\n const { top, right, bottom, left } = modifiers.reduce(\n (acc, [direction, size]) => {\n if (direction === 'all') {\n acc.top = size\n acc.right = size\n acc.bottom = size\n acc.left = size\n } else if (direction === 'vertical') {\n acc.top = size\n acc.bottom = size\n } else if (direction === 'horizontal') {\n acc.right = size\n acc.left = size\n } else {\n acc[direction] = size\n }\n return acc\n },\n {} as Partial<\n Record<'top' | 'right' | 'bottom' | 'left', keyof T['spacing'] | 'auto'>\n >\n )\n\n const hasVerticalPadding =\n property === 'padding' &&\n top !== undefined &&\n bottom !== undefined &&\n top !== 'auto' &&\n bottom !== 'auto'\n\n return internal(\n ({ cancelHalfLeadingPx = 0 }) => ({\n ...(top !== undefined && {\n [spacingProperty(property, 'top')]:\n top === 'auto'\n ? 'auto'\n : px(\n theme.spacing[top] +\n (hasVerticalPadding ? cancelHalfLeadingPx : 0)\n ),\n }),\n ...(bottom !== undefined && {\n [spacingProperty(property, 'bottom')]:\n bottom === 'auto'\n ? 'auto'\n : px(\n theme.spacing[bottom] +\n (hasVerticalPadding ? cancelHalfLeadingPx : 0)\n ),\n }),\n ...(right !== undefined && {\n [spacingProperty(property, 'right')]:\n right === 'auto' ? 'auto' : px(theme.spacing[right]),\n }),\n ...(left !== undefined && {\n [spacingProperty(property, 'left')]:\n left === 'auto' ? 'auto' : px(theme.spacing[left]),\n }),\n }),\n hasVerticalPadding ? { hasVerticalPadding: true } : {}\n )\n }\n\nconst createFixedPxCss =\n <T extends Theme>(theme: T) =>\n (property: FixedProperty, size: keyof T['spacing'] | 'auto'): Internal =>\n internal(() => ({\n [property]: size === 'auto' ? 'auto' : px(theme.spacing[size]),\n }))\n\nconst createFixedRelativeCss =\n <T extends Theme>(_theme: T) =>\n (property: FixedProperty, amount: '100%' | 'auto'): Internal =>\n internal(() => ({\n [property]: amount,\n }))\n\nconst createFixedColumnCss =\n <T extends Theme>(theme: T) =>\n (property: FixedProperty, span: number): Internal =>\n internal(() => ({\n [property]: px(\n columnSystem(span, theme.grid.unit.column, theme.grid.unit.gutter)\n ),\n }))\n\nconst createElementEffectCss =\n <T extends Theme, TElementEffect extends T['elementEffect']>(theme: {\n elementEffect: TElementEffect\n }) =>\n (effects: readonly (keyof TElementEffect)[] = []): Internal =>\n internal(() =>\n effects.filter(isSupportedEffect).reduce<CSSObject>(\n (acc, effect) => ({\n ...acc,\n ...onEffectPseudo(effect, {\n opacity:\n !(Array as ReadonlyArrayConstructor).isArray(\n theme.elementEffect[effect]\n ) && theme.elementEffect[effect]?.type === 'opacity'\n ? theme.elementEffect[effect]?.opacity\n : unreachable(),\n }),\n }),\n {}\n )\n )\n\nfunction borderProperty(direction: BorderDirection) {\n return `border-${direction}`\n}\n\nfunction borderShorthand(color: string) {\n return `solid 1px ${color}`\n}\n\nconst createBorderCss =\n <T extends Theme>(theme: T) =>\n (\n variant: keyof T['border'],\n directions: readonly BorderDirection[]\n ): Internal => {\n const all = directions.length === 0\n const value = borderShorthand(theme.border[variant].color)\n return internal(() => ({\n ...(all\n ? { border: value }\n : directions.reduce<CSSObject>(\n (acc, direction) => ({\n ...acc,\n [borderProperty(direction)]: value,\n }),\n {}\n )),\n }))\n }\n\nconst createBorderRadiusCss =\n <T extends Theme>(theme: T) =>\n (size: keyof T['borderRadius']): Internal =>\n internal(() => ({\n borderRadius: px(theme.borderRadius[size]),\n }))\n\ninterface Context {\n cancelHalfLeadingPx?: number\n hasVerticalPadding?: boolean\n boxShadowTransition?: boolean\n colorTransition?: boolean\n backgroundColorTransition?: boolean\n}\n\nconst commonSpec = (_theme: unknown): Internal => {\n const duration = dur(TRANSITION_DURATION)\n const transition = (property: string[]) => ({\n transition: property.map((v) => `${duration} ${v}`).join(', '),\n })\n return internal(\n ({\n colorTransition = false,\n backgroundColorTransition = false,\n boxShadowTransition = false,\n }) =>\n transition(\n [\n colorTransition ? 'color' : null,\n backgroundColorTransition ? 'background-color' : null,\n boxShadowTransition ? 'box-shadow' : null,\n ].filter(isPresent)\n )\n )\n}\n\nconst internalSym: unique symbol = Symbol('internal')\n\nfunction internal(\n operation: (context: Context) => CSSObject,\n context: Context = {}\n): Internal {\n return {\n [internalSym]: {\n operation,\n context,\n },\n }\n}\n\nexport interface Internal {\n [internalSym]: {\n operation: (context: Context) => CSSObject\n context: Context\n }\n}\n\ntype Blank = null | undefined | false\n\nconst nonBlank = <T>(value: T): value is T extends Blank ? never : T =>\n isPresent(value) && (value as unknown) !== false\n\n/**\n * `theme(o => [...])` の `theme` ユーティリティを構築する\n *\n * @param _styled styled-componnets の `styled` そのもの (型推論のために用いられる)\n *\n * @example\n *\n * import styled from 'styled-components'\n * const theme = createTheme(styled)\n *\n * @example\n *\n * const theme = createTheme<DefaultTheme>()\n */\nexport function createTheme<T extends Theme>(\n _styled?: ThemedStyledInterface<T>\n) {\n // `theme(o => [...])` の `o` の部分の型推論のためだけに使う意味のない変数\n // Tを型変数のまま渡してcreateThemeが呼ばれるまで型の具象化が行われないようにする\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any\n const _phantomBuilder = builder<T>({} as any, true)\n // ランタイムの `theme(o => [...])` のインターフェースを構築する\n return (\n // ユーザー定義\n spec: (\n o: typeof _phantomBuilder\n ) => Blank | Internal | (Blank | Internal)[]\n ): ThemeProp<T> =>\n ({ theme }) => {\n if (!isPresent(theme)) {\n // テーマが入っていない場合は復旧不可能なのでエラーにする\n throw noThemeProvider\n }\n // styled-componentsのランタイムから受け取ったthemeオブジェクトをbuilderに食わせて`o`をつくる\n // さらに、ユーザー定義にbuilderが構築した`o`を食わせる\n // (`o`を一時変数に入れてしまうと型Tの具象化が行われるので関数合成を優先する)\n const rawSpecDescriptor = spec(builder(theme))\n // ユーザー定義の配列を整形\n const specDescriptor = [\n ...(Array.isArray(rawSpecDescriptor)\n ? rawSpecDescriptor\n : [rawSpecDescriptor]),\n commonSpec(theme),\n ].filter(nonBlank)\n\n // 1パス目\n // 全ユーザー定義を舐めて相互に影響し合う定義をチェックし、その結果(コンテキスト)を取得\n const context = specDescriptor.reduce<Context>(\n (acc, v) => ({ ...acc, ...v[internalSym].context }),\n {}\n )\n // 2パス目\n // コンテキストを見ながら最適化されたCSSを構築\n return specDescriptor.map((v) => v[internalSym].operation(context))\n }\n}\n\nexport type ThemeProp<T> = ({\n theme,\n}: {\n theme: T | undefined\n}) => CSSObject | CSSObject[]\n"],"names":["unreachable","value","Error","arguments","length","JSON","stringify","isPresent","objectAssign","Object","assign","objectKeys","obj","keys","noThemeProvider","defineThemeVariables","colorParams","effectParams","toCssObject","props","theme","colors","filterObject","effects","entries","effect","flatMapObject","colorKey","color","customPropertyToken","map","effectKey","applyEffect","factory","source","member","chain","defineProperties","fromEntries","key","get","enumerable","configurable","argumentedFactory","constFactory","def","modifiedFactory","modifiers","recursiveModifiedFactory","applied","notApplied","filter","v","includes","modifier","modifiedArgumentedFactory","w","variable","GlobalStyle","createGlobalStyle","themeMap","background","startsWith","css","undefined","defineColorVariableCSS","TokenInjector","varName","variableDefinition","toString","join","prop","LOCAL_STORAGE_KEY","DEFAULT_ROOT_ATTRIBUTE","keyStringRegExp","RegExp","assertKeyString","test","themeSetter","attr","document","documentElement","dataset","themeSelector","prefersColorScheme","useThemeSetter","setter","useTheme","system","useEffect","getThemeSync","localStorage","getItem","isDark","useMedia","media","useLocalStorage","local","setTheme","ready","defaultValue","useState","setReady","state","setState","defaultValueMemo","useMemo","fetch","window","addEventListener","handleStorage","removeEventListener","e","storageArea","raw","deserialize","set","removeItem","serialize","setItem","event","StorageEvent","bubbles","cancelable","url","location","href","dispatchEvent","parse","query","match","matcher","matchMedia","onChange","matches","makeSetThemeScriptCode","defaultProps","localStorageKey","rootAttribute","SetThemeScript","src","__html","spacingProperties","spacingDirections","fixedProperties","borderDirections","outlineType","builder","isPhantom","gradientColors","gradientColor","colorCss","createColorCss","gradientColorCss","createGradientColorCss","colorObject","bg","direction","font","typographyModifiers","typographyCss","createTypographyCss","typographyObject","_","size","preserveHalfLeading","monospace","bold","spacingCss","createSpacingCss","spacingObject","spacingProperty","fixedPxCss","createFixedPxCss","fixedColumnCss","createFixedColumnCss","fixedRelativeCss","createFixedRelativeCss","fixedObject","property","px","column","span","auto","full","elementEffectCss","createElementEffectCss","elementEffectObject","elementEffect","borderCss","createBorderCss","borderObject","border","variant","borderRadiusCss","createBorderRadiusCss","borderRadiusObject","borderRadius","radius","outlineCss","createOutlineColorCss","outlineObject","outline","targetProperty","target","isSupportedEffect","onEffectPseudo","notDisabledSelector","disabledSelector","_theme","internal","reduce","acc","colorTransition","backgroundColorTransition","TRANSITION_DURATION","toLinearGradient","gradient","context","optimized","useHalfLeadingCanceller","duration","dur","position","zIndex","overflow","overlayElement","transition","backgroundColor","warning","applyEffectToGradient","onFocus","weight","boxShadow","boxShadowTransition","content","display","width","height","top","left","cancelHalfLeadingPx","hasVerticalPadding","options","descriptor","typography","margin","halfLeading","fontSize","lineHeight","fontFamily","fontWeight","leadingCancel","marginTop","marginBottom","right","bottom","spacing","amount","columnSystem","grid","unit","gutter","opacity","Array","isArray","type","borderProperty","borderShorthand","directions","all","commonSpec","internalSym","Symbol","operation","nonBlank","createTheme","_styled","spec","rawSpecDescriptor","specDescriptor"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@charcoal-ui/styled",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "source": "./src/index.ts",
@@ -29,9 +29,9 @@
29
29
  "typescript": "^4.5.5"
30
30
  },
31
31
  "dependencies": {
32
- "@charcoal-ui/foundation": "^2.3.0",
33
- "@charcoal-ui/theme": "^2.3.0",
34
- "@charcoal-ui/utils": "^2.3.0",
32
+ "@charcoal-ui/foundation": "^2.4.0",
33
+ "@charcoal-ui/theme": "^2.4.0",
34
+ "@charcoal-ui/utils": "^2.4.0",
35
35
  "warning": "^4.0.3"
36
36
  },
37
37
  "peerDependencies": {
@@ -50,5 +50,5 @@
50
50
  "url": "https://github.com/pixiv/charcoal.git",
51
51
  "directory": "packages/styled"
52
52
  },
53
- "gitHead": "b6b0cd6117cf288735bdcf167098ace9b28e0072"
53
+ "gitHead": "db58bc1a8e14d5f1ccb6e1e275fa29cfb3ec4972"
54
54
  }