@ebuilding/abc 2.0.0 → 2.0.1

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"codemirror.mjs","sources":["../../../../packages/abc/codemirror/src/default/index.ts","../../../../packages/abc/codemirror/src/default/index.html","../../../../packages/abc/codemirror/src/index.module.ts","../../../../packages/abc/codemirror/src/public_api.ts","../../../../packages/abc/codemirror/codemirror.ts"],"sourcesContent":["// import {\r\n// AfterViewInit,\r\n// ChangeDetectionStrategy,\r\n// Component,\r\n// DoCheck,\r\n// ElementRef,\r\n// EventEmitter,\r\n// forwardRef,\r\n// Inject,\r\n// Input,\r\n// KeyValueDiffer,\r\n// KeyValueDiffers,\r\n// NgZone,\r\n// OnChanges,\r\n// OnDestroy,\r\n// OnInit,\r\n// Output,\r\n// SimpleChanges,\r\n// ViewChild,\r\n// } from \"@angular/core\";\r\n\r\n// import { CommonModule } from \"@angular/common\";\r\n// import { ReactiveFormsModule, FormsModule, ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n// import { NzInputModule } from \"ng-zorro-antd/input\";\r\n// import { NzCollapseModule } from \"ng-zorro-antd/collapse\";\r\n// import { NzIconModule } from \"ng-zorro-antd/icon\";\r\n// import { NzButtonModule } from \"ng-zorro-antd/button\";\r\n// import { NzToolTipModule } from \"ng-zorro-antd/tooltip\";\r\n// import { NzConfigService } from \"ng-zorro-antd/core/config\";\r\n// import { NzMessageService } from \"ng-zorro-antd/message\";\r\n// import CodeMirror from 'codemirror';\r\n// import { Editor, EditorFromTextArea, ScrollInfo } from \"codemirror\";\r\n// import { GramPipeModule } from \"@ebuilding/base/shared.pipe\";\r\n// import { Formula } from \"../tools/formula\";\r\n// import { searchUsageFun, searchVariable, searchArrayVariable } from \"../tools/common\";\r\n// import _ from \"lodash\";\r\n\r\n// declare var require: any;\r\n\r\n// type FormulaType = (a?: any, b?: any, c?: any, d?: any) => boolean;\r\n// export declare interface IFormulaClass {\r\n// FormulaUsage?: {\r\n// category: string;\r\n// categoryCode: string;\r\n// contains: {\r\n// name: string;\r\n// intro: string;\r\n// usage: string;\r\n// example: string;\r\n// }[];\r\n// }[];\r\n// Formula?: {\r\n// [funcName: string]: FormulaType;\r\n// };\r\n// }\r\n\r\n// @Component({\r\n// selector: \"deon-codemirror\",\r\n// templateUrl: \"./index.html\",\r\n// styleUrls: ['./index.less'],\r\n// providers: [\r\n// {\r\n// provide: NG_VALUE_ACCESSOR,\r\n// useExisting: forwardRef(() => GramCodemirrorComponent),\r\n// multi: true,\r\n// },\r\n// Formula\r\n// ],\r\n// preserveWhitespaces: false,\r\n// changeDetection: ChangeDetectionStrategy.OnPush,\r\n// imports: [CommonModule, ReactiveFormsModule, FormsModule, NzInputModule, NzCollapseModule, NzIconModule, NzButtonModule, NzToolTipModule, GramPipeModule]\r\n// })\r\n// export class GramCodemirrorComponent\r\n// implements\r\n// AfterViewInit,\r\n// OnDestroy,\r\n// ControlValueAccessor,\r\n// OnChanges,\r\n// DoCheck,\r\n// OnInit {\r\n// @Input() itemTitle = {};\r\n\r\n// @Input()\r\n// set options(value: { [key: string]: any }) {\r\n// if (value!!) {\r\n// this._options = value;\r\n// if (!this._differ && value) {\r\n// this._differ = this._differs.find(value).create();\r\n// }\r\n// }\r\n// }\r\n// /**\r\n// * 可用变量对象\r\n// * {\r\n// * formFields:[],tableList:[]\r\n// * }\r\n// */\r\n// @Input()\r\n// set fieldData(value: any) {\r\n// this._fieldData = value;\r\n// if (Array.isArray(value) && value.length > 0) {\r\n// value.forEach((t: any) => {\r\n// if (Array.isArray(t.listField) && t.listField.length > 0) {\r\n// t.listField.forEach((f: any) => {\r\n// this.labelMap['$' + `{${f.key}}`] = f.label;\r\n// });\r\n// }\r\n// })\r\n// }\r\n// }\r\n// get fieldData() {\r\n// return this._fieldData;\r\n// }\r\n// /**\r\n// * 黑名单 值为函数名数组\r\n// */\r\n// @Input() blacklist: Array<string>;\r\n\r\n// /**\r\n// * 启用默认黑名单\r\n// * 默认黑名单与blackList合并\r\n// */\r\n// @Input() enableDefaultBlack = true;\r\n\r\n// /**\r\n// * 显示的公式 值显示列表内指定公式\r\n// */\r\n// @Input() showList: Array<string>;\r\n\r\n\r\n\r\n// get dateType(): string {\r\n// const t = Array.isArray(this.fieldData);\r\n\r\n// return t ? \"array\" : \"object\";\r\n// }\r\n// set variableSearch(value: string) {\r\n// let variableSearchList;\r\n// if (\"array\" === this.dateType) {\r\n// variableSearchList = searchArrayVariable(value, this.fieldData);\r\n// } else {\r\n// variableSearchList = searchVariable(value, this.fieldData);\r\n// }\r\n// this.variableSearchList = variableSearchList;\r\n// this._variableSearch = value;\r\n// }\r\n// get variableSearch() {\r\n// return this._variableSearch;\r\n// }\r\n// set usageFunSearch(value: string) {\r\n// // TODO 只显示当前公式编辑器支持的函数\r\n// this.usageFunSearchList = searchUsageFun(value, this.FormulaUsage);\r\n// this._usageFunSearch = value;\r\n// }\r\n// get usageFunSearch() {\r\n// return this._usageFunSearch;\r\n// }\r\n// /**\r\n// * 所有支持函数分组信息\r\n// * name 分组名称 string\r\n// * code 分组code string\r\n// * items 函数名集合 string[]\r\n// */\r\n// public get globalCategorys() {\r\n// var info: any[] = [];\r\n// _.forEach(this.fml.FormulaUsage, function (item: any) {\r\n// info.push({\r\n// // name 分组名称 string\r\n// name: item.category,\r\n// // code 分组code string\r\n// code: item.categoryCode,\r\n// // items 函数名集合 string[]\r\n// items: _.flatMap(item.contains, function (c) {\r\n// return c.name;\r\n// }),\r\n// });\r\n// });\r\n// return info;\r\n// }\r\n\r\n// /**\r\n// * 获取全局CodeMirror\r\n// */\r\n// get codeMirrorGlobal(): any {\r\n// if (this._codeMirror) {\r\n// return this._codeMirror;\r\n// }\r\n\r\n// this._codeMirror =\r\n// typeof CodeMirror !== \"undefined\" ? CodeMirror : require(\"codemirror\");\r\n// return this._codeMirror;\r\n// }\r\n// // fml = new Formula();\r\n// @Input() name = \"codemirror\";\r\n// @Input() title = \"\";\r\n\r\n// @Input() autoFocus = false;\r\n// /**\r\n// * 函数显示类型\r\n// * 班次 attendance 所有 // attendance-items 精度 进位规则\r\n// *\r\n// * 与categorys互斥,有type时使用type\r\n// */\r\n// @Input() type: string = \"\";\r\n// /**\r\n// * 显示的函数组\r\n// * 与type 互斥,如果type有值,当前参数无效。\r\n// */\r\n// @Input() categorys: Array<string>;\r\n// /**\r\n// * 自定义公式\r\n// */\r\n// @Input() formulaClass: IFormulaClass;\r\n\r\n// typeList: any = {\r\n// \"attendance-items\": [\r\n// \"MANHOURS\",\r\n// \"CalendarDay\",\r\n// \"PRECISION\",\r\n// \"DepartmentScope\",\r\n// \"AND\",\r\n// \"OR\",\r\n// \"IF\",\r\n// \"IN\",\r\n// \"AttendanceType\",\r\n// \"MinusSupport\",\r\n// ],\r\n// Daycalculation: [\r\n// \"Daycalculation\",\r\n// \"Hourcalculation\",\r\n// \"SUM\",\r\n// \"Daycompute\",\r\n// \"PositionHeadcount\",\r\n// ],\r\n// };\r\n// @Input() preserveScrollPosition = false;\r\n\r\n// labelMap: any = {};\r\n// _fieldData: any = null;\r\n\r\n// @Output()\r\n// cursorActivity = new EventEmitter<Editor>();\r\n\r\n// @Output() focusChange = new EventEmitter<boolean>();\r\n\r\n// @Output() scroll = new EventEmitter<ScrollInfo>();\r\n\r\n// @Output() drop = new EventEmitter<[Editor, DragEvent]>();\r\n\r\n// @Output() textChange = new EventEmitter<any>();\r\n\r\n// @ViewChild(\"ref\", { static: true }) ref!: ElementRef;\r\n\r\n// fml: any;\r\n// value: any = \"\";\r\n// disabled = false;\r\n// isFocused = false;\r\n// codeMirror?: EditorFromTextArea;\r\n\r\n// /**\r\n// * 存放匹配的变量集合\r\n// */\r\n// variableSearchList: any[] = [];\r\n\r\n// /**\r\n// * 存放匹配的函数集合\r\n// */\r\n// usageFunSearchList: any[] = [];\r\n// FormulaUsage: any[] = [];\r\n\r\n// /**\r\n// * 查询可用变量\r\n// */\r\n// _variableSearch: any = null;\r\n\r\n// /**\r\n// * 查询可用函数\r\n// */\r\n// _usageFunSearch: any = null;\r\n// /**\r\n// * 函数描述\r\n// */\r\n// usageDescription = `\r\n// <ul class=\"intro-wrapper default\">\r\n// <li>从左侧面板选择字段名和函数,或输入函数</li>\r\n// <li>公式编辑举例:\r\n// <span class=\"formula-name\">AVERAGE</span>\r\n// (\r\n// <span class=\"formula-field\">语文成绩</span>\r\n// ,\r\n// <span class=\"formula-field\">数学成绩</span>\r\n// )\r\n// </li>\r\n// </ul>\r\n// `;\r\n\r\n// private _codeMirror: any;\r\n\r\n// private _differ?: KeyValueDiffer<string, any>;\r\n\r\n// private _options: any = {\r\n// autoCloseBrackets: true,\r\n// keywords: [],\r\n// textWrapping: true,\r\n// lineWrapping: true,\r\n// lineNumbers: false,\r\n// matchBrackets: true,\r\n// specialChars:\r\n// /[\\u0000-\\u001f\\u007f\\u00ad\\u200c-\\u200f\\u2028\\u2029\\ufeff]/,\r\n// mode: \"text/fx-formula\",\r\n// labelMap: null,\r\n// };\r\n// private _fomulaContext: string[];\r\n\r\n// /**\r\n// * 默认公式\r\n// */\r\n// private defaultFml: any;\r\n// constructor(\r\n// private _differs: KeyValueDiffers,\r\n// private _ngZone: NgZone,\r\n// public el: ElementRef,\r\n// private message: NzMessageService,\r\n// private nzConfigService: NzConfigService,\r\n// private fmlService: Formula\r\n// ) {\r\n// this.defaultFml = _.cloneDeep({\r\n// FormulaUsage: fmlService.FormulaUsage,\r\n// Formula: fmlService.Formula,\r\n// });\r\n// this.fml = fmlService;\r\n// }\r\n\r\n// ngOnInit() {\r\n// this.nzConfigService.set(\"message\", {\r\n// nzMaxStack: 1,\r\n// nzAnimate: false,\r\n// });\r\n// }\r\n\r\n// /**\r\n// * 根据黑名单过滤公式\r\n// */\r\n// filterUsageByBlackList(formulaUsage: any) {\r\n// let FormulaUsageList: any[] = [];\r\n\r\n// formulaUsage.forEach((el: any) => {\r\n// el.contains.forEach((formula: any) => {\r\n// // 黑名单列表内的Index。\r\n// const blackIndex = _.indexOf(this.blacklist, formula.name);\r\n// if (blackIndex < 0) {\r\n// if (\r\n// FormulaUsageList.findIndex((ele) => ele.category === el.category) >\r\n// -1\r\n// ) {\r\n// let index = FormulaUsageList.findIndex(\r\n// (ele) => ele.category === el.category\r\n// );\r\n// (FormulaUsageList[index].contains as any[]).push(formula);\r\n// } else {\r\n// let item: any = {\r\n// category: el.category,\r\n// contains: [],\r\n// };\r\n// item.contains.push(formula);\r\n// FormulaUsageList.push(item);\r\n// }\r\n// }\r\n// });\r\n// });\r\n// return FormulaUsageList;\r\n// }\r\n\r\n// /**\r\n// * 组装显示的函数\r\n// */\r\n// resolveDisplayFormula(): string[] {\r\n// let displayFormula: string[] = [];\r\n// if (this.showList) {\r\n// return _.cloneDeep(this.showList);\r\n// }\r\n// if (this.type && !_.isEmpty(this.type)) {\r\n// displayFormula = this.typeList[this.type];\r\n\r\n// return displayFormula || [];\r\n// }\r\n// /**\r\n// * this.categorys 显示的函数组\r\n// * 与this.type 互斥,this.type优先级最高。\r\n// */\r\n// if (this.categorys && Array.isArray(this.categorys)) {\r\n// // 显示函数组数组转对象\r\n// const displayCategory = _.keyBy(this.categorys, function (o) {\r\n// return o;\r\n// });\r\n// // 过滤出需显示的函数\r\n// this.globalCategorys.map((c: any) => {\r\n// if (c.items && displayCategory[c.code]) {\r\n// displayFormula = displayFormula.concat(c.items);\r\n// }\r\n// });\r\n// }\r\n// return displayFormula || [];\r\n// }\r\n\r\n// /**\r\n// * 组装FomulaContext\r\n// */\r\n// resolveFomulaContext() {\r\n// const fomlaArray: string[] = [];\r\n// if (!this.FormulaUsage) {\r\n// return fomlaArray;\r\n// }\r\n// this.FormulaUsage.map((usage) => {\r\n// const contains = _.flatMap(usage.contains, function (c) {\r\n// return c.name;\r\n// });\r\n// fomlaArray.push(...contains);\r\n// });\r\n// this._fomulaContext = fomlaArray;\r\n// return fomlaArray;\r\n// }\r\n\r\n// /**\r\n// * 组装 this.FormulaUsage\r\n// */\r\n// setFormulaUsage() {\r\n// var FormulaUsage = _.cloneDeep(this.fml.FormulaUsage);\r\n// this.FormulaUsage = FormulaUsage;\r\n\r\n// }\r\n// ngAfterViewInit(): void {\r\n// this.setFormulaUsage();\r\n// if (!this.ref) {\r\n// return;\r\n// }\r\n// this._ngZone.runOutsideAngular(() => {\r\n// this.codeMirror = this.codeMirrorGlobal.fromTextArea(\r\n// this.ref.nativeElement,\r\n// this._options\r\n// ) as EditorFromTextArea;\r\n// this.codeMirror.on(\"cursorActivity\", (cm) =>\r\n// this._ngZone.run(() => this.cursorActive(cm))\r\n// );\r\n// this.codeMirror.on(\"scroll\", this.scrollChanged.bind(this));\r\n// this.codeMirror.on(\"blur\", () =>\r\n// this._ngZone.run(() => this.focusChanged(false))\r\n// );\r\n// this.codeMirror.on(\"focus\", () =>\r\n// this._ngZone.run(() => this.focusChanged(true))\r\n// );\r\n// this.codeMirror.on(\"change\", (cm: any, change: any) => {\r\n// this._ngZone.run(() => this.codemirrorValueChanged(cm, change));\r\n// });\r\n// this.codeMirror.on(\"drop\", (cm: Editor, e: DragEvent) => {\r\n// this._ngZone.run(() => this.dropFiles(cm, e));\r\n// });\r\n// this.codeMirror.setValue(this.value);\r\n\r\n// (CodeMirror as any).fomulaContext = Object.keys(this.fml.Formula);\r\n\r\n// this.codeMirror.setOption(\"mode\", \"text/fx-formula\");\r\n// });\r\n// }\r\n// ngOnChanges(changes: SimpleChanges): void {\r\n// if (changes && changes[\"formulaClass\"]) {\r\n// const change = changes[\"formulaClass\"];\r\n// if (change && (change.currentValue || change.previousValue)) {\r\n// this.setFormulaClass(change.currentValue);\r\n// this.setFormulaUsage();\r\n// }\r\n// }\r\n// }\r\n// ngDoCheck(): void {\r\n// if (!this._differ) {\r\n// return;\r\n// }\r\n// const changes = this._differ.diff(this._options);\r\n// if (changes) {\r\n// changes.forEachChangedItem((option) =>\r\n// this.setOptionIfChanged(option.key, option.currentValue)\r\n// );\r\n// changes.forEachAddedItem((option) =>\r\n// this.setOptionIfChanged(option.key, option.currentValue)\r\n// );\r\n// changes.forEachRemovedItem((option) =>\r\n// this.setOptionIfChanged(option.key, option.currentValue)\r\n// );\r\n// }\r\n// }\r\n// ngOnDestroy(): void {\r\n// if (this.codeMirror) {\r\n// this.codeMirror.toTextArea();\r\n// }\r\n// }\r\n// /**\r\n// * set FormulaClass\r\n// * @param formulaCalss\r\n// */\r\n// setFormulaClass(formulaCalss: any): void {\r\n// const fml: IFormulaClass = new formulaCalss(this.fml);\r\n// const { FormulaUsage, Formula } = fml;\r\n\r\n// if (Formula) {\r\n// this._ngZone.runOutsideAngular(() => {\r\n// Object.keys(Formula).forEach((key) => {\r\n// this.fml.Formula[key] = Formula[key].bind(this.fml);\r\n// });\r\n// // CodeMirror.fomulaContext = this.resolveFomulaContext();\r\n// (CodeMirror as any).fomulaContext = Object.keys(this.fml.Formula);\r\n// });\r\n// }\r\n// if (FormulaUsage) {\r\n// const oldIndexs: any = {};\r\n// this.fml.FormulaUsage.forEach((category: any, index: number) => {\r\n// oldIndexs[category.categoryCode] = index;\r\n// });\r\n// const newCategorys: any = {};\r\n// FormulaUsage.forEach((category: any) => {\r\n// newCategorys[category.categoryCode] = category;\r\n// });\r\n\r\n// Object.keys(newCategorys).forEach((categoryCode: any) => {\r\n// const oldIndex = _.get(oldIndexs, categoryCode, undefined);\r\n// const newCategory = newCategorys[categoryCode];\r\n// if (undefined === oldIndex) {\r\n// // 新增分类\r\n// this.fml.FormulaUsage.push(newCategorys[categoryCode]);\r\n// } else {\r\n// // 已有分类 添加新函数\r\n// let oldContains = this.fml.FormulaUsage[oldIndex].contains;\r\n// oldContains = oldContains.concat(newCategory.contains);\r\n// oldContains.reverse();\r\n// _.uniqWith(oldContains, (a: any, b: any) => {\r\n// return a.name === b.name;\r\n// });\r\n// this.fml.FormulaUsage[oldIndex].contains = oldContains.reverse();\r\n// }\r\n// });\r\n// }\r\n// }\r\n\r\n// codemirrorValueChanged(cm: any, change: any): void {\r\n// if (change.origin !== \"complete\") {\r\n// cm.showHint({\r\n// hint: (CodeMirror as any).hint.formula,\r\n// completeSingle: false,\r\n// shown: function () { },\r\n// select: function (cpt: any, ele: any) { },\r\n// pick: function (item: any) { },\r\n// });\r\n// } else {\r\n// this.insertBarcket();\r\n// }\r\n// setTimeout(() => {\r\n// this.getValue();\r\n// }, 0);\r\n\r\n// }\r\n// setOptionIfChanged(optionName: string, newValue: any): void {\r\n// if (!this.codeMirror) {\r\n// return;\r\n// }\r\n// this.codeMirror.setOption(optionName as any, newValue);\r\n// }\r\n// focusChanged(focused: boolean): void {\r\n// this.onTouched();\r\n// this.isFocused = focused;\r\n// // CodeMirror.fomulaContext = this._fomulaContext;\r\n// this.focusChange.emit(focused);\r\n// }\r\n// scrollChanged(cm: Editor): void {\r\n// this.scroll.emit(cm.getScrollInfo());\r\n// }\r\n// cursorActive(cm: Editor): void {\r\n// this.cursorActivity.emit(cm);\r\n// }\r\n// dropFiles(cm: Editor, e: DragEvent): void {\r\n// this.drop.emit([cm, e]);\r\n// }\r\n\r\n// writeValue(value: string): void {\r\n// if (value === null || value === undefined) {\r\n// if (this.codeMirror) {\r\n// this.codeMirror.setValue(\"\");\r\n// }\r\n// return;\r\n// }\r\n// this.value = value;\r\n\r\n// this.setValue();\r\n// }\r\n\r\n// registerOnChange(fn: (value: string) => void): void {\r\n// this.onChange = fn;\r\n// }\r\n\r\n// registerOnTouched(fn: () => void): void {\r\n// this.onTouched = fn;\r\n// }\r\n\r\n// setDisabledState(isDisabled: boolean): void {\r\n// this.disabled = isDisabled;\r\n// this.setOptionIfChanged(\"readOnly\", this.disabled);\r\n// }\r\n\r\n// /**\r\n// * 函数鼠标滑动时事件\r\n// * @param e\r\n// */\r\n// usageMouseover(e: any) {\r\n// let usage = e.usage ? `<li class=\"usage\"> 用法:${e.usage} </li>` : \"\";\r\n// this.usageDescription = `\r\n// <div class=\"formula-title\">${e.name}</div>\r\n// <ul class=\"intro-wrapper\">\r\n// <li class=\"intro\">\r\n// ${e.intro}\r\n// </li>\r\n// ${usage}\r\n// <li class=\"example\">示例:${e.example}</li>\r\n// </ul>\r\n// `;\r\n// }\r\n\r\n// /**\r\n// * 插入函数\r\n// * @param e\r\n// */\r\n// insertUsageFun(e: any) {\r\n// if (this.codeMirror && this.codeMirror !== null) {\r\n// let c = this.codeMirror.getCursor();\r\n// this.codeMirror.replaceSelection(`${e.name}`);\r\n// let d = this.codeMirror.getCursor();\r\n// this.insertBarcket();\r\n// this.getValue();\r\n// }\r\n// }\r\n\r\n// /**\r\n// * 插入可用变量\r\n// * @param event\r\n// */\r\n// insertField(event: any) {\r\n// if (this.codeMirror && this.codeMirror !== null) {\r\n// let c = this.codeMirror.getCursor();\r\n// this.codeMirror.replaceSelection(\"\" + event.label + \"\");\r\n// let d = this.codeMirror.getCursor();\r\n// let e = {\r\n// from: c,\r\n// to: d,\r\n// key: '$' + `{${event.key}}`, // 工作项ID\r\n// label: event.label,\r\n// };\r\n// this.markField(e);\r\n// this.codeMirror.focus();\r\n// this.getValue();\r\n// }\r\n// }\r\n\r\n// /**\r\n// * 复制\r\n// */\r\n// btnCopy() {\r\n// if (!!`${this.value}`) {\r\n// let value = (_.cloneDeep(this.value) as string).replace(\"↵\", \"\");\r\n// localStorage.setItem(\"codemirror\", value);\r\n// this.message.success(`复制成功`);\r\n// } else {\r\n// this.message.warning(`公式为空,请配置公式后复制`);\r\n// }\r\n// }\r\n\r\n// /**\r\n// * 粘贴\r\n// */\r\n// btnPaste() {\r\n// if (!!localStorage.getItem(\"codemirror\")) {\r\n// if (!this.value) {\r\n// this.value = localStorage.getItem(\"codemirror\") as string;\r\n// } else {\r\n// this.value = `${this.value}${localStorage.getItem(\"codemirror\") as string}`;\r\n// }\r\n\r\n// this.setValue();\r\n// this.message.success(`粘贴成功`);\r\n// } else {\r\n// this.message.warning(`没有需要粘贴的数据,请先复制`);\r\n// }\r\n// }\r\n\r\n// /**\r\n// * 清空\r\n// */\r\n// btnClear() {\r\n// this.value = null;\r\n// if (this.codeMirror) {\r\n// this.codeMirror.setValue(\"\");\r\n// }\r\n// this.message.success(`清空成功`);\r\n// }\r\n\r\n// private onChange = (_: any) => { };\r\n\r\n// private onTouched = () => { };\r\n\r\n// private markField(e: any) {\r\n// if (this.codeMirror && this.codeMirror !== null) {\r\n// let node = document.createElement(\"span\");\r\n// node.innerHTML = e.label;\r\n// node.className = \"cm-field cm-field-value\";\r\n// node.setAttribute(\"field-key\", e.key);\r\n// this.codeMirror.markText(e.from, e.to, {\r\n// handleMouseEvents: !0,\r\n// atomic: !0,\r\n// replacedWith: node,\r\n// });\r\n// let d = this.codeMirror.getCursor();\r\n// }\r\n// }\r\n// private insertBarcket() {\r\n// if (this.codeMirror && this.codeMirror !== null) {\r\n// let c = this.codeMirror.getCursor();\r\n// this.codeMirror.replaceSelection(\"(\");\r\n// let d = this.codeMirror.getCursor();\r\n\r\n// let c1 = this.codeMirror.getCursor();\r\n// this.codeMirror.replaceSelection(\")\");\r\n// let d1 = this.codeMirror.getCursor();\r\n// this.codeMirror.setCursor(d);\r\n// this.codeMirror.focus();\r\n// }\r\n// }\r\n\r\n// private getValue() {\r\n// let result: any = [];\r\n// let codeContent =\r\n// this.el.nativeElement.querySelectorAll(\".CodeMirror-line\");\r\n// this.fml.Utils.forEach(codeContent, (t: any, e: any) => {\r\n// this.fml.Utils.forEach(e.children, (t1: any, e1: any) => {\r\n// this.fml.Utils.forEach(e1.children, (t2: any, e2: any) => {\r\n// if (\r\n// e2.getAttribute(\"cm-text\") !== undefined &&\r\n// e2.getAttribute(\"cm-text\") !== null\r\n// ) {\r\n// result.push(\"↵\");\r\n// } else {\r\n// if (e2.className === \"CodeMirror-widget\") {\r\n// this.fml.Utils.forEach(e2.children, (t3: any, e3: any) => {\r\n// if (\r\n// e3.getAttribute(\"field-key\") !== undefined &&\r\n// e3.getAttribute(\"field-key\") !== null\r\n// ) {\r\n// result.push(e3.getAttribute(\"field-key\"));\r\n// } else {\r\n// result.push(e3.innerText);\r\n// }\r\n// });\r\n// } else {\r\n// result.push(e2.innerText);\r\n// }\r\n// }\r\n// });\r\n// });\r\n// });\r\n\r\n// if (result[0] === \"↵\") {\r\n// result.splice(0, 1);\r\n// }\r\n// this.value = result.join(\"\");\r\n// if (this.codeMirror) {\r\n// this.textChange.emit(this.codeMirror.getValue());\r\n// }\r\n\r\n// this.onChange(this.value);\r\n// }\r\n\r\n// private fakeLabel(t: any) {\r\n// return t ? t.replace(/[\\[\\]()'\"]/g, \" \") : \"\";\r\n// }\r\n\r\n// private setValue() {\r\n// if (this.value === undefined || this.value === null || this.value === \"\") {\r\n// return;\r\n// }\r\n// let e: any = [];\r\n// let p: any = [];\r\n// let t: any[] = this.value.split(\"\\n\");\r\n// this.fml.Utils.forEach(t, (c: any, t1: any) => {\r\n// let d: any = \"\",\r\n// t = t1.split(\r\n// new RegExp(this.fml.FormulaEditor.COMMON_REG.FORM_FORMULA, \"g\")\r\n// );\r\n// this.fml.Utils.forEach(t, (t: any, e: any) => {\r\n// let i: any, a: any, n: any, s: any, o: any, r: any, l: any;\r\n// this.fml.FormulaEditor.CONST.FIELD_REG.test(e)\r\n// ? ((a = !1),\r\n// this.labelMap &&\r\n// (i = this.labelMap[e] ? this.labelMap[e] : \" \") &&\r\n// ((i = this.fakeLabel(i)), (a = !0)),\r\n// (n = !1),\r\n// this.fml.Utils.isNull(i) && ((i = 1), (n = !0)),\r\n// (s = (l = e.replace(\"$\", \"\").split(\"}\"))[0]),\r\n// (o = l[1]),\r\n// (r = CodeMirror.Pos(c, d.length)),\r\n// (d += i),\r\n// (l = CodeMirror.Pos(c, d.length)),\r\n// p.push({\r\n// from: r,\r\n// to: l,\r\n// key: `$${s}}`,\r\n// label: a ? (this.labelMap[e] ? this.labelMap[e] : \"\") : null,\r\n// }))\r\n// : (d += e);\r\n// });\r\n// e.push(d);\r\n// });\r\n// if (this.codeMirror) {\r\n// this.codeMirror.setValue(e.join(\"\\n\"));\r\n// this.fml.Utils.forEach(p, (t: any, e: any) => {\r\n// this.markField(e);\r\n// });\r\n// }\r\n// }\r\n// }\r\n\r\nimport {\r\n Component,\r\n OnInit,\r\n AfterViewInit,\r\n OnChanges,\r\n} from '@angular/core'; \r\nimport { CommonModule } from '@angular/common'; \r\n\r\n@Component({\r\n selector: \"deon-codemirror\",\r\n templateUrl: './index.html',\r\n styleUrls: ['./index.less'],\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class GramCodemirrorComponent implements OnInit, AfterViewInit, OnChanges { \r\n constructor( ) { }\r\n\r\n ngOnInit() { }\r\n\r\n ngAfterViewInit() {\r\n \r\n }\r\n\r\n ngOnChanges(change: any) {\r\n \r\n } \r\n}\r\n","<!-- <div class=\"formula-head\">\r\n <div class=\"formula-title\">\r\n <span class=\"formula-name\">{{ title }}</span><span class=\"formula-equal\">=</span>\r\n </div>\r\n <div class=\"formula-body\">\r\n <textarea [name]=\"name\" autocomplete=\"off\" [autofocus]=\"autoFocus\" #ref>\r\n </textarea>\r\n <div class=\"button-body\">\r\n <button nz-button type=\"button\" nzSize=\"small\" (click)=\"btnCopy()\">复制</button>\r\n <button nz-button type=\"button\" nzSize=\"small\" (click)=\"btnPaste()\">粘贴</button>\r\n <button nz-button type=\"button\" nzSize=\"small\" (click)=\"btnClear()\">清空</button>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"formula-wrapper\">\r\n <div class=\"field-list\">\r\n <div class=\"title\">可用变量</div>\r\n <div class=\"field-wrapper\">\r\n <div class=\"search\">\r\n <input type=\"text\" nz-input placeholder=\"搜索可用变量\" [(ngModel)]=\"variableSearch\" />\r\n </div>\r\n <div class=\"collapse-wrapper\">\r\n <ng-container *ngIf=\"fieldData!! && fieldData.length>0\">\r\n <nz-collapse [nzBordered]=\"false\">\r\n <ng-container *ngFor=\"let item of fieldData\">\r\n <nz-collapse-panel [nzHeader]=\"item.label\">\r\n <div class=\"item\" *ngFor=\"let field of item.listField\" (click)=\"insertField(field)\">\r\n {{ field.label }}\r\n </div>\r\n </nz-collapse-panel>\r\n </ng-container>\r\n </nz-collapse>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field-list\">\r\n <div class=\"title\">函数</div>\r\n <div class=\"field-wrapper\">\r\n <div class=\"search\">\r\n <input type=\"text\" nz-input placeholder=\"搜索函数\" [(ngModel)]=\"usageFunSearch\" />\r\n </div>\r\n <div class=\"collapse-wrapper\">\r\n\r\n <ng-container *ngIf=\"FormulaUsage!! && FormulaUsage.length>0\">\r\n <nz-collapse [nzBordered]=\"false\">\r\n <ng-container *ngFor=\"let item of FormulaUsage\">\r\n <nz-collapse-panel [nzHeader]=\"item.category\">\r\n <div class=\"item\" *ngFor=\"let field of item.contains\" (mouseover)=\"usageMouseover(field)\"\r\n (click)=\"insertUsageFun(field)\">\r\n {{ field.name }}\r\n </div>\r\n </nz-collapse-panel>\r\n </ng-container>\r\n </nz-collapse>\r\n </ng-container>\r\n\r\n\r\n <ng-template #searchPanel>\r\n <ul>\r\n <li *ngFor=\"let item of usageFunSearchList\" (mouseover)=\"usageMouseover(item)\"\r\n (click)=\"insertUsageFun(item)\">\r\n {{ item.name }}\r\n </li>\r\n </ul>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"formula-intro\" [innerHtml]=\"usageDescription | safeHtml\"></div>\r\n</div> -->","\r\nimport {\r\n NgModule\r\n} from \"@angular/core\";\r\nimport { GramCodemirrorComponent } from './default/index'; \r\n\r\nconst components: any[] = [GramCodemirrorComponent];\r\n\r\n@NgModule({\r\n exports: [...components],\r\n imports: [...components],\r\n})\r\nexport class GramCodemirrorModule {\r\n}\r\n","/**\r\n * Public API surface of GramCodemirror\r\n */\r\n\r\n// Components\r\nexport * from './default/index';\r\n\r\n// Module\r\nexport * from './index.module';\r\n\r\n// // Types\r\n// export * from './tools/formula'; // Assuming this exists","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAkBa,uBAAuB,CAAA;AAClC,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;IAER,eAAe,GAAA;;AAIf,IAAA,WAAW,CAAC,MAAW,EAAA;;wGATZ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECz0BpC,u/FAsEU,EAAA,MAAA,EAAA,CAAA,isGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDgwBN,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAGH,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAGlB,OAAA,EAAA;wBACP;AACD,qBAAA,EAAA,QAAA,EAAA,u/FAAA,EAAA,MAAA,EAAA,CAAA,isGAAA,CAAA,EAAA;;;AEj0BH,MAAM,UAAU,GAAU,CAAC,uBAAuB,CAAC;MAMtC,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAApB,oBAAoB,EAAA,OAAA,EAAA,CANN,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAAvB,uBAAuB,CAAA,EAAA,CAAA;AAMrC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAFlB,UAAU,CAAA,EAAA,CAAA;;4FAEZ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;AACxB,oBAAA,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;AACzB,iBAAA;;;ACXD;;AAEG;AAEH;AAMA;AACA;;ACXA;;AAEG;;;;"}