zova-module-a-style 5.1.13 → 5.1.16

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.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import { BeanBase, BeanInfo, BeanScopeBase, BeanSimple, SymbolBeanFullName, UseScope, beanFullNameFromOnionName, cast, createBeanDecorator, deepExtend, useComputed } from "zova";
2
2
  import { Bean, Scope } from "zova-module-a-bean";
3
3
  import { BeanModelBase } from "zova-module-a-model";
4
- import { isNil } from "@cabloy/utils";
5
4
  import { createTypeStyle, cssRaw, cssRule, style } from "typestyle";
6
5
  //#region src/bean/bean.theme.ts
7
6
  var _dec$1, _dec2$1, _dec3, _dec4, _class$1, _class2, _descriptor;
@@ -240,7 +239,7 @@ var Monkey = class extends BeanSimple {
240
239
  });
241
240
  }
242
241
  _patchStyle(beanInstance, props, ...args) {
243
- if (isNil(props)) return void 0;
242
+ if (!props) return void 0;
244
243
  if (this.sys.env.META_MODE === "development") {
245
244
  if (props && typeof props === "object") props = Object.assign({ $debugName: beanInstance[SymbolBeanFullName].replaceAll(".", "_") }, props);
246
245
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/bean/bean.theme.ts","../src/config/config.ts","../src/.metadata/this.ts","../src/monkey.ts","../src/.metadata/index.ts","../src/lib/style.ts","../src/lib/theme.ts","../src/lib/themeBase.ts"],"sourcesContent":["import { beanFullNameFromOnionName, cast, UseScope } from 'zova';\nimport { Bean } from 'zova-module-a-bean';\nimport { BeanModelBase } from 'zova-module-a-model';\nimport { ScopeModuleASsr } from 'zova-module-a-ssr';\n\nimport type { IThemeBase, IThemeHandler, IThemeRecord } from '../types/index.js';\n\nexport type ThemeDarkMode = 'auto' | boolean;\n\n@Bean()\nexport class BeanTheme extends BeanModelBase {\n name: keyof IThemeRecord;\n darkMode: ThemeDarkMode; // auto/true/false\n\n private _dark: boolean;\n get dark() {\n return this._dark;\n }\n\n token: unknown;\n private _mediaDark?: MediaQueryList;\n private _onMediaDarkChange?;\n\n @UseScope()\n $$scopeSsr: ScopeModuleASsr;\n\n protected async __init__() {\n const cookieTheme = this.sys.config.ssr.cookie;\n const cookieThemeDarkDefault = this.$$scopeSsr.config.cookieThemeDarkDefault;\n // support admin\n this.name = this.$useState(cookieTheme ? 'cookie' : 'local', {\n queryKey: ['themename'],\n meta: {\n persister: {\n maxAge: this.scope.config.model.themename.persister.maxAge,\n },\n defaultData: this.scope.config.defaultTheme,\n },\n });\n this.darkMode = this.$useState(cookieTheme ? 'cookie' : 'local', {\n queryKey: ['themedark'],\n meta: {\n persister: {\n maxAge: this.scope.config.model.themename.persister.maxAge,\n deserialize: (value, deserializeDefault) => {\n if (cookieTheme && value === 'auto') value = cookieThemeDarkDefault;\n return deserializeDefault(value);\n },\n },\n defaultData: cookieTheme ? cookieThemeDarkDefault : 'auto',\n },\n });\n this._updateDark();\n\n this.$watch(\n () => this.darkMode,\n () => {\n this._updateDark();\n },\n );\n\n if (process.env.CLIENT) {\n this.$watch([() => this.name, () => this._dark], () => {\n this._applyTheme();\n });\n }\n\n // not use watch.immediate for await done\n await this._applyThemeWrapper();\n }\n\n protected __dispose__() {\n this._listenMediaDarkChange(false);\n }\n\n private _updateDark() {\n this._dark = this._getDarkFromDarkMode(this.darkMode);\n }\n\n async _applyThemeWrapper() {\n await this._applyTheme();\n if (this.sys.config.ssr.ignoreCookieOnServer) {\n this.toggleDark();\n await this._applyTheme();\n }\n }\n\n async _applyTheme() {\n const name = this.name;\n const dark = this._dark;\n const theme = await this._loadThemeBean(name);\n if (!theme) {\n this.name = this.scope.config.defaultTheme;\n await this._applyTheme();\n return;\n }\n const res = await theme.apply({ name, dark });\n this.token = cast(res).token;\n const handler = res.handler ?? this.scope.config.defaultThemeHandler;\n if (handler) {\n const themeHandler = (await this.bean._getBean(\n beanFullNameFromOnionName(handler, 'meta'),\n true,\n )) as unknown as IThemeHandler;\n await themeHandler.apply({ name, dark, token: this.token } as any);\n }\n }\n\n async _loadThemeBean(name: keyof IThemeRecord): Promise<IThemeBase | undefined> {\n const parts = name.split(':');\n if (parts.length === 1) {\n throw new Error(`invalid theme name: ${name}`);\n }\n const moduleName = parts[0];\n if (!this.app.meta.module.exists(moduleName)) return;\n return (await this.bean._getBean(beanFullNameFromOnionName(name, 'theme'), true)) as IThemeBase;\n }\n\n toggleDark() {\n this.darkMode = !this._dark;\n this._updateDark(); // immediate\n }\n\n _getDarkFromDarkMode(mode?: ThemeDarkMode) {\n if (mode === undefined) mode = 'auto';\n if (mode === 'auto') {\n this._listenMediaDarkChange(true);\n return !!this._mediaDark?.matches;\n } else {\n this._listenMediaDarkChange(false);\n return mode;\n }\n }\n\n _listenMediaDarkChange(listen: boolean) {\n if (process.env.SERVER) return;\n if (listen) {\n if (!this._mediaDark) {\n this._mediaDark = window.matchMedia('(prefers-color-scheme: dark)');\n this._onMediaDarkChange = async () => {\n this._updateDark();\n this._applyTheme();\n };\n this._mediaDark.addEventListener('change', this._onMediaDarkChange);\n }\n } else {\n if (this._mediaDark) {\n this._mediaDark.removeEventListener('change', this._onMediaDarkChange);\n this._onMediaDarkChange = undefined;\n this._mediaDark = undefined;\n }\n }\n }\n}\n","import type { ZovaSys } from 'zova';\nimport type { TypeMetaRecordSelectorSpecificNameKeys } from 'zova-module-a-meta';\n\nimport type { ICssRecord } from '../types/css.js';\nimport type { IThemeRecord } from '../types/theme.js';\n\nexport const config = (_sys: ZovaSys) => {\n return {\n defaultCss: 'home-theme:default' as keyof ICssRecord,\n defaultTheme: 'home-theme:default' as keyof IThemeRecord,\n defaultThemeHandler: '' as TypeMetaRecordSelectorSpecificNameKeys<'themeHandler'>,\n model: {\n themename: {\n persister: {\n maxAge: Infinity,\n },\n },\n },\n };\n};\n","export const __ThisModule__ = 'a-style';\nexport { ScopeModuleAStyle as ScopeModule } from './index.js';\n","import type { TypeStyle } from 'typestyle';\nimport type { NestedCSSProperties } from 'typestyle/lib/types.js';\nimport type { BeanBase, BeanContainer, IMonkeyAppInitialize, IMonkeyAppInitialized, IMonkeyBeanInit } from 'zova';\n\nimport { isNil } from '@cabloy/utils';\nimport { createTypeStyle, cssRaw, cssRule, style } from 'typestyle';\nimport { beanFullNameFromOnionName, BeanSimple, SymbolBeanFullName, useComputed } from 'zova';\n\nimport type { ScopeModule } from './.metadata/this.js';\n\nimport { __ThisModule__ } from './.metadata/this.js';\nimport { BeanTheme } from './bean/bean.theme.js';\n\nexport class Monkey extends BeanSimple implements IMonkeyAppInitialize, IMonkeyAppInitialized, IMonkeyBeanInit {\n private _beanTheme: BeanTheme;\n private _beanCssDefault: any;\n private _styleInstance: TypeStyle;\n\n async appInitialize() {\n if (process.env.SERVER) {\n this._styleInstance = createTypeStyle();\n this.ctx.meta.$ssr.context.onRendered((err?: Error) => {\n if (err) return;\n const styles = this._styleInstance.getStyles();\n this.ctx.meta.$ssr.context._meta.endingHeadTags += `<style id=\"styles-target\">${styles}</style>`;\n });\n }\n if (process.env.CLIENT && this.ctx.meta.$ssr.isRuntimeSsrPreHydration) {\n this._styleInstance = createTypeStyle();\n this.ctx.meta.$ssr.onHydrated(() => {\n this._styleInstance.setStylesTarget(document.getElementById('styles-target')!);\n });\n }\n }\n\n async appInitialized() {\n // theme\n this._beanTheme = await this.bean._getBean(BeanTheme, true);\n // css default\n const scope: ScopeModule = await this.bean.getScope(__ThisModule__);\n this._beanCssDefault = await this.bean._getBean(beanFullNameFromOnionName(scope.config.defaultCss, 'css'), true);\n }\n\n async beanInit(bean: BeanContainer, beanInstance: BeanBase) {\n // eslint-disable-next-line\n const self = this;\n bean.defineProperty(beanInstance, '$style', {\n enumerable: false,\n configurable: true,\n get() {\n return function (props, ...args) {\n return self._patchStyle(beanInstance, props, ...args);\n };\n },\n });\n bean.defineProperty(beanInstance, '$cssRule', {\n enumerable: false,\n configurable: true,\n get() {\n return function (selector: string, ...objects: NestedCSSProperties[]) {\n return self._patchCssRule(beanInstance, selector, ...objects);\n };\n },\n });\n bean.defineProperty(beanInstance, '$cssRaw', {\n enumerable: false,\n configurable: true,\n get() {\n return function (mustBeValidCSS: string) {\n return self._patchCssRaw(beanInstance, mustBeValidCSS);\n };\n },\n });\n bean.defineProperty(beanInstance, '$css', {\n enumerable: false,\n configurable: true,\n get() {\n return self._beanCssDefault;\n },\n });\n bean.defineProperty(beanInstance, '$theme', {\n enumerable: false,\n configurable: true,\n get() {\n return self._beanTheme;\n },\n });\n bean.defineProperty(beanInstance, '$token', {\n enumerable: false,\n configurable: true,\n get() {\n return useComputed(() => self._beanTheme.token);\n },\n });\n }\n\n _patchStyle(beanInstance: BeanBase, props, ...args) {\n if (isNil(props)) return undefined;\n if (this.sys.env.META_MODE === 'development') {\n if (props && typeof props === 'object') {\n props = Object.assign({ $debugName: beanInstance[SymbolBeanFullName].replaceAll('.', '_') }, props);\n }\n }\n if (this._styleInstance) {\n return this._styleInstance.style(props, ...args);\n } else {\n return style(props, ...args);\n }\n }\n\n _patchCssRule(_beanInstance: BeanBase, selector: string, ...objects: NestedCSSProperties[]) {\n if (this._styleInstance) {\n return this._styleInstance.cssRule(selector, ...objects);\n } else {\n return cssRule(selector, ...objects);\n }\n }\n\n _patchCssRaw(_beanInstance: BeanBase, mustBeValidCSS: string) {\n if (this._styleInstance) {\n return this._styleInstance.cssRaw(mustBeValidCSS);\n } else {\n return cssRaw(mustBeValidCSS);\n }\n }\n}\n","// eslint-disable\n/** bean: begin */\nexport * from '../bean/bean.theme.js';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-style' {\n \n export interface BeanTheme {\n /** @internal */\n get scope(): ScopeModuleAStyle;\n }\n\n export interface BeanTheme {\n get $beanFullName(): 'a-style.bean.theme';\n get $onionName(): 'a-style:theme';\n \n } \n}\n/** bean: end */\n/** bean: begin */\nimport { BeanTheme } from '../bean/bean.theme.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-style.bean.theme': BeanTheme;\n }\n}\n/** bean: end */\n/** config: begin */\nexport * from '../config/config.js';\nimport { config } from '../config/config.js';\n/** config: end */\n/** monkey: begin */\nexport * from '../monkey.js';\n/** monkey: end */\n/** scope: begin */\nimport { BeanScopeBase, type BeanScopeUtil, TypeModuleConfig } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\n\n@Scope()\nexport class ScopeModuleAStyle extends BeanScopeBase {}\n\nexport interface ScopeModuleAStyle {\n util: BeanScopeUtil;\nconfig: TypeModuleConfig<typeof config>;\n}\n\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanScopeRecord {\n 'a-style': ScopeModuleAStyle;\n }\n \n export interface IBeanScopeConfig {\n 'a-style': ReturnType<typeof config>;\n }\n\n \n\n \n}\n \n/** scope: end */\n","import { createBeanDecorator } from 'zova';\n\nimport type { IDecoratorCssOptions } from '../types/css.js';\nimport type { IDecoratorThemeOptions } from '../types/theme.js';\n\nexport function Css<T extends IDecoratorCssOptions>(options?: T): ClassDecorator {\n return createBeanDecorator('css', 'app', true, options);\n}\n\nexport function Theme<T extends IDecoratorThemeOptions>(options?: T): ClassDecorator {\n return createBeanDecorator('theme', 'app', true, options);\n}\n","import type { IThemeRecord } from '../types/theme.js';\n\nexport function $getThemeName<K extends keyof IThemeRecord>(themeName: K): K {\n return themeName;\n}\n","import { BeanBase, deepExtend } from 'zova';\n\nimport type { IDecoratorThemeOptions, IThemeApplyParams, ThemeToken } from '../types/theme.js';\n\nexport class BeanThemeBase extends BeanBase {\n protected getOptionsToken(params: IThemeApplyParams) {\n const options = this.$onionOptions as IDecoratorThemeOptions;\n return options.token?.(params);\n }\n\n protected mergeOptionsToken(params: IThemeApplyParams, token: ThemeToken) {\n const optionsToken = this.getOptionsToken(params);\n if (optionsToken) {\n token = deepExtend(token, optionsToken);\n }\n return token;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/bean/bean.theme.ts","../src/config/config.ts","../src/.metadata/this.ts","../src/monkey.ts","../src/.metadata/index.ts","../src/lib/style.ts","../src/lib/theme.ts","../src/lib/themeBase.ts"],"sourcesContent":["import { beanFullNameFromOnionName, cast, UseScope } from 'zova';\nimport { Bean } from 'zova-module-a-bean';\nimport { BeanModelBase } from 'zova-module-a-model';\nimport { ScopeModuleASsr } from 'zova-module-a-ssr';\n\nimport type { IThemeBase, IThemeHandler, IThemeRecord } from '../types/index.js';\n\nexport type ThemeDarkMode = 'auto' | boolean;\n\n@Bean()\nexport class BeanTheme extends BeanModelBase {\n name: keyof IThemeRecord;\n darkMode: ThemeDarkMode; // auto/true/false\n\n private _dark: boolean;\n get dark() {\n return this._dark;\n }\n\n token: unknown;\n private _mediaDark?: MediaQueryList;\n private _onMediaDarkChange?;\n\n @UseScope()\n $$scopeSsr: ScopeModuleASsr;\n\n protected async __init__() {\n const cookieTheme = this.sys.config.ssr.cookie;\n const cookieThemeDarkDefault = this.$$scopeSsr.config.cookieThemeDarkDefault;\n // support admin\n this.name = this.$useState(cookieTheme ? 'cookie' : 'local', {\n queryKey: ['themename'],\n meta: {\n persister: {\n maxAge: this.scope.config.model.themename.persister.maxAge,\n },\n defaultData: this.scope.config.defaultTheme,\n },\n });\n this.darkMode = this.$useState(cookieTheme ? 'cookie' : 'local', {\n queryKey: ['themedark'],\n meta: {\n persister: {\n maxAge: this.scope.config.model.themename.persister.maxAge,\n deserialize: (value, deserializeDefault) => {\n if (cookieTheme && value === 'auto') value = cookieThemeDarkDefault;\n return deserializeDefault(value);\n },\n },\n defaultData: cookieTheme ? cookieThemeDarkDefault : 'auto',\n },\n });\n this._updateDark();\n\n this.$watch(\n () => this.darkMode,\n () => {\n this._updateDark();\n },\n );\n\n if (process.env.CLIENT) {\n this.$watch([() => this.name, () => this._dark], () => {\n this._applyTheme();\n });\n }\n\n // not use watch.immediate for await done\n await this._applyThemeWrapper();\n }\n\n protected __dispose__() {\n this._listenMediaDarkChange(false);\n }\n\n private _updateDark() {\n this._dark = this._getDarkFromDarkMode(this.darkMode);\n }\n\n async _applyThemeWrapper() {\n await this._applyTheme();\n if (this.sys.config.ssr.ignoreCookieOnServer) {\n this.toggleDark();\n await this._applyTheme();\n }\n }\n\n async _applyTheme() {\n const name = this.name;\n const dark = this._dark;\n const theme = await this._loadThemeBean(name);\n if (!theme) {\n this.name = this.scope.config.defaultTheme;\n await this._applyTheme();\n return;\n }\n const res = await theme.apply({ name, dark });\n this.token = cast(res).token;\n const handler = res.handler ?? this.scope.config.defaultThemeHandler;\n if (handler) {\n const themeHandler = (await this.bean._getBean(\n beanFullNameFromOnionName(handler, 'meta'),\n true,\n )) as unknown as IThemeHandler;\n await themeHandler.apply({ name, dark, token: this.token } as any);\n }\n }\n\n async _loadThemeBean(name: keyof IThemeRecord): Promise<IThemeBase | undefined> {\n const parts = name.split(':');\n if (parts.length === 1) {\n throw new Error(`invalid theme name: ${name}`);\n }\n const moduleName = parts[0];\n if (!this.app.meta.module.exists(moduleName)) return;\n return (await this.bean._getBean(beanFullNameFromOnionName(name, 'theme'), true)) as IThemeBase;\n }\n\n toggleDark() {\n this.darkMode = !this._dark;\n this._updateDark(); // immediate\n }\n\n _getDarkFromDarkMode(mode?: ThemeDarkMode) {\n if (mode === undefined) mode = 'auto';\n if (mode === 'auto') {\n this._listenMediaDarkChange(true);\n return !!this._mediaDark?.matches;\n } else {\n this._listenMediaDarkChange(false);\n return mode;\n }\n }\n\n _listenMediaDarkChange(listen: boolean) {\n if (process.env.SERVER) return;\n if (listen) {\n if (!this._mediaDark) {\n this._mediaDark = window.matchMedia('(prefers-color-scheme: dark)');\n this._onMediaDarkChange = async () => {\n this._updateDark();\n this._applyTheme();\n };\n this._mediaDark.addEventListener('change', this._onMediaDarkChange);\n }\n } else {\n if (this._mediaDark) {\n this._mediaDark.removeEventListener('change', this._onMediaDarkChange);\n this._onMediaDarkChange = undefined;\n this._mediaDark = undefined;\n }\n }\n }\n}\n","import type { ZovaSys } from 'zova';\nimport type { TypeMetaRecordSelectorSpecificNameKeys } from 'zova-module-a-meta';\n\nimport type { ICssRecord } from '../types/css.js';\nimport type { IThemeRecord } from '../types/theme.js';\n\nexport const config = (_sys: ZovaSys) => {\n return {\n defaultCss: 'home-theme:default' as keyof ICssRecord,\n defaultTheme: 'home-theme:default' as keyof IThemeRecord,\n defaultThemeHandler: '' as TypeMetaRecordSelectorSpecificNameKeys<'themeHandler'>,\n model: {\n themename: {\n persister: {\n maxAge: Infinity,\n },\n },\n },\n };\n};\n","export const __ThisModule__ = 'a-style';\nexport { ScopeModuleAStyle as ScopeModule } from './index.js';\n","import type { TypeStyle } from 'typestyle';\nimport type { NestedCSSProperties } from 'typestyle/lib/types.js';\nimport type { BeanBase, BeanContainer, IMonkeyAppInitialize, IMonkeyAppInitialized, IMonkeyBeanInit } from 'zova';\n\nimport { createTypeStyle, cssRaw, cssRule, style } from 'typestyle';\nimport { beanFullNameFromOnionName, BeanSimple, SymbolBeanFullName, useComputed } from 'zova';\n\nimport type { ScopeModule } from './.metadata/this.js';\n\nimport { __ThisModule__ } from './.metadata/this.js';\nimport { BeanTheme } from './bean/bean.theme.js';\n\nexport class Monkey extends BeanSimple implements IMonkeyAppInitialize, IMonkeyAppInitialized, IMonkeyBeanInit {\n private _beanTheme: BeanTheme;\n private _beanCssDefault: any;\n private _styleInstance: TypeStyle;\n\n async appInitialize() {\n if (process.env.SERVER) {\n this._styleInstance = createTypeStyle();\n this.ctx.meta.$ssr.context.onRendered((err?: Error) => {\n if (err) return;\n const styles = this._styleInstance.getStyles();\n this.ctx.meta.$ssr.context._meta.endingHeadTags += `<style id=\"styles-target\">${styles}</style>`;\n });\n }\n if (process.env.CLIENT && this.ctx.meta.$ssr.isRuntimeSsrPreHydration) {\n this._styleInstance = createTypeStyle();\n this.ctx.meta.$ssr.onHydrated(() => {\n this._styleInstance.setStylesTarget(document.getElementById('styles-target')!);\n });\n }\n }\n\n async appInitialized() {\n // theme\n this._beanTheme = await this.bean._getBean(BeanTheme, true);\n // css default\n const scope: ScopeModule = await this.bean.getScope(__ThisModule__);\n this._beanCssDefault = await this.bean._getBean(beanFullNameFromOnionName(scope.config.defaultCss, 'css'), true);\n }\n\n async beanInit(bean: BeanContainer, beanInstance: BeanBase) {\n // eslint-disable-next-line\n const self = this;\n bean.defineProperty(beanInstance, '$style', {\n enumerable: false,\n configurable: true,\n get() {\n return function (props, ...args) {\n return self._patchStyle(beanInstance, props, ...args);\n };\n },\n });\n bean.defineProperty(beanInstance, '$cssRule', {\n enumerable: false,\n configurable: true,\n get() {\n return function (selector: string, ...objects: NestedCSSProperties[]) {\n return self._patchCssRule(beanInstance, selector, ...objects);\n };\n },\n });\n bean.defineProperty(beanInstance, '$cssRaw', {\n enumerable: false,\n configurable: true,\n get() {\n return function (mustBeValidCSS: string) {\n return self._patchCssRaw(beanInstance, mustBeValidCSS);\n };\n },\n });\n bean.defineProperty(beanInstance, '$css', {\n enumerable: false,\n configurable: true,\n get() {\n return self._beanCssDefault;\n },\n });\n bean.defineProperty(beanInstance, '$theme', {\n enumerable: false,\n configurable: true,\n get() {\n return self._beanTheme;\n },\n });\n bean.defineProperty(beanInstance, '$token', {\n enumerable: false,\n configurable: true,\n get() {\n return useComputed(() => self._beanTheme.token);\n },\n });\n }\n\n _patchStyle(beanInstance: BeanBase, props, ...args) {\n // undefined/null/false\n if (!props) return undefined;\n if (this.sys.env.META_MODE === 'development') {\n if (props && typeof props === 'object') {\n props = Object.assign({ $debugName: beanInstance[SymbolBeanFullName].replaceAll('.', '_') }, props);\n }\n }\n if (this._styleInstance) {\n return this._styleInstance.style(props, ...args);\n } else {\n return style(props, ...args);\n }\n }\n\n _patchCssRule(_beanInstance: BeanBase, selector: string, ...objects: NestedCSSProperties[]) {\n if (this._styleInstance) {\n return this._styleInstance.cssRule(selector, ...objects);\n } else {\n return cssRule(selector, ...objects);\n }\n }\n\n _patchCssRaw(_beanInstance: BeanBase, mustBeValidCSS: string) {\n if (this._styleInstance) {\n return this._styleInstance.cssRaw(mustBeValidCSS);\n } else {\n return cssRaw(mustBeValidCSS);\n }\n }\n}\n","// eslint-disable\n/** bean: begin */\nexport * from '../bean/bean.theme.js';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-style' {\n \n export interface BeanTheme {\n /** @internal */\n get scope(): ScopeModuleAStyle;\n }\n\n export interface BeanTheme {\n get $beanFullName(): 'a-style.bean.theme';\n get $onionName(): 'a-style:theme';\n \n } \n}\n/** bean: end */\n/** bean: begin */\nimport { BeanTheme } from '../bean/bean.theme.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-style.bean.theme': BeanTheme;\n }\n}\n/** bean: end */\n/** config: begin */\nexport * from '../config/config.js';\nimport { config } from '../config/config.js';\n/** config: end */\n/** monkey: begin */\nexport * from '../monkey.js';\n/** monkey: end */\n/** scope: begin */\nimport { BeanScopeBase, type BeanScopeUtil, TypeModuleConfig } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\n\n@Scope()\nexport class ScopeModuleAStyle extends BeanScopeBase {}\n\nexport interface ScopeModuleAStyle {\n util: BeanScopeUtil;\nconfig: TypeModuleConfig<typeof config>;\n}\n\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanScopeRecord {\n 'a-style': ScopeModuleAStyle;\n }\n \n export interface IBeanScopeConfig {\n 'a-style': ReturnType<typeof config>;\n }\n\n \n\n \n}\n \n/** scope: end */\n","import { createBeanDecorator } from 'zova';\n\nimport type { IDecoratorCssOptions } from '../types/css.js';\nimport type { IDecoratorThemeOptions } from '../types/theme.js';\n\nexport function Css<T extends IDecoratorCssOptions>(options?: T): ClassDecorator {\n return createBeanDecorator('css', 'app', true, options);\n}\n\nexport function Theme<T extends IDecoratorThemeOptions>(options?: T): ClassDecorator {\n return createBeanDecorator('theme', 'app', true, options);\n}\n","import type { IThemeRecord } from '../types/theme.js';\n\nexport function $getThemeName<K extends keyof IThemeRecord>(themeName: K): K {\n return themeName;\n}\n","import { BeanBase, deepExtend } from 'zova';\n\nimport type { IDecoratorThemeOptions, IThemeApplyParams, ThemeToken } from '../types/theme.js';\n\nexport class BeanThemeBase extends BeanBase {\n protected getOptionsToken(params: IThemeApplyParams) {\n const options = this.$onionOptions as IDecoratorThemeOptions;\n return options.token?.(params);\n }\n\n protected mergeOptionsToken(params: IThemeApplyParams, token: ThemeToken) {\n const optionsToken = this.getOptionsToken(params);\n if (optionsToken) {\n token = deepExtend(token, optionsToken);\n }\n return token;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"monkey.d.ts","sourceRoot":"","sources":["../src/monkey.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAIlH,OAAO,EAA6B,UAAU,EAAmC,MAAM,MAAM,CAAC;AAO9F,qBAAa,MAAO,SAAQ,UAAW,YAAW,oBAAoB,EAAE,qBAAqB,EAAE,eAAe;IAC5G,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,cAAc,CAAY;IAE5B,aAAa;IAiBb,cAAc;IAQd,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ;IAqD1D,WAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,KAAA,EAAE,GAAG,IAAI,OAAA;IAclD,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,mBAAmB,EAAE;IAQ1F,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM;CAO7D"}
1
+ {"version":3,"file":"monkey.d.ts","sourceRoot":"","sources":["../src/monkey.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAGlH,OAAO,EAA6B,UAAU,EAAmC,MAAM,MAAM,CAAC;AAO9F,qBAAa,MAAO,SAAQ,UAAW,YAAW,oBAAoB,EAAE,qBAAqB,EAAE,eAAe;IAC5G,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,cAAc,CAAY;IAE5B,aAAa;IAiBb,cAAc;IAQd,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ;IAqD1D,WAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,KAAA,EAAE,GAAG,IAAI,OAAA;IAelD,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,mBAAmB,EAAE;IAQ1F,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM;CAO7D"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zova-module-a-style",
3
- "version": "5.1.13",
4
- "gitHead": "a247f88a55c663d313296039f874560ee5a13e01",
3
+ "version": "5.1.16",
4
+ "gitHead": "6c7a09c8f0a8a0f41c5090b544a1667dbc689f0e",
5
5
  "description": "style",
6
6
  "keywords": [
7
7
  "Zova Module"
package/src/monkey.ts CHANGED
@@ -2,7 +2,6 @@ import type { TypeStyle } from 'typestyle';
2
2
  import type { NestedCSSProperties } from 'typestyle/lib/types.js';
3
3
  import type { BeanBase, BeanContainer, IMonkeyAppInitialize, IMonkeyAppInitialized, IMonkeyBeanInit } from 'zova';
4
4
 
5
- import { isNil } from '@cabloy/utils';
6
5
  import { createTypeStyle, cssRaw, cssRule, style } from 'typestyle';
7
6
  import { beanFullNameFromOnionName, BeanSimple, SymbolBeanFullName, useComputed } from 'zova';
8
7
 
@@ -95,7 +94,8 @@ export class Monkey extends BeanSimple implements IMonkeyAppInitialize, IMonkeyA
95
94
  }
96
95
 
97
96
  _patchStyle(beanInstance: BeanBase, props, ...args) {
98
- if (isNil(props)) return undefined;
97
+ // undefined/null/false
98
+ if (!props) return undefined;
99
99
  if (this.sys.env.META_MODE === 'development') {
100
100
  if (props && typeof props === 'object') {
101
101
  props = Object.assign({ $debugName: beanInstance[SymbolBeanFullName].replaceAll('.', '_') }, props);