/
githubmirror
/
ionic
Обзор
Документация
Войти
/
githubmirror
/
ionic
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
core/src/global/ionic-global.ts
80 строк
2 KB
Brandy Smith
fix(config): allow LogLevel to work with isolatedModules and update all warns and errors to respect logLevel (#30350)
16 апр 2025, 19:23
Не верифицирован
16 апр 2025, 19:23
d52fca0
Код
Авторство
О чём код?
import { getMode, setMode } from '@stencil/core'; import { printIonWarning } from '@utils/logging'; import type { IonicConfig, Mode } from '../interface'; import { isPlatform, setupPlatforms } from '../utils/platform'; import { config, configFromSession, configFromURL, saveConfig } from './config'; // TODO(FW-2832): types let defaultMode: Mode; export const getIonMode = (ref?: any): Mode => { return (ref && getMode(ref)) || defaultMode; }; export const initialize = (userConfig: IonicConfig = {}) => { if (typeof (window as any) === 'undefined') { return; } const doc = window.document; const win = window; const Ionic = ((win as any).Ionic = (win as any).Ionic || {}); // create the Ionic.config from raw config object (if it exists) // and convert Ionic.config into a ConfigApi that has a get() fn const configObj = { ...configFromSession(win), persistConfig: false, ...Ionic.config, ...configFromURL(win), ...userConfig, }; config.reset(configObj); if (config.getBoolean('persistConfig')) { saveConfig(win, configObj); } // Setup platforms setupPlatforms(win); // first see if the mode was set as an attribute on <html> // which could have been set by the user, or by pre-rendering // otherwise get the mode via config settings, and fallback to md Ionic.config = config; Ionic.mode = defaultMode = config.get( 'mode', doc.documentElement.getAttribute('mode') || (isPlatform(win, 'ios') ? 'ios' : 'md') ); config.set('mode', defaultMode); doc.documentElement.setAttribute('mode', defaultMode); doc.documentElement.classList.add(defaultMode); if (config.getBoolean('_testing')) { config.set('animated', false); } const isIonicElement = (elm: any) => elm.tagName?.startsWith('ION-'); const isAllowedIonicModeValue = (elmMode: string) => ['ios', 'md'].includes(elmMode); setMode((elm: any) => { while (elm) { const elmMode = (elm as any).mode || elm.getAttribute('mode'); if (elmMode) { if (isAllowedIonicModeValue(elmMode)) { return elmMode; } else if (isIonicElement(elm)) { printIonWarning('Invalid ionic mode: "' + elmMode + '", expected: "ios" or "md"'); } } elm = elm.parentElement; } return defaultMode; }); }; export default initialize;