UNPKG

grid-component-editor

Version:

延长loading超时时间;转义伪类中文,防止乱码

89 lines (75 loc) 3.15 kB
import { InjectToProps } from './const' import { CSSVar, Query, EditorComponent } from '../types' export const _assign = (target: any, ...assignObj: any[]) => Object.assign(target, ...assignObj) export const _entries = <T>(target: Record<string, T>) => Object.entries(target) // export const _warning = (warning: string) => console.warn(warning); export const _createIndex = (index = Date.now() + ''): string => index.substring(index.length - 3, index.length) const defaultCSSVar: Record<CSSVar, string> = { '--color-primary': ' rgb(12, 188, 241)', '--text-color-primary': ' #f5f1f1', '--bdcolor-input': ' rgba(55, 71, 104, 1)', '--bgcolor-primary': ' rgba(29, 46, 77, 1)', } export const getCSSVar = (varName: CSSVar = '--color-primary'): string => window.getComputedStyle(document.body).getPropertyValue(varName) || defaultCSSVar[varName] // 在请求之前格式化query export const _formatQuery = ({ aggregator, dimensions, measure, ...rest }: Query) => ({ ...rest, aggStatus: false, dimensions: dimensions.map(([fieldName, fieldType]) => ({ fieldName, fieldType })), measure: measure.map(([fieldName, fieldType]) => ({ fieldName, fieldType, aggregator: aggregator[fieldName] })) }) // 在保存之前清除gdata export const _clearCache = (components: Record<string, EditorComponent>): Record<string, EditorComponent> => { let com: Record<string, EditorComponent> = JSON.parse(JSON.stringify(components)) for (let index in com) { if (com[index].isDraggable) delete com[index].isDraggable //剔除可能干扰显示模式的属性 _assign(com[index].props, InjectToProps.display) } return com } // 在对象上注册一个监听器 export const _notifyIn = <T>(targetObj: object, pro: string, notify: (para: T) => T) => { const privateKey = '_$' + pro Object.defineProperties(targetObj, { [privateKey]: { value: notify(targetObj[pro]), writable: true }, [pro]: { enumerable: true, get() { return this[privateKey] }, set(val) { notify(this[privateKey] = val) }, }, }) } type EventRemover = Function // 注册Ctrl组合键 export const _ctrlPlus = (notifies: Record<string, Function>): EventRemover => { const listener = (e: KeyboardEvent) => { const key = e.key if (e.ctrlKey && key in notifies) { if (key === 'z' && (e.target as HTMLElement).tabIndex !== -1) return e.preventDefault() notifies[key]() } } document.addEventListener('keydown', listener, false) return () => { document.removeEventListener('keydown', listener, false) } } // type StorageK = keyof typeof StorageKey export const _setStorage = <T extends any>(key: string, val: T) => { localStorage.setItem(key, JSON.stringify(val)) } export const _getStorage = <T extends any>(key: string): T => JSON.parse(localStorage.getItem(key))