From 069167c131b4aaa30a921fa81c8175099c638487 Mon Sep 17 00:00:00 2001 From: "Zhenfei.Li" Date: Thu, 2 Feb 2023 17:28:44 +0800 Subject: [PATCH] =?UTF-8?q?KERNEL-14124=20fix:=20=E5=86=8D=E6=A2=B3?= =?UTF-8?q?=E7=90=86=E4=B8=80=E9=81=8D=E5=8E=BB=E8=84=9A=E6=9C=AC=E9=9A=BE?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E7=9A=84BI.=E4=BB=A5=E5=8F=8Aeslint=E6=A0=87?= =?UTF-8?q?=E7=BA=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc | 2 +- src/base/1.pane.js | 12 +- src/base/collection/collection.js | 11 +- src/base/combination/bubble.js | 88 ++-- src/base/combination/combo.js | 426 +++++++++--------- src/base/combination/expander.js | 145 +++--- src/base/combination/group.combo.js | 5 +- src/base/combination/loader.js | 61 +-- src/base/combination/navigation.js | 19 +- src/base/combination/searcher.js | 77 ++-- src/base/combination/switcher.js | 135 +++--- src/base/combination/tab.js | 11 +- src/base/combination/tree.button.js | 8 +- src/base/context.js | 6 +- src/base/foundation/message.js | 33 +- src/base/grid/grid.js | 15 +- src/base/layer/layer.drawer.js | 152 +++---- src/base/layer/layer.popover.js | 56 +-- src/base/layer/layer.popup.js | 409 ++++++++--------- src/base/layer/layer.searcher.js | 16 +- src/base/list/listview.js | 12 +- src/base/list/virtualgrouplist.js | 12 +- src/base/list/virtuallist.js | 12 +- src/base/pager/pager.js | 63 +-- src/base/single/1.text.js | 60 +-- src/base/single/a/a.js | 4 +- src/base/single/bar/bar.loading.js | 22 +- src/base/single/button/button.basic.js | 185 ++++---- src/base/single/button/button.node.js | 6 +- src/base/single/button/buttons/button.icon.js | 4 +- src/base/single/button/buttons/button.js | 18 +- .../button/listitem/blankicontexticonitem.js | 2 +- .../single/button/listitem/icontextitem.js | 4 +- src/base/single/editor/editor.js | 16 +- src/base/single/editor/editor.multifile.js | 4 +- src/base/single/editor/editor.textarea.js | 34 +- src/base/single/html/html.js | 20 +- src/base/single/icon/icon.js | 8 +- src/base/single/img/img.js | 9 - .../single/input/checkbox/checkbox.image.js | 4 +- src/base/single/input/checkbox/checkbox.js | 4 +- src/base/single/input/file.js | 99 ++-- src/base/single/input/input.js | 52 ++- src/base/single/input/radio/radio.image.js | 4 +- src/base/single/input/radio/radio.js | 4 +- src/base/single/label/abstract.label.js | 18 +- src/base/single/label/icon.label.js | 8 +- src/base/single/link/link.js | 4 +- src/base/single/tip/0.tip.js | 8 +- src/base/single/tip/tip.toast.js | 44 +- src/base/single/tip/tip.tooltip.js | 8 +- src/base/single/trigger/trigger.js | 4 +- src/base/tree/customtree.js | 9 +- .../button/icon/iconhalf/icon.half.image.js | 5 - src/case/button/icon/iconhalf/icon.half.js | 5 - src/case/button/item.multiselect.js | 10 +- src/case/button/item.singleselect.icontext.js | 8 +- src/case/button/item.singleselect.js | 4 +- src/case/button/item.singleselect.radio.js | 12 +- src/case/button/node/node.icon.arrow.js | 14 +- src/case/button/node/node.plus.js | 8 +- src/case/button/node/siwtcher.tree.node.js | 10 +- src/case/button/node/treenode.js | 8 +- src/case/button/switch.js | 19 +- .../button/treeitem/item.icon.treeleaf.js | 12 +- .../treeitem/item.multilayer.icon.treeleaf.js | 8 +- src/case/button/treeitem/treeitem.js | 15 +- src/case/calendar/calendar.date.item.js | 4 +- src/case/calendar/calendar.js | 7 +- src/case/calendar/calendar.year.js | 7 +- src/case/checkbox/check.checkingmarknode.js | 4 +- src/case/checkbox/check.first.treenode.js | 18 +- src/case/checkbox/check.last.treenode.js | 18 +- src/case/checkbox/check.mid.treenode.js | 18 +- src/case/checkbox/check.treenode.js | 18 +- .../colorchooser/colorchooser.popup.hex.js | 46 +- src/case/colorchooser/colorchooser.popup.js | 21 +- src/case/colorchooser/colorchooser.trigger.js | 4 +- .../colorchooser/colorchooser.trigger.long.js | 8 +- .../colorpicker/editor.colorpicker.hex.js | 18 +- .../editor.colorpicker.hex.simple.js | 30 +- .../colorpicker/editor.colorpicker.js | 18 +- .../colorpicker/editor.colorpicker.simple.js | 12 +- src/case/combo/bubblecombo/popup.bubble.js | 115 ++++- .../trigger.searchtextvalue.js | 4 +- src/case/layer/layer.multipopup.js | 8 +- src/case/layer/layer.panel.js | 4 +- src/case/layer/pane.list.js | 4 +- src/case/pager/pager.all.count.js | 39 +- src/case/pager/pager.detail.js | 54 +-- src/case/pager/pager.direction.js | 22 +- src/case/tree/tree.level.js | 5 +- .../tree/treeexpander/tree.expander.popup.js | 6 +- src/case/ztree/list/listtreeview.js | 6 +- src/case/ztree/parttree.js | 4 +- src/case/ztree/tree.display.js | 10 +- src/case/ztree/tree.list.display.js | 8 +- src/case/ztree/treeview.js | 8 +- src/core/4.widget.js | 31 +- src/core/5.inject.js | 25 +- src/core/action/action.js | 4 +- src/core/controller/controller.bubbles.js | 2 +- src/core/controller/controller.layer.js | 10 +- src/core/controller/controller.masker.js | 3 +- src/core/controller/controller.popover.js | 3 +- src/core/element/plugins/class.js | 6 +- src/core/element/plugins/val.js | 4 +- src/core/func/date.js | 42 +- src/core/func/function.js | 6 +- src/core/logic/index.js | 66 +-- src/core/structure/queue.js | 2 +- src/core/system.js | 13 +- src/core/utils/index.js | 2 +- src/third/sort.gb2312.js | 13 +- src/widget/date/calendar/popup.month.js | 7 +- src/widget/downlist/item.downlist.js | 4 +- src/widget/downlist/popup.downlist.js | 8 +- src/widget/dynamicdate/dynamicdate.card.js | 169 +++---- .../dynamicdate/dynamicdate.param.item.js | 48 +- src/widget/dynamicdate/dynamicdate.popup.js | 11 +- .../dynamicdatetime/dynamicdatetime.popup.js | 197 ++++---- .../dynamicdatetime.timeselect.js | 43 +- .../multilayerdownlist/popup.downlist.js | 7 +- .../multilayerselecttree.leveltree.js | 8 +- .../multilayerselecttree.popup.js | 4 +- .../multilayerselecttree.trigger.js | 4 +- .../multilayersingletree.leveltree.js | 5 +- .../multilayersingletree.popup.js | 4 +- .../multilayersingletree.trigger.js | 4 +- .../check/multiselect.check.pane.js | 5 +- src/widget/multiselect/multiselect.combo.js | 44 +- .../multiselect/multiselect.combo.nobar.js | 35 +- .../multiselect/multiselect.insert.combo.js | 12 +- .../multiselect.insert.combo.nobar.js | 12 +- src/widget/multiselect/multiselect.loader.js | 9 +- .../multiselect/multiselect.loader.nobar.js | 7 +- .../multiselect/multiselect.popup.view.js | 20 +- .../multiselect.popup.view.nobar.js | 17 +- .../search/multiselect.search.insert.pane.js | 4 +- .../search/multiselect.search.loader.js | 7 +- .../trigger/button.checkselected.js | 2 +- .../multiselect/trigger/editor.multiselect.js | 4 +- .../trigger/editor/editor.patch.js | 13 +- .../trigger/searcher.multiselect.insert.js | 18 +- .../trigger/searcher.multiselect.js | 12 +- .../multiselectlist/multiselectlist.insert.js | 22 +- .../multiselectlist.insert.nobar.js | 13 +- src/widget/multiselectlist/multiselectlist.js | 10 +- src/widget/multitree/multi.tree.combo.js | 14 +- .../multitree/multi.tree.insert.combo.js | 14 +- src/widget/multitree/multi.tree.list.combo.js | 14 +- .../trigger/searcher.list.multi.tree.js | 6 +- .../multitree/trigger/searcher.multi.tree.js | 7 +- .../multitextvalue.combo.search.js | 5 +- .../multitextvalue.loader.search.js | 5 +- src/widget/selecttree/selecttree.popup.js | 5 +- .../search/singleselect.search.loader.js | 5 +- src/widget/singleselect/singleselect.list.js | 14 +- .../singleselect/singleselect.loader.js | 5 +- src/widget/year/card.dynamic.year.js | 8 +- src/widget/year/combo.year.js | 24 +- src/widget/year/popup.year.js | 140 +++--- src/widget/year/trigger.year.js | 49 +- .../yearmonth/card.dynamic.yearmonth.js | 21 +- src/widget/yearmonth/card.static.yearmonth.js | 10 +- src/widget/yearmonth/popup.yearmonth.js | 147 +++--- .../yearquarter/card.dynamic.yearquarter.js | 21 +- .../yearquarter/card.static.yearquarter.js | 5 +- src/widget/yearquarter/popup.yearquarter.js | 159 +++---- 169 files changed, 2522 insertions(+), 2315 deletions(-) diff --git a/.eslintrc b/.eslintrc index 427a7b32b..0041bf7e0 100644 --- a/.eslintrc +++ b/.eslintrc @@ -35,7 +35,7 @@ "comma-dangle": ["error", { "arrays": "never", "objects": "always-multiline"}], // 多行对象字面量中要求拖尾逗号 "no-var": 2, "prefer-const": 2, - "indent": ["error", 4], + "indent": ["error", 4, { "SwitchCase": 1 }], "no-use-before-define": 0, "eqeqeq": 0 } diff --git a/src/base/1.pane.js b/src/base/1.pane.js index 31176dbd5..3342edb75 100644 --- a/src/base/1.pane.js +++ b/src/base/1.pane.js @@ -10,7 +10,9 @@ import { isNull, isEmpty, createWidget, - Providers + Providers, + i18nText, + emptyFn } from "@/core"; import { Label, Text } from "./single"; import { Layers } from "@/base/0.base"; @@ -19,8 +21,8 @@ import { Layers } from "@/base/0.base"; * 当没有元素时有提示信息的view * * Created by GUY on 2015/9/8. - * @class BI.Pane - * @extends BI.Widget + * @class Pane + * @extends Widget * @abstract */ @@ -33,11 +35,11 @@ export class Pane extends Widget { _defaultConfig() { return extend(super._defaultConfig(), { _baseCls: "bi-pane", - tipText: BI.i18nText("BI-No_Selected_Item"), + tipText: i18nText("BI-No_Selected_Item"), loadingText: "", loadingSize: "small", overlap: true, - onLoaded: BI.emptyFn, + onLoaded: emptyFn, }); } diff --git a/src/base/collection/collection.js b/src/base/collection/collection.js index 8bf7f2274..d8de3b717 100644 --- a/src/base/collection/collection.js +++ b/src/base/collection/collection.js @@ -16,7 +16,8 @@ import { invert, min, max, - nextTick + nextTick, + DOM } from "@/core"; import { Label } from "../single"; @@ -24,8 +25,8 @@ import { Label } from "../single"; * CollectionView * * Created by GUY on 2016/1/15. - * @class BI.CollectionView - * @extends BI.Widget + * @class CollectionView + * @extends Widget */ @shortcut() @@ -376,11 +377,11 @@ export class CollectionView extends Widget { } _getMaxScrollLeft() { - return Math.max(0, this._width - this.options.width + (this._isOverflowX() ? BI.DOM.getScrollWidth() : 0)); + return Math.max(0, this._width - this.options.width + (this._isOverflowX() ? DOM.getScrollWidth() : 0)); } _getMaxScrollTop() { - return Math.max(0, this._height - this.options.height + (this._isOverflowY() ? BI.DOM.getScrollWidth() : 0)); + return Math.max(0, this._height - this.options.height + (this._isOverflowY() ? DOM.getScrollWidth() : 0)); } _populate(items) { diff --git a/src/base/combination/bubble.js b/src/base/combination/bubble.js index c4b143721..c81c3a79c 100644 --- a/src/base/combination/bubble.js +++ b/src/base/combination/bubble.js @@ -14,14 +14,14 @@ import { isNull, isFunction, contains, - bind + bind, + Events, + emptyFn, + LogicFactory, + EVENT_RESPONSE_TIME, + EVENT_BLUR } from "@/core"; -/** - * @class BI.Bubble - * @extends BI.Widget - */ - @shortcut() export class Bubble extends Widget { static xtype = "bi.bubble"; @@ -65,7 +65,7 @@ export class Bubble extends Widget { adjustLength: 0, // 调整的距离 adjustXOffset: 0, adjustYOffset: 0, - hideChecker: BI.emptyFn, + hideChecker: emptyFn, offsetStyle: "left", // left,right,center el: {}, popup: {}, @@ -83,32 +83,32 @@ export class Bubble extends Widget { }); this.combo.on(Controller.EVENT_CHANGE, (type, value, obj, ...args) => { if (this.isEnabled() && this.isValid()) { - if (type === BI.Events.EXPAND) { + if (type === Events.EXPAND) { this._popupView(); } - if (type === BI.Events.COLLAPSE) { + if (type === Events.COLLAPSE) { this._hideView(); } - if (type === BI.Events.EXPAND) { + if (type === Events.EXPAND) { this.fireEvent(Controller.EVENT_CHANGE, type, value, obj, ...args); this.fireEvent(Bubble.EVENT_EXPAND); } - if (type === BI.Events.COLLAPSE) { + if (type === Events.COLLAPSE) { this.fireEvent(Controller.EVENT_CHANGE, type, value, obj, ...args); this.isViewVisible() && this.fireEvent(Bubble.EVENT_COLLAPSE); } - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this.fireEvent(Bubble.EVENT_TRIGGER_CHANGE, obj); } } }); - this.element.on(`mouseenter.${this.getName()}`, (e) => { + this.element.on(`mouseenter.${this.getName()}`, e => { if (this.isEnabled() && this.isValid() && this.combo.isEnabled() && this.combo.isValid()) { this.element.addClass(hoverClass); } }); - this.element.on(`mouseleave.${this.getName()}`, (e) => { + this.element.on(`mouseleave.${this.getName()}`, e => { if (this.isEnabled() && this.isValid() && this.combo.isEnabled() && this.combo.isValid()) { this.element.removeClass(hoverClass); } @@ -120,7 +120,7 @@ export class Bubble extends Widget { element: this, scrolly: false, }, - BI.LogicFactory.createLogic( + LogicFactory.createLogic( "vertical", extend(logic, { items: [{ el: this.combo }], @@ -146,7 +146,7 @@ export class Bubble extends Widget { const { stopEvent, stopPropagation, toggle } = this.options; const evs = (this.options.trigger || "").split(","); - const st = (e) => { + const st = e => { if (stopEvent) { e.stopEvent(); } @@ -157,7 +157,7 @@ export class Bubble extends Widget { let enterPopup = false; - const hide = (e) => { + const hide = e => { if ( this.isEnabled() && this.isValid() && @@ -166,7 +166,7 @@ export class Bubble extends Widget { toggle === true ) { this._hideView(e); - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.COLLAPSE, "", this.combo); + this.fireEvent(Controller.EVENT_CHANGE, Events.COLLAPSE, "", this.combo); this.fireEvent(Bubble.EVENT_COLLAPSE); } this.popupView && @@ -178,18 +178,18 @@ export class Bubble extends Widget { let debounced; switch (ev) { case "hover": - this.element.on(`mouseenter.${this.getName()}`, (e) => { + this.element.on(`mouseenter.${this.getName()}`, e => { if (this.isEnabled() && this.isValid() && this.combo.isEnabled() && this.combo.isValid()) { this._popupView(e); - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.EXPAND, "", this.combo); + this.fireEvent(Controller.EVENT_CHANGE, Events.EXPAND, "", this.combo); this.fireEvent(Bubble.EVENT_EXPAND); } }); - this.element.on(`mouseleave.${this.getName()}`, (e) => { + this.element.on(`mouseleave.${this.getName()}`, e => { if (this.popupView) { - this.popupView.element.on(`mouseenter.${this.getName()}`, (e) => { + this.popupView.element.on(`mouseenter.${this.getName()}`, e => { enterPopup = true; - this.popupView.element.on(`mouseleave.${this.getName()}`, (e) => { + this.popupView.element.on(`mouseleave.${this.getName()}`, e => { hide(e); }); this.popupView.element.off(`mouseenter.${this.getName()}`); @@ -204,7 +204,7 @@ export class Bubble extends Widget { break; case "click": debounced = debounce( - (e) => { + e => { if (this.combo.element.__isMouseInBounds__(e)) { if ( this.isEnabled() && @@ -217,29 +217,29 @@ export class Bubble extends Widget { // } toggle ? this._toggle(e) : this._popupView(e); if (this.isViewVisible()) { - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.EXPAND, "", this.combo); + this.fireEvent(Controller.EVENT_CHANGE, Events.EXPAND, "", this.combo); this.fireEvent(Bubble.EVENT_EXPAND); } else { - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.COLLAPSE, "", this.combo); + this.fireEvent(Controller.EVENT_CHANGE, Events.COLLAPSE, "", this.combo); this.fireEvent(Bubble.EVENT_COLLAPSE); } } } }, - BI.EVENT_RESPONSE_TIME, + EVENT_RESPONSE_TIME, { leading: true, trailing: false, } ); - this.element.off(`${ev}.${this.getName()}`).on(`${ev}.${this.getName()}`, (e) => { + this.element.off(`${ev}.${this.getName()}`).on(`${ev}.${this.getName()}`, e => { debounced(e); st(e); }); break; case "click-hover": debounced = debounce( - (e) => { + e => { if (this.combo.element.__isMouseInBounds__(e)) { if ( this.isEnabled() && @@ -252,27 +252,27 @@ export class Bubble extends Widget { // } this._popupView(e); if (this.isViewVisible()) { - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.EXPAND, "", this.combo); + this.fireEvent(Controller.EVENT_CHANGE, Events.EXPAND, "", this.combo); this.fireEvent(Bubble.EVENT_EXPAND); } } } }, - BI.EVENT_RESPONSE_TIME, + EVENT_RESPONSE_TIME, { leading: true, trailing: false, } ); - this.element.off(`click.${this.getName()}`).on(`click.${this.getName()}`, (e) => { + this.element.off(`click.${this.getName()}`).on(`click.${this.getName()}`, e => { debounced(e); st(e); }); - this.element.on(`mouseleave.${this.getName()}`, (e) => { + this.element.on(`mouseleave.${this.getName()}`, e => { if (this.popupView) { - this.popupView.element.on(`mouseenter.${this.getName()}`, (e) => { + this.popupView.element.on(`mouseenter.${this.getName()}`, e => { enterPopup = true; - this.popupView.element.on(`mouseleave.${this.getName()}`, (e) => { + this.popupView.element.on(`mouseleave.${this.getName()}`, e => { hide(e); }); this.popupView.element.off(`mouseenter.${this.getName()}`); @@ -286,10 +286,10 @@ export class Bubble extends Widget { }); break; case "hover-click": - this.element.on(`mouseenter.${this.getName()}`, (e) => { + this.element.on(`mouseenter.${this.getName()}`, e => { if (this.isEnabled() && this.isValid() && this.combo.isEnabled() && this.combo.isValid()) { this._popupView(e); - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.EXPAND, "", this.combo); + this.fireEvent(Controller.EVENT_CHANGE, Events.EXPAND, "", this.combo); this.fireEvent(Bubble.EVENT_EXPAND); } }); @@ -319,7 +319,7 @@ export class Bubble extends Widget { this ); this.popupView.on(Controller.EVENT_CHANGE, (type, value, obj, ...args) => { - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this.combo.setValue(this.getValue()); this.fireEvent(Bubble.EVENT_CHANGE, value, obj); } @@ -404,7 +404,7 @@ export class Bubble extends Widget { .createElement(document) .unbind(`mousedown.${this.getName()}`) .unbind(`mousewheel.${this.getName()}`); - BI.EVENT_BLUR && hideWhenBlur && Widget._renderEngine.createElement(window).unbind(`blur.${this.getName()}`); + EVENT_BLUR && hideWhenBlur && Widget._renderEngine.createElement(window).unbind(`blur.${this.getName()}`); this.fireEvent(Bubble.EVENT_AFTER_HIDEVIEW); } @@ -427,7 +427,7 @@ export class Bubble extends Widget { options: { offset: () => [adjustXOffset, (showArrow ? 12 : 0) + (adjustYOffset + adjustLength)], }, - }, + } ]; if (this.options.showArrow) { modifiers.push({ @@ -448,11 +448,11 @@ export class Bubble extends Widget { this.element.addClass(this.options.comboClass); hideWhenClickOutside && Widget._renderEngine.createElement(document).unbind(`mousedown.${this.getName()}`); - BI.EVENT_BLUR && hideWhenBlur && Widget._renderEngine.createElement(window).unbind(`blur.${this.getName()}`); + EVENT_BLUR && hideWhenBlur && Widget._renderEngine.createElement(window).unbind(`blur.${this.getName()}`); hideWhenClickOutside && Widget._renderEngine.createElement(document).bind(`mousedown.${this.getName()}`, bind(this._hideIf, this)); - BI.EVENT_BLUR && + EVENT_BLUR && hideWhenBlur && Widget._renderEngine.createElement(window).bind(`blur.${this.getName()}`, bind(this._hideIf, this)); this.fireEvent(Bubble.EVENT_AFTER_POPUPVIEW); @@ -500,8 +500,8 @@ export class Bubble extends Widget { populate(items) { this._assertPopupView(); - this.popupView.populate.apply(this.popupView, arguments); - this.combo.populate && this.combo.populate.apply(this.combo, arguments); + this.popupView.populate(...arguments); + this.combo.populate && this.combo.populate(...arguments); } _setEnable(arg) { diff --git a/src/base/combination/combo.js b/src/base/combination/combo.js index 187875fa8..4f86e51c5 100644 --- a/src/base/combination/combo.js +++ b/src/base/combination/combo.js @@ -11,15 +11,15 @@ import { isNotNull, isNull, isFunction, - each + each, + Events, + EVENT_BLUR, + DOM, + emptyFn, + LogicFactory } from "@/core"; import { Resizers } from "@/base/0.base"; -/** - * @class BI.Combo - * @extends BI.Widget - */ - let needHideWhenAnotherComboOpen = {}; let currentOpenedCombos = {}; @@ -42,7 +42,7 @@ export class Combo extends Bubble { const conf = super._defaultConfig(...arguments); return extend(conf, { - baseCls: `${conf.baseCls || ""} bi-combo${BI.isIE() ? " hack" : ""}`, + baseCls: `${conf.baseCls || ""} bi-comboisIE() ? " hack" : ""}`, attributes: { tabIndex: -1, }, @@ -67,7 +67,7 @@ export class Combo extends Bubble { adjustXOffset: 0, adjustYOffset: 0, supportCSSTransform: true, - hideChecker: BI.emptyFn, + hideChecker: emptyFn, offsetStyle: "", // "",center,middle el: {}, popup: {}, @@ -86,24 +86,24 @@ export class Combo extends Bubble { }); this.combo.on(Controller.EVENT_CHANGE, (type, value, obj, ...args) => { if (this.isEnabled() && this.isValid()) { - if (type === BI.Events.TOGGLE) { + if (type === Events.TOGGLE) { this._toggle(); } - if (type === BI.Events.EXPAND) { + if (type === Events.EXPAND) { this._popupView(); } - if (type === BI.Events.COLLAPSE) { + if (type === Events.COLLAPSE) { this._hideView(); } - if (type === BI.Events.EXPAND) { + if (type === Events.EXPAND) { this.fireEvent(Controller.EVENT_CHANGE, type, value, obj, ...args); this.fireEvent(Combo.EVENT_EXPAND); } - if (type === BI.Events.COLLAPSE) { + if (type === Events.COLLAPSE) { this.fireEvent(Controller.EVENT_CHANGE, type, value, obj, ...args); this.isViewVisible() && this.fireEvent(Combo.EVENT_COLLAPSE); } - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this.fireEvent(Combo.EVENT_TRIGGER_CHANGE, obj); } } @@ -126,7 +126,7 @@ export class Combo extends Bubble { element: this, scrolly: false, }, - BI.LogicFactory.createLogic( + LogicFactory.createLogic( "vertical", extend(logic, { items: [{ el: this.combo }], @@ -147,7 +147,7 @@ export class Combo extends Bubble { } _assertPopupView() { - const { showArrow, value, hideWhenClickOutside, hideWhenBlur } = this.options; + const { showArrow, value } = this.options; if (isNull(this.popupView)) { this.popupView = createWidget( isFunction(this.options.popup) ? this.options.popup() : this.options.popup, @@ -159,7 +159,7 @@ export class Combo extends Bubble { this ); this.popupView.on(Controller.EVENT_CHANGE, (type, value, obj, ...args) => { - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this.combo.setValue(this.getValue()); this.fireEvent(Bubble.EVENT_CHANGE, value, obj); } @@ -198,7 +198,7 @@ export class Combo extends Bubble { .createElement(document) .unbind(`mousedown.${this.getName()}`) .unbind(`mousewheel.${this.getName()}`); - BI.EVENT_BLUR && hideWhenBlur && Widget._renderEngine.createElement(window).unbind(`blur.${this.getName()}`); + EVENT_BLUR && hideWhenBlur && Widget._renderEngine.createElement(window).unbind(`blur.${this.getName()}`); this.fireEvent(Combo.EVENT_AFTER_HIDEVIEW, e); } @@ -228,7 +228,7 @@ export class Combo extends Bubble { .unbind(`mousedown.${this.getName()}`) .unbind(`mousewheel.${this.getName()}`); hideWhenClickOutside && Widget._renderEngine.createElement(document).unbind(`mousewheel.${this.getName()}`); - BI.EVENT_BLUR && hideWhenBlur && Widget._renderEngine.createElement(window).unbind(`blur.${this.getName()}`); + EVENT_BLUR && hideWhenBlur && Widget._renderEngine.createElement(window).unbind(`blur.${this.getName()}`); hideWhenClickOutside && Widget._renderEngine.createElement(document).bind(`mousewheel.${this.getName()}`, bind(this._hideIf, this)); @@ -237,7 +237,7 @@ export class Combo extends Bubble { .createElement(document) .bind(`mousedown.${this.getName()}`, bind(this._hideIf, this)) .bind(`mousewheel.${this.getName()}`, bind(this._hideIf, this)); - BI.EVENT_BLUR && + EVENT_BLUR && hideWhenBlur && Widget._renderEngine.createElement(window).bind(`blur.${this.getName()}`, bind(this._hideIf, this)); this.fireEvent(Combo.EVENT_AFTER_POPUPVIEW); @@ -288,7 +288,7 @@ export class Combo extends Bubble { } : this.combo; const positionRelativeElement = supportCSSTransform - ? BI.DOM.getPositionRelativeContainingBlock( + ? DOM.getPositionRelativeContainingBlock( isNull(container) ? this.element[0] : Widget._renderEngine.createElement(isFunction(container) ? container() : container)[0] @@ -296,198 +296,198 @@ export class Combo extends Bubble { : null; const TRIANGLE_LENGTH = 12; switch (direction) { - case "bottom": - case "bottom,right": - p = BI.DOM.getComboPosition( - combo, - this.popupView, - adjustXOffset, - adjustYOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), - isNeedAdjustHeight, - ["bottom", "top", "right", "left"], - offsetStyle, - positionRelativeElement - ); - break; - case "top": - case "top,right": - p = BI.DOM.getComboPosition( - combo, - this.popupView, - adjustXOffset, - adjustYOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), - isNeedAdjustHeight, - ["top", "bottom", "right", "left"], - offsetStyle, - positionRelativeElement - ); - break; - case "left": - case "left,bottom": - p = BI.DOM.getComboPosition( - combo, - this.popupView, - adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), - adjustYOffset, - isNeedAdjustHeight, - ["left", "right", "bottom", "top"], - offsetStyle, - positionRelativeElement - ); - break; - case "right": - case "right,bottom": - p = BI.DOM.getComboPosition( - combo, - this.popupView, - adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), - adjustYOffset, - isNeedAdjustHeight, - ["right", "left", "bottom", "top"], - offsetStyle, - positionRelativeElement - ); - break; - case "top,left": - p = BI.DOM.getComboPosition( - combo, - this.popupView, - adjustXOffset, - adjustYOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), - isNeedAdjustHeight, - ["top", "bottom", "left", "right"], - offsetStyle, - positionRelativeElement - ); - break; - case "bottom,left": - p = BI.DOM.getComboPosition( - combo, - this.popupView, - adjustXOffset, - adjustYOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), - isNeedAdjustHeight, - ["bottom", "top", "left", "right"], - offsetStyle, - positionRelativeElement - ); - break; - case "left,top": - p = BI.DOM.getComboPosition( - combo, - this.popupView, - adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), - adjustYOffset, - isNeedAdjustHeight, - ["left", "right", "top", "bottom"], - offsetStyle, - positionRelativeElement - ); - break; - case "right,top": - p = BI.DOM.getComboPosition( - combo, - this.popupView, - adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), - adjustYOffset, - isNeedAdjustHeight, - ["right", "left", "top", "bottom"], - offsetStyle, - positionRelativeElement - ); - break; - case "right,innerRight": - p = BI.DOM.getComboPosition( - combo, - this.popupView, - adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), - adjustYOffset, - isNeedAdjustHeight, - ["right", "left", "innerRight", "innerLeft", "bottom", "top"], - offsetStyle, - positionRelativeElement - ); - break; - case "right,innerLeft": - p = BI.DOM.getComboPosition( - combo, - this.popupView, - adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), - adjustYOffset, - isNeedAdjustHeight, - ["right", "left", "innerLeft", "innerRight", "bottom", "top"], - offsetStyle, - positionRelativeElement - ); - break; - case "innerRight": - p = BI.DOM.getComboPosition( - combo, - this.popupView, - adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), - adjustYOffset, - isNeedAdjustHeight, - ["innerRight", "innerLeft", "right", "left", "bottom", "top"], - offsetStyle, - positionRelativeElement - ); - break; - case "innerLeft": - p = BI.DOM.getComboPosition( - combo, - this.popupView, - adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), - adjustYOffset, - isNeedAdjustHeight, - ["innerLeft", "innerRight", "left", "right", "bottom", "top"], - offsetStyle, - positionRelativeElement - ); - break; - case "top,custom": - case "custom,top": - p = BI.DOM.getTopAdaptPosition( - combo, - this.popupView, - adjustYOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), - isNeedAdjustHeight - ); - p.dir = "top"; - break; - case "custom,bottom": - case "bottom,custom": - p = BI.DOM.getBottomAdaptPosition( - combo, - this.popupView, - adjustYOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), - isNeedAdjustHeight - ); - p.dir = "bottom"; - break; - case "left,custom": - case "custom,left": - p = BI.DOM.getLeftAdaptPosition( - combo, - this.popupView, - adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0) - ); - delete p.top; - delete p.adaptHeight; - p.dir = "left"; - break; - case "custom,right": - case "right,custom": - p = BI.DOM.getRightAdaptPosition( - combo, - this.popupView, - adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0) - ); - delete p.top; - delete p.adaptHeight; - p.dir = "right"; - break; - default: - break; + case "bottom": + case "bottom,right": + p = DOM.getComboPosition( + combo, + this.popupView, + adjustXOffset, + adjustYOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), + isNeedAdjustHeight, + ["bottom", "top", "right", "left"], + offsetStyle, + positionRelativeElement + ); + break; + case "top": + case "top,right": + p = DOM.getComboPosition( + combo, + this.popupView, + adjustXOffset, + adjustYOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), + isNeedAdjustHeight, + ["top", "bottom", "right", "left"], + offsetStyle, + positionRelativeElement + ); + break; + case "left": + case "left,bottom": + p = DOM.getComboPosition( + combo, + this.popupView, + adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), + adjustYOffset, + isNeedAdjustHeight, + ["left", "right", "bottom", "top"], + offsetStyle, + positionRelativeElement + ); + break; + case "right": + case "right,bottom": + p = DOM.getComboPosition( + combo, + this.popupView, + adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), + adjustYOffset, + isNeedAdjustHeight, + ["right", "left", "bottom", "top"], + offsetStyle, + positionRelativeElement + ); + break; + case "top,left": + p = DOM.getComboPosition( + combo, + this.popupView, + adjustXOffset, + adjustYOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), + isNeedAdjustHeight, + ["top", "bottom", "left", "right"], + offsetStyle, + positionRelativeElement + ); + break; + case "bottom,left": + p = DOM.getComboPosition( + combo, + this.popupView, + adjustXOffset, + adjustYOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), + isNeedAdjustHeight, + ["bottom", "top", "left", "right"], + offsetStyle, + positionRelativeElement + ); + break; + case "left,top": + p = DOM.getComboPosition( + combo, + this.popupView, + adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), + adjustYOffset, + isNeedAdjustHeight, + ["left", "right", "top", "bottom"], + offsetStyle, + positionRelativeElement + ); + break; + case "right,top": + p = DOM.getComboPosition( + combo, + this.popupView, + adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), + adjustYOffset, + isNeedAdjustHeight, + ["right", "left", "top", "bottom"], + offsetStyle, + positionRelativeElement + ); + break; + case "right,innerRight": + p = DOM.getComboPosition( + combo, + this.popupView, + adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), + adjustYOffset, + isNeedAdjustHeight, + ["right", "left", "innerRight", "innerLeft", "bottom", "top"], + offsetStyle, + positionRelativeElement + ); + break; + case "right,innerLeft": + p = DOM.getComboPosition( + combo, + this.popupView, + adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), + adjustYOffset, + isNeedAdjustHeight, + ["right", "left", "innerLeft", "innerRight", "bottom", "top"], + offsetStyle, + positionRelativeElement + ); + break; + case "innerRight": + p = DOM.getComboPosition( + combo, + this.popupView, + adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), + adjustYOffset, + isNeedAdjustHeight, + ["innerRight", "innerLeft", "right", "left", "bottom", "top"], + offsetStyle, + positionRelativeElement + ); + break; + case "innerLeft": + p = DOM.getComboPosition( + combo, + this.popupView, + adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), + adjustYOffset, + isNeedAdjustHeight, + ["innerLeft", "innerRight", "left", "right", "bottom", "top"], + offsetStyle, + positionRelativeElement + ); + break; + case "top,custom": + case "custom,top": + p = DOM.getTopAdaptPosition( + combo, + this.popupView, + adjustYOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), + isNeedAdjustHeight + ); + p.dir = "top"; + break; + case "custom,bottom": + case "bottom,custom": + p = DOM.getBottomAdaptPosition( + combo, + this.popupView, + adjustYOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0), + isNeedAdjustHeight + ); + p.dir = "bottom"; + break; + case "left,custom": + case "custom,left": + p = DOM.getLeftAdaptPosition( + combo, + this.popupView, + adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0) + ); + delete p.top; + delete p.adaptHeight; + p.dir = "left"; + break; + case "custom,right": + case "right,custom": + p = DOM.getRightAdaptPosition( + combo, + this.popupView, + adjustXOffset + adjustLength + (showArrow ? TRIANGLE_LENGTH : 0) + ); + delete p.top; + delete p.adaptHeight; + p.dir = "right"; + break; + default: + break; } if ("adaptHeight" in p) { diff --git a/src/base/combination/expander.js b/src/base/combination/expander.js index 3b56a5801..bbca8fadd 100644 --- a/src/base/combination/expander.js +++ b/src/base/combination/expander.js @@ -8,7 +8,9 @@ import { each, debounce, isNull, - createWidget + createWidget, + Events, + EVENT_RESPONSE_TIME } from "@/core"; import { ButtonGroup } from "./group.button"; @@ -17,10 +19,9 @@ import { ButtonGroup } from "./group.button"; * 某个可以展开的节点 * * Created by GUY on 2015/9/10. - * @class BI.Expander - * @extends BI.Widget + * @class Expander + * @extends Widget */ - @shortcut() export class Expander extends Widget { static xtype = "bi.expander"; @@ -60,21 +61,21 @@ export class Expander extends Widget { }); this.expander.on(Controller.EVENT_CHANGE, (type, value, obj, ...args) => { if (this.isEnabled() && this.isValid()) { - if (type === BI.Events.EXPAND) { + if (type === Events.EXPAND) { this._popupView(); } - if (type === BI.Events.COLLAPSE) { + if (type === Events.COLLAPSE) { this._hideView(); } - if (type === BI.Events.EXPAND) { + if (type === Events.EXPAND) { this.fireEvent(Controller.EVENT_CHANGE, type, value, obj, ...args); this.fireEvent(Expander.EVENT_EXPAND); } - if (type === BI.Events.COLLAPSE) { + if (type === Events.COLLAPSE) { this.fireEvent(Controller.EVENT_CHANGE, type, value, obj, ...args); this.isViewVisible() && this.fireEvent(Expander.EVENT_COLLAPSE); } - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this.fireEvent(Expander.EVENT_TRIGGER_CHANGE, value, obj); } } @@ -120,80 +121,80 @@ export class Expander extends Widget { const evs = this.options.trigger.split(","); each(evs, (i, e) => { switch (e) { - case "hover": - this.element[e]( - e => { - if ( - this.isEnabled() && + case "hover": + this.element[e]( + e => { + if ( + this.isEnabled() && this.isValid() && this.expander.isEnabled() && this.expander.isValid() - ) { - this._popupView(); - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.EXPAND, "", this.expander); - this.fireEvent(Expander.EVENT_EXPAND); - } - }, - () => { - if ( - this.isEnabled() && + ) { + this._popupView(); + this.fireEvent(Controller.EVENT_CHANGE, Events.EXPAND, "", this.expander); + this.fireEvent(Expander.EVENT_EXPAND); + } + }, + () => { + if ( + this.isEnabled() && this.isValid() && this.expander.isEnabled() && this.expander.isValid() && toggle - ) { - this._hideView(); - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.COLLAPSE, "", this.expander); - this.fireEvent(Expander.EVENT_COLLAPSE); + ) { + this._hideView(); + this.fireEvent(Controller.EVENT_CHANGE, Events.COLLAPSE, "", this.expander); + this.fireEvent(Expander.EVENT_COLLAPSE); + } } - } - ); - break; - case "click": - if (e) { - this.element.off(`${e}.${this.getName()}`).on( - `${e}.${this.getName()}`, - debounce( - e => { - if (this.expander.element.__isMouseInBounds__(e)) { - if ( - this.isEnabled() && + ); + break; + case "click": + if (e) { + this.element.off(`${e}.${this.getName()}`).on( + `${e}.${this.getName()}`, + debounce( + e => { + if (this.expander.element.__isMouseInBounds__(e)) { + if ( + this.isEnabled() && this.isValid() && this.expander.isEnabled() && this.expander.isValid() - ) { - toggle ? this._toggle() : this._popupView(); - if (this.isExpanded()) { - this.fireEvent( - Controller.EVENT_CHANGE, - BI.Events.EXPAND, - "", - this.expander - ); - this.fireEvent(Expander.EVENT_EXPAND); - } else { - this.fireEvent( - Controller.EVENT_CHANGE, - BI.Events.COLLAPSE, - "", - this.expander - ); - this.fireEvent(Expander.EVENT_COLLAPSE); + ) { + toggle ? this._toggle() : this._popupView(); + if (this.isExpanded()) { + this.fireEvent( + Controller.EVENT_CHANGE, + Events.EXPAND, + "", + this.expander + ); + this.fireEvent(Expander.EVENT_EXPAND); + } else { + this.fireEvent( + Controller.EVENT_CHANGE, + Events.COLLAPSE, + "", + this.expander + ); + this.fireEvent(Expander.EVENT_COLLAPSE); + } } } + }, + EVENT_RESPONSE_TIME, + { + leading: true, + trailing: false, } - }, - BI.EVENT_RESPONSE_TIME, - { - leading: true, - trailing: false, - } - ) - ); - } - break; - default: - break; + ) + ); + } + break; + default: + break; } }); } @@ -223,7 +224,7 @@ export class Expander extends Widget { ); this.popupView.on(Controller.EVENT_CHANGE, (type, value, obj, ...args) => { this.fireEvent(Controller.EVENT_CHANGE, type, value, obj, ...args); - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { // self.setValue(self.getValue()); this.fireEvent(Expander.EVENT_CHANGE, value, obj); } @@ -270,8 +271,8 @@ export class Expander extends Widget { populate(items) { // this._assertPopupView(); - this.popupView && this.popupView.populate.apply(this.popupView, arguments); - this.expander.populate && this.expander.populate.apply(this.expander, arguments); + this.popupView && this.popupView.populate(...arguments); + this.expander.populate && this.expander.populate(...arguments); } _setEnable(arg) { diff --git a/src/base/combination/group.combo.js b/src/base/combination/group.combo.js index 2987728e6..a44c55477 100644 --- a/src/base/combination/group.combo.js +++ b/src/base/combination/group.combo.js @@ -10,7 +10,8 @@ import { each, formatEL, clone, - createWidget + createWidget, + Events } from "@/core"; import { Combo } from "./combo"; @@ -115,7 +116,7 @@ export class ComboGroup extends Widget { }); this.combo.on(Controller.EVENT_CHANGE, (type, value, obj, ...args) => { this.fireEvent(Controller.EVENT_CHANGE, type, value, obj, ...args); - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this.fireEvent(ComboGroup.EVENT_CHANGE, obj); } }); diff --git a/src/base/combination/loader.js b/src/base/combination/loader.js index 3c4998e90..0f248d852 100644 --- a/src/base/combination/loader.js +++ b/src/base/combination/loader.js @@ -14,15 +14,18 @@ import { isNotEmptyArray, isNumber, isObject, - each + each, + emptyFn, + Events, + LogicFactory } from "@/core"; /** * 加载控件 * * Created by GUY on 2015/8/31. - * @class BI.Loader - * @extends BI.Widget + * @class Loader + * @extends Widget */ @shortcut() @@ -48,15 +51,15 @@ export class Loader extends Widget { }, items: [], - itemsCreator: BI.emptyFn, - onLoaded: BI.emptyFn, + itemsCreator: emptyFn, + onLoaded: emptyFn, // 下面是分页信息 count: false, prev: false, next: {}, - hasPrev: BI.emptyFn, - hasNext: BI.emptyFn, + hasPrev: emptyFn, + hasNext: emptyFn, }); } @@ -67,7 +70,7 @@ export class Loader extends Widget { { times: --this.times }, (...args) => { this.prev.setLoaded(); - this.prependItems.apply(this, args); + this.prependItems(...args); } ]); } @@ -79,7 +82,7 @@ export class Loader extends Widget { { times: ++this.times }, (...args) => { this.next.setLoaded(); - this.addItems.apply(this, args); + this.addItems(...args); } ]); } @@ -87,8 +90,6 @@ export class Loader extends Widget { render() { const { itemsCreator, - prev, - next, el, items: optionsItems, value, @@ -97,20 +98,20 @@ export class Loader extends Widget { isDefaultInit, } = this.options; if (itemsCreator === false) { - prev = false; - next = false; + this.options.prev = false; + this.options.next = false; } - if (prev !== false) { + if (this.options.prev !== false) { this.prev = createWidget( extend( { type: LoadingBar.xtype, }, - prev + this.options.prev ) ); this.prev.on(Controller.EVENT_CHANGE, type => { - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this._prevLoad(); } }); @@ -130,22 +131,22 @@ export class Loader extends Widget { }); this.button_group.on(Controller.EVENT_CHANGE, (type, value, obj, ...args) => { this.fireEvent(Controller.EVENT_CHANGE, type, value, obj, ...args); - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this.fireEvent(Loader.EVENT_CHANGE, obj); } }); - if (next !== false) { + if (this.options.next !== false) { this.next = createWidget( extend( { type: LoadingBar.xtype, }, - next + this.options.next ) ); this.next.on(Controller.EVENT_CHANGE, type => { - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this._nextLoad(); } }); @@ -156,15 +157,15 @@ export class Loader extends Widget { { element: this, }, - BI.LogicFactory.createLogic( - BI.LogicFactory.createLogicTypeByDirection(direction), + LogicFactory.createLogic( + LogicFactory.createLogicTypeByDirection(direction), extend( { scrolly: true, }, logic, { - items: BI.LogicFactory.createLogicItemsByDirection( + items: LogicFactory.createLogicItemsByDirection( direction, this.prev, this.button_group, @@ -231,7 +232,7 @@ export class Loader extends Widget { this.prev.setEnd(); } } - this.button_group.prependItems.apply(this.button_group, arguments); + this.button_group.prependItems(...arguments); } addItems(items) { @@ -244,7 +245,7 @@ export class Loader extends Widget { this.next.setEnd(); } } - this.button_group.addItems.apply(this.button_group, arguments); + this.button_group.addItems(...arguments); } _populate(items) { @@ -256,7 +257,7 @@ export class Loader extends Widget { if (args.length === 0) { throw new Error("参数不能为空"); } - this.populate.apply(this, args); + this.populate(...args); o.onLoaded(); } ]); @@ -286,11 +287,11 @@ export class Loader extends Widget { } populate() { - this._populate.apply(this, arguments) && this.button_group.populate.apply(this.button_group, arguments); + this._populate(...arguments) && this.button_group.populate(...arguments); } setNotSelectedValue() { - this.button_group.setNotSelectedValue.apply(this.button_group, arguments); + this.button_group.setNotSelectedValue(...arguments); } getNotSelectedValue() { @@ -298,11 +299,11 @@ export class Loader extends Widget { } setValue() { - this.button_group.setValue.apply(this.button_group, arguments); + this.button_group.setValue(...arguments); } getValue() { - return this.button_group.getValue.apply(this.button_group, arguments); + return this.button_group.getValue(...arguments); } getAllButtons() { diff --git a/src/base/combination/navigation.js b/src/base/combination/navigation.js index a3ebb50c4..7a5e88faf 100644 --- a/src/base/combination/navigation.js +++ b/src/base/combination/navigation.js @@ -12,7 +12,10 @@ import { each, nextTick, isKey, - values + values, + emptyFn, + LogicFactory, + Events } from "@/core"; /** @@ -36,8 +39,8 @@ export class Navigation extends Widget { tab: false, cardCreator: v => createWidget(), - afterCardCreated: BI.emptyFn, - afterCardShow: BI.emptyFn, + afterCardCreated: emptyFn, + afterCardShow: emptyFn, }); } @@ -54,10 +57,10 @@ export class Navigation extends Widget { { element: this, }, - BI.LogicFactory.createLogic( - BI.LogicFactory.createLogicTypeByDirection(direction), + LogicFactory.createLogic( + LogicFactory.createLogicTypeByDirection(direction), extend({}, logic, { - items: BI.LogicFactory.createLogicItemsByDirection(direction, this.tab, this.layout), + items: LogicFactory.createLogicItemsByDirection(direction, this.tab, this.layout), }) ) ) @@ -107,7 +110,7 @@ export class Navigation extends Widget { afterCardCreated(v) { this.cardMap[v].on(Controller.EVENT_CHANGE, (type, value, obj, ...args) => { this.fireEvent(Controller.EVENT_CHANGE, type, value, obj, ...args); - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this.fireEvent(Navigation.EVENT_CHANGE, obj); } }); @@ -123,7 +126,7 @@ export class Navigation extends Widget { populate() { const card = this.layout.getShowingCard(); if (card) { - return card.populate.apply(card, arguments); + return card.populate(...arguments); } } diff --git a/src/base/combination/searcher.js b/src/base/combination/searcher.js index eaf583485..87f1ad1b6 100644 --- a/src/base/combination/searcher.js +++ b/src/base/combination/searcher.js @@ -14,7 +14,10 @@ import { nextTick, isEmptyString, isNull, - BlankSplitChar + BlankSplitChar, + Events, + EVENT_RESPONSE_TIME, + Func } from "@/core"; import { ButtonGroup } from "./group.button"; import { Maskers } from "@/base/0.base"; @@ -23,8 +26,8 @@ import { Maskers } from "@/base/0.base"; * 搜索逻辑控件 * * Created by GUY on 2015/9/28. - * @class BI.Searcher - * @extends BI.Widget + * @class Searcher + * @extends Widget */ @shortcut() @@ -94,28 +97,28 @@ export class Searcher extends Widget { }); isDefaultInit && this._assertPopupView(); - const search = debounce(bind(this._search, this), BI.EVENT_RESPONSE_TIME, { + const search = debounce(bind(this._search, this), EVENT_RESPONSE_TIME, { leading: true, trailing: false, }); this.editor.on(Controller.EVENT_CHANGE, type => { switch (type) { - case BI.Events.STARTEDIT: - this._startSearch(); - break; - case BI.Events.EMPTY: - this._stopSearch(); - break; - case BI.Events.CHANGE: - search(); - break; - case BI.Events.PAUSE: - if (endWith(this.editor.getValue(), BlankSplitChar)) { - this._pauseSearch(); - } - break; - default: - break; + case Events.STARTEDIT: + this._startSearch(); + break; + case Events.EMPTY: + this._stopSearch(); + break; + case Events.CHANGE: + search(); + break; + case Events.PAUSE: + if (endWith(this.editor.getValue(), BlankSplitChar)) { + this._pauseSearch(); + } + break; + default: + break; } }); } @@ -129,22 +132,22 @@ export class Searcher extends Widget { }); this.popupView.on(Controller.EVENT_CHANGE, (type, value, obj, ...args) => { this.fireEvent(Controller.EVENT_CHANGE, type, value, obj, ...args); - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { if (isAutoSync) { const values = adapter && adapter.getValue(); switch (chooseType) { - case ButtonGroup.CHOOSE_TYPE_SINGLE: - adapter && adapter.setValue([obj.getValue()]); - break; - case ButtonGroup.CHOOSE_TYPE_MULTI: - if (!obj.isSelected()) { - adapter && adapter.setValue(deepWithout(values, obj.getValue())); - } - values.push(obj.getValue()); - adapter && adapter.setValue(values); - break; - default: - break; + case ButtonGroup.CHOOSE_TYPE_SINGLE: + adapter && adapter.setValue([obj.getValue()]); + break; + case ButtonGroup.CHOOSE_TYPE_MULTI: + if (!obj.isSelected()) { + adapter && adapter.setValue(deepWithout(values, obj.getValue())); + } + values.push(obj.getValue()); + adapter && adapter.setValue(values); + break; + default: + break; } } this.fireEvent(Searcher.EVENT_CHANGE, value, obj); @@ -177,7 +180,7 @@ export class Searcher extends Widget { this.fireEvent(Searcher.EVENT_START); this.popupView.startSearch && this.popupView.startSearch(); // 搜索前先清空dom - // BI.Maskers.get(this.getName()).empty(); + // Maskers.get(this.getName()).empty(); nextTick(name => { Maskers.show(name); }, this.getName()); @@ -214,7 +217,7 @@ export class Searcher extends Widget { } if (isAutoSearch) { const items = (adapter && ((adapter.getItems && adapter.getItems()) || adapter.attr("items"))) || []; - const finding = BI.Func.getSearchResult(items, keyword); + const finding = Func.getSearchResult(items, keyword); const match = finding.match, find = finding.find; this.popupView.populate(find, match, keyword); @@ -237,7 +240,7 @@ export class Searcher extends Widget { _args.push(keyword); } Maskers.show(this.getName()); - this.popupView.populate.apply(this.popupView, _args); + this.popupView.populate(..._args); isAutoSync && adapter && adapter.getValue && this.popupView.setValue(adapter.getValue()); this.popupView.loaded && this.popupView.loaded(); this.fireEvent(Searcher.EVENT_SEARCHING); @@ -346,7 +349,7 @@ export class Searcher extends Widget { populate(result, searchResult, keyword) { const { isAutoSync, adapter } = this.options; this._assertPopupView(); - this.popupView.populate.apply(this.popupView, arguments); + this.popupView.populate(...arguments); if (isAutoSync && adapter && adapter.getValue) { this.popupView.setValue(adapter.getValue()); } diff --git a/src/base/combination/switcher.js b/src/base/combination/switcher.js index ba338abe8..518690ca0 100644 --- a/src/base/combination/switcher.js +++ b/src/base/combination/switcher.js @@ -8,7 +8,10 @@ import { createWidget, each, debounce, - isNull + isNull, + Events, + Direction, + EVENT_RESPONSE_TIME } from "@/core"; import { ButtonGroup } from "./group.button"; import { Maskers } from "@/base/0.base"; @@ -18,8 +21,8 @@ import { Maskers } from "@/base/0.base"; * 切换显示或隐藏面板 * * Created by GUY on 2015/11/2. - * @class BI.Switcher - * @extends BI.Widget + * @class Switcher + * @extends Widget */ @shortcut() @@ -40,7 +43,7 @@ export class Switcher extends Widget { _defaultConfig() { return extend(super._defaultConfig(...arguments), { baseCls: "bi-switcher", - direction: BI.Direction.Top, + direction: Direction.Top, trigger: "click", toggle: true, el: {}, @@ -61,21 +64,21 @@ export class Switcher extends Widget { }); this.switcher.on(Controller.EVENT_CHANGE, (type, value, obj, ...args) => { if (this.isEnabled() && this.isValid()) { - if (type === BI.Events.EXPAND) { + if (type === Events.EXPAND) { this._popupView(); } - if (type === BI.Events.COLLAPSE) { + if (type === Events.COLLAPSE) { this._hideView(); } - if (type === BI.Events.EXPAND) { + if (type === Events.EXPAND) { this.fireEvent(Controller.EVENT_CHANGE, type, value, obj, ...args); this.fireEvent(Switcher.EVENT_EXPAND); } - if (type === BI.Events.COLLAPSE) { + if (type === Events.COLLAPSE) { this.fireEvent(Controller.EVENT_CHANGE, type, value, obj, ...args); this.isViewVisible() && this.fireEvent(Switcher.EVENT_COLLAPSE); } - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this.fireEvent(Switcher.EVENT_TRIGGER_CHANGE, value, obj); } } @@ -118,62 +121,62 @@ export class Switcher extends Widget { const evs = this.options.trigger.split(","); each(evs, (i, e) => { switch (e) { - case "hover": - this.element[e]( - e => { - if (this.isEnabled() && this.switcher.isEnabled()) { - this._popupView(); - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.EXPAND, "", this.switcher); - this.fireEvent(Switcher.EVENT_EXPAND); - } - }, - () => { - if (this.isEnabled() && this.switcher.isEnabled() && toggle) { - this._hideView(); - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.COLLAPSE, "", this.switcher); - this.fireEvent(Switcher.EVENT_COLLAPSE); + case "hover": + this.element[e]( + e => { + if (this.isEnabled() && this.switcher.isEnabled()) { + this._popupView(); + this.fireEvent(Controller.EVENT_CHANGE, Events.EXPAND, "", this.switcher); + this.fireEvent(Switcher.EVENT_EXPAND); + } + }, + () => { + if (this.isEnabled() && this.switcher.isEnabled() && toggle) { + this._hideView(); + this.fireEvent(Controller.EVENT_CHANGE, Events.COLLAPSE, "", this.switcher); + this.fireEvent(Switcher.EVENT_COLLAPSE); + } } - } - ); - break; - default: - if (e) { - this.element.off(`${e}.${this.getName()}`).on( - `${e}.${this.getName()}`, - debounce( - e => { - if (this.switcher.element.__isMouseInBounds__(e)) { - if (this.isEnabled() && this.switcher.isEnabled()) { - toggle ? this._toggle() : this._popupView(); - if (this.isExpanded()) { - this.fireEvent( - Controller.EVENT_CHANGE, - BI.Events.EXPAND, - "", - this.switcher - ); - this.fireEvent(Switcher.EVENT_EXPAND); - } else { - this.fireEvent( - Controller.EVENT_CHANGE, - BI.Events.COLLAPSE, - "", - this.switcher - ); - this.fireEvent(Switcher.EVENT_COLLAPSE); + ); + break; + default: + if (e) { + this.element.off(`${e}.${this.getName()}`).on( + `${e}.${this.getName()}`, + debounce( + e => { + if (this.switcher.element.__isMouseInBounds__(e)) { + if (this.isEnabled() && this.switcher.isEnabled()) { + toggle ? this._toggle() : this._popupView(); + if (this.isExpanded()) { + this.fireEvent( + Controller.EVENT_CHANGE, + Events.EXPAND, + "", + this.switcher + ); + this.fireEvent(Switcher.EVENT_EXPAND); + } else { + this.fireEvent( + Controller.EVENT_CHANGE, + Events.COLLAPSE, + "", + this.switcher + ); + this.fireEvent(Switcher.EVENT_COLLAPSE); + } } } + }, + EVENT_RESPONSE_TIME, + { + leading: true, + trailing: false, } - }, - BI.EVENT_RESPONSE_TIME, - { - leading: true, - trailing: false, - } - ) - ); - } - break; + ) + ); + } + break; } }); } @@ -206,11 +209,11 @@ export class Switcher extends Widget { ); this.popupView.on(Controller.EVENT_CHANGE, (type, value, obj, ...args) => { this.fireEvent(Controller.EVENT_CHANGE, type, value, obj, ...args); - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this.fireEvent(Switcher.EVENT_CHANGE, value, obj); } }); - if (direction !== BI.Direction.Custom && !adapter) { + if (direction !== Direction.Custom && !adapter) { createWidget({ type: VerticalLayout.xtype, scrolly: false, @@ -250,12 +253,12 @@ export class Switcher extends Widget { _populate() { this._assertPopupView(); - this.popupView.populate.apply(this.popupView, arguments); + this.popupView.populate(...arguments); } populate(items) { - this._populate.apply(this, arguments); - this.switcher.populate && this.switcher.populate.apply(this.switcher, arguments); + this._populate(...arguments); + this.switcher.populate && this.switcher.populate(...arguments); } _setEnable(arg) { diff --git a/src/base/combination/tab.js b/src/base/combination/tab.js index 8e797ce71..b00554dcd 100644 --- a/src/base/combination/tab.js +++ b/src/base/combination/tab.js @@ -12,7 +12,8 @@ import { isFunction, contains, any, - isEqual + isEqual, + LogicFactory } from "@/core"; /** @@ -58,10 +59,10 @@ export class Tab extends Widget { { element: this, }, - BI.LogicFactory.createLogic( - BI.LogicFactory.createLogicTypeByDirection(direction), + LogicFactory.createLogic( + LogicFactory.createLogicTypeByDirection(direction), extend({}, logic, { - items: BI.LogicFactory.createLogicItemsByDirection(direction, this.tab, this.layout), + items: LogicFactory.createLogicItemsByDirection(direction, this.tab, this.layout), }) ) ) @@ -188,7 +189,7 @@ export class Tab extends Widget { populate() { const card = this.layout.getShowingCard(); if (card) { - return card.populate && card.populate.apply(card, arguments); + return card.populate && card.populate(...arguments); } } diff --git a/src/base/combination/tree.button.js b/src/base/combination/tree.button.js index 3f18102be..48bd626b5 100644 --- a/src/base/combination/tree.button.js +++ b/src/base/combination/tree.button.js @@ -1,11 +1,5 @@ import { ButtonGroup } from "./group.button"; -import { shortcut, Widget, extend, isArray, each, isFunction, deepContains, concat, any, contains } from "@/core"; - -/** - * Created by GUY on 2015/8/10. - * @class BI.ButtonTree - * @extends BI.ButtonGroup - */ +import { shortcut, extend, isArray, each, isFunction, deepContains, concat, any, contains } from "@/core"; @shortcut() export class ButtonTree extends ButtonGroup { diff --git a/src/base/context.js b/src/base/context.js index dc3a29326..8f236d5d9 100644 --- a/src/base/context.js +++ b/src/base/context.js @@ -1,4 +1,4 @@ -import { shortcut, Widget, createWidget, Controller } from "@/core"; +import { shortcut, Widget, createWidget, Controller, useContext, watch } from "@/core"; @shortcut() export class Context extends Widget { @@ -10,7 +10,7 @@ export class Context extends Widget { const self = this, o = this.options; if (o.context) { - this.context = BI.useContext(o.context); + this.context = useContext(o.context); } this.widget = createWidget((o.items[0] || o.el)(this.context), { element: this, @@ -23,7 +23,7 @@ export class Context extends Widget { __initWatch() { super.__initWatch.call(this); const o = this.options; - BI.watch(this.context, o.context, o.watch); + watch(this.context, o.context, o.watch); } setValue(v) { diff --git a/src/base/foundation/message.js b/src/base/foundation/message.js index f27aa7851..88706be43 100644 --- a/src/base/foundation/message.js +++ b/src/base/foundation/message.js @@ -1,9 +1,10 @@ /** * z-index在1亿层级 * 弹出提示消息框,用于模拟阻塞操作(通过回调函数实现) - * @class BI.Msg + * @class Msg */ -import { Widget, isString, isNull, isFunction, createWidget, remove, each } from "../../core"; +import { Widget, isString, isNull, isFunction, createWidget, remove, each, emptyFn, delay, zIndex_tip, i18nText, KeyCode, isPlainObject, SIZE_CONSANTS } from "../../core"; +import { Toast } from "../single"; export const Msg = (() => { let $mask, $pop; @@ -20,7 +21,7 @@ export const Msg = (() => { this._show(true, title, message, callback); }, prompt (title, message, value, callback, min_width) { - // BI.Msg.prompt(title, message, value, callback, min_width); + // Msg.prompt(title, message, value, callback, min_width); }, toast (message, options, context) { isString(options) && (options = { level: options }); @@ -28,7 +29,7 @@ export const Msg = (() => { context = context || Widget._renderEngine.createElement("body"); const level = options.level || "common"; const autoClose = isNull(options.autoClose) ? true : options.autoClose; - const callback = isFunction(options.callback) ? options.callback : BI.emptyFn; + const callback = isFunction(options.callback) ? options.callback : emptyFn; const toast = createWidget({ type: "bi.toast", cls: "bi-message-animate bi-message-leave", @@ -38,10 +39,10 @@ export const Msg = (() => { text: message, listeners: [ { - eventName: BI.Toast.EVENT_DESTORY, + eventName: Toast.EVENT_DESTORY, action () { remove(toastStack, toast.element); - let _height = BI.SIZE_CONSANTS.TOAST_TOP; + let _height = SIZE_CONSANTS.TOAST_TOP; each(toastStack, (i, element) => { element.css({ top: _height }); _height += element.outerHeight() + 10; @@ -51,7 +52,7 @@ export const Msg = (() => { } ], }); - let height = BI.SIZE_CONSANTS.TOAST_TOP; + let height = SIZE_CONSANTS.TOAST_TOP; each(toastStack, (i, element) => { height += element.outerHeight() + 10; }); @@ -71,7 +72,7 @@ export const Msg = (() => { toast.element.removeClass("bi-message-leave").addClass("bi-message-enter"); autoClose && - BI.delay(() => { + delay(() => { toast.element.removeClass("bi-message-enter").addClass("bi-message-leave"); toast.destroy?.(); }, 5000); @@ -87,7 +88,7 @@ export const Msg = (() => { .createElement("
") .css({ position: "absolute", - zIndex: BI.zIndex_tip - 2, + zIndex: zIndex_tip - 2, top: 0, left: 0, right: 0, @@ -99,7 +100,7 @@ export const Msg = (() => { .createElement("
") .css({ position: "absolute", - zIndex: BI.zIndex_tip - 1, + zIndex: zIndex_tip - 1, top: 0, left: 0, right: 0, @@ -119,7 +120,7 @@ export const Msg = (() => { controlItems.push({ el: { type: "bi.button", - text: BI.i18nText("BI-Basic_Cancel"), + text: i18nText("BI-Basic_Cancel"), level: "ignore", handler () { close(); @@ -133,7 +134,7 @@ export const Msg = (() => { controlItems.push({ el: { type: "bi.button", - text: BI.i18nText("BI-Basic_OK"), + text: i18nText("BI-Basic_OK"), handler () { close(); if (isFunction(callback)) { @@ -153,12 +154,12 @@ export const Msg = (() => { }, mounted () { this.element.keyup(e => { - if (e.keyCode === BI.KeyCode.ENTER) { + if (e.keyCode === KeyCode.ENTER) { close(); if (isFunction(callback)) { callback.apply(null, [true]); } - } else if (e.keyCode === BI.KeyCode.ESCAPE) { + } else if (e.keyCode === KeyCode.ESCAPE) { close(); if (hasCancel === true) { if (isFunction(callback)) { @@ -182,7 +183,7 @@ export const Msg = (() => { el: { type: "bi.label", cls: "bi-font-bold", - text: title || BI.i18nText("BI-Basic_Prompt"), + text: title || i18nText("BI-Basic_Prompt"), textAlign: "left", hgap: 20, height: 40, @@ -207,7 +208,7 @@ export const Msg = (() => { height: 40, }, center: { - el: BI.isPlainObject(message) + el: isPlainObject(message) ? message : { type: "bi.label", diff --git a/src/base/grid/grid.js b/src/base/grid/grid.js index 4aa78e88f..1d01b80a2 100644 --- a/src/base/grid/grid.js +++ b/src/base/grid/grid.js @@ -13,18 +13,11 @@ import { ScalingCellSizeAndPositionManager, clamp, isEmpty, - nextTick + nextTick, + DOM } from "@/core"; import { Label } from "../single"; -/** - * GridView - * - * Created by GUY on 2016/1/11. - * @class BI.GridView - * @extends BI.Widget - */ - @shortcut() export class GridView extends Widget { _defaultConfig() { @@ -386,14 +379,14 @@ export class GridView extends Widget { _getMaxScrollLeft() { return Math.max( 0, - this._getContainerWidth() - this.options.width + (this._isOverflowX() ? BI.DOM.getScrollWidth() : 0) + this._getContainerWidth() - this.options.width + (this._isOverflowX() ? DOM.getScrollWidth() : 0) ); } _getMaxScrollTop() { return Math.max( 0, - this._getContainerHeight() - this.options.height + (this._isOverflowY() ? BI.DOM.getScrollWidth() : 0) + this._getContainerHeight() - this.options.height + (this._isOverflowY() ? DOM.getScrollWidth() : 0) ); } diff --git a/src/base/layer/layer.drawer.js b/src/base/layer/layer.drawer.js index 0b1fdf81f..2f171a090 100644 --- a/src/base/layer/layer.drawer.js +++ b/src/base/layer/layer.drawer.js @@ -13,8 +13,8 @@ import { Label, IconButton } from "../single"; /** * Popover弹出层, - * @class BI.Popover - * @extends BI.Widget + * @class Popover + * @extends Widget */ @shortcut() @@ -43,16 +43,16 @@ export class Drawer extends Widget { const { size, height, placement, width } = this.options; let sizeValue = 0; switch (size) { - case "big": - sizeValue = 736; - break; - case "small": - sizeValue = 200; - break; - case "normal": - default: - sizeValue = 378; - break; + case "big": + sizeValue = 736; + break; + case "small": + sizeValue = 200; + break; + case "normal": + default: + sizeValue = 378; + break; } if (placement === "top" || placement === "bottom") { return { @@ -147,66 +147,66 @@ export class Drawer extends Widget { mounted() { const { placement } = this.options; switch (placement) { - case "right": - this.element.css({ - top: 0, - left: "100%", - bottom: 0, - }); - break; - case "left": - this.element.css({ - top: 0, - right: "100%", - bottom: 0, - }); - break; - case "top": - this.element.css({ - left: 0, - right: 0, - bottom: "100%", - }); - break; - case "bottom": - this.element.css({ - left: 0, - right: 0, - top: "100%", - }); - break; - default: - break; - } - } - - show(callback) { - const { placement } = this.options; - requestAnimationFrame(() => { - const size = this._getSuitableSize(); - switch (placement) { case "right": this.element.css({ - left: `calc(100% - ${size.width}px)`, + top: 0, + left: "100%", + bottom: 0, }); break; case "left": this.element.css({ - right: `calc(100% - ${size.width}px)`, + top: 0, + right: "100%", + bottom: 0, }); break; case "top": this.element.css({ - bottom: `calc(100% - ${size.height}px)`, + left: 0, + right: 0, + bottom: "100%", }); break; case "bottom": this.element.css({ - top: `calc(100% - ${size.height}px)`, + left: 0, + right: 0, + top: "100%", }); break; default: break; + } + } + + show(callback) { + const { placement } = this.options; + requestAnimationFrame(() => { + const size = this._getSuitableSize(); + switch (placement) { + case "right": + this.element.css({ + left: `calc(100% - ${size.width}px)`, + }); + break; + case "left": + this.element.css({ + right: `calc(100% - ${size.width}px)`, + }); + break; + case "top": + this.element.css({ + bottom: `calc(100% - ${size.height}px)`, + }); + break; + case "bottom": + this.element.css({ + top: `calc(100% - ${size.height}px)`, + }); + break; + default: + break; } callback && callback(); }); @@ -216,28 +216,28 @@ export class Drawer extends Widget { const { placement } = this.options; requestAnimationFrame(() => { switch (placement) { - case "right": - this.element.css({ - left: "100%", - }); - break; - case "left": - this.element.css({ - right: "100%", - }); - break; - case "top": - this.element.css({ - bottom: "100%", - }); - break; - case "bottom": - this.element.css({ - top: "100%", - }); - break; - default: - break; + case "right": + this.element.css({ + left: "100%", + }); + break; + case "left": + this.element.css({ + right: "100%", + }); + break; + case "top": + this.element.css({ + bottom: "100%", + }); + break; + case "bottom": + this.element.css({ + top: "100%", + }); + break; + default: + break; } setTimeout(callback, 300); }); diff --git a/src/base/layer/layer.popover.js b/src/base/layer/layer.popover.js index 7b4c56a54..7958981c4 100644 --- a/src/base/layer/layer.popover.js +++ b/src/base/layer/layer.popover.js @@ -9,14 +9,18 @@ import { clamp, isPlainObject, extend, - isNotNull + isNotNull, + MouseMoveTracker, + i18nText, + SIZE_CONSANTS } from "@/core"; import { Label, IconButton, Button } from "../single"; +import { Resizers } from "../0.base"; /** * Popover弹出层, - * @class BI.Popover - * @extends BI.Widget + * @class Popover + * @extends Widget */ @shortcut() @@ -43,8 +47,8 @@ export class Popover extends Widget { footer: null, footerHeight: 44, closable: true, // BI-40839 是否显示右上角的关闭按钮 - bodyHgap: BI.SIZE_CONSANTS.H_GAP_SIZE, - bodyTgap: BI.SIZE_CONSANTS.V_GAP_SIZE, + bodyHgap: SIZE_CONSANTS.H_GAP_SIZE, + bodyTgap: SIZE_CONSANTS.V_GAP_SIZE, }; } @@ -61,7 +65,7 @@ export class Popover extends Widget { this.startX = 0; this.startY = 0; const size = this._calculateSize(); - this.tracker = new BI.MouseMoveTracker( + this.tracker = new MouseMoveTracker( (deltaX, deltaY) => { const W = Widget._renderEngine.createElement("body").width(); const H = Widget._renderEngine.createElement("body").height(); @@ -72,7 +76,7 @@ export class Popover extends Widget { top: `${clamp(this.startY, 0, H - this.element.height())}px`, }); // BI-12134 没有什么特别好的方法 - BI.Resizers._resize({ + Resizers._resize({ target: this.element[0], }); }, @@ -109,8 +113,8 @@ export class Popover extends Widget { }, top: 0, bottom: 0, - left: BI.SIZE_CONSANTS.H_GAP_SIZE, - right: closable ? 0 : BI.SIZE_CONSANTS.H_GAP_SIZE, + left: SIZE_CONSANTS.H_GAP_SIZE, + right: closable ? 0 : SIZE_CONSANTS.H_GAP_SIZE, } ], }, @@ -181,9 +185,9 @@ export class Popover extends Widget { items: [ { el: footer, - left: BI.SIZE_CONSANTS.H_GAP_SIZE, + left: SIZE_CONSANTS.H_GAP_SIZE, top: 0, - right: BI.SIZE_CONSANTS.H_GAP_SIZE, + right: SIZE_CONSANTS.H_GAP_SIZE, bottom: 0, } ], @@ -246,20 +250,20 @@ export class Popover extends Widget { const sizeValue = {}; if (isNotNull(size)) { switch (size) { - case this._constant.SIZE.SMALL: - sizeValue.width = 450; - sizeValue.height = 200; - sizeValue.type = "small"; - break; - case this._constant.SIZE.BIG: - sizeValue.width = 900; - sizeValue.height = 500; - sizeValue.type = "big"; - break; - default: - sizeValue.width = 550; - sizeValue.height = 500; - sizeValue.type = "default"; + case this._constant.SIZE.SMALL: + sizeValue.width = 450; + sizeValue.height = 200; + sizeValue.type = "small"; + break; + case this._constant.SIZE.BIG: + sizeValue.width = 900; + sizeValue.height = 500; + sizeValue.type = "big"; + break; + default: + sizeValue.width = 550; + sizeValue.height = 500; + sizeValue.type = "default"; } } @@ -296,7 +300,7 @@ export class BarPopover extends Popover { _defaultConfig() { return extend(super._defaultConfig(...arguments), { - btns: [BI.i18nText("BI-Basic_OK"), BI.i18nText("BI-Basic_Cancel")], + btns: [i18nText("BI-Basic_OK"), i18nText("BI-Basic_Cancel")], }); } diff --git a/src/base/layer/layer.popup.js b/src/base/layer/layer.popup.js index 9f654efd0..c00b272b3 100644 --- a/src/base/layer/layer.popup.js +++ b/src/base/layer/layer.popup.js @@ -10,13 +10,18 @@ import { Controller, createWidget, createItems, - clamp + clamp, + Direction, + zIndex_popup, + pixFormat, + LogicFactory, + Events } from "@/core"; /** * 下拉框弹出层, zIndex在1000w - * @class BI.PopupView - * @extends BI.Widget + * @class PopupView + * @extends Widget */ @shortcut() @@ -46,7 +51,7 @@ export class PopupView extends Widget { innerVgap: 0, innerHgap: 0, showArrow: false, - direction: BI.Direction.Top, // 工具栏的方向 + direction: Direction.Top, // 工具栏的方向 stopEvent: false, // 是否停止mousedown、mouseup事件 stopPropagation: false, // 是否停止mousedown、mouseup向上冒泡 logic: { @@ -97,9 +102,9 @@ export class PopupView extends Widget { } this.element .css({ - "z-index": BI.zIndex_popup, - "min-width": BI.pixFormat(minWidth), - "max-width": BI.pixFormat(maxWidth), + "z-index": zIndex_popup, + "min-width": pixFormat(minWidth), + "max-width": pixFormat(maxWidth), }) .bind({ click: fn }); @@ -114,7 +119,7 @@ export class PopupView extends Widget { this.view.on(Controller.EVENT_CHANGE, (type, ...args) => { this.fireEvent(Controller.EVENT_CHANGE, type, ...args); - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this.fireEvent(PopupView.EVENT_CHANGE); } }); @@ -124,8 +129,8 @@ export class PopupView extends Widget { { element: this, }, - BI.LogicFactory.createLogic( - BI.LogicFactory.createLogicTypeByDirection(direction), + LogicFactory.createLogic( + LogicFactory.createLogicTypeByDirection(direction), extend({}, logic, { scrolly: false, lgap, @@ -134,16 +139,16 @@ export class PopupView extends Widget { bgap, vgap, hgap, - items: BI.LogicFactory.createLogicItemsByDirection( + items: LogicFactory.createLogicItemsByDirection( direction, extend( { cls: `list-view-outer bi-card list-view-shadow${primary ? " bi-primary" : ""}`, }, - BI.LogicFactory.createLogic( - BI.LogicFactory.createLogicTypeByDirection(direction), + LogicFactory.createLogic( + LogicFactory.createLogicTypeByDirection(direction), extend({}, logic, { - items: BI.LogicFactory.createLogicItemsByDirection( + items: LogicFactory.createLogicItemsByDirection( direction, this.tool, this.tab, @@ -202,11 +207,11 @@ export class PopupView extends Widget { const { el, value, minHeight, innerVgap, innerHgap } = this.options; this.button_group = createWidget(el, { type: ButtonGroup.xtype, value }); this.button_group.element.css({ - "min-height": BI.pixFormat(minHeight), - "padding-top": BI.pixFormat(innerVgap), - "padding-bottom": BI.pixFormat(innerVgap), - "padding-left": BI.pixFormat(innerHgap), - "padding-right": BI.pixFormat(innerHgap), + "min-height": pixFormat(minHeight), + "padding-top": pixFormat(innerVgap), + "padding-bottom": pixFormat(innerVgap), + "padding-left": pixFormat(innerHgap), + "padding-right": pixFormat(innerHgap), }); return this.button_group; @@ -281,189 +286,189 @@ export class PopupView extends Widget { const maxTop = Math.min(popupHeight - 16 - 4, offset.top + position.height - 16 - 4); const maxBottom = Math.min(popupHeight - 16 - 4, bodyHeight - (offset.top + position.height - 16 - 4)); switch (direction) { - case "bottom": - case "bottom,right": - direction = "bottom"; - style = { + case "bottom": + case "bottom,right": + direction = "bottom"; + style = { // 5表示留出一定的空间 - left: clamp(((middle ? popupWidth : position.width) - adjustXOffset) / 2 - 8, minLeft, maxLeft), - }; - wrapperStyle = { - top: tgap + vgap, - left: 0, - right: "", - bottom: "", - }; - placeholderStyle = { - left: 0, - right: 0, - height: this._const.TRIANGLE_LENGTH, - top: -this._const.TRIANGLE_LENGTH, - bottom: "", - }; - break; - case "bottom,left": - direction = "bottom"; - style = { - right: clamp( - ((middle ? popupWidth : position.width) + adjustXOffset) / 2 - 8, - minRight, - maxRight - ), - }; - wrapperStyle = { - top: bgap + vgap, - left: "", - right: 0, - bottom: "", - }; - placeholderStyle = { - left: 0, - right: 0, - height: this._const.TRIANGLE_LENGTH, - top: -this._const.TRIANGLE_LENGTH, - bottom: "", - }; - break; - case "top": - case "top,right": - direction = "top"; - style = { - left: clamp(((middle ? popupWidth : position.width) - adjustXOffset) / 2 - 8, minLeft, maxLeft), - }; - wrapperStyle = { - bottom: bgap + vgap, - left: 0, - right: "", - top: "", - }; - placeholderStyle = { - left: 0, - right: 0, - height: this._const.TRIANGLE_LENGTH, - top: "", - bottom: -this._const.TRIANGLE_LENGTH, - }; - break; - case "top,left": - direction = "top"; - style = { - right: clamp( - ((middle ? popupWidth : position.width) + adjustXOffset) / 2 - 8, - minRight, - maxRight - ), - }; - wrapperStyle = { - bottom: bgap + vgap, - right: 0, - left: "", - top: "", - }; - placeholderStyle = { - left: 0, - right: 0, - height: this._const.TRIANGLE_LENGTH, - top: "", - bottom: -this._const.TRIANGLE_LENGTH, - }; - break; - case "left": - case "left,bottom": - direction = "left"; - style = { - top: clamp(((middle ? popupHeight : position.height) - adjustYOffset) / 2 - 8, minTop, maxTop), - }; - wrapperStyle = { - right: rgap + hgap, - top: 0, - bottom: "", - left: "", - }; - placeholderStyle = { - top: 0, - bottom: 0, - width: this._const.TRIANGLE_LENGTH, - right: -this._const.TRIANGLE_LENGTH, - left: "", - }; - break; - case "left,top": - direction = "left"; - style = { - bottom: clamp( - ((middle ? popupHeight : position.height) + adjustYOffset) / 2 - 8, - minBottom, - maxBottom - ), - }; - wrapperStyle = { - right: rgap + hgap, - bottom: 0, - top: "", - left: "", - }; - placeholderStyle = { - top: 0, - bottom: 0, - width: this._const.TRIANGLE_LENGTH, - right: -this._const.TRIANGLE_LENGTH, - left: "", - }; - break; - case "right": - case "right,bottom": - direction = "right"; - style = { - top: clamp(((middle ? popupHeight : position.height) - adjustYOffset) / 2 - 8, minTop, maxTop), - }; - wrapperStyle = { - left: lgap + hgap, - top: 0, - bottom: "", - right: "", - }; - placeholderStyle = { - top: 0, - bottom: 0, - width: this._const.TRIANGLE_LENGTH, - left: -this._const.TRIANGLE_LENGTH, - right: "", - }; - break; - case "right,top": - direction = "right"; - style = { - bottom: clamp( - ((middle ? popupHeight : position.height) + adjustYOffset) / 2 - 8, - minBottom, - maxBottom - ), - }; - wrapperStyle = { - left: lgap + hgap, - bottom: 0, - top: "", - right: "", - }; - placeholderStyle = { - top: 0, - bottom: 0, - width: this._const.TRIANGLE_LENGTH, - left: -this._const.TRIANGLE_LENGTH, - right: "", - }; - break; - case "right,innerRight": - break; - case "right,innerLeft": - break; - case "innerRight": - break; - case "innerLeft": - break; - default: - break; + left: clamp(((middle ? popupWidth : position.width) - adjustXOffset) / 2 - 8, minLeft, maxLeft), + }; + wrapperStyle = { + top: tgap + vgap, + left: 0, + right: "", + bottom: "", + }; + placeholderStyle = { + left: 0, + right: 0, + height: this._const.TRIANGLE_LENGTH, + top: -this._const.TRIANGLE_LENGTH, + bottom: "", + }; + break; + case "bottom,left": + direction = "bottom"; + style = { + right: clamp( + ((middle ? popupWidth : position.width) + adjustXOffset) / 2 - 8, + minRight, + maxRight + ), + }; + wrapperStyle = { + top: bgap + vgap, + left: "", + right: 0, + bottom: "", + }; + placeholderStyle = { + left: 0, + right: 0, + height: this._const.TRIANGLE_LENGTH, + top: -this._const.TRIANGLE_LENGTH, + bottom: "", + }; + break; + case "top": + case "top,right": + direction = "top"; + style = { + left: clamp(((middle ? popupWidth : position.width) - adjustXOffset) / 2 - 8, minLeft, maxLeft), + }; + wrapperStyle = { + bottom: bgap + vgap, + left: 0, + right: "", + top: "", + }; + placeholderStyle = { + left: 0, + right: 0, + height: this._const.TRIANGLE_LENGTH, + top: "", + bottom: -this._const.TRIANGLE_LENGTH, + }; + break; + case "top,left": + direction = "top"; + style = { + right: clamp( + ((middle ? popupWidth : position.width) + adjustXOffset) / 2 - 8, + minRight, + maxRight + ), + }; + wrapperStyle = { + bottom: bgap + vgap, + right: 0, + left: "", + top: "", + }; + placeholderStyle = { + left: 0, + right: 0, + height: this._const.TRIANGLE_LENGTH, + top: "", + bottom: -this._const.TRIANGLE_LENGTH, + }; + break; + case "left": + case "left,bottom": + direction = "left"; + style = { + top: clamp(((middle ? popupHeight : position.height) - adjustYOffset) / 2 - 8, minTop, maxTop), + }; + wrapperStyle = { + right: rgap + hgap, + top: 0, + bottom: "", + left: "", + }; + placeholderStyle = { + top: 0, + bottom: 0, + width: this._const.TRIANGLE_LENGTH, + right: -this._const.TRIANGLE_LENGTH, + left: "", + }; + break; + case "left,top": + direction = "left"; + style = { + bottom: clamp( + ((middle ? popupHeight : position.height) + adjustYOffset) / 2 - 8, + minBottom, + maxBottom + ), + }; + wrapperStyle = { + right: rgap + hgap, + bottom: 0, + top: "", + left: "", + }; + placeholderStyle = { + top: 0, + bottom: 0, + width: this._const.TRIANGLE_LENGTH, + right: -this._const.TRIANGLE_LENGTH, + left: "", + }; + break; + case "right": + case "right,bottom": + direction = "right"; + style = { + top: clamp(((middle ? popupHeight : position.height) - adjustYOffset) / 2 - 8, minTop, maxTop), + }; + wrapperStyle = { + left: lgap + hgap, + top: 0, + bottom: "", + right: "", + }; + placeholderStyle = { + top: 0, + bottom: 0, + width: this._const.TRIANGLE_LENGTH, + left: -this._const.TRIANGLE_LENGTH, + right: "", + }; + break; + case "right,top": + direction = "right"; + style = { + bottom: clamp( + ((middle ? popupHeight : position.height) + adjustYOffset) / 2 - 8, + minBottom, + maxBottom + ), + }; + wrapperStyle = { + left: lgap + hgap, + bottom: 0, + top: "", + right: "", + }; + placeholderStyle = { + top: 0, + bottom: 0, + width: this._const.TRIANGLE_LENGTH, + left: -this._const.TRIANGLE_LENGTH, + right: "", + }; + break; + case "right,innerRight": + break; + case "right,innerLeft": + break; + case "innerRight": + break; + case "innerLeft": + break; + default: + break; } this.element .removeClass("left") @@ -497,7 +502,7 @@ export class PopupView extends Widget { const resetHeight = h - tbHeight - tabHeight - toolHeight - 2 * this.options.innerVgap; this.view.resetHeight ? this.view.resetHeight(resetHeight) - : this.view.element.css({ "max-height": BI.pixFormat(resetHeight) }); + : this.view.element.css({ "max-height": pixFormat(resetHeight) }); } setValue(selectedValues) { diff --git a/src/base/layer/layer.searcher.js b/src/base/layer/layer.searcher.js index e93cc9a0a..8fc36e8d6 100644 --- a/src/base/layer/layer.searcher.js +++ b/src/base/layer/layer.searcher.js @@ -1,13 +1,13 @@ import { ButtonGroup } from "../combination"; -import { VerticalLayout, Layout, shortcut, extend, createWidget, Controller, isNotEmptyArray } from "@/core"; +import { VerticalLayout, Layout, shortcut, extend, createWidget, Controller, isNotEmptyArray, Selection, i18nText, Events } from "@/core"; import { Pane } from "../1.pane"; /** * 搜索面板 * * Created by GUY on 2015/9/28. - * @class BI.SearcherView - * @extends BI.Pane + * @class SearcherView + * @extends Pane */ @shortcut() @@ -20,8 +20,8 @@ export class SearcherView extends Pane { return extend(conf, { baseCls: `${conf.baseCls || ""} bi-searcher-view bi-card`, - tipText: BI.i18nText("BI-No_Select"), - chooseType: BI.Selection.Single, + tipText: i18nText("BI-No_Select"), + chooseType: Selection.Single, matcher: { // 完全匹配的构造器 @@ -68,7 +68,7 @@ export class SearcherView extends Pane { }); this.matcher.on(Controller.EVENT_CHANGE, (type, val, ob, ...args) => { this.fireEvent(Controller.EVENT_CHANGE, type, val, ob, ...args); - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this.fireEvent(SearcherView.EVENT_CHANGE, val, ob); } }); @@ -99,8 +99,8 @@ export class SearcherView extends Pane { }); this.searcher.on(Controller.EVENT_CHANGE, (type, val, ob, ...args) => { this.fireEvent(Controller.EVENT_CHANGE, type, val, ob, ...args); - if (type === BI.Events.CLICK) { - this.fireEvent(BI.SearcherView.EVENT_CHANGE, val, ob); + if (type === Events.CLICK) { + this.fireEvent(SearcherView.EVENT_CHANGE, val, ob); } }); diff --git a/src/base/list/listview.js b/src/base/list/listview.js index 75be306f5..ae1add7fb 100644 --- a/src/base/list/listview.js +++ b/src/base/list/listview.js @@ -1,11 +1,11 @@ -import { VerticalLayout, Widget, shortcut, extend, isFunction } from "@/core"; +import { VerticalLayout, Widget, shortcut, extend, isFunction, ResizeDetector } from "@/core"; /** * 边滚动边加载的列表控件 * * Created by GUY on 2017/5/23. - * @class BI.ListView - * @extends BI.Widget + * @class ListView + * @extends Widget */ @shortcut() @@ -66,7 +66,7 @@ export class ListView extends Widget { }); let lastWidth = this.element.width(), lastHeight = this.element.height(); - BI.ResizeDetector.addResizeListener(this, () => { + ResizeDetector.addResizeListener(this, () => { if (!this.element.is(":visible")) { return; } @@ -93,8 +93,8 @@ export class ListView extends Widget { lastHeight = getElementHeight(); while (lastHeight < minContentHeight && index < items.length) { const itemsArr = items.slice(index, index + blockSize); - // eslint-disable-next-line no-loop-func this.container.addItems( + // eslint-disable-next-line no-loop-func itemsArr.map((item, i) => itemFormatter(item, index + i)), this ); @@ -148,7 +148,7 @@ export class ListView extends Widget { } beforeDestroy() { - BI.ResizeDetector.removeResizeListener(this); + ResizeDetector.removeResizeListener(this); this.restore(); } } diff --git a/src/base/list/virtualgrouplist.js b/src/base/list/virtualgrouplist.js index 12c3c85be..bd7b24526 100644 --- a/src/base/list/virtualgrouplist.js +++ b/src/base/list/virtualgrouplist.js @@ -1,12 +1,12 @@ -import { VerticalLayout, Layout, Widget, shortcut, extend, isFunction, isNumber, PrefixIntervalTree } from "@/core"; +import { VerticalLayout, Layout, Widget, shortcut, extend, isFunction, isNumber, PrefixIntervalTree, ResizeDetector } from "@/core"; import { VirtualGroup } from "../combination"; /** * 同时用于virtualGroup和virtualList特性的虚拟列表 * * Created by GUY on 2017/5/22. - * @class BI.VirtualList - * @extends BI.Widget + * @class VirtualList + * @extends Widget */ @shortcut() @@ -89,7 +89,7 @@ export class VirtualGroupList extends Widget { this.ticking = true; } }); - BI.ResizeDetector.addResizeListener(this, () => { + ResizeDetector.addResizeListener(this, () => { if (this.element.is(":visible")) { this._calculateBlocksToRender(); } @@ -112,8 +112,8 @@ export class VirtualGroupList extends Widget { lastHeight = this.renderedIndex === -1 ? 0 : getElementHeight(); while (lastHeight < minContentHeight && index < items.length) { const itemsArr = items.slice(index, index + blockSize); - // eslint-disable-next-line no-loop-func this.container[this.renderedIndex === -1 ? "populate" : "addItems"]( + // eslint-disable-next-line no-loop-func itemsArr.map((item, i) => itemFormatter(item, index + i)), this ); @@ -211,7 +211,7 @@ export class VirtualGroupList extends Widget { } beforeDestroy() { - BI.ResizeDetector.removeResizeListener(this); + ResizeDetector.removeResizeListener(this); this.restore(); } } diff --git a/src/base/list/virtuallist.js b/src/base/list/virtuallist.js index 7ba29103c..59cf7050d 100644 --- a/src/base/list/virtuallist.js +++ b/src/base/list/virtuallist.js @@ -1,11 +1,11 @@ -import { VerticalLayout, Layout, Widget, shortcut, isFunction, each, PrefixIntervalTree } from "@/core"; +import { VerticalLayout, Layout, Widget, shortcut, isFunction, each, PrefixIntervalTree, ResizeDetector } from "@/core"; /** * 虚拟列表 * * Created by GUY on 2017/5/22. - * @class BI.VirtualList - * @extends BI.Widget + * @class VirtualList + * @extends Widget */ @shortcut() @@ -68,7 +68,7 @@ export class VirtualList extends Widget { o.scrollTop = this.element.scrollTop(); this._calculateBlocksToRender(); }); - BI.ResizeDetector.addResizeListener(this, () => { + ResizeDetector.addResizeListener(this, () => { if (this.element.is(":visible")) { this._calculateBlocksToRender(); } @@ -87,8 +87,8 @@ export class VirtualList extends Widget { lastHeight = getElementHeight(); while (lastHeight < minContentHeight && index < items.length) { const itemsArr = items.slice(index, index + blockSize); - // eslint-disable-next-line no-loop-func this.container.addItems( + // eslint-disable-next-line no-loop-func itemsArr.map((item, i) => itemFormatter(item, index + i)), this ); @@ -220,7 +220,7 @@ export class VirtualList extends Widget { } beforeDestroy() { - BI.ResizeDetector.removeResizeListener(this); + ResizeDetector.removeResizeListener(this); this.restore(); } } diff --git a/src/base/pager/pager.js b/src/base/pager/pager.js index 1fbd2d43f..c775e4ac9 100644 --- a/src/base/pager/pager.js +++ b/src/base/pager/pager.js @@ -10,7 +10,10 @@ import { map, stripEL, formatEL, - Controller + Controller, + Events, + MIN, + MAX } from "@/core"; import { Label } from "../single"; import { ButtonGroup } from "../combination"; @@ -19,8 +22,8 @@ import { ButtonGroup } from "../combination"; * 分页控件 * * Created by GUY on 2015/8/31. - * @class BI.Pager - * @extends BI.Widget + * @class Pager + * @extends Widget */ @shortcut() @@ -66,7 +69,7 @@ export class Pager extends Widget { this.currPage = result(this.options, "curr"); // 翻页太灵敏 // this._lock = false; - // this._debouce = BI.debounce(function () { + // this._debouce = debounce(function () { // self._lock = false; // }, 300); this._populate(); @@ -241,24 +244,24 @@ export class Pager extends Widget { // } // self._lock = true; // self._debouce(); - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { const v = this.button_group.getValue()[0]; switch (v) { - case "first": - this.currPage = 1; - break; - case "last": - this.currPage = pages; - break; - case "prev": - this.currPage--; - break; - case "next": - this.currPage++; - break; - default: - this.currPage = v; - break; + case "first": + this.currPage = 1; + break; + case "last": + this.currPage = pages; + break; + case "prev": + this.currPage--; + break; + case "next": + this.currPage++; + break; + default: + this.currPage = v; + break; } jump.apply(this, [ { @@ -317,16 +320,16 @@ export class Pager extends Widget { getValue() { const val = this.button_group.getValue()[0]; switch (val) { - case "prev": - return -1; - case "next": - return 1; - case "first": - return BI.MIN; - case "last": - return BI.MAX; - default: - return val; + case "prev": + return -1; + case "next": + return 1; + case "first": + return MIN; + case "last": + return MAX; + default: + return val; } } diff --git a/src/base/single/1.text.js b/src/base/single/1.text.js index 91f90291b..9b6d596cd 100644 --- a/src/base/single/1.text.js +++ b/src/base/single/1.text.js @@ -1,10 +1,10 @@ -import { Layout, DefaultLayout, shortcut } from "@/core"; +import { Layout, DefaultLayout, shortcut, pixFormat, isWidthOrHeight, emptyFn, createWidget, isKey, isFunction, isUndefined } from "@/core"; import { Single } from "./0.single"; /** * guy 表示一行数据,通过position来定位位置的数据 - * @class BI.Text - * @extends BI.Single + * @class Text + * @extends Single */ @shortcut() @@ -50,48 +50,48 @@ export class Text extends Single { } = this.options; if (hgap + lgap > 0) { this.element.css({ - "padding-left": BI.pixFormat(hgap + lgap), + "padding-left": pixFormat(hgap + lgap), }); } if (hgap + rgap > 0) { this.element.css({ - "padding-right": BI.pixFormat(hgap + rgap), + "padding-right": pixFormat(hgap + rgap), }); } if (vgap + tgap > 0) { this.element.css({ - "padding-top": BI.pixFormat(vgap + tgap), + "padding-top": pixFormat(vgap + tgap), }); } if (vgap + bgap > 0) { this.element.css({ - "padding-bottom": BI.pixFormat(vgap + bgap), + "padding-bottom": pixFormat(vgap + bgap), }); } - if (BI.isWidthOrHeight(height)) { - this.element.css({ lineHeight: BI.pixFormat(height) }); + if (isWidthOrHeight(height)) { + this.element.css({ lineHeight: pixFormat(height) }); } - if (BI.isWidthOrHeight(lineHeight)) { - this.element.css({ lineHeight: BI.pixFormat(lineHeight) }); + if (isWidthOrHeight(lineHeight)) { + this.element.css({ lineHeight: pixFormat(lineHeight) }); } - if (BI.isWidthOrHeight(maxWidth)) { - this.element.css({ maxWidth: BI.pixFormat(maxWidth) }); + if (isWidthOrHeight(maxWidth)) { + this.element.css({ maxWidth: pixFormat(maxWidth) }); } this.element.css({ textAlign, whiteSpace: this._getTextWrap(), textOverflow: whiteSpace === "nowrap" ? "ellipsis" : "", - overflow: whiteSpace === "nowrap" ? "" : BI.isWidthOrHeight(height) ? "auto" : "", + overflow: whiteSpace === "nowrap" ? "" : isWidthOrHeight(height) ? "auto" : "", }); - if (handler && handler !== BI.emptyFn) { - this.text = BI.createWidget({ + if (handler && handler !== emptyFn) { + this.text = createWidget({ type: Layout.xtype, tagName: "span", }); this.text.element.click(e => { !disabled && !invalid && handler.call(this, this.getValue(), this, e); }); - BI.createWidget({ + createWidget({ type: DefaultLayout.xtype, element: this, items: [this.text], @@ -100,18 +100,18 @@ export class Text extends Single { this.text = this; } - const text = BI.isFunction(optionsText) + const text = isFunction(optionsText) ? this.__watch(optionsText, (context, newValue) => { this.setText(newValue); }) : optionsText; // 只要不是undefined就可以显示text值,否则显示value - if (!BI.isUndefined(text)) { + if (!isUndefined(text)) { this.setText(text); - } else if (BI.isKey(value)) { + } else if (isKey(value)) { this.setText(value); } - if (BI.isKey(keyword)) { + if (isKey(keyword)) { this.doRedMark(keyword); } if (highLight) { @@ -122,20 +122,20 @@ export class Text extends Single { _getTextWrap() { const { whiteSpace } = this.options; switch (whiteSpace) { - case "nowrap": - return "pre"; - case "normal": - return "pre-wrap"; - default: - return whiteSpace; + case "nowrap": + return "pre"; + case "normal": + return "pre-wrap"; + default: + return whiteSpace; } } _getShowText() { const { text: optionsText } = this.options; - const text = BI.isFunction(optionsText) ? optionsText() : optionsText; + const text = isFunction(optionsText) ? optionsText() : optionsText; - return BI.isKey(text) ? Text.formatText(`${text}`) : text; + return isKey(text) ? Text.formatText(`${text}`) : text; } _doRedMark(keyword) { @@ -146,7 +146,7 @@ export class Text extends Single { } doRedMark(keyword) { - if (BI.isKey(keyword)) { + if (isKey(keyword)) { this._doRedMark(keyword); } } diff --git a/src/base/single/a/a.js b/src/base/single/a/a.js index 7513b027f..4f331acd7 100644 --- a/src/base/single/a/a.js +++ b/src/base/single/a/a.js @@ -5,8 +5,8 @@ import { shortcut, extend, createWidget } from "@/core"; * 超链接 * * Created by GUY on 2015/9/9. - * @class BI.A - * @extends BI.Text + * @class A + * @extends Text * @abstract */ diff --git a/src/base/single/bar/bar.loading.js b/src/base/single/bar/bar.loading.js index 03a90fcb4..d51f9c6a1 100644 --- a/src/base/single/bar/bar.loading.js +++ b/src/base/single/bar/bar.loading.js @@ -1,5 +1,5 @@ import { TextButton } from "../button"; -import { Layout, CenterAdaptLayout, CardLayout, shortcut, emptyFn } from "@/core"; +import { Layout, CenterAdaptLayout, CardLayout, shortcut, emptyFn, createWidget, i18nText, Controller } from "@/core"; import { Single } from "../0.single"; @shortcut() @@ -18,32 +18,32 @@ export class LoadingBar extends Single { } render() { - this.loaded = BI.createWidget({ + this.loaded = createWidget({ type: TextButton.xtype, cls: "loading-text bi-list-item-simple", - text: BI.i18nText("BI-Load_More"), + text: i18nText("BI-Load_More"), width: 120, handler: this.options.handler, }); - this.loaded.on(BI.Controller.EVENT_CHANGE, (...args) => { - this.fireEvent(BI.Controller.EVENT_CHANGE, ...args); + this.loaded.on(Controller.EVENT_CHANGE, (...args) => { + this.fireEvent(Controller.EVENT_CHANGE, ...args); }); - this.loading = BI.createWidget({ + this.loading = createWidget({ type: Layout.xtype, width: this.options.height, height: this.options.height, cls: "loading-background cursor-default", }); - const loaded = BI.createWidget({ + const loaded = createWidget({ type: CenterAdaptLayout.xtype, items: [this.loaded], }); - const loading = BI.createWidget({ + const loading = createWidget({ type: CenterAdaptLayout.xtype, items: [this.loading], }); - this.cardLayout = BI.createWidget({ + this.cardLayout = createWidget({ type: CardLayout.xtype, element: this, items: [ @@ -62,7 +62,7 @@ export class LoadingBar extends Single { _reset() { this.visible(); - this.loaded.setText(BI.i18nText("BI-Load_More")); + this.loaded.setText(i18nText("BI-Load_More")); this.loaded.enable(); } @@ -73,7 +73,7 @@ export class LoadingBar extends Single { setEnd() { this.setLoaded(); - this.loaded.setText(BI.i18nText("BI-No_More_Data")); + this.loaded.setText(i18nText("BI-No_More_Data")); this.loaded.disable(); } diff --git a/src/base/single/button/button.basic.js b/src/base/single/button/button.basic.js index 1962bccc8..2457fe348 100644 --- a/src/base/single/button/button.basic.js +++ b/src/base/single/button/button.basic.js @@ -8,11 +8,22 @@ import { createWidget, Widget, isObject, - Controller + Controller, + isIE, + getIEVersion, + nextTick, + isKey, + isNull, + DOM, + debounce, + KeyCode, + EVENT_RESPONSE_TIME, + Events, + Actions } from "@/core"; import { BubbleCombo } from "@/case/combo/bubblecombo/combo.bubble"; import { Single } from "../0.single"; -import { BubblePopupView } from "@/case/combo/bubblecombo/popup.bubble"; +import { BubblePopupView, BubblePopupBarView } from "@/case/combo/bubblecombo/popup.bubble"; /** * guy @@ -32,7 +43,7 @@ export class BasicButton extends Single { return extend(conf, { _baseCls: `${conf._baseCls || ""} bi-basic-button${conf.invalid ? "" : " cursor-pointer"}${ - BI.isIE() && BI.getIEVersion() < 10 ? " hack" : "" + isIE() && getIEVersion() < 10 ? " hack" : "" }`, // el: {} // 可以通过el来创建button元素 value: "", @@ -75,7 +86,7 @@ export class BasicButton extends Single { this.setSelected(true); } // 延迟绑定事件,这样可以将自己绑定的事情优先执行 - BI.nextTick(() => { + nextTick(() => { !this.isDestroyed() && this.bindEvent(); }); super._initRef.apply(this, arguments); @@ -167,8 +178,8 @@ export class BasicButton extends Single { if (this.isOnce() && this.isSelected()) { return; } - if (BI.isKey(o.bubble) || isFunction(o.bubble)) { - if (BI.isNull(this.combo)) { + if (isKey(o.bubble) || isFunction(o.bubble)) { + if (isNull(this.combo)) { let popup; createWidget({ type: AbsoluteLayout.xtype, @@ -195,7 +206,7 @@ export class BasicButton extends Single { }, listeners: [ { - eventName: BI.BubblePopupBarView.EVENT_CLICK_TOOLBAR_BUTTON, + eventName: BubblePopupBarView.EVENT_CLICK_TOOLBAR_BUTTON, action: (...args) => { const [v] = args; this.combo.hideView(); @@ -240,109 +251,109 @@ export class BasicButton extends Single { let selected = false; let interval; switch (trigger) { - case "mouseup": - hand.mousedown(() => { - mouseDown = true; - }); - hand.mouseup(e => { - if (mouseDown === true) { - clk(e); - } - mouseDown = false; - ev(e); - }); - break; - case "mousedown": + case "mouseup": + hand.mousedown(() => { + mouseDown = true; + }); + hand.mouseup(e => { + if (mouseDown === true) { + clk(e); + } + mouseDown = false; + ev(e); + }); + break; + case "mousedown": // let mouseDown = false; - hand.mousedown(e => { + hand.mousedown(e => { // if (e.button === 0) { - Widget._renderEngine.createElement(document).bind(`mouseup.${this.getName()}`, e => { + Widget._renderEngine.createElement(document).bind(`mouseup.${this.getName()}`, e => { // if (e.button === 0) { - if ( - BI.DOM.isExist(this) && + if ( + DOM.isExist(this) && !hand.__isMouseInBounds__(e) && mouseDown === true && !selected - ) { + ) { // self.setSelected(!self.isSelected()); - this._trigger(); - } - mouseDown = false; - Widget._renderEngine.createElement(document).unbind(`mouseup.${this.getName()}`); + this._trigger(); + } + mouseDown = false; + Widget._renderEngine.createElement(document).unbind(`mouseup.${this.getName()}`); // } - }); - if (mouseDown === true) { - return; - } - if (this.isSelected()) { - selected = true; - } else { - clk(e); - } - mouseDown = true; - ev(e); + }); + if (mouseDown === true) { + return; + } + if (this.isSelected()) { + selected = true; + } else { + clk(e); + } + mouseDown = true; + ev(e); // } - }); - hand.mouseup(e => { + }); + hand.mouseup(e => { // if (e.button === 0) { - if (BI.DOM.isExist(this) && mouseDown === true && selected === true) { - clk(e); - } - mouseDown = false; - selected = false; - Widget._renderEngine.createElement(document).unbind(`mouseup.${this.getName()}`); - // } - }); - break; - case "dblclick": - hand.dblclick(clk); - break; - case "lclick": - hand.mousedown(e => { - Widget._renderEngine.createElement(document).bind(`mouseup.${this.getName()}`, () => { - interval && clearInterval(interval); - interval = null; + if (DOM.isExist(this) && mouseDown === true && selected === true) { + clk(e); + } mouseDown = false; + selected = false; Widget._renderEngine.createElement(document).unbind(`mouseup.${this.getName()}`); + // } }); - if (mouseDown === true) { - return; - } - if (!this.isEnabled() || !this.isValid()) { - return; - } - if (this.isOnce() && this.isSelected()) { - return; - } - interval = setInterval(() => { - clk(e); - }, 180); - mouseDown = true; - ev(e); - }); - break; - default: - if (o.stopEvent || o.stopPropagation) { + break; + case "dblclick": + hand.dblclick(clk); + break; + case "lclick": hand.mousedown(e => { + Widget._renderEngine.createElement(document).bind(`mouseup.${this.getName()}`, () => { + interval && clearInterval(interval); + interval = null; + mouseDown = false; + Widget._renderEngine.createElement(document).unbind(`mouseup.${this.getName()}`); + }); + if (mouseDown === true) { + return; + } + if (!this.isEnabled() || !this.isValid()) { + return; + } + if (this.isOnce() && this.isSelected()) { + return; + } + interval = setInterval(() => { + clk(e); + }, 180); + mouseDown = true; ev(e); }); - } - hand.click(clk); - // enter键等同于点击 - o.attributes && + break; + default: + if (o.stopEvent || o.stopPropagation) { + hand.mousedown(e => { + ev(e); + }); + } + hand.click(clk); + // enter键等同于点击 + o.attributes && o.attributes.zIndex >= 0 && hand.keyup(e => { - if (e.keyCode === BI.KeyCode.ENTER) { + if (e.keyCode === KeyCode.ENTER) { clk(e); } }); - break; + break; } }); // 之后的300ms点击无效 const onClick = o.debounce - ? BI.debounce(this._doClick, BI.EVENT_RESPONSE_TIME, { + ? debounce(this._doClick, EVENT_RESPONSE_TIME, { leading: true, trailing: false, }) @@ -373,12 +384,12 @@ export class BasicButton extends Single { if (this.isValid()) { const v = this.getValue(); o.handler.call(this, v, this, e); - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.CLICK, v, this, e); + this.fireEvent(Controller.EVENT_CHANGE, Events.CLICK, v, this, e); this.fireEvent(BasicButton.EVENT_CHANGE, v, this); if (o.action) { - BI.Actions.runAction(o.action, "click", o, this); + Actions.runAction(o.action, "click", o, this); } - BI.Actions.runGlobalAction("click", o, this); + Actions.runGlobalAction("click", o, this); } } diff --git a/src/base/single/button/button.node.js b/src/base/single/button/button.node.js index e41e8ee13..1c58f5aaa 100644 --- a/src/base/single/button/button.node.js +++ b/src/base/single/button/button.node.js @@ -1,5 +1,5 @@ import { BasicButton } from "./button.basic"; -import { shortcut, extend, Controller } from "@/core"; +import { shortcut, extend, Controller, Events } from "@/core"; /** * 表示一个可以展开的节点, 不仅有选中状态而且有展开状态 @@ -46,14 +46,14 @@ export class NodeButton extends BasicButton { triggerCollapse() { if (this.isOpened()) { this.setOpened(false); - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.COLLAPSE, this.getValue(), this); + this.fireEvent(Controller.EVENT_CHANGE, Events.COLLAPSE, this.getValue(), this); } } triggerExpand() { if (!this.isOpened()) { this.setOpened(true); - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.EXPAND, this.getValue(), this); + this.fireEvent(Controller.EVENT_CHANGE, Events.EXPAND, this.getValue(), this); } } } diff --git a/src/base/single/button/buttons/button.icon.js b/src/base/single/button/buttons/button.icon.js index d3504501d..c0e60a0fa 100644 --- a/src/base/single/button/buttons/button.icon.js +++ b/src/base/single/button/buttons/button.icon.js @@ -1,5 +1,5 @@ import { Icon } from "../../icon/icon"; -import { DefaultLayout, CenterAdaptLayout, shortcut, extend, isNumber, createWidget, isNull } from "@/core"; +import { DefaultLayout, CenterAdaptLayout, shortcut, extend, isNumber, createWidget, isNull, pixFormat } from "@/core"; import { BasicButton } from "../button.basic"; /** @@ -39,7 +39,7 @@ export class IconButton extends BasicButton { height: o.iconHeight, }); if (isNumber(o.height) && o.height > 0 && isNull(o.iconWidth) && isNull(o.iconHeight)) { - this.element.css("lineHeight", BI.pixFormat(o.height)); + this.element.css("lineHeight", pixFormat(o.height)); createWidget({ type: DefaultLayout.xtype, element: this, diff --git a/src/base/single/button/buttons/button.js b/src/base/single/button/buttons/button.js index 5ac980d30..b912b9e00 100644 --- a/src/base/single/button/buttons/button.js +++ b/src/base/single/button/buttons/button.js @@ -1,4 +1,4 @@ -import { CenterAdaptLayout, isNumber, shortcut, isPlainObject, createWidget } from "@/core"; +import { CenterAdaptLayout, isNumber, shortcut, isPlainObject, createWidget, isIE, isIE9Below, pixFormat, get, isNull, toPix } from "@/core"; import { Label, IconLabel } from "../../label"; import { BasicButton } from "../button.basic"; @@ -42,7 +42,7 @@ export class Button extends BasicButton { return { ...conf, - baseCls: `${conf.baseCls || ""} bi-button${BI.isIE() && BI.isIE9Below() ? " hack" : ""}`, + baseCls: `${conf.baseCls || ""} bi-button${isIE() && isIE9Below() ? " hack" : ""}`, attributes: { tabIndex: 1, }, @@ -94,13 +94,13 @@ export class Button extends BasicButton { // 如果 options 对应的属性为 true 则给元素添加 class const classArr = ["block", "clear", "ghost", "plain", "loading", "light"]; classArr.forEach(clz => { - if (BI.get(o, clz) === true) { + if (get(o, clz) === true) { this.element.addClass(clz); } }); if (o.minWidth > 0) { - this.element.css({ "min-width": BI.pixFormat(o.minWidth) }); + this.element.css({ "min-width": pixFormat(o.minWidth) }); } } @@ -133,7 +133,7 @@ export class Button extends BasicButton { maxTextWidth -= o.hgap * 2 + o.iconGap; // 减去图标水平占位宽度 maxTextWidth -= iconInvisible || isVertical(o.iconPosition) ? 0 : this._const.iconWidth; - const textWidth = BI.isNull(o.textWidth) ? maxTextWidth : Math.min(o.textWidth, maxTextWidth); + const textWidth = isNull(o.textWidth) ? maxTextWidth : Math.min(o.textWidth, maxTextWidth); this.text = createWidget({ type: Label.xtype, @@ -141,8 +141,8 @@ export class Button extends BasicButton { whiteSpace: o.whiteSpace, textAlign: o.textAlign, textWidth, - textHeight: BI.toPix(textHeight, hasBorder ? 2 : 0), - height: BI.toPix(lineHeight, hasBorder ? 2 : 0), + textHeight: toPix(textHeight, hasBorder ? 2 : 0), + height: toPix(lineHeight, hasBorder ? 2 : 0), value: o.value, title: null, }); @@ -160,8 +160,8 @@ export class Button extends BasicButton { type: IconLabel.xtype, cls: o.loading ? loadingCls : o.iconCls || o.icon, width: this._const.iconWidth, - height: BI.toPix(lineHeight, hasBorder ? 2 : 0), - lineHeight: BI.toPix(lineHeight, hasBorder ? 2 : 0), + height: toPix(lineHeight, hasBorder ? 2 : 0), + lineHeight: toPix(lineHeight, hasBorder ? 2 : 0), // 不设置,自定义按钮无法居中 iconWidth: o.iconWidth, iconHeight: o.iconHeight, diff --git a/src/base/single/button/listitem/blankicontexticonitem.js b/src/base/single/button/listitem/blankicontexticonitem.js index 8bccc9c10..16870a911 100644 --- a/src/base/single/button/listitem/blankicontexticonitem.js +++ b/src/base/single/button/listitem/blankicontexticonitem.js @@ -83,7 +83,7 @@ export class BlankIconTextIconItem extends BasicButton { doClick() { super.doClick(...arguments); if (this.isValid()) { - this.fireEvent(BI.BlankIconTextIconItem.EVENT_CHANGE, this.getValue(), this); + this.fireEvent(BlankIconTextIconItem.EVENT_CHANGE, this.getValue(), this); } } diff --git a/src/base/single/button/listitem/icontextitem.js b/src/base/single/button/listitem/icontextitem.js index 3b562c795..fb0f36b46 100644 --- a/src/base/single/button/listitem/icontextitem.js +++ b/src/base/single/button/listitem/icontextitem.js @@ -1,4 +1,4 @@ -import { VerticalAdaptLayout, extend, shortcut } from "@/core"; +import { VerticalAdaptLayout, extend, shortcut, Direction } from "@/core"; import { IconLabel, Label } from "../../label"; import { BasicButton } from "../button.basic"; @@ -19,7 +19,7 @@ export class IconTextItem extends BasicButton { return extend(conf, { baseCls: `${conf.baseCls || ""} bi-icon-text-item`, - direction: BI.Direction.Left, + direction: Direction.Left, iconWrapperWidth: null, iconHeight: null, iconWidth: null, diff --git a/src/base/single/editor/editor.js b/src/base/single/editor/editor.js index 85174dfd6..fb359f234 100644 --- a/src/base/single/editor/editor.js +++ b/src/base/single/editor/editor.js @@ -9,18 +9,14 @@ import { isEmptyString, isFunction, isNull, - trim + trim, + emptyFn, + KeyCode } from "@/core"; import { Label } from "../label"; import { Single } from "../0.single"; import { Bubbles } from "@/base/0.base"; -/** - * Created by GUY on 2015/4/15. - * @class BI.Editor - * @extends BI.Single - */ - @shortcut() export class Editor extends Single { static xtype = "bi.editor"; @@ -60,8 +56,8 @@ export class Editor extends Single { // title,warningTitle这两个属性没用 tipType: "warning", inputType: "text", - validationChecker: BI.emptyFn, - quitChecker: BI.emptyFn, + validationChecker: emptyFn, + quitChecker: emptyFn, allowBlank: false, watermark: "", errorText: "", @@ -164,7 +160,7 @@ export class Editor extends Single { this.editor.on(Input.EVENT_QUICK_DOWN, (...args) => { const [e] = args; // tab键就不要隐藏了 - if (e.keyCode !== BI.KeyCode.TAB && this.watermark) { + if (e.keyCode !== KeyCode.TAB && this.watermark) { this.watermark.invisible(); } this.fireEvent(Editor.EVENT_QUICK_DOWN, ...args); diff --git a/src/base/single/editor/editor.multifile.js b/src/base/single/editor/editor.multifile.js index 426034ce5..7b8931f65 100644 --- a/src/base/single/editor/editor.multifile.js +++ b/src/base/single/editor/editor.multifile.js @@ -5,8 +5,8 @@ import { AbsoluteLayout, AdaptiveLayout, shortcut, Widget, createWidget, extend * 多文件 * * Created by GUY on 2016/4/13. - * @class BI.MultifileEditor - * @extends BI.Single + * @class MultifileEditor + * @extends Single * @abstract */ diff --git a/src/base/single/editor/editor.textarea.js b/src/base/single/editor/editor.textarea.js index 50c9b404f..65076020f 100644 --- a/src/base/single/editor/editor.textarea.js +++ b/src/base/single/editor/editor.textarea.js @@ -12,7 +12,9 @@ import { isNotEmptyString, isNotNull, trim, - isFunction + isFunction, + Events, + DOM } from "@/core"; import { Label } from "../label"; import { Single } from "../0.single"; @@ -21,8 +23,8 @@ import { Bubbles } from "@/base/0.base"; /** * * Created by GUY on 2016/1/18. - * @class BI.TextAreaEditor - * @extends BI.Single + * @class TextAreaEditor + * @extends Single */ @shortcut() @@ -84,10 +86,10 @@ export class TextAreaEditor extends Single { this.content.element.on("input propertychange", e => { this._checkError(); this._checkWaterMark(); - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.CHANGE, this.getValue(), this); + this.fireEvent(Controller.EVENT_CHANGE, Events.CHANGE, this.getValue(), this); this.fireEvent(TextAreaEditor.EVENT_CHANGE); if (isEmptyString(this.getValue())) { - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.EMPTY, this.getValue(), this); + this.fireEvent(Controller.EVENT_CHANGE, Events.EMPTY, this.getValue(), this); } }); @@ -96,7 +98,7 @@ export class TextAreaEditor extends Single { this._focus(); this.fireEvent(TextAreaEditor.EVENT_FOCUS); Widget._renderEngine.createElement(document).bind(`mousedown.${this.getName()}`, e => { - if (BI.DOM.isExist(this) && !this.element.__isMouseInBounds__(e)) { + if (DOM.isExist(this) && !this.element.__isMouseInBounds__(e)) { Widget._renderEngine.createElement(document).unbind(`mousedown.${this.getName()}`); this.content.element.blur(); } @@ -199,7 +201,7 @@ export class TextAreaEditor extends Single { this.content.element.addClass("textarea-editor-focus"); this._checkWaterMark(); if (isEmptyString(this.getValue())) { - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.EMPTY, this.getValue(), this); + this.fireEvent(Controller.EVENT_CHANGE, Events.EMPTY, this.getValue(), this); } } @@ -209,12 +211,12 @@ export class TextAreaEditor extends Single { } _setErrorVisible(b) { - const { errorText, adjustYOffset, adjustXOffset, offsetStyle } = this.options; - if (isFunction(errorText)) { - errorText = errorText(trim(this.getValue())); + const { adjustYOffset, adjustXOffset, offsetStyle } = this.options; + if (isFunction(this.options.errorText)) { + this.options.errorText = this.options.errorText(trim(this.getValue())); } - if (!this.disabledError && isKey(errorText)) { - Bubbles[b ? "show" : "hide"](this.getName(), errorText, this, { + if (!this.disabledError && isKey(this.options.errorText)) { + Bubbles[b ? "show" : "hide"](this.getName(), this.options.errorText, this, { adjustYOffset, adjustXOffset, offsetStyle, @@ -224,7 +226,7 @@ export class TextAreaEditor extends Single { _defaultState() { if (isEmptyString(this.getValue())) { - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.EMPTY, this.getValue(), this); + this.fireEvent(Controller.EVENT_CHANGE, Events.EMPTY, this.getValue(), this); this.fireEvent(TextAreaEditor.EVENT_EMPTY); } } @@ -257,9 +259,9 @@ export class TextAreaEditor extends Single { extend({}, style, { color: style.color || - BI.DOM.getContrastColor( - BI.DOM.isRGBColor(style.backgroundColor) - ? BI.DOM.rgb2hex(style.backgroundColor) + DOM.getContrastColor( + DOM.isRGBColor(style.backgroundColor) + ? DOM.rgb2hex(style.backgroundColor) : style.backgroundColor ), }) diff --git a/src/base/single/html/html.js b/src/base/single/html/html.js index 6db0bf62c..41faf2ef8 100644 --- a/src/base/single/html/html.js +++ b/src/base/single/html/html.js @@ -1,10 +1,10 @@ -import { Layout, DefaultLayout, shortcut, isNumber, createWidget, isWidthOrHeight, isKey } from "@/core"; +import { Layout, DefaultLayout, shortcut, isNumber, createWidget, isWidthOrHeight, isKey, pixFormat } from "@/core"; import { Single } from "../0.single"; /** * guy 表示一行数据,通过position来定位位置的数据 - * @class BI.Html - * @extends BI.Single + * @class Html + * @extends Single */ @shortcut() @@ -47,35 +47,35 @@ export class Html extends Single { } = this.options; if (hgap + lgap > 0) { this.element.css({ - "padding-left": BI.pixFormat(hgap + lgap), + "padding-left": pixFormat(hgap + lgap), }); } if (hgap + rgap > 0) { this.element.css({ - "padding-right": BI.pixFormat(hgap + rgap), + "padding-right": pixFormat(hgap + rgap), }); } if (vgap + tgap > 0) { this.element.css({ - "padding-top": BI.pixFormat(vgap + tgap), + "padding-top": pixFormat(vgap + tgap), }); } if (vgap + bgap > 0) { this.element.css({ - "padding-bottom": BI.pixFormat(vgap + bgap), + "padding-bottom": pixFormat(vgap + bgap), }); } if (isNumber(height)) { - this.element.css({ lineHeight: BI.pixFormat(height) }); + this.element.css({ lineHeight: pixFormat(height) }); } if (isNumber(lineHeight)) { - this.element.css({ lineHeight: BI.pixFormat(lineHeight) }); + this.element.css({ lineHeight: pixFormat(lineHeight) }); } if (isWidthOrHeight(maxWidth)) { this.element.css({ maxWidth }); } if (isNumber(maxWidth)) { - this.element.css({ maxWidth: BI.pixFormat(maxWidth) }); + this.element.css({ maxWidth: pixFormat(maxWidth) }); } this.element.css({ textAlign, diff --git a/src/base/single/icon/icon.js b/src/base/single/icon/icon.js index 6692205b7..84a0d6889 100644 --- a/src/base/single/icon/icon.js +++ b/src/base/single/icon/icon.js @@ -1,10 +1,10 @@ import { Single } from "../0.single"; -import { shortcut, extend } from "@/core"; +import { shortcut, extend, isIE9Below } from "@/core"; /** * guy 图标 - * @class BI.Icon - * @extends BI.Single + * @class Icon + * @extends Single */ @shortcut() @@ -21,7 +21,7 @@ export class Icon extends Single { } render() { - if (BI.isIE9Below && BI.isIE9Below()) { + if (isIE9Below && isIE9Below()) { this.element.addClass("hack"); } } diff --git a/src/base/single/img/img.js b/src/base/single/img/img.js index 9f829ad7d..f045ac5fd 100644 --- a/src/base/single/img/img.js +++ b/src/base/single/img/img.js @@ -1,15 +1,6 @@ import { Single } from "../0.single"; import { shortcut, extend } from "@/core"; -/** - * ͼƬ - * - * Created by GUY on 2016/1/26. - * @class BI.Img - * @extends BI.Single - * @abstract - */ - @shortcut() export class Img extends Single { static xtype = "bi.img"; diff --git a/src/base/single/input/checkbox/checkbox.image.js b/src/base/single/input/checkbox/checkbox.image.js index 48425c022..61786512a 100644 --- a/src/base/single/input/checkbox/checkbox.image.js +++ b/src/base/single/input/checkbox/checkbox.image.js @@ -1,5 +1,5 @@ import { IconButton } from "../../button"; -import { shortcut, extend } from "@/core"; +import { shortcut, extend, emptyFn } from "@/core"; /** * guy @@ -19,7 +19,7 @@ export class ImageCheckbox extends IconButton { return extend(conf, { baseCls: `${conf.baseCls || ""} bi-image-checkbox check-box-icon`, selected: false, - handler: BI.emptyFn, + handler: emptyFn, width: 16, height: 16, iconWidth: 16, diff --git a/src/base/single/input/checkbox/checkbox.js b/src/base/single/input/checkbox/checkbox.js index cec7a0031..1cf223924 100644 --- a/src/base/single/input/checkbox/checkbox.js +++ b/src/base/single/input/checkbox/checkbox.js @@ -1,4 +1,4 @@ -import { CenterAdaptLayout, DefaultLayout, shortcut } from "@/core"; +import { CenterAdaptLayout, DefaultLayout, shortcut, emptyFn } from "@/core"; import { BasicButton } from "../../button"; /** @@ -16,7 +16,7 @@ export class Checkbox extends BasicButton { props = { baseCls: "bi-checkbox", selected: false, - handler: BI.emptyFn, + handler: emptyFn, width: 14, height: 14, iconWidth: 14, diff --git a/src/base/single/input/file.js b/src/base/single/input/file.js index 35fe93a9b..d7ef6a707 100644 --- a/src/base/single/input/file.js +++ b/src/base/single/input/file.js @@ -1,12 +1,12 @@ import { Msg } from "../../foundation/message"; -import { shortcut, Widget, some, extend } from "@/core"; +import { shortcut, Widget, some, extend, jsonDecode, appendQuery, emptyFn, i18nText } from "@/core"; /** * 文件 * * Created by GUY on 2016/1/27. - * @class BI.File - * @extends BI.Single + * @class File + * @extends Single * @abstract */ @@ -166,7 +166,7 @@ const sendFile = (toString => { ); xhr.open( "post", - BI.appendQuery(handler.url, { + appendQuery(handler.url, { filename: _global.encodeURIComponent(handler.file.fileName), }), true @@ -188,53 +188,54 @@ const sendFile = (toString => { }; xhr.onreadystatechange = () => { switch (xhr.readyState) { - case 2: - case 3: - if (rpe.total <= rpe.loaded) { + case 2: + case 3: + if (rpe.total <= rpe.loaded) { + rpe.loaded = rpe.total; + } + upload.onprogress(rpe); + break; + case 4: + clearInterval(rpe.interval); + rpe.interval = 0; rpe.loaded = rpe.total; - } - upload.onprogress(rpe); - break; - case 4: - clearInterval(rpe.interval); - rpe.interval = 0; - rpe.loaded = rpe.total; - upload.onprogress(rpe); - if (199 < xhr.status && xhr.status < 400) { - upload.onload({}); - const attachO = BI.jsonDecode(xhr.responseText); - attachO.filename = handler.file.fileName; - if (handler.file.type.indexOf("image") !== -1) { - attachO.attach_type = "image"; + upload.onprogress(rpe); + if (199 < xhr.status && xhr.status < 400) { + upload.onload({}); + const attachO = jsonDecode(xhr.responseText); + attachO.filename = handler.file.fileName; + if (handler.file.type.indexOf("image") !== -1) { + attachO.attach_type = "image"; + } + handler.attach_array[current] = attachO; + } else { + upload.onerror({}); } - handler.attach_array[current] = attachO; - } else { - upload.onerror({}); - } - break; - default: - break; + break; + default: + break; } }; upload.onloadstart(rpe); } else { xhr.onreadystatechange = () => { switch (xhr.readyState) { - case 4: - const attachO = BI.jsonDecode(xhr.responseText); - if (handler.file.type.indexOf("image") !== -1) { - attachO.attach_type = "image"; - } - attachO.filename = handler.file.fileName; - if (handler.maxLength === 1) { - handler.attach_array[0] = attachO; + case 4: { + const attachO = jsonDecode(xhr.responseText); + if (handler.file.type.indexOf("image") !== -1) { + attachO.attach_type = "image"; + } + attachO.filename = handler.file.fileName; + if (handler.maxLength === 1) { + handler.attach_array[0] = attachO; // handler.attach_array.push(attachO); - } else { - handler.attach_array[current] = attachO; + } else { + handler.attach_array[current] = attachO; + } + break; } - break; - default: - break; + default: + break; } }; if (isFunction(upload.onloadstart)) { @@ -285,7 +286,7 @@ const sendFile = (toString => { const responseText = (iframe.contentWindow.document || iframe.contentWindow.contentDocument).body .innerHTML; try { - const attachO = BI.jsonDecode(responseText); + const attachO = jsonDecode(responseText); if (handler.file.type.indexOf("image") !== -1) { attachO.attach_type = "image"; } @@ -314,7 +315,9 @@ const sendFile = (toString => { try { // IE < 8 does not accept enctype attribute ... + // eslint-disable-next-line no-unused-vars const form = document.createElement("
"), + // eslint-disable-next-line no-unused-vars iframe = handler.iframe || (handler.iframe = document.createElement( @@ -447,7 +450,7 @@ const fileTypeValidate = (fileName, fileType) => { if (!fileType) { return true; } - const mimes = fileType.split(","); + let mimes = fileType.split(","); if (mimes[0] === fileType) { mimes = `${fileType}`.split(";"); } @@ -490,7 +493,7 @@ export class File extends Widget { accept: "", // .png,.pdf,image/jpg,image/* 等 maxSize: -1, // 1024 * 1024 单位b maxLength: -1, // 无限制, 与multiple配合使用 - errorText: BI.emptyFn, + errorText: emptyFn, }); } @@ -562,14 +565,14 @@ export class File extends Widget { // enable again the submit button/element }, 100); if (200 > xhr.status || xhr.status > 399) { - Msg.toast(BI.i18nText("BI-Upload_File_Error"), { level: "error" }); + Msg.toast(i18nText("BI-Upload_File_Error"), { level: "error" }); this.fireEvent(File.EVENT_ERROR); return; } const error = some(_wrap.attach_array, (index, attach) => { if (attach.errorCode) { - Msg.toast(BI.i18nText(attach.errorMsg), { level: "error" }); + Msg.toast(i18nText(attach.errorMsg), { level: "error" }); this.fireEvent(File.EVENT_ERROR, attach); return true; @@ -607,7 +610,7 @@ export class File extends Widget { errorText({ errorType: 0, file: item, - }) || BI.i18nText("BI-Upload_File_Type_Error", wrap.fileType), + }) || i18nText("BI-Upload_File_Type_Error", wrap.fileType), { level: "error" } ); this.fireEvent(File.EVENT_ERROR, { @@ -620,7 +623,7 @@ export class File extends Widget { errorText({ errorType: 1, file: item, - }) || BI.i18nText("BI-Upload_File_Size_Error", Math.ceil(wrap.maxSize / 1024 / 1024)), + }) || i18nText("BI-Upload_File_Size_Error", Math.ceil(wrap.maxSize / 1024 / 1024)), { level: "error" } ); this.fireEvent(File.EVENT_ERROR, { diff --git a/src/base/single/input/input.js b/src/base/single/input/input.js index 6a3dcdaff..fdfb95a6d 100644 --- a/src/base/single/input/input.js +++ b/src/base/single/input/input.js @@ -12,13 +12,17 @@ import { trim, isEqual, nextTick, - isEndWithBlank + isEndWithBlank, + emptyFn, + EVENT_RESPONSE_TIME, + KeyCode, + Events } from "@/core"; /** * guy - * @class BI.Input 一个button和一行数 组成的一行listitem - * @extends BI.Single + * @class Input 一个button和一行数 组成的一行listitem + * @extends Single * @type {*|void|Object} */ @@ -54,8 +58,8 @@ export class Input extends Single { return extend(conf, { baseCls: `${conf.baseCls || ""} bi-input display-block overflow-dot`, tagName: "input", - validationChecker: BI.emptyFn, - quitChecker: BI.emptyFn, // 按确定键能否退出编辑 + validationChecker: emptyFn, + quitChecker: emptyFn, // 按确定键能否退出编辑 allowBlank: false, }); } @@ -67,16 +71,16 @@ export class Input extends Single { const _keydown = debounce(keyCode => { this.onKeyDown(keyCode, ctrlKey); this._keydown_ = false; - }, BI.EVENT_RESPONSE_TIME); - const _clk = debounce(bind(this._click, this), BI.EVENT_RESPONSE_TIME, { + }, EVENT_RESPONSE_TIME); + const _clk = debounce(bind(this._click, this), EVENT_RESPONSE_TIME, { leading: true, trailing: false, }); - this._focusDebounce = debounce(bind(this._focus, this), BI.EVENT_RESPONSE_TIME, { + this._focusDebounce = debounce(bind(this._focus, this), EVENT_RESPONSE_TIME, { leading: true, trailing: false, }); - this._blurDebounce = debounce(bind(this._blur, this), BI.EVENT_RESPONSE_TIME, { + this._blurDebounce = debounce(bind(this._blur, this), EVENT_RESPONSE_TIME, { leading: true, trailing: false, }); @@ -89,7 +93,7 @@ export class Input extends Single { }) .keyup(e => { keyCode = null; - if (!(inputEventValid && e.keyCode === BI.KeyCode.ENTER)) { + if (!(inputEventValid && e.keyCode === KeyCode.ENTER)) { this._keydown_ = true; _keydown(e.keyCode); } @@ -131,7 +135,7 @@ export class Input extends Single { this._checkValidationOnValueChange(); this._isEditing = true; if (this.getValue() === "") { - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.EMPTY, this.getValue(), this); + this.fireEvent(Controller.EVENT_CHANGE, Events.EMPTY, this.getValue(), this); this.fireEvent(Input.EVENT_EMPTY); } this.fireEvent(Input.EVENT_FOCUS); @@ -150,7 +154,7 @@ export class Input extends Single { if (this.isValid()) { const lastValidValue = this._lastValidValue; this._lastValidValue = this.getValue(); - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.CONFIRM, this.getValue(), this); + this.fireEvent(Controller.EVENT_CHANGE, Events.CONFIRM, this.getValue(), this); this.fireEvent(Input.EVENT_CONFIRM); if (this._lastValidValue !== lastValidValue) { this.fireEvent(Input.EVENT_CHANGE_CONFIRM); @@ -160,7 +164,7 @@ export class Input extends Single { }; if (this._keydown_ === true) { - delay(blur, BI.EVENT_RESPONSE_TIME); + delay(blur, EVENT_RESPONSE_TIME); } else { blur(); } @@ -189,11 +193,11 @@ export class Input extends Single { ) { this._start = true; this._pause = false; - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.STARTEDIT, this.getValue(), this); + this.fireEvent(Controller.EVENT_CHANGE, Events.STARTEDIT, this.getValue(), this); this.fireEvent(Input.EVENT_START); } } - if (isEqual(keyCode, BI.KeyCode.ENTER)) { + if (isEqual(keyCode, KeyCode.ENTER)) { if (this.isValid() || this.options.quitChecker.apply(this, [trim(this.getValue())]) !== false) { this.blur(); this.fireEvent(Input.EVENT_ENTER); @@ -201,13 +205,13 @@ export class Input extends Single { this.fireEvent(Input.EVENT_RESTRICT); } } - if (isEqual(keyCode, BI.KeyCode.SPACE)) { + if (isEqual(keyCode, KeyCode.SPACE)) { this.fireEvent(Input.EVENT_SPACE); } - if (isEqual(keyCode, BI.KeyCode.BACKSPACE) && this._lastValue === "") { + if (isEqual(keyCode, KeyCode.BACKSPACE) && this._lastValue === "") { this.fireEvent(Input.EVENT_REMOVE); } - if (isEqual(keyCode, BI.KeyCode.BACKSPACE) || isEqual(keyCode, BI.KeyCode.DELETE)) { + if (isEqual(keyCode, KeyCode.BACKSPACE) || isEqual(keyCode, KeyCode.DELETE)) { this.fireEvent(Input.EVENT_BACKSPACE); } this.fireEvent(Input.EVENT_KEY_DOWN, arguments); @@ -219,16 +223,16 @@ export class Input extends Single { } if (isEndWithBlank(this.getValue())) { this._pause = true; - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.PAUSE, "", this); + this.fireEvent(Controller.EVENT_CHANGE, Events.PAUSE, "", this); this.fireEvent(Input.EVENT_PAUSE); this._defaultState(); } else if ( - (keyCode === BI.KeyCode.BACKSPACE || keyCode === BI.KeyCode.DELETE) && + (keyCode === KeyCode.BACKSPACE || keyCode === KeyCode.DELETE) && trim(this.getValue()) === "" && lastValue !== null && trim(lastValue) !== "" ) { - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.STOPEDIT, this.getValue(), this); + this.fireEvent(Controller.EVENT_CHANGE, Events.STOPEDIT, this.getValue(), this); this.fireEvent(Input.EVENT_STOP); } } @@ -236,7 +240,7 @@ export class Input extends Single { // 初始状态 _defaultState() { if (this.getValue() === "") { - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.EMPTY, this.getValue(), this); + this.fireEvent(Controller.EVENT_CHANGE, Events.EMPTY, this.getValue(), this); this.fireEvent(Input.EVENT_EMPTY); } this._lastValue = this.getValue(); @@ -245,12 +249,12 @@ export class Input extends Single { _valueChange() { if (this.isValid() && trim(this.getValue()) !== this._lastSubmitValue) { - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.CHANGE, this.getValue(), this); + this.fireEvent(Controller.EVENT_CHANGE, Events.CHANGE, this.getValue(), this); this.fireEvent(Input.EVENT_CHANGE); this._lastSubmitValue = trim(this.getValue()); } if (this.getValue() === "") { - this.fireEvent(Controller.EVENT_CHANGE, BI.Events.EMPTY, this.getValue(), this); + this.fireEvent(Controller.EVENT_CHANGE, Events.EMPTY, this.getValue(), this); this.fireEvent(Input.EVENT_EMPTY); } this._lastValue = this.getValue(); diff --git a/src/base/single/input/radio/radio.image.js b/src/base/single/input/radio/radio.image.js index 07c7dba9b..6c939eba1 100644 --- a/src/base/single/input/radio/radio.image.js +++ b/src/base/single/input/radio/radio.image.js @@ -1,5 +1,5 @@ import { IconButton } from "../../button"; -import { shortcut, extend } from "@/core"; +import { shortcut, extend, emptyFn } from "@/core"; /** * guy @@ -19,7 +19,7 @@ export class ImageRadio extends IconButton { return extend(conf, { baseCls: `${conf.baseCls || ""} bi-radio radio-icon`, selected: false, - handler: BI.emptyFn, + handler: emptyFn, width: 16, height: 16, iconWidth: 16, diff --git a/src/base/single/input/radio/radio.js b/src/base/single/input/radio/radio.js index e38ba3802..041255355 100644 --- a/src/base/single/input/radio/radio.js +++ b/src/base/single/input/radio/radio.js @@ -1,4 +1,4 @@ -import { CenterAdaptLayout, Layout, shortcut } from "@/core"; +import { CenterAdaptLayout, Layout, shortcut, emptyFn } from "@/core"; import { BasicButton } from "../../button"; /** @@ -15,7 +15,7 @@ export class Radio extends BasicButton { props = { baseCls: "bi-radio", selected: false, - handler: BI.emptyFn, + handler: emptyFn, width: 16, height: 16, iconWidth: 16, diff --git a/src/base/single/label/abstract.label.js b/src/base/single/label/abstract.label.js index a57bdb94c..5b7803f3c 100644 --- a/src/base/single/label/abstract.label.js +++ b/src/base/single/label/abstract.label.js @@ -1,5 +1,5 @@ import { Text } from "../1.text"; -import { CenterAdaptLayout, isNumber, createWidget, extend } from "@/core"; +import { CenterAdaptLayout, isNumber, createWidget, extend, pixFormat } from "@/core"; import { Single } from "../0.single"; /** @@ -116,7 +116,7 @@ export class AbstractLabel extends Single { if (isNumber(height) && height > 0) { // 1.4 this.element.css({ - "line-height": BI.pixFormat(height), + "line-height": pixFormat(height), }); json.textAlign = textAlign; delete json.maxWidth; @@ -196,7 +196,7 @@ export class AbstractLabel extends Single { if (isNumber(height) && height > 0) { // 1.8 this.element.css({ - "line-height": BI.pixFormat(height), + "line-height": pixFormat(height), }); json.textAlign = textAlign; delete json.maxWidth; @@ -283,7 +283,7 @@ export class AbstractLabel extends Single { // 2.3 if (whiteSpace !== "normal") { this.element.css({ - "line-height": BI.pixFormat(height - vgap * 2), + "line-height": pixFormat(height - vgap * 2), }); } delete json.maxWidth; @@ -351,7 +351,7 @@ export class AbstractLabel extends Single { if (isNumber(height) && height > 0) { if (whiteSpace !== "normal") { this.element.css({ - "line-height": BI.pixFormat(height - vgap * 2), + "line-height": pixFormat(height - vgap * 2), }); } delete json.maxWidth; @@ -391,19 +391,19 @@ export class AbstractLabel extends Single { } doRedMark() { - this.text.doRedMark.apply(this.text, arguments); + this.text.doRedMark(...arguments); } unRedMark() { - this.text.unRedMark.apply(this.text, arguments); + this.text.unRedMark(...arguments); } doHighLight() { - this.text.doHighLight.apply(this.text, arguments); + this.text.doHighLight(...arguments); } unHighLight() { - this.text.unHighLight.apply(this.text, arguments); + this.text.unHighLight(...arguments); } setText(v) { diff --git a/src/base/single/label/icon.label.js b/src/base/single/label/icon.label.js index 8808ad848..65b8757c1 100644 --- a/src/base/single/label/icon.label.js +++ b/src/base/single/label/icon.label.js @@ -1,10 +1,10 @@ import { Icon } from "../icon/icon"; -import { DefaultLayout, CenterAdaptLayout, shortcut, createWidget, isNumber, isNull } from "@/core"; +import { DefaultLayout, CenterAdaptLayout, shortcut, createWidget, isNumber, isNull, pixFormat } from "@/core"; import { Single } from "../0.single"; /** - * @class BI.IconLabel - * @extends BI.Single + * @class IconLabel + * @extends Single * 图标标签 */ @@ -36,7 +36,7 @@ export class IconLabel extends Single { height: iconHeight, }); if (isNumber(height) && height > 0 && isNull(iconWidth) && isNull(iconHeight)) { - this.element.css("lineHeight", BI.pixFormat(lineHeight || height)); + this.element.css("lineHeight", pixFormat(lineHeight || height)); createWidget({ type: DefaultLayout.xtype, element: this, diff --git a/src/base/single/link/link.js b/src/base/single/link/link.js index fd21f1901..76314c589 100644 --- a/src/base/single/link/link.js +++ b/src/base/single/link/link.js @@ -4,8 +4,8 @@ import { shortcut, extend } from "@/core"; /** * guy a元素 - * @class BI.Link - * @extends BI.Text + * @class Link + * @extends Text */ @shortcut() diff --git a/src/base/single/tip/0.tip.js b/src/base/single/tip/0.tip.js index b5c222e43..b8bfa7c1a 100644 --- a/src/base/single/tip/0.tip.js +++ b/src/base/single/tip/0.tip.js @@ -1,12 +1,12 @@ import { Single } from "../0.single"; -import { extend } from "@/core"; +import { extend, zIndex_tip } from "@/core"; /** * guy * tip提示 * zIndex在10亿级别 - * @class BI.Tip - * @extends BI.Single + * @class Tip + * @extends Single * @abstract */ @@ -16,7 +16,7 @@ export class Tip extends Single { return extend(conf, { _baseCls: `${conf._baseCls || ""} bi-tip`, - zIndex: BI.zIndex_tip, + zIndex: zIndex_tip, }); } diff --git a/src/base/single/tip/tip.toast.js b/src/base/single/tip/tip.toast.js index 785abb0db..7081b5645 100644 --- a/src/base/single/tip/tip.toast.js +++ b/src/base/single/tip/tip.toast.js @@ -1,14 +1,14 @@ import { IconLabel, Label } from "../label"; import { IconButton } from "../button"; -import { HorizontalLayout, shortcut, extend, isPlainObject } from "@/core"; +import { HorizontalLayout, shortcut, extend, isPlainObject, pixFormat, HorizontalAlign } from "@/core"; import { Tip } from "./0.tip"; /** * toast提示 * * Created by GUY on 2015/9/7. - * @class BI.Toast - * @extends BI.Tip + * @class Toast + * @extends Tip */ @shortcut() @@ -41,8 +41,8 @@ export class Toast extends Tip { const { closable, level, autoClose, textHeight, text, hgap, vgap, innerHgap } = this.options; const { closableMinWidth, minWidth, maxWidth, closableMaxWidth } = this._const; this.element.css({ - minWidth: BI.pixFormat(closable ? closableMinWidth : minWidth), - maxWidth: BI.pixFormat(closable ? closableMaxWidth : maxWidth), + minWidth: pixFormat(closable ? closableMinWidth : minWidth), + maxWidth: pixFormat(closable ? closableMaxWidth : maxWidth), }); this.element.addClass(`toast-${level}`); function fn(e) { @@ -62,22 +62,22 @@ export class Toast extends Tip { }); let cls; switch (level) { - case "success": - cls = "toast-success-font"; - break; - case "error": - cls = "toast-error-font"; - break; - case "warning": - cls = "toast-warning-font"; - break; - case "loading": - cls = "toast-loading-font anim-rotate"; - break; - case "normal": - default: - cls = "toast-message-font"; - break; + case "success": + cls = "toast-success-font"; + break; + case "error": + cls = "toast-error-font"; + break; + case "warning": + cls = "toast-warning-font"; + break; + case "loading": + cls = "toast-loading-font anim-rotate"; + break; + case "normal": + default: + cls = "toast-message-font"; + break; } function hasCloseIcon() { @@ -118,7 +118,7 @@ export class Toast extends Tip { return { type: HorizontalLayout.xtype, - horizontalAlign: BI.HorizontalAlign.Stretch, + horizontalAlign: HorizontalAlign.Stretch, items, hgap, vgap, diff --git a/src/base/single/tip/tip.tooltip.js b/src/base/single/tip/tip.tooltip.js index 5965e31aa..0d8fbd7c2 100644 --- a/src/base/single/tip/tip.tooltip.js +++ b/src/base/single/tip/tip.tooltip.js @@ -1,4 +1,4 @@ -import { VerticalLayout, shortcut, extend, createWidget, map } from "@/core"; +import { VerticalLayout, shortcut, extend, createWidget, map, pixFormat } from "@/core"; import { Label } from "../label"; import { Tip } from "./0.tip"; @@ -6,8 +6,8 @@ import { Tip } from "./0.tip"; * title提示 * * Created by GUY on 2015/9/7. - * @class BI.Tooltip - * @extends BI.Tip + * @class Tooltip + * @extends Tip */ @shortcut() @@ -80,7 +80,7 @@ export class Tooltip extends Tip { } setWidth(width) { - this.element.width(BI.pixFormat(width - 2 * this._const.hgap)); + this.element.width(pixFormat(width - 2 * this._const.hgap)); } setText(text) { diff --git a/src/base/single/trigger/trigger.js b/src/base/single/trigger/trigger.js index edbb788b6..365858309 100644 --- a/src/base/single/trigger/trigger.js +++ b/src/base/single/trigger/trigger.js @@ -3,8 +3,8 @@ import { extend } from "@/core"; /** * 下拉 - * @class BI.Trigger - * @extends BI.Single + * @class Trigger + * @extends Single * @abstract */ diff --git a/src/base/tree/customtree.js b/src/base/tree/customtree.js index fd4077a84..0172a19d0 100644 --- a/src/base/tree/customtree.js +++ b/src/base/tree/customtree.js @@ -15,7 +15,8 @@ import { isNotNull, isNull, createWidget, - Controller + Controller, + Events } from "@/core"; /** @@ -23,8 +24,8 @@ import { * 自定义树 * * Created by GUY on 2015/9/7. - * @class BI.CustomTree - * @extends BI.Single + * @class CustomTree + * @extends Single */ @shortcut() @@ -131,7 +132,7 @@ export class CustomTree extends Widget { }); this.tree.on(Controller.EVENT_CHANGE, (type, val, obj, ...args) => { this.fireEvent(Controller.EVENT_CHANGE, type, val, obj, ...args); - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this.fireEvent(CustomTree.EVENT_CHANGE, val, obj); } }); diff --git a/src/case/button/icon/iconhalf/icon.half.image.js b/src/case/button/icon/iconhalf/icon.half.image.js index ca51f65f4..4092a35e4 100644 --- a/src/case/button/icon/iconhalf/icon.half.image.js +++ b/src/case/button/icon/iconhalf/icon.half.image.js @@ -1,11 +1,6 @@ import { IconButton } from "@/base"; import { shortcut, extend } from "@/core"; -/** - * guy - * @extends BI.Single - * @type {*|void|Object} - */ @shortcut() export class HalfIconButton extends IconButton { static xtype = "bi.half_icon_button"; diff --git a/src/case/button/icon/iconhalf/icon.half.js b/src/case/button/icon/iconhalf/icon.half.js index 0e84aedae..057799115 100644 --- a/src/case/button/icon/iconhalf/icon.half.js +++ b/src/case/button/icon/iconhalf/icon.half.js @@ -1,11 +1,6 @@ import { CenterAdaptLayout, DefaultLayout, shortcut, extend } from "@/core"; import { BasicButton } from "@/base"; -/** - * guy - * @extends BI.Single - * @type {*|void|Object} - */ @shortcut() export class HalfButton extends BasicButton { static xtype = "bi.half_button"; diff --git a/src/case/button/item.multiselect.js b/src/case/button/item.multiselect.js index d39bb97fc..b064761fa 100644 --- a/src/case/button/item.multiselect.js +++ b/src/case/button/item.multiselect.js @@ -1,4 +1,4 @@ -import { Checkbox, Label, BasicButton } from "@/base"; +import { Checkbox, Label, BasicButton, SIZE_CONSANTS } from "@/base"; import { VerticalAdaptLayout, CenterAdaptLayout, shortcut, extend, createWidget } from "@/core"; /** @@ -17,7 +17,7 @@ export class MultiSelectItem extends BasicButton { attributes: { tabIndex: 1, }, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, iconWrapperWidth: 26, }); } @@ -39,7 +39,7 @@ export class MultiSelectItem extends BasicButton { { el: { type: Label.xtype, - ref: (_ref) => { + ref: _ref => { this.text = _ref; }, cls: "list-item-text", @@ -56,13 +56,13 @@ export class MultiSelectItem extends BasicButton { value: o.value, py: o.py, }, - }, + } ], }; } // _setEnable: function (enable) { - // BI.MultiSelectItem.superclass._setEnable.apply(this, arguments); + // MultiSelectItem.superclass._setEnable.apply(this, arguments); // if (enable === true) { // this.element.attr("tabIndex", 1); // } else if (enable === false) { diff --git a/src/case/button/item.singleselect.icontext.js b/src/case/button/item.singleselect.icontext.js index c55de1e17..1a3d921c7 100644 --- a/src/case/button/item.singleselect.icontext.js +++ b/src/case/button/item.singleselect.icontext.js @@ -1,11 +1,11 @@ -import { IconTextItem, Single } from "@/base"; +import { IconTextItem, Single, SIZE_CONSANTS } from "@/base"; import { shortcut, extend, createWidget, Controller } from "@/core"; /** * Created by GUY on 2016/2/2. * - * @class BI.SingleSelectIconTextItem - * @extends BI.BasicButton + * @class SingleSelectIconTextItem + * @extends BasicButton */ @shortcut() export class SingleSelectIconTextItem extends Single { @@ -18,7 +18,7 @@ export class SingleSelectIconTextItem extends Single { tabIndex: 1, }, iconCls: "", - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, }); } diff --git a/src/case/button/item.singleselect.js b/src/case/button/item.singleselect.js index 9a66ef5f3..d86c87531 100644 --- a/src/case/button/item.singleselect.js +++ b/src/case/button/item.singleselect.js @@ -1,5 +1,5 @@ import { Label, BasicButton } from "@/base"; -import { shortcut, extend, createWidget } from "@/core"; +import { shortcut, extend, createWidget, SIZE_CONSANTS } from "@/core"; @shortcut() export class SingleSelectItem extends BasicButton { @@ -13,7 +13,7 @@ export class SingleSelectItem extends BasicButton { tabIndex: 1, }, textHgap: 10, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, textAlign: "left", }); } diff --git a/src/case/button/item.singleselect.radio.js b/src/case/button/item.singleselect.radio.js index cdee75636..331f0bf3f 100644 --- a/src/case/button/item.singleselect.radio.js +++ b/src/case/button/item.singleselect.radio.js @@ -1,4 +1,4 @@ -import { VerticalAdaptLayout, CenterAdaptLayout, shortcut, extend } from "@/core"; +import { VerticalAdaptLayout, CenterAdaptLayout, shortcut, extend, SIZE_CONSANTS } from "@/core"; import { Radio, Label, BasicButton } from "@/base"; /** @@ -17,7 +17,7 @@ export class SingleSelectRadioItem extends BasicButton { attributes: { tabIndex: 1, }, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, iconWrapperWidth: 16, textHgap: 10, }); @@ -35,16 +35,16 @@ export class SingleSelectRadioItem extends BasicButton { items: [ { type: Radio.xtype, - ref: (_ref) => { + ref: _ref => { this.radio = _ref; }, - }, + } ], }, { el: { type: Label.xtype, - ref: (_ref) => { + ref: _ref => { this.text = _ref; }, cls: "list-item-text", @@ -61,7 +61,7 @@ export class SingleSelectRadioItem extends BasicButton { value: o.value, py: o.py, }, - }, + } ], }; } diff --git a/src/case/button/node/node.icon.arrow.js b/src/case/button/node/node.icon.arrow.js index 575a8c1c0..6dc4ff88f 100644 --- a/src/case/button/node/node.icon.arrow.js +++ b/src/case/button/node/node.icon.arrow.js @@ -1,6 +1,6 @@ import { ArrowTreeGroupNodeCheckbox } from "../../checkbox"; import { IconLabel, Label, NodeButton } from "@/base"; -import { shortcut, extend, createWidget, Controller, isNotNull } from "@/core"; +import { shortcut, extend, createWidget, Controller, isNotNull, Events, LogicFactory, Direction } from "@/core"; /** * Created by User on 2016/3/31. @@ -63,8 +63,8 @@ export class IconArrowNode extends NodeButton { py: o.py, keyword: o.keyword, }); - this.checkbox.on(Controller.EVENT_CHANGE, (type) => { - if (type === BI.Events.CLICK) { + this.checkbox.on(Controller.EVENT_CHANGE, type => { + if (type === Events.CLICK) { if (this.checkbox.isSelected()) { this.triggerExpand(); } else { @@ -72,9 +72,9 @@ export class IconArrowNode extends NodeButton { } } }); - const type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left); - const items = BI.LogicFactory.createLogicItemsByDirection( - BI.Direction.Left, + const type = LogicFactory.createLogicTypeByDirection(Direction.Left); + const items = LogicFactory.createLogicItemsByDirection( + Direction.Left, { width: o.iconWrapperWidth, el: this.checkbox, @@ -90,7 +90,7 @@ export class IconArrowNode extends NodeButton { { element: this, }, - BI.LogicFactory.createLogic( + LogicFactory.createLogic( type, extend(o.logic, { items, diff --git a/src/case/button/node/node.plus.js b/src/case/button/node/node.plus.js index d8c632fce..5458502e4 100644 --- a/src/case/button/node/node.plus.js +++ b/src/case/button/node/node.plus.js @@ -1,5 +1,5 @@ import { TreeNodeCheckbox } from "../../checkbox"; -import { VerticalAdaptLayout, shortcut, extend, createWidget, Controller } from "@/core"; +import { VerticalAdaptLayout, shortcut, extend, createWidget, Controller, Events } from "@/core"; import { Label, NodeButton } from "@/base"; /** @@ -33,7 +33,7 @@ export class PlusGroupNode extends NodeButton { }); this.checkbox.on(Controller.EVENT_CHANGE, (...args) => { const [type] = args; - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { this.setSelected(this.isSelected()); } this.fireEvent(Controller.EVENT_CHANGE, args); @@ -47,7 +47,7 @@ export class PlusGroupNode extends NodeButton { { el: { type: Label.xtype, - ref: (_ref) => { + ref: _ref => { this.text = _ref; }, textAlign: "left", @@ -63,7 +63,7 @@ export class PlusGroupNode extends NodeButton { keyword: o.keyword, py: o.py, }, - }, + } ], }; } diff --git a/src/case/button/node/siwtcher.tree.node.js b/src/case/button/node/siwtcher.tree.node.js index 316340039..b0a8d8dae 100644 --- a/src/case/button/node/siwtcher.tree.node.js +++ b/src/case/button/node/siwtcher.tree.node.js @@ -1,5 +1,5 @@ import { IconLabel, NodeButton } from "@/base"; -import { shortcut, extend } from "@/core"; +import { shortcut, extend, STYLE_CONSTANTS } from "@/core"; @shortcut() export class TreeNodeSwitcher extends NodeButton { @@ -32,22 +32,22 @@ export class TreeNodeSwitcher extends NodeButton { const options = this.options; if (options.layer === 0 && options.isFirstNode && options.isLastNode) { // 只有一层,并且是第一个节点,并且是最后一个节点 - return BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" + return STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? ["tree-solid-collapse-icon-type1", "tree-solid-expand-icon-type1"] : ["tree-collapse-icon-type1", "tree-expand-icon-type1"]; } else if (options.layer === 0 && options.isFirstNode) { // 第一层,并且是第一个节点 - return BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" + return STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? ["tree-solid-collapse-icon-type1", "tree-solid-expand-icon-type1"] : ["tree-collapse-icon-type2", "tree-expand-icon-type2"]; } else if (options.isLastNode) { // 最后一个节点 - return BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" + return STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? ["tree-solid-collapse-icon-type1", "tree-solid-expand-icon-type1"] : ["tree-collapse-icon-type4", "tree-expand-icon-type4"]; } else { // 其他情况 - return BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" + return STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? ["tree-solid-collapse-icon-type1", "tree-solid-expand-icon-type1"] : ["tree-collapse-icon-type3", "tree-expand-icon-type3"]; } diff --git a/src/case/button/node/treenode.js b/src/case/button/node/treenode.js index b09cf5830..5e6a31d58 100644 --- a/src/case/button/node/treenode.js +++ b/src/case/button/node/treenode.js @@ -1,5 +1,5 @@ import { IconLabel, Label, NodeButton } from "@/base"; -import { shortcut, extend, VerticalAdaptLayout, Layout, isKey, compact } from "@/core"; +import { shortcut, extend, VerticalAdaptLayout, isKey, compact, SIZE_CONSANTS } from "@/core"; import { TreeNodeSwitcher } from "@/case"; @shortcut() @@ -39,8 +39,6 @@ export class BasicTreeNode extends NodeButton { isFirstNode, isLastNode, keyword, - iconWidth, - iconHeight, iconWrapperWidth, iconCls, switcherIcon, @@ -82,7 +80,7 @@ export class BasicTreeNode extends NodeButton { // width: height, // cls: this.getLineCls(), // }, - // lgap: layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2, // 偏移公式为每一层的偏移量为节点高度的一半 + // lgap: layer * SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2, // 偏移公式为每一层的偏移量为节点高度的一半 // width: "", // }; @@ -103,7 +101,7 @@ export class BasicTreeNode extends NodeButton { items: compact([ { el: checkbox, - lgap: layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2, // 偏移公式为每一层的偏移量为节点高度的一半 + lgap: layer * SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2, // 偏移公式为每一层的偏移量为节点高度的一半 width: iconWrapperWidth || height, }, icon, diff --git a/src/case/button/switch.js b/src/case/button/switch.js index f51939219..68a5c556a 100644 --- a/src/case/button/switch.js +++ b/src/case/button/switch.js @@ -1,11 +1,6 @@ -import { AbsoluteLayout, shortcut } from "@/core"; +import { AbsoluteLayout, shortcut, i18nText } from "@/core"; import { TextButton, Label, BasicButton } from "@/base"; - -/** - * Created by Windy on 2018/2/1. - */ - @shortcut() export class Switch extends BasicButton { static xtype = "bi.switch"; @@ -32,7 +27,7 @@ export class Switch extends BasicButton { return { type: AbsoluteLayout.xtype, - ref: (_ref) => { + ref: _ref => { this.layout = _ref; }, items: [ @@ -48,26 +43,26 @@ export class Switch extends BasicButton { }, { type: Label.xtype, - text: BI.i18nText("BI-Basic_Simple_Open"), + text: i18nText("BI-Basic_Simple_Open"), cls: "content-tip", left: 8, top: tgap - 2, invisible: !(o.showTip && o.selected), - ref: (_ref) => { + ref: _ref => { this.openTip = _ref; }, }, { type: Label.xtype, - text: BI.i18nText("BI-Basic_Simple_Close"), + text: i18nText("BI-Basic_Simple_Close"), cls: "content-tip", right: 8, top: tgap - 2, invisible: !(o.showTip && !o.selected), - ref: (_ref) => { + ref: _ref => { this.closeTip = _ref; }, - }, + } ], }; } diff --git a/src/case/button/treeitem/item.icon.treeleaf.js b/src/case/button/treeitem/item.icon.treeleaf.js index a4dd0d3b8..186dacd2d 100644 --- a/src/case/button/treeitem/item.icon.treeleaf.js +++ b/src/case/button/treeitem/item.icon.treeleaf.js @@ -1,4 +1,4 @@ -import { CenterAdaptLayout, shortcut, extend, createWidget } from "@/core"; +import { CenterAdaptLayout, shortcut, extend, createWidget, LogicFactory, Direction } from "@/core"; import { Icon, Label, BasicButton } from "@/base"; @shortcut() @@ -31,7 +31,7 @@ export class IconTreeLeafItem extends BasicButton { type: Icon.xtype, width: o.iconWidth, height: o.iconHeight, - }, + } ], }); @@ -47,9 +47,9 @@ export class IconTreeLeafItem extends BasicButton { py: o.py, keyword: o.keyword, }); - const type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left); - const items = BI.LogicFactory.createLogicItemsByDirection( - BI.Direction.Left, + const type = LogicFactory.createLogicTypeByDirection(Direction.Left); + const items = LogicFactory.createLogicItemsByDirection( + Direction.Left, { width: 16, el: icon, @@ -63,7 +63,7 @@ export class IconTreeLeafItem extends BasicButton { { element: this, }, - BI.LogicFactory.createLogic( + LogicFactory.createLogic( type, extend(o.logic, { items, diff --git a/src/case/button/treeitem/item.multilayer.icon.treeleaf.js b/src/case/button/treeitem/item.multilayer.icon.treeleaf.js index e9fac6ea5..cd2eb820d 100644 --- a/src/case/button/treeitem/item.multilayer.icon.treeleaf.js +++ b/src/case/button/treeitem/item.multilayer.icon.treeleaf.js @@ -1,11 +1,7 @@ import { IconTreeLeafItem } from "./item.icon.treeleaf"; -import { Layout, HorizontalAdaptLayout, shortcut, extend, createWidget, Controller, makeArray, count } from "@/core"; +import { Layout, HorizontalAdaptLayout, shortcut, extend, createWidget, Controller, makeArray, count, Events } from "@/core"; import { BasicButton } from "@/base"; -/** - * @class BI.MultiLayerIconTreeLeafItem - * @extends BI.BasicButton - */ @shortcut() export class MultiLayerIconTreeLeafItem extends BasicButton { static xtype = "bi.multilayer_icon_tree_leaf_item"; @@ -42,7 +38,7 @@ export class MultiLayerIconTreeLeafItem extends BasicButton { }); this.item.on(Controller.EVENT_CHANGE, (...args) => { const [type] = args; - if (type === BI.Events.CLICK) { + if (type === Events.CLICK) { // 本身实现click功能 return; } diff --git a/src/case/button/treeitem/treeitem.js b/src/case/button/treeitem/treeitem.js index 297cb15a8..03bb933c1 100644 --- a/src/case/button/treeitem/treeitem.js +++ b/src/case/button/treeitem/treeitem.js @@ -1,4 +1,4 @@ -import { shortcut, extend, VerticalAdaptLayout, Layout, compact, isKey } from "@/core"; +import { shortcut, extend, VerticalAdaptLayout, Layout, compact, isKey, SIZE_CONSANTS, STYLE_CONSTANTS } from "@/core"; import { NodeButton, Label, IconLabel } from "@/base"; @shortcut() @@ -34,16 +34,11 @@ export class BasicTreeItem extends NodeButton { textRgap, text, value, - isFirstNode, - isLastNode, py, keyword, - iconWidth, - iconHeight, iconCls, } = this.options; - const indent = { el: { type: Layout.xtype, @@ -51,7 +46,7 @@ export class BasicTreeItem extends NodeButton { width: height, cls: this.getLineCls(), }, - lgap: layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2, // 偏移公式为每一层的偏移量为节点高度的一半 + lgap: layer * SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2, // 偏移公式为每一层的偏移量为节点高度的一半 width: "", }; @@ -101,11 +96,11 @@ export class BasicTreeItem extends NodeButton { if (options.layer === 0 && options.isFirstNode && options.isLastNode) { return ""; } else if (options.layer === 0 && options.isFirstNode) { - return BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-first-solid-line-conn-background" : "first-line-conn-background"; + return STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-first-solid-line-conn-background" : "first-line-conn-background"; } else if (options.isLastNode) { - return BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-last-solid-line-conn-background" : "last-line-conn-background"; + return STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-last-solid-line-conn-background" : "last-line-conn-background"; } else { - return BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-mid-solid-line-conn-background" : "mid-line-conn-background"; + return STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-mid-solid-line-conn-background" : "mid-line-conn-background"; } } diff --git a/src/case/calendar/calendar.date.item.js b/src/case/calendar/calendar.date.item.js index f5ea79b1d..15244f315 100644 --- a/src/case/calendar/calendar.date.item.js +++ b/src/case/calendar/calendar.date.item.js @@ -1,4 +1,4 @@ -import { AbsoluteLayout, shortcut } from "@/core"; +import { AbsoluteLayout, shortcut, SIZE_CONSANTS } from "@/core"; import { TextItem, BasicButton } from "@/base"; /** @@ -9,7 +9,7 @@ export class CalendarDateItem extends BasicButton { props() { return { baseCls: "bi-calendar-date-item", - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 8, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 8, }; } diff --git a/src/case/calendar/calendar.js b/src/case/calendar/calendar.js index 82d97b039..0821dc2b3 100644 --- a/src/case/calendar/calendar.js +++ b/src/case/calendar/calendar.js @@ -19,7 +19,8 @@ import { getShortDayName, getOffsetDate, isNotEmptyString, - parseInt + parseInt, + SIZE_CONSANTS } from "@/core"; import { CalendarDateItem } from "./calendar.date.item"; @@ -140,7 +141,7 @@ export class Calendar extends Widget { const items = map(this._getWeekLabel(), (i, value) => { return { type: Label.xtype, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, text: value, }; }); @@ -168,7 +169,7 @@ export class Calendar extends Widget { columns: 7, rows: 6, columnSize: [1 / 7, 1 / 7, 1 / 7, 1 / 7, 1 / 7, 1 / 7, 1 / 7], - rowSize: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 8, + rowSize: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 8, }) ) ], diff --git a/src/case/calendar/calendar.year.js b/src/case/calendar/calendar.year.js index 85321b145..7da473113 100644 --- a/src/case/calendar/calendar.year.js +++ b/src/case/calendar/calendar.year.js @@ -16,7 +16,8 @@ import { Controller, makeArray, map, - isNotEmptyString + isNotEmptyString, + SIZE_CONSANTS } from "@/core"; /** @@ -105,7 +106,7 @@ export class YearCalendar extends Widget { columns: 2, rows: 6, columnSize: [1 / 2, 1 / 2], - rowSize: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + rowSize: SIZE_CONSANTS.LIST_ITEM_HEIGHT, }) ), { @@ -180,7 +181,7 @@ export class YearCalendar extends Widget { whiteSpace: "normal", once: false, forceSelected: true, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, width: 45, value: td.text, disabled: td.disabled, diff --git a/src/case/checkbox/check.checkingmarknode.js b/src/case/checkbox/check.checkingmarknode.js index 159988ed0..eafb4c666 100644 --- a/src/case/checkbox/check.checkingmarknode.js +++ b/src/case/checkbox/check.checkingmarknode.js @@ -3,8 +3,8 @@ import { IconButton } from "@/base"; /** * 十字型的树节点 - * @class BI.CheckingMarkNode - * @extends BI.IconButton + * @class CheckingMarkNode + * @extends IconButton */ @shortcut() diff --git a/src/case/checkbox/check.first.treenode.js b/src/case/checkbox/check.first.treenode.js index 0f7342a25..0efaab374 100644 --- a/src/case/checkbox/check.first.treenode.js +++ b/src/case/checkbox/check.first.treenode.js @@ -1,10 +1,10 @@ -import { extend, shortcut } from "@/core"; +import { extend, shortcut, STYLE_CONSTANTS } from "@/core"; import { IconButton } from "@/base"; /** * 十字型的树节点 - * @class BI.FirstTreeNodeCheckbox - * @extends BI.IconButton + * @class FirstTreeNodeCheckbox + * @extends IconButton */ @shortcut() @@ -14,7 +14,7 @@ export class FirstTreeNodeCheckbox extends IconButton { _defaultConfig() { return extend(super._defaultConfig(...arguments), { extraCls: - BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" + STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-solid-collapse-icon-type2" : "tree-collapse-icon-type2", iconWidth: 24, @@ -23,11 +23,11 @@ export class FirstTreeNodeCheckbox extends IconButton { } getLineCls() { - switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) { - case "solid": - return "tree-solid-expand-icon-type2"; - default: - return "tree-expand-icon-type2"; + switch (STYLE_CONSTANTS.LINK_LINE_TYPE) { + case "solid": + return "tree-solid-expand-icon-type2"; + default: + return "tree-expand-icon-type2"; } } diff --git a/src/case/checkbox/check.last.treenode.js b/src/case/checkbox/check.last.treenode.js index 14875f550..37008e75a 100644 --- a/src/case/checkbox/check.last.treenode.js +++ b/src/case/checkbox/check.last.treenode.js @@ -1,10 +1,10 @@ -import { extend, shortcut } from "@/core"; +import { extend, shortcut, STYLE_CONSTANTS } from "@/core"; import { IconButton } from "@/base"; /** * 十字型的树节点 - * @class BI.LastTreeNodeCheckbox - * @extends BI.IconButton + * @class LastTreeNodeCheckbox + * @extends IconButton */ @shortcut() @@ -14,7 +14,7 @@ export class LastTreeNodeCheckbox extends IconButton { _defaultConfig() { return extend(super._defaultConfig(...arguments), { extraCls: - BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" + STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-solid-collapse-icon-type4" : "tree-collapse-icon-type4", iconWidth: 24, @@ -23,11 +23,11 @@ export class LastTreeNodeCheckbox extends IconButton { } getLineCls() { - switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) { - case "solid": - return "tree-solid-expand-icon-type4"; - default: - return "tree-expand-icon-type4"; + switch (STYLE_CONSTANTS.LINK_LINE_TYPE) { + case "solid": + return "tree-solid-expand-icon-type4"; + default: + return "tree-expand-icon-type4"; } } diff --git a/src/case/checkbox/check.mid.treenode.js b/src/case/checkbox/check.mid.treenode.js index e670d87e0..508024066 100644 --- a/src/case/checkbox/check.mid.treenode.js +++ b/src/case/checkbox/check.mid.treenode.js @@ -1,10 +1,10 @@ -import { extend, shortcut } from "@/core"; +import { extend, shortcut, STYLE_CONSTANTS } from "@/core"; import { IconButton } from "@/base"; /** * 十字型的树节点 - * @class BI.MidTreeNodeCheckbox - * @extends BI.IconButton + * @class MidTreeNodeCheckbox + * @extends IconButton */ @shortcut() @@ -14,7 +14,7 @@ export class MidTreeNodeCheckbox extends IconButton { _defaultConfig() { return extend(super._defaultConfig(...arguments), { extraCls: - BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" + STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-solid-collapse-icon-type3" : "tree-collapse-icon-type3", iconWidth: 24, @@ -23,11 +23,11 @@ export class MidTreeNodeCheckbox extends IconButton { } getLineCls() { - switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) { - case "solid": - return "tree-solid-expand-icon-type3"; - default: - return "tree-expand-icon-type3"; + switch (STYLE_CONSTANTS.LINK_LINE_TYPE) { + case "solid": + return "tree-solid-expand-icon-type3"; + default: + return "tree-expand-icon-type3"; } } diff --git a/src/case/checkbox/check.treenode.js b/src/case/checkbox/check.treenode.js index 6dec8d452..d746695d6 100644 --- a/src/case/checkbox/check.treenode.js +++ b/src/case/checkbox/check.treenode.js @@ -1,10 +1,10 @@ -import { extend, shortcut } from "@/core"; +import { extend, shortcut, STYLE_CONSTANTS } from "@/core"; import { IconButton } from "@/base"; /** * 十字型的树节点 - * @class BI.TreeNodeCheckbox - * @extends BI.IconButton + * @class TreeNodeCheckbox + * @extends IconButton */ @shortcut() @@ -14,7 +14,7 @@ export class TreeNodeCheckbox extends IconButton { _defaultConfig() { return extend(super._defaultConfig(...arguments), { extraCls: - BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" + STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-solid-collapse-icon-type1" : "tree-collapse-icon-type1", iconWidth: 24, @@ -23,11 +23,11 @@ export class TreeNodeCheckbox extends IconButton { } getLineCls() { - switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) { - case "solid": - return "tree-solid-expand-icon-type1"; - default: - return "tree-expand-icon-type1"; + switch (STYLE_CONSTANTS.LINK_LINE_TYPE) { + case "solid": + return "tree-solid-expand-icon-type1"; + default: + return "tree-expand-icon-type1"; } } diff --git a/src/case/colorchooser/colorchooser.popup.hex.js b/src/case/colorchooser/colorchooser.popup.hex.js index 7d0f5b02a..86f4f188e 100644 --- a/src/case/colorchooser/colorchooser.popup.hex.js +++ b/src/case/colorchooser/colorchooser.popup.hex.js @@ -14,7 +14,9 @@ import { filter, isArray, Cache, - Queue + Queue, + i18nText, + emptyFn } from "@/core"; import { Label, Combo, TextItem } from "@/base"; import { PopupPanel } from "../layer"; @@ -37,7 +39,7 @@ export class HexColorChooserPopup extends Widget { props = { baseCls: "bi-color-chooser-popup", width: 300, - recommendColorsGetter: BI.emptyFn, // 推荐色获取接口 + recommendColorsGetter: emptyFn, // 推荐色获取接口 simple: false, // 简单模式, popup中没有自动和透明 }; @@ -108,7 +110,7 @@ export class HexColorChooserPopup extends Widget { items: [ { type: Label.xtype, - text: BI.i18nText("BI-Basic_Recommend_Color"), + text: i18nText("BI-Basic_Recommend_Color"), textAlign: "left", height: 24, }, @@ -195,12 +197,12 @@ export class HexColorChooserPopup extends Widget { textAlign: "center", height: 24, textLgap: 10, - text: `${BI.i18nText("BI-Basic_More")}...`, + text: `${i18nText("BI-Basic_More")}...`, }, popup: { type: PopupPanel.xtype, - buttons: [BI.i18nText("BI-Basic_Cancel"), BI.i18nText("BI-Basic_Save")], - title: BI.i18nText("BI-Custom_Color"), + buttons: [i18nText("BI-Basic_Cancel"), i18nText("BI-Basic_Save")], + title: i18nText("BI-Custom_Color"), el: { type: CustomColorChooser.xtype, value: o.value, @@ -216,25 +218,25 @@ export class HexColorChooserPopup extends Widget { minWidth: 227, listeners: [ { - eventName: BI.PopupPanel.EVENT_CLICK_TOOLBAR_BUTTON, + eventName: PopupPanel.EVENT_CLICK_TOOLBAR_BUTTON, action: (index, ...args) => { switch (index) { - case 0: - this.more.hideView(); - break; - case 1: { - const color = this.customColorChooser.getValue(); - // farbtastic选择器没有透明和自动选项,点击保存不应该设置透明 - if (isNotEmptyString(color)) { - this.setValue(color); - this._dealStoreColors(); + case 0: + this.more.hideView(); + break; + case 1: { + const color = this.customColorChooser.getValue(); + // farbtastic选择器没有透明和自动选项,点击保存不应该设置透明 + if (isNotEmptyString(color)) { + this.setValue(color); + this._dealStoreColors(); + } + this.more.hideView(); + this.fireEvent(ColorChooserPopup.EVENT_CHANGE, index, ...args); + break; } - this.more.hideView(); - this.fireEvent(ColorChooserPopup.EVENT_CHANGE, index, ...args); - break; - } - default: - break; + default: + break; } }, } diff --git a/src/case/colorchooser/colorchooser.popup.js b/src/case/colorchooser/colorchooser.popup.js index 30ffe11fc..635cc192c 100644 --- a/src/case/colorchooser/colorchooser.popup.js +++ b/src/case/colorchooser/colorchooser.popup.js @@ -17,7 +17,8 @@ import { count, filter, isNotEmptyString, - isArray + isArray, + i18nText } from "@/core"; import { ColorPickerEditor, ColorPicker } from "./colorpicker"; @@ -91,8 +92,8 @@ export class ColorChooserPopup extends Widget { const panel = createWidget({ type: PopupPanel.xtype, - buttons: [BI.i18nText("BI-Basic_Cancel"), BI.i18nText("BI-Basic_Save")], - title: BI.i18nText("BI-Custom_Color"), + buttons: [i18nText("BI-Basic_Cancel"), i18nText("BI-Basic_Save")], + title: i18nText("BI-Custom_Color"), el: this.customColorChooser, stopPropagation: false, bgap: -1, @@ -113,7 +114,7 @@ export class ColorChooserPopup extends Widget { textAlign: "center", height: 24, textLgap: 10, - text: `${BI.i18nText("BI-Basic_More")}...`, + text: `${i18nText("BI-Basic_More")}...`, }, popup: panel, }); @@ -121,7 +122,7 @@ export class ColorChooserPopup extends Widget { this.more.on(Combo.EVENT_AFTER_POPUPVIEW, () => { this.customColorChooser.setValue(this.getValue()); }); - panel.on(BI.PopupPanel.EVENT_CLICK_TOOLBAR_BUTTON, (index, ...args) => { + panel.on(PopupPanel.EVENT_CLICK_TOOLBAR_BUTTON, (index, ...args) => { switch (index) { case 0: this.more.hideView(); @@ -154,7 +155,7 @@ export class ColorChooserPopup extends Widget { left: 10, right: 10, top: 5, - }, + } ], }, height: 29, @@ -169,7 +170,7 @@ export class ColorChooserPopup extends Widget { right: 10, top: 5, bottom: 5, - }, + } ], }, height: 60, @@ -177,7 +178,7 @@ export class ColorChooserPopup extends Widget { { el: this.more, height: 24, - }, + } ], }, left: 0, @@ -198,7 +199,7 @@ export class ColorChooserPopup extends Widget { right: 0, top: 0, bottom: 0, - }, + } ], }; } @@ -234,7 +235,7 @@ export class ColorChooserPopup extends Widget { value: color, }; }); - count(colors.length, 8, (i) => { + count(colors.length, 8, i => { items.push({ value: "", disabled: true, diff --git a/src/case/colorchooser/colorchooser.trigger.js b/src/case/colorchooser/colorchooser.trigger.js index 8412362d0..9f44b71e8 100644 --- a/src/case/colorchooser/colorchooser.trigger.js +++ b/src/case/colorchooser/colorchooser.trigger.js @@ -1,4 +1,4 @@ -import { Layout, AbsoluteLayout, shortcut, extend, createWidget, isNotNull } from "@/core"; +import { Layout, AbsoluteLayout, shortcut, extend, createWidget, isNotNull, isIE9Below } from "@/core"; import { IconButton, Trigger } from "@/base"; /** @@ -29,7 +29,7 @@ export class ColorChooserTrigger extends Trigger { super._init(...arguments); this.colorContainer = createWidget({ type: Layout.xtype, - cls: `color-chooser-trigger-content${BI.isIE9Below && BI.isIE9Below() ? " hack" : ""}`, + cls: `color-chooser-trigger-content${isIE9Below && isIE9Below() ? " hack" : ""}`, }); const down = createWidget({ diff --git a/src/case/colorchooser/colorchooser.trigger.long.js b/src/case/colorchooser/colorchooser.trigger.long.js index 5f80f9979..73c9e2a88 100644 --- a/src/case/colorchooser/colorchooser.trigger.long.js +++ b/src/case/colorchooser/colorchooser.trigger.long.js @@ -1,4 +1,4 @@ -import { HTapeLayout, AbsoluteLayout, shortcut, extend, createWidget } from "@/core"; +import { HTapeLayout, AbsoluteLayout, shortcut, extend, createWidget, i18nText } from "@/core"; import { IconChangeButton } from "../button"; import { Label, IconButton, Trigger } from "@/base"; @@ -52,7 +52,7 @@ export class LongColorChooserTrigger extends Trigger { textAlign: "left", hgap: 5, height: 18, - text: BI.i18nText("BI-Basic_Auto"), + text: i18nText("BI-Basic_Auto"), }, } ], @@ -96,13 +96,13 @@ export class LongColorChooserTrigger extends Trigger { this.changeIcon.setVisible(true); this.label.setVisible(true); this.changeIcon.setIcon("auto-color-icon"); - this.label.setText(BI.i18nText("BI-Basic_Auto")); + this.label.setText(i18nText("BI-Basic_Auto")); } else if (color === "transparent") { this.colorContainer.element.css("background-color", ""); this.changeIcon.setVisible(true); this.label.setVisible(true); this.changeIcon.setIcon("trans-color-icon"); - this.label.setText(BI.i18nText("BI-Transparent_Color")); + this.label.setText(i18nText("BI-Transparent_Color")); } else { this.colorContainer.element.css({ "background-color": color }); this.changeIcon.setVisible(false); diff --git a/src/case/colorchooser/colorpicker/editor.colorpicker.hex.js b/src/case/colorchooser/colorpicker/editor.colorpicker.hex.js index 8e8a480ec..f512888be 100644 --- a/src/case/colorchooser/colorpicker/editor.colorpicker.hex.js +++ b/src/case/colorchooser/colorpicker/editor.colorpicker.hex.js @@ -13,11 +13,13 @@ import { extend, isEmptyString, isNull, - DOM + DOM, + i18nText } from "@/core"; import { ColorChooserShowButton } from "./button"; import { ColorPickerEditor } from "./editor.colorpicker"; import { SmallTextEditor } from "@/widget/editor/editor.text.small.js"; +import { TextEditor } from "@/widget/editor/editor.text"; const RGB_WIDTH = 32, HEX_WIDTH = 70, @@ -55,14 +57,14 @@ export class HexColorPickerEditor extends Widget { type: SmallTextEditor.xtype, cls: "color-picker-editor-input bi-border-radius", validationChecker: checker, - errorText: BI.i18nText("BI-Color_Picker_Error_Text"), + errorText: i18nText("BI-Color_Picker_Error_Text"), allowBlank: true, value: 255, width: RGB_WIDTH, height: 24, listeners: [ { - eventName: BI.TextEditor.EVENT_CHANGE, + eventName: TextEditor.EVENT_CHANGE, action: () => { this._checkEditors(); if ( @@ -96,8 +98,8 @@ export class HexColorPickerEditor extends Widget { type: ColorChooserShowButton.xtype, cls: "trans-color-icon", height: 22, - title: BI.i18nText("BI-Transparent_Color"), - text: BI.i18nText("BI-Transparent_Color"), + title: i18nText("BI-Transparent_Color"), + text: i18nText("BI-Transparent_Color"), listeners: [ { eventName: ColorChooserShowButton.EVENT_CHANGE, @@ -116,8 +118,8 @@ export class HexColorPickerEditor extends Widget { type: ColorChooserShowButton.xtype, cls: "auto-color-icon", height: 22, - title: BI.i18nText("BI-Basic_Auto"), - text: BI.i18nText("BI-Basic_Auto"), + title: i18nText("BI-Basic_Auto"), + text: i18nText("BI-Basic_Auto"), listeners: [ { eventName: ColorChooserShowButton.EVENT_CHANGE, @@ -167,7 +169,7 @@ export class HexColorPickerEditor extends Widget { cls: "color-picker-editor-input bi-border-radius", validationChecker: this._hexChecker, allowBlank: true, - errorText: BI.i18nText("BI-Color_Picker_Error_Text_Hex"), + errorText: i18nText("BI-Color_Picker_Error_Text_Hex"), width: HEX_WIDTH, height: 24, listeners: [ diff --git a/src/case/colorchooser/colorpicker/editor.colorpicker.hex.simple.js b/src/case/colorchooser/colorpicker/editor.colorpicker.hex.simple.js index 8f12b325e..3c13b1aba 100644 --- a/src/case/colorchooser/colorpicker/editor.colorpicker.hex.simple.js +++ b/src/case/colorchooser/colorpicker/editor.colorpicker.hex.simple.js @@ -13,11 +13,13 @@ import { map, isEmptyString, range, - DOM + DOM, + i18nText } from "@/core"; import { SimpleColorPickerEditor } from "./editor.colorpicker.simple"; import { ColorPickerEditor } from "./editor.colorpicker"; import { SmallTextEditor } from "@/widget/editor/editor.text.small.js"; +import { TextEditor } from "@/widget/editor/editor.text"; const RGB_WIDTH = 32, HEX_WIDTH = 70, @@ -46,20 +48,20 @@ export class SimpleHexColorPickerEditor extends Widget { height: 20, }); - const checker = (v) => isNumeric(v) && (v | 0) >= 0 && (v | 0) <= 255; + const checker = v => isNumeric(v) && (v | 0) >= 0 && (v | 0) <= 255; const Ws = map(range(0, 3), () => { return { type: SmallTextEditor.xtype, cls: "color-picker-editor-input bi-border-radius", validationChecker: checker, - errorText: BI.i18nText("BI-Color_Picker_Error_Text"), + errorText: i18nText("BI-Color_Picker_Error_Text"), allowBlank: true, value: 255, width: RGB_WIDTH, height: 24, listeners: [ { - eventName: BI.TextEditor.EVENT_CHANGE, + eventName: TextEditor.EVENT_CHANGE, action: () => { this._checkEditors(); if (this.R.isValid() && this.G.isValid() && this.B.isValid()) { @@ -67,7 +69,7 @@ export class SimpleHexColorPickerEditor extends Widget { this.fireEvent(SimpleColorPickerEditor.EVENT_CHANGE); } }, - }, + } ], }; }); @@ -88,7 +90,7 @@ export class SimpleHexColorPickerEditor extends Widget { cls: "color-picker-editor-display bi-card bi-border", height: 22, width: 22, - ref: (_ref) => { + ref: _ref => { this.colorShow = _ref; }, }, @@ -101,13 +103,13 @@ export class SimpleHexColorPickerEditor extends Widget { }, { type: SmallTextEditor.xtype, - ref: (_ref) => { + ref: _ref => { this.hexEditor = _ref; }, cls: "color-picker-editor-input bi-border-radius", validationChecker: this._hexChecker, allowBlank: true, - errorText: BI.i18nText("BI-Color_Picker_Error_Text_Hex"), + errorText: i18nText("BI-Color_Picker_Error_Text_Hex"), width: HEX_WIDTH, height: 24, listeners: [ @@ -124,13 +126,13 @@ export class SimpleHexColorPickerEditor extends Widget { this.fireEvent(ColorPickerEditor.EVENT_CHANGE); } }, - }, + } ], }, RGB[0], { el: extend(Ws[0], { - ref: (_ref) => { + ref: _ref => { this.R = _ref; }, }), @@ -139,7 +141,7 @@ export class SimpleHexColorPickerEditor extends Widget { RGB[1], { el: extend(Ws[1], { - ref: (_ref) => { + ref: _ref => { this.G = _ref; }, }), @@ -148,16 +150,16 @@ export class SimpleHexColorPickerEditor extends Widget { RGB[2], { el: extend(Ws[2], { - ref: (_ref) => { + ref: _ref => { this.B = _ref; }, }), rgap: -5, width: RGB_WIDTH, - }, + } ], }, - }, + } ], }; } diff --git a/src/case/colorchooser/colorpicker/editor.colorpicker.js b/src/case/colorchooser/colorpicker/editor.colorpicker.js index 9f05660f3..34898154e 100644 --- a/src/case/colorchooser/colorpicker/editor.colorpicker.js +++ b/src/case/colorchooser/colorpicker/editor.colorpicker.js @@ -12,10 +12,12 @@ import { isEmptyString, isNumeric, isNull, - DOM + DOM, + i18nText } from "@/core"; import { Label, IconButton } from "@/base"; import { SmallTextEditor } from "@/widget/editor/editor.text.small.js"; +import { TextEditor } from "@/widget/editor/editor.text"; const RGB_WIDTH = 32; @@ -58,19 +60,19 @@ export class ColorPickerEditor extends Widget { }) ); - const checker = (v) => isNumeric(v) && (v | 0) >= 0 && (v | 0) <= 255; + const checker = v => isNumeric(v) && (v | 0) >= 0 && (v | 0) <= 255; const Ws = createWidgets([{}, {}, {}], { type: SmallTextEditor.xtype, cls: "color-picker-editor-input bi-border-radius", validationChecker: checker, - errorText: BI.i18nText("BI-Color_Picker_Error_Text"), + errorText: i18nText("BI-Color_Picker_Error_Text"), allowBlank: true, value: 255, width: RGB_WIDTH, height: 20, }); each(Ws, (i, w) => { - w.on(BI.TextEditor.EVENT_CHANGE, () => { + w.on(TextEditor.EVENT_CHANGE, () => { this._checkEditors(); if (checker(this.storeValue.r) && checker(this.storeValue.g) && checker(this.storeValue.b)) { this.colorShow.element.css("background-color", this.getValue()); @@ -89,7 +91,7 @@ export class ColorPickerEditor extends Widget { height: 16, iconWidth: 16, iconHeight: 16, - title: BI.i18nText("BI-Basic_Auto"), + title: i18nText("BI-Basic_Auto"), }); this.none.on(IconButton.EVENT_CHANGE, () => { const value = this.getValue(); @@ -104,7 +106,7 @@ export class ColorPickerEditor extends Widget { height: 16, iconWidth: 16, iconHeight: 16, - title: BI.i18nText("BI-Transparent_Color"), + title: i18nText("BI-Transparent_Color"), }); this.transparent.on(IconButton.EVENT_CHANGE, () => { const value = this.getValue(); @@ -157,14 +159,14 @@ export class ColorPickerEditor extends Widget { el: this.none, width: 16, lgap: 5, - }, + } ], }, left: 10, right: 10, top: 0, bottom: 0, - }, + } ], }); } diff --git a/src/case/colorchooser/colorpicker/editor.colorpicker.simple.js b/src/case/colorchooser/colorpicker/editor.colorpicker.simple.js index d64c771bc..70f06d96e 100644 --- a/src/case/colorchooser/colorpicker/editor.colorpicker.simple.js +++ b/src/case/colorchooser/colorpicker/editor.colorpicker.simple.js @@ -11,10 +11,12 @@ import { createWidgets, each, isEmptyString, - DOM + DOM, + i18nText } from "@/core"; import { Label } from "@/base"; import { SmallTextEditor } from "@/widget/editor/editor.text.small.js"; +import { TextEditor } from "@/widget/editor/editor.text"; const RGB_WIDTH = 32; @@ -56,19 +58,19 @@ export class SimpleColorPickerEditor extends Widget { }) ); - const checker = (v) => isNumeric(v) && (v | 0) >= 0 && (v | 0) <= 255; + const checker = v => isNumeric(v) && (v | 0) >= 0 && (v | 0) <= 255; const Ws = createWidgets([{}, {}, {}], { type: SmallTextEditor.xtype, cls: "color-picker-editor-input bi-border-radius", validationChecker: checker, - errorText: BI.i18nText("BI-Color_Picker_Error_Text"), + errorText: i18nText("BI-Color_Picker_Error_Text"), allowBlank: true, value: 255, width: RGB_WIDTH, height: 20, }); each(Ws, (i, w) => { - w.on(BI.TextEditor.EVENT_CHANGE, () => { + w.on(TextEditor.EVENT_CHANGE, () => { this._checkEditors(); if (this.R.isValid() && this.G.isValid() && this.B.isValid()) { this.colorShow.element.css("background-color", this.getValue()); @@ -113,7 +115,7 @@ export class SimpleColorPickerEditor extends Widget { { el: this.B, width: RGB_WIDTH, - }, + } ], }); } diff --git a/src/case/combo/bubblecombo/popup.bubble.js b/src/case/combo/bubblecombo/popup.bubble.js index aceb1729d..aa94b0d29 100644 --- a/src/case/combo/bubblecombo/popup.bubble.js +++ b/src/case/combo/bubblecombo/popup.bubble.js @@ -1,10 +1,10 @@ -import { shortcut, extend } from "@/core"; +import { shortcut, extend, i18nText, each, isWidget, createWidget } from "@/core"; import { PopupView } from "@/base/layer/layer.popup"; import { Label } from "@/base/single/label/label"; @shortcut() export class BubblePopupView extends PopupView { - static xtype = "bi.text_bubble_bar_popup_view"; + static xtype = "bi.bubble_popup_view"; static EVENT_CLICK_TOOLBAR_BUTTON = "EVENT_CLICK_TOOLBAR_BUTTON"; static EVENT_CHANGE = "EVENT_CLICK_TOOLBAR_BUTTON"; @@ -26,7 +26,7 @@ export class BubblePopupView extends PopupView { text: o.text, whiteSpace: "normal", textAlign: "left", - ref: (_ref) => { + ref: _ref => { this.text = _ref; }, }; @@ -36,3 +36,112 @@ export class BubblePopupView extends PopupView { this.text.setText(v || this.options.text); } } + +@shortcut() +export class BubblePopupBarView extends BubblePopupView { + static xtype = "bi.bubble_bar_popup_view"; + + static EVENT_CLICK_TOOLBAR_BUTTON = "EVENT_CLICK_TOOLBAR_BUTTON"; + + _defaultConfig () { + return extend(super._defaultConfig(...arguments), { + extraCls: "bi-bubble-bar-popup-view", + buttons: [{ + value: false, + text: i18nText("BI-Basic_Cancel"), + level: "ignore", + }, { + text: i18nText(i18nText("BI-Basic_OK")), + value: true, + }], + innerVgap: 16, + innerHgap: 16, + }); + } + + _createToolBar () { + const o = this.options; + + const items = []; + each(o.buttons, (i, buttonOpt) => { + if (isWidget(buttonOpt)) { + items.push({ + el: buttonOpt, + lgap: 12, + }); + } else { + items.push({ + el: extend({ + type: "bi.button", + height: 24, + handler: v => { + this.fireEvent(BubblePopupBarView.EVENT_CLICK_TOOLBAR_BUTTON, v); + }, + }, buttonOpt), + lgap: 12, + }); + } + }); + + return createWidget({ + type: "bi.right_vertical_adapt", + innerVgap: o.innerVgap, + innerHgap: o.innerHgap, + items, + }); + } + + _createContent () { + return this.options.el; + } + + _createView () { + const o = this.options; + + const view = createWidget({ + type: "bi.vertical", + items: [this._createContent()], + cls: "bar-popup-container", + hgap: o.innerHgap, + tgap: o.innerVgap, + }); + + view.element.css("min-height", o.minHeight); + + return view; + } +} + +@shortcut() +export class TextBubblePopupBarView extends BubblePopupBarView { + static xtype = "bi.text_bubble_bar_popup_view"; + + static EVENT_CHANGE = "EVENT_CLICK_TOOLBAR_BUTTON"; + + _defaultConfig () { + const config = super._defaultConfig(...arguments); + + return extend(config, { + baseCls: `${config.baseCls} bi-text-bubble-bar-popup-view`, + text: "", + }); + } + + _createContent () { + const o = this.options; + + return { + type: "bi.label", + text: o.text, + whiteSpace: "normal", + textAlign: "left", + ref: _ref => { + this.text = _ref; + }, + }; + } + + populate (v) { + this.text.setText(v || this.options.text); + } +} diff --git a/src/case/combo/searchtextvaluecombo/trigger.searchtextvalue.js b/src/case/combo/searchtextvaluecombo/trigger.searchtextvalue.js index 96dfd15ec..4cd7dfc6e 100644 --- a/src/case/combo/searchtextvaluecombo/trigger.searchtextvalue.js +++ b/src/case/combo/searchtextvaluecombo/trigger.searchtextvalue.js @@ -1,4 +1,4 @@ -import { HorizontalFillLayout, shortcut, find, i18nText, isNotEmptyString, VerticalAdaptLayout } from "@/core"; +import { HorizontalFillLayout, shortcut, find, i18nText, isNotEmptyString, VerticalAdaptLayout, Func } from "@/core"; import { SearchTextValueComboPopup } from "./popup.searchtextvalue"; import { ButtonGroup, Trigger, Searcher, IconButton } from "@/base"; import { TriggerIconButton } from "../../button"; @@ -69,7 +69,7 @@ export class SearchTextValueTrigger extends Trigger { }, onSearch(obj, callback) { const keyword = obj.keyword; - const finding = BI.Func.getSearchResult(o.items, keyword); + const finding = Func.getSearchResult(o.items, keyword); const matched = finding.match, find = finding.find; callback(matched, find); diff --git a/src/case/layer/layer.multipopup.js b/src/case/layer/layer.multipopup.js index cf0e2a5a5..1808d1bf7 100644 --- a/src/case/layer/layer.multipopup.js +++ b/src/case/layer/layer.multipopup.js @@ -1,10 +1,10 @@ import { ButtonGroup, TextButton, PopupView } from "@/base"; -import { CenterLayout, shortcut, extend, i18nText, each, createWidget, createItems } from "@/core"; +import { CenterLayout, shortcut, extend, i18nText, each, createWidget, createItems, SIZE_CONSANTS } from "@/core"; /** * 下拉框弹出层的多选版本,toolbar带有若干按钮, zIndex在1000w - * @class BI.MultiPopupView - * @extends BI.Widget + * @class MultiPopupView + * @extends Widget */ @shortcut() @@ -38,7 +38,7 @@ export class MultiPopupView extends PopupView { this.buttongroup = createWidget({ type: ButtonGroup.xtype, cls: "list-view-toolbar bi-high-light bi-split-top", - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, items: createItems(text, { type: TextButton.xtype, once: false, diff --git a/src/case/layer/layer.panel.js b/src/case/layer/layer.panel.js index 386186025..0b4218684 100644 --- a/src/case/layer/layer.panel.js +++ b/src/case/layer/layer.panel.js @@ -4,8 +4,8 @@ import { MultiPopupView } from "./layer.multipopup"; /** * 可以理解为MultiPopupView和Panel两个面板的结合体 - * @class BI.PopupPanel - * @extends BI.MultiPopupView + * @class PopupPanel + * @extends MultiPopupView */ @shortcut() diff --git a/src/case/layer/pane.list.js b/src/case/layer/pane.list.js index d70eaebc3..a34ff3c41 100644 --- a/src/case/layer/pane.list.js +++ b/src/case/layer/pane.list.js @@ -24,8 +24,8 @@ import { Pane, ButtonGroup } from "@/base"; * list面板 * * Created by GUY on 2015/10/30. - * @class BI.ListPane - * @extends BI.Pane + * @class ListPane + * @extends Pane */ @shortcut() diff --git a/src/case/pager/pager.all.count.js b/src/case/pager/pager.all.count.js index 05a6f1ac4..3478902ff 100644 --- a/src/case/pager/pager.all.count.js +++ b/src/case/pager/pager.all.count.js @@ -10,7 +10,8 @@ import { createWidget, parseInt, HorizontalAlign, - isNotEmptyObject + isNotEmptyObject, + i18nText } from "@/core"; import { SmallTextEditor } from "@/widget/editor/editor.text.small"; import { TextEditor } from "@/widget/editor/editor.text"; @@ -52,7 +53,7 @@ export class AllCountPager extends Widget { hgap: 4, vgap: 0, value: curr, - errorText: BI.i18nText("BI-Please_Input_Positive_Integer"), + errorText: i18nText("BI-Please_Input_Positive_Integer"), width: 40, height: 24, invisible: pages <= 1, @@ -78,8 +79,8 @@ export class AllCountPager extends Widget { prev: { type: IconButton.xtype, value: "prev", - title: BI.i18nText("BI-Previous_Page"), - warningTitle: BI.i18nText("BI-Current_Is_First_Page"), + title: i18nText("BI-Previous_Page"), + warningTitle: i18nText("BI-Current_Is_First_Page"), height: 22, width: 22, cls: `bi-border bi-border-radius all-pager-prev bi-list-item-select2 ${pagerIconCls.preCls}`, @@ -87,8 +88,8 @@ export class AllCountPager extends Widget { next: { type: IconButton.xtype, value: "next", - title: BI.i18nText("BI-Next_Page"), - warningTitle: BI.i18nText("BI-Current_Is_Last_Page"), + title: i18nText("BI-Next_Page"), + warningTitle: i18nText("BI-Current_Is_Last_Page"), height: 22, width: 22, cls: `bi-border bi-border-radius all-pager-next bi-list-item-select2 ${pagerIconCls.nextCls}`, @@ -142,17 +143,17 @@ export class AllCountPager extends Widget { _getPagerIconCls() { const { pagerDirection } = this.options; switch (pagerDirection) { - case "horizontal": - return { - preCls: "row-pre-page-h-font ", - nextCls: "row-next-page-h-font ", - }; - case "vertical": - default: - return { - preCls: "column-pre-page-h-font ", - nextCls: "column-next-page-h-font ", - }; + case "horizontal": + return { + preCls: "row-pre-page-h-font ", + nextCls: "row-next-page-h-font ", + }; + case "vertical": + default: + return { + preCls: "column-pre-page-h-font ", + nextCls: "column-next-page-h-font ", + }; } } @@ -170,7 +171,7 @@ export class AllCountPager extends Widget { { type: Label.xtype, height, - text: BI.i18nText("BI-Basic_Total"), + text: i18nText("BI-Basic_Total"), ref: _ref => { this.prevText = _ref; }, @@ -191,7 +192,7 @@ export class AllCountPager extends Widget { { type: Label.xtype, height, - text: BI.i18nText("BI-Tiao_Data"), + text: i18nText("BI-Tiao_Data"), textAlign: "left", }, isNotEmptyObject(rowInfoObject) ? rowInfoObject : null diff --git a/src/case/pager/pager.detail.js b/src/case/pager/pager.detail.js index 72ca03d49..ce71839c1 100644 --- a/src/case/pager/pager.detail.js +++ b/src/case/pager/pager.detail.js @@ -20,8 +20,8 @@ import { Label, ButtonGroup } from "@/base"; * 分页控件 * * Created by GUY on 2015/8/31. - * @class BI.DetailPager - * @extends BI.Widget + * @class DetailPager + * @extends Widget */ @shortcut() @@ -233,21 +233,21 @@ export class DetailPager extends Widget { if (type === Events.CLICK) { const v = this.button_group.getValue()[0]; switch (v) { - case "first": - this.currPage = 1; - break; - case "last": - this.currPage = pages; - break; - case "prev": - this.currPage--; - break; - case "next": - this.currPage++; - break; - default: - this.currPage = v; - break; + case "first": + this.currPage = 1; + break; + case "last": + this.currPage = pages; + break; + case "prev": + this.currPage--; + break; + case "next": + this.currPage++; + break; + default: + this.currPage = v; + break; } jump.apply(this, [ { @@ -308,16 +308,16 @@ export class DetailPager extends Widget { getValue() { const val = this.button_group.getValue()[0]; switch (val) { - case "prev": - return -1; - case "next": - return 1; - case "first": - return MIN; - case "last": - return MAX; - default: - return val; + case "prev": + return -1; + case "next": + return 1; + case "first": + return MIN; + case "last": + return MAX; + default: + return val; } } diff --git a/src/case/pager/pager.direction.js b/src/case/pager/pager.direction.js index b114beb4b..53cc51b82 100644 --- a/src/case/pager/pager.direction.js +++ b/src/case/pager/pager.direction.js @@ -1,12 +1,12 @@ -import { AbsoluteLayout, HorizontalLayout, shortcut, Widget, extend, emptyFn, createWidget } from "@/core"; +import { AbsoluteLayout, HorizontalLayout, shortcut, Widget, extend, emptyFn, createWidget, i18nText } from "@/core"; import { Label, Pager, IconButton } from "@/base"; /** * 显示页码的分页控件 * * Created by GUY on 2016/6/30. - * @class BI.DirectionPager - * @extends BI.Widget + * @class DirectionPager + * @extends Widget */ @shortcut() @@ -103,8 +103,8 @@ export class DirectionPager extends Widget { prev: { type: IconButton.xtype, value: "prev", - title: BI.i18nText("BI-Up_Page"), - warningTitle: BI.i18nText("BI-Current_Is_First_Page"), + title: i18nText("BI-Up_Page"), + warningTitle: i18nText("BI-Current_Is_First_Page"), height: 22, width: 22, cls: "bi-border bi-border-radius direction-pager-prev column-pre-page-h-font bi-list-item-select2", @@ -112,8 +112,8 @@ export class DirectionPager extends Widget { next: { type: IconButton.xtype, value: "next", - title: BI.i18nText("BI-Down_Page"), - warningTitle: BI.i18nText("BI-Current_Is_Last_Page"), + title: i18nText("BI-Down_Page"), + warningTitle: i18nText("BI-Current_Is_Last_Page"), height: 22, width: 22, cls: "bi-border bi-border-radius direction-pager-next column-next-page-h-font bi-list-item-select2", @@ -165,8 +165,8 @@ export class DirectionPager extends Widget { prev: { type: IconButton.xtype, value: "prev", - title: BI.i18nText("BI-Left_Page"), - warningTitle: BI.i18nText("BI-Current_Is_First_Page"), + title: i18nText("BI-Left_Page"), + warningTitle: i18nText("BI-Current_Is_First_Page"), height: 22, width: 22, cls: "bi-border bi-border-radius direction-pager-prev row-pre-page-h-font bi-list-item-select2", @@ -174,8 +174,8 @@ export class DirectionPager extends Widget { next: { type: IconButton.xtype, value: "next", - title: BI.i18nText("BI-Right_Page"), - warningTitle: BI.i18nText("BI-Current_Is_Last_Page"), + title: i18nText("BI-Right_Page"), + warningTitle: i18nText("BI-Current_Is_Last_Page"), height: 22, width: 22, cls: "bi-border bi-border-radius direction-pager-next row-next-page-h-font bi-list-item-select2", diff --git a/src/case/tree/tree.level.js b/src/case/tree/tree.level.js index 7f49ece0f..a0e0fe3c4 100644 --- a/src/case/tree/tree.level.js +++ b/src/case/tree/tree.level.js @@ -11,7 +11,8 @@ import { createWidget, VerticalLayout, Controller, - Events + Events, + SIZE_CONSANTS } from "@/core"; import { ButtonTree, CustomTree } from "@/base"; import { TreeExpander } from "./treeexpander/tree.expander"; @@ -45,7 +46,7 @@ export class LevelTree extends Widget { each(nodes, (i, node) => { const extend = { layer, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, isFirstNode: i === 0, isLastNode: i === nodes.length - 1, }; diff --git a/src/case/tree/treeexpander/tree.expander.popup.js b/src/case/tree/treeexpander/tree.expander.popup.js index a07829d3b..020788cc7 100644 --- a/src/case/tree/treeexpander/tree.expander.popup.js +++ b/src/case/tree/treeexpander/tree.expander.popup.js @@ -1,4 +1,4 @@ -import { Controller, createWidget, pixFormat, shortcut, VerticalLayout, Widget } from "@/core"; +import { Controller, createWidget, pixFormat, shortcut, VerticalLayout, Widget, SIZE_CONSANTS, STYLE_CONSTANTS } from "@/core"; @shortcut() export class TreeExpanderPopup extends Widget { @@ -17,7 +17,7 @@ export class TreeExpanderPopup extends Widget { render() { const self = this; const { el, value, layer, showLine, isLastNode } = this.options; - const offset = BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2; + const offset = SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2; this.popupView = createWidget( { @@ -38,7 +38,7 @@ export class TreeExpanderPopup extends Widget { return { type: VerticalLayout.xtype, - cls: showLine && !isLastNode ? (BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "line solid" : "line") : "", + cls: showLine && !isLastNode ? (STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "line solid" : "line") : "", scrolly: null, items: [this.popupView], }; diff --git a/src/case/ztree/list/listtreeview.js b/src/case/ztree/list/listtreeview.js index 96d731f08..0d08af8a7 100644 --- a/src/case/ztree/list/listtreeview.js +++ b/src/case/ztree/list/listtreeview.js @@ -5,8 +5,8 @@ import { extend, isNotNull, concat, each, shortcut } from "@/core"; * author: windy * 继承自treeView, 此树的父子节点的勾选状态互不影响, 此树不会有半选节点 * 返回value格式为[["A"], ["A", "a"]]表示勾选了A且勾选了a - * @class BI.ListTreeView - * @extends BI.TreeView + * @class ListTreeView + * @extends TreeView */ @shortcut() @@ -93,7 +93,7 @@ export class Listtreeview extends TreeView { _transMapToArray(treeMap) { const array = []; - BI.each(treeMap, key => { + each(treeMap, key => { const item = key.split(this._constants.SPLIT); array.push(item); }); diff --git a/src/case/ztree/parttree.js b/src/case/ztree/parttree.js index dce82a093..069a116f0 100644 --- a/src/case/ztree/parttree.js +++ b/src/case/ztree/parttree.js @@ -5,8 +5,8 @@ import { TreeView } from "./treeview"; /** * guy * 局部树,两个请求树, 第一个请求构造树,第二个请求获取节点 - * @class BI.PartTree - * @extends BI.AsyncTree + * @class PartTree + * @extends AsyncTree */ @shortcut() diff --git a/src/case/ztree/tree.display.js b/src/case/ztree/tree.display.js index fe8f274fc..c32cdd80d 100644 --- a/src/case/ztree/tree.display.js +++ b/src/case/ztree/tree.display.js @@ -1,11 +1,11 @@ -import { extend, shortcut } from "@/core"; +import { extend, shortcut, each, i18nText } from "@/core"; import { TreeView } from "./treeview"; /** * guy * 异步树 - * @class BI.DisplayTree - * @extends BI.TreeView + * @class DisplayTree + * @extends TreeView */ @shortcut() @@ -50,11 +50,11 @@ export class DisplayTree extends TreeView { _dealWidthNodes(nodes) { nodes = super._dealWidthNodes(...arguments); - BI.each(nodes, (i, node) => { + each(nodes, (i, node) => { node.isParent = node.isParent || node.parent; if (node.text == null) { if (node.count > 0) { - node.text = `${node.value}(${BI.i18nText("BI-Basic_Altogether")}${node.count}${BI.i18nText( + node.text = `${node.value}(${i18nText("BI-Basic_Altogether")}${node.count}${i18nText( "BI-Basic_Count" )})`; } diff --git a/src/case/ztree/tree.list.display.js b/src/case/ztree/tree.list.display.js index 918d451c8..3985a92bc 100644 --- a/src/case/ztree/tree.list.display.js +++ b/src/case/ztree/tree.list.display.js @@ -1,11 +1,11 @@ import { Listtreeview } from "./list/listtreeview"; -import { each, shortcut } from "@/core"; +import { each, shortcut, i18nText } from "@/core"; /** * guy * 异步树 - * @class BI.ListListDisplayTree - * @extends BI.TreeView + * @class ListListDisplayTree + * @extends TreeView */ @shortcut() @@ -59,7 +59,7 @@ export class ListDisplayTree extends Listtreeview { node.isParent = node.isParent || node.parent; if (node.text == null) { if (node.count > 0) { - node.text = `${node.value}(${BI.i18nText("BI-Basic_Altogether")}${node.count}${BI.i18nText( + node.text = `${node.value}(${i18nText("BI-Basic_Altogether")}${node.count}${i18nText( "BI-Basic_Count" )})`; } diff --git a/src/case/ztree/treeview.js b/src/case/ztree/treeview.js index 195c31e4d..f48d91bd0 100644 --- a/src/case/ztree/treeview.js +++ b/src/case/ztree/treeview.js @@ -21,7 +21,9 @@ import { VerticalLayout, Layout, DefaultLayout, - some + some, + Widget, + STYLE_CONSTANTS } from "@/core"; import { Msg, Pane, LoadingBar, Text } from "@/base"; @@ -81,7 +83,7 @@ export class TreeView extends Pane { this.tree = createWidget({ type: Layout.xtype, element: ``, }); createWidget({ @@ -408,7 +410,7 @@ export class TreeView extends Pane { } ) ); - const fragment = BI.Widget._renderEngine.createElement("
"); + const fragment = Widget._renderEngine.createElement("
"); fragment.append(text.element[0]); newNode.text = fragment.html(); // // 处理标红 diff --git a/src/core/4.widget.js b/src/core/4.widget.js index 11faacc6e..ae9db3e6e 100644 --- a/src/core/4.widget.js +++ b/src/core/4.widget.js @@ -9,6 +9,9 @@ import { isFunction, isArray, each, extend, isPlainObject, isNull, uniqueId, isWidget, isWidthOrHeight, isKey, remove, any, isNotNull } from "./2.base"; import { OB } from "./3.ob"; import { Providers, _lazyCreateWidget } from "./5.inject"; +import { DOM } from "./utils"; +import { Events, emptyFn, pixFormat } from "./constant"; +import { Plugin } from "./6.plugin"; const cancelAnimationFrame = _global.cancelAnimationFrame || @@ -186,7 +189,7 @@ export class Widget extends OB { callLifeHook(this, "beforeMount"); this._mount(); callLifeHook(this, "mounted"); - this.fireEvent(BI.Events.MOUNT); + this.fireEvent(Events.MOUNT); } else { this._mount(); } @@ -251,7 +254,7 @@ export class Widget extends OB { this._watchers = this._watchers || []; const watcher = new Fix.Watcher(null, () => getter.call(this, this), (handler && (v => { handler.call(this, this, v); - })) || BI.emptyFn, extend({ deep: true }, options)); + })) || emptyFn, extend({ deep: true }, options)); this._watchers.push(() => { watcher.teardown(); }); @@ -291,14 +294,14 @@ export class Widget extends OB { _initElementWidth() { const o = this.options; if (isWidthOrHeight(o.width)) { - this.element.css("width", BI.pixFormat(o.width)); + this.element.css("width", pixFormat(o.width)); } } _initElementHeight() { const o = this.options; if (isWidthOrHeight(o.height)) { - this.element.css("height", BI.pixFormat(o.height)); + this.element.css("height", pixFormat(o.height)); } } @@ -366,7 +369,7 @@ export class Widget extends OB { const render = isFunction(this.options.render) ? this.options.render : (workerMode ? (this.$render || this.render) : this.render); let els = render && render.call(this); els = this.options.configRender ? this.options.configRender.call(this, els) : els; - els = BI.Plugin.getRender(this.options.type, els); + els = Plugin.getRender(this.options.type, els); if (isPlainObject(els)) { els = [els]; } @@ -436,7 +439,7 @@ export class Widget extends OB { if (lifeHook !== false && !this.__async) { callLifeHook(this, "_mounted"); callLifeHook(this, "mounted"); - this.fireEvent(BI.Events.MOUNT); + this.fireEvent(Events.MOUNT); } predicate && predicate(this); } @@ -569,7 +572,7 @@ export class Widget extends OB { setVisible(visible) { this._innerSetVisible(visible); - this.fireEvent(BI.Events.VIEW, visible); + this.fireEvent(Events.VIEW, visible); } setValid(valid) { @@ -613,7 +616,7 @@ export class Widget extends OB { throw new Error("组件:组件名已存在,不能进行添加"); } widget._setParent && widget._setParent(this); - widget.on(BI.Events.DESTROY, function () { + widget.on(Events.DESTROY, function () { // TODO: self待删 remove(self._children, this); }); @@ -760,7 +763,7 @@ export class Widget extends OB { _unMount() { this._assetMounted(); this.__destroy(); - this.fireEvent(BI.Events.UNMOUNT); + this.fireEvent(Events.UNMOUNT); this.purgeListeners(); } @@ -785,7 +788,7 @@ export class Widget extends OB { if (this._parent) { this._parent.removeWidget(this); } - BI.DOM.hang([this]); + DOM.hang([this]); } empty () { @@ -800,7 +803,7 @@ export class Widget extends OB { } // if (this.options.vdom) { // const vnode = this._renderVNode(); - // BI.patchVNode(this.vnode, vnode); + // patchVNode(this.vnode, vnode); // this.vnode = vnode; // return; // } @@ -841,8 +844,8 @@ export class Widget extends OB { } else { this.element.destroy(); } - this.fireEvent(BI.Events.UNMOUNT); - this.fireEvent(BI.Events.DESTROY); + this.fireEvent(Events.UNMOUNT); + this.fireEvent(Events.DESTROY); this._purgeRef(); this.purgeListeners(); } @@ -1082,7 +1085,7 @@ export function mount(widget, container, predicate, hydrate) { }); // 将新的dom树属性(事件等)patch到已存在的dom上 const c = Widget._renderEngine.createElement; - BI.DOM.patchProps(widget.element, c(c(container).children()[0])); + DOM.patchProps(widget.element, c(c(container).children()[0])); const triggerLifeHook = w => { w.beforeMount && w.beforeMount(); diff --git a/src/core/5.inject.js b/src/core/5.inject.js index 2b04a435f..92ad4db34 100644 --- a/src/core/5.inject.js +++ b/src/core/5.inject.js @@ -1,6 +1,9 @@ import { isFunction, isNull, isNotNull, isArray, each, isWidget, extend, init, isEmpty, remove } from "./2.base"; import { OB } from "./3.ob"; import { Widget } from "./4.widget"; +import { Plugin } from "./6.plugin"; +import { aspect } from "./structure"; +import { Events } from "./constant"; const moduleInjection = {}, moduleInjectionMap = { components: {}, @@ -158,7 +161,7 @@ const runConfigFunction = (type, configFn) => { fn(providers[type]); continue; } - BI.Plugin.configWidget(type, fn, conf.opt); + Plugin.configWidget(type, fn, conf.opt); } }; @@ -197,7 +200,7 @@ export function config(type, configFn, opt) { } export function getReference(type, fn) { - return BI.Plugin.registerObject(type, fn); + return Plugin.registerObject(type, fn); } const actions = {}; @@ -268,7 +271,7 @@ function callPoint(inst, types) { for (const action in points[type]) { const bfns = points[type][action].before; if (bfns) { - BI.aspect.before(inst, action, (function (bfns) { + aspect.before(inst, action, (function (bfns) { return function () { for (let i = 0, len = bfns.length; i < len; i++) { try { @@ -282,7 +285,7 @@ function callPoint(inst, types) { } const afns = points[type][action].after; if (afns) { - BI.aspect.after(inst, action, (function (afns) { + aspect.after(inst, action, (function (afns) { return function () { for (let i = 0, len = afns.length; i < len; i++) { try { @@ -462,23 +465,23 @@ export function createWidget(item, options, context, lazy) { return item; } if (el) { - w = BI.Plugin.getWidget(elType, el); + w = Plugin.getWidget(elType, el); const wType = (w.type && w.type.xtype) || w.type; if (wType === elType) { - if (BI.Plugin.hasObject(elType)) { + if (Plugin.hasObject(elType)) { if (!w.listeners || isArray(w.listeners)) { w.listeners = (w.listeners || []).concat([{ - eventName: BI.Events.MOUNT, + eventName: Events.MOUNT, action: () => { - BI.Plugin.getObject(elType, this); + Plugin.getObject(elType, this); }, }]); } else { - w.listeners[BI.Events.MOUNT] = [ + w.listeners[Events.MOUNT] = [ () => { - BI.Plugin.getObject(elType, this); + Plugin.getObject(elType, this); } - ].concat(w.listeners[BI.Events.MOUNT] || []); + ].concat(w.listeners[Events.MOUNT] || []); } } diff --git a/src/core/action/action.js b/src/core/action/action.js index bfe20fd80..f95569bfd 100644 --- a/src/core/action/action.js +++ b/src/core/action/action.js @@ -1,8 +1,8 @@ /** * guy * 由一个元素切换到另一个元素的行为 - * @class BI.Action - * @extends BI.OB + * @class Action + * @extends OB * @abstract */ import { OB } from "../3.ob"; diff --git a/src/core/controller/controller.bubbles.js b/src/core/controller/controller.bubbles.js index 64147fdcc..8935a1f88 100644 --- a/src/core/controller/controller.bubbles.js +++ b/src/core/controller/controller.bubbles.js @@ -20,7 +20,7 @@ export class BubblesController extends Controller { * @param text * @param context * @param offsetStyle center, left, right三种类型, 默认left - * @returns {BI.BubblesController} + * @returns {BubblesController} */ show(name, text, context, opt) { opt || (opt = {}); diff --git a/src/core/controller/controller.layer.js b/src/core/controller/controller.layer.js index eb47237e1..2d24cd770 100644 --- a/src/core/controller/controller.layer.js +++ b/src/core/controller/controller.layer.js @@ -4,9 +4,11 @@ * Created by GUY on 2015/6/24. */ import { Controller } from "./0.controller"; -import { isNull, isNotNull, each, keys, isWidget, isNotEmptyString, extend } from "../2.base"; +import { isNull, isNotNull, each, keys, isWidget, isNotEmptyString, extend, bind, uniqueId } from "../2.base"; import { Widget } from "../4.widget"; import { createWidget } from "../5.inject"; +import { zIndex_layer } from "../constant"; +import { DOM } from "../utils"; export class LayerController extends Controller { constructor() { @@ -21,11 +23,11 @@ export class LayerController extends Controller { init() { this.layerManager = {}; this.layouts = {}; - this.zindex = BI.zIndex_layer; + this.zindex = zIndex_layer; } _initResizer() { - this.resizer = BI.Resizers.add(`layerController${BI.uniqueId()}`, BI.bind(this._resize, this)); + this.resizer = BI.Resizers.add(`layerController${uniqueId()}`, bind(this._resize, this)); } _resize() { @@ -105,7 +107,7 @@ export class LayerController extends Controller { height: offset.height || (w.outerHeight() - (offset.top || 0) - (offset.bottom || 0)) || "", }; - const { top, left, scaleY, scaleX } = BI.DOM.getPositionRelativeContainingBlockRect(layout.element[0]); + const { top, left, scaleY, scaleX } = DOM.getPositionRelativeContainingBlockRect(layout.element[0]); css.top = (css.top - top) / scaleY; css.left = (css.left - left) / scaleX; diff --git a/src/core/controller/controller.masker.js b/src/core/controller/controller.masker.js index 6a2fa10d6..ed042e206 100644 --- a/src/core/controller/controller.masker.js +++ b/src/core/controller/controller.masker.js @@ -4,10 +4,11 @@ * Created by GUY on 2015/6/24. */ import { LayerController } from "./controller.layer"; +import { zIndex_layer } from "../constant"; export class MaskersController extends LayerController { init() { super.init(arguments); - this.zindex = BI.zIndex_masker; + this.zindex = zIndex_layer; } } diff --git a/src/core/controller/controller.popover.js b/src/core/controller/controller.popover.js index 9d6bc9700..b3fa2bbc5 100644 --- a/src/core/controller/controller.popover.js +++ b/src/core/controller/controller.popover.js @@ -6,6 +6,7 @@ import { Controller } from "./0.controller"; import { isNotNull, each } from "../2.base"; import { Widget } from "../4.widget"; import { createWidget } from "../5.inject"; +import { zIndex_popover } from "../constant"; export class PopoverController extends Controller { constructor() { @@ -24,7 +25,7 @@ export class PopoverController extends Controller { this.floatLayer = {}; this.floatContainer = {}; this.floatOpened = {}; - this.zindex = BI.zIndex_popover; + this.zindex = zIndex_popover; this.zindexMap = {}; } diff --git a/src/core/element/plugins/class.js b/src/core/element/plugins/class.js index 1c4c8eaba..ac6e26890 100644 --- a/src/core/element/plugins/class.js +++ b/src/core/element/plugins/class.js @@ -1,6 +1,8 @@ +import { each } from "../../2.base"; + export const registClassFun = Element => { Element.registerFunction("addClass", function (classList) { - BI.each(classList.split(" "), (i, cls) => { + each(classList.split(" "), (i, cls) => { if (cls && !this.classMap[cls]) { this.classList.push(cls); } @@ -11,7 +13,7 @@ export const registClassFun = Element => { }); Element.registerFunction("removeClass", function (classList) { - BI.each(classList.split(" "), (i, cls) => { + each(classList.split(" "), (i, cls) => { if (cls && this.classMap[cls]) { delete this.classMap[cls]; this.classList.splice(this.classList.indexOf(cls), 1); diff --git a/src/core/element/plugins/val.js b/src/core/element/plugins/val.js index e1e515c19..4188cbd83 100644 --- a/src/core/element/plugins/val.js +++ b/src/core/element/plugins/val.js @@ -1,6 +1,8 @@ +import { isNotNull } from "../../2.base"; + export const registValFun = Element => { Element.registerFunction("val", function (value) { - if (BI.isNotNull(value)) { + if (isNotNull(value)) { this.text = `${value}`; return this; diff --git a/src/core/func/date.js b/src/core/func/date.js index 8ef71e9e7..f13c350b4 100644 --- a/src/core/func/date.js +++ b/src/core/func/date.js @@ -1,5 +1,5 @@ /** Constants used for time computations */ -import {getDate, getTime} from "../2.base"; +import { getDate, getTime, parseInt } from "../2.base"; const SECOND = 1000; const MINUTE = 60 * SECOND; @@ -52,6 +52,7 @@ export function getMonthDays(date, month = date.getMonth()) { if (((0 === (year % 4)) && ((0 !== (year % 100)) || (0 === (year % 400)))) && month === 1) { return 29; } + return _MD[month]; } @@ -80,6 +81,7 @@ export function getDayOfYear(date) { const now = getDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); const then = getDate(date.getFullYear(), 0, 0, 0, 0, 0); const time = now - then; + return Math.floor(time / DAY); } @@ -102,6 +104,7 @@ export function getWeekNumber(date) { const ms = d.valueOf(); d.setMonth(0); d.setDate(1); + return Math.floor((ms - d.valueOf()) / (7 * 864e5)) + 1; } @@ -128,6 +131,7 @@ export function getOffsetQuarter(date, n) { } dt.setDate(day); dt.setMonth(dt.getMonth() + parseInt(n, 10) * 3); + return dt; } @@ -151,6 +155,7 @@ export function getQuarterStartMonth(date) { if (nowMonth > 8) { quarterStartMonth = 9; } + return quarterStartMonth; } @@ -170,6 +175,7 @@ export function getQuarterStartDate(date) { */ export function getQuarterEndDate(date) { const quarterEndMonth = getQuarterStartMonth(date) + 2; + return getDate(date.getFullYear(), quarterEndMonth, getMonthDays(date)); } @@ -188,6 +194,7 @@ export function getOffsetMonth(date, n) { } dt.setDate(day); dt.setMonth(dt.getMonth() + parseInt(n, 10)); + return dt; } @@ -199,6 +206,7 @@ export function getOffsetMonth(date, n) { export function getWeekStartDate(date) { const w = date.getDay(); const startOfWeek = BI.StartOfWeek % 7; + return getOffsetDate(date, _OFFSET[w < startOfWeek ? (7 + w - startOfWeek) : (w - startOfWeek)]); } @@ -210,6 +218,7 @@ export function getWeekStartDate(date) { export function getWeekEndDate(date) { const w = date.getDay(); const startOfWeek = BI.StartOfWeek % 7; + return getOffsetDate(date, _OFFSET[w < startOfWeek ? (7 + w - startOfWeek) : (w - startOfWeek)] + 6); } @@ -276,9 +285,9 @@ export function print(date, str) { const m = date.getMonth(); const d = date.getDate(); const y = date.getFullYear(); - let yWith4number = y + ""; + let yWith4number = `${y}`; while (yWith4number.length < 4) { - yWith4number = "0" + yWith4number; + yWith4number = `0${yWith4number}`; } const wn = getWeekNumber(date); const qr = getQuarter(date); @@ -299,28 +308,28 @@ export function print(date, str) { s["%B"] = getMonthName(m); // full month name // FIXME: %c : preferred date and time representation for the current locale s["%C"] = 1 + Math.floor(y / 100); // the century number - s["%d"] = (d < 10) ? ("0" + d) : d; // the day of the month (range 01 to 31) + s["%d"] = (d < 10) ? (`0${d}`) : d; // the day of the month (range 01 to 31) s["%e"] = d; // the day of the month (range 1 to 31) // FIXME: %D : american date style: %m/%d/%y // FIXME: %E, %F, %G, %g, %h (man strftime) - s["%H"] = (hr < 10) ? ("0" + hr) : hr; // hour, range 00 to 23 (24h format) - s["%I"] = (ir < 10) ? ("0" + ir) : ir; // hour, range 01 to 12 (12h format) - s["%j"] = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy; // day of the year (range 001 to 366) - s["%k"] = hr + ""; // hour, range 0 to 23 (24h format) - s["%l"] = ir + ""; // hour, range 1 to 12 (12h format) - s["%X"] = (m < 9) ? ("0" + (1 + m)) : (1 + m); // month, range 01 to 12 + s["%H"] = (hr < 10) ? (`0${hr}`) : hr; // hour, range 00 to 23 (24h format) + s["%I"] = (ir < 10) ? (`0${ir}`) : ir; // hour, range 01 to 12 (12h format) + s["%j"] = (dy < 100) ? ((dy < 10) ? (`00${dy}`) : (`0${dy}`)) : dy; // day of the year (range 001 to 366) + s["%k"] = `${hr}`; // hour, range 0 to 23 (24h format) + s["%l"] = `${ir}`; // hour, range 1 to 12 (12h format) + s["%X"] = (m < 9) ? (`0${1 + m}`) : (1 + m); // month, range 01 to 12 s["%x"] = m + 1; // month, range 1 to 12 - s["%M"] = (min < 10) ? ("0" + min) : min; // minute, range 00 to 59 + s["%M"] = (min < 10) ? (`0${min}`) : min; // minute, range 00 to 59 s["%n"] = "\n"; // a newline character s["%p"] = pm ? "PM" : "AM"; s["%P"] = pm ? "pm" : "am"; // FIXME: %r : the time in am/pm notation %I:%M:%S %p // FIXME: %R : the time in 24-hour notation %H:%M s["%s"] = Math.floor(date.getTime() / 1000); - s["%S"] = (sec < 10) ? ("0" + sec) : sec; // seconds, range 00 to 59 + s["%S"] = (sec < 10) ? (`0${sec}`) : sec; // seconds, range 00 to 59 s["%t"] = "\t"; // a tab character // FIXME: %T : the time in 24-hour notation (%H:%M:%S) - s["%U"] = s["%W"] = s["%V"] = (wn < 10) ? ("0" + wn) : wn; + s["%U"] = s["%W"] = s["%V"] = (wn < 10) ? (`0${wn}`) : wn; s["%u"] = w + 1; // the day of the week (range 1 to 7, 1 = MON) s["%w"] = w; // the day of the week (range 0 to 6, 0 = SUN) // FIXME: %x : preferred date representation for the current locale without the time @@ -328,7 +337,7 @@ export function print(date, str) { s["%y"] = yWith4number.substr(2, 2); // year without the century (range 00 to 99) s["%Y"] = yWith4number; // year with the century s["%%"] = "%"; // a literal '%' character - s["%q"] = "0" + qr; + s["%q"] = `0${qr}`; s["%Q"] = qr; let re = /%./g; @@ -336,6 +345,7 @@ export function print(date, str) { if (!_global.navigator) { return false; } + return /Konqueror|Safari|KHTML/i.test(navigator.userAgent); }; @@ -362,9 +372,7 @@ export function print(date, str) { } if (!BI.isKhtml()) { - return str.replace(re, function (par) { - return s[par] || par; - }); + return str.replace(re, par => s[par] || par); } const a = str.match(re); for (let i = 0; i < a.length; i++) { diff --git a/src/core/func/function.js b/src/core/func/function.js index 0de246721..70d52da68 100644 --- a/src/core/func/function.js +++ b/src/core/func/function.js @@ -4,6 +4,7 @@ */ import { every, isKey, isArray, toUpperCase, each, stripEL, isNotNull, isNull, isObject } from "../2.base"; import { makeFirstPY } from "../utils/chinesePY"; +import { CODE_INDEX } from "@/third/sort.gb2312"; /** * 创建唯一的名字 @@ -12,7 +13,8 @@ import { makeFirstPY } from "../utils/chinesePY"; * @returns {*} */ export function createDistinctName(array, name) { - let src = name, idx = 1; + const src = name; + let idx = 1; name = name || ""; while (true) { if (every(array, (i, item) => isKey(item) ? item !== name : item.name !== name)) { @@ -138,7 +140,7 @@ export function getSortedResult(items, key = null) { const char2 = str2[i]; if (char1 !== char2) { // 找不到的字符都往后面放 - return (BI.isNull(BI.CODE_INDEX[char1]) ? BI.MAX : BI.CODE_INDEX[char1]) - (BI.isNull(BI.CODE_INDEX[char2]) ? BI.MAX : BI.CODE_INDEX[char2]); + return (BI.isNull(CODE_INDEX[char1]) ? BI.MAX : CODE_INDEX[char1]) - (BI.isNull(CODE_INDEX[char2]) ? BI.MAX : CODE_INDEX[char2]); } } diff --git a/src/core/logic/index.js b/src/core/logic/index.js index 5b04dfe21..224e2ed13 100644 --- a/src/core/logic/index.js +++ b/src/core/logic/index.js @@ -13,21 +13,21 @@ export const LogicFactory = { createLogic (key, options) { let LogicCls; switch (key) { - case LogicFactory.Type.Vertical: - LogicCls = VerticalLayoutLogic; - break; - case LogicFactory.Type.Horizontal: - LogicCls = HorizontalLayoutLogic; - break; - case LogicFactory.Type.Table: - LogicCls = TableLayoutLogic; - break; - case LogicFactory.Type.HorizontalFill: - LogicCls = HorizontalFillLayoutLogic; - break; - default: - LogicCls = Logic; - break; + case LogicFactory.Type.Vertical: + LogicCls = VerticalLayoutLogic; + break; + case LogicFactory.Type.Horizontal: + LogicCls = HorizontalLayoutLogic; + break; + case LogicFactory.Type.Table: + LogicCls = TableLayoutLogic; + break; + case LogicFactory.Type.HorizontalFill: + LogicCls = HorizontalFillLayoutLogic; + break; + default: + LogicCls = Logic; + break; } return new LogicCls(options).createLogic(); @@ -35,14 +35,14 @@ export const LogicFactory = { createLogicTypeByDirection (direction) { switch (direction) { - case Direction.Top: - case Direction.Bottom: - case Direction.Custom: - return LogicFactory.Type.Vertical; - case Direction.Left: - case Direction.Right: - return LogicFactory.Type.Horizontal; - default: + case Direction.Top: + case Direction.Bottom: + case Direction.Custom: + return LogicFactory.Type.Vertical; + case Direction.Left: + case Direction.Right: + return LogicFactory.Type.Horizontal; + default: } }, @@ -60,16 +60,16 @@ export const LogicFactory = { return item; }); switch (direction) { - case Direction.Bottom: - items.reverse(); - break; - case Direction.Right: - items.reverse(); - break; - case Direction.Custom: - items = items.slice(1); - break; - default: + case Direction.Bottom: + items.reverse(); + break; + case Direction.Right: + items.reverse(); + break; + case Direction.Custom: + items = items.slice(1); + break; + default: } return items; diff --git a/src/core/structure/queue.js b/src/core/structure/queue.js index b42e25492..ed1d55f69 100644 --- a/src/core/structure/queue.js +++ b/src/core/structure/queue.js @@ -1,4 +1,4 @@ -import {contains, remove} from "../2.base"; +import { contains, remove } from "../2.base"; export class Queue { constructor(capacity) { diff --git a/src/core/system.js b/src/core/system.js index 93be82dc4..0d6c69a1f 100644 --- a/src/core/system.js +++ b/src/core/system.js @@ -7,6 +7,7 @@ import { deepExtend, extend, inherit } from "./2.base"; import { OB } from "./3.ob"; import { Providers } from "./5.inject"; import { provider } from "./decorator"; +import { isIE as checkIE } from "./platform/web"; // 系统参数常量 const system = { @@ -27,7 +28,7 @@ const system = { loadingCreator(config) { const loadingSize = (config ? config.loadingSize : "small") || "small"; - const isIE = BI.isIE(); + const isIE = checkIE(); function getSize(v) { return Math.ceil(v / (loadingSize === "small" ? 2 : 1)); @@ -141,9 +142,11 @@ export class SystemProvider { } } +export const SIZE_CONSANTS = {}; +// 不再增加线型的配置了,之后不维护前置版本直接删掉,都用实线连接线 +export const STYLE_CONSTANTS = {}; + BI.prepares.push(() => { - BI.SIZE_CONSANTS = Providers.getProvider("bi.provider.system").getSize(); - // 不再增加线型的配置了,之后不维护前置版本直接删掉,都用实线连接线 - BI.STYLE_CONSTANTS = {}; - BI.STYLE_CONSTANTS.LINK_LINE_TYPE = BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT === 24 ? "dashed" : "solid"; + extend(SIZE_CONSANTS, Providers.getProvider("bi.provider.system").getSize()); + STYLE_CONSTANTS.LINK_LINE_TYPE = SIZE_CONSANTS.LIST_ITEM_HEIGHT === 24 ? "dashed" : "solid"; }); diff --git a/src/core/utils/index.js b/src/core/utils/index.js index 0937fcd71..d01e65bbc 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -8,5 +8,5 @@ import * as colorDom from "./color"; export const DOM = { ...platformDom, - ...colorDom + ...colorDom, }; diff --git a/src/third/sort.gb2312.js b/src/third/sort.gb2312.js index be8277301..49efa3b8e 100644 --- a/src/third/sort.gb2312.js +++ b/src/third/sort.gb2312.js @@ -1,7 +1,6 @@ -!(function () { - var codes = " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⺀⺁⺂⺃⺄⺅⺆⺇⺈⺉⺊⺋⺌⺍⺎⺏⺐⺑⺒⺓⺔⺕⺖⺗⺘⺙⺚⺛⺜⺝⺞⺟⺠⺡⺢⺣⺤⺥⺦⺧⺨⺩⺪⺫⺬⺭⺮⺯⺰⺱⺲⺳⺴⺵⺶⺷⺸⺹⺺⺻⺼⺽⺾⺿⻀⻁⻂⻃⻄⻅⻆⻇⻈⻉⻊⻋⻌⻍⻎⻏⻐⻑⻒⻓⻔⻕⻖⻗⻘⻙⻚⻛⻜⻝⻞⻟⻠⻡⻢⻣⻤⻥⻦⻧⻨⻩⻪⻫⻬⻭⻮⻯⻰⻱⻲⻳⻴⻵⻶⻷⻸⻹⻺⻻⻼⻽⻾⻿⼀⼁⼂⼃⼄⼅⼆⼇⼈⼉⼊⼋⼌⼍⼎⼏⼐⼑⼒⼓⼔⼕⼖⼗⼘⼙⼚⼛⼜⼝⼞⼟⼠⼡⼢⼣⼤⼥⼦⼧⼨⼩⼪⼫⼬⼭⼮⼯⼰⼱⼲⼳⼴⼵⼶⼷⼸⼹⼺⼻⼼⼽⼾⼿⽀⽁⽂⽃⽄⽅⽆⽇⽈⽉⽊⽋⽌⽍⽎⽏⽐⽑⽒⽓⽔⽕⽖⽗⽘⽙⽚⽛⽜⽝⽞⽟⽠⽡⽢⽣⽤⽥⽦⽧⽨⽩⽪⽫⽬⽭⽮⽯⽰⽱⽲⽳⽴⽵⽶⽷⽸⽹⽺⽻⽼⽽⽾⽿⾀⾁⾂⾃⾄⾅⾆⾇⾈⾉⾊⾋⾌⾍⾎⾏⾐⾑⾒⾓⾔⾕⾖⾗⾘⾙⾚⾛⾜⾝⾞⾟⾠⾡⾢⾣⾤⾥⾦⾧⾨⾩⾪⾫⾬⾭⾮⾯⾰⾱⾲⾳⾴⾵⾶⾷⾸⾹⾺⾻⾼⾽⾾⾿⿀⿁⿂⿃⿄⿅⿆⿇⿈⿉⿊⿋⿌⿍⿎⿏⿐⿑⿒⿓⿔⿕⿖⿗⿘⿙⿚⿛⿜⿝⿞⿟⿠⿡⿢⿣⿤⿥⿦⿧⿨⿩⿪⿫⿬⿭⿮⿯⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻⿼⿽⿾⿿ 、。〃〄々〆〇〈〉《》「」『』【】〒〓〔〕〖〗〘〙〚〛〜〝〞〟〠〡〢〣〤〥〦〧〨〩〪〭〮〯〫〬〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾〿぀ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんゔゕゖ゗゘゙゚゛゜ゝゞゟ゠ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ㄀㄁㄂㄃㄄ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩㄪㄫㄬㄭㄮㄯ㄰ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ㆏㆐㆑㆒㆓㆔㆕㆖㆗㆘㆙㆚㆛㆜㆝㆞㆟ㆠㆡㆢㆣㆤㆥㆦㆧㆨㆩㆪㆫㆬㆭㆮㆯㆰㆱㆲㆳㆴㆵㆶㆷㆸㆹㆺㆻㆼㆽㆾㆿ㇀㇁㇂㇃㇄㇅㇆㇇㇈㇉㇊㇋㇌㇍㇎㇏㇐㇑㇒㇓㇔㇕㇖㇗㇘㇙㇚㇛㇜㇝㇞㇟㇠㇡㇢㇣㇤㇥㇦㇧㇨㇩㇪㇫㇬㇭㇮㇯ㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛㈜㈝㈞㈟㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩㈪㈫㈬㈭㈮㈯㈰㈱㈲㈳㈴㈵㈶㈷㈸㈹㈺㈻㈼㈽㈾㈿㉀㉁㉂㉃㉄㉅㉆㉇㉈㉉㉊㉋㉌㉍㉎㉏㉐㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻㉼㉽㉾㉿㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉㊊㊋㊌㊍㊎㊏㊐㊑㊒㊓㊔㊕㊖㊗㊘㊙㊚㊛㊜㊝㊞㊟㊠㊡㊢㊣㊤㊥㊦㊧㊨㊩㊪㊫㊬㊭㊮㊯㊰㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿㋀㋁㋂㋃㋄㋅㋆㋇㋈㋉㋊㋋㋌㋍㋎㋏㋐㋑㋒㋓㋔㋕㋖㋗㋘㋙㋚㋛㋜㋝㋞㋟㋠㋡㋢㋣㋤㋥㋦㋧㋨㋩㋪㋫㋬㋭㋮㋯㋰㋱㋲㋳㋴㋵㋶㋷㋸㋹㋺㋻㋼㋽㋾㋿㌀㌁㌂㌃㌄㌅㌆㌇㌈㌉㌊㌋㌌㌍㌎㌏㌐㌑㌒㌓㌔㌕㌖㌗㌘㌙㌚㌛㌜㌝㌞㌟㌠㌡㌢㌣㌤㌥㌦㌧㌨㌩㌪㌫㌬㌭㌮㌯㌰㌱㌲㌳㌴㌵㌶㌷㌸㌹㌺㌻㌼㌽㌾㌿㍀㍁㍂㍃㍄㍅㍆㍇㍈㍉㍊㍋㍌㍍㍎㍏㍐㍑㍒㍓㍔㍕㍖㍗㍘㍙㍚㍛㍜㍝㍞㍟㍠㍡㍢㍣㍤㍥㍦㍧㍨㍩㍪㍫㍬㍭㍮㍯㍰㍱㍲㍳㍴㍵㍶㍷㍸㍹㍺㍻㍼㍽㍾㍿㎀㎁㎂㎃㎄㎅㎆㎇㎈㎉㎊㎋㎌㎍㎎㎏㎐㎑㎒㎓㎔㎕㎖㎗㎘㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㎣㎤㎥㎦㎧㎨㎩㎪㎫㎬㎭㎮㎯㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎺㎻㎼㎽㎾㎿㏀㏁㏂㏃㏄㏅㏆㏇㏈㏉㏊㏋㏌㏍㏎㏏㏐㏑㏒㏓㏔㏕㏖㏗㏘㏙㏚㏛㏜㏝㏞㏟㏠㏡㏢㏣㏤㏥㏦㏧㏨㏩㏪㏫㏬㏭㏮㏯㏰㏱㏲㏳㏴㏵㏶㏷㏸㏹㏺㏻㏼㏽㏾㏿㐀㐁㐂㐃㐄㐅㐆㐇㐈㐉㐊㐋㐌㐍㐎㐏㐐㐑㐒㐓㐔㐕㐖㐗㐘㐙㐚㐛㐜㐝㐞㐟㐠㐡㐢㐣㐤㐥㐦㐧㐨㐩㐪㐫㐬㐭㐮㐯㐰㐱㐲㐳㐴㐵㐶㐷㐸㐹㐺㐻㐼㐽㐾㐿㑀㑁㑂㑃㑄㑅㑆㑇㑈㑉㑊㑋㑌㑍㑎㑏㑐㑑㑒㑓㑔㑕㑖㑗㑘㑙㑚㑛㑜㑝㑞㑟㑠㑡㑢㑣㑤㑥㑦㑧㑨㑩㑪㑫㑬㑭㑮㑯㑰㑱㑲㑳㑴㑵㑶㑷㑸㑹㑺㑻㑼㑽㑾㑿㒀㒁㒂㒃㒄㒅㒆㒇㒈㒉㒊㒋㒌㒍㒎㒏㒐㒑㒒㒓㒔㒕㒖㒗㒘㒙㒚㒛㒜㒝㒞㒟㒠㒡㒢㒣㒤㒥㒦㒧㒨㒩㒪㒫㒬㒭㒮㒯㒰㒱㒲㒳㒴㒵㒶㒷㒸㒹㒺㒻㒼㒽㒾㒿㓀㓁㓂㓃㓄㓅㓆㓇㓈㓉㓊㓋㓌㓍㓎㓏㓐㓑㓒㓓㓔㓕㓖㓗㓘㓙㓚㓛㓜㓝㓞㓟㓠㓡㓢㓣㓤㓥㓦㓧㓨㓩㓪㓫㓬㓭㓮㓯㓰㓱㓲㓳㓴㓵㓶㓷㓸㓹㓺㓻㓼㓽㓾㓿㔀㔁㔂㔃㔄㔅㔆㔇㔈㔉㔊㔋㔌㔍㔎㔏㔐㔑㔒㔓㔔㔕㔖㔗㔘㔙㔚㔛㔜㔝㔞㔟㔠㔡㔢㔣㔤㔥㔦㔧㔨㔩㔪㔫㔬㔭㔮㔯㔰㔱㔲㔳㔴㔵㔶㔷㔸㔹㔺㔻㔼㔽㔾㔿㕀㕁㕂㕃㕄㕅㕆㕇㕈㕉㕊㕋㕌㕍㕎㕏㕐㕑㕒㕓㕔㕕㕖㕗㕘㕙㕚㕛㕜㕝㕞㕟㕠㕡㕢㕣㕤㕥㕦㕧㕨㕩㕪㕫㕬㕭㕮㕯㕰㕱㕲㕳㕴㕵㕶㕷㕸㕹㕺㕻㕼㕽㕾㕿㖀㖁㖂㖃㖄㖅㖆㖇㖈㖉㖊㖋㖌㖍㖎㖏㖐㖑㖒㖓㖔㖕㖖㖗㖘㖙㖚㖛㖜㖝㖞㖟㖠㖡㖢㖣㖤㖥㖦㖧㖨㖩㖪㖫㖬㖭㖮㖯㖰㖱㖲㖳㖴㖵㖶㖷㖸㖹㖺㖻㖼㖽㖾㖿㗀㗁㗂㗃㗄㗅㗆㗇㗈㗉㗊㗋㗌㗍㗎㗏㗐㗑㗒㗓㗔㗕㗖㗗㗘㗙㗚㗛㗜㗝㗞㗟㗠㗡㗢㗣㗤㗥㗦㗧㗨㗩㗪㗫㗬㗭㗮㗯㗰㗱㗲㗳㗴㗵㗶㗷㗸㗹㗺㗻㗼㗽㗾㗿㘀㘁㘂㘃㘄㘅㘆㘇㘈㘉㘊㘋㘌㘍㘎㘏㘐㘑㘒㘓㘔㘕㘖㘗㘘㘙㘚㘛㘜㘝㘞㘟㘠㘡㘢㘣㘤㘥㘦㘧㘨㘩㘪㘫㘬㘭㘮㘯㘰㘱㘲㘳㘴㘵㘶㘷㘸㘹㘺㘻㘼㘽㘾㘿㙀㙁㙂㙃㙄㙅㙆㙇㙈㙉㙊㙋㙌㙍㙎㙏㙐㙑㙒㙓㙔㙕㙖㙗㙘㙙㙚㙛㙜㙝㙞㙟㙠㙡㙢㙣㙤㙥㙦㙧㙨㙩㙪㙫㙬㙭㙮㙯㙰㙱㙲㙳㙴㙵㙶㙷㙸㙹㙺㙻㙼㙽㙾㙿㚀㚁㚂㚃㚄㚅㚆㚇㚈㚉㚊㚋㚌㚍㚎㚏㚐㚑㚒㚓㚔㚕㚖㚗㚘㚙㚚㚛㚜㚝㚞㚟㚠㚡㚢㚣㚤㚥㚦㚧㚨㚩㚪㚫㚬㚭㚮㚯㚰㚱㚲㚳㚴㚵㚶㚷㚸㚹㚺㚻㚼㚽㚾㚿㛀㛁㛂㛃㛄㛅㛆㛇㛈㛉㛊㛋㛌㛍㛎㛏㛐㛑㛒㛓㛔㛕㛖㛗㛘㛙㛚㛛㛜㛝㛞㛟㛠㛡㛢㛣㛤㛥㛦㛧㛨㛩㛪㛫㛬㛭㛮㛯㛰㛱㛲㛳㛴㛵㛶㛷㛸㛹㛺㛻㛼㛽㛾㛿㜀㜁㜂㜃㜄㜅㜆㜇㜈㜉㜊㜋㜌㜍㜎㜏㜐㜑㜒㜓㜔㜕㜖㜗㜘㜙㜚㜛㜜㜝㜞㜟㜠㜡㜢㜣㜤㜥㜦㜧㜨㜩㜪㜫㜬㜭㜮㜯㜰㜱㜲㜳㜴㜵㜶㜷㜸㜹㜺㜻㜼㜽㜾㜿㝀㝁㝂㝃㝄㝅㝆㝇㝈㝉㝊㝋㝌㝍㝎㝏㝐㝑㝒㝓㝔㝕㝖㝗㝘㝙㝚㝛㝜㝝㝞㝟㝠㝡㝢㝣㝤㝥㝦㝧㝨㝩㝪㝫㝬㝭㝮㝯㝰㝱㝲㝳㝴㝵㝶㝷㝸㝹㝺㝻㝼㝽㝾㝿㞀㞁㞂㞃㞄㞅㞆㞇㞈㞉㞊㞋㞌㞍㞎㞏㞐㞑㞒㞓㞔㞕㞖㞗㞘㞙㞚㞛㞜㞝㞞㞟㞠㞡㞢㞣㞤㞥㞦㞧㞨㞩㞪㞫㞬㞭㞮㞯㞰㞱㞲㞳㞴㞵㞶㞷㞸㞹㞺㞻㞼㞽㞾㞿㟀㟁㟂㟃㟄㟅㟆㟇㟈㟉㟊㟋㟌㟍㟎㟏㟐㟑㟒㟓㟔㟕㟖㟗㟘㟙㟚㟛㟜㟝㟞㟟㟠㟡㟢㟣㟤㟥㟦㟧㟨㟩㟪㟫㟬㟭㟮㟯㟰㟱㟲㟳㟴㟵㟶㟷㟸㟹㟺㟻㟼㟽㟾㟿㠀㠁㠂㠃㠄㠅㠆㠇㠈㠉㠊㠋㠌㠍㠎㠏㠐㠑㠒㠓㠔㠕㠖㠗㠘㠙㠚㠛㠜㠝㠞㠟㠠㠡㠢㠣㠤㠥㠦㠧㠨㠩㠪㠫㠬㠭㠮㠯㠰㠱㠲㠳㠴㠵㠶㠷㠸㠹㠺㠻㠼㠽㠾㠿㡀㡁㡂㡃㡄㡅㡆㡇㡈㡉㡊㡋㡌㡍㡎㡏㡐㡑㡒㡓㡔㡕㡖㡗㡘㡙㡚㡛㡜㡝㡞㡟㡠㡡㡢㡣㡤㡥㡦㡧㡨㡩㡪㡫㡬㡭㡮㡯㡰㡱㡲㡳㡴㡵㡶㡷㡸㡹㡺㡻㡼㡽㡾㡿㢀㢁㢂㢃㢄㢅㢆㢇㢈㢉㢊㢋㢌㢍㢎㢏㢐㢑㢒㢓㢔㢕㢖㢗㢘㢙㢚㢛㢜㢝㢞㢟㢠㢡㢢㢣㢤㢥㢦㢧㢨㢩㢪㢫㢬㢭㢮㢯㢰㢱㢲㢳㢴㢵㢶㢷㢸㢹㢺㢻㢼㢽㢾㢿㣀㣁㣂㣃㣄㣅㣆㣇㣈㣉㣊㣋㣌㣍㣎㣏㣐㣑㣒㣓㣔㣕㣖㣗㣘㣙㣚㣛㣜㣝㣞㣟㣠㣡㣢㣣㣤㣥㣦㣧㣨㣩㣪㣫㣬㣭㣮㣯㣰㣱㣲㣳㣴㣵㣶㣷㣸㣹㣺㣻㣼㣽㣾㣿㤀㤁㤂㤃㤄㤅㤆㤇㤈㤉㤊㤋㤌㤍㤎㤏㤐㤑㤒㤓㤔㤕㤖㤗㤘㤙㤚㤛㤜㤝㤞㤟㤠㤡㤢㤣㤤㤥㤦㤧㤨㤩㤪㤫㤬㤭㤮㤯㤰㤱㤲㤳㤴㤵㤶㤷㤸㤹㤺㤻㤼㤽㤾㤿㥀㥁㥂㥃㥄㥅㥆㥇㥈㥉㥊㥋㥌㥍㥎㥏㥐㥑㥒㥓㥔㥕㥖㥗㥘㥙㥚㥛㥜㥝㥞㥟㥠㥡㥢㥣㥤㥥㥦㥧㥨㥩㥪㥫㥬㥭㥮㥯㥰㥱㥲㥳㥴㥵㥶㥷㥸㥹㥺㥻㥼㥽㥾㥿㦀㦁㦂㦃㦄㦅㦆㦇㦈㦉㦊㦋㦌㦍㦎㦏㦐㦑㦒㦓㦔㦕㦖㦗㦘㦙㦚㦛㦜㦝㦞㦟㦠㦡㦢㦣㦤㦥㦦㦧㦨㦩㦪㦫㦬㦭㦮㦯㦰㦱㦲㦳㦴㦵㦶㦷㦸㦹㦺㦻㦼㦽㦾㦿㧀㧁㧂㧃㧄㧅㧆㧇㧈㧉㧊㧋㧌㧍㧎㧏㧐㧑㧒㧓㧔㧕㧖㧗㧘㧙㧚㧛㧜㧝㧞㧟㧠㧡㧢㧣㧤㧥㧦㧧㧨㧩㧪㧫㧬㧭㧮㧯㧰㧱㧲㧳㧴㧵㧶㧷㧸㧹㧺㧻㧼㧽㧾㧿㨀㨁㨂㨃㨄㨅㨆㨇㨈㨉㨊㨋㨌㨍㨎㨏㨐㨑㨒㨓㨔㨕㨖㨗㨘㨙㨚㨛㨜㨝㨞㨟㨠㨡㨢㨣㨤㨥㨦㨧㨨㨩㨪㨫㨬㨭㨮㨯㨰㨱㨲㨳㨴㨵㨶㨷㨸㨹㨺㨻㨼㨽㨾㨿㩀㩁㩂㩃㩄㩅㩆㩇㩈㩉㩊㩋㩌㩍㩎㩏㩐㩑㩒㩓㩔㩕㩖㩗㩘㩙㩚㩛㩜㩝㩞㩟㩠㩡㩢㩣㩤㩥㩦㩧㩨㩩㩪㩫㩬㩭㩮㩯㩰㩱㩲㩳㩴㩵㩶㩷㩸㩹㩺㩻㩼㩽㩾㩿㪀㪁㪂㪃㪄㪅㪆㪇㪈㪉㪊㪋㪌㪍㪎㪏㪐㪑㪒㪓㪔㪕㪖㪗㪘㪙㪚㪛㪜㪝㪞㪟㪠㪡㪢㪣㪤㪥㪦㪧㪨㪩㪪㪫㪬㪭㪮㪯㪰㪱㪲㪳㪴㪵㪶㪷㪸㪹㪺㪻㪼㪽㪾㪿㫀㫁㫂㫃㫄㫅㫆㫇㫈㫉㫊㫋㫌㫍㫎㫏㫐㫑㫒㫓㫔㫕㫖㫗㫘㫙㫚㫛㫜㫝㫞㫟㫠㫡㫢㫣㫤㫥㫦㫧㫨㫩㫪㫫㫬㫭㫮㫯㫰㫱㫲㫳㫴㫵㫶㫷㫸㫹㫺㫻㫼㫽㫾㫿㬀㬁㬂㬃㬄㬅㬆㬇㬈㬉㬊㬋㬌㬍㬎㬏㬐㬑㬒㬓㬔㬕㬖㬗㬘㬙㬚㬛㬜㬝㬞㬟㬠㬡㬢㬣㬤㬥㬦㬧㬨㬩㬪㬫㬬㬭㬮㬯㬰㬱㬲㬳㬴㬵㬶㬷㬸㬹㬺㬻㬼㬽㬾㬿㭀㭁㭂㭃㭄㭅㭆㭇㭈㭉㭊㭋㭌㭍㭎㭏㭐㭑㭒㭓㭔㭕㭖㭗㭘㭙㭚㭛㭜㭝㭞㭟㭠㭡㭢㭣㭤㭥㭦㭧㭨㭩㭪㭫㭬㭭㭮㭯㭰㭱㭲㭳㭴㭵㭶㭷㭸㭹㭺㭻㭼㭽㭾㭿㮀㮁㮂㮃㮄㮅㮆㮇㮈㮉㮊㮋㮌㮍㮎㮏㮐㮑㮒㮓㮔㮕㮖㮗㮘㮙㮚㮛㮜㮝㮞㮟㮠㮡㮢㮣㮤㮥㮦㮧㮨㮩㮪㮫㮬㮭㮮㮯㮰㮱㮲㮳㮴㮵㮶㮷㮸㮹㮺㮻㮼㮽㮾㮿㯀㯁㯂㯃㯄㯅㯆㯇㯈㯉㯊㯋㯌㯍㯎㯏㯐㯑㯒㯓㯔㯕㯖㯗㯘㯙㯚㯛㯜㯝㯞㯟㯠㯡㯢㯣㯤㯥㯦㯧㯨㯩㯪㯫㯬㯭㯮㯯㯰㯱㯲㯳㯴㯵㯶㯷㯸㯹㯺㯻㯼㯽㯾㯿㰀㰁㰂㰃㰄㰅㰆㰇㰈㰉㰊㰋㰌㰍㰎㰏㰐㰑㰒㰓㰔㰕㰖㰗㰘㰙㰚㰛㰜㰝㰞㰟㰠㰡㰢㰣㰤㰥㰦㰧㰨㰩㰪㰫㰬㰭㰮㰯㰰㰱㰲㰳㰴㰵㰶㰷㰸㰹㰺㰻㰼㰽㰾㰿㱀㱁㱂㱃㱄㱅㱆㱇㱈㱉㱊㱋㱌㱍㱎㱏㱐㱑㱒㱓㱔㱕㱖㱗㱘㱙㱚㱛㱜㱝㱞㱟㱠㱡㱢㱣㱤㱥㱦㱧㱨㱩㱪㱫㱬㱭㱮㱯㱰㱱㱲㱳㱴㱵㱶㱷㱸㱹㱺㱻㱼㱽㱾㱿㲀㲁㲂㲃㲄㲅㲆㲇㲈㲉㲊㲋㲌㲍㲎㲏㲐㲑㲒㲓㲔㲕㲖㲗㲘㲙㲚㲛㲜㲝㲞㲟㲠㲡㲢㲣㲤㲥㲦㲧㲨㲩㲪㲫㲬㲭㲮㲯㲰㲱㲲㲳㲴㲵㲶㲷㲸㲹㲺㲻㲼㲽㲾㲿㳀㳁㳂㳃㳄㳅㳆㳇㳈㳉㳊㳋㳌㳍㳎㳏㳐㳑㳒㳓㳔㳕㳖㳗㳘㳙㳚㳛㳜㳝㳞㳟㳠㳡㳢㳣㳤㳥㳦㳧㳨㳩㳪㳫㳬㳭㳮㳯㳰㳱㳲㳳㳴㳵㳶㳷㳸㳹㳺㳻㳼㳽㳾㳿㴀㴁㴂㴃㴄㴅㴆㴇㴈㴉㴊㴋㴌㴍㴎㴏㴐㴑㴒㴓㴔㴕㴖㴗㴘㴙㴚㴛㴜㴝㴞㴟㴠㴡㴢㴣㴤㴥㴦㴧㴨㴩㴪㴫㴬㴭㴮㴯㴰㴱㴲㴳㴴㴵㴶㴷㴸㴹㴺㴻㴼㴽㴾㴿㵀㵁㵂㵃㵄㵅㵆㵇㵈㵉㵊㵋㵌㵍㵎㵏㵐㵑㵒㵓㵔㵕㵖㵗㵘㵙㵚㵛㵜㵝㵞㵟㵠㵡㵢㵣㵤㵥㵦㵧㵨㵩㵪㵫㵬㵭㵮㵯㵰㵱㵲㵳㵴㵵㵶㵷㵸㵹㵺㵻㵼㵽㵾㵿㶀㶁㶂㶃㶄㶅㶆㶇㶈㶉㶊㶋㶌㶍㶎㶏㶐㶑㶒㶓㶔㶕㶖㶗㶘㶙㶚㶛㶜㶝㶞㶟㶠㶡㶢㶣㶤㶥㶦㶧㶨㶩㶪㶫㶬㶭㶮㶯㶰㶱㶲㶳㶴㶵㶶㶷㶸㶹㶺㶻㶼㶽㶾㶿㷀㷁㷂㷃㷄㷅㷆㷇㷈㷉㷊㷋㷌㷍㷎㷏㷐㷑㷒㷓㷔㷕㷖㷗㷘㷙㷚㷛㷜㷝㷞㷟㷠㷡㷢㷣㷤㷥㷦㷧㷨㷩㷪㷫㷬㷭㷮㷯㷰㷱㷲㷳㷴㷵㷶㷷㷸㷹㷺㷻㷼㷽㷾㷿㸀㸁㸂㸃㸄㸅㸆㸇㸈㸉㸊㸋㸌㸍㸎㸏㸐㸑㸒㸓㸔㸕㸖㸗㸘㸙㸚㸛㸜㸝㸞㸟㸠㸡㸢㸣㸤㸥㸦㸧㸨㸩㸪㸫㸬㸭㸮㸯㸰㸱㸲㸳㸴㸵㸶㸷㸸㸹㸺㸻㸼㸽㸾㸿㹀㹁㹂㹃㹄㹅㹆㹇㹈㹉㹊㹋㹌㹍㹎㹏㹐㹑㹒㹓㹔㹕㹖㹗㹘㹙㹚㹛㹜㹝㹞㹟㹠㹡㹢㹣㹤㹥㹦㹧㹨㹩㹪㹫㹬㹭㹮㹯㹰㹱㹲㹳㹴㹵㹶㹷㹸㹹㹺㹻㹼㹽㹾㹿㺀㺁㺂㺃㺄㺅㺆㺇㺈㺉㺊㺋㺌㺍㺎㺏㺐㺑㺒㺓㺔㺕㺖㺗㺘㺙㺚㺛㺜㺝㺞㺟㺠㺡㺢㺣㺤㺥㺦㺧㺨㺩㺪㺫㺬㺭㺮㺯㺰㺱㺲㺳㺴㺵㺶㺷㺸㺹㺺㺻㺼㺽㺾㺿㻀㻁㻂㻃㻄㻅㻆㻇㻈㻉㻊㻋㻌㻍㻎㻏㻐㻑㻒㻓㻔㻕㻖㻗㻘㻙㻚㻛㻜㻝㻞㻟㻠㻡㻢㻣㻤㻥㻦㻧㻨㻩㻪㻫㻬㻭㻮㻯㻰㻱㻲㻳㻴㻵㻶㻷㻸㻹㻺㻻㻼㻽㻾㻿㼀㼁㼂㼃㼄㼅㼆㼇㼈㼉㼊㼋㼌㼍㼎㼏㼐㼑㼒㼓㼔㼕㼖㼗㼘㼙㼚㼛㼜㼝㼞㼟㼠㼡㼢㼣㼤㼥㼦㼧㼨㼩㼪㼫㼬㼭㼮㼯㼰㼱㼲㼳㼴㼵㼶㼷㼸㼹㼺㼻㼼㼽㼾㼿㽀㽁㽂㽃㽄㽅㽆㽇㽈㽉㽊㽋㽌㽍㽎㽏㽐㽑㽒㽓㽔㽕㽖㽗㽘㽙㽚㽛㽜㽝㽞㽟㽠㽡㽢㽣㽤㽥㽦㽧㽨㽩㽪㽫㽬㽭㽮㽯㽰㽱㽲㽳㽴㽵㽶㽷㽸㽹㽺㽻㽼㽽㽾㽿㾀㾁㾂㾃㾄㾅㾆㾇㾈㾉㾊㾋㾌㾍㾎㾏㾐㾑㾒㾓㾔㾕㾖㾗㾘㾙㾚㾛㾜㾝㾞㾟㾠㾡㾢㾣㾤㾥㾦㾧㾨㾩㾪㾫㾬㾭㾮㾯㾰㾱㾲㾳㾴㾵㾶㾷㾸㾹㾺㾻㾼㾽㾾㾿㿀㿁㿂㿃㿄㿅㿆㿇㿈㿉㿊㿋㿌㿍㿎㿏㿐㿑㿒㿓㿔㿕㿖㿗㿘㿙㿚㿛㿜㿝㿞㿟㿠㿡㿢㿣㿤㿥㿦㿧㿨㿩㿪㿫㿬㿭㿮㿯㿰㿱㿲㿳㿴㿵㿶㿷㿸㿹㿺㿻㿼㿽㿾㿿䀀䀁䀂䀃䀄䀅䀆䀇䀈䀉䀊䀋䀌䀍䀎䀏䀐䀑䀒䀓䀔䀕䀖䀗䀘䀙䀚䀛䀜䀝䀞䀟䀠䀡䀢䀣䀤䀥䀦䀧䀨䀩䀪䀫䀬䀭䀮䀯䀰䀱䀲䀳䀴䀵䀶䀷䀸䀹䀺䀻䀼䀽䀾䀿䁀䁁䁂䁃䁄䁅䁆䁇䁈䁉䁊䁋䁌䁍䁎䁏䁐䁑䁒䁓䁔䁕䁖䁗䁘䁙䁚䁛䁜䁝䁞䁟䁠䁡䁢䁣䁤䁥䁦䁧䁨䁩䁪䁫䁬䁭䁮䁯䁰䁱䁲䁳䁴䁵䁶䁷䁸䁹䁺䁻䁼䁽䁾䁿䂀䂁䂂䂃䂄䂅䂆䂇䂈䂉䂊䂋䂌䂍䂎䂏䂐䂑䂒䂓䂔䂕䂖䂗䂘䂙䂚䂛䂜䂝䂞䂟䂠䂡䂢䂣䂤䂥䂦䂧䂨䂩䂪䂫䂬䂭䂮䂯䂰䂱䂲䂳䂴䂵䂶䂷䂸䂹䂺䂻䂼䂽䂾䂿䃀䃁䃂䃃䃄䃅䃆䃇䃈䃉䃊䃋䃌䃍䃎䃏䃐䃑䃒䃓䃔䃕䃖䃗䃘䃙䃚䃛䃜䃝䃞䃟䃠䃡䃢䃣䃤䃥䃦䃧䃨䃩䃪䃫䃬䃭䃮䃯䃰䃱䃲䃳䃴䃵䃶䃷䃸䃹䃺䃻䃼䃽䃾䃿䄀䄁䄂䄃䄄䄅䄆䄇䄈䄉䄊䄋䄌䄍䄎䄏䄐䄑䄒䄓䄔䄕䄖䄗䄘䄙䄚䄛䄜䄝䄞䄟䄠䄡䄢䄣䄤䄥䄦䄧䄨䄩䄪䄫䄬䄭䄮䄯䄰䄱䄲䄳䄴䄵䄶䄷䄸䄹䄺䄻䄼䄽䄾䄿䅀䅁䅂䅃䅄䅅䅆䅇䅈䅉䅊䅋䅌䅍䅎䅏䅐䅑䅒䅓䅔䅕䅖䅗䅘䅙䅚䅛䅜䅝䅞䅟䅠䅡䅢䅣䅤䅥䅦䅧䅨䅩䅪䅫䅬䅭䅮䅯䅰䅱䅲䅳䅴䅵䅶䅷䅸䅹䅺䅻䅼䅽䅾䅿䆀䆁䆂䆃䆄䆅䆆䆇䆈䆉䆊䆋䆌䆍䆎䆏䆐䆑䆒䆓䆔䆕䆖䆗䆘䆙䆚䆛䆜䆝䆞䆟䆠䆡䆢䆣䆤䆥䆦䆧䆨䆩䆪䆫䆬䆭䆮䆯䆰䆱䆲䆳䆴䆵䆶䆷䆸䆹䆺䆻䆼䆽䆾䆿䇀䇁䇂䇃䇄䇅䇆䇇䇈䇉䇊䇋䇌䇍䇎䇏䇐䇑䇒䇓䇔䇕䇖䇗䇘䇙䇚䇛䇜䇝䇞䇟䇠䇡䇢䇣䇤䇥䇦䇧䇨䇩䇪䇫䇬䇭䇮䇯䇰䇱䇲䇳䇴䇵䇶䇷䇸䇹䇺䇻䇼䇽䇾䇿䈀䈁䈂䈃䈄䈅䈆䈇䈈䈉䈊䈋䈌䈍䈎䈏䈐䈑䈒䈓䈔䈕䈖䈗䈘䈙䈚䈛䈜䈝䈞䈟䈠䈡䈢䈣䈤䈥䈦䈧䈨䈩䈪䈫䈬䈭䈮䈯䈰䈱䈲䈳䈴䈵䈶䈷䈸䈹䈺䈻䈼䈽䈾䈿䉀䉁䉂䉃䉄䉅䉆䉇䉈䉉䉊䉋䉌䉍䉎䉏䉐䉑䉒䉓䉔䉕䉖䉗䉘䉙䉚䉛䉜䉝䉞䉟䉠䉡䉢䉣䉤䉥䉦䉧䉨䉩䉪䉫䉬䉭䉮䉯䉰䉱䉲䉳䉴䉵䉶䉷䉸䉹䉺䉻䉼䉽䉾䉿䊀䊁䊂䊃䊄䊅䊆䊇䊈䊉䊊䊋䊌䊍䊎䊏䊐䊑䊒䊓䊔䊕䊖䊗䊘䊙䊚䊛䊜䊝䊞䊟䊠䊡䊢䊣䊤䊥䊦䊧䊨䊩䊪䊫䊬䊭䊮䊯䊰䊱䊲䊳䊴䊵䊶䊷䊸䊹䊺䊻䊼䊽䊾䊿䋀䋁䋂䋃䋄䋅䋆䋇䋈䋉䋊䋋䋌䋍䋎䋏䋐䋑䋒䋓䋔䋕䋖䋗䋘䋙䋚䋛䋜䋝䋞䋟䋠䋡䋢䋣䋤䋥䋦䋧䋨䋩䋪䋫䋬䋭䋮䋯䋰䋱䋲䋳䋴䋵䋶䋷䋸䋹䋺䋻䋼䋽䋾䋿䌀䌁䌂䌃䌄䌅䌆䌇䌈䌉䌊䌋䌌䌍䌎䌏䌐䌑䌒䌓䌔䌕䌖䌗䌘䌙䌚䌛䌜䌝䌞䌟䌠䌡䌢䌣䌤䌥䌦䌧䌨䌩䌪䌫䌬䌭䌮䌯䌰䌱䌲䌳䌴䌵䌶䌷䌸䌹䌺䌻䌼䌽䌾䌿䍀䍁䍂䍃䍄䍅䍆䍇䍈䍉䍊䍋䍌䍍䍎䍏䍐䍑䍒䍓䍔䍕䍖䍗䍘䍙䍚䍛䍜䍝䍞䍟䍠䍡䍢䍣䍤䍥䍦䍧䍨䍩䍪䍫䍬䍭䍮䍯䍰䍱䍲䍳䍴䍵䍶䍷䍸䍹䍺䍻䍼䍽䍾䍿䎀䎁䎂䎃䎄䎅䎆䎇䎈䎉䎊䎋䎌䎍䎎䎏䎐䎑䎒䎓䎔䎕䎖䎗䎘䎙䎚䎛䎜䎝䎞䎟䎠䎡䎢䎣䎤䎥䎦䎧䎨䎩䎪䎫䎬䎭䎮䎯䎰䎱䎲䎳䎴䎵䎶䎷䎸䎹䎺䎻䎼䎽䎾䎿䏀䏁䏂䏃䏄䏅䏆䏇䏈䏉䏊䏋䏌䏍䏎䏏䏐䏑䏒䏓䏔䏕䏖䏗䏘䏙䏚䏛䏜䏝䏞䏟䏠䏡䏢䏣䏤䏥䏦䏧䏨䏩䏪䏫䏬䏭䏮䏯䏰䏱䏲䏳䏴䏵䏶䏷䏸䏹䏺䏻䏼䏽䏾䏿䐀䐁䐂䐃䐄䐅䐆䐇䐈䐉䐊䐋䐌䐍䐎䐏䐐䐑䐒䐓䐔䐕䐖䐗䐘䐙䐚䐛䐜䐝䐞䐟䐠䐡䐢䐣䐤䐥䐦䐧䐨䐩䐪䐫䐬䐭䐮䐯䐰䐱䐲䐳䐴䐵䐶䐷䐸䐹䐺䐻䐼䐽䐾䐿䑀䑁䑂䑃䑄䑅䑆䑇䑈䑉䑊䑋䑌䑍䑎䑏䑐䑑䑒䑓䑔䑕䑖䑗䑘䑙䑚䑛䑜䑝䑞䑟䑠䑡䑢䑣䑤䑥䑦䑧䑨䑩䑪䑫䑬䑭䑮䑯䑰䑱䑲䑳䑴䑵䑶䑷䑸䑹䑺䑻䑼䑽䑾䑿䒀䒁䒂䒃䒄䒅䒆䒇䒈䒉䒊䒋䒌䒍䒎䒏䒐䒑䒒䒓䒔䒕䒖䒗䒘䒙䒚䒛䒜䒝䒞䒟䒠䒡䒢䒣䒤䒥䒦䒧䒨䒩䒪䒫䒬䒭䒮䒯䒰䒱䒲䒳䒴䒵䒶䒷䒸䒹䒺䒻䒼䒽䒾䒿䓀䓁䓂䓃䓄䓅䓆䓇䓈䓉䓊䓋䓌䓍䓎䓏䓐䓑䓒䓓䓔䓕䓖䓗䓘䓙䓚䓛䓜䓝䓞䓟䓠䓡䓢䓣䓤䓥䓦䓧䓨䓩䓪䓫䓬䓭䓮䓯䓰䓱䓲䓳䓴䓵䓶䓷䓸䓹䓺䓻䓼䓽䓾䓿䔀䔁䔂䔃䔄䔅䔆䔇䔈䔉䔊䔋䔌䔍䔎䔏䔐䔑䔒䔓䔔䔕䔖䔗䔘䔙䔚䔛䔜䔝䔞䔟䔠䔡䔢䔣䔤䔥䔦䔧䔨䔩䔪䔫䔬䔭䔮䔯䔰䔱䔲䔳䔴䔵䔶䔷䔸䔹䔺䔻䔼䔽䔾䔿䕀䕁䕂䕃䕄䕅䕆䕇䕈䕉䕊䕋䕌䕍䕎䕏䕐䕑䕒䕓䕔䕕䕖䕗䕘䕙䕚䕛䕜䕝䕞䕟䕠䕡䕢䕣䕤䕥䕦䕧䕨䕩䕪䕫䕬䕭䕮䕯䕰䕱䕲䕳䕴䕵䕶䕷䕸䕹䕺䕻䕼䕽䕾䕿䖀䖁䖂䖃䖄䖅䖆䖇䖈䖉䖊䖋䖌䖍䖎䖏䖐䖑䖒䖓䖔䖕䖖䖗䖘䖙䖚䖛䖜䖝䖞䖟䖠䖡䖢䖣䖤䖥䖦䖧䖨䖩䖪䖫䖬䖭䖮䖯䖰䖱䖲䖳䖴䖵䖶䖷䖸䖹䖺䖻䖼䖽䖾䖿䗀䗁䗂䗃䗄䗅䗆䗇䗈䗉䗊䗋䗌䗍䗎䗏䗐䗑䗒䗓䗔䗕䗖䗗䗘䗙䗚䗛䗜䗝䗞䗟䗠䗡䗢䗣䗤䗥䗦䗧䗨䗩䗪䗫䗬䗭䗮䗯䗰䗱䗲䗳䗴䗵䗶䗷䗸䗹䗺䗻䗼䗽䗾䗿䘀䘁䘂䘃䘄䘅䘆䘇䘈䘉䘊䘋䘌䘍䘎䘏䘐䘑䘒䘓䘔䘕䘖䘗䘘䘙䘚䘛䘜䘝䘞䘟䘠䘡䘢䘣䘤䘥䘦䘧䘨䘩䘪䘫䘬䘭䘮䘯䘰䘱䘲䘳䘴䘵䘶䘷䘸䘹䘺䘻䘼䘽䘾䘿䙀䙁䙂䙃䙄䙅䙆䙇䙈䙉䙊䙋䙌䙍䙎䙏䙐䙑䙒䙓䙔䙕䙖䙗䙘䙙䙚䙛䙜䙝䙞䙟䙠䙡䙢䙣䙤䙥䙦䙧䙨䙩䙪䙫䙬䙭䙮䙯䙰䙱䙲䙳䙴䙵䙶䙷䙸䙹䙺䙻䙼䙽䙾䙿䚀䚁䚂䚃䚄䚅䚆䚇䚈䚉䚊䚋䚌䚍䚎䚏䚐䚑䚒䚓䚔䚕䚖䚗䚘䚙䚚䚛䚜䚝䚞䚟䚠䚡䚢䚣䚤䚥䚦䚧䚨䚩䚪䚫䚬䚭䚮䚯䚰䚱䚲䚳䚴䚵䚶䚷䚸䚹䚺䚻䚼䚽䚾䚿䛀䛁䛂䛃䛄䛅䛆䛇䛈䛉䛊䛋䛌䛍䛎䛏䛐䛑䛒䛓䛔䛕䛖䛗䛘䛙䛚䛛䛜䛝䛞䛟䛠䛡䛢䛣䛤䛥䛦䛧䛨䛩䛪䛫䛬䛭䛮䛯䛰䛱䛲䛳䛴䛵䛶䛷䛸䛹䛺䛻䛼䛽䛾䛿䜀䜁䜂䜃䜄䜅䜆䜇䜈䜉䜊䜋䜌䜍䜎䜏䜐䜑䜒䜓䜔䜕䜖䜗䜘䜙䜚䜛䜜䜝䜞䜟䜠䜡䜢䜣䜤䜥䜦䜧䜨䜩䜪䜫䜬䜭䜮䜯䜰䜱䜲䜳䜴䜵䜶䜷䜸䜹䜺䜻䜼䜽䜾䜿䝀䝁䝂䝃䝄䝅䝆䝇䝈䝉䝊䝋䝌䝍䝎䝏䝐䝑䝒䝓䝔䝕䝖䝗䝘䝙䝚䝛䝜䝝䝞䝟䝠䝡䝢䝣䝤䝥䝦䝧䝨䝩䝪䝫䝬䝭䝮䝯䝰䝱䝲䝳䝴䝵䝶䝷䝸䝹䝺䝻䝼䝽䝾䝿䞀䞁䞂䞃䞄䞅䞆䞇䞈䞉䞊䞋䞌䞍䞎䞏䞐䞑䞒䞓䞔䞕䞖䞗䞘䞙䞚䞛䞜䞝䞞䞟䞠䞡䞢䞣䞤䞥䞦䞧䞨䞩䞪䞫䞬䞭䞮䞯䞰䞱䞲䞳䞴䞵䞶䞷䞸䞹䞺䞻䞼䞽䞾䞿䟀䟁䟂䟃䟄䟅䟆䟇䟈䟉䟊䟋䟌䟍䟎䟏䟐䟑䟒䟓䟔䟕䟖䟗䟘䟙䟚䟛䟜䟝䟞䟟䟠䟡䟢䟣䟤䟥䟦䟧䟨䟩䟪䟫䟬䟭䟮䟯䟰䟱䟲䟳䟴䟵䟶䟷䟸䟹䟺䟻䟼䟽䟾䟿䠀䠁䠂䠃䠄䠅䠆䠇䠈䠉䠊䠋䠌䠍䠎䠏䠐䠑䠒䠓䠔䠕䠖䠗䠘䠙䠚䠛䠜䠝䠞䠟䠠䠡䠢䠣䠤䠥䠦䠧䠨䠩䠪䠫䠬䠭䠮䠯䠰䠱䠲䠳䠴䠵䠶䠷䠸䠹䠺䠻䠼䠽䠾䠿䡀䡁䡂䡃䡄䡅䡆䡇䡈䡉䡊䡋䡌䡍䡎䡏䡐䡑䡒䡓䡔䡕䡖䡗䡘䡙䡚䡛䡜䡝䡞䡟䡠䡡䡢䡣䡤䡥䡦䡧䡨䡩䡪䡫䡬䡭䡮䡯䡰䡱䡲䡳䡴䡵䡶䡷䡸䡹䡺䡻䡼䡽䡾䡿䢀䢁䢂䢃䢄䢅䢆䢇䢈䢉䢊䢋䢌䢍䢎䢏䢐䢑䢒䢓䢔䢕䢖䢗䢘䢙䢚䢛䢜䢝䢞䢟䢠䢡䢢䢣䢤䢥䢦䢧䢨䢩䢪䢫䢬䢭䢮䢯䢰䢱䢲䢳䢴䢵䢶䢷䢸䢹䢺䢻䢼䢽䢾䢿䣀䣁䣂䣃䣄䣅䣆䣇䣈䣉䣊䣋䣌䣍䣎䣏䣐䣑䣒䣓䣔䣕䣖䣗䣘䣙䣚䣛䣜䣝䣞䣟䣠䣡䣢䣣䣤䣥䣦䣧䣨䣩䣪䣫䣬䣭䣮䣯䣰䣱䣲䣳䣴䣵䣶䣷䣸䣹䣺䣻䣼䣽䣾䣿䤀䤁䤂䤃䤄䤅䤆䤇䤈䤉䤊䤋䤌䤍䤎䤏䤐䤑䤒䤓䤔䤕䤖䤗䤘䤙䤚䤛䤜䤝䤞䤟䤠䤡䤢䤣䤤䤥䤦䤧䤨䤩䤪䤫䤬䤭䤮䤯䤰䤱䤲䤳䤴䤵䤶䤷䤸䤹䤺䤻䤼䤽䤾䤿䥀䥁䥂䥃䥄䥅䥆䥇䥈䥉䥊䥋䥌䥍䥎䥏䥐䥑䥒䥓䥔䥕䥖䥗䥘䥙䥚䥛䥜䥝䥞䥟䥠䥡䥢䥣䥤䥥䥦䥧䥨䥩䥪䥫䥬䥭䥮䥯䥰䥱䥲䥳䥴䥵䥶䥷䥸䥹䥺䥻䥼䥽䥾䥿䦀䦁䦂䦃䦄䦅䦆䦇䦈䦉䦊䦋䦌䦍䦎䦏䦐䦑䦒䦓䦔䦕䦖䦗䦘䦙䦚䦛䦜䦝䦞䦟䦠䦡䦢䦣䦤䦥䦦䦧䦨䦩䦪䦫䦬䦭䦮䦯䦰䦱䦲䦳䦴䦵䦶䦷䦸䦹䦺䦻䦼䦽䦾䦿䧀䧁䧂䧃䧄䧅䧆䧇䧈䧉䧊䧋䧌䧍䧎䧏䧐䧑䧒䧓䧔䧕䧖䧗䧘䧙䧚䧛䧜䧝䧞䧟䧠䧡䧢䧣䧤䧥䧦䧧䧨䧩䧪䧫䧬䧭䧮䧯䧰䧱䧲䧳䧴䧵䧶䧷䧸䧹䧺䧻䧼䧽䧾䧿䨀䨁䨂䨃䨄䨅䨆䨇䨈䨉䨊䨋䨌䨍䨎䨏䨐䨑䨒䨓䨔䨕䨖䨗䨘䨙䨚䨛䨜䨝䨞䨟䨠䨡䨢䨣䨤䨥䨦䨧䨨䨩䨪䨫䨬䨭䨮䨯䨰䨱䨲䨳䨴䨵䨶䨷䨸䨹䨺䨻䨼䨽䨾䨿䩀䩁䩂䩃䩄䩅䩆䩇䩈䩉䩊䩋䩌䩍䩎䩏䩐䩑䩒䩓䩔䩕䩖䩗䩘䩙䩚䩛䩜䩝䩞䩟䩠䩡䩢䩣䩤䩥䩦䩧䩨䩩䩪䩫䩬䩭䩮䩯䩰䩱䩲䩳䩴䩵䩶䩷䩸䩹䩺䩻䩼䩽䩾䩿䪀䪁䪂䪃䪄䪅䪆䪇䪈䪉䪊䪋䪌䪍䪎䪏䪐䪑䪒䪓䪔䪕䪖䪗䪘䪙䪚䪛䪜䪝䪞䪟䪠䪡䪢䪣䪤䪥䪦䪧䪨䪩䪪䪫䪬䪭䪮䪯䪰䪱䪲䪳䪴䪵䪶䪷䪸䪹䪺䪻䪼䪽䪾䪿䫀䫁䫂䫃䫄䫅䫆䫇䫈䫉䫊䫋䫌䫍䫎䫏䫐䫑䫒䫓䫔䫕䫖䫗䫘䫙䫚䫛䫜䫝䫞䫟䫠䫡䫢䫣䫤䫥䫦䫧䫨䫩䫪䫫䫬䫭䫮䫯䫰䫱䫲䫳䫴䫵䫶䫷䫸䫹䫺䫻䫼䫽䫾䫿䬀䬁䬂䬃䬄䬅䬆䬇䬈䬉䬊䬋䬌䬍䬎䬏䬐䬑䬒䬓䬔䬕䬖䬗䬘䬙䬚䬛䬜䬝䬞䬟䬠䬡䬢䬣䬤䬥䬦䬧䬨䬩䬪䬫䬬䬭䬮䬯䬰䬱䬲䬳䬴䬵䬶䬷䬸䬹䬺䬻䬼䬽䬾䬿䭀䭁䭂䭃䭄䭅䭆䭇䭈䭉䭊䭋䭌䭍䭎䭏䭐䭑䭒䭓䭔䭕䭖䭗䭘䭙䭚䭛䭜䭝䭞䭟䭠䭡䭢䭣䭤䭥䭦䭧䭨䭩䭪䭫䭬䭭䭮䭯䭰䭱䭲䭳䭴䭵䭶䭷䭸䭹䭺䭻䭼䭽䭾䭿䮀䮁䮂䮃䮄䮅䮆䮇䮈䮉䮊䮋䮌䮍䮎䮏䮐䮑䮒䮓䮔䮕䮖䮗䮘䮙䮚䮛䮜䮝䮞䮟䮠䮡䮢䮣䮤䮥䮦䮧䮨䮩䮪䮫䮬䮭䮮䮯䮰䮱䮲䮳䮴䮵䮶䮷䮸䮹䮺䮻䮼䮽䮾䮿䯀䯁䯂䯃䯄䯅䯆䯇䯈䯉䯊䯋䯌䯍䯎䯏䯐䯑䯒䯓䯔䯕䯖䯗䯘䯙䯚䯛䯜䯝䯞䯟䯠䯡䯢䯣䯤䯥䯦䯧䯨䯩䯪䯫䯬䯭䯮䯯䯰䯱䯲䯳䯴䯵䯶䯷䯸䯹䯺䯻䯼䯽䯾䯿䰀䰁䰂䰃䰄䰅䰆䰇䰈䰉䰊䰋䰌䰍䰎䰏䰐䰑䰒䰓䰔䰕䰖䰗䰘䰙䰚䰛䰜䰝䰞䰟䰠䰡䰢䰣䰤䰥䰦䰧䰨䰩䰪䰫䰬䰭䰮䰯䰰䰱䰲䰳䰴䰵䰶䰷䰸䰹䰺䰻䰼䰽䰾䰿䱀䱁䱂䱃䱄䱅䱆䱇䱈䱉䱊䱋䱌䱍䱎䱏䱐䱑䱒䱓䱔䱕䱖䱗䱘䱙䱚䱛䱜䱝䱞䱟䱠䱡䱢䱣䱤䱥䱦䱧䱨䱩䱪䱫䱬䱭䱮䱯䱰䱱䱲䱳䱴䱵䱶䱷䱸䱹䱺䱻䱼䱽䱾䱿䲀䲁䲂䲃䲄䲅䲆䲇䲈䲉䲊䲋䲌䲍䲎䲏䲐䲑䲒䲓䲔䲕䲖䲗䲘䲙䲚䲛䲜䲝䲞䲟䲠䲡䲢䲣䲤䲥䲦䲧䲨䲩䲪䲫䲬䲭䲮䲯䲰䲱䲲䲳䲴䲵䲶䲷䲸䲹䲺䲻䲼䲽䲾䲿䳀䳁䳂䳃䳄䳅䳆䳇䳈䳉䳊䳋䳌䳍䳎䳏䳐䳑䳒䳓䳔䳕䳖䳗䳘䳙䳚䳛䳜䳝䳞䳟䳠䳡䳢䳣䳤䳥䳦䳧䳨䳩䳪䳫䳬䳭䳮䳯䳰䳱䳲䳳䳴䳵䳶䳷䳸䳹䳺䳻䳼䳽䳾䳿䴀䴁䴂䴃䴄䴅䴆䴇䴈䴉䴊䴋䴌䴍䴎䴏䴐䴑䴒䴓䴔䴕䴖䴗䴘䴙䴚䴛䴜䴝䴞䴟䴠䴡䴢䴣䴤䴥䴦䴧䴨䴩䴪䴫䴬䴭䴮䴯䴰䴱䴲䴳䴴䴵䴶䴷䴸䴹䴺䴻䴼䴽䴾䴿䵀䵁䵂䵃䵄䵅䵆䵇䵈䵉䵊䵋䵌䵍䵎䵏䵐䵑䵒䵓䵔䵕䵖䵗䵘䵙䵚䵛䵜䵝䵞䵟䵠䵡䵢䵣䵤䵥䵦䵧䵨䵩䵪䵫䵬䵭䵮䵯䵰䵱䵲䵳䵴䵵䵶䵷䵸䵹䵺䵻䵼䵽䵾䵿䶀䶁䶂䶃䶄䶅䶆䶇䶈䶉䶊䶋䶌䶍䶎䶏䶐䶑䶒䶓䶔䶕䶖䶗䶘䶙䶚䶛䶜䶝䶞䶟䶠䶡䶢䶣䶤䶥䶦䶧䶨䶩䶪䶫䶬䶭䶮䶯䶰䶱䶲䶳䶴䶵䶶䶷䶸䶹䶺䶻䶼䶽䶾䶿䷀䷁䷂䷃䷄䷅䷆䷇䷈䷉䷊䷋䷌䷍䷎䷏䷐䷑䷒䷓䷔䷕䷖䷗䷘䷙䷚䷛䷜䷝䷞䷟䷠䷡䷢䷣䷤䷥䷦䷧䷨䷩䷪䷫䷬䷭䷮䷯䷰䷱䷲䷳䷴䷵䷶䷷䷸䷹䷺䷻䷼䷽䷾䷿乥乲兙兛兝兞兡兣兺匁厼叾哛唜唟喸嗧囕夞巼怾旕朩朰栍桛椧烪猠瓧瓩瓰瓱瓲瓼甅硛硳穒縇莻虄襨迲闏鞥啊腌錒锕阿哀哎唉埃挨溾銰鎄锿凒啀嘊捱敱敳溰癌皑皚磑娾昹毐濭矮蔼藹譪躷霭靄伌僾叆嗳噯塧壒嫒嬡愛懓懝暧曖爱瑷璦皧瞹砹硋碍礙艾薆譺賹鑀隘靉餲馤鱫鴱侒偣啽媕安峖庵桉氨痷盦盫腤菴萻葊蓭誝諳谙鞌鞍韽馣鮟鵪鶕鹌儑玵雸俺唵垵埯揞罯銨铵堓屵岸按晻暗案洝胺荌豻貋錌闇隌黯肮骯岇昂昻枊盎醠凹柪梎熬爊軪厫嗷嗸嶅廒慠摮敖滶獒獓璈磝翱翶翺聱蔜螯謷謸遨鏖隞骜鰲鳌鷔鼇媪媼抝艹芺袄襖镺傲坳垇墺奡奥奧嫯岙岰嶴懊拗擙澚澳鏊隩驁丷仈八叭吧哵夿岜巴扒扷捌朳柭玐疤笆粑羓芭蚆豝釟魞鲃叐妭抜拔炦癹胈茇菝詙跋軷颰魃鼥把鈀钯靶坝垻壩弝欛灞爸矲罢罷耙覇跁霸鮁鲅挀掰白佰捭摆擺柏栢瓸百竡粨絔襬庍拜拝敗猈稗粺薭贁败韛扳搬攽斑斒班瘢癍肦般螌褩辬頒颁鳻坂岅昄板版瓪粄舨蝂鈑钣闆阪魬伴办半坢姅怑扮拌湴瓣秚絆绊辦鉡靽垹帮幇幚幫捠梆浜縍邦邫鞤榜牓綁绑膀髈傍塝挷搒棒棓玤磅稖艕蒡蚌蜯謗谤鎊镑佨剝勹包孢枹煲笣胞苞蕔裦褒襃闁齙龅窇薄雹保堡堢媬宝宲寚寳寶怉珤緥葆藵褓賲靌飹飽饱駂鳵鴇鸨儤勽嚗報忁报抱暴曓爆犦菢虣蚫袌豹趵鉋鑤铇骲髱鮑鲍卑庳悲揹杯柸桮椑盃碑背藣陂鵯鹎北鉳俻倍偝偹備僃备孛悖惫愂憊昁梖焙牬犕狈狽珼琲碚禙糒苝蓓蛽被褙誖貝贝軰輩辈邶郥鄁鋇鐾钡鞁鞴骳呗唄喯奔栟泍漰犇錛锛奙本楍畚翉苯倴坋坌捹撪桳渀笨逩伻嗙嘣奟崩嵭痭祊絣綳繃绷閍甭甮埄埲琣琫菶鞛塴揼泵甏蹦迸逬鏰镚偪屄楅榌毴螕豍逼鎞鰏鲾鵖嬶荸鼻佊俾匕啚夶妣彼朼柀比毞沘疕秕笔筆粃聛舭貏鄙佖咇哔嗶坒堛壁奰妼婢嬖币幣幤庇廦弊弻弼彃必怭怶愊愎敝斃朇柲梐毕毖毙湢滗滭潷濞煏熚狴獘獙珌璧畀畁畢疪痹痺皕睤睥碧禆筚箅箆篦篳粊綼縪繴罼腷臂芘苾荜萆萞蓖蓽蔽薜蜌袐襅襞襣觱詖诐貱賁贔贲赑跸蹕躃躄避邲鄨鄪鉍鏎鐴铋閇閉閟闭陛鞸韠飶饆馝駜驆髀髲魓鮅鷝鷩鼊炞煸牑猵獱甂砭笾箯籩糄編编萹蝙边邉邊鍽鞕鞭鯾鯿鳊匾惼扁揙碥稨窆藊褊貶贬鴘便卞变変峅弁徧忭抃昪汳汴玣緶缏艑苄覍諚變辡辧辨辩辫辮辯遍釆閞儦墂幖彪标標檦淲滮瀌熛爂猋瘭磦穮脿膘臕蔈藨謤贆鏢鑣镖镳颩颮颷飆飇飈飊飑飙飚驫骉骠髟嫑婊表裱褾諘錶俵摽鳔憋瘪癟虌蟞鱉鳖鼈龞別别徶莂蛂襒蹩彆傧儐宾彬斌梹椕槟檳汃滨濒濱濵瀕玢瑸璸繽缤虨豩豳賓賔邠鑌镔霦頻顮摈擯殡殯膑臏髌髕髩鬂鬓鬢仌仒兵冫冰掤氷蛃鋲丙偋寎怲抦昞昺柄棅炳眪禀秉稟苪邴鈵鉼陃鞆鞞餅餠饼並併倂傡垪并幷庰摒栤病窉竝誁靐鮩僠剥嶓拨撥播波溊玻癶癷盋砵碆礡紴缽菠袰蹳鉢钵餑饽驋鱍亳仢伯侼僰勃博帛愽懪挬搏桲欂泊浡淿渤煿牔狛猼瓝瓟礴秡箔簙糪肑胉脖膊舶艊萡葧袯袹襏襮謈踣郣鈸鉑鋍鎛鑮钹铂镈餺馎馛馞駁駮驳髆髉鮊鲌鵓鹁跛孹擘檗簸蘗譒啵蔔峬庯晡誧逋鈽錻钸餔鵏轐醭鳪卜卟哺捕补補鸔不佈勏吥咘埗埠布廍怖悑抪捗柨步歨歩瓿篰簿荹蔀踄部郶鈈钚餢嚓擦攃礤礸遪偲猜才材纔裁財财倸啋埰婇寀彩採棌毝睬綵跴踩采縩菜蔡傪参參叄叅喰嬠湌爘飡餐驂骖惭慙慚残殘蚕蝅蠶蠺惨慘憯朁穇黪黲儏澯灿燦璨粲薒謲仓仺伧倉傖凔嵢沧滄濸獊舱艙苍蒼螥鶬鸧欌藏鑶賶撡操糙嘈嶆慒曹曺槽漕艚蓸螬褿鏪愺懆艸草騲肏襙鄵鼜侧側冊册厕厠夨廁恻惻憡拺敇测測畟笧策筞筴箣簎粣荝萗萴蓛嵾篸埁岑涔笒噌层層嶒曽曾竲驓蹭偛叉嗏扠挿插揷杈疀臿艖銟鍤锸餷馇垞察嵖搽查査槎檫猹碴秅茬茶詧靫蹅鑔镲侘刹剎奼姹岔差汊紁衩詫诧拆肞芆釵钗侪儕喍柴犲祡豺茝囆瘥虿蠆袃訍幨掺搀摻攙梴裧襜覘觇辿鋓儃儳劖嚵壥婵嬋孱巉廛棎欃毚湹潹潺澶瀍瀺煘獑磛禅緾纏纒缠艬苂蝉螹蟐蟬蟾誗讒谗躔鄽酁鋋鑱镵饞馋丳产冁刬剗剷囅嵼幝摌斺旵浐滻灛燀產産簅繟蒇蕆諂譂讇谄醦鏟铲閳闡阐骣忏懴懺摲硟羼韂顫颤伥倀娼昌椙淐猖琩菖裮錩锠閶阊鯧鲳鼚仧仩偿償兏嘗嚐塲嫦尝常徜瑺瓺甞肠腸膓苌萇裳長镸长鱨鲿僘厂厰场場廠惝敞昶氅鋹倡唱怅悵暢焻玚瑒畅畼誯韔鬯弨怊抄欩窼訬超鈔钞嘲巢巣晁朝樔漅潮牊窲罺謿轈鄛鼂鼌吵巐炒焣煼眧麨仦仯耖觘伡俥唓砗硨莗蛼車车偖扯撦勶坼屮彻徹掣撤澈烢爡瞮硩聅迠頙嗔抻捵棽琛瞋諃謓賝郴塵宸尘忱愖敐敶晨曟栕桭梣樄沉煁瘎臣茞莀莐蔯薼螴訦諶谌軙辰迧鈂陈陳霃鷐麎墋夦硶碜磣贂趻踸鍖儭嚫榇櫬疢衬襯讖谶趁趂齓齔龀偁僜憆摚撐撑晿柽棦橕檉泟浾爯牚琤瞠碀称稱穪竀緽罉蛏蟶赪赬鏿鐣阷靗頳饓丞乗乘呈城埕堘塍塖娍宬峸惩憕懲成承挰掁揨朾枨棖椉橙檙洆溗澂澄瀓珵珹畻程窚筬絾脭荿裎誠诚郕酲鋮铖騬鯎侱庱徎悜睈逞騁骋秤吃哧喫嗤噄妛媸彨彲摛攡殦瓻痴癡眵瞝笞粚絺胵蚩螭訵誺魑鴟鵄鸱黐齝匙墀弛持池漦竾筂箎篪茌荎蚳謘貾赿踟迟迡遅遟遲鍉馳驰伬侈卶叺呎垑尺恥欼歯耻肔胣蚇袲袳裭褫豉鉹齒齿侙傺勅勑叱啻彳恜慗憏懘抶敕斥杘湁灻炽烾熾痸瘛翄翅翤翨腟赤趩遫鉓銐雴飭饬鶒鷘麶充冲嘃忡憃憧摏沖浺珫罿翀舂艟茺衝蹖崇崈漴爞緟虫蝩蟲褈隀埫宠寵揰銃铳抽搊犨犫瘳篘紬仇俦儔嬦帱幬惆愁懤栦梼椆檮燽畴疇皗稠筹籌絒綢绸菗薵裯詶讎讐踌躊酧酬醻雔雠雦丑丒偢吜杽瞅矁醜魗殠臭臰遚鮘出初岀摴榋樗貙齣刍厨媰幮廚橱櫉櫥滁犓篨耡芻蒢蒭蜍蟵豠趎蹰躇躕鉏鋤锄除雏雛鶵储儲杵椘楚楮檚濋璴础礎禇處齭齼亍俶傗儊処埱处怵憷搐敊斶欪歜泏滀珿畜矗竌竐絀绌臅触觸諔豖鄐閦黜搋膗揣膪踹巛川氚瑏穿传傳剶圌暷椽篅舡舩船輲遄僢喘堾歂舛荈踳串汌猭玔賗釧钏鶨刅摐牎牕疮瘡窓窗窻噇幢床牀傸磢闖闯创刱剏剙創怆愴吹炊龡倕垂埀捶搥桘棰槌箠腄菙錘鎚锤陲顀媋旾春暙杶椿槆橁櫄瑃箺萅蝽輴鰆鶞唇浱淳湻滣漘犉純纯脣莼蒓蓴醇醕錞陙鯙鶉鹑偆惷睶萶蠢賰戳繛趠踔逴哾啜嚽娕娖婥惙擉歠涰磭綽绰踀輟辍辵辶酫鑡餟齪龊偨玼疵縒蠀趀跐骴髊齹垐嬨慈柌濨珁瓷甆磁礠祠糍茨薋詞词辝辞辤辭雌飺餈鴜鶿鷀鹚佌此泚皉鮆伺佽刺刾庛朿栨次絘茦莿蛓螆賜赐匆囪囱忩怱悤暰枞棇樅樬漗潨熜瑽璁瞛篵繱聡聦聪聰苁茐葱蓯蔥蟌鍯鏓鏦騘驄骢丛从叢婃孮従徔徖從悰樷欉淙漎潀潈灇爜琮藂誴賨賩錝愡憁謥凑楱湊腠輳辏怚橻粗觕麁麄麤徂殂促噈媨憱猝瘄瘯簇縬脨蔟誎趗踧踿蹙蹴蹵醋顣鼀撺攛汆蹿躥鑹镩巑櫕欑穳殩熶爨窜竄篡簒催凗墔崔嵟慛摧榱槯磪縗缞脺鏙漼璀皠趡伜倅啐啛忰悴毳淬濢焠琗疩瘁竁粋粹紣綷翆翠脃脆膬膵臎萃襊顇村澊皴竴膥邨侟壿存拵刌忖寸籿搓撮瑳磋蹉遳醝鎈嵯嵳痤睉矬蒫蔖虘酂酇鹺鹾脞剉剒厝夎庴挫措莝莡蓌逪銼錯锉错咑哒嗒噠墶搭撘笚耷褡鎉鎝剳匒呾垯妲怛溚炟燵畗畣瘩笪答羍荅荙薘蟽詚跶达迏迖迚逹達鐽靼鞑韃龖龘打亣大眔繨呆呔懛獃傣歹代侢叇垈埭岱帒带帯帶廗待怠戴曃柋殆瀻玳瑇甙簤紿緿绐艜蚮蝳袋襶貣貸贷跢蹛軑軚軩轪迨逮霴靆鴏黛黱丹儋勯匰单単單妉媅担擔殚殫甔眈砃箪簞耼耽聃聸褝襌躭郸鄲酖頕亶伔刐抌掸撢撣玬瓭疸紞胆膽衴賧赕馾黕黵但僤唌啖啗啿嘾噉嚪帎惮憚憺旦柦氮沊泹淡澹狚疍瘅癉癚禫窞繵腅萏蓞蛋蜑觛訑誕诞贉霮餤饏駳髧鴠黮儅噹当澢珰璫當筜簹艡蟷裆襠鐺铛闣党挡擋攩欓灙譡讜谠黨凼圵垱壋婸宕愓档檔氹潒璗瓽盪瞊砀碭礑簜荡菪蕩蘯趤逿雼刀刂叨忉朷氘舠螩釖魛鱽捯倒壔导導岛島嶋嶌嶹捣搗擣槝祷禂禱蹈陦隝隯到噵悼椡檤焘燾瓙盗盜稲稻纛翢翿艔菿衜衟軇辺道嘚得徳德恴悳惪棏淂鍀锝的扥扽噔嬁灯燈璒登竳簦艠豋蹬戥等凳墱嶝櫈瞪磴覴邓鄧鐙镫隥仾低啲埞堤奃岻彽樀氐滴磾秪羝袛趆隄鞮唙啇嘀嚁嫡廸敌敵梑涤滌狄笛籴糴翟苖荻蔋蔐藡覿觌豴蹢迪鏑镝靮頔馰髢鸐厎呧坘坻底弤抵拞掋柢牴砥聜菧觝詆诋軧邸阺骶鯳俤偙僀地坔埅埊墑墬娣媂嶳帝弟怟慸摕旳杕枤梊棣楴焍玓珶甋眱睇碲祶禘第締缔腣苐菂蒂蔕蝃蝭螮諦谛踶递逓遆遞遰釱鉪嗲傎厧嵮巅巓巔掂攧敁槇槙滇瘨癫癲蹎顚顛颠齻典嚸奌婰敟椣点碘蒧蕇跕踮點佃坫垫墊壂奠婝店惦扂橂殿淀澱玷琔电甸癜磹簟蜔鈿钿阽電靛驔凋刁刟叼奝弴彫汈琱瞗碉簓虭蛁貂錭雕鮉鯛鲷鳭鵰鼦屌扚伄吊弔掉瘹盄窎窵竨蓧藋訋調釣鈟銚銱鋽鑃钓铞铫雿魡爹褺跌叠咥喋垤堞峌嵽幉恎惵戜挕昳曡楪殜氎牃牒瓞畳疂疉疊眣眰碟絰绖耊耋胅臷艓苵蜨蝶螲褋詄諜谍趃跮蹀迭镻鰈鲽鴩哋丁仃叮帄玎疔盯耵虰酊釘钉靪奵嵿濎艼薡鐤頂顶鼎鼑啶定忊椗矴碇碠磸聢腚萣蝊訂订錠锭顁飣饤丟丢銩铥东倲冬咚埬娻岽崠崬徚昸東氡氭涷笗苳菄蝀鮗鯟鶇鶫鸫鼕嬞懂箽董蕫諌侗働冻凍动動垌姛恫戙挏栋棟洞湩硐胨胴腖迵霘駧兜兠吺唗枓橷篼蔸都唞乧抖蚪鈄钭阧陡吋斗斣梪毭浢痘窦竇脰荳豆逗郖酘閗闘餖饾鬥鬦鬪鬬鬭剢厾嘟督醏闍阇凟匵嬻椟櫝殰毒涜渎瀆牍牘犊犢独獨瓄皾裻読讀讟读豄贕錖鑟韇韣韥騳髑黩黷堵琽睹笃篤覩賭赌妒妬度杜殬渡秺肚芏荰螙蠧蠹鍍镀靯偳媏端耑褍鍴短塅断斷椴段毈煅瑖碫簖籪緞缎腶葮躖鍛锻垖堆塠痽磓鐓鐜镦鴭頧兊兌兑对対對怼憝憞懟濧瀩碓祋綐薱譈譵轛队陮隊吨噸墩墪惇撉撴敦犜獤礅蜳蹲蹾驐盹趸躉伅庉沌潡炖燉盾砘碷踲逇遁遯鈍钝頓顿剟咄哆嚉多夛掇敠敪毲畓裰凙剫喥夺奪敓敚痥踱鈬鐸铎亸哚嚲垛垜埵奲崜挆朵朶椯綞缍趓躱躲軃鬌刴剁堕墮墯尮惰憜挅柮桗舵跥跺陊陏飿饳鵽妸妿娿婀屙俄吪囮娥峉峨峩涐珴皒睋磀莪蛾訛誐譌讹迗鈋鋨锇頟額额魤鵝鵞鹅噁枙砨頋騀鵈偔僫匎卾厄呃呝咢咹噩垩堊堨堮姶岋崿廅恶悪惡愕戹扼搤搹擜櫮歞歺湂琧砈砐硆礘腭苊萼蕚蚅蝁覨諤讍谔豟軛軶轭遌遏遻鄂鈪鍔鑩锷閼阏阨阸頞顎颚餓餩饿鰐鰪鱷鳄鶚鹗齃齶誒诶欸奀恩煾蒽峎嗯摁侕儿児兒唲峏栭洏粫而耏聏胹荋袻輀轜陑隭髵鮞鲕鴯鸸尒尓尔栮毦洱爾珥耳薾衈趰迩邇鉺铒餌饵駬二佴刵咡弍弐樲誀貮貳贰髶冹发彂沷発發乏伐傠坺垡墢姂栰橃浌疺瞂笩筏罚罰罸茷藅閥阀佱峜法灋砝鍅珐琺蕟髪髮勫噃嬏帆幡忛憣旙旛畨番籓繙翻藩轓颿飜鱕凡凢凣匥墦杋柉棥樊瀿烦煩燔璠矾礬笲籵緐繁羳膰舤舧蕃薠蘩蠜襎蹯釩鐇鐢钒鷭仮反払橎返奿嬎梵氾汎泛滼瀪犯畈盕笵範范訉販贩軓軬輽飯飰饭匚坊堏方枋汸淓牥芳蚄趽邡鈁錺钫鴋妨房肪防魴鲂仿倣旊昉昘瓬眆紡纺舫訪访髣鶭放啡妃婓婔扉暃渄猆緋绯菲蜚裶霏非靟飛飝飞餥馡騑騛鯡鲱淝肥腓蜰匪奜悱斐朏棐榧篚翡胐蕜誹诽俷剕厞吠屝废廃廢昲曊杮櫠沸濷狒疿痱癈肺胇芾萉蟦費费鐨镄陫靅鼣分吩帉昐朆梤棻氛竕紛纷翂芬衯訜躮酚鈖雰餴饙馚坟墳妢岎幩朌枌棼橨汾濆炃焚燌燓獖羒羵蒶蕡蚠蚡豮豶轒鐼隫馩魵黂鼖鼢粉黺份偾僨奋奮弅忿愤憤瀵瞓秎粪糞膹鱝鲼丰仹偑僼凨凬凮堼妦寷封峯峰崶枫桻楓檒沣沨渢灃烽犎猦琒疯瘋盽砜碸篈葑蘴蜂蠭豐鄷酆鋒鎽鏠锋霻靊風飌风麷冯堸夆摓浲溄漨綘縫缝艂逢馮唪覂諷讽俸凤奉湗焨煈賵赗鳯鳳鴌覅仏佛坲梻紑否妚殕缶缹缻雬鴀伕呋夫妋姇娐孵尃怤懯敷旉柎玞砆稃筟粰糐紨綒肤胕膚荂荴衭趺跗邞鄜酜鈇鳺麩麬麱麸乀伏俘凫刜匐咈哹垘孚岪巿帗幅幞弗怫扶拂服枎柫栿桴棴榑氟泭洑浮涪澓炥烰玸琈甶畉畐癁砩祓福稪符笰箙紱紼絥綍绂绋罘罦翇艀艴芙芣苻茀茯莩菔葍虙蚨蜉蝠袚袱襆襥諨豧踾輻辐郛鉘鉜韍韨颫髴鮄鮲鳧鳬鴔鵩鶝黻乶俌俛俯呒嘸府弣抚拊捬撫斧椨滏焤甫盙簠脯腐腑蜅輔辅郙釜釡阝頫鬴黼付偩傅冨副咐坿复妇婏婦媍嬔富峊彿復椱父祔禣秿竎緮縛缚腹萯蕧蚥蚹蛗蝜蝮袝複褔覄覆訃詂讣負賦賻负赋赙赴輹鍑鍢阜附馥駙驸鮒鰒鲋鳆嘎嘠旮噶尜釓錷钆尕玍尬魀侅垓姟峐晐畡祴絯荄該该豥賅賌赅郂陔忋改絠丐乢匃匄戤摡概槩槪溉漑瓂盖葢蓋鈣钙凲坩尲尴尶尷干忓攼杆柑泔漧玕甘疳矸竿筸粓肝苷迀酐魐鳱仠感擀敢桿橄澉澸皯秆稈簳芉衦赶趕鱤鳡倝凎幹旰榦檊汵淦灨盰紺绀詌贑贛赣骭冈冮刚剛堈堽岡掆摃棡牨犅疘矼綱纲缸罁罡肛釭鋼鎠钢岗崗港戅戆戇杠槓焵焹筻槔槹橰櫜皋皐睾篙糕羔膏臯韟餻高髙鷎鷱鼛夰搞杲槀槁檺稁稾稿縞缟菒藁藳鎬镐勂吿告峼祮祰禞筶誥诰郜鋯锆割哥圪彁戈戓戨搁擱歌滒牫犵疙肐胳袼謌鎶饹鴚鴿鸽佫佮匌呄嗝塥愅挌搿敋格槅櫊滆獦膈臵葛蛒蛤裓觡諽輵轕鎘镉閣阁隔革鞈鞷韐韚騔骼鬲鮯哿嗰笴舸个亇個各箇茖虼鉻铬給给根跟哏亘亙揯搄艮茛刯庚椩浭焿畊絚緪縆羮羹耕菮賡赓鶊鹒哽埂峺挭梗綆绠耿莄郠骾鯁鲠堩更侊公功匑匔厷塨宫宮工幊弓恭愩慐攻杛碽篢糼糿肱蚣觥觵躬躳髸龏龔龚巩廾拱拲栱汞珙輁鞏供共唝嗊熕貢贡佝勾沟溝痀篝簼緱缑芶袧褠鈎鉤钩鞲韝岣枸狗玽笱耇耈耉苟蚼豿冓啂坸垢够夠姤媾彀搆撀构構煹覯觏訽詬诟購购遘雊估咕唂唃姑嫴孤巬巭杚柧橭沽泒稒笟箍箛篐罛苽菇菰蓇蛄觚軱軲轱辜酤鈲鮕鴣鸪傦古啒嘏夃尳愲扢榖毂汩淈濲瀔牯皷皼盬瞽穀糓縎罟羖股脵臌薣蛊蠱詁诂谷轂逧鈷钴餶馉骨鶻鹘鼓鼔僱凅固堌崓崮故梏棝榾牿痼祻錮锢雇顧顾鯝鲴刮劀呱栝桰歄煱瓜緺胍趏踻颪颳騧鴰鸹冎剐剮叧寡卦啩坬挂掛絓罣褂詿诖乖叏拐枴柺箉罫夬怪恠倌关官棺涫瘝癏窤蒄覌観觀观関闗關鰥鱞鳏琯璭痯筦管舘輨錧館馆鳤丱冠卝悹悺惯慣掼摜樌欟毌泴潅灌爟瓘盥矔礶祼罆罐貫贯躀遦鏆鑵雚鱹鸛鹳僙光咣垙姯桄洸灮炗炚炛烡珖胱茪輄銧黆广広廣犷獷臩俇臦逛亀圭妫媯嫢嬀嶲巂帰廆归摫椝槻槼櫷歸珪瑰璝瓌皈瞡硅胿茥蘬袿規规邽郌閨闺雟騩鬶鬹鮭鲑龜龟佹匦匭厬垝姽宄庋庪恑攱晷氿湀癸祪簋蛫蟡觤詭诡軌轨陒鬼刽刿劊劌撌攰昋柜桂桧椢槶樻檜櫃猤癐眭瞆瞶禬筀蓕螝襘貴贵跪鐀鑎鞼鱖鱥鳜丨惃滚滾磙緄緷绲蓘蔉衮袞輥辊鮌鯀鲧棍睔謴啯嘓埚堝墎崞彉彍懖楇濄猓瘑聒蝈蟈郭鈛鍋锅囯囶囻国圀國帼幗慖掴摑漍簂聝腘膕蔮虢馘惈果椁槨淉粿綶菓蜾裹褁輠餜馃腂过過鐹哈紦鉿铪咍嗨孩还骸塰海烸胲酼醢亥嗐妎害氦餀饚駭駴骇佄哻嫨憨犴蚶谽酣頇顸馠魽鼾函凾含唅圅娢寒崡嵅晗梒浛涵澏焓琀甝筨虷蜬邗邯鋡韓韩丆喊浫罕豃傼厈垾屽悍憾扞捍撖撼旱晘暵汉汗涆漢瀚焊熯猂皔睅翰莟菡蔊蛿蜭螒譀輚釬銲鋎閈闬雗頷顄颔馯駻鶾兯爳夯吭垳斻杭笐筕絎绗航苀蚢裄貥迒頏颃魧沆嚆茠蒿薅薧乚儫嗥嘷噑嚎壕椃毜毫濠獆獋獔竓籇蚝蠔譹豪好郝侴傐号哠恏悎昊昦晧暠暤暭曍浩淏滈澔灏灝皓皜皞皡皥秏耗聕薃號鄗顥颢鰝呵喝嗬抲欱蠚訶诃何劾合咊和啝姀峆惒敆曷朅柇核楁毼河涸渮澕熆狢皬盇盉盍盒礉禾篕籺粭紇纥翮荷菏萂螛覈訸詥貈貉郃釛鉌鑉閡閤闔阂阖鞨頜颌餄饸魺鲄鶡鹖麧齕龁龢哬嗃嚇垎壑寉焃煂熇燺爀癋碋翯袔褐謞賀贺赫靍靎靏鶮鶴鸖鹤嘿潶黑黒拫痕鞎佷很狠詪恨亨哼悙涥脝姮恆恒撗桁横橫烆珩胻蘅衡鑅鴴鵆鸻啈叿呍哄嚝揈渹灴烘焢硡薨訇谾軣輷轟轰鍧仜吰垬妅娂宏宖屸弘彋汯沗泓洪浤渱潂玒玜硔竑竤篊粠紅紘紭綋红纮羾翃翝耾苰荭葒葓虹谹谼鈜鉷鋐閎闳霐霟鞃魟鴻鸿黉黌晎撔澒蕻訌讧銾閧闀闂鬨齁侯喉帿猴瘊睺矦篌糇翭翵葔鄇銗鍭餱骺鯸吼吽犼候厚后垕堠後洉茩豞逅郈鮜鱟鲎鲘乎乯匢匫呼唿嘑垀寣幠忽恗惚昒曶歑泘淴滹烀糊膴苸虍虖謼軤轷雐雽喖嘝囫壶壷壺媩弧抇搰斛楜槲湖瀫焀煳狐猢瑚瓳箶絗縠胡葫蔛蝴螜衚觳醐鍸隺頶餬鬍魱鰗鵠鶘鶦鹄鹕乕俿唬汻浒滸琥萀虎虝錿鯱互冱嗀嚛婟嫭嫮岵帍弖怘怙戶户戸戽扈护摢昈枑槴沍沪滬熩瓠祜笏簄粐綔芐蔰護豰鄠鍙頀鱯鳠鳸鸌鹱埖婲椛硴糀花蒊蘤誮錵划劃华呚哗嘩姡搳撶滑猾磆華蕐螖譁釪釫鋘鏵铧驊骅鷨化夻婳嫿嬅崋摦杹枠桦槬樺澅画畫畵繣舙觟話諙諣譮话黊徊怀懐懷槐櫰淮瀤耲蘹褢褱踝咶坏壊壞蘾孉懽欢歓歡犿獾讙貛酄驩鴅鵍圜堚嬛寏寰峘桓洹澴狟獂环環瓛糫絙綄繯缳羦荁萈萑豲貆還鍰鐶锾镮闤阛雈鬟鹮睆緩缓唤喚喛嚾奂奐宦嵈幻患愌换換擐攌梙槵浣涣渙漶澣烉焕煥瑍痪瘓肒藧豢轘逭鯇鯶鰀鲩塃宺巟慌朚肓荒衁偟凰喤堭墴媓崲徨惶揘楻湟潢煌熿獚瑝璜癀皇磺穔篁簧艎葟蝗蟥諻趪遑鍠鐄锽隍韹餭騜鰉鱑鳇鷬黃黄兤奛幌怳恍晃晄櫎炾熀縨詤謊谎愰曂榥滉皝皩鎤咴噅噕婎媈幑徽恢拻挥揮撝晖暉楎洃瀈灰灳烣煇睢睳禈翚翬蘳袆褘詼诙豗輝辉隓隳鰴麾佪囘回囬廻廽恛洄烠痐茴蚘蛔蛕蜖迴逥鮰悔檓毀毁毇燬虺譭会僡儶匯卉喙嘒嚖圚嬒寭屶屷彗彙彚徻恚恵惠慧憓懳晦暳會槥橞檅櫘汇泋湏滙潓濊烩燴獩璤璯瘣瞺秽穢篲絵繢繪绘缋翙翽芔荟蔧蕙薈薉藱蟪詯誨諱譓譿讳诲賄贿鏸鐬闠阓靧頮顪颒餯婚惛昏昬棔殙涽睧睯荤葷蔒轋閽阍忶浑渾珲琿餛馄魂鼲俒倱圂婫尡慁掍混溷焝睴觨諢诨劐吙攉秴耠豁騞佸活秮秳伙夥漷火灬煷邩鈥钬俰剨咟喐嚄嚯嚿奯彟彠惑或捇掝擭旤曤檴沎湱濩瀖獲癨眓矆矐祸禍穫窢耯臛艧获蒦藿蠖謋貨货鍃鑊锪镬閄雘霍靃韄乩僟击刉刏剞叽咭唧喞嗘嘰圾基墼姬屐嵆嵇撃擊朞机枅槣樭機櫅毄激犄玑璣畸畿癪矶磯禨积稘稽積笄筓箕簊綨緁緝缉羁羇羈耭肌芨虀覉覊觭譏譤讥賫賷赍跻踑躋躸銈錤鐖鑇鑙隮雞鞿韲飢饑饥魕鳮鶏鶺鷄鸄鸡鹡齏齑亟亼亽伋佶偮卙即卽及叝吉堲塉姞嫉岌嶯彶忣急愱戢揤极棘楖楫極槉檝殛汲湒潗濈焏疾瘠皀皍磼笈箿籍級级耤膌艥蒺蕀蕺蝍螏襋觙谻趌踖蹐躤輯轚辑郆銡鍓鏶集雧霵齎丮几妀嵴己幾戟挤掎撠擠橶泲犱穖脊虮蟣魢鱾麂伎偈兾冀剂剤劑勣哜嚌坖垍塈妓季寂寄廭彐彑徛忌悸惎懻技旡既旣暨暩曁梞檕檵洎济済漃漈濟瀱璾痵癠祭禝稩稷穄穊穧紀紒継績繋繼纪继绩罽臮芰茍茤荠葪蓟蔇薊薺蘎蘮蘻裚襀覬觊計記誋諅计记跡跽蹟迹际際霁霽驥骥髻鬾魝魥鯚鯽鰶鰿鱀鱭鲚鲫鵋鷑齌乫伽佳傢加嘉家徍抸拁枷梜毠泇浃浹犌猳珈痂笳糘耞腵葭袈豭貑跏迦鉫鎵镓鴐麚唊圿夹夾忦恝戛戞扴脥荚莢蛱蛺袷裌郏郟鋏铗頬頰颊鴶鵊假叚婽岬徦斚斝椵榎槚檟玾甲瘕胛賈贾鉀钾价價嫁幏架榢稼駕驾兼冿囏坚堅奸姦姧尖幵惤戋戔搛椷椾樫櫼歼殱殲湔瀐瀸煎熞熸牋犍猏玪瑊监監睷碊礛礷笺箋緘縑缄缣肩艰艱菅菺葌蒹蔪蕑蕳虃譼豜豣鋻鑯間间雃靬鞯韀韉餰馢鰔鰜鰹鲣鳒鳽鵑鵳鶼鹣麉俭倹儉减剪囝堿帴弿彅戩戬拣挸捡揀揃撿暕枧柬梘检検檢減湕瀽瑐睑瞼硷碱礆笕筧简篯簡籛絸繭翦茧藆蠒裥襇襉襺詃謇謭譾谫趼蹇鐗鐧锏鬋鰎鹸鹻鹼件俴健僭剑剣剱劍劎劒劔墹寋建徤擶旔栫楗榗槛檻毽洊涧渐溅漸澗濺瀳牮珔瞷磵礀箭糋繝腱臶舰艦荐薦袸見覵覸见諓諫譛谏賎賤贱趝跈践踐踺轞鉴鍳鍵鏩鐱鑑鑒鑬鑳键鞬餞饯僵壃姜将將摪橿殭江浆漿畕畺疅疆礓繮缰翞茳葁薑螀螿豇韁鱂鳉傋塂奖奨奬桨槳獎耩膙蒋蔣講讲顜勥匞匠夅嵹弜弶摾櫤洚滰犟糡糨絳绛謽酱醤醬降交僬姣娇嬌峧嶕嶣憍椒浇澆焦燋礁穚簥胶膠膲艽茭茮蕉虠蛟蟭跤轇郊鐎驕骄鮫鲛鵁鷦鷮鹪嚼佼侥僥儌剿劋勦孂徺徼憿挢捁搅摷撟撹攪敫敽敿晈暞曒灚烄煍燞狡璬皎皦矫矯笅筊絞繳纐绞缴脚腳臫蟜角譑賋踋鉸铰餃饺鱎龣叫呌嘂嘄嘦噍噭嬓嶠挍敎教斠滘漖潐獥珓皭窌窖藠訆譥趭較轎轿较酵醮釂喈喼嗟堦媘嫅接掲揭擑椄楬湝煯疖痎癤皆秸稭脻菨蝔街謯阶階鞂鶛倢偼傑刦刧刼劫劼卩卪婕媫孑尐岊崨嵥嶻巀幯截拮捷掶搩擮昅杢杰桀桔桝楶榤洁滐潔狤疌睫碣礍竭節結结羯节莭蓵蛣蜐蠘蠞蠽衱袺訐詰誱讦诘跲踕迼鉣鍻镼鞊頡颉鮚鲒姐媎檞毑解觧飷丯介借吤唶堺屆届岕庎徣悈戒楐犗玠琾界畍疥砎芥藉蚧蛶衸褯誡诫鎅骱魪今仐堇堻巾惍斤津珒琎琻璡矜矝砛禁筋紟荕衿襟觔金釒釿钅鹶黅仅侭僅儘卺厪嫤巹廑慬槿漌瑾紧緊菫蓳謹谨錦锦饉馑伒僸凚劤劲勁唫噤嚍墐壗妗嬧尽搢晉晋枃歏殣浕浸溍濅濜烬煡燼瑨璶盡祲縉缙荩藎覲觐賮贐赆近进進靳齽京亰兢坕坙婛巠惊旌旍晶橸泾涇猄睛秔稉粳精経經綡经聙腈茎荆荊菁葏驚鯨鲸鶁鶄麖麠鼱丼井儆刭剄坓宑幜憬憼景暻殌汫汬澋璄璟璥穽肼蟼警阱頚頸颈俓傹净凈境妌婙婧弪弳径徑敬曔桱梷浄淨瀞獍痉痙竞竟竧竫競竸胫脛莖誩踁迳逕鏡镜靓靖静靚靜鵛冂冋坰埛扃絅蘏蘔駉駫侰僒冏囧泂浻澃炅炯烱煚煛熲燛窘綗褧迥逈顈颎丩勼啾揂揪揫摎朻樛牞究糺糾纠萛赳阄鬏鬮鳩鸠久乆九乣奺杦汣灸玖紤舏酒镹韭韮倃僦匓匛匶厩咎就廄廏廐慦捄救旧柩柾桕欍殧疚臼舅舊鯦鷲鹫麔齨凥匊娵婮居岨崌抅拘掬梮椐檋毩毱泃涺狙琚疽眗砠罝腒艍苴蜛裾諊跔跙踘躹鋦锔陱雎鞠鞫駒驹鮈鴡鶋侷啹婅局巈挶椈橘泦淗湨焗犑狊粷繘菊蘜趜跼蹫輂郹閰駶驧鵙鵴鶪鼰鼳举咀弆挙擧椇榉榘櫸欅沮矩筥聥舉莒蒟襷踽齟龃乬俱倨倶具剧劇勮句埧埾壉姖寠屦屨岠巨巪怇惧愳懅懼拒拠据據昛歫洰澽炬烥犋秬窭窶簴粔耟聚苣虡蚷袓詎讵豦貗距踞躆遽邭醵鉅鋸鐻钜锯颶飓駏鮔勬姢娟捐朘涓焆脧蠲裐鋑鎸鐫镌鹃卷呟埍巻捲臇菤錈锩倦劵勌奆婘帣弮惓慻桊淃狷獧瓹眷睊睠絭絹绢罥羂腃蔨讂鄄餋噘屩屫撅撧亅决刔劂匷厥噊噱孒孓崛崫嶡嶥弡彏憠憰戄抉挗捔掘攫斍桷橛橜櫭欮氒決泬灍焳熦爑爝爴爵獗玃玦玨珏瑴疦瘚矍矡砄絕絶绝臄芵蕝蕨虳蚗蟨蟩覐覚覺觉觖觮觼訣譎诀谲貜赽趉趹蹶蹷躩鈌鐍鐝钁镢駃鴂鴃鷢倔军君均桾汮皲皸皹碅莙菌蚐袀覠軍鈞銁銞鍕钧頵鮶鲪麇麏麕俊儁呁埈寯峻懏捃攈攟晙棞浚濬燇珺畯竣箘箟葰蜠賐郡陖隽雋餕馂駿骏鵔鵕鵘咖喀佧卡咔咯垰胩裃鉲奒开揩鐦锎開凯凱剀剴嘅垲塏嵦恺愷慨暟楷蒈輆鍇鎧铠锴闓闿颽勓忾愾欬炌烗鎎刊勘堪嵁戡栞龕龛侃偘冚凵坎惂欿歁砍竷莰輡轗顑墈崁看瞰矙磡衎闞阚鬫嫝嵻康忼慷槺漮砊穅粇糠躿鏮閌鱇扛亢伉匟囥抗炕犺邟鈧钪闶尻嵪髛丂拷攷栲洘烤考犒銬铐靠鮳鯌鲓匼嗑嵙搕柯棵榼樖牁牱犐珂疴痾瞌砢磕礚科稞窠苛萪薖蚵蝌趷軻轲醘鈳钶頦顆颏颗髁咳壳揢殻殼翗可坷岢嵑嶱敤渇渴炣克刻勀勊堁娔客尅峇恪愘愙氪溘碦礊緙缂艐衉課课錁锞騍骒剋啃垦墾恳懇肎肯肻豤貇錹掯硍裉褃劥坑妔挳摼牼硁硜硻誙銵鍞鏗铿阬倥埪崆悾涳硿空箜躻錓鵼孔恐控鞚剾彄抠摳眍瞘芤劶口冦叩宼寇怐扣敂滱瞉窛筘簆蔲蔻釦鷇刳哭圐堀枯桍矻窟跍郀骷鮬楛狜苦俈喾嚳库庫廤焅瘔秙絝绔袴裤褲酷咵夸姱舿誇侉垮銙挎胯趶跨骻擓蒯侩儈凷哙噲圦块塊墤巜廥快旝欳浍澮狯獪筷糩脍膾郐鄶鱠鲙宽寛寬臗鑧髋髖梡欵款歀窽窾劻匡匩哐恇洭硄筐筺誆诓軭邼忹抂狂狅誑诳軖軠鵟儣夼懭况圹壙岲懬旷昿曠框況爌眖眶矌矿砿礦穬絋絖纊纩貺贶軦邝鄺鉱鋛鑛黋亏刲岿巋悝盔窥窺聧虧闚顝喹夔奎巙戣揆晆暌楏楑櫆犪睽葵藈蘷虁蝰躨逵鄈鍨鍷頯馗騤骙魁傀煃磈跬蹞頍匮匱喟嘳媿嬇尯愦愧憒殨溃潰篑簣籄聩聭聵膭蒉蕢謉餽饋馈坤堃堒崐崑昆晜潉焜熴猑琨瑻菎蜫裈裩褌醌錕锟騉髠髡髨鯤鲲鵾鶤鹍壸壼悃捆梱硱祵稇稛綑裍閫閸阃困涃睏廓扩拡括挄擴濶筈萿葀蛞闊阔霩鞟鞹韕頢髺鬠啦垃拉搚柆菈邋嚹旯磖喇藞剌揦揧攋楋櫴溂爉瓎瘌翋腊臈臘蜡蝋蝲蠟辢辣鑞镴鬎鯻鞡來俫倈婡崃崍庲徕徠来梾棶涞淶猍琜筙箂莱萊逨郲錸铼騋鯠鶆麳襰唻濑瀨瀬癞癩睐睞籁籟藾賚賴赉赖頼顂鵣儖兰啉囒婪岚嵐幱惏懢拦攔斓斕栏欄欗澜瀾灆灡燣燷璼篮籃籣繿葻蓝藍蘫蘭褴襕襤襴襽譋讕谰躝鑭镧闌阑韊壈嬾孄孏懒懶揽擥攬榄欖浨漤灠爦纜缆罱覧覽览醂顲嚂滥濫烂燗爁爛爤瓓糷钄啷勆嫏廊斏桹榔樃欴狼琅瑯硠稂筤艆蓈蜋螂躴郎郒郞鋃鎯锒塱崀朖朗朤烺蓢誏埌浪莨蒗閬阆捞撈粩僗劳労勞哰崂嶗憥朥浶牢痨癆磱窂簩蟧醪鐒铹顟髝佬咾姥恅栳潦狫珯硓老耂荖蛯轑銠铑鮱唠嗠嘮嫪憦橯涝澇烙耢耮躼軂酪乐仂勒叻忇扐楽樂氻泐玏砳竻簕艻阞韷餎鰳鱳鳓了儽嫘擂攂樏檑櫑欙瓃畾礌礧累縲纍纝缧罍羸蔂蘲虆轠鐳鑘镭雷靁鱩鼺傫儡厽垒塁壘壨櫐洡灅癗矋磊磥礨絫耒蕌蕾藟蘽蠝誄讄诔鑸鸓泪涙淚禷类纇肋蘱酹銇錑頛頪類颣嘞唥塄棱楞碐稜薐冷倰堎愣睖踜刕剓剺劙厘喱嚟囄嫠孷廲悡斄梨梸棃樆漓灕犁犂狸琍璃瓈盠睝离穲竰筣篱籬糎縭纚缡罹艃荲菞蓠蔾藜蘺蟍蟸蠫褵謧貍邌醨釐鋫錅鏫鑗離驪骊鯏鯬鱺鲡鵹鸝鹂黎黧俚娌峛峢峲李欚浬澧理礼禮粴蠡裏裡豊逦邐醴里鋰锂鯉鱧鱱鲤鳢丽例俐俪傈儮儷凓利力励勵历厉厤厯厲叓吏呖唎唳嚦囇坜塛壢娳婯孋屴岦巁悧悷慄戾搮擽攊攦攭暦曆曞朸枥栃栎栗栛棙檪櫔櫟櫪欐歴歷沥沴浰涖溧濿瀝爄爏犡猁珕瑮瓅瓑瓥疠疬痢癘癧皪盭睙砅砬砺砾磿礪礫礰禲秝立笠篥粒粝糲綟脷苈苙茘荔莅莉蒚蒞藶蚸蛎蛠蜊蜧蝷蠇蠣觻詈讈赲跞躒轢轣轹郦酈鉝隶隷隸雳靂靋鬁鳨鴗鷅麗麜哩亷劆匲匳嗹噒奁奩嫾帘廉怜慩憐梿槤櫣涟溓漣濂濓瀮熑燫磏簾籢籨縺翴联聨聫聮聯臁莲蓮薕螊蠊裢褳覝謰蹥连連鎌鐮镰鬑鰱鲢嬚摙敛斂歛琏璉羷脸臉蔹蘝蘞裣襝鄻僆堜媡恋戀楝殓殮湅潋澰瀲炼煉瑓練纞练萰錬鍊鏈链鰊俍凉墚梁椋樑涼粮粱糧良踉輬辌駺両两俩倆兩唡啢掚緉脼蜽裲魉魎亮倞哴喨悢晾湸諒谅輌輛辆量鍄撩蹽僚嘹嫽寥寮尞屪嵺嶚嶛廫憀敹暸橑漻燎爎爒獠璙疗療竂簝繚缭聊膋膫藔蟟豂賿蹘辽遼飉髎鷯鹩憭曢瞭蓼鄝釕钌镽尥尦廖撂料炓窷鐐镣咧挘毟儠冽列劣劽哷埒埓姴巤挒捩擸栵洌浖烈烮煭犣猎猟獵聗脟茢蛚裂趔躐迾颲鬛鬣鮤鱲鴷拎临冧厸壣崊嶙斴晽暽林淋潾瀶燐獜琳璘疄瞵碄磷箖粦粼綝繗翷臨轔辚遴邻鄰鏻阾隣霖驎鱗鳞麐麟亃僯凛凜廩廪懍懔撛檁檩澟癛癝菻吝恡悋橉焛甐膦蔺藺賃赁蹸躏躙躪轥閵〇伶凌刢呤囹坽夌姈婈孁崚彾掕昤朎柃棂櫺欞泠淩澪灵燯爧狑玲琌瓴皊砱祾秢竛笭紷綾绫羐羚翎聆舲苓菱蓤蔆蕶蛉衑裬詅跉軨輘酃醽鈴錂铃閝陵零霊霗霛霝駖魿鯪鲮鴒鸰鹷麢齡齢龄龗岭岺嶺袊領领令另炩蘦靈溜澑熘蹓刘劉嚠媹嵧懰斿旈旒榴橊流浏瀏琉瑠瑬璢畄留畱疁瘤癅硫磂蒥蓅藰蟉裗鎏鎦鏐鐂镏镠飀飅飗駠駵騮驑骝鰡鶹鹠麍嬼柳栁桞桺橮熮珋綹绺罶羀鋶锍六塯廇磟翏遛雡霤飂餾馏鬸鷚鹨咙嚨尨嶐巃巄昽曨朧栊槞櫳泷湰滝漋瀧爖珑瓏癃眬矓砻礱礲窿竜笼篭籠聋聾胧茏蘢蠪蠬襱豅躘鏧鑨隆霳靇驡鸗龍龒龓龙儱垄垅壟壠拢攏竉陇隴哢徿梇贚剅喽嘍娄婁廔楼樓溇漊熡瞜耧耬艛蒌蔞蝼螻謱軁遱鞻髅髏鷜塿嵝嶁搂摟甊篓簍屚漏瘘瘺瘻鏤镂陋露噜嚕撸擼謢卢嚧垆壚庐廬攎曥枦栌櫨泸瀘炉爐獹玈璷瓐盧矑籚纑罏胪臚舮舻艫芦蘆蠦轤轳鈩鑪顱颅馿髗魲鱸鲈鸕鸬黸卤塷掳擄樐橹櫓氇氌滷澛瀂硵磠穞艣艪蓾虏虜鏀鐪鑥镥魯鲁鹵侓僇剹勎勠圥坴塶娽峍廘彔录戮摝椂樚淕淥渌漉潞熝琭璐甪盝睩硉碌祿禄稑穋箓簏簬簵簶籙粶膔菉蔍蕗虂螰賂赂趢路踛蹗輅轆辂辘逯醁錄録錴鏕鏴陆陸騄騼鯥鴼鵦鵱鷺鹭鹿麓圝圞奱娈孌孪孿峦巒挛攣曫栾欒滦灓灤癴癵羉脔臠虊銮鑾鵉鸞鸾卵乱亂釠抡掄仑伦侖倫囵圇婨崘崙棆沦淪碖磮綸纶耣腀芲菕蜦踚輪轮錀陯鯩埨惀稐溣論论啰囉捋頱儸囖攞椤欏猡玀箩籮罗羅脶腡萝蘿螺覶覼逻邏鏍鑼锣镙饠騾驘骡鸁倮剆曪瘰癳臝蓏蠃裸躶峈摞泺洛洜漯濼犖珞硌硦笿絡纙络荦落詻雒駱骆鮥鵅榈櫚氀膢藘閭闾驢驴侣侶偻僂儢吕呂屡屢履慺挔捛旅梠焒祣稆穭絽縷缕膂膐褛褸郘鋁铝勴垏嵂律慮櫖氯滤濾爈率箻綠緑繂绿膟葎虑鑢圙寽掠略畧稤鋝鋢锊妈媽嫲嘛犘痲痳蔴蟆蟇麻杩溤犸獁玛瑪码碼蚂螞遤鎷馬马鰢鷌傌嘜榪睰祃禡罵閁駡骂鬕吗嗎埋薶霾买嘪荬蕒買鷶佅劢勱卖唛売脈脉衇賣迈邁霡霢麥麦顢颟姏悗慲摱樠瞒瞞蛮蠻謾谩鞔饅馒鬗鬘鰻鳗娨屘満满滿矕螨蟎襔鏋僈墁嫚幔慢曼槾漫澷熳獌縵缦蔄蔓蘰鄤鏝镘牤厖吂哤娏忙恾杗杧汒浝牻狵痝盲盳硭笀芒茫蘉蛖邙釯鋩铓駹壾漭硥茻莽莾蟒蠎猫貓堥旄枆楙毛氂渵牦犛矛罞芼茅茆蝥蟊軞酕鉾錨锚髦髳鶜乮冇卯夘峁戼昴泖笷蓩鉚铆冃冐冒媢帽愗懋暓柕毷瑁皃眊瞀耄茂萺蝐袤覒貌貿贸鄚鄮嚒嚰濹么麼麽坆堳塺媒嵋徾攗枚栂梅楣楳槑沒没湄湈煤猸玫珻瑂眉睂禖脄脢腜苺莓葿郿酶鋂鎇镅霉鶥鹛黴凂媄媺嬍嵄挴毎每浼渼燘美羙躾鎂镁黣嚜妹媚寐抺旀昧沬煝痗眛睸祙篃蝞袂跊韎鬽魅椚们們扪捫玧璊穈菛虋鍆钔門閅门悶懑懣暪焖燜闷掹擝矇蒙儚幪懞曚朦橗檬氋氓溕濛獴甍甿盟瞢矒礞艨莔萌蕄虻蝱鄳鄸霿靀顭饛鯍鸏鹲冡勐懵猛艋蜢蠓錳锰鯭鼆夢夣孟懜梦癦霥咪眯瞇冞弥彌戂擟攠瀰爢猕獼瓕祢禰糜縻蒾藌蘪蘼袮詸謎谜迷醚醾醿釄镾靡鸍麊麋麛麿侎孊弭敉沵洣渳濔灖米粎羋脒芈葞蔝銤冖冪嘧塓宓宻密峚幂幎幦怽榓樒櫁汨沕泌淧滵漞濗熐祕秘簚糸羃蔤蜜覓覔覛觅謐谧鼏婂媔嬵宀杣棉檰櫋眠矈矊矏綿緜绵臱芇蝒丏偭免冕勉勔喕娩愐汅沔渑湎澠眄睌絻緬缅腼葂靦鮸糆面靣麪麫麵麺喵媌嫹描瞄緢苗鶓鹋劰杪淼渺眇秒篎緲缈藐邈妙庙庿廟玅竗乜吀咩哶孭幭懱搣櫗滅瀎灭烕礣篾蔑薎蠛衊鑖鱴鴓垊姄岷崏怋慜捪旻旼民玟珉琘琝瑉痻盿砇碈緍緡缗罠苠鈱錉鍲鴖僶冺刡勄忞忟悯惽愍憫抿敃敏敯暋泯湣潣皿笢笽簢蠠閔閩闵闽鰵鳘黽黾冥名嫇明暝朙榠洺溟猽眀眳瞑茗蓂螟覭詺鄍銘铭鳴鸣佲凕姳慏酩命掵謬谬嚤摸劘嫫嬤嬷尛庅摩摹擵模橅磨糢膜蘑謨謩谟饃饝馍髍魔魹懡抹嗼圽塻墨妺嫼寞帓帞昩末枺歾歿殁沫漠爅獏瘼皌眜眽眿瞐瞙砞礳秣絈纆耱茉莈莫蓦藦蛨蟔貃貊貘銆鏌镆陌靺驀魩默黙哞侔劺呣恈牟眸繆缪蛑謀谋踎鍪鴾麰某毪氁亩姆峔拇母牡牳畂畆畒畝畞畮砪胟踇鉧仫凩募坶墓幕幙慔慕暮暯木楘毣沐炑牧狇目睦穆縸艒苜莯蚞鉬钼雮霂鞪嗱拏拿搻鎿镎乸哪雫吶呐妠捺笝納纳肭蒳衲袦豽貀軜那郍鈉钠靹魶孻腉乃倷奶嬭廼氖疓艿迺釢奈柰渿耐萘螚褦錼鼐囡侽南喃娚抩暔枏柟楠男畘莮諵遖难難戁揇湳煵腩萳蝻赧婻囔乪嚢囊欜蠰饢馕擃攮曩灢儾齉孬呶夒峱嶩巎怓憹挠撓猱獶獿硇碙蛲蟯詉譊鐃铙匘垴堖嫐恼悩惱瑙碯脑脳腦淖臑閙闹鬧抐疒眲訥讷呢娞脮腇餒馁鮾鯘內内氝氞錗嫩嫰恁能妮倪坭埿婗尼屔怩棿泥淣猊秜籾聣臡蚭蜺觬貎跜輗郳鈮铌霓馜鯢鲵麑齯伱伲你儗儞妳孴抳拟掜擬旎晲柅檷狔聻苨薿隬匿堄嫟嬺屰惄愵昵暱氼溺眤睨縌胒腻膩誽逆拈蔫哖姩年秊秥粘鮎鯰鲇鲶鵇黏捻撚撵攆涊淰焾碾簐蹍蹨躎輦辇卄唸埝廿念惗艌娘嬢孃酿醸釀嫋嬝嬲樢茑蔦袅裊褭鳥鸟尿脲捏揑苶啮嗫噛嚙囁囓圼孼孽嵲嶭巕帇摰敜枿槷櫱涅湼痆篞籋糱糵聂聶臬臲菍蘖蠥讘踂踗踙蹑躡錜鎳鑈鑷钀镊镍闑陧隉顳颞齧囜您脌拰儜凝咛嚀嬣宁寍寕寗寜寧擰柠橣檸狞獰甯聍聹薴鑏鬡鸋拧矃佞侫倿泞澝濘妞汼牛牜忸扭杻炄狃紐纽莥鈕钮靵侬儂农哝噥檂欁浓濃燶禯秾穠脓膿蕽襛譨農辳醲鬞繷弄挊挵癑齈羺槈檽獳耨鎒鐞伮奴孥帑笯駑驽努弩砮胬傉怒搙奻暖渜煖煗餪黁傩儺娜挪梛橠喏愞懦懧掿搦榒稬穤糑糥糯諾诺蹃逽鍩锘女籹釹钕恧朒沑衂衄婩疟瘧硸虐喔噢哦筽塸櫙欧歐殴毆熰瓯甌膒藲謳讴鏂鴎鷗鸥偶吘呕嘔耦腢蕅藕怄慪沤漚啪妑皅舥苩葩趴掱杷潖爬琶筢帊帕怕袙拍俳徘排棑牌犤猅箄簰簲輫哌沠派渒湃蒎鎃攀潘眅萠丬媻幋搫柈槃洀瀊爿盘盤磐磻縏蒰蟠跘蹒蹣鎜鞶冸判叛沜泮溿炍牉畔盼聁袢襻詊鋬鑻頖鵥乓滂胮膖雱霶厐嫎庞庬彷徬旁舽螃逄鰟鳑龎龐耪覫炐眫肨胖抛拋脬萢刨匏咆垉庖炰爮狍袍褜軳鞄麃麅跑奅泡炮疱皰砲礟礮靤麭呸怌肧胚衃醅培婄毰裴裵賠赔錇锫阫陪俖伂佩姵帔斾旆沛浿犻珮蓜轡辔配霈馷喷噴歕湓瓫盆葐呠翸剻匉嘭怦恲抨梈泙烹砰硑磞軯閛駍倗傰堋塜塳弸彭憉捀朋棚椖樥澎熢硼稝竼篣篷纄膨芃莑蓬蘕蟚蟛袶輣錋鑝韸韼騯髼鬅鬔鵬鹏捧淎皏掽椪槰碰踫丕伓伾劈噼坯岯悂憵批披抷旇枈炋狉狓砒磇礔礕秛秠紕纰翍耚豾邳釽鈚鉟銔錃錍陴霹駓髬魾啤埤壀崥枇毗毘焷琵疲皮笓篺罴羆肶脾腗膍蚍蚽蚾蜱螷蠯裨豼貔郫鈹铍阰隦魮鮍鲏鵧鼙仳匹吡噽嚭圮嶏庀擗疋痞癖脴苉諀銢鴄僻媲嫓屁揊淠潎澼甓疈稫譬辟闢鷿鸊偏囨媥楄犏篇翩鍂鶣楩胼腁賆跰蹁駢騈骈骿覑諞谝貵片騗騙骗魸剽勡嘌彯慓旚漂犥翲螵飃飄飘魒嫖瓢薸闝殍皫瞟篻縹缥醥顠僄徱票驃鰾撆撇暼氕瞥覕丿苤鐅嫳姘拚拼砏礗穦馪驞嚬娦嫔嬪玭琕矉薲蘋蠙貧贫顰频颦品榀汖牝聘乒俜娉涄甹砯聠艵頩凭凴呯坪塀屏岼帡帲幈平慿憑枰檘洴淜焩玶瓶甁竮箳簈缾胓苹荓萍蓱蚲蛢評评軿輧郱鮃鲆屛坡岥泼溌潑酦醗醱釙鏺钋頗颇嘙嚩婆櫇皤蔢鄱叵尀笸箥鉕钷駊哱奤岶廹敀昢洦湐烞珀破砶粕蒪迫魄剖娝垺抔抙捊箁裒咅哣掊犃仆噗扑撲攴攵潽炇痡鋪铺陠鯆僕匍圤墣濮獛璞瞨穙纀莆菐菩葡蒱蒲贌酺鏷镤圃圑埔擈普暜朴樸檏氆浦溥烳諩譜谱蹼鐠镨曝瀑舖舗七倛傶僛凄嘁墄妻娸悽慼慽戚捿攲敧期柒栖桤桼棲榿欹欺沏淒漆紪緀萋褄諆踦蹊迉郪鏚霋魌鶈丌亓亝其剘圻埼奇岐岓崎嵜帺忯愭懠掑斉斊旂旗棊棋檱櫀歧淇濝猉玂琦琪璂畦疧碁碕祁祈祺禥竒簯簱籏粸綥綦耆肵脐臍艩芪萁萕蕲藄蘄蚑蚔蚚蛴蜝蜞螧蠐褀跂軝鄿釮錡锜陭隑頎颀騎騏騹骐骑鬐鬿鯕鰭鲯鳍鵸鶀麒麡齊齐乞企启呇唘啓啔啟婍屺岂晵杞棨玘盀綺绮芑諬豈起邔闙呮咠唭噐器夡契弃愒憇憩摖暣栔棄槭欫气気氣汔汽泣湆湇滊炁甈盵矵砌碛碶磜磧磩罊芞葺藒蟿訖讫迄鐑掐擖葜峠拤跒酠鞐冾圶帢恰殎洽硈胢髂仟佥僉千厱圱圲奷婜孯岍悭愆慳扦拪掔搴撁攐攑攓杄檶櫏欦汘汧牵牽竏签簽籖籤粁臤芊茾蚈褰諐謙谦谸迁遷釺鈆鉛鏲钎铅阡韆顅騫骞鬜鬝鵮鹐乹乾亁仱偂前墘媊岒忴扲拑掮揵榩橬歬潛潜濳灊箝羬荨葥蕁虔軡鈐鉗銭錢鎆钤钱钳騚騝鰬黔黚槏浅淺繾缱肷膁蜸譴谴遣鑓伣俔倩傔儙刋堑塹壍嬱嵌悓慊棈椠槧欠歉皘篏篟綪縴芡茜蒨蔳輤呛啌嗆嗴嶈戕戗戧搶摤斨枪椌槍溬牄猐獇玱瑲篬羌羗羫腔蜣謒跄蹌蹡鎗鏘锖锵墙墻嫱嬙廧強强彊樯檣漒牆艢蔃蔷薔蘠墏抢繈繦羟羥襁鏹镪唴炝熗羻劁勪墝墽帩幧悄敲橇毃燆硗磽繑繰缲趬跷踍蹺蹻郻鄡鄥鍫鍬鐰锹頝骹乔侨僑喬嘺墧嫶峤憔桥槗樵橋櫵犞癄睄瞧硚礄翘翹荍荞菬蕎藮譙谯趫鐈鞒鞽顦巧愀釥髜俏僺峭撬撽窍竅誚诮躈陗鞘鞩韒髚切苆癿聺茄且匧厒妾怯悏惬愜挈洯淁穕窃竊笡箧篋籡蛪趄踥郄鍥锲鯜亲侵兓媇寴嵚嵰嶔欽綅衾親誛钦顉駸骎鮼勤嗪噙埐嫀嶜庈懃懄捦擒斳檎澿珡琴琹瘽禽秦耹肣芩芹菦菳蚙螓蠄鈙鈫雂靲鳹鵭坅寑寖寝寢昑梫笉螼赾鋟锓吢吣唚抋揿搇撳沁瀙菣藽倾傾卿圊埥寈氢氫淸清蜻軽輕轻郬錆鑋靑青鯖鲭剠勍啨夝情擎擏晴暒棾樈檠殑氰甠硘葝黥庼廎檾漀苘請謦请頃顷儬凊庆慶掅櫦殸濪碃磬箐綮罄靘儝卭宆惸憌桏橩焪焭煢熍琼璚瓊瓗睘瞏穷穹窮竆笻筇舼茕藑藭蛩蛬赹跫邛銎丘丠坵媝恘恷楸湫湬秋秌穐篍緧萩蓲蘒蚯蝵蟗蠤趥邱鞦鞧鰌鰍鳅鶖鹙龝俅叴唒囚崷巯巰扏朹梂殏毬求汓泅浗渞湭煪犰玌球璆皳盚紌絿肍芁莍虬虯蛷蝤裘觓觩訄訅賕赇逎逑遒酋醔釚釻銶頄鮂鯄鰽鼽搝糗伹佉匤区區呿坥屈岖岴嶇憈抾敺浀焌煀祛筁粬紶胠蛆蛐袪覰詘誳诎趋趍趨躯軀阹駆駈驅驱髷魼鰸鱋鶌麯麴麹黢佢劬忂戵斪朐欋欔氍淭渠灈爠璖璩癯瞿磲籧絇翑胊臞菃葋蕖蘧螶蟝蠷蠼衐衢躣軥鑺鴝鸜鸲鼩取娶曲竘竬蝺詓齲龋刞厺去耝覷覻觑趣閴闃阒麮鼁圈圏奍悛棬椦箞鐉佺全啳埢姾峑巏恮拳搼权楾権權泉洤湶牷犈瑔痊硂筌絟縓荃葲蜷蠸觠詮诠跧踡輇辁醛銓铨闎顴颧駩騡鬈鰁鳈齤烇犬犭犮畎綣绻虇券劝勧勸牶韏炔缺缼蒛阙瘸傕却卻埆塙崅悫愨慤搉棤榷燩琷皵硞确碏確碻礐礭趞闋闕阕雀鵲鹊囷夋踆逡宭峮帬羣群裙裠呥嘫然燃繎肰蚦蚺衻袇袡髥髯冄冉姌媣染橪珃苒蒅儴勷瀼獽瓤禳穣穰蘘躟鬤嚷壌壤攘爙懹譲讓让娆嬈桡橈荛蕘襓饒饶扰擾隢繞绕遶惹热熱人亻仁壬忈忎朲秂芢銋魜鵀忍栠栣棯秹稔綛荏荵躵仞仭任刃刄妊姙屻岃扨杒梕牣祍紉紝絍纫纴肕腍衽袵訒認认讱軔轫鈓靭靱韌韧飪餁饪扔仍礽芿辸陾囸日衵釰釼鈤馹驲傛媶嫆嬫容峵嵘嵤嶸戎搈搑曧栄榕榮榵槦毧溶瀜烿熔爃狨瑢穁絨縙绒羢肜茙茸荣蓉蝾融螎蠑褣鎔镕駥傇冗坈宂氄軵穃厹媃揉柔楺渘煣瑈瓇禸粈糅脜腬葇蝚蹂輮鍒鞣騥鰇鶔韖宍肉譳嶿侞儒嚅如嬬孺帤挐曘桇渪濡筎繻茹蒘蕠薷蝡蠕袽襦邚醹銣铷顬颥鱬鴑鴽乳擩汝肗辱鄏入嗕媷扖杁洳溽縟缛蓐褥鳰堧壖撋偄媆朊瑌瓀碝礝緛耎腝軟輭软阮桵甤緌蕤壡惢橤繠蕊蕋蘂蘃叡枘汭瑞睿芮蚋蜹銳鋭锐瞤橍润潤膶閏閠闰挼捼偌叒婼嵶弱楉渃焫爇箬篛若蒻鄀鰙鰯鶸仨撒洒灑訯躠靸卅摋櫒脎萨蕯薩鈒钑隡颯飒馺嘥噻塞愢揌毢毸腮顋鰓鳃嗮僿簺賽赛三厁叁弎毵毶毿犙鬖伞傘糁糝糣糤繖鏒鏾饊馓俕散潵閐壭桑桒槡嗓搡磉褬鎟顙颡丧喪慅掻搔溞繅缫臊螦颾騒騷骚鰠鱢鳋嫂扫掃埽氉瘙矂髞閪啬嗇懎摵擌栜歮歰洓涩渋澀澁濇濏瀒瑟璱瘷穑穡穯繬色譅轖銫鏼铯雭飋森椮槮襂僧鬙乷唦杀桬榝樧殺毮沙煞猀痧砂硰粆紗繺纱蔱裟鎩铩閷髿魦鯊鯋鲨啥傻儍倽厦唼啑喢嗄帹廈歃箑翜翣萐閯霎筛篩簁簛籭晒曬傓删刪剼嘇圸姍姗山幓彡挻搧杉柵檆潸澘煽狦珊痁笘縿羴羶脠膻舢芟苫衫跚軕邖釤钐閊鯅晱炶煔熌睒覢閃闪陕陝僐善墠墡嬗扇掞擅敾椫樿歚汕灗疝磰禪繕缮膳蟮蟺訕謆譱讪贍赡赸鄯銏鐥饍騸骟鱓鱔鳝伤傷商墒慯殇殤滳漡熵禓蔏螪觞觴謪鬺垧扄晌樉賞贘赏鋿鏛鑜丄上尙尚恦緔绱鞝弰捎旓梢烧焼燒稍筲艄莦萷蕱輎髾鮹勺杓柖玿芍韶少劭卲哨娋潲紹綤绍袑邵奓奢檨猞畬畭畲賒賖赊輋佘揲舌虵蛇蛥捨舍厍厙射弽慑慴懾摂摄攝欇涉涻渉滠灄社舎蔎蠂設设赦韘騇麝伸侁兟呻堔妽姺娠屾峷扟敒曑柛氠深燊珅甡甧申眒砷穼籶籸糂紳绅罙罧莘葠蓡蔘薓裑訷詵诜身駪鯓鯵鰺鲹鵢什榊神鉮鰰哂婶嬸审宷審弞曋沈渖瀋瞫矤矧覾訠諗讅谂谉邥頣魫侺愼慎昚涁渗滲甚瘆瘮眘祳肾胂脤腎葚蜃蜄鋠升呏声斘昇曻枡殅泩湦焺牲狌珄生甥竔笙聲苼鉎鍟阩陞陹鵿鼪憴縄繉繩绳譝偗渻省眚剩剰勝圣墭嵊晟晠榺橳琞盛聖胜蕂貹賸呞失尸屍师師施浉湤湿溮溼濕狮獅瑡箷絁葹蒒蓍虱蝨褷襹詩诗邿酾釃釶鉇鍦鯴鰤鲺鳲鳾鶳鸤乭十埘塒姼实実寔實峕嵵拾时旹時榯湜溡炻石祏竍蚀蝕識识遈鉐食飠饣鮖鰣鲥鼫鼭乨使兘史始宩屎榁矢笶豕鉂駛驶世丗亊事仕侍冟势勢卋呩嗜噬士奭嬕室崼市式弑弒徥忕恀恃戺拭揓是昰枾柹柿栻氏澨烒煶眂眎眡睗示礻秲筮簭舐舓莳蒔螫襫視视觢試誓諟諡謚试谥貰贳軾轼适逝適遾釈释釋鈰鉃鉽銴铈飾餙餝饰鰘籂辻収收垨守手扌艏首兽受售嘼壽夀寿授涭狩獣獸痩瘦綬绶膄鏉书倏倐儵叔姝婌抒掓摅攄書杸枢梳樞橾殊殳毹毺淑瀭焂琡疎疏紓綀纾舒菽蔬跾踈軗輸输鄃陎鮛鵨塾孰尗熟璹秫贖赎属屬数數暏暑曙潻癙糬署薥薯藷蜀蠴襡襩鱪鱰黍鼠鼡侸咰墅尌庶庻怷恕戍捒朮术束树樹沭漱潄澍濖竖竪絉腧荗蒁虪術裋豎述鉥錰鏣霔鶐刷唰耍誜摔衰甩卛帅帥蟀拴栓閂闩涮腨双孀孇欆礵艭雙霜騻驦骦鷞鸘鹴塽慡漺爽縔鏯灀脽誰谁水氵氺閖帨涗涚睡祱稅税裞吮楯橓瞚瞬舜蕣順顺鬊說説说妁搠朔槊欶烁爍獡矟硕碩箾蒴鎙鑠铄丝俬凘厮厶司咝嘶噝媤廝思恖撕斯楒泀澌燍磃禗禠私糹絲緦纟缌罳蕬虒蛳蜤螄蟖蟴鉰銯鋖鍶鐁锶颸飔騦鷥鸶鼶死亖似佀価俟儩兕嗣四姒娰孠寺巳杫枱柶梩榹汜泗泤洍洠涘瀃牭祀禩竢笥耛耜肂肆蕼覗貄釲鈶鈻飤飼饲駟騃驷倯凇娀崧嵩庺忪憽松枀枩柗梥檧淞濍硹菘鬆傱嵷怂悚愯慫楤竦耸聳駷宋訟誦讼诵送鎹頌颂餸凁嗖廀廋捜搜摉摗溲獀艘蒐蓃螋鄋醙鎪锼颼飕餿馊騪傁叜叟嗾擻櫢瞍籔薮藪嗽擞瘶囌櫯甦稣穌窣苏蘇蘓酥鯂俗傃僳嗉塐塑夙嫊宿愫愬憟梀榡樎樕橚殐泝洬涑溯溸潚潥玊珟璛碿簌粛粟素縤肃肅膆莤蔌藗觫訴謖诉谡趚蹜速遡遬鋉餗驌骕鱐鷫鹔狻痠酸匴祘笇筭算蒜倠哸夊浽滖濉熣芕荽荾虽雖鞖瓍綏绥遀隋随隨髄瀡膸髓亗埣嬘岁嵗旞檖歲歳澻煫燧璲睟砕碎祟禭穂穗穟繀繐繸襚誶譢谇賥遂邃鐆鐩隧韢孙孫搎槂狲猻荪蓀蕵薞飧飱损損榫笋筍箰簨鎨隼鶽傞唆嗍嗦娑挱挲摍桫梭睃簑簔縮缩羧莎莏蓑趖鮻乺唢嗩所暛溑獕琐琑瑣索褨鎍鎖鎻鏁锁溹蜶逤他塌她它榙溻牠祂褟趿鉈铊闧塔墖獭獺鮙鰨鳎傝嚃嚺崉挞搨撻榻橽毾沓涾澾濌狧禢粏誻譶踏蹋蹹躂躢遝遢錔闒闥闼阘鞜鞳侤囼孡胎儓台坮嬯抬擡旲檯炱炲箈籉臺苔菭薹跆邰颱駘骀鮐鲐冭太夳忲态態汏汰汱泰溙燤肽舦酞鈦钛啴嘽坍怹摊擹攤滩潬灘痑瘫癱舑貪贪倓坛埮墰墵壇壜婒弹弾彈惔憛昙曇榃橝檀潭燂痰罈罎藫覃談譚譠谈谭貚郯醈醰錟锬顃僋嗿坦忐憳憻暺毯璮菼袒襢醓鉭钽叹嘆探歎湠炭碳舕劏嘡汤湯羰薚蝪蹚鏜镗鞺鼞傏唐啺坣堂塘嵣搪棠榶樘橖溏漟煻瑭磄禟篖糃糖糛膅膛蓎螗螳赯踼鄌醣鎕闛隚餹饄鶶伖倘偒傥儻戃曭淌爣矘耥躺鎲钂镋摥烫燙趟鐋铴夲嫍幍弢慆掏搯槄涛滔濤瑫絛縚縧绦詜謟轁鞱韜韬飸饕匋咷啕桃洮淘祹綯绹萄蜪裪迯逃醄鋾陶鞀鞉饀駣騊鼗討讨套忑忒慝特脦蟘鋱铽熥膯鼟儯幐滕漛疼痋籐籘縢腾藤虅螣誊謄邆駦騰驣鰧霯剔擿梯踢銻锑鷈鷉偍厗啼嗁媞崹徲惿提渧漽瑅睼碮禔禵稊綈緹绨缇罤蕛褆謕趧蹄蹏醍鍗題题騠鮷鯷鳀鵜鶗鶙鷤鹈体挮躰軆骵體倜剃嚏嚔屉屜悌悐惕惖戻掦揥替朑歒殢涕瓋笹籊薙褅趯逖逷髰鬀鬄兲天婖添酟靔靝黇塡填屇恬搷沺湉璳甛甜田畋畑碵磌窴緂胋菾闐阗鴫鷆鷏倎唺忝悿晪殄淟琠痶睓腆舔覥觍賟錪餂掭瑱舚佻庣恌挑旫祧聎岧岹条條樤祒笤芀苕萔蓚蓨蜩调迢鋚鎥鞗髫鯈鰷鲦齠龆嬥宨晀朓窕窱脁誂眺粜糶絩覜趒跳怗聑萜貼贴僣帖蛈鉄銕鐡鐵铁驖呫飻餮厅厛听庁廰廳桯汀烃烴綎耓聴聼聽鞓亭停婷嵉庭廷楟榳渟筳聤莛葶蜓蝏諪邒閮霆鼮侹圢娗挺梃涏烶珽町甼脡艇誔鋌铤頲颋嗵樋炵痌絧蓪通仝佟僮勭同哃峂峒峝庝彤晍曈朣桐橦氃浵潼烔燑犝狪獞眮瞳砼秱穜童粡膧茼蚒詷赨酮鉖鉵銅铜餇鮦鲖捅桶筒筩統綂统恸慟憅痛衕偷偸婾媮緰鋀鍮亠头投頭骰妵敨斢紏蘣黈透凸堗宊嶀怢捸涋湥痜禿秃突葖鋵鵚鼵凃図图圖圗塗屠峹嵞庩廜徒悇捈揬梌涂潳瑹瘏稌筡腯荼蒤跿途酴鈯鍎馟駼鵌鶟鷋鷵吐唋土圡釷钍兎兔堍莵菟迌鵵汢圕湍煓猯貒剸团団團慱抟摶槫檲漙篿糰鏄鷒鷻墥畽疃彖湪褖推蓷藬尵弚橔穨蘈蹪隤頹頺頽颓魋俀僓腿蹆骽娧煺蛻蜕螁褪退駾吞呑噋旽暾朜涒焞囤坉屯忳臀臋芚蛌豘豚軘霕飩饨魨鲀黗氽乇仛侂咃咜托扡拕拖挩捝杔汑沰涶脫脱莌袥託讬飥饦馲魠鮵佗侻坨堶媠岮柁槖橐沱沲狏砣砤碢紽袉詑跎酡阤陀陁馱駄駝駞騨驒驝驮驼鮀鴕鸵鼉鼍鼧妥嫷庹彵椭楕橢鰖鵎唾嶞拓柝毤毻箨籜萚蘀跅劸哇嗗娲媧屲挖搲攨洼溛漥瓾畖穵窊窐窪蛙韈鼃娃佤咓瓦砙邷嗢聉腽膃袜襪韤呙咼喎歪竵外顡剜塆壪婠帵弯彎湾潫灣睕蜿豌丸刓完岏忨抏捖汍烷玩琓笂紈纨翫芄貦頑顽倇唍埦婉宛惋挽晚晥晩晼梚椀涴琬畹皖盌碗箢綩綰绾脘莞菀萖踠輓鋔万卍卐妧捥杤澫瞣脕腕萬薍蟃贃贎輐鋄錽鎫尣尩尪尫汪亡亾仼兦王莣蚟彺往徃惘暀枉棢瀇網网罒罓罔罖菵蛧蝄誷輞辋魍妄忘旺望朢迋偎危厃喴威媙崴嵔嶶巍微愄揋揻椳楲溦烓煨燰癓縅葨葳薇蜲蝛覣詴逶隇隈霺鰃鰄鳂唯喡囗囲围圍壝媁峗峞嵬帏帷幃惟桅欈沩洈涠湋溈潍潙潿濰為爲犩琟矀硙維维蓶覹违違鄬醀鍏闈闱韋韦鮠亹伟伪偉偽僞儰委娓寪尾屗崣嶉徫愇捤撱斖暐梶椲洧浘渨濻瀢炜煒猥玮瑋痏痿硊碨緯纬腲艉芛苇荱萎葦蒍蔿諉诿踓鍡隗韑韙韡韪頠颹骩骪骫鮪鲔为位卫叞味喂墛媦尉慰懀未渭煟熭犚猬畏緭罻胃苿菋蔚藯蘶蜼蝟螱衛衞褽謂讆讏谓躗躛軎轊鏏霨餧餵饖魏鮇鳚塭昷榅榲殟温溫瑥瘟豱輼轀辒鎾鞰饂鰛鰮鳁彣文炆珳瘒紋繧纹聞芠蚉蚊螡蟁閺閿闅闦闻阌雯馼駇魰鳼鴍鼤伆刎吻呅呡抆桽稳穏穩紊肳脗問妏揾搵汶渂璺莬问顐嗡翁聬螉鎓鶲鹟勜塕奣嵡攚暡滃瞈蓊瓮甕罋蕹齆倭唩挝涡涹渦猧窝窩莴萵蜗蝸踒婐婑我捰仴偓卧媉幄捾握斡枂楃沃渥濣焥瓁瞃硪肟腛臒臥齷龌乌剭呜嗚圬屋巫弙杇歍汙汚污洿烏窏箼螐誈誣诬邬鄔鎢钨鰞鴮吳吴吾呉墲娪峿无梧橆毋洖浯無珸璑祦芜茣莁蕪蜈蟱譕郚鋙铻鯃鵐鷡鹀鼯乄五仵伍侮倵儛午啎妩娒娬嫵庑廡忤怃憮捂摀武潕熓牾玝珷瑦甒瞴碔舞躌迕逜陚鵡鹉俉兀务務勿卼唔坞塢奦婺寤屼岉嵍嵨忢悞悟悮戊扤敄旿晤杌溩焐熃物痦矹窹粅芴蘁誤误鋈阢隖雺雾霚霧靰騖骛鶩鹜鼿齀俙傒僖兮凞卥厀吸唏唽嘻噏嚱夕奚娭嬆嬉屖嵠巇希徆徯忚怸恓息悉悕惁惜扱扸昔晞晰晳暿曦析桸榽樨橀欷歙氥汐浠淅渓溪潝烯焁焈焟焬煕熄熈熙熹熺熻燨爔牺犀犠犧狶琋瘜皙睎瞦矽硒磎礂稀穸窸粞糦緆繥羲翕翖肸肹膝舾莃菥蒠蜥螅螇蟋蠵裼西覡觹觽觿譆谿豀豨豯貕赥邜郗鄎酅醯釸錫鏭鐊鑴锡隵餏饎饻鯑鵗鸂鼷习喺媳嶍席椺槢檄漝習蒵蓆薂袭襲觋謵趘郋鎴隰霫飁騱騽驨鰼鳛喜囍壐屣徙憘憙枲橲歖洗漇玺璽矖禧縰葈葸蓰蟢諰謑蹝躧鈢鉨鉩鱚係匸卌呬墍屃屓屭忥怬恄慀戏戯戱戲椞欯潟澙熂犔盻磶禊稧系細綌縘繫细绤舃舄蕮虩衋覤赩趇郤釳闟阋隙隟霼餼饩鬩黖傄呷煆瞎虲虾蝦谺閕颬鰕侠俠匣埉峡峽敮暇柙炠烚狎狭狹珨瑕硖硤碬磍祫筪縖翈舝舺蕸赮轄辖遐鍜鎋陜陿霞騢魻鶷黠閜丅下乤吓圷夏夓懗梺疜睱罅諕鎼鏬仙仚佡僊僲先嘕奾嬐孅屳廯忺憸掀攕暹杴枮氙珗祆秈籼繊纎纖纤苮莶薟褼襳跹蹮躚酰銛銽鍁铦锨韯韱馦鮮鱻鲜鶱伭咁咸啣嗛妶娴娹婱嫌嫺嫻弦憪挦撏涎湺澖甉痫癇癎盷瞯礥稴絃胘舷藖蚿蛝衔衘誸諴賢贒贤輱醎銜鑦閑閒闲鷳鷴鷼鹇鹹麙冼尟尠崄嶮幰搟攇显櫶毨灦烍燹狝猃獫獮玁禒筅箲藓蘚蚬蜆譣赻跣銑鍌铣险険險韅顕顯僩僴县咞哯垷埳塪壏姭娊宪岘峴憲撊晛橌橺涀瀗献獻现現県睍粯糮絤綫線縣线缐羡羨腺臔臽苋莧誢豏鋧錎限陥陷霰餡馅麲鼸乡厢廂忀楿欀湘瓖相稥箱緗纕缃膷芗萫葙薌襄郷鄉鄊鄕鑲镶香驤骧鱜麘佭庠栙瓨祥絴翔詳详跭享亯响想晑蚃蠁銄響飨餉饗饟饷鮝鯗鱶鲞像勨向嚮姠嶑巷曏橡珦缿蟓衖襐象鐌項项鱌侾削呺哓嘐嘵嚣嚻囂婋宯宵庨彇憢揱撨枭枵梟櫹歊毊消潇瀟灱灲烋焇猇獢痚痟硝硣穘窙箫簘簫綃绡翛肖膮萧蕭藃虈虓蛸蟂蟏蟰蠨踃逍銷销霄颵驍骁髇髐魈鴞鴵鷍鸮崤殽洨淆訤誵郩小晓暁曉皛皢筱筿篠謏俲傚効咲哮啸嘋嘨嘯孝恔效敩斅斆校歗涍熽笑詨誟些娎揳楔歇猲蝎蠍偕劦勰协協嗋嚡垥奊孈峫恊愶拹挟挾携撷擕擷攜斜旪熁燲瑎絜綊緳縀缬翓胁脅脇脋膎蝢衺襭諧讗谐邪鞋鞵龤写冩寫藛血亵伳偞偰僁卨卸噧塮夑媟屑屟屧嶰廨徢懈暬械榍榭泄泻洩渫澥瀉瀣灺炧炨烲焎燮爕獬祄禼糏紲絏絬緤繲纈绁缷薢薤蟹蠏褉褻謝谢躞邂靾鞢韰齂齘齛齥俽噷噺妡嬜廞心忄忻惞新昕杺欣歆盺芯薪訢辛邤鈊鋅鑫锌馨馫枔襑鐔镡伈伩信囟孞炘焮脪舋衅訫軐釁阠顖馸垶惺星曐煋猩瑆皨箵篂腥興觪觲謃騂骍鮏鯹侀刑哘型娙形洐滎硎荥蛵行邢郉鈃鉶銒鋞钘铏陉陘餳饧擤睲醒倖兴姓婞嬹幸性悻杏涬緈臖荇莕葕兄兇凶匂匈哅忷恟汹洶胷胸芎訩詾讻賯熊熋雄焸焽夐敻詗诇休俢修咻庥樇烌羞脙脩臹貅銝鎀鏅飍饈馐髤髹鮴鱃鵂鸺苬朽滫潃糔嗅嚊岫峀溴珛琇璓秀綉繍繡绣螑袖褎褏銹鏥鏽锈齅偦吁嘘噓圩墟媭嬃戌揟旴楈欨欻歔歘燸疞盱砉綇縃胥蕦虗虚虛蝑裇訏許諝譃谞鑐需須须顼驉鬚魆魖俆冔徐禑蒣呴喣姁暊栩湑珝盨稰糈詡諿许诩鄦醑伵侐勖勗卹叙垿壻婿序怴恤慉敍敘旭昫晇朂槒欰殈汿沀洫溆漵潊烅烼煦獝珬盢瞁稸絮続緒緖續绪续聓聟芧蓄蓿藇藚訹賉酗銊頊鱮儇吅喧塇媗宣弲愃愋懁揎昍晅暄梋煊瑄睻矎禤箮翧翾萱萲蓒蕿藼蘐蝖蠉諠諼譞谖軒轩鋗鍹鞙駽鰚嫙悬懸旋暶檈漩玄玹琁璇璿痃蜁咺暅烜癣癬选選怰昡楥楦泫渲炫琄眩眴碹絢縼繏绚蔙衒袨贙鉉鏇铉镟颴疶蒆薛辥辪靴鞾乴壆学學峃嶨斈泶澩燢穴茓袕觷踅鷽鸴樰膤艝轌雪鱈鳕吷坹岤桖瀥狘瞲謔谑趐勋勛勲勳嚑坃埙塤壎壦曛焄熏燻爋獯矄纁臐薫薰蘍醺偱噚姰寻尋峋巡廵循恂揗攳旬杊栒桪樳毥洵浔潯灥燅燖珣璕畃紃荀蟳詢询郇鄩駨鱏鱘鲟伨侚卂噀奞巺巽徇愻殉殾汛潠狥稄蕈訊訓訙训讯迅迿逊遜鑂顨馴驯丫压吖呀圧垭壓孲庘押枒桠椏錏鐚铔鴉鴨鵶鸦鸭伢厑厓堐岈崕崖涯漄牙猚琊睚笌芽蚜衙齖厊哑唖啞庌疨痖瘂蕥雅亚亜亞俹冴劜圔圠埡娅婭挜掗揠氩氬犽猰玡砑稏窫聐襾覀訝讶軋轧迓齾傿剦嫣嬮崦嶖恹懕懨樮歅淊淹渰湮漹烟焉焑煙珚硽篶胭臙菸鄢醃閹阉黫严厳啱喦嚴埏塩壛壧妍姸娫娮岩嵒嵓巌巖巗延揅昖楌檐櫩欕沿炎炏狿琂盐研硏碞礹筵簷綖莚蔅虤蜒言訁訮詽讠郔閆閻闫阎顏顔颜鹽麣乵俨偃儼兖兗剡匽厣厴噞夵奄孍嵃巘巚弇愝戭扊抁掩揜曮棪椼檿沇渷演琰甗眼縯罨萒蝘衍裺褗躽遃郾酓隒顩魇魘鰋鶠黡黤黬黭黶鼴鼹齴龑偐厌厭咽唁喭嚈嚥囐堰墕妟姲嬊嬿宴彥彦敥晏暥曕曣椻溎滟灎灔灧灩烻焔焰焱熖燄燕爓牪猒砚硯艳艶艷覎觃觾諺讌讞谚谳豓豔贋贗赝軅酀酽醶醼釅隁雁餍饜騐験騴驗驠验鬳鳫鴈鴳鷃鷰齞央姎抰殃泱眏秧胦鉠鍈雵鞅鴦鸯佯劷垟崵崸徉扬揚敭旸昜暘杨楊氜洋炀烊煬珜疡瘍眻羊羏蛘諹輰鍚钖阦阳陽霷颺飏鰑鴹鸉仰佒傟养卬咉坱岟慃懩攁柍楧氧氱瀁炴痒癢礢紻蝆軮飬養駚怏恙样様樣漾羕詇吆喓夭妖幺楆殀祅腰葽訞邀鴁鴢倄傜嗂垚堯姚媱尧尭峣嶢嶤徭愮揺搖摇摿暚榣滧烑爻猺珧瑤瑶磘窑窯窰繇肴蘨謠謡谣軺轺遙遥邎鎐顤颻飖餆餚鰩鱙鳐仸偠咬婹宎岆崾抭杳枖柼榚溔狕眑窅窈舀苭蓔闄騕鷕齩曜熎燿獟矅穾窔筄纅耀艞药葯薬藥袎要覞詏讑靿鷂鹞鼼倻吔噎擨暍椰歋潱蠮捓揶爷爺瑘耶釾鋣鎁铘也冶嘢埜壄漜野业亱僷叶墷夜嶪嶫抴捙掖擛擪擫晔曄曅曗曳曵枼枽業殗洂液澲烨煠燁爗璍皣瞱瞸礏腋葉謁谒邺鄴鍱鎑鐷靥靨頁页餣饁馌驜鵺鸈亪一乊伊依医吚咿噫壱壹夁嫛嬄弌悘揖撎檹毉洢渏漪猗瑿畩祎禕稦繄蛜衣衤譩辷郼醫銥铱鷖鹥黟黳乁仪侇儀冝匜咦圯夷姨媐宐宜宧寲峓嶬嶷巸彛彜彝彞怡恞扅拸暆杝柂栘桋椬椸沂沶洟熪狋珆瓵疑痍眙移簃籎羠胰荑萓蛦螔袘觺詒誃謻讉诒貽贻跠迻遗遺鏔頉頤頥顊颐飴饴鮧鴺乙乛以佁倚偯嬟崺已庡扆攺敼旑旖椅檥矣礒笖舣艤苡苢蚁螘蟻裿輢轙迆迤迱逘酏釔鈘鉯钇顗鳦齮乂义亄亦亿仡伇伿佚佾俋億兿刈劓劮勚勩匇呓呭呹唈嗌囈圛坄垼埶埸墿奕嫕嬑寱屹峄嶧帟帠幆廙异弈弋役忆忔怈怿悒悥意憶懌懿抑挹敡斁易晹曀曎杙枍枻栧棭榏槸檍欭歝殔殪殹毅泆浂浥浳湙溢潩澺瀷炈焲熠熤熼燚燡燱獈玴異疫痬瘗瘞瘱癔益睪瞖秇穓竩篒縊繶繹绎缢羛義羿翊翌翳翼耴肄肊膉臆艗艺芅苅萟蓺薏藙藝蘙虉蛡蜴螠衪袣裔裛褹襼訲訳詍詣誼譯議讛议译诣谊豙豛豷貖貤贀跇軼轶逸邑鄓醳醷釴鈠鎰鐿镒镱阣隿霬饐駅驛驿骮鮨鯣鶂鶃鶍鷁鷊鷧鷾鸃鹝鹢黓齸弬侌凐喑噾囙因垔堙姻婣愔慇栶殷氤洇溵濦瘖磤禋秵筃絪緸茵荫蒑蔭裀諲銦铟闉阥阴陰陻隂霒霠鞇音韾駰骃齗乑冘吟噖嚚圁垠夤婬寅峾崟崯斦檭殥泿淫滛烎犾狺珢璌碒荶蔩蟫訔訚訡誾鄞鈝銀银霪鷣齦龂龈吲尹嶾廴引朄檃檼櫽淾濥瘾癮粌蘟蚓螾讔赺趛輑鈏隐隠隱靷飮飲饮印垽堷廕慭憖憗懚洕湚猌癊窨胤茚酳鮣偀嘤噟嚶婴媖嫈嬰孆孾应応愥應撄攖朠桜樱櫻渶瀴煐珱瑛璎瓔甇甖碤礯緓纓绬缨罂罃罌膺英莺蘡蝧蠳褮譍譻賏軈鑍锳霙韺鴬鶑鶧鶯鷪鷹鸎鸚鹦鹰僌営塋嬴巆攍楹櫿溁溋滢潆濙濚濴瀅瀛瀠瀯灐灜熒營瑩盁盈禜籝籯縈茔荧莹萤营萦萾蓥藀蛍蝇蝿螢蠅覮謍贏赢迎鎣巊廮影摬梬浧潁瘿癭矨穎郢鐛頴颍颕颖媵映暎硬膡鱦哟唷喲佣傭嗈噰墉壅嫞庸廱慵拥擁滽澭灉牅痈癕癰臃邕郺鄘鏞镛雍雝饔鱅鳙鷛喁顒颙鰫俑勇勈咏埇塎嵱彮怺恿悀惥愑愹慂柡栐永泳涌湧甬硧蛹詠踊踴鯒鲬用砽苚蒏醟优優呦嚘峳幽忧怮悠憂懮攸櫌泑浟滺瀀纋羪耰逌鄾麀偤尢尤庮怞怣楢沋油游犹猶猷由甴疣秞肬莜莸蕕蚰蝣訧輏輶逰遊邮郵鈾铀駀魷鮋鱿鲉丣卣友有栯梄槱湵牖牗禉羑聈苃莠蜏酉銪铕黝亴佑佦侑又右哊唀囿姷孧宥峟幼柚櫾牰狖祐蚴誘诱貁迶酭釉鼬唹扜扝淤瘀盓穻箊紆纡込迂迃陓乻予于亐伃余俞兪堣堬妤娛娯娱媀嬩崳嵎嵛愉愚扵揄於旟杅桙楡楰榆欤歈歟歶渔渝湡漁澞牏狳玗玙瑜璵盂睮禺窬竽籅羭腴臾舁舆艅茰萮萸蕍蘛虞虶蝓螸衧褕覦觎諛謣谀踰輿轝逾邘酑鍝隃隅雓雩餘馀騟骬髃魚魣鮽鯲鰅鱼鷠鸆齵与伛俁俣偊傴匬噳圄圉宇寙屿嶼庾懙挧敔斔斞楀瑀瘐祤禹穥窳羽與萭語语貐鄅雨頨麌齬龉俼僪儥喅喩喻圫域堉妪嫗寓峪嶎庽彧御忬悆惐愈慾戫昱棛棜棫櫲欎欝欥欲毓浴淢淯滪潏澦灪焴煜燏燠爩狱獄玉琙瘉癒矞砡硢硲礇礖礜禦秗稢稶篽籞籲粖緎罭聿肀育艈芋芌茟蒮蓣蓹蕷薁蘌蜟蜮袬裕誉諭譽谕豫軉輍逳遇遹郁醧鈺銉鋊錥鐭钰閾阈雤霱預预飫饇饫馭驈驭鬰鬱鬻魊鱊鳿鴥鴧鴪鵒鷸鸒鹆鹬冤剈囦嬽寃悁惌棩淵渁渆渊渕灁眢肙葾蒬蜎蜵裷駌鳶鴛鵷鸢鸳鹓鼘鼝元円原厡厵员員园圆圎園圓垣塬媴嫄援杬榞榬橼櫞沅湲源溒爰猨猿笎緣縁缘羱芫茒蒝薗蚖蝝蝯螈袁褤謜貟贠轅辕邍邧酛鈨鎱騵魭鶢鶰黿鼋盶薳远逺遠鋺傆噮垸夗妴媛怨愿掾瑗禐苑衏裫褑院願啘曰曱矱箹約约哕噦刖妜嬳岄岳嶽恱悅悦戉抈捳月樾泧瀹爚玥礿禴篗籆籥籰粤粵蘥蚎蚏越跀跃躍軏鈅鉞鑰钥钺閱閲阅鸑鸙黦龠龥奫晕暈氲氳煴熅蒀蒕蝹贇赟馧云伝勻匀囩妘愪抣昀橒沄涢溳澐熉畇眃秐筠筼篔紜縜纭耘耺芸蒷蕓郧鄖鋆雲允喗夽抎殒殞狁磒荺賱鈗阭陨隕霣馻齫齳傊孕恽惲愠慍枟熨緼縕缊腪蕰蕴薀藴蘊褞运運郓鄆酝醖醞韗韞韫韵韻餫匝咂帀扎拶桚沞臜臢迊鉔魳囃杂沯砸襍雑雜雥韴咋哉栽渽溨災灾烖甾畠睵賳宰崽傤儎再在扗洅縡載载酨兂橵簪簮糌鐕鐟鵤偺咱喒儧儹噆寁揝撍攅攒攢昝趱趲囋暂暫濽灒瓉瓒瓚禶襸讃讚賛贊赞蹔鄼錾鏨饡匨牂羘臧賍賘贓贜赃髒駔驵塟奘弉脏臓臟葬蔵銺傮糟蹧遭醩凿鑿早枣栆棗澡璅璪薻藻蚤唕唣喿噪慥梍灶煰燥皁皂竃竈簉艁譟趮躁造则則啧啫嘖嫧帻幘択择擇樍歵沢泎泽溭滜澤皟瞔矠礋箦簀舴蔶蠌襗諎謮責賾责赜迮鸅齚齰仄崱庂捑昃昗汄戝蠈賊贼鰂鱡鲗怎譖谮増增憎橧璔矰磳繒缯罾譄鄫鱛囎熷甑贈赠鋥锃鬵偧劄哳喳抯挓揸摣柤楂樝渣皶皻紥紮觰譇齄齇札牐箚耫蚻譗鍘铡閘闸霅厏拃眨砟鮓鮺鲊鲝乍吒咤宱搾栅榨溠灹炸痄蚱詐诈醡夈捚摘斋斎榸粂齋宅檡窄鉙债債寨瘵砦噡岾嶦惉旃旜枬栴毡氈氊沾瞻薝蛅詀詹譫谵趈邅閚霑飦饘驙魙鱣鳣鸇鹯讝嫸展崭嶃嶄搌斩斬榐橏琖盏盞輾辗醆颭飐佔偡僝占嶘战戦戰栈桟棧湛站綻绽菚蘸虥虦覱譧轏驏傽嫜张張彰慞暲樟漳獐璋章粻蔁蟑遧鄣鏱餦騿鱆麞仉幥掌涨漲礃丈仗墇嶂帐帳幛扙杖涱痮瘬瘴瞕粀胀脹賬账障佋妱巶招昭皽釗鉊鍣钊駋找沼爪爫瑵兆召垗旐曌枛棹櫂炤照燳狣瞾笊箌罀罩羄肁肇肈詔诏赵趙鮡嗻嫬遮厇哲啠喆嚞埑悊折摺晢晣歽矺砓磔籷粍虴蛰蜇蟄袩詟謫謺讁讋谪輒輙轍辄辙銸鮿乽者褶襵赭踷鍺锗柘樜浙淛蔗蟅这這鷓鹧侦偵嫃寊帧帪幀搸斟桢椹楨榛樼殝浈湞溱潧澵獉珍珎瑧甄眞真砧碪祯禎禛箴籈胗臻葴蒖蓁薽貞贞轃遉酙針鉁錱鍼针鱵姫屒弫抮昣枕畛疹眕稹紾縝縥缜聄萙袗裖覙診诊軫轸辴駗鬒黰侲圳塦挋振揕朕栚甽眹紖絼纼誫賑赈鋴鎭鎮镇阵陣震鴆鸩争佂凧埩姃媜峥崝崢征徰徴徵怔掙揁炡烝爭狰猙癥眐睁睜筝箏篜糽聇脀蒸踭鉦錚鏳钲铮鬇愸抍拯掟撜整晸氶塣幁挣政正症証諍證证诤郑鄭靕鴊之倁卮吱巵憄搘支枝栀栺梔椥榰汁汥泜疷知祗祬秓稙綕織织肢胑胝脂臸芝蘵蜘衼隻馶鳷鴲鼅侄値值埴執妷姪嬂慹戠执摭植樴殖淔漐潪犆瓡直禃絷縶聀职職膱蟙跖踯蹠躑軄釞馽凪劧只咫址坁坧墌夂帋恉扺抧指旨枳止汦沚洔淽疻砋祇祉秖紙纸芷茋藢衹襧訨趾軹轵酯阯黹乿俧偫傂儨制剬劕厔垁墆娡寘峙崻帙帜幟庢庤廌彘徏徝志忮懥懫扻挃挚掷搱摨摯擲擳旘晊智柣栉桎梽櫍櫛歭治洷滍滞滯潌瀄炙熫狾猘璏瓆畤疐痓痔痣瘈礩祑秩秷稚稺穉窒筫紩緻置翐膣至致芖蛭袟袠製覟觗觯觶誌豑豒豸貭質贄质贽跱踬躓輊轾迣郅銍鋕鑕铚锧陟隲雉駤騭騺驇骘鯯鴙鷙鸷中伀刣妐幒彸忠柊汷泈炂盅籦終终舯蔠蜙螤螽衳衷蹱鈡銿鍾鐘钟锺鴤鼨冢喠塚尰徸歱煄瘇种種肿腫踵仲众偅堹妕媑狆眾祌筗茽蚛衆衶諥重侜周啁喌嚋婤州徟洲淍炿烐珘盩矪粥舟謅譸诌诪賙赒輈輖辀週郮銂霌駲騆鵃鸼妯碡軸轴帚晭疛睭箒肘菷鯞伷僽冑呪咒咮噣宙昼晝甃皱皺籀籒籕粙紂縐纣绉胄荮葤詋酎駎驟骤侏朱株槠橥櫧櫫洙潴瀦猪珠硃秼絑茱蕏藸蛛蝫蠩袾誅諸诛诸豬跦邾銖铢駯鮢鯺鴸鼄劚孎斸曯欘灟炢烛燭爥瘃窋竹竺笁笜篴舳茿蓫蠋蠾躅逐逫钃鱁丶主劯嘱囑宔帾拄渚濐煑煮燝瞩矚罜褚詝陼鸀麈乼伫佇住助坾墸壴嵀拀杼柱柷樦殶注炷疰眝砫祝祩竚筑筯箸築篫簗紵紸纻羜翥苎苧莇著蛀註貯贮跓軴迬鉒鋳鑄铸飳馵駐驻麆抓撾檛簻膼髽跩拽专叀塼嫥専專瑼甎砖磗磚膞蟤諯鄟顓颛鱄孨竱轉转僎啭囀堟撰灷瑑篆篹籑縳腞蒃襈譔賺赚転饌馔妆妝娤庄庒桩梉樁湷粧糚荘莊装裝壮壯壵撞焋状狀椎追錐锥隹騅骓鵻沝坠墜娷惴甀畷硾礈笍綴縋缀缒腏膇諈贅赘醊錣鑆啍宒窀肫衠諄谆迍准凖埻準綧稕訰倬拙捉桌梲棁棳槕涿炪焯穛穱窧鐯丵劅卓叕啄啅圴妰娺彴撯擆擢斀斫斮斱斲斵晫椓櫡汋浊浞濁濯灂灼烵犳琢琸着硺禚窡篧籗籱罬茁蠗蠿諁諑謶诼酌鋜鐲镯鵫鷟兹呲咨嗞姕姿孖孜孳孶崰嵫栥椔淄湽滋澬玆禌秶稵粢紎緇緕纃缁茊茲菑葘觜訾諮谘貲資赀资赼趑趦輜輺辎鄑鈭錙鍿鎡锱镃頾頿髭鯔鰦鲻鶅鼒齍齜龇蓻仔吇呰啙姉姊子杍梓榟橴滓矷秄秭笫籽紫耔胏茈虸訿釨倳剚字恣渍漬牸眥眦胔胾自芓茡荢嗭倧堫宗嵏嵕惾朡棕椶熧猣磫稯綜緃緵繌综翪腙葼蝬豵踨踪蹤鍐鑁騌騣骔鬃鬉鬷鯮鯼倊偬傯嵸总惣捴揔搃摠焧燪総緫縂總蓗昮猔疭瘲碂粽糉糭縦縱纵掫棷棸箃緅菆諏诹邹郰鄒鄹陬騶驺鯫鲰黀齱齺走赱鯐奏揍租菹葅蒩卆卒哫崒崪族椊箤足踤鏃镞俎唨爼珇祖組组詛诅鎺阻靻劗躜躦鉆鑚鑽钻籫繤纂纉纘缵攥厜嗺樶纗蟕嘴噿嶊璻冣嶵晬最栬槜檇檌祽稡絊罪蕞辠酔酻醉鋷錊噂墫尊嶟樽繜罇遵鐏鱒鳟鶎鷷僔撙譐捘銌嘬穝捽昨秨稓笮筰苲莋鈼佐左繓作侳做唑坐岝岞座怍柞祚糳胙葃葄蓙袏酢阼飵咗龦龧龨龩龪龫龬龭龮龯龰龱龲龳龴龵龶龷龸龹龺龻龼龽龾龿鿀鿁鿂鿃鿄鿅鿆鿇鿈鿉鿊鿋鿌鿍鿎鿏鿐"; - BI.CODE_INDEX = {}; - for(var i = 0; i < codes.length; i++) { - BI.CODE_INDEX[codes[i]] = i - } -})(); \ No newline at end of file +// eslint-disable-next-line no-useless-escape +const codes = " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⺀⺁⺂⺃⺄⺅⺆⺇⺈⺉⺊⺋⺌⺍⺎⺏⺐⺑⺒⺓⺔⺕⺖⺗⺘⺙⺚⺛⺜⺝⺞⺟⺠⺡⺢⺣⺤⺥⺦⺧⺨⺩⺪⺫⺬⺭⺮⺯⺰⺱⺲⺳⺴⺵⺶⺷⺸⺹⺺⺻⺼⺽⺾⺿⻀⻁⻂⻃⻄⻅⻆⻇⻈⻉⻊⻋⻌⻍⻎⻏⻐⻑⻒⻓⻔⻕⻖⻗⻘⻙⻚⻛⻜⻝⻞⻟⻠⻡⻢⻣⻤⻥⻦⻧⻨⻩⻪⻫⻬⻭⻮⻯⻰⻱⻲⻳⻴⻵⻶⻷⻸⻹⻺⻻⻼⻽⻾⻿⼀⼁⼂⼃⼄⼅⼆⼇⼈⼉⼊⼋⼌⼍⼎⼏⼐⼑⼒⼓⼔⼕⼖⼗⼘⼙⼚⼛⼜⼝⼞⼟⼠⼡⼢⼣⼤⼥⼦⼧⼨⼩⼪⼫⼬⼭⼮⼯⼰⼱⼲⼳⼴⼵⼶⼷⼸⼹⼺⼻⼼⼽⼾⼿⽀⽁⽂⽃⽄⽅⽆⽇⽈⽉⽊⽋⽌⽍⽎⽏⽐⽑⽒⽓⽔⽕⽖⽗⽘⽙⽚⽛⽜⽝⽞⽟⽠⽡⽢⽣⽤⽥⽦⽧⽨⽩⽪⽫⽬⽭⽮⽯⽰⽱⽲⽳⽴⽵⽶⽷⽸⽹⽺⽻⽼⽽⽾⽿⾀⾁⾂⾃⾄⾅⾆⾇⾈⾉⾊⾋⾌⾍⾎⾏⾐⾑⾒⾓⾔⾕⾖⾗⾘⾙⾚⾛⾜⾝⾞⾟⾠⾡⾢⾣⾤⾥⾦⾧⾨⾩⾪⾫⾬⾭⾮⾯⾰⾱⾲⾳⾴⾵⾶⾷⾸⾹⾺⾻⾼⾽⾾⾿⿀⿁⿂⿃⿄⿅⿆⿇⿈⿉⿊⿋⿌⿍⿎⿏⿐⿑⿒⿓⿔⿕⿖⿗⿘⿙⿚⿛⿜⿝⿞⿟⿠⿡⿢⿣⿤⿥⿦⿧⿨⿩⿪⿫⿬⿭⿮⿯⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻⿼⿽⿾⿿ 、。〃〄々〆〇〈〉《》「」『』【】〒〓〔〕〖〗〘〙〚〛〜〝〞〟〠〡〢〣〤〥〦〧〨〩〪〭〮〯〫〬〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾〿぀ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんゔゕゖ゗゘゙゚゛゜ゝゞゟ゠ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ㄀㄁㄂㄃㄄ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩㄪㄫㄬㄭㄮㄯ㄰ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ㆏㆐㆑㆒㆓㆔㆕㆖㆗㆘㆙㆚㆛㆜㆝㆞㆟ㆠㆡㆢㆣㆤㆥㆦㆧㆨㆩㆪㆫㆬㆭㆮㆯㆰㆱㆲㆳㆴㆵㆶㆷㆸㆹㆺㆻㆼㆽㆾㆿ㇀㇁㇂㇃㇄㇅㇆㇇㇈㇉㇊㇋㇌㇍㇎㇏㇐㇑㇒㇓㇔㇕㇖㇗㇘㇙㇚㇛㇜㇝㇞㇟㇠㇡㇢㇣㇤㇥㇦㇧㇨㇩㇪㇫㇬㇭㇮㇯ㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛㈜㈝㈞㈟㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩㈪㈫㈬㈭㈮㈯㈰㈱㈲㈳㈴㈵㈶㈷㈸㈹㈺㈻㈼㈽㈾㈿㉀㉁㉂㉃㉄㉅㉆㉇㉈㉉㉊㉋㉌㉍㉎㉏㉐㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻㉼㉽㉾㉿㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉㊊㊋㊌㊍㊎㊏㊐㊑㊒㊓㊔㊕㊖㊗㊘㊙㊚㊛㊜㊝㊞㊟㊠㊡㊢㊣㊤㊥㊦㊧㊨㊩㊪㊫㊬㊭㊮㊯㊰㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿㋀㋁㋂㋃㋄㋅㋆㋇㋈㋉㋊㋋㋌㋍㋎㋏㋐㋑㋒㋓㋔㋕㋖㋗㋘㋙㋚㋛㋜㋝㋞㋟㋠㋡㋢㋣㋤㋥㋦㋧㋨㋩㋪㋫㋬㋭㋮㋯㋰㋱㋲㋳㋴㋵㋶㋷㋸㋹㋺㋻㋼㋽㋾㋿㌀㌁㌂㌃㌄㌅㌆㌇㌈㌉㌊㌋㌌㌍㌎㌏㌐㌑㌒㌓㌔㌕㌖㌗㌘㌙㌚㌛㌜㌝㌞㌟㌠㌡㌢㌣㌤㌥㌦㌧㌨㌩㌪㌫㌬㌭㌮㌯㌰㌱㌲㌳㌴㌵㌶㌷㌸㌹㌺㌻㌼㌽㌾㌿㍀㍁㍂㍃㍄㍅㍆㍇㍈㍉㍊㍋㍌㍍㍎㍏㍐㍑㍒㍓㍔㍕㍖㍗㍘㍙㍚㍛㍜㍝㍞㍟㍠㍡㍢㍣㍤㍥㍦㍧㍨㍩㍪㍫㍬㍭㍮㍯㍰㍱㍲㍳㍴㍵㍶㍷㍸㍹㍺㍻㍼㍽㍾㍿㎀㎁㎂㎃㎄㎅㎆㎇㎈㎉㎊㎋㎌㎍㎎㎏㎐㎑㎒㎓㎔㎕㎖㎗㎘㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㎣㎤㎥㎦㎧㎨㎩㎪㎫㎬㎭㎮㎯㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎺㎻㎼㎽㎾㎿㏀㏁㏂㏃㏄㏅㏆㏇㏈㏉㏊㏋㏌㏍㏎㏏㏐㏑㏒㏓㏔㏕㏖㏗㏘㏙㏚㏛㏜㏝㏞㏟㏠㏡㏢㏣㏤㏥㏦㏧㏨㏩㏪㏫㏬㏭㏮㏯㏰㏱㏲㏳㏴㏵㏶㏷㏸㏹㏺㏻㏼㏽㏾㏿㐀㐁㐂㐃㐄㐅㐆㐇㐈㐉㐊㐋㐌㐍㐎㐏㐐㐑㐒㐓㐔㐕㐖㐗㐘㐙㐚㐛㐜㐝㐞㐟㐠㐡㐢㐣㐤㐥㐦㐧㐨㐩㐪㐫㐬㐭㐮㐯㐰㐱㐲㐳㐴㐵㐶㐷㐸㐹㐺㐻㐼㐽㐾㐿㑀㑁㑂㑃㑄㑅㑆㑇㑈㑉㑊㑋㑌㑍㑎㑏㑐㑑㑒㑓㑔㑕㑖㑗㑘㑙㑚㑛㑜㑝㑞㑟㑠㑡㑢㑣㑤㑥㑦㑧㑨㑩㑪㑫㑬㑭㑮㑯㑰㑱㑲㑳㑴㑵㑶㑷㑸㑹㑺㑻㑼㑽㑾㑿㒀㒁㒂㒃㒄㒅㒆㒇㒈㒉㒊㒋㒌㒍㒎㒏㒐㒑㒒㒓㒔㒕㒖㒗㒘㒙㒚㒛㒜㒝㒞㒟㒠㒡㒢㒣㒤㒥㒦㒧㒨㒩㒪㒫㒬㒭㒮㒯㒰㒱㒲㒳㒴㒵㒶㒷㒸㒹㒺㒻㒼㒽㒾㒿㓀㓁㓂㓃㓄㓅㓆㓇㓈㓉㓊㓋㓌㓍㓎㓏㓐㓑㓒㓓㓔㓕㓖㓗㓘㓙㓚㓛㓜㓝㓞㓟㓠㓡㓢㓣㓤㓥㓦㓧㓨㓩㓪㓫㓬㓭㓮㓯㓰㓱㓲㓳㓴㓵㓶㓷㓸㓹㓺㓻㓼㓽㓾㓿㔀㔁㔂㔃㔄㔅㔆㔇㔈㔉㔊㔋㔌㔍㔎㔏㔐㔑㔒㔓㔔㔕㔖㔗㔘㔙㔚㔛㔜㔝㔞㔟㔠㔡㔢㔣㔤㔥㔦㔧㔨㔩㔪㔫㔬㔭㔮㔯㔰㔱㔲㔳㔴㔵㔶㔷㔸㔹㔺㔻㔼㔽㔾㔿㕀㕁㕂㕃㕄㕅㕆㕇㕈㕉㕊㕋㕌㕍㕎㕏㕐㕑㕒㕓㕔㕕㕖㕗㕘㕙㕚㕛㕜㕝㕞㕟㕠㕡㕢㕣㕤㕥㕦㕧㕨㕩㕪㕫㕬㕭㕮㕯㕰㕱㕲㕳㕴㕵㕶㕷㕸㕹㕺㕻㕼㕽㕾㕿㖀㖁㖂㖃㖄㖅㖆㖇㖈㖉㖊㖋㖌㖍㖎㖏㖐㖑㖒㖓㖔㖕㖖㖗㖘㖙㖚㖛㖜㖝㖞㖟㖠㖡㖢㖣㖤㖥㖦㖧㖨㖩㖪㖫㖬㖭㖮㖯㖰㖱㖲㖳㖴㖵㖶㖷㖸㖹㖺㖻㖼㖽㖾㖿㗀㗁㗂㗃㗄㗅㗆㗇㗈㗉㗊㗋㗌㗍㗎㗏㗐㗑㗒㗓㗔㗕㗖㗗㗘㗙㗚㗛㗜㗝㗞㗟㗠㗡㗢㗣㗤㗥㗦㗧㗨㗩㗪㗫㗬㗭㗮㗯㗰㗱㗲㗳㗴㗵㗶㗷㗸㗹㗺㗻㗼㗽㗾㗿㘀㘁㘂㘃㘄㘅㘆㘇㘈㘉㘊㘋㘌㘍㘎㘏㘐㘑㘒㘓㘔㘕㘖㘗㘘㘙㘚㘛㘜㘝㘞㘟㘠㘡㘢㘣㘤㘥㘦㘧㘨㘩㘪㘫㘬㘭㘮㘯㘰㘱㘲㘳㘴㘵㘶㘷㘸㘹㘺㘻㘼㘽㘾㘿㙀㙁㙂㙃㙄㙅㙆㙇㙈㙉㙊㙋㙌㙍㙎㙏㙐㙑㙒㙓㙔㙕㙖㙗㙘㙙㙚㙛㙜㙝㙞㙟㙠㙡㙢㙣㙤㙥㙦㙧㙨㙩㙪㙫㙬㙭㙮㙯㙰㙱㙲㙳㙴㙵㙶㙷㙸㙹㙺㙻㙼㙽㙾㙿㚀㚁㚂㚃㚄㚅㚆㚇㚈㚉㚊㚋㚌㚍㚎㚏㚐㚑㚒㚓㚔㚕㚖㚗㚘㚙㚚㚛㚜㚝㚞㚟㚠㚡㚢㚣㚤㚥㚦㚧㚨㚩㚪㚫㚬㚭㚮㚯㚰㚱㚲㚳㚴㚵㚶㚷㚸㚹㚺㚻㚼㚽㚾㚿㛀㛁㛂㛃㛄㛅㛆㛇㛈㛉㛊㛋㛌㛍㛎㛏㛐㛑㛒㛓㛔㛕㛖㛗㛘㛙㛚㛛㛜㛝㛞㛟㛠㛡㛢㛣㛤㛥㛦㛧㛨㛩㛪㛫㛬㛭㛮㛯㛰㛱㛲㛳㛴㛵㛶㛷㛸㛹㛺㛻㛼㛽㛾㛿㜀㜁㜂㜃㜄㜅㜆㜇㜈㜉㜊㜋㜌㜍㜎㜏㜐㜑㜒㜓㜔㜕㜖㜗㜘㜙㜚㜛㜜㜝㜞㜟㜠㜡㜢㜣㜤㜥㜦㜧㜨㜩㜪㜫㜬㜭㜮㜯㜰㜱㜲㜳㜴㜵㜶㜷㜸㜹㜺㜻㜼㜽㜾㜿㝀㝁㝂㝃㝄㝅㝆㝇㝈㝉㝊㝋㝌㝍㝎㝏㝐㝑㝒㝓㝔㝕㝖㝗㝘㝙㝚㝛㝜㝝㝞㝟㝠㝡㝢㝣㝤㝥㝦㝧㝨㝩㝪㝫㝬㝭㝮㝯㝰㝱㝲㝳㝴㝵㝶㝷㝸㝹㝺㝻㝼㝽㝾㝿㞀㞁㞂㞃㞄㞅㞆㞇㞈㞉㞊㞋㞌㞍㞎㞏㞐㞑㞒㞓㞔㞕㞖㞗㞘㞙㞚㞛㞜㞝㞞㞟㞠㞡㞢㞣㞤㞥㞦㞧㞨㞩㞪㞫㞬㞭㞮㞯㞰㞱㞲㞳㞴㞵㞶㞷㞸㞹㞺㞻㞼㞽㞾㞿㟀㟁㟂㟃㟄㟅㟆㟇㟈㟉㟊㟋㟌㟍㟎㟏㟐㟑㟒㟓㟔㟕㟖㟗㟘㟙㟚㟛㟜㟝㟞㟟㟠㟡㟢㟣㟤㟥㟦㟧㟨㟩㟪㟫㟬㟭㟮㟯㟰㟱㟲㟳㟴㟵㟶㟷㟸㟹㟺㟻㟼㟽㟾㟿㠀㠁㠂㠃㠄㠅㠆㠇㠈㠉㠊㠋㠌㠍㠎㠏㠐㠑㠒㠓㠔㠕㠖㠗㠘㠙㠚㠛㠜㠝㠞㠟㠠㠡㠢㠣㠤㠥㠦㠧㠨㠩㠪㠫㠬㠭㠮㠯㠰㠱㠲㠳㠴㠵㠶㠷㠸㠹㠺㠻㠼㠽㠾㠿㡀㡁㡂㡃㡄㡅㡆㡇㡈㡉㡊㡋㡌㡍㡎㡏㡐㡑㡒㡓㡔㡕㡖㡗㡘㡙㡚㡛㡜㡝㡞㡟㡠㡡㡢㡣㡤㡥㡦㡧㡨㡩㡪㡫㡬㡭㡮㡯㡰㡱㡲㡳㡴㡵㡶㡷㡸㡹㡺㡻㡼㡽㡾㡿㢀㢁㢂㢃㢄㢅㢆㢇㢈㢉㢊㢋㢌㢍㢎㢏㢐㢑㢒㢓㢔㢕㢖㢗㢘㢙㢚㢛㢜㢝㢞㢟㢠㢡㢢㢣㢤㢥㢦㢧㢨㢩㢪㢫㢬㢭㢮㢯㢰㢱㢲㢳㢴㢵㢶㢷㢸㢹㢺㢻㢼㢽㢾㢿㣀㣁㣂㣃㣄㣅㣆㣇㣈㣉㣊㣋㣌㣍㣎㣏㣐㣑㣒㣓㣔㣕㣖㣗㣘㣙㣚㣛㣜㣝㣞㣟㣠㣡㣢㣣㣤㣥㣦㣧㣨㣩㣪㣫㣬㣭㣮㣯㣰㣱㣲㣳㣴㣵㣶㣷㣸㣹㣺㣻㣼㣽㣾㣿㤀㤁㤂㤃㤄㤅㤆㤇㤈㤉㤊㤋㤌㤍㤎㤏㤐㤑㤒㤓㤔㤕㤖㤗㤘㤙㤚㤛㤜㤝㤞㤟㤠㤡㤢㤣㤤㤥㤦㤧㤨㤩㤪㤫㤬㤭㤮㤯㤰㤱㤲㤳㤴㤵㤶㤷㤸㤹㤺㤻㤼㤽㤾㤿㥀㥁㥂㥃㥄㥅㥆㥇㥈㥉㥊㥋㥌㥍㥎㥏㥐㥑㥒㥓㥔㥕㥖㥗㥘㥙㥚㥛㥜㥝㥞㥟㥠㥡㥢㥣㥤㥥㥦㥧㥨㥩㥪㥫㥬㥭㥮㥯㥰㥱㥲㥳㥴㥵㥶㥷㥸㥹㥺㥻㥼㥽㥾㥿㦀㦁㦂㦃㦄㦅㦆㦇㦈㦉㦊㦋㦌㦍㦎㦏㦐㦑㦒㦓㦔㦕㦖㦗㦘㦙㦚㦛㦜㦝㦞㦟㦠㦡㦢㦣㦤㦥㦦㦧㦨㦩㦪㦫㦬㦭㦮㦯㦰㦱㦲㦳㦴㦵㦶㦷㦸㦹㦺㦻㦼㦽㦾㦿㧀㧁㧂㧃㧄㧅㧆㧇㧈㧉㧊㧋㧌㧍㧎㧏㧐㧑㧒㧓㧔㧕㧖㧗㧘㧙㧚㧛㧜㧝㧞㧟㧠㧡㧢㧣㧤㧥㧦㧧㧨㧩㧪㧫㧬㧭㧮㧯㧰㧱㧲㧳㧴㧵㧶㧷㧸㧹㧺㧻㧼㧽㧾㧿㨀㨁㨂㨃㨄㨅㨆㨇㨈㨉㨊㨋㨌㨍㨎㨏㨐㨑㨒㨓㨔㨕㨖㨗㨘㨙㨚㨛㨜㨝㨞㨟㨠㨡㨢㨣㨤㨥㨦㨧㨨㨩㨪㨫㨬㨭㨮㨯㨰㨱㨲㨳㨴㨵㨶㨷㨸㨹㨺㨻㨼㨽㨾㨿㩀㩁㩂㩃㩄㩅㩆㩇㩈㩉㩊㩋㩌㩍㩎㩏㩐㩑㩒㩓㩔㩕㩖㩗㩘㩙㩚㩛㩜㩝㩞㩟㩠㩡㩢㩣㩤㩥㩦㩧㩨㩩㩪㩫㩬㩭㩮㩯㩰㩱㩲㩳㩴㩵㩶㩷㩸㩹㩺㩻㩼㩽㩾㩿㪀㪁㪂㪃㪄㪅㪆㪇㪈㪉㪊㪋㪌㪍㪎㪏㪐㪑㪒㪓㪔㪕㪖㪗㪘㪙㪚㪛㪜㪝㪞㪟㪠㪡㪢㪣㪤㪥㪦㪧㪨㪩㪪㪫㪬㪭㪮㪯㪰㪱㪲㪳㪴㪵㪶㪷㪸㪹㪺㪻㪼㪽㪾㪿㫀㫁㫂㫃㫄㫅㫆㫇㫈㫉㫊㫋㫌㫍㫎㫏㫐㫑㫒㫓㫔㫕㫖㫗㫘㫙㫚㫛㫜㫝㫞㫟㫠㫡㫢㫣㫤㫥㫦㫧㫨㫩㫪㫫㫬㫭㫮㫯㫰㫱㫲㫳㫴㫵㫶㫷㫸㫹㫺㫻㫼㫽㫾㫿㬀㬁㬂㬃㬄㬅㬆㬇㬈㬉㬊㬋㬌㬍㬎㬏㬐㬑㬒㬓㬔㬕㬖㬗㬘㬙㬚㬛㬜㬝㬞㬟㬠㬡㬢㬣㬤㬥㬦㬧㬨㬩㬪㬫㬬㬭㬮㬯㬰㬱㬲㬳㬴㬵㬶㬷㬸㬹㬺㬻㬼㬽㬾㬿㭀㭁㭂㭃㭄㭅㭆㭇㭈㭉㭊㭋㭌㭍㭎㭏㭐㭑㭒㭓㭔㭕㭖㭗㭘㭙㭚㭛㭜㭝㭞㭟㭠㭡㭢㭣㭤㭥㭦㭧㭨㭩㭪㭫㭬㭭㭮㭯㭰㭱㭲㭳㭴㭵㭶㭷㭸㭹㭺㭻㭼㭽㭾㭿㮀㮁㮂㮃㮄㮅㮆㮇㮈㮉㮊㮋㮌㮍㮎㮏㮐㮑㮒㮓㮔㮕㮖㮗㮘㮙㮚㮛㮜㮝㮞㮟㮠㮡㮢㮣㮤㮥㮦㮧㮨㮩㮪㮫㮬㮭㮮㮯㮰㮱㮲㮳㮴㮵㮶㮷㮸㮹㮺㮻㮼㮽㮾㮿㯀㯁㯂㯃㯄㯅㯆㯇㯈㯉㯊㯋㯌㯍㯎㯏㯐㯑㯒㯓㯔㯕㯖㯗㯘㯙㯚㯛㯜㯝㯞㯟㯠㯡㯢㯣㯤㯥㯦㯧㯨㯩㯪㯫㯬㯭㯮㯯㯰㯱㯲㯳㯴㯵㯶㯷㯸㯹㯺㯻㯼㯽㯾㯿㰀㰁㰂㰃㰄㰅㰆㰇㰈㰉㰊㰋㰌㰍㰎㰏㰐㰑㰒㰓㰔㰕㰖㰗㰘㰙㰚㰛㰜㰝㰞㰟㰠㰡㰢㰣㰤㰥㰦㰧㰨㰩㰪㰫㰬㰭㰮㰯㰰㰱㰲㰳㰴㰵㰶㰷㰸㰹㰺㰻㰼㰽㰾㰿㱀㱁㱂㱃㱄㱅㱆㱇㱈㱉㱊㱋㱌㱍㱎㱏㱐㱑㱒㱓㱔㱕㱖㱗㱘㱙㱚㱛㱜㱝㱞㱟㱠㱡㱢㱣㱤㱥㱦㱧㱨㱩㱪㱫㱬㱭㱮㱯㱰㱱㱲㱳㱴㱵㱶㱷㱸㱹㱺㱻㱼㱽㱾㱿㲀㲁㲂㲃㲄㲅㲆㲇㲈㲉㲊㲋㲌㲍㲎㲏㲐㲑㲒㲓㲔㲕㲖㲗㲘㲙㲚㲛㲜㲝㲞㲟㲠㲡㲢㲣㲤㲥㲦㲧㲨㲩㲪㲫㲬㲭㲮㲯㲰㲱㲲㲳㲴㲵㲶㲷㲸㲹㲺㲻㲼㲽㲾㲿㳀㳁㳂㳃㳄㳅㳆㳇㳈㳉㳊㳋㳌㳍㳎㳏㳐㳑㳒㳓㳔㳕㳖㳗㳘㳙㳚㳛㳜㳝㳞㳟㳠㳡㳢㳣㳤㳥㳦㳧㳨㳩㳪㳫㳬㳭㳮㳯㳰㳱㳲㳳㳴㳵㳶㳷㳸㳹㳺㳻㳼㳽㳾㳿㴀㴁㴂㴃㴄㴅㴆㴇㴈㴉㴊㴋㴌㴍㴎㴏㴐㴑㴒㴓㴔㴕㴖㴗㴘㴙㴚㴛㴜㴝㴞㴟㴠㴡㴢㴣㴤㴥㴦㴧㴨㴩㴪㴫㴬㴭㴮㴯㴰㴱㴲㴳㴴㴵㴶㴷㴸㴹㴺㴻㴼㴽㴾㴿㵀㵁㵂㵃㵄㵅㵆㵇㵈㵉㵊㵋㵌㵍㵎㵏㵐㵑㵒㵓㵔㵕㵖㵗㵘㵙㵚㵛㵜㵝㵞㵟㵠㵡㵢㵣㵤㵥㵦㵧㵨㵩㵪㵫㵬㵭㵮㵯㵰㵱㵲㵳㵴㵵㵶㵷㵸㵹㵺㵻㵼㵽㵾㵿㶀㶁㶂㶃㶄㶅㶆㶇㶈㶉㶊㶋㶌㶍㶎㶏㶐㶑㶒㶓㶔㶕㶖㶗㶘㶙㶚㶛㶜㶝㶞㶟㶠㶡㶢㶣㶤㶥㶦㶧㶨㶩㶪㶫㶬㶭㶮㶯㶰㶱㶲㶳㶴㶵㶶㶷㶸㶹㶺㶻㶼㶽㶾㶿㷀㷁㷂㷃㷄㷅㷆㷇㷈㷉㷊㷋㷌㷍㷎㷏㷐㷑㷒㷓㷔㷕㷖㷗㷘㷙㷚㷛㷜㷝㷞㷟㷠㷡㷢㷣㷤㷥㷦㷧㷨㷩㷪㷫㷬㷭㷮㷯㷰㷱㷲㷳㷴㷵㷶㷷㷸㷹㷺㷻㷼㷽㷾㷿㸀㸁㸂㸃㸄㸅㸆㸇㸈㸉㸊㸋㸌㸍㸎㸏㸐㸑㸒㸓㸔㸕㸖㸗㸘㸙㸚㸛㸜㸝㸞㸟㸠㸡㸢㸣㸤㸥㸦㸧㸨㸩㸪㸫㸬㸭㸮㸯㸰㸱㸲㸳㸴㸵㸶㸷㸸㸹㸺㸻㸼㸽㸾㸿㹀㹁㹂㹃㹄㹅㹆㹇㹈㹉㹊㹋㹌㹍㹎㹏㹐㹑㹒㹓㹔㹕㹖㹗㹘㹙㹚㹛㹜㹝㹞㹟㹠㹡㹢㹣㹤㹥㹦㹧㹨㹩㹪㹫㹬㹭㹮㹯㹰㹱㹲㹳㹴㹵㹶㹷㹸㹹㹺㹻㹼㹽㹾㹿㺀㺁㺂㺃㺄㺅㺆㺇㺈㺉㺊㺋㺌㺍㺎㺏㺐㺑㺒㺓㺔㺕㺖㺗㺘㺙㺚㺛㺜㺝㺞㺟㺠㺡㺢㺣㺤㺥㺦㺧㺨㺩㺪㺫㺬㺭㺮㺯㺰㺱㺲㺳㺴㺵㺶㺷㺸㺹㺺㺻㺼㺽㺾㺿㻀㻁㻂㻃㻄㻅㻆㻇㻈㻉㻊㻋㻌㻍㻎㻏㻐㻑㻒㻓㻔㻕㻖㻗㻘㻙㻚㻛㻜㻝㻞㻟㻠㻡㻢㻣㻤㻥㻦㻧㻨㻩㻪㻫㻬㻭㻮㻯㻰㻱㻲㻳㻴㻵㻶㻷㻸㻹㻺㻻㻼㻽㻾㻿㼀㼁㼂㼃㼄㼅㼆㼇㼈㼉㼊㼋㼌㼍㼎㼏㼐㼑㼒㼓㼔㼕㼖㼗㼘㼙㼚㼛㼜㼝㼞㼟㼠㼡㼢㼣㼤㼥㼦㼧㼨㼩㼪㼫㼬㼭㼮㼯㼰㼱㼲㼳㼴㼵㼶㼷㼸㼹㼺㼻㼼㼽㼾㼿㽀㽁㽂㽃㽄㽅㽆㽇㽈㽉㽊㽋㽌㽍㽎㽏㽐㽑㽒㽓㽔㽕㽖㽗㽘㽙㽚㽛㽜㽝㽞㽟㽠㽡㽢㽣㽤㽥㽦㽧㽨㽩㽪㽫㽬㽭㽮㽯㽰㽱㽲㽳㽴㽵㽶㽷㽸㽹㽺㽻㽼㽽㽾㽿㾀㾁㾂㾃㾄㾅㾆㾇㾈㾉㾊㾋㾌㾍㾎㾏㾐㾑㾒㾓㾔㾕㾖㾗㾘㾙㾚㾛㾜㾝㾞㾟㾠㾡㾢㾣㾤㾥㾦㾧㾨㾩㾪㾫㾬㾭㾮㾯㾰㾱㾲㾳㾴㾵㾶㾷㾸㾹㾺㾻㾼㾽㾾㾿㿀㿁㿂㿃㿄㿅㿆㿇㿈㿉㿊㿋㿌㿍㿎㿏㿐㿑㿒㿓㿔㿕㿖㿗㿘㿙㿚㿛㿜㿝㿞㿟㿠㿡㿢㿣㿤㿥㿦㿧㿨㿩㿪㿫㿬㿭㿮㿯㿰㿱㿲㿳㿴㿵㿶㿷㿸㿹㿺㿻㿼㿽㿾㿿䀀䀁䀂䀃䀄䀅䀆䀇䀈䀉䀊䀋䀌䀍䀎䀏䀐䀑䀒䀓䀔䀕䀖䀗䀘䀙䀚䀛䀜䀝䀞䀟䀠䀡䀢䀣䀤䀥䀦䀧䀨䀩䀪䀫䀬䀭䀮䀯䀰䀱䀲䀳䀴䀵䀶䀷䀸䀹䀺䀻䀼䀽䀾䀿䁀䁁䁂䁃䁄䁅䁆䁇䁈䁉䁊䁋䁌䁍䁎䁏䁐䁑䁒䁓䁔䁕䁖䁗䁘䁙䁚䁛䁜䁝䁞䁟䁠䁡䁢䁣䁤䁥䁦䁧䁨䁩䁪䁫䁬䁭䁮䁯䁰䁱䁲䁳䁴䁵䁶䁷䁸䁹䁺䁻䁼䁽䁾䁿䂀䂁䂂䂃䂄䂅䂆䂇䂈䂉䂊䂋䂌䂍䂎䂏䂐䂑䂒䂓䂔䂕䂖䂗䂘䂙䂚䂛䂜䂝䂞䂟䂠䂡䂢䂣䂤䂥䂦䂧䂨䂩䂪䂫䂬䂭䂮䂯䂰䂱䂲䂳䂴䂵䂶䂷䂸䂹䂺䂻䂼䂽䂾䂿䃀䃁䃂䃃䃄䃅䃆䃇䃈䃉䃊䃋䃌䃍䃎䃏䃐䃑䃒䃓䃔䃕䃖䃗䃘䃙䃚䃛䃜䃝䃞䃟䃠䃡䃢䃣䃤䃥䃦䃧䃨䃩䃪䃫䃬䃭䃮䃯䃰䃱䃲䃳䃴䃵䃶䃷䃸䃹䃺䃻䃼䃽䃾䃿䄀䄁䄂䄃䄄䄅䄆䄇䄈䄉䄊䄋䄌䄍䄎䄏䄐䄑䄒䄓䄔䄕䄖䄗䄘䄙䄚䄛䄜䄝䄞䄟䄠䄡䄢䄣䄤䄥䄦䄧䄨䄩䄪䄫䄬䄭䄮䄯䄰䄱䄲䄳䄴䄵䄶䄷䄸䄹䄺䄻䄼䄽䄾䄿䅀䅁䅂䅃䅄䅅䅆䅇䅈䅉䅊䅋䅌䅍䅎䅏䅐䅑䅒䅓䅔䅕䅖䅗䅘䅙䅚䅛䅜䅝䅞䅟䅠䅡䅢䅣䅤䅥䅦䅧䅨䅩䅪䅫䅬䅭䅮䅯䅰䅱䅲䅳䅴䅵䅶䅷䅸䅹䅺䅻䅼䅽䅾䅿䆀䆁䆂䆃䆄䆅䆆䆇䆈䆉䆊䆋䆌䆍䆎䆏䆐䆑䆒䆓䆔䆕䆖䆗䆘䆙䆚䆛䆜䆝䆞䆟䆠䆡䆢䆣䆤䆥䆦䆧䆨䆩䆪䆫䆬䆭䆮䆯䆰䆱䆲䆳䆴䆵䆶䆷䆸䆹䆺䆻䆼䆽䆾䆿䇀䇁䇂䇃䇄䇅䇆䇇䇈䇉䇊䇋䇌䇍䇎䇏䇐䇑䇒䇓䇔䇕䇖䇗䇘䇙䇚䇛䇜䇝䇞䇟䇠䇡䇢䇣䇤䇥䇦䇧䇨䇩䇪䇫䇬䇭䇮䇯䇰䇱䇲䇳䇴䇵䇶䇷䇸䇹䇺䇻䇼䇽䇾䇿䈀䈁䈂䈃䈄䈅䈆䈇䈈䈉䈊䈋䈌䈍䈎䈏䈐䈑䈒䈓䈔䈕䈖䈗䈘䈙䈚䈛䈜䈝䈞䈟䈠䈡䈢䈣䈤䈥䈦䈧䈨䈩䈪䈫䈬䈭䈮䈯䈰䈱䈲䈳䈴䈵䈶䈷䈸䈹䈺䈻䈼䈽䈾䈿䉀䉁䉂䉃䉄䉅䉆䉇䉈䉉䉊䉋䉌䉍䉎䉏䉐䉑䉒䉓䉔䉕䉖䉗䉘䉙䉚䉛䉜䉝䉞䉟䉠䉡䉢䉣䉤䉥䉦䉧䉨䉩䉪䉫䉬䉭䉮䉯䉰䉱䉲䉳䉴䉵䉶䉷䉸䉹䉺䉻䉼䉽䉾䉿䊀䊁䊂䊃䊄䊅䊆䊇䊈䊉䊊䊋䊌䊍䊎䊏䊐䊑䊒䊓䊔䊕䊖䊗䊘䊙䊚䊛䊜䊝䊞䊟䊠䊡䊢䊣䊤䊥䊦䊧䊨䊩䊪䊫䊬䊭䊮䊯䊰䊱䊲䊳䊴䊵䊶䊷䊸䊹䊺䊻䊼䊽䊾䊿䋀䋁䋂䋃䋄䋅䋆䋇䋈䋉䋊䋋䋌䋍䋎䋏䋐䋑䋒䋓䋔䋕䋖䋗䋘䋙䋚䋛䋜䋝䋞䋟䋠䋡䋢䋣䋤䋥䋦䋧䋨䋩䋪䋫䋬䋭䋮䋯䋰䋱䋲䋳䋴䋵䋶䋷䋸䋹䋺䋻䋼䋽䋾䋿䌀䌁䌂䌃䌄䌅䌆䌇䌈䌉䌊䌋䌌䌍䌎䌏䌐䌑䌒䌓䌔䌕䌖䌗䌘䌙䌚䌛䌜䌝䌞䌟䌠䌡䌢䌣䌤䌥䌦䌧䌨䌩䌪䌫䌬䌭䌮䌯䌰䌱䌲䌳䌴䌵䌶䌷䌸䌹䌺䌻䌼䌽䌾䌿䍀䍁䍂䍃䍄䍅䍆䍇䍈䍉䍊䍋䍌䍍䍎䍏䍐䍑䍒䍓䍔䍕䍖䍗䍘䍙䍚䍛䍜䍝䍞䍟䍠䍡䍢䍣䍤䍥䍦䍧䍨䍩䍪䍫䍬䍭䍮䍯䍰䍱䍲䍳䍴䍵䍶䍷䍸䍹䍺䍻䍼䍽䍾䍿䎀䎁䎂䎃䎄䎅䎆䎇䎈䎉䎊䎋䎌䎍䎎䎏䎐䎑䎒䎓䎔䎕䎖䎗䎘䎙䎚䎛䎜䎝䎞䎟䎠䎡䎢䎣䎤䎥䎦䎧䎨䎩䎪䎫䎬䎭䎮䎯䎰䎱䎲䎳䎴䎵䎶䎷䎸䎹䎺䎻䎼䎽䎾䎿䏀䏁䏂䏃䏄䏅䏆䏇䏈䏉䏊䏋䏌䏍䏎䏏䏐䏑䏒䏓䏔䏕䏖䏗䏘䏙䏚䏛䏜䏝䏞䏟䏠䏡䏢䏣䏤䏥䏦䏧䏨䏩䏪䏫䏬䏭䏮䏯䏰䏱䏲䏳䏴䏵䏶䏷䏸䏹䏺䏻䏼䏽䏾䏿䐀䐁䐂䐃䐄䐅䐆䐇䐈䐉䐊䐋䐌䐍䐎䐏䐐䐑䐒䐓䐔䐕䐖䐗䐘䐙䐚䐛䐜䐝䐞䐟䐠䐡䐢䐣䐤䐥䐦䐧䐨䐩䐪䐫䐬䐭䐮䐯䐰䐱䐲䐳䐴䐵䐶䐷䐸䐹䐺䐻䐼䐽䐾䐿䑀䑁䑂䑃䑄䑅䑆䑇䑈䑉䑊䑋䑌䑍䑎䑏䑐䑑䑒䑓䑔䑕䑖䑗䑘䑙䑚䑛䑜䑝䑞䑟䑠䑡䑢䑣䑤䑥䑦䑧䑨䑩䑪䑫䑬䑭䑮䑯䑰䑱䑲䑳䑴䑵䑶䑷䑸䑹䑺䑻䑼䑽䑾䑿䒀䒁䒂䒃䒄䒅䒆䒇䒈䒉䒊䒋䒌䒍䒎䒏䒐䒑䒒䒓䒔䒕䒖䒗䒘䒙䒚䒛䒜䒝䒞䒟䒠䒡䒢䒣䒤䒥䒦䒧䒨䒩䒪䒫䒬䒭䒮䒯䒰䒱䒲䒳䒴䒵䒶䒷䒸䒹䒺䒻䒼䒽䒾䒿䓀䓁䓂䓃䓄䓅䓆䓇䓈䓉䓊䓋䓌䓍䓎䓏䓐䓑䓒䓓䓔䓕䓖䓗䓘䓙䓚䓛䓜䓝䓞䓟䓠䓡䓢䓣䓤䓥䓦䓧䓨䓩䓪䓫䓬䓭䓮䓯䓰䓱䓲䓳䓴䓵䓶䓷䓸䓹䓺䓻䓼䓽䓾䓿䔀䔁䔂䔃䔄䔅䔆䔇䔈䔉䔊䔋䔌䔍䔎䔏䔐䔑䔒䔓䔔䔕䔖䔗䔘䔙䔚䔛䔜䔝䔞䔟䔠䔡䔢䔣䔤䔥䔦䔧䔨䔩䔪䔫䔬䔭䔮䔯䔰䔱䔲䔳䔴䔵䔶䔷䔸䔹䔺䔻䔼䔽䔾䔿䕀䕁䕂䕃䕄䕅䕆䕇䕈䕉䕊䕋䕌䕍䕎䕏䕐䕑䕒䕓䕔䕕䕖䕗䕘䕙䕚䕛䕜䕝䕞䕟䕠䕡䕢䕣䕤䕥䕦䕧䕨䕩䕪䕫䕬䕭䕮䕯䕰䕱䕲䕳䕴䕵䕶䕷䕸䕹䕺䕻䕼䕽䕾䕿䖀䖁䖂䖃䖄䖅䖆䖇䖈䖉䖊䖋䖌䖍䖎䖏䖐䖑䖒䖓䖔䖕䖖䖗䖘䖙䖚䖛䖜䖝䖞䖟䖠䖡䖢䖣䖤䖥䖦䖧䖨䖩䖪䖫䖬䖭䖮䖯䖰䖱䖲䖳䖴䖵䖶䖷䖸䖹䖺䖻䖼䖽䖾䖿䗀䗁䗂䗃䗄䗅䗆䗇䗈䗉䗊䗋䗌䗍䗎䗏䗐䗑䗒䗓䗔䗕䗖䗗䗘䗙䗚䗛䗜䗝䗞䗟䗠䗡䗢䗣䗤䗥䗦䗧䗨䗩䗪䗫䗬䗭䗮䗯䗰䗱䗲䗳䗴䗵䗶䗷䗸䗹䗺䗻䗼䗽䗾䗿䘀䘁䘂䘃䘄䘅䘆䘇䘈䘉䘊䘋䘌䘍䘎䘏䘐䘑䘒䘓䘔䘕䘖䘗䘘䘙䘚䘛䘜䘝䘞䘟䘠䘡䘢䘣䘤䘥䘦䘧䘨䘩䘪䘫䘬䘭䘮䘯䘰䘱䘲䘳䘴䘵䘶䘷䘸䘹䘺䘻䘼䘽䘾䘿䙀䙁䙂䙃䙄䙅䙆䙇䙈䙉䙊䙋䙌䙍䙎䙏䙐䙑䙒䙓䙔䙕䙖䙗䙘䙙䙚䙛䙜䙝䙞䙟䙠䙡䙢䙣䙤䙥䙦䙧䙨䙩䙪䙫䙬䙭䙮䙯䙰䙱䙲䙳䙴䙵䙶䙷䙸䙹䙺䙻䙼䙽䙾䙿䚀䚁䚂䚃䚄䚅䚆䚇䚈䚉䚊䚋䚌䚍䚎䚏䚐䚑䚒䚓䚔䚕䚖䚗䚘䚙䚚䚛䚜䚝䚞䚟䚠䚡䚢䚣䚤䚥䚦䚧䚨䚩䚪䚫䚬䚭䚮䚯䚰䚱䚲䚳䚴䚵䚶䚷䚸䚹䚺䚻䚼䚽䚾䚿䛀䛁䛂䛃䛄䛅䛆䛇䛈䛉䛊䛋䛌䛍䛎䛏䛐䛑䛒䛓䛔䛕䛖䛗䛘䛙䛚䛛䛜䛝䛞䛟䛠䛡䛢䛣䛤䛥䛦䛧䛨䛩䛪䛫䛬䛭䛮䛯䛰䛱䛲䛳䛴䛵䛶䛷䛸䛹䛺䛻䛼䛽䛾䛿䜀䜁䜂䜃䜄䜅䜆䜇䜈䜉䜊䜋䜌䜍䜎䜏䜐䜑䜒䜓䜔䜕䜖䜗䜘䜙䜚䜛䜜䜝䜞䜟䜠䜡䜢䜣䜤䜥䜦䜧䜨䜩䜪䜫䜬䜭䜮䜯䜰䜱䜲䜳䜴䜵䜶䜷䜸䜹䜺䜻䜼䜽䜾䜿䝀䝁䝂䝃䝄䝅䝆䝇䝈䝉䝊䝋䝌䝍䝎䝏䝐䝑䝒䝓䝔䝕䝖䝗䝘䝙䝚䝛䝜䝝䝞䝟䝠䝡䝢䝣䝤䝥䝦䝧䝨䝩䝪䝫䝬䝭䝮䝯䝰䝱䝲䝳䝴䝵䝶䝷䝸䝹䝺䝻䝼䝽䝾䝿䞀䞁䞂䞃䞄䞅䞆䞇䞈䞉䞊䞋䞌䞍䞎䞏䞐䞑䞒䞓䞔䞕䞖䞗䞘䞙䞚䞛䞜䞝䞞䞟䞠䞡䞢䞣䞤䞥䞦䞧䞨䞩䞪䞫䞬䞭䞮䞯䞰䞱䞲䞳䞴䞵䞶䞷䞸䞹䞺䞻䞼䞽䞾䞿䟀䟁䟂䟃䟄䟅䟆䟇䟈䟉䟊䟋䟌䟍䟎䟏䟐䟑䟒䟓䟔䟕䟖䟗䟘䟙䟚䟛䟜䟝䟞䟟䟠䟡䟢䟣䟤䟥䟦䟧䟨䟩䟪䟫䟬䟭䟮䟯䟰䟱䟲䟳䟴䟵䟶䟷䟸䟹䟺䟻䟼䟽䟾䟿䠀䠁䠂䠃䠄䠅䠆䠇䠈䠉䠊䠋䠌䠍䠎䠏䠐䠑䠒䠓䠔䠕䠖䠗䠘䠙䠚䠛䠜䠝䠞䠟䠠䠡䠢䠣䠤䠥䠦䠧䠨䠩䠪䠫䠬䠭䠮䠯䠰䠱䠲䠳䠴䠵䠶䠷䠸䠹䠺䠻䠼䠽䠾䠿䡀䡁䡂䡃䡄䡅䡆䡇䡈䡉䡊䡋䡌䡍䡎䡏䡐䡑䡒䡓䡔䡕䡖䡗䡘䡙䡚䡛䡜䡝䡞䡟䡠䡡䡢䡣䡤䡥䡦䡧䡨䡩䡪䡫䡬䡭䡮䡯䡰䡱䡲䡳䡴䡵䡶䡷䡸䡹䡺䡻䡼䡽䡾䡿䢀䢁䢂䢃䢄䢅䢆䢇䢈䢉䢊䢋䢌䢍䢎䢏䢐䢑䢒䢓䢔䢕䢖䢗䢘䢙䢚䢛䢜䢝䢞䢟䢠䢡䢢䢣䢤䢥䢦䢧䢨䢩䢪䢫䢬䢭䢮䢯䢰䢱䢲䢳䢴䢵䢶䢷䢸䢹䢺䢻䢼䢽䢾䢿䣀䣁䣂䣃䣄䣅䣆䣇䣈䣉䣊䣋䣌䣍䣎䣏䣐䣑䣒䣓䣔䣕䣖䣗䣘䣙䣚䣛䣜䣝䣞䣟䣠䣡䣢䣣䣤䣥䣦䣧䣨䣩䣪䣫䣬䣭䣮䣯䣰䣱䣲䣳䣴䣵䣶䣷䣸䣹䣺䣻䣼䣽䣾䣿䤀䤁䤂䤃䤄䤅䤆䤇䤈䤉䤊䤋䤌䤍䤎䤏䤐䤑䤒䤓䤔䤕䤖䤗䤘䤙䤚䤛䤜䤝䤞䤟䤠䤡䤢䤣䤤䤥䤦䤧䤨䤩䤪䤫䤬䤭䤮䤯䤰䤱䤲䤳䤴䤵䤶䤷䤸䤹䤺䤻䤼䤽䤾䤿䥀䥁䥂䥃䥄䥅䥆䥇䥈䥉䥊䥋䥌䥍䥎䥏䥐䥑䥒䥓䥔䥕䥖䥗䥘䥙䥚䥛䥜䥝䥞䥟䥠䥡䥢䥣䥤䥥䥦䥧䥨䥩䥪䥫䥬䥭䥮䥯䥰䥱䥲䥳䥴䥵䥶䥷䥸䥹䥺䥻䥼䥽䥾䥿䦀䦁䦂䦃䦄䦅䦆䦇䦈䦉䦊䦋䦌䦍䦎䦏䦐䦑䦒䦓䦔䦕䦖䦗䦘䦙䦚䦛䦜䦝䦞䦟䦠䦡䦢䦣䦤䦥䦦䦧䦨䦩䦪䦫䦬䦭䦮䦯䦰䦱䦲䦳䦴䦵䦶䦷䦸䦹䦺䦻䦼䦽䦾䦿䧀䧁䧂䧃䧄䧅䧆䧇䧈䧉䧊䧋䧌䧍䧎䧏䧐䧑䧒䧓䧔䧕䧖䧗䧘䧙䧚䧛䧜䧝䧞䧟䧠䧡䧢䧣䧤䧥䧦䧧䧨䧩䧪䧫䧬䧭䧮䧯䧰䧱䧲䧳䧴䧵䧶䧷䧸䧹䧺䧻䧼䧽䧾䧿䨀䨁䨂䨃䨄䨅䨆䨇䨈䨉䨊䨋䨌䨍䨎䨏䨐䨑䨒䨓䨔䨕䨖䨗䨘䨙䨚䨛䨜䨝䨞䨟䨠䨡䨢䨣䨤䨥䨦䨧䨨䨩䨪䨫䨬䨭䨮䨯䨰䨱䨲䨳䨴䨵䨶䨷䨸䨹䨺䨻䨼䨽䨾䨿䩀䩁䩂䩃䩄䩅䩆䩇䩈䩉䩊䩋䩌䩍䩎䩏䩐䩑䩒䩓䩔䩕䩖䩗䩘䩙䩚䩛䩜䩝䩞䩟䩠䩡䩢䩣䩤䩥䩦䩧䩨䩩䩪䩫䩬䩭䩮䩯䩰䩱䩲䩳䩴䩵䩶䩷䩸䩹䩺䩻䩼䩽䩾䩿䪀䪁䪂䪃䪄䪅䪆䪇䪈䪉䪊䪋䪌䪍䪎䪏䪐䪑䪒䪓䪔䪕䪖䪗䪘䪙䪚䪛䪜䪝䪞䪟䪠䪡䪢䪣䪤䪥䪦䪧䪨䪩䪪䪫䪬䪭䪮䪯䪰䪱䪲䪳䪴䪵䪶䪷䪸䪹䪺䪻䪼䪽䪾䪿䫀䫁䫂䫃䫄䫅䫆䫇䫈䫉䫊䫋䫌䫍䫎䫏䫐䫑䫒䫓䫔䫕䫖䫗䫘䫙䫚䫛䫜䫝䫞䫟䫠䫡䫢䫣䫤䫥䫦䫧䫨䫩䫪䫫䫬䫭䫮䫯䫰䫱䫲䫳䫴䫵䫶䫷䫸䫹䫺䫻䫼䫽䫾䫿䬀䬁䬂䬃䬄䬅䬆䬇䬈䬉䬊䬋䬌䬍䬎䬏䬐䬑䬒䬓䬔䬕䬖䬗䬘䬙䬚䬛䬜䬝䬞䬟䬠䬡䬢䬣䬤䬥䬦䬧䬨䬩䬪䬫䬬䬭䬮䬯䬰䬱䬲䬳䬴䬵䬶䬷䬸䬹䬺䬻䬼䬽䬾䬿䭀䭁䭂䭃䭄䭅䭆䭇䭈䭉䭊䭋䭌䭍䭎䭏䭐䭑䭒䭓䭔䭕䭖䭗䭘䭙䭚䭛䭜䭝䭞䭟䭠䭡䭢䭣䭤䭥䭦䭧䭨䭩䭪䭫䭬䭭䭮䭯䭰䭱䭲䭳䭴䭵䭶䭷䭸䭹䭺䭻䭼䭽䭾䭿䮀䮁䮂䮃䮄䮅䮆䮇䮈䮉䮊䮋䮌䮍䮎䮏䮐䮑䮒䮓䮔䮕䮖䮗䮘䮙䮚䮛䮜䮝䮞䮟䮠䮡䮢䮣䮤䮥䮦䮧䮨䮩䮪䮫䮬䮭䮮䮯䮰䮱䮲䮳䮴䮵䮶䮷䮸䮹䮺䮻䮼䮽䮾䮿䯀䯁䯂䯃䯄䯅䯆䯇䯈䯉䯊䯋䯌䯍䯎䯏䯐䯑䯒䯓䯔䯕䯖䯗䯘䯙䯚䯛䯜䯝䯞䯟䯠䯡䯢䯣䯤䯥䯦䯧䯨䯩䯪䯫䯬䯭䯮䯯䯰䯱䯲䯳䯴䯵䯶䯷䯸䯹䯺䯻䯼䯽䯾䯿䰀䰁䰂䰃䰄䰅䰆䰇䰈䰉䰊䰋䰌䰍䰎䰏䰐䰑䰒䰓䰔䰕䰖䰗䰘䰙䰚䰛䰜䰝䰞䰟䰠䰡䰢䰣䰤䰥䰦䰧䰨䰩䰪䰫䰬䰭䰮䰯䰰䰱䰲䰳䰴䰵䰶䰷䰸䰹䰺䰻䰼䰽䰾䰿䱀䱁䱂䱃䱄䱅䱆䱇䱈䱉䱊䱋䱌䱍䱎䱏䱐䱑䱒䱓䱔䱕䱖䱗䱘䱙䱚䱛䱜䱝䱞䱟䱠䱡䱢䱣䱤䱥䱦䱧䱨䱩䱪䱫䱬䱭䱮䱯䱰䱱䱲䱳䱴䱵䱶䱷䱸䱹䱺䱻䱼䱽䱾䱿䲀䲁䲂䲃䲄䲅䲆䲇䲈䲉䲊䲋䲌䲍䲎䲏䲐䲑䲒䲓䲔䲕䲖䲗䲘䲙䲚䲛䲜䲝䲞䲟䲠䲡䲢䲣䲤䲥䲦䲧䲨䲩䲪䲫䲬䲭䲮䲯䲰䲱䲲䲳䲴䲵䲶䲷䲸䲹䲺䲻䲼䲽䲾䲿䳀䳁䳂䳃䳄䳅䳆䳇䳈䳉䳊䳋䳌䳍䳎䳏䳐䳑䳒䳓䳔䳕䳖䳗䳘䳙䳚䳛䳜䳝䳞䳟䳠䳡䳢䳣䳤䳥䳦䳧䳨䳩䳪䳫䳬䳭䳮䳯䳰䳱䳲䳳䳴䳵䳶䳷䳸䳹䳺䳻䳼䳽䳾䳿䴀䴁䴂䴃䴄䴅䴆䴇䴈䴉䴊䴋䴌䴍䴎䴏䴐䴑䴒䴓䴔䴕䴖䴗䴘䴙䴚䴛䴜䴝䴞䴟䴠䴡䴢䴣䴤䴥䴦䴧䴨䴩䴪䴫䴬䴭䴮䴯䴰䴱䴲䴳䴴䴵䴶䴷䴸䴹䴺䴻䴼䴽䴾䴿䵀䵁䵂䵃䵄䵅䵆䵇䵈䵉䵊䵋䵌䵍䵎䵏䵐䵑䵒䵓䵔䵕䵖䵗䵘䵙䵚䵛䵜䵝䵞䵟䵠䵡䵢䵣䵤䵥䵦䵧䵨䵩䵪䵫䵬䵭䵮䵯䵰䵱䵲䵳䵴䵵䵶䵷䵸䵹䵺䵻䵼䵽䵾䵿䶀䶁䶂䶃䶄䶅䶆䶇䶈䶉䶊䶋䶌䶍䶎䶏䶐䶑䶒䶓䶔䶕䶖䶗䶘䶙䶚䶛䶜䶝䶞䶟䶠䶡䶢䶣䶤䶥䶦䶧䶨䶩䶪䶫䶬䶭䶮䶯䶰䶱䶲䶳䶴䶵䶶䶷䶸䶹䶺䶻䶼䶽䶾䶿䷀䷁䷂䷃䷄䷅䷆䷇䷈䷉䷊䷋䷌䷍䷎䷏䷐䷑䷒䷓䷔䷕䷖䷗䷘䷙䷚䷛䷜䷝䷞䷟䷠䷡䷢䷣䷤䷥䷦䷧䷨䷩䷪䷫䷬䷭䷮䷯䷰䷱䷲䷳䷴䷵䷶䷷䷸䷹䷺䷻䷼䷽䷾䷿乥乲兙兛兝兞兡兣兺匁厼叾哛唜唟喸嗧囕夞巼怾旕朩朰栍桛椧烪猠瓧瓩瓰瓱瓲瓼甅硛硳穒縇莻虄襨迲闏鞥啊腌錒锕阿哀哎唉埃挨溾銰鎄锿凒啀嘊捱敱敳溰癌皑皚磑娾昹毐濭矮蔼藹譪躷霭靄伌僾叆嗳噯塧壒嫒嬡愛懓懝暧曖爱瑷璦皧瞹砹硋碍礙艾薆譺賹鑀隘靉餲馤鱫鴱侒偣啽媕安峖庵桉氨痷盦盫腤菴萻葊蓭誝諳谙鞌鞍韽馣鮟鵪鶕鹌儑玵雸俺唵垵埯揞罯銨铵堓屵岸按晻暗案洝胺荌豻貋錌闇隌黯肮骯岇昂昻枊盎醠凹柪梎熬爊軪厫嗷嗸嶅廒慠摮敖滶獒獓璈磝翱翶翺聱蔜螯謷謸遨鏖隞骜鰲鳌鷔鼇媪媼抝艹芺袄襖镺傲坳垇墺奡奥奧嫯岙岰嶴懊拗擙澚澳鏊隩驁丷仈八叭吧哵夿岜巴扒扷捌朳柭玐疤笆粑羓芭蚆豝釟魞鲃叐妭抜拔炦癹胈茇菝詙跋軷颰魃鼥把鈀钯靶坝垻壩弝欛灞爸矲罢罷耙覇跁霸鮁鲅挀掰白佰捭摆擺柏栢瓸百竡粨絔襬庍拜拝敗猈稗粺薭贁败韛扳搬攽斑斒班瘢癍肦般螌褩辬頒颁鳻坂岅昄板版瓪粄舨蝂鈑钣闆阪魬伴办半坢姅怑扮拌湴瓣秚絆绊辦鉡靽垹帮幇幚幫捠梆浜縍邦邫鞤榜牓綁绑膀髈傍塝挷搒棒棓玤磅稖艕蒡蚌蜯謗谤鎊镑佨剝勹包孢枹煲笣胞苞蕔裦褒襃闁齙龅窇薄雹保堡堢媬宝宲寚寳寶怉珤緥葆藵褓賲靌飹飽饱駂鳵鴇鸨儤勽嚗報忁报抱暴曓爆犦菢虣蚫袌豹趵鉋鑤铇骲髱鮑鲍卑庳悲揹杯柸桮椑盃碑背藣陂鵯鹎北鉳俻倍偝偹備僃备孛悖惫愂憊昁梖焙牬犕狈狽珼琲碚禙糒苝蓓蛽被褙誖貝贝軰輩辈邶郥鄁鋇鐾钡鞁鞴骳呗唄喯奔栟泍漰犇錛锛奙本楍畚翉苯倴坋坌捹撪桳渀笨逩伻嗙嘣奟崩嵭痭祊絣綳繃绷閍甭甮埄埲琣琫菶鞛塴揼泵甏蹦迸逬鏰镚偪屄楅榌毴螕豍逼鎞鰏鲾鵖嬶荸鼻佊俾匕啚夶妣彼朼柀比毞沘疕秕笔筆粃聛舭貏鄙佖咇哔嗶坒堛壁奰妼婢嬖币幣幤庇廦弊弻弼彃必怭怶愊愎敝斃朇柲梐毕毖毙湢滗滭潷濞煏熚狴獘獙珌璧畀畁畢疪痹痺皕睤睥碧禆筚箅箆篦篳粊綼縪繴罼腷臂芘苾荜萆萞蓖蓽蔽薜蜌袐襅襞襣觱詖诐貱賁贔贲赑跸蹕躃躄避邲鄨鄪鉍鏎鐴铋閇閉閟闭陛鞸韠飶饆馝駜驆髀髲魓鮅鷝鷩鼊炞煸牑猵獱甂砭笾箯籩糄編编萹蝙边邉邊鍽鞕鞭鯾鯿鳊匾惼扁揙碥稨窆藊褊貶贬鴘便卞变変峅弁徧忭抃昪汳汴玣緶缏艑苄覍諚變辡辧辨辩辫辮辯遍釆閞儦墂幖彪标標檦淲滮瀌熛爂猋瘭磦穮脿膘臕蔈藨謤贆鏢鑣镖镳颩颮颷飆飇飈飊飑飙飚驫骉骠髟嫑婊表裱褾諘錶俵摽鳔憋瘪癟虌蟞鱉鳖鼈龞別别徶莂蛂襒蹩彆傧儐宾彬斌梹椕槟檳汃滨濒濱濵瀕玢瑸璸繽缤虨豩豳賓賔邠鑌镔霦頻顮摈擯殡殯膑臏髌髕髩鬂鬓鬢仌仒兵冫冰掤氷蛃鋲丙偋寎怲抦昞昺柄棅炳眪禀秉稟苪邴鈵鉼陃鞆鞞餅餠饼並併倂傡垪并幷庰摒栤病窉竝誁靐鮩僠剥嶓拨撥播波溊玻癶癷盋砵碆礡紴缽菠袰蹳鉢钵餑饽驋鱍亳仢伯侼僰勃博帛愽懪挬搏桲欂泊浡淿渤煿牔狛猼瓝瓟礴秡箔簙糪肑胉脖膊舶艊萡葧袯袹襏襮謈踣郣鈸鉑鋍鎛鑮钹铂镈餺馎馛馞駁駮驳髆髉鮊鲌鵓鹁跛孹擘檗簸蘗譒啵蔔峬庯晡誧逋鈽錻钸餔鵏轐醭鳪卜卟哺捕补補鸔不佈勏吥咘埗埠布廍怖悑抪捗柨步歨歩瓿篰簿荹蔀踄部郶鈈钚餢嚓擦攃礤礸遪偲猜才材纔裁財财倸啋埰婇寀彩採棌毝睬綵跴踩采縩菜蔡傪参參叄叅喰嬠湌爘飡餐驂骖惭慙慚残殘蚕蝅蠶蠺惨慘憯朁穇黪黲儏澯灿燦璨粲薒謲仓仺伧倉傖凔嵢沧滄濸獊舱艙苍蒼螥鶬鸧欌藏鑶賶撡操糙嘈嶆慒曹曺槽漕艚蓸螬褿鏪愺懆艸草騲肏襙鄵鼜侧側冊册厕厠夨廁恻惻憡拺敇测測畟笧策筞筴箣簎粣荝萗萴蓛嵾篸埁岑涔笒噌层層嶒曽曾竲驓蹭偛叉嗏扠挿插揷杈疀臿艖銟鍤锸餷馇垞察嵖搽查査槎檫猹碴秅茬茶詧靫蹅鑔镲侘刹剎奼姹岔差汊紁衩詫诧拆肞芆釵钗侪儕喍柴犲祡豺茝囆瘥虿蠆袃訍幨掺搀摻攙梴裧襜覘觇辿鋓儃儳劖嚵壥婵嬋孱巉廛棎欃毚湹潹潺澶瀍瀺煘獑磛禅緾纏纒缠艬苂蝉螹蟐蟬蟾誗讒谗躔鄽酁鋋鑱镵饞馋丳产冁刬剗剷囅嵼幝摌斺旵浐滻灛燀產産簅繟蒇蕆諂譂讇谄醦鏟铲閳闡阐骣忏懴懺摲硟羼韂顫颤伥倀娼昌椙淐猖琩菖裮錩锠閶阊鯧鲳鼚仧仩偿償兏嘗嚐塲嫦尝常徜瑺瓺甞肠腸膓苌萇裳長镸长鱨鲿僘厂厰场場廠惝敞昶氅鋹倡唱怅悵暢焻玚瑒畅畼誯韔鬯弨怊抄欩窼訬超鈔钞嘲巢巣晁朝樔漅潮牊窲罺謿轈鄛鼂鼌吵巐炒焣煼眧麨仦仯耖觘伡俥唓砗硨莗蛼車车偖扯撦勶坼屮彻徹掣撤澈烢爡瞮硩聅迠頙嗔抻捵棽琛瞋諃謓賝郴塵宸尘忱愖敐敶晨曟栕桭梣樄沉煁瘎臣茞莀莐蔯薼螴訦諶谌軙辰迧鈂陈陳霃鷐麎墋夦硶碜磣贂趻踸鍖儭嚫榇櫬疢衬襯讖谶趁趂齓齔龀偁僜憆摚撐撑晿柽棦橕檉泟浾爯牚琤瞠碀称稱穪竀緽罉蛏蟶赪赬鏿鐣阷靗頳饓丞乗乘呈城埕堘塍塖娍宬峸惩憕懲成承挰掁揨朾枨棖椉橙檙洆溗澂澄瀓珵珹畻程窚筬絾脭荿裎誠诚郕酲鋮铖騬鯎侱庱徎悜睈逞騁骋秤吃哧喫嗤噄妛媸彨彲摛攡殦瓻痴癡眵瞝笞粚絺胵蚩螭訵誺魑鴟鵄鸱黐齝匙墀弛持池漦竾筂箎篪茌荎蚳謘貾赿踟迟迡遅遟遲鍉馳驰伬侈卶叺呎垑尺恥欼歯耻肔胣蚇袲袳裭褫豉鉹齒齿侙傺勅勑叱啻彳恜慗憏懘抶敕斥杘湁灻炽烾熾痸瘛翄翅翤翨腟赤趩遫鉓銐雴飭饬鶒鷘麶充冲嘃忡憃憧摏沖浺珫罿翀舂艟茺衝蹖崇崈漴爞緟虫蝩蟲褈隀埫宠寵揰銃铳抽搊犨犫瘳篘紬仇俦儔嬦帱幬惆愁懤栦梼椆檮燽畴疇皗稠筹籌絒綢绸菗薵裯詶讎讐踌躊酧酬醻雔雠雦丑丒偢吜杽瞅矁醜魗殠臭臰遚鮘出初岀摴榋樗貙齣刍厨媰幮廚橱櫉櫥滁犓篨耡芻蒢蒭蜍蟵豠趎蹰躇躕鉏鋤锄除雏雛鶵储儲杵椘楚楮檚濋璴础礎禇處齭齼亍俶傗儊処埱处怵憷搐敊斶欪歜泏滀珿畜矗竌竐絀绌臅触觸諔豖鄐閦黜搋膗揣膪踹巛川氚瑏穿传傳剶圌暷椽篅舡舩船輲遄僢喘堾歂舛荈踳串汌猭玔賗釧钏鶨刅摐牎牕疮瘡窓窗窻噇幢床牀傸磢闖闯创刱剏剙創怆愴吹炊龡倕垂埀捶搥桘棰槌箠腄菙錘鎚锤陲顀媋旾春暙杶椿槆橁櫄瑃箺萅蝽輴鰆鶞唇浱淳湻滣漘犉純纯脣莼蒓蓴醇醕錞陙鯙鶉鹑偆惷睶萶蠢賰戳繛趠踔逴哾啜嚽娕娖婥惙擉歠涰磭綽绰踀輟辍辵辶酫鑡餟齪龊偨玼疵縒蠀趀跐骴髊齹垐嬨慈柌濨珁瓷甆磁礠祠糍茨薋詞词辝辞辤辭雌飺餈鴜鶿鷀鹚佌此泚皉鮆伺佽刺刾庛朿栨次絘茦莿蛓螆賜赐匆囪囱忩怱悤暰枞棇樅樬漗潨熜瑽璁瞛篵繱聡聦聪聰苁茐葱蓯蔥蟌鍯鏓鏦騘驄骢丛从叢婃孮従徔徖從悰樷欉淙漎潀潈灇爜琮藂誴賨賩錝愡憁謥凑楱湊腠輳辏怚橻粗觕麁麄麤徂殂促噈媨憱猝瘄瘯簇縬脨蔟誎趗踧踿蹙蹴蹵醋顣鼀撺攛汆蹿躥鑹镩巑櫕欑穳殩熶爨窜竄篡簒催凗墔崔嵟慛摧榱槯磪縗缞脺鏙漼璀皠趡伜倅啐啛忰悴毳淬濢焠琗疩瘁竁粋粹紣綷翆翠脃脆膬膵臎萃襊顇村澊皴竴膥邨侟壿存拵刌忖寸籿搓撮瑳磋蹉遳醝鎈嵯嵳痤睉矬蒫蔖虘酂酇鹺鹾脞剉剒厝夎庴挫措莝莡蓌逪銼錯锉错咑哒嗒噠墶搭撘笚耷褡鎉鎝剳匒呾垯妲怛溚炟燵畗畣瘩笪答羍荅荙薘蟽詚跶达迏迖迚逹達鐽靼鞑韃龖龘打亣大眔繨呆呔懛獃傣歹代侢叇垈埭岱帒带帯帶廗待怠戴曃柋殆瀻玳瑇甙簤紿緿绐艜蚮蝳袋襶貣貸贷跢蹛軑軚軩轪迨逮霴靆鴏黛黱丹儋勯匰单単單妉媅担擔殚殫甔眈砃箪簞耼耽聃聸褝襌躭郸鄲酖頕亶伔刐抌掸撢撣玬瓭疸紞胆膽衴賧赕馾黕黵但僤唌啖啗啿嘾噉嚪帎惮憚憺旦柦氮沊泹淡澹狚疍瘅癉癚禫窞繵腅萏蓞蛋蜑觛訑誕诞贉霮餤饏駳髧鴠黮儅噹当澢珰璫當筜簹艡蟷裆襠鐺铛闣党挡擋攩欓灙譡讜谠黨凼圵垱壋婸宕愓档檔氹潒璗瓽盪瞊砀碭礑簜荡菪蕩蘯趤逿雼刀刂叨忉朷氘舠螩釖魛鱽捯倒壔导導岛島嶋嶌嶹捣搗擣槝祷禂禱蹈陦隝隯到噵悼椡檤焘燾瓙盗盜稲稻纛翢翿艔菿衜衟軇辺道嘚得徳德恴悳惪棏淂鍀锝的扥扽噔嬁灯燈璒登竳簦艠豋蹬戥等凳墱嶝櫈瞪磴覴邓鄧鐙镫隥仾低啲埞堤奃岻彽樀氐滴磾秪羝袛趆隄鞮唙啇嘀嚁嫡廸敌敵梑涤滌狄笛籴糴翟苖荻蔋蔐藡覿觌豴蹢迪鏑镝靮頔馰髢鸐厎呧坘坻底弤抵拞掋柢牴砥聜菧觝詆诋軧邸阺骶鯳俤偙僀地坔埅埊墑墬娣媂嶳帝弟怟慸摕旳杕枤梊棣楴焍玓珶甋眱睇碲祶禘第締缔腣苐菂蒂蔕蝃蝭螮諦谛踶递逓遆遞遰釱鉪嗲傎厧嵮巅巓巔掂攧敁槇槙滇瘨癫癲蹎顚顛颠齻典嚸奌婰敟椣点碘蒧蕇跕踮點佃坫垫墊壂奠婝店惦扂橂殿淀澱玷琔电甸癜磹簟蜔鈿钿阽電靛驔凋刁刟叼奝弴彫汈琱瞗碉簓虭蛁貂錭雕鮉鯛鲷鳭鵰鼦屌扚伄吊弔掉瘹盄窎窵竨蓧藋訋調釣鈟銚銱鋽鑃钓铞铫雿魡爹褺跌叠咥喋垤堞峌嵽幉恎惵戜挕昳曡楪殜氎牃牒瓞畳疂疉疊眣眰碟絰绖耊耋胅臷艓苵蜨蝶螲褋詄諜谍趃跮蹀迭镻鰈鲽鴩哋丁仃叮帄玎疔盯耵虰酊釘钉靪奵嵿濎艼薡鐤頂顶鼎鼑啶定忊椗矴碇碠磸聢腚萣蝊訂订錠锭顁飣饤丟丢銩铥东倲冬咚埬娻岽崠崬徚昸東氡氭涷笗苳菄蝀鮗鯟鶇鶫鸫鼕嬞懂箽董蕫諌侗働冻凍动動垌姛恫戙挏栋棟洞湩硐胨胴腖迵霘駧兜兠吺唗枓橷篼蔸都唞乧抖蚪鈄钭阧陡吋斗斣梪毭浢痘窦竇脰荳豆逗郖酘閗闘餖饾鬥鬦鬪鬬鬭剢厾嘟督醏闍阇凟匵嬻椟櫝殰毒涜渎瀆牍牘犊犢独獨瓄皾裻読讀讟读豄贕錖鑟韇韣韥騳髑黩黷堵琽睹笃篤覩賭赌妒妬度杜殬渡秺肚芏荰螙蠧蠹鍍镀靯偳媏端耑褍鍴短塅断斷椴段毈煅瑖碫簖籪緞缎腶葮躖鍛锻垖堆塠痽磓鐓鐜镦鴭頧兊兌兑对対對怼憝憞懟濧瀩碓祋綐薱譈譵轛队陮隊吨噸墩墪惇撉撴敦犜獤礅蜳蹲蹾驐盹趸躉伅庉沌潡炖燉盾砘碷踲逇遁遯鈍钝頓顿剟咄哆嚉多夛掇敠敪毲畓裰凙剫喥夺奪敓敚痥踱鈬鐸铎亸哚嚲垛垜埵奲崜挆朵朶椯綞缍趓躱躲軃鬌刴剁堕墮墯尮惰憜挅柮桗舵跥跺陊陏飿饳鵽妸妿娿婀屙俄吪囮娥峉峨峩涐珴皒睋磀莪蛾訛誐譌讹迗鈋鋨锇頟額额魤鵝鵞鹅噁枙砨頋騀鵈偔僫匎卾厄呃呝咢咹噩垩堊堨堮姶岋崿廅恶悪惡愕戹扼搤搹擜櫮歞歺湂琧砈砐硆礘腭苊萼蕚蚅蝁覨諤讍谔豟軛軶轭遌遏遻鄂鈪鍔鑩锷閼阏阨阸頞顎颚餓餩饿鰐鰪鱷鳄鶚鹗齃齶誒诶欸奀恩煾蒽峎嗯摁侕儿児兒唲峏栭洏粫而耏聏胹荋袻輀轜陑隭髵鮞鲕鴯鸸尒尓尔栮毦洱爾珥耳薾衈趰迩邇鉺铒餌饵駬二佴刵咡弍弐樲誀貮貳贰髶冹发彂沷発發乏伐傠坺垡墢姂栰橃浌疺瞂笩筏罚罰罸茷藅閥阀佱峜法灋砝鍅珐琺蕟髪髮勫噃嬏帆幡忛憣旙旛畨番籓繙翻藩轓颿飜鱕凡凢凣匥墦杋柉棥樊瀿烦煩燔璠矾礬笲籵緐繁羳膰舤舧蕃薠蘩蠜襎蹯釩鐇鐢钒鷭仮反払橎返奿嬎梵氾汎泛滼瀪犯畈盕笵範范訉販贩軓軬輽飯飰饭匚坊堏方枋汸淓牥芳蚄趽邡鈁錺钫鴋妨房肪防魴鲂仿倣旊昉昘瓬眆紡纺舫訪访髣鶭放啡妃婓婔扉暃渄猆緋绯菲蜚裶霏非靟飛飝飞餥馡騑騛鯡鲱淝肥腓蜰匪奜悱斐朏棐榧篚翡胐蕜誹诽俷剕厞吠屝废廃廢昲曊杮櫠沸濷狒疿痱癈肺胇芾萉蟦費费鐨镄陫靅鼣分吩帉昐朆梤棻氛竕紛纷翂芬衯訜躮酚鈖雰餴饙馚坟墳妢岎幩朌枌棼橨汾濆炃焚燌燓獖羒羵蒶蕡蚠蚡豮豶轒鐼隫馩魵黂鼖鼢粉黺份偾僨奋奮弅忿愤憤瀵瞓秎粪糞膹鱝鲼丰仹偑僼凨凬凮堼妦寷封峯峰崶枫桻楓檒沣沨渢灃烽犎猦琒疯瘋盽砜碸篈葑蘴蜂蠭豐鄷酆鋒鎽鏠锋霻靊風飌风麷冯堸夆摓浲溄漨綘縫缝艂逢馮唪覂諷讽俸凤奉湗焨煈賵赗鳯鳳鴌覅仏佛坲梻紑否妚殕缶缹缻雬鴀伕呋夫妋姇娐孵尃怤懯敷旉柎玞砆稃筟粰糐紨綒肤胕膚荂荴衭趺跗邞鄜酜鈇鳺麩麬麱麸乀伏俘凫刜匐咈哹垘孚岪巿帗幅幞弗怫扶拂服枎柫栿桴棴榑氟泭洑浮涪澓炥烰玸琈甶畉畐癁砩祓福稪符笰箙紱紼絥綍绂绋罘罦翇艀艴芙芣苻茀茯莩菔葍虙蚨蜉蝠袚袱襆襥諨豧踾輻辐郛鉘鉜韍韨颫髴鮄鮲鳧鳬鴔鵩鶝黻乶俌俛俯呒嘸府弣抚拊捬撫斧椨滏焤甫盙簠脯腐腑蜅輔辅郙釜釡阝頫鬴黼付偩傅冨副咐坿复妇婏婦媍嬔富峊彿復椱父祔禣秿竎緮縛缚腹萯蕧蚥蚹蛗蝜蝮袝複褔覄覆訃詂讣負賦賻负赋赙赴輹鍑鍢阜附馥駙驸鮒鰒鲋鳆嘎嘠旮噶尜釓錷钆尕玍尬魀侅垓姟峐晐畡祴絯荄該该豥賅賌赅郂陔忋改絠丐乢匃匄戤摡概槩槪溉漑瓂盖葢蓋鈣钙凲坩尲尴尶尷干忓攼杆柑泔漧玕甘疳矸竿筸粓肝苷迀酐魐鳱仠感擀敢桿橄澉澸皯秆稈簳芉衦赶趕鱤鳡倝凎幹旰榦檊汵淦灨盰紺绀詌贑贛赣骭冈冮刚剛堈堽岡掆摃棡牨犅疘矼綱纲缸罁罡肛釭鋼鎠钢岗崗港戅戆戇杠槓焵焹筻槔槹橰櫜皋皐睾篙糕羔膏臯韟餻高髙鷎鷱鼛夰搞杲槀槁檺稁稾稿縞缟菒藁藳鎬镐勂吿告峼祮祰禞筶誥诰郜鋯锆割哥圪彁戈戓戨搁擱歌滒牫犵疙肐胳袼謌鎶饹鴚鴿鸽佫佮匌呄嗝塥愅挌搿敋格槅櫊滆獦膈臵葛蛒蛤裓觡諽輵轕鎘镉閣阁隔革鞈鞷韐韚騔骼鬲鮯哿嗰笴舸个亇個各箇茖虼鉻铬給给根跟哏亘亙揯搄艮茛刯庚椩浭焿畊絚緪縆羮羹耕菮賡赓鶊鹒哽埂峺挭梗綆绠耿莄郠骾鯁鲠堩更侊公功匑匔厷塨宫宮工幊弓恭愩慐攻杛碽篢糼糿肱蚣觥觵躬躳髸龏龔龚巩廾拱拲栱汞珙輁鞏供共唝嗊熕貢贡佝勾沟溝痀篝簼緱缑芶袧褠鈎鉤钩鞲韝岣枸狗玽笱耇耈耉苟蚼豿冓啂坸垢够夠姤媾彀搆撀构構煹覯觏訽詬诟購购遘雊估咕唂唃姑嫴孤巬巭杚柧橭沽泒稒笟箍箛篐罛苽菇菰蓇蛄觚軱軲轱辜酤鈲鮕鴣鸪傦古啒嘏夃尳愲扢榖毂汩淈濲瀔牯皷皼盬瞽穀糓縎罟羖股脵臌薣蛊蠱詁诂谷轂逧鈷钴餶馉骨鶻鹘鼓鼔僱凅固堌崓崮故梏棝榾牿痼祻錮锢雇顧顾鯝鲴刮劀呱栝桰歄煱瓜緺胍趏踻颪颳騧鴰鸹冎剐剮叧寡卦啩坬挂掛絓罣褂詿诖乖叏拐枴柺箉罫夬怪恠倌关官棺涫瘝癏窤蒄覌観觀观関闗關鰥鱞鳏琯璭痯筦管舘輨錧館馆鳤丱冠卝悹悺惯慣掼摜樌欟毌泴潅灌爟瓘盥矔礶祼罆罐貫贯躀遦鏆鑵雚鱹鸛鹳僙光咣垙姯桄洸灮炗炚炛烡珖胱茪輄銧黆广広廣犷獷臩俇臦逛亀圭妫媯嫢嬀嶲巂帰廆归摫椝槻槼櫷歸珪瑰璝瓌皈瞡硅胿茥蘬袿規规邽郌閨闺雟騩鬶鬹鮭鲑龜龟佹匦匭厬垝姽宄庋庪恑攱晷氿湀癸祪簋蛫蟡觤詭诡軌轨陒鬼刽刿劊劌撌攰昋柜桂桧椢槶樻檜櫃猤癐眭瞆瞶禬筀蓕螝襘貴贵跪鐀鑎鞼鱖鱥鳜丨惃滚滾磙緄緷绲蓘蔉衮袞輥辊鮌鯀鲧棍睔謴啯嘓埚堝墎崞彉彍懖楇濄猓瘑聒蝈蟈郭鈛鍋锅囯囶囻国圀國帼幗慖掴摑漍簂聝腘膕蔮虢馘惈果椁槨淉粿綶菓蜾裹褁輠餜馃腂过過鐹哈紦鉿铪咍嗨孩还骸塰海烸胲酼醢亥嗐妎害氦餀饚駭駴骇佄哻嫨憨犴蚶谽酣頇顸馠魽鼾函凾含唅圅娢寒崡嵅晗梒浛涵澏焓琀甝筨虷蜬邗邯鋡韓韩丆喊浫罕豃傼厈垾屽悍憾扞捍撖撼旱晘暵汉汗涆漢瀚焊熯猂皔睅翰莟菡蔊蛿蜭螒譀輚釬銲鋎閈闬雗頷顄颔馯駻鶾兯爳夯吭垳斻杭笐筕絎绗航苀蚢裄貥迒頏颃魧沆嚆茠蒿薅薧乚儫嗥嘷噑嚎壕椃毜毫濠獆獋獔竓籇蚝蠔譹豪好郝侴傐号哠恏悎昊昦晧暠暤暭曍浩淏滈澔灏灝皓皜皞皡皥秏耗聕薃號鄗顥颢鰝呵喝嗬抲欱蠚訶诃何劾合咊和啝姀峆惒敆曷朅柇核楁毼河涸渮澕熆狢皬盇盉盍盒礉禾篕籺粭紇纥翮荷菏萂螛覈訸詥貈貉郃釛鉌鑉閡閤闔阂阖鞨頜颌餄饸魺鲄鶡鹖麧齕龁龢哬嗃嚇垎壑寉焃煂熇燺爀癋碋翯袔褐謞賀贺赫靍靎靏鶮鶴鸖鹤嘿潶黑黒拫痕鞎佷很狠詪恨亨哼悙涥脝姮恆恒撗桁横橫烆珩胻蘅衡鑅鴴鵆鸻啈叿呍哄嚝揈渹灴烘焢硡薨訇谾軣輷轟轰鍧仜吰垬妅娂宏宖屸弘彋汯沗泓洪浤渱潂玒玜硔竑竤篊粠紅紘紭綋红纮羾翃翝耾苰荭葒葓虹谹谼鈜鉷鋐閎闳霐霟鞃魟鴻鸿黉黌晎撔澒蕻訌讧銾閧闀闂鬨齁侯喉帿猴瘊睺矦篌糇翭翵葔鄇銗鍭餱骺鯸吼吽犼候厚后垕堠後洉茩豞逅郈鮜鱟鲎鲘乎乯匢匫呼唿嘑垀寣幠忽恗惚昒曶歑泘淴滹烀糊膴苸虍虖謼軤轷雐雽喖嘝囫壶壷壺媩弧抇搰斛楜槲湖瀫焀煳狐猢瑚瓳箶絗縠胡葫蔛蝴螜衚觳醐鍸隺頶餬鬍魱鰗鵠鶘鶦鹄鹕乕俿唬汻浒滸琥萀虎虝錿鯱互冱嗀嚛婟嫭嫮岵帍弖怘怙戶户戸戽扈护摢昈枑槴沍沪滬熩瓠祜笏簄粐綔芐蔰護豰鄠鍙頀鱯鳠鳸鸌鹱埖婲椛硴糀花蒊蘤誮錵划劃华呚哗嘩姡搳撶滑猾磆華蕐螖譁釪釫鋘鏵铧驊骅鷨化夻婳嫿嬅崋摦杹枠桦槬樺澅画畫畵繣舙觟話諙諣譮话黊徊怀懐懷槐櫰淮瀤耲蘹褢褱踝咶坏壊壞蘾孉懽欢歓歡犿獾讙貛酄驩鴅鵍圜堚嬛寏寰峘桓洹澴狟獂环環瓛糫絙綄繯缳羦荁萈萑豲貆還鍰鐶锾镮闤阛雈鬟鹮睆緩缓唤喚喛嚾奂奐宦嵈幻患愌换換擐攌梙槵浣涣渙漶澣烉焕煥瑍痪瘓肒藧豢轘逭鯇鯶鰀鲩塃宺巟慌朚肓荒衁偟凰喤堭墴媓崲徨惶揘楻湟潢煌熿獚瑝璜癀皇磺穔篁簧艎葟蝗蟥諻趪遑鍠鐄锽隍韹餭騜鰉鱑鳇鷬黃黄兤奛幌怳恍晃晄櫎炾熀縨詤謊谎愰曂榥滉皝皩鎤咴噅噕婎媈幑徽恢拻挥揮撝晖暉楎洃瀈灰灳烣煇睢睳禈翚翬蘳袆褘詼诙豗輝辉隓隳鰴麾佪囘回囬廻廽恛洄烠痐茴蚘蛔蛕蜖迴逥鮰悔檓毀毁毇燬虺譭会僡儶匯卉喙嘒嚖圚嬒寭屶屷彗彙彚徻恚恵惠慧憓懳晦暳會槥橞檅櫘汇泋湏滙潓濊烩燴獩璤璯瘣瞺秽穢篲絵繢繪绘缋翙翽芔荟蔧蕙薈薉藱蟪詯誨諱譓譿讳诲賄贿鏸鐬闠阓靧頮顪颒餯婚惛昏昬棔殙涽睧睯荤葷蔒轋閽阍忶浑渾珲琿餛馄魂鼲俒倱圂婫尡慁掍混溷焝睴觨諢诨劐吙攉秴耠豁騞佸活秮秳伙夥漷火灬煷邩鈥钬俰剨咟喐嚄嚯嚿奯彟彠惑或捇掝擭旤曤檴沎湱濩瀖獲癨眓矆矐祸禍穫窢耯臛艧获蒦藿蠖謋貨货鍃鑊锪镬閄雘霍靃韄乩僟击刉刏剞叽咭唧喞嗘嘰圾基墼姬屐嵆嵇撃擊朞机枅槣樭機櫅毄激犄玑璣畸畿癪矶磯禨积稘稽積笄筓箕簊綨緁緝缉羁羇羈耭肌芨虀覉覊觭譏譤讥賫賷赍跻踑躋躸銈錤鐖鑇鑙隮雞鞿韲飢饑饥魕鳮鶏鶺鷄鸄鸡鹡齏齑亟亼亽伋佶偮卙即卽及叝吉堲塉姞嫉岌嶯彶忣急愱戢揤极棘楖楫極槉檝殛汲湒潗濈焏疾瘠皀皍磼笈箿籍級级耤膌艥蒺蕀蕺蝍螏襋觙谻趌踖蹐躤輯轚辑郆銡鍓鏶集雧霵齎丮几妀嵴己幾戟挤掎撠擠橶泲犱穖脊虮蟣魢鱾麂伎偈兾冀剂剤劑勣哜嚌坖垍塈妓季寂寄廭彐彑徛忌悸惎懻技旡既旣暨暩曁梞檕檵洎济済漃漈濟瀱璾痵癠祭禝稩稷穄穊穧紀紒継績繋繼纪继绩罽臮芰茍茤荠葪蓟蔇薊薺蘎蘮蘻裚襀覬觊計記誋諅计记跡跽蹟迹际際霁霽驥骥髻鬾魝魥鯚鯽鰶鰿鱀鱭鲚鲫鵋鷑齌乫伽佳傢加嘉家徍抸拁枷梜毠泇浃浹犌猳珈痂笳糘耞腵葭袈豭貑跏迦鉫鎵镓鴐麚唊圿夹夾忦恝戛戞扴脥荚莢蛱蛺袷裌郏郟鋏铗頬頰颊鴶鵊假叚婽岬徦斚斝椵榎槚檟玾甲瘕胛賈贾鉀钾价價嫁幏架榢稼駕驾兼冿囏坚堅奸姦姧尖幵惤戋戔搛椷椾樫櫼歼殱殲湔瀐瀸煎熞熸牋犍猏玪瑊监監睷碊礛礷笺箋緘縑缄缣肩艰艱菅菺葌蒹蔪蕑蕳虃譼豜豣鋻鑯間间雃靬鞯韀韉餰馢鰔鰜鰹鲣鳒鳽鵑鵳鶼鹣麉俭倹儉减剪囝堿帴弿彅戩戬拣挸捡揀揃撿暕枧柬梘检検檢減湕瀽瑐睑瞼硷碱礆笕筧简篯簡籛絸繭翦茧藆蠒裥襇襉襺詃謇謭譾谫趼蹇鐗鐧锏鬋鰎鹸鹻鹼件俴健僭剑剣剱劍劎劒劔墹寋建徤擶旔栫楗榗槛檻毽洊涧渐溅漸澗濺瀳牮珔瞷磵礀箭糋繝腱臶舰艦荐薦袸見覵覸见諓諫譛谏賎賤贱趝跈践踐踺轞鉴鍳鍵鏩鐱鑑鑒鑬鑳键鞬餞饯僵壃姜将將摪橿殭江浆漿畕畺疅疆礓繮缰翞茳葁薑螀螿豇韁鱂鳉傋塂奖奨奬桨槳獎耩膙蒋蔣講讲顜勥匞匠夅嵹弜弶摾櫤洚滰犟糡糨絳绛謽酱醤醬降交僬姣娇嬌峧嶕嶣憍椒浇澆焦燋礁穚簥胶膠膲艽茭茮蕉虠蛟蟭跤轇郊鐎驕骄鮫鲛鵁鷦鷮鹪嚼佼侥僥儌剿劋勦孂徺徼憿挢捁搅摷撟撹攪敫敽敿晈暞曒灚烄煍燞狡璬皎皦矫矯笅筊絞繳纐绞缴脚腳臫蟜角譑賋踋鉸铰餃饺鱎龣叫呌嘂嘄嘦噍噭嬓嶠挍敎教斠滘漖潐獥珓皭窌窖藠訆譥趭較轎轿较酵醮釂喈喼嗟堦媘嫅接掲揭擑椄楬湝煯疖痎癤皆秸稭脻菨蝔街謯阶階鞂鶛倢偼傑刦刧刼劫劼卩卪婕媫孑尐岊崨嵥嶻巀幯截拮捷掶搩擮昅杢杰桀桔桝楶榤洁滐潔狤疌睫碣礍竭節結结羯节莭蓵蛣蜐蠘蠞蠽衱袺訐詰誱讦诘跲踕迼鉣鍻镼鞊頡颉鮚鲒姐媎檞毑解觧飷丯介借吤唶堺屆届岕庎徣悈戒楐犗玠琾界畍疥砎芥藉蚧蛶衸褯誡诫鎅骱魪今仐堇堻巾惍斤津珒琎琻璡矜矝砛禁筋紟荕衿襟觔金釒釿钅鹶黅仅侭僅儘卺厪嫤巹廑慬槿漌瑾紧緊菫蓳謹谨錦锦饉馑伒僸凚劤劲勁唫噤嚍墐壗妗嬧尽搢晉晋枃歏殣浕浸溍濅濜烬煡燼瑨璶盡祲縉缙荩藎覲觐賮贐赆近进進靳齽京亰兢坕坙婛巠惊旌旍晶橸泾涇猄睛秔稉粳精経經綡经聙腈茎荆荊菁葏驚鯨鲸鶁鶄麖麠鼱丼井儆刭剄坓宑幜憬憼景暻殌汫汬澋璄璟璥穽肼蟼警阱頚頸颈俓傹净凈境妌婙婧弪弳径徑敬曔桱梷浄淨瀞獍痉痙竞竟竧竫競竸胫脛莖誩踁迳逕鏡镜靓靖静靚靜鵛冂冋坰埛扃絅蘏蘔駉駫侰僒冏囧泂浻澃炅炯烱煚煛熲燛窘綗褧迥逈顈颎丩勼啾揂揪揫摎朻樛牞究糺糾纠萛赳阄鬏鬮鳩鸠久乆九乣奺杦汣灸玖紤舏酒镹韭韮倃僦匓匛匶厩咎就廄廏廐慦捄救旧柩柾桕欍殧疚臼舅舊鯦鷲鹫麔齨凥匊娵婮居岨崌抅拘掬梮椐檋毩毱泃涺狙琚疽眗砠罝腒艍苴蜛裾諊跔跙踘躹鋦锔陱雎鞠鞫駒驹鮈鴡鶋侷啹婅局巈挶椈橘泦淗湨焗犑狊粷繘菊蘜趜跼蹫輂郹閰駶驧鵙鵴鶪鼰鼳举咀弆挙擧椇榉榘櫸欅沮矩筥聥舉莒蒟襷踽齟龃乬俱倨倶具剧劇勮句埧埾壉姖寠屦屨岠巨巪怇惧愳懅懼拒拠据據昛歫洰澽炬烥犋秬窭窶簴粔耟聚苣虡蚷袓詎讵豦貗距踞躆遽邭醵鉅鋸鐻钜锯颶飓駏鮔勬姢娟捐朘涓焆脧蠲裐鋑鎸鐫镌鹃卷呟埍巻捲臇菤錈锩倦劵勌奆婘帣弮惓慻桊淃狷獧瓹眷睊睠絭絹绢罥羂腃蔨讂鄄餋噘屩屫撅撧亅决刔劂匷厥噊噱孒孓崛崫嶡嶥弡彏憠憰戄抉挗捔掘攫斍桷橛橜櫭欮氒決泬灍焳熦爑爝爴爵獗玃玦玨珏瑴疦瘚矍矡砄絕絶绝臄芵蕝蕨虳蚗蟨蟩覐覚覺觉觖觮觼訣譎诀谲貜赽趉趹蹶蹷躩鈌鐍鐝钁镢駃鴂鴃鷢倔军君均桾汮皲皸皹碅莙菌蚐袀覠軍鈞銁銞鍕钧頵鮶鲪麇麏麕俊儁呁埈寯峻懏捃攈攟晙棞浚濬燇珺畯竣箘箟葰蜠賐郡陖隽雋餕馂駿骏鵔鵕鵘咖喀佧卡咔咯垰胩裃鉲奒开揩鐦锎開凯凱剀剴嘅垲塏嵦恺愷慨暟楷蒈輆鍇鎧铠锴闓闿颽勓忾愾欬炌烗鎎刊勘堪嵁戡栞龕龛侃偘冚凵坎惂欿歁砍竷莰輡轗顑墈崁看瞰矙磡衎闞阚鬫嫝嵻康忼慷槺漮砊穅粇糠躿鏮閌鱇扛亢伉匟囥抗炕犺邟鈧钪闶尻嵪髛丂拷攷栲洘烤考犒銬铐靠鮳鯌鲓匼嗑嵙搕柯棵榼樖牁牱犐珂疴痾瞌砢磕礚科稞窠苛萪薖蚵蝌趷軻轲醘鈳钶頦顆颏颗髁咳壳揢殻殼翗可坷岢嵑嶱敤渇渴炣克刻勀勊堁娔客尅峇恪愘愙氪溘碦礊緙缂艐衉課课錁锞騍骒剋啃垦墾恳懇肎肯肻豤貇錹掯硍裉褃劥坑妔挳摼牼硁硜硻誙銵鍞鏗铿阬倥埪崆悾涳硿空箜躻錓鵼孔恐控鞚剾彄抠摳眍瞘芤劶口冦叩宼寇怐扣敂滱瞉窛筘簆蔲蔻釦鷇刳哭圐堀枯桍矻窟跍郀骷鮬楛狜苦俈喾嚳库庫廤焅瘔秙絝绔袴裤褲酷咵夸姱舿誇侉垮銙挎胯趶跨骻擓蒯侩儈凷哙噲圦块塊墤巜廥快旝欳浍澮狯獪筷糩脍膾郐鄶鱠鲙宽寛寬臗鑧髋髖梡欵款歀窽窾劻匡匩哐恇洭硄筐筺誆诓軭邼忹抂狂狅誑诳軖軠鵟儣夼懭况圹壙岲懬旷昿曠框況爌眖眶矌矿砿礦穬絋絖纊纩貺贶軦邝鄺鉱鋛鑛黋亏刲岿巋悝盔窥窺聧虧闚顝喹夔奎巙戣揆晆暌楏楑櫆犪睽葵藈蘷虁蝰躨逵鄈鍨鍷頯馗騤骙魁傀煃磈跬蹞頍匮匱喟嘳媿嬇尯愦愧憒殨溃潰篑簣籄聩聭聵膭蒉蕢謉餽饋馈坤堃堒崐崑昆晜潉焜熴猑琨瑻菎蜫裈裩褌醌錕锟騉髠髡髨鯤鲲鵾鶤鹍壸壼悃捆梱硱祵稇稛綑裍閫閸阃困涃睏廓扩拡括挄擴濶筈萿葀蛞闊阔霩鞟鞹韕頢髺鬠啦垃拉搚柆菈邋嚹旯磖喇藞剌揦揧攋楋櫴溂爉瓎瘌翋腊臈臘蜡蝋蝲蠟辢辣鑞镴鬎鯻鞡來俫倈婡崃崍庲徕徠来梾棶涞淶猍琜筙箂莱萊逨郲錸铼騋鯠鶆麳襰唻濑瀨瀬癞癩睐睞籁籟藾賚賴赉赖頼顂鵣儖兰啉囒婪岚嵐幱惏懢拦攔斓斕栏欄欗澜瀾灆灡燣燷璼篮籃籣繿葻蓝藍蘫蘭褴襕襤襴襽譋讕谰躝鑭镧闌阑韊壈嬾孄孏懒懶揽擥攬榄欖浨漤灠爦纜缆罱覧覽览醂顲嚂滥濫烂燗爁爛爤瓓糷钄啷勆嫏廊斏桹榔樃欴狼琅瑯硠稂筤艆蓈蜋螂躴郎郒郞鋃鎯锒塱崀朖朗朤烺蓢誏埌浪莨蒗閬阆捞撈粩僗劳労勞哰崂嶗憥朥浶牢痨癆磱窂簩蟧醪鐒铹顟髝佬咾姥恅栳潦狫珯硓老耂荖蛯轑銠铑鮱唠嗠嘮嫪憦橯涝澇烙耢耮躼軂酪乐仂勒叻忇扐楽樂氻泐玏砳竻簕艻阞韷餎鰳鱳鳓了儽嫘擂攂樏檑櫑欙瓃畾礌礧累縲纍纝缧罍羸蔂蘲虆轠鐳鑘镭雷靁鱩鼺傫儡厽垒塁壘壨櫐洡灅癗矋磊磥礨絫耒蕌蕾藟蘽蠝誄讄诔鑸鸓泪涙淚禷类纇肋蘱酹銇錑頛頪類颣嘞唥塄棱楞碐稜薐冷倰堎愣睖踜刕剓剺劙厘喱嚟囄嫠孷廲悡斄梨梸棃樆漓灕犁犂狸琍璃瓈盠睝离穲竰筣篱籬糎縭纚缡罹艃荲菞蓠蔾藜蘺蟍蟸蠫褵謧貍邌醨釐鋫錅鏫鑗離驪骊鯏鯬鱺鲡鵹鸝鹂黎黧俚娌峛峢峲李欚浬澧理礼禮粴蠡裏裡豊逦邐醴里鋰锂鯉鱧鱱鲤鳢丽例俐俪傈儮儷凓利力励勵历厉厤厯厲叓吏呖唎唳嚦囇坜塛壢娳婯孋屴岦巁悧悷慄戾搮擽攊攦攭暦曆曞朸枥栃栎栗栛棙檪櫔櫟櫪欐歴歷沥沴浰涖溧濿瀝爄爏犡猁珕瑮瓅瓑瓥疠疬痢癘癧皪盭睙砅砬砺砾磿礪礫礰禲秝立笠篥粒粝糲綟脷苈苙茘荔莅莉蒚蒞藶蚸蛎蛠蜊蜧蝷蠇蠣觻詈讈赲跞躒轢轣轹郦酈鉝隶隷隸雳靂靋鬁鳨鴗鷅麗麜哩亷劆匲匳嗹噒奁奩嫾帘廉怜慩憐梿槤櫣涟溓漣濂濓瀮熑燫磏簾籢籨縺翴联聨聫聮聯臁莲蓮薕螊蠊裢褳覝謰蹥连連鎌鐮镰鬑鰱鲢嬚摙敛斂歛琏璉羷脸臉蔹蘝蘞裣襝鄻僆堜媡恋戀楝殓殮湅潋澰瀲炼煉瑓練纞练萰錬鍊鏈链鰊俍凉墚梁椋樑涼粮粱糧良踉輬辌駺両两俩倆兩唡啢掚緉脼蜽裲魉魎亮倞哴喨悢晾湸諒谅輌輛辆量鍄撩蹽僚嘹嫽寥寮尞屪嵺嶚嶛廫憀敹暸橑漻燎爎爒獠璙疗療竂簝繚缭聊膋膫藔蟟豂賿蹘辽遼飉髎鷯鹩憭曢瞭蓼鄝釕钌镽尥尦廖撂料炓窷鐐镣咧挘毟儠冽列劣劽哷埒埓姴巤挒捩擸栵洌浖烈烮煭犣猎猟獵聗脟茢蛚裂趔躐迾颲鬛鬣鮤鱲鴷拎临冧厸壣崊嶙斴晽暽林淋潾瀶燐獜琳璘疄瞵碄磷箖粦粼綝繗翷臨轔辚遴邻鄰鏻阾隣霖驎鱗鳞麐麟亃僯凛凜廩廪懍懔撛檁檩澟癛癝菻吝恡悋橉焛甐膦蔺藺賃赁蹸躏躙躪轥閵〇伶凌刢呤囹坽夌姈婈孁崚彾掕昤朎柃棂櫺欞泠淩澪灵燯爧狑玲琌瓴皊砱祾秢竛笭紷綾绫羐羚翎聆舲苓菱蓤蔆蕶蛉衑裬詅跉軨輘酃醽鈴錂铃閝陵零霊霗霛霝駖魿鯪鲮鴒鸰鹷麢齡齢龄龗岭岺嶺袊領领令另炩蘦靈溜澑熘蹓刘劉嚠媹嵧懰斿旈旒榴橊流浏瀏琉瑠瑬璢畄留畱疁瘤癅硫磂蒥蓅藰蟉裗鎏鎦鏐鐂镏镠飀飅飗駠駵騮驑骝鰡鶹鹠麍嬼柳栁桞桺橮熮珋綹绺罶羀鋶锍六塯廇磟翏遛雡霤飂餾馏鬸鷚鹨咙嚨尨嶐巃巄昽曨朧栊槞櫳泷湰滝漋瀧爖珑瓏癃眬矓砻礱礲窿竜笼篭籠聋聾胧茏蘢蠪蠬襱豅躘鏧鑨隆霳靇驡鸗龍龒龓龙儱垄垅壟壠拢攏竉陇隴哢徿梇贚剅喽嘍娄婁廔楼樓溇漊熡瞜耧耬艛蒌蔞蝼螻謱軁遱鞻髅髏鷜塿嵝嶁搂摟甊篓簍屚漏瘘瘺瘻鏤镂陋露噜嚕撸擼謢卢嚧垆壚庐廬攎曥枦栌櫨泸瀘炉爐獹玈璷瓐盧矑籚纑罏胪臚舮舻艫芦蘆蠦轤轳鈩鑪顱颅馿髗魲鱸鲈鸕鸬黸卤塷掳擄樐橹櫓氇氌滷澛瀂硵磠穞艣艪蓾虏虜鏀鐪鑥镥魯鲁鹵侓僇剹勎勠圥坴塶娽峍廘彔录戮摝椂樚淕淥渌漉潞熝琭璐甪盝睩硉碌祿禄稑穋箓簏簬簵簶籙粶膔菉蔍蕗虂螰賂赂趢路踛蹗輅轆辂辘逯醁錄録錴鏕鏴陆陸騄騼鯥鴼鵦鵱鷺鹭鹿麓圝圞奱娈孌孪孿峦巒挛攣曫栾欒滦灓灤癴癵羉脔臠虊銮鑾鵉鸞鸾卵乱亂釠抡掄仑伦侖倫囵圇婨崘崙棆沦淪碖磮綸纶耣腀芲菕蜦踚輪轮錀陯鯩埨惀稐溣論论啰囉捋頱儸囖攞椤欏猡玀箩籮罗羅脶腡萝蘿螺覶覼逻邏鏍鑼锣镙饠騾驘骡鸁倮剆曪瘰癳臝蓏蠃裸躶峈摞泺洛洜漯濼犖珞硌硦笿絡纙络荦落詻雒駱骆鮥鵅榈櫚氀膢藘閭闾驢驴侣侶偻僂儢吕呂屡屢履慺挔捛旅梠焒祣稆穭絽縷缕膂膐褛褸郘鋁铝勴垏嵂律慮櫖氯滤濾爈率箻綠緑繂绿膟葎虑鑢圙寽掠略畧稤鋝鋢锊妈媽嫲嘛犘痲痳蔴蟆蟇麻杩溤犸獁玛瑪码碼蚂螞遤鎷馬马鰢鷌傌嘜榪睰祃禡罵閁駡骂鬕吗嗎埋薶霾买嘪荬蕒買鷶佅劢勱卖唛売脈脉衇賣迈邁霡霢麥麦顢颟姏悗慲摱樠瞒瞞蛮蠻謾谩鞔饅馒鬗鬘鰻鳗娨屘満满滿矕螨蟎襔鏋僈墁嫚幔慢曼槾漫澷熳獌縵缦蔄蔓蘰鄤鏝镘牤厖吂哤娏忙恾杗杧汒浝牻狵痝盲盳硭笀芒茫蘉蛖邙釯鋩铓駹壾漭硥茻莽莾蟒蠎猫貓堥旄枆楙毛氂渵牦犛矛罞芼茅茆蝥蟊軞酕鉾錨锚髦髳鶜乮冇卯夘峁戼昴泖笷蓩鉚铆冃冐冒媢帽愗懋暓柕毷瑁皃眊瞀耄茂萺蝐袤覒貌貿贸鄚鄮嚒嚰濹么麼麽坆堳塺媒嵋徾攗枚栂梅楣楳槑沒没湄湈煤猸玫珻瑂眉睂禖脄脢腜苺莓葿郿酶鋂鎇镅霉鶥鹛黴凂媄媺嬍嵄挴毎每浼渼燘美羙躾鎂镁黣嚜妹媚寐抺旀昧沬煝痗眛睸祙篃蝞袂跊韎鬽魅椚们們扪捫玧璊穈菛虋鍆钔門閅门悶懑懣暪焖燜闷掹擝矇蒙儚幪懞曚朦橗檬氋氓溕濛獴甍甿盟瞢矒礞艨莔萌蕄虻蝱鄳鄸霿靀顭饛鯍鸏鹲冡勐懵猛艋蜢蠓錳锰鯭鼆夢夣孟懜梦癦霥咪眯瞇冞弥彌戂擟攠瀰爢猕獼瓕祢禰糜縻蒾藌蘪蘼袮詸謎谜迷醚醾醿釄镾靡鸍麊麋麛麿侎孊弭敉沵洣渳濔灖米粎羋脒芈葞蔝銤冖冪嘧塓宓宻密峚幂幎幦怽榓樒櫁汨沕泌淧滵漞濗熐祕秘簚糸羃蔤蜜覓覔覛觅謐谧鼏婂媔嬵宀杣棉檰櫋眠矈矊矏綿緜绵臱芇蝒丏偭免冕勉勔喕娩愐汅沔渑湎澠眄睌絻緬缅腼葂靦鮸糆面靣麪麫麵麺喵媌嫹描瞄緢苗鶓鹋劰杪淼渺眇秒篎緲缈藐邈妙庙庿廟玅竗乜吀咩哶孭幭懱搣櫗滅瀎灭烕礣篾蔑薎蠛衊鑖鱴鴓垊姄岷崏怋慜捪旻旼民玟珉琘琝瑉痻盿砇碈緍緡缗罠苠鈱錉鍲鴖僶冺刡勄忞忟悯惽愍憫抿敃敏敯暋泯湣潣皿笢笽簢蠠閔閩闵闽鰵鳘黽黾冥名嫇明暝朙榠洺溟猽眀眳瞑茗蓂螟覭詺鄍銘铭鳴鸣佲凕姳慏酩命掵謬谬嚤摸劘嫫嬤嬷尛庅摩摹擵模橅磨糢膜蘑謨謩谟饃饝馍髍魔魹懡抹嗼圽塻墨妺嫼寞帓帞昩末枺歾歿殁沫漠爅獏瘼皌眜眽眿瞐瞙砞礳秣絈纆耱茉莈莫蓦藦蛨蟔貃貊貘銆鏌镆陌靺驀魩默黙哞侔劺呣恈牟眸繆缪蛑謀谋踎鍪鴾麰某毪氁亩姆峔拇母牡牳畂畆畒畝畞畮砪胟踇鉧仫凩募坶墓幕幙慔慕暮暯木楘毣沐炑牧狇目睦穆縸艒苜莯蚞鉬钼雮霂鞪嗱拏拿搻鎿镎乸哪雫吶呐妠捺笝納纳肭蒳衲袦豽貀軜那郍鈉钠靹魶孻腉乃倷奶嬭廼氖疓艿迺釢奈柰渿耐萘螚褦錼鼐囡侽南喃娚抩暔枏柟楠男畘莮諵遖难難戁揇湳煵腩萳蝻赧婻囔乪嚢囊欜蠰饢馕擃攮曩灢儾齉孬呶夒峱嶩巎怓憹挠撓猱獶獿硇碙蛲蟯詉譊鐃铙匘垴堖嫐恼悩惱瑙碯脑脳腦淖臑閙闹鬧抐疒眲訥讷呢娞脮腇餒馁鮾鯘內内氝氞錗嫩嫰恁能妮倪坭埿婗尼屔怩棿泥淣猊秜籾聣臡蚭蜺觬貎跜輗郳鈮铌霓馜鯢鲵麑齯伱伲你儗儞妳孴抳拟掜擬旎晲柅檷狔聻苨薿隬匿堄嫟嬺屰惄愵昵暱氼溺眤睨縌胒腻膩誽逆拈蔫哖姩年秊秥粘鮎鯰鲇鲶鵇黏捻撚撵攆涊淰焾碾簐蹍蹨躎輦辇卄唸埝廿念惗艌娘嬢孃酿醸釀嫋嬝嬲樢茑蔦袅裊褭鳥鸟尿脲捏揑苶啮嗫噛嚙囁囓圼孼孽嵲嶭巕帇摰敜枿槷櫱涅湼痆篞籋糱糵聂聶臬臲菍蘖蠥讘踂踗踙蹑躡錜鎳鑈鑷钀镊镍闑陧隉顳颞齧囜您脌拰儜凝咛嚀嬣宁寍寕寗寜寧擰柠橣檸狞獰甯聍聹薴鑏鬡鸋拧矃佞侫倿泞澝濘妞汼牛牜忸扭杻炄狃紐纽莥鈕钮靵侬儂农哝噥檂欁浓濃燶禯秾穠脓膿蕽襛譨農辳醲鬞繷弄挊挵癑齈羺槈檽獳耨鎒鐞伮奴孥帑笯駑驽努弩砮胬傉怒搙奻暖渜煖煗餪黁傩儺娜挪梛橠喏愞懦懧掿搦榒稬穤糑糥糯諾诺蹃逽鍩锘女籹釹钕恧朒沑衂衄婩疟瘧硸虐喔噢哦筽塸櫙欧歐殴毆熰瓯甌膒藲謳讴鏂鴎鷗鸥偶吘呕嘔耦腢蕅藕怄慪沤漚啪妑皅舥苩葩趴掱杷潖爬琶筢帊帕怕袙拍俳徘排棑牌犤猅箄簰簲輫哌沠派渒湃蒎鎃攀潘眅萠丬媻幋搫柈槃洀瀊爿盘盤磐磻縏蒰蟠跘蹒蹣鎜鞶冸判叛沜泮溿炍牉畔盼聁袢襻詊鋬鑻頖鵥乓滂胮膖雱霶厐嫎庞庬彷徬旁舽螃逄鰟鳑龎龐耪覫炐眫肨胖抛拋脬萢刨匏咆垉庖炰爮狍袍褜軳鞄麃麅跑奅泡炮疱皰砲礟礮靤麭呸怌肧胚衃醅培婄毰裴裵賠赔錇锫阫陪俖伂佩姵帔斾旆沛浿犻珮蓜轡辔配霈馷喷噴歕湓瓫盆葐呠翸剻匉嘭怦恲抨梈泙烹砰硑磞軯閛駍倗傰堋塜塳弸彭憉捀朋棚椖樥澎熢硼稝竼篣篷纄膨芃莑蓬蘕蟚蟛袶輣錋鑝韸韼騯髼鬅鬔鵬鹏捧淎皏掽椪槰碰踫丕伓伾劈噼坯岯悂憵批披抷旇枈炋狉狓砒磇礔礕秛秠紕纰翍耚豾邳釽鈚鉟銔錃錍陴霹駓髬魾啤埤壀崥枇毗毘焷琵疲皮笓篺罴羆肶脾腗膍蚍蚽蚾蜱螷蠯裨豼貔郫鈹铍阰隦魮鮍鲏鵧鼙仳匹吡噽嚭圮嶏庀擗疋痞癖脴苉諀銢鴄僻媲嫓屁揊淠潎澼甓疈稫譬辟闢鷿鸊偏囨媥楄犏篇翩鍂鶣楩胼腁賆跰蹁駢騈骈骿覑諞谝貵片騗騙骗魸剽勡嘌彯慓旚漂犥翲螵飃飄飘魒嫖瓢薸闝殍皫瞟篻縹缥醥顠僄徱票驃鰾撆撇暼氕瞥覕丿苤鐅嫳姘拚拼砏礗穦馪驞嚬娦嫔嬪玭琕矉薲蘋蠙貧贫顰频颦品榀汖牝聘乒俜娉涄甹砯聠艵頩凭凴呯坪塀屏岼帡帲幈平慿憑枰檘洴淜焩玶瓶甁竮箳簈缾胓苹荓萍蓱蚲蛢評评軿輧郱鮃鲆屛坡岥泼溌潑酦醗醱釙鏺钋頗颇嘙嚩婆櫇皤蔢鄱叵尀笸箥鉕钷駊哱奤岶廹敀昢洦湐烞珀破砶粕蒪迫魄剖娝垺抔抙捊箁裒咅哣掊犃仆噗扑撲攴攵潽炇痡鋪铺陠鯆僕匍圤墣濮獛璞瞨穙纀莆菐菩葡蒱蒲贌酺鏷镤圃圑埔擈普暜朴樸檏氆浦溥烳諩譜谱蹼鐠镨曝瀑舖舗七倛傶僛凄嘁墄妻娸悽慼慽戚捿攲敧期柒栖桤桼棲榿欹欺沏淒漆紪緀萋褄諆踦蹊迉郪鏚霋魌鶈丌亓亝其剘圻埼奇岐岓崎嵜帺忯愭懠掑斉斊旂旗棊棋檱櫀歧淇濝猉玂琦琪璂畦疧碁碕祁祈祺禥竒簯簱籏粸綥綦耆肵脐臍艩芪萁萕蕲藄蘄蚑蚔蚚蛴蜝蜞螧蠐褀跂軝鄿釮錡锜陭隑頎颀騎騏騹骐骑鬐鬿鯕鰭鲯鳍鵸鶀麒麡齊齐乞企启呇唘啓啔啟婍屺岂晵杞棨玘盀綺绮芑諬豈起邔闙呮咠唭噐器夡契弃愒憇憩摖暣栔棄槭欫气気氣汔汽泣湆湇滊炁甈盵矵砌碛碶磜磧磩罊芞葺藒蟿訖讫迄鐑掐擖葜峠拤跒酠鞐冾圶帢恰殎洽硈胢髂仟佥僉千厱圱圲奷婜孯岍悭愆慳扦拪掔搴撁攐攑攓杄檶櫏欦汘汧牵牽竏签簽籖籤粁臤芊茾蚈褰諐謙谦谸迁遷釺鈆鉛鏲钎铅阡韆顅騫骞鬜鬝鵮鹐乹乾亁仱偂前墘媊岒忴扲拑掮揵榩橬歬潛潜濳灊箝羬荨葥蕁虔軡鈐鉗銭錢鎆钤钱钳騚騝鰬黔黚槏浅淺繾缱肷膁蜸譴谴遣鑓伣俔倩傔儙刋堑塹壍嬱嵌悓慊棈椠槧欠歉皘篏篟綪縴芡茜蒨蔳輤呛啌嗆嗴嶈戕戗戧搶摤斨枪椌槍溬牄猐獇玱瑲篬羌羗羫腔蜣謒跄蹌蹡鎗鏘锖锵墙墻嫱嬙廧強强彊樯檣漒牆艢蔃蔷薔蘠墏抢繈繦羟羥襁鏹镪唴炝熗羻劁勪墝墽帩幧悄敲橇毃燆硗磽繑繰缲趬跷踍蹺蹻郻鄡鄥鍫鍬鐰锹頝骹乔侨僑喬嘺墧嫶峤憔桥槗樵橋櫵犞癄睄瞧硚礄翘翹荍荞菬蕎藮譙谯趫鐈鞒鞽顦巧愀釥髜俏僺峭撬撽窍竅誚诮躈陗鞘鞩韒髚切苆癿聺茄且匧厒妾怯悏惬愜挈洯淁穕窃竊笡箧篋籡蛪趄踥郄鍥锲鯜亲侵兓媇寴嵚嵰嶔欽綅衾親誛钦顉駸骎鮼勤嗪噙埐嫀嶜庈懃懄捦擒斳檎澿珡琴琹瘽禽秦耹肣芩芹菦菳蚙螓蠄鈙鈫雂靲鳹鵭坅寑寖寝寢昑梫笉螼赾鋟锓吢吣唚抋揿搇撳沁瀙菣藽倾傾卿圊埥寈氢氫淸清蜻軽輕轻郬錆鑋靑青鯖鲭剠勍啨夝情擎擏晴暒棾樈檠殑氰甠硘葝黥庼廎檾漀苘請謦请頃顷儬凊庆慶掅櫦殸濪碃磬箐綮罄靘儝卭宆惸憌桏橩焪焭煢熍琼璚瓊瓗睘瞏穷穹窮竆笻筇舼茕藑藭蛩蛬赹跫邛銎丘丠坵媝恘恷楸湫湬秋秌穐篍緧萩蓲蘒蚯蝵蟗蠤趥邱鞦鞧鰌鰍鳅鶖鹙龝俅叴唒囚崷巯巰扏朹梂殏毬求汓泅浗渞湭煪犰玌球璆皳盚紌絿肍芁莍虬虯蛷蝤裘觓觩訄訅賕赇逎逑遒酋醔釚釻銶頄鮂鯄鰽鼽搝糗伹佉匤区區呿坥屈岖岴嶇憈抾敺浀焌煀祛筁粬紶胠蛆蛐袪覰詘誳诎趋趍趨躯軀阹駆駈驅驱髷魼鰸鱋鶌麯麴麹黢佢劬忂戵斪朐欋欔氍淭渠灈爠璖璩癯瞿磲籧絇翑胊臞菃葋蕖蘧螶蟝蠷蠼衐衢躣軥鑺鴝鸜鸲鼩取娶曲竘竬蝺詓齲龋刞厺去耝覷覻觑趣閴闃阒麮鼁圈圏奍悛棬椦箞鐉佺全啳埢姾峑巏恮拳搼权楾権權泉洤湶牷犈瑔痊硂筌絟縓荃葲蜷蠸觠詮诠跧踡輇辁醛銓铨闎顴颧駩騡鬈鰁鳈齤烇犬犭犮畎綣绻虇券劝勧勸牶韏炔缺缼蒛阙瘸傕却卻埆塙崅悫愨慤搉棤榷燩琷皵硞确碏確碻礐礭趞闋闕阕雀鵲鹊囷夋踆逡宭峮帬羣群裙裠呥嘫然燃繎肰蚦蚺衻袇袡髥髯冄冉姌媣染橪珃苒蒅儴勷瀼獽瓤禳穣穰蘘躟鬤嚷壌壤攘爙懹譲讓让娆嬈桡橈荛蕘襓饒饶扰擾隢繞绕遶惹热熱人亻仁壬忈忎朲秂芢銋魜鵀忍栠栣棯秹稔綛荏荵躵仞仭任刃刄妊姙屻岃扨杒梕牣祍紉紝絍纫纴肕腍衽袵訒認认讱軔轫鈓靭靱韌韧飪餁饪扔仍礽芿辸陾囸日衵釰釼鈤馹驲傛媶嫆嬫容峵嵘嵤嶸戎搈搑曧栄榕榮榵槦毧溶瀜烿熔爃狨瑢穁絨縙绒羢肜茙茸荣蓉蝾融螎蠑褣鎔镕駥傇冗坈宂氄軵穃厹媃揉柔楺渘煣瑈瓇禸粈糅脜腬葇蝚蹂輮鍒鞣騥鰇鶔韖宍肉譳嶿侞儒嚅如嬬孺帤挐曘桇渪濡筎繻茹蒘蕠薷蝡蠕袽襦邚醹銣铷顬颥鱬鴑鴽乳擩汝肗辱鄏入嗕媷扖杁洳溽縟缛蓐褥鳰堧壖撋偄媆朊瑌瓀碝礝緛耎腝軟輭软阮桵甤緌蕤壡惢橤繠蕊蕋蘂蘃叡枘汭瑞睿芮蚋蜹銳鋭锐瞤橍润潤膶閏閠闰挼捼偌叒婼嵶弱楉渃焫爇箬篛若蒻鄀鰙鰯鶸仨撒洒灑訯躠靸卅摋櫒脎萨蕯薩鈒钑隡颯飒馺嘥噻塞愢揌毢毸腮顋鰓鳃嗮僿簺賽赛三厁叁弎毵毶毿犙鬖伞傘糁糝糣糤繖鏒鏾饊馓俕散潵閐壭桑桒槡嗓搡磉褬鎟顙颡丧喪慅掻搔溞繅缫臊螦颾騒騷骚鰠鱢鳋嫂扫掃埽氉瘙矂髞閪啬嗇懎摵擌栜歮歰洓涩渋澀澁濇濏瀒瑟璱瘷穑穡穯繬色譅轖銫鏼铯雭飋森椮槮襂僧鬙乷唦杀桬榝樧殺毮沙煞猀痧砂硰粆紗繺纱蔱裟鎩铩閷髿魦鯊鯋鲨啥傻儍倽厦唼啑喢嗄帹廈歃箑翜翣萐閯霎筛篩簁簛籭晒曬傓删刪剼嘇圸姍姗山幓彡挻搧杉柵檆潸澘煽狦珊痁笘縿羴羶脠膻舢芟苫衫跚軕邖釤钐閊鯅晱炶煔熌睒覢閃闪陕陝僐善墠墡嬗扇掞擅敾椫樿歚汕灗疝磰禪繕缮膳蟮蟺訕謆譱讪贍赡赸鄯銏鐥饍騸骟鱓鱔鳝伤傷商墒慯殇殤滳漡熵禓蔏螪觞觴謪鬺垧扄晌樉賞贘赏鋿鏛鑜丄上尙尚恦緔绱鞝弰捎旓梢烧焼燒稍筲艄莦萷蕱輎髾鮹勺杓柖玿芍韶少劭卲哨娋潲紹綤绍袑邵奓奢檨猞畬畭畲賒賖赊輋佘揲舌虵蛇蛥捨舍厍厙射弽慑慴懾摂摄攝欇涉涻渉滠灄社舎蔎蠂設设赦韘騇麝伸侁兟呻堔妽姺娠屾峷扟敒曑柛氠深燊珅甡甧申眒砷穼籶籸糂紳绅罙罧莘葠蓡蔘薓裑訷詵诜身駪鯓鯵鰺鲹鵢什榊神鉮鰰哂婶嬸审宷審弞曋沈渖瀋瞫矤矧覾訠諗讅谂谉邥頣魫侺愼慎昚涁渗滲甚瘆瘮眘祳肾胂脤腎葚蜃蜄鋠升呏声斘昇曻枡殅泩湦焺牲狌珄生甥竔笙聲苼鉎鍟阩陞陹鵿鼪憴縄繉繩绳譝偗渻省眚剩剰勝圣墭嵊晟晠榺橳琞盛聖胜蕂貹賸呞失尸屍师師施浉湤湿溮溼濕狮獅瑡箷絁葹蒒蓍虱蝨褷襹詩诗邿酾釃釶鉇鍦鯴鰤鲺鳲鳾鶳鸤乭十埘塒姼实実寔實峕嵵拾时旹時榯湜溡炻石祏竍蚀蝕識识遈鉐食飠饣鮖鰣鲥鼫鼭乨使兘史始宩屎榁矢笶豕鉂駛驶世丗亊事仕侍冟势勢卋呩嗜噬士奭嬕室崼市式弑弒徥忕恀恃戺拭揓是昰枾柹柿栻氏澨烒煶眂眎眡睗示礻秲筮簭舐舓莳蒔螫襫視视觢試誓諟諡謚试谥貰贳軾轼适逝適遾釈释釋鈰鉃鉽銴铈飾餙餝饰鰘籂辻収收垨守手扌艏首兽受售嘼壽夀寿授涭狩獣獸痩瘦綬绶膄鏉书倏倐儵叔姝婌抒掓摅攄書杸枢梳樞橾殊殳毹毺淑瀭焂琡疎疏紓綀纾舒菽蔬跾踈軗輸输鄃陎鮛鵨塾孰尗熟璹秫贖赎属屬数數暏暑曙潻癙糬署薥薯藷蜀蠴襡襩鱪鱰黍鼠鼡侸咰墅尌庶庻怷恕戍捒朮术束树樹沭漱潄澍濖竖竪絉腧荗蒁虪術裋豎述鉥錰鏣霔鶐刷唰耍誜摔衰甩卛帅帥蟀拴栓閂闩涮腨双孀孇欆礵艭雙霜騻驦骦鷞鸘鹴塽慡漺爽縔鏯灀脽誰谁水氵氺閖帨涗涚睡祱稅税裞吮楯橓瞚瞬舜蕣順顺鬊說説说妁搠朔槊欶烁爍獡矟硕碩箾蒴鎙鑠铄丝俬凘厮厶司咝嘶噝媤廝思恖撕斯楒泀澌燍磃禗禠私糹絲緦纟缌罳蕬虒蛳蜤螄蟖蟴鉰銯鋖鍶鐁锶颸飔騦鷥鸶鼶死亖似佀価俟儩兕嗣四姒娰孠寺巳杫枱柶梩榹汜泗泤洍洠涘瀃牭祀禩竢笥耛耜肂肆蕼覗貄釲鈶鈻飤飼饲駟騃驷倯凇娀崧嵩庺忪憽松枀枩柗梥檧淞濍硹菘鬆傱嵷怂悚愯慫楤竦耸聳駷宋訟誦讼诵送鎹頌颂餸凁嗖廀廋捜搜摉摗溲獀艘蒐蓃螋鄋醙鎪锼颼飕餿馊騪傁叜叟嗾擻櫢瞍籔薮藪嗽擞瘶囌櫯甦稣穌窣苏蘇蘓酥鯂俗傃僳嗉塐塑夙嫊宿愫愬憟梀榡樎樕橚殐泝洬涑溯溸潚潥玊珟璛碿簌粛粟素縤肃肅膆莤蔌藗觫訴謖诉谡趚蹜速遡遬鋉餗驌骕鱐鷫鹔狻痠酸匴祘笇筭算蒜倠哸夊浽滖濉熣芕荽荾虽雖鞖瓍綏绥遀隋随隨髄瀡膸髓亗埣嬘岁嵗旞檖歲歳澻煫燧璲睟砕碎祟禭穂穗穟繀繐繸襚誶譢谇賥遂邃鐆鐩隧韢孙孫搎槂狲猻荪蓀蕵薞飧飱损損榫笋筍箰簨鎨隼鶽傞唆嗍嗦娑挱挲摍桫梭睃簑簔縮缩羧莎莏蓑趖鮻乺唢嗩所暛溑獕琐琑瑣索褨鎍鎖鎻鏁锁溹蜶逤他塌她它榙溻牠祂褟趿鉈铊闧塔墖獭獺鮙鰨鳎傝嚃嚺崉挞搨撻榻橽毾沓涾澾濌狧禢粏誻譶踏蹋蹹躂躢遝遢錔闒闥闼阘鞜鞳侤囼孡胎儓台坮嬯抬擡旲檯炱炲箈籉臺苔菭薹跆邰颱駘骀鮐鲐冭太夳忲态態汏汰汱泰溙燤肽舦酞鈦钛啴嘽坍怹摊擹攤滩潬灘痑瘫癱舑貪贪倓坛埮墰墵壇壜婒弹弾彈惔憛昙曇榃橝檀潭燂痰罈罎藫覃談譚譠谈谭貚郯醈醰錟锬顃僋嗿坦忐憳憻暺毯璮菼袒襢醓鉭钽叹嘆探歎湠炭碳舕劏嘡汤湯羰薚蝪蹚鏜镗鞺鼞傏唐啺坣堂塘嵣搪棠榶樘橖溏漟煻瑭磄禟篖糃糖糛膅膛蓎螗螳赯踼鄌醣鎕闛隚餹饄鶶伖倘偒傥儻戃曭淌爣矘耥躺鎲钂镋摥烫燙趟鐋铴夲嫍幍弢慆掏搯槄涛滔濤瑫絛縚縧绦詜謟轁鞱韜韬飸饕匋咷啕桃洮淘祹綯绹萄蜪裪迯逃醄鋾陶鞀鞉饀駣騊鼗討讨套忑忒慝特脦蟘鋱铽熥膯鼟儯幐滕漛疼痋籐籘縢腾藤虅螣誊謄邆駦騰驣鰧霯剔擿梯踢銻锑鷈鷉偍厗啼嗁媞崹徲惿提渧漽瑅睼碮禔禵稊綈緹绨缇罤蕛褆謕趧蹄蹏醍鍗題题騠鮷鯷鳀鵜鶗鶙鷤鹈体挮躰軆骵體倜剃嚏嚔屉屜悌悐惕惖戻掦揥替朑歒殢涕瓋笹籊薙褅趯逖逷髰鬀鬄兲天婖添酟靔靝黇塡填屇恬搷沺湉璳甛甜田畋畑碵磌窴緂胋菾闐阗鴫鷆鷏倎唺忝悿晪殄淟琠痶睓腆舔覥觍賟錪餂掭瑱舚佻庣恌挑旫祧聎岧岹条條樤祒笤芀苕萔蓚蓨蜩调迢鋚鎥鞗髫鯈鰷鲦齠龆嬥宨晀朓窕窱脁誂眺粜糶絩覜趒跳怗聑萜貼贴僣帖蛈鉄銕鐡鐵铁驖呫飻餮厅厛听庁廰廳桯汀烃烴綎耓聴聼聽鞓亭停婷嵉庭廷楟榳渟筳聤莛葶蜓蝏諪邒閮霆鼮侹圢娗挺梃涏烶珽町甼脡艇誔鋌铤頲颋嗵樋炵痌絧蓪通仝佟僮勭同哃峂峒峝庝彤晍曈朣桐橦氃浵潼烔燑犝狪獞眮瞳砼秱穜童粡膧茼蚒詷赨酮鉖鉵銅铜餇鮦鲖捅桶筒筩統綂统恸慟憅痛衕偷偸婾媮緰鋀鍮亠头投頭骰妵敨斢紏蘣黈透凸堗宊嶀怢捸涋湥痜禿秃突葖鋵鵚鼵凃図图圖圗塗屠峹嵞庩廜徒悇捈揬梌涂潳瑹瘏稌筡腯荼蒤跿途酴鈯鍎馟駼鵌鶟鷋鷵吐唋土圡釷钍兎兔堍莵菟迌鵵汢圕湍煓猯貒剸团団團慱抟摶槫檲漙篿糰鏄鷒鷻墥畽疃彖湪褖推蓷藬尵弚橔穨蘈蹪隤頹頺頽颓魋俀僓腿蹆骽娧煺蛻蜕螁褪退駾吞呑噋旽暾朜涒焞囤坉屯忳臀臋芚蛌豘豚軘霕飩饨魨鲀黗氽乇仛侂咃咜托扡拕拖挩捝杔汑沰涶脫脱莌袥託讬飥饦馲魠鮵佗侻坨堶媠岮柁槖橐沱沲狏砣砤碢紽袉詑跎酡阤陀陁馱駄駝駞騨驒驝驮驼鮀鴕鸵鼉鼍鼧妥嫷庹彵椭楕橢鰖鵎唾嶞拓柝毤毻箨籜萚蘀跅劸哇嗗娲媧屲挖搲攨洼溛漥瓾畖穵窊窐窪蛙韈鼃娃佤咓瓦砙邷嗢聉腽膃袜襪韤呙咼喎歪竵外顡剜塆壪婠帵弯彎湾潫灣睕蜿豌丸刓完岏忨抏捖汍烷玩琓笂紈纨翫芄貦頑顽倇唍埦婉宛惋挽晚晥晩晼梚椀涴琬畹皖盌碗箢綩綰绾脘莞菀萖踠輓鋔万卍卐妧捥杤澫瞣脕腕萬薍蟃贃贎輐鋄錽鎫尣尩尪尫汪亡亾仼兦王莣蚟彺往徃惘暀枉棢瀇網网罒罓罔罖菵蛧蝄誷輞辋魍妄忘旺望朢迋偎危厃喴威媙崴嵔嶶巍微愄揋揻椳楲溦烓煨燰癓縅葨葳薇蜲蝛覣詴逶隇隈霺鰃鰄鳂唯喡囗囲围圍壝媁峗峞嵬帏帷幃惟桅欈沩洈涠湋溈潍潙潿濰為爲犩琟矀硙維维蓶覹违違鄬醀鍏闈闱韋韦鮠亹伟伪偉偽僞儰委娓寪尾屗崣嶉徫愇捤撱斖暐梶椲洧浘渨濻瀢炜煒猥玮瑋痏痿硊碨緯纬腲艉芛苇荱萎葦蒍蔿諉诿踓鍡隗韑韙韡韪頠颹骩骪骫鮪鲔为位卫叞味喂墛媦尉慰懀未渭煟熭犚猬畏緭罻胃苿菋蔚藯蘶蜼蝟螱衛衞褽謂讆讏谓躗躛軎轊鏏霨餧餵饖魏鮇鳚塭昷榅榲殟温溫瑥瘟豱輼轀辒鎾鞰饂鰛鰮鳁彣文炆珳瘒紋繧纹聞芠蚉蚊螡蟁閺閿闅闦闻阌雯馼駇魰鳼鴍鼤伆刎吻呅呡抆桽稳穏穩紊肳脗問妏揾搵汶渂璺莬问顐嗡翁聬螉鎓鶲鹟勜塕奣嵡攚暡滃瞈蓊瓮甕罋蕹齆倭唩挝涡涹渦猧窝窩莴萵蜗蝸踒婐婑我捰仴偓卧媉幄捾握斡枂楃沃渥濣焥瓁瞃硪肟腛臒臥齷龌乌剭呜嗚圬屋巫弙杇歍汙汚污洿烏窏箼螐誈誣诬邬鄔鎢钨鰞鴮吳吴吾呉墲娪峿无梧橆毋洖浯無珸璑祦芜茣莁蕪蜈蟱譕郚鋙铻鯃鵐鷡鹀鼯乄五仵伍侮倵儛午啎妩娒娬嫵庑廡忤怃憮捂摀武潕熓牾玝珷瑦甒瞴碔舞躌迕逜陚鵡鹉俉兀务務勿卼唔坞塢奦婺寤屼岉嵍嵨忢悞悟悮戊扤敄旿晤杌溩焐熃物痦矹窹粅芴蘁誤误鋈阢隖雺雾霚霧靰騖骛鶩鹜鼿齀俙傒僖兮凞卥厀吸唏唽嘻噏嚱夕奚娭嬆嬉屖嵠巇希徆徯忚怸恓息悉悕惁惜扱扸昔晞晰晳暿曦析桸榽樨橀欷歙氥汐浠淅渓溪潝烯焁焈焟焬煕熄熈熙熹熺熻燨爔牺犀犠犧狶琋瘜皙睎瞦矽硒磎礂稀穸窸粞糦緆繥羲翕翖肸肹膝舾莃菥蒠蜥螅螇蟋蠵裼西覡觹觽觿譆谿豀豨豯貕赥邜郗鄎酅醯釸錫鏭鐊鑴锡隵餏饎饻鯑鵗鸂鼷习喺媳嶍席椺槢檄漝習蒵蓆薂袭襲觋謵趘郋鎴隰霫飁騱騽驨鰼鳛喜囍壐屣徙憘憙枲橲歖洗漇玺璽矖禧縰葈葸蓰蟢諰謑蹝躧鈢鉨鉩鱚係匸卌呬墍屃屓屭忥怬恄慀戏戯戱戲椞欯潟澙熂犔盻磶禊稧系細綌縘繫细绤舃舄蕮虩衋覤赩趇郤釳闟阋隙隟霼餼饩鬩黖傄呷煆瞎虲虾蝦谺閕颬鰕侠俠匣埉峡峽敮暇柙炠烚狎狭狹珨瑕硖硤碬磍祫筪縖翈舝舺蕸赮轄辖遐鍜鎋陜陿霞騢魻鶷黠閜丅下乤吓圷夏夓懗梺疜睱罅諕鎼鏬仙仚佡僊僲先嘕奾嬐孅屳廯忺憸掀攕暹杴枮氙珗祆秈籼繊纎纖纤苮莶薟褼襳跹蹮躚酰銛銽鍁铦锨韯韱馦鮮鱻鲜鶱伭咁咸啣嗛妶娴娹婱嫌嫺嫻弦憪挦撏涎湺澖甉痫癇癎盷瞯礥稴絃胘舷藖蚿蛝衔衘誸諴賢贒贤輱醎銜鑦閑閒闲鷳鷴鷼鹇鹹麙冼尟尠崄嶮幰搟攇显櫶毨灦烍燹狝猃獫獮玁禒筅箲藓蘚蚬蜆譣赻跣銑鍌铣险険險韅顕顯僩僴县咞哯垷埳塪壏姭娊宪岘峴憲撊晛橌橺涀瀗献獻现現県睍粯糮絤綫線縣线缐羡羨腺臔臽苋莧誢豏鋧錎限陥陷霰餡馅麲鼸乡厢廂忀楿欀湘瓖相稥箱緗纕缃膷芗萫葙薌襄郷鄉鄊鄕鑲镶香驤骧鱜麘佭庠栙瓨祥絴翔詳详跭享亯响想晑蚃蠁銄響飨餉饗饟饷鮝鯗鱶鲞像勨向嚮姠嶑巷曏橡珦缿蟓衖襐象鐌項项鱌侾削呺哓嘐嘵嚣嚻囂婋宯宵庨彇憢揱撨枭枵梟櫹歊毊消潇瀟灱灲烋焇猇獢痚痟硝硣穘窙箫簘簫綃绡翛肖膮萧蕭藃虈虓蛸蟂蟏蟰蠨踃逍銷销霄颵驍骁髇髐魈鴞鴵鷍鸮崤殽洨淆訤誵郩小晓暁曉皛皢筱筿篠謏俲傚効咲哮啸嘋嘨嘯孝恔效敩斅斆校歗涍熽笑詨誟些娎揳楔歇猲蝎蠍偕劦勰协協嗋嚡垥奊孈峫恊愶拹挟挾携撷擕擷攜斜旪熁燲瑎絜綊緳縀缬翓胁脅脇脋膎蝢衺襭諧讗谐邪鞋鞵龤写冩寫藛血亵伳偞偰僁卨卸噧塮夑媟屑屟屧嶰廨徢懈暬械榍榭泄泻洩渫澥瀉瀣灺炧炨烲焎燮爕獬祄禼糏紲絏絬緤繲纈绁缷薢薤蟹蠏褉褻謝谢躞邂靾鞢韰齂齘齛齥俽噷噺妡嬜廞心忄忻惞新昕杺欣歆盺芯薪訢辛邤鈊鋅鑫锌馨馫枔襑鐔镡伈伩信囟孞炘焮脪舋衅訫軐釁阠顖馸垶惺星曐煋猩瑆皨箵篂腥興觪觲謃騂骍鮏鯹侀刑哘型娙形洐滎硎荥蛵行邢郉鈃鉶銒鋞钘铏陉陘餳饧擤睲醒倖兴姓婞嬹幸性悻杏涬緈臖荇莕葕兄兇凶匂匈哅忷恟汹洶胷胸芎訩詾讻賯熊熋雄焸焽夐敻詗诇休俢修咻庥樇烌羞脙脩臹貅銝鎀鏅飍饈馐髤髹鮴鱃鵂鸺苬朽滫潃糔嗅嚊岫峀溴珛琇璓秀綉繍繡绣螑袖褎褏銹鏥鏽锈齅偦吁嘘噓圩墟媭嬃戌揟旴楈欨欻歔歘燸疞盱砉綇縃胥蕦虗虚虛蝑裇訏許諝譃谞鑐需須须顼驉鬚魆魖俆冔徐禑蒣呴喣姁暊栩湑珝盨稰糈詡諿许诩鄦醑伵侐勖勗卹叙垿壻婿序怴恤慉敍敘旭昫晇朂槒欰殈汿沀洫溆漵潊烅烼煦獝珬盢瞁稸絮続緒緖續绪续聓聟芧蓄蓿藇藚訹賉酗銊頊鱮儇吅喧塇媗宣弲愃愋懁揎昍晅暄梋煊瑄睻矎禤箮翧翾萱萲蓒蕿藼蘐蝖蠉諠諼譞谖軒轩鋗鍹鞙駽鰚嫙悬懸旋暶檈漩玄玹琁璇璿痃蜁咺暅烜癣癬选選怰昡楥楦泫渲炫琄眩眴碹絢縼繏绚蔙衒袨贙鉉鏇铉镟颴疶蒆薛辥辪靴鞾乴壆学學峃嶨斈泶澩燢穴茓袕觷踅鷽鸴樰膤艝轌雪鱈鳕吷坹岤桖瀥狘瞲謔谑趐勋勛勲勳嚑坃埙塤壎壦曛焄熏燻爋獯矄纁臐薫薰蘍醺偱噚姰寻尋峋巡廵循恂揗攳旬杊栒桪樳毥洵浔潯灥燅燖珣璕畃紃荀蟳詢询郇鄩駨鱏鱘鲟伨侚卂噀奞巺巽徇愻殉殾汛潠狥稄蕈訊訓訙训讯迅迿逊遜鑂顨馴驯丫压吖呀圧垭壓孲庘押枒桠椏錏鐚铔鴉鴨鵶鸦鸭伢厑厓堐岈崕崖涯漄牙猚琊睚笌芽蚜衙齖厊哑唖啞庌疨痖瘂蕥雅亚亜亞俹冴劜圔圠埡娅婭挜掗揠氩氬犽猰玡砑稏窫聐襾覀訝讶軋轧迓齾傿剦嫣嬮崦嶖恹懕懨樮歅淊淹渰湮漹烟焉焑煙珚硽篶胭臙菸鄢醃閹阉黫严厳啱喦嚴埏塩壛壧妍姸娫娮岩嵒嵓巌巖巗延揅昖楌檐櫩欕沿炎炏狿琂盐研硏碞礹筵簷綖莚蔅虤蜒言訁訮詽讠郔閆閻闫阎顏顔颜鹽麣乵俨偃儼兖兗剡匽厣厴噞夵奄孍嵃巘巚弇愝戭扊抁掩揜曮棪椼檿沇渷演琰甗眼縯罨萒蝘衍裺褗躽遃郾酓隒顩魇魘鰋鶠黡黤黬黭黶鼴鼹齴龑偐厌厭咽唁喭嚈嚥囐堰墕妟姲嬊嬿宴彥彦敥晏暥曕曣椻溎滟灎灔灧灩烻焔焰焱熖燄燕爓牪猒砚硯艳艶艷覎觃觾諺讌讞谚谳豓豔贋贗赝軅酀酽醶醼釅隁雁餍饜騐験騴驗驠验鬳鳫鴈鴳鷃鷰齞央姎抰殃泱眏秧胦鉠鍈雵鞅鴦鸯佯劷垟崵崸徉扬揚敭旸昜暘杨楊氜洋炀烊煬珜疡瘍眻羊羏蛘諹輰鍚钖阦阳陽霷颺飏鰑鴹鸉仰佒傟养卬咉坱岟慃懩攁柍楧氧氱瀁炴痒癢礢紻蝆軮飬養駚怏恙样様樣漾羕詇吆喓夭妖幺楆殀祅腰葽訞邀鴁鴢倄傜嗂垚堯姚媱尧尭峣嶢嶤徭愮揺搖摇摿暚榣滧烑爻猺珧瑤瑶磘窑窯窰繇肴蘨謠謡谣軺轺遙遥邎鎐顤颻飖餆餚鰩鱙鳐仸偠咬婹宎岆崾抭杳枖柼榚溔狕眑窅窈舀苭蓔闄騕鷕齩曜熎燿獟矅穾窔筄纅耀艞药葯薬藥袎要覞詏讑靿鷂鹞鼼倻吔噎擨暍椰歋潱蠮捓揶爷爺瑘耶釾鋣鎁铘也冶嘢埜壄漜野业亱僷叶墷夜嶪嶫抴捙掖擛擪擫晔曄曅曗曳曵枼枽業殗洂液澲烨煠燁爗璍皣瞱瞸礏腋葉謁谒邺鄴鍱鎑鐷靥靨頁页餣饁馌驜鵺鸈亪一乊伊依医吚咿噫壱壹夁嫛嬄弌悘揖撎檹毉洢渏漪猗瑿畩祎禕稦繄蛜衣衤譩辷郼醫銥铱鷖鹥黟黳乁仪侇儀冝匜咦圯夷姨媐宐宜宧寲峓嶬嶷巸彛彜彝彞怡恞扅拸暆杝柂栘桋椬椸沂沶洟熪狋珆瓵疑痍眙移簃籎羠胰荑萓蛦螔袘觺詒誃謻讉诒貽贻跠迻遗遺鏔頉頤頥顊颐飴饴鮧鴺乙乛以佁倚偯嬟崺已庡扆攺敼旑旖椅檥矣礒笖舣艤苡苢蚁螘蟻裿輢轙迆迤迱逘酏釔鈘鉯钇顗鳦齮乂义亄亦亿仡伇伿佚佾俋億兿刈劓劮勚勩匇呓呭呹唈嗌囈圛坄垼埶埸墿奕嫕嬑寱屹峄嶧帟帠幆廙异弈弋役忆忔怈怿悒悥意憶懌懿抑挹敡斁易晹曀曎杙枍枻栧棭榏槸檍欭歝殔殪殹毅泆浂浥浳湙溢潩澺瀷炈焲熠熤熼燚燡燱獈玴異疫痬瘗瘞瘱癔益睪瞖秇穓竩篒縊繶繹绎缢羛義羿翊翌翳翼耴肄肊膉臆艗艺芅苅萟蓺薏藙藝蘙虉蛡蜴螠衪袣裔裛褹襼訲訳詍詣誼譯議讛议译诣谊豙豛豷貖貤贀跇軼轶逸邑鄓醳醷釴鈠鎰鐿镒镱阣隿霬饐駅驛驿骮鮨鯣鶂鶃鶍鷁鷊鷧鷾鸃鹝鹢黓齸弬侌凐喑噾囙因垔堙姻婣愔慇栶殷氤洇溵濦瘖磤禋秵筃絪緸茵荫蒑蔭裀諲銦铟闉阥阴陰陻隂霒霠鞇音韾駰骃齗乑冘吟噖嚚圁垠夤婬寅峾崟崯斦檭殥泿淫滛烎犾狺珢璌碒荶蔩蟫訔訚訡誾鄞鈝銀银霪鷣齦龂龈吲尹嶾廴引朄檃檼櫽淾濥瘾癮粌蘟蚓螾讔赺趛輑鈏隐隠隱靷飮飲饮印垽堷廕慭憖憗懚洕湚猌癊窨胤茚酳鮣偀嘤噟嚶婴媖嫈嬰孆孾应応愥應撄攖朠桜樱櫻渶瀴煐珱瑛璎瓔甇甖碤礯緓纓绬缨罂罃罌膺英莺蘡蝧蠳褮譍譻賏軈鑍锳霙韺鴬鶑鶧鶯鷪鷹鸎鸚鹦鹰僌営塋嬴巆攍楹櫿溁溋滢潆濙濚濴瀅瀛瀠瀯灐灜熒營瑩盁盈禜籝籯縈茔荧莹萤营萦萾蓥藀蛍蝇蝿螢蠅覮謍贏赢迎鎣巊廮影摬梬浧潁瘿癭矨穎郢鐛頴颍颕颖媵映暎硬膡鱦哟唷喲佣傭嗈噰墉壅嫞庸廱慵拥擁滽澭灉牅痈癕癰臃邕郺鄘鏞镛雍雝饔鱅鳙鷛喁顒颙鰫俑勇勈咏埇塎嵱彮怺恿悀惥愑愹慂柡栐永泳涌湧甬硧蛹詠踊踴鯒鲬用砽苚蒏醟优優呦嚘峳幽忧怮悠憂懮攸櫌泑浟滺瀀纋羪耰逌鄾麀偤尢尤庮怞怣楢沋油游犹猶猷由甴疣秞肬莜莸蕕蚰蝣訧輏輶逰遊邮郵鈾铀駀魷鮋鱿鲉丣卣友有栯梄槱湵牖牗禉羑聈苃莠蜏酉銪铕黝亴佑佦侑又右哊唀囿姷孧宥峟幼柚櫾牰狖祐蚴誘诱貁迶酭釉鼬唹扜扝淤瘀盓穻箊紆纡込迂迃陓乻予于亐伃余俞兪堣堬妤娛娯娱媀嬩崳嵎嵛愉愚扵揄於旟杅桙楡楰榆欤歈歟歶渔渝湡漁澞牏狳玗玙瑜璵盂睮禺窬竽籅羭腴臾舁舆艅茰萮萸蕍蘛虞虶蝓螸衧褕覦觎諛謣谀踰輿轝逾邘酑鍝隃隅雓雩餘馀騟骬髃魚魣鮽鯲鰅鱼鷠鸆齵与伛俁俣偊傴匬噳圄圉宇寙屿嶼庾懙挧敔斔斞楀瑀瘐祤禹穥窳羽與萭語语貐鄅雨頨麌齬龉俼僪儥喅喩喻圫域堉妪嫗寓峪嶎庽彧御忬悆惐愈慾戫昱棛棜棫櫲欎欝欥欲毓浴淢淯滪潏澦灪焴煜燏燠爩狱獄玉琙瘉癒矞砡硢硲礇礖礜禦秗稢稶篽籞籲粖緎罭聿肀育艈芋芌茟蒮蓣蓹蕷薁蘌蜟蜮袬裕誉諭譽谕豫軉輍逳遇遹郁醧鈺銉鋊錥鐭钰閾阈雤霱預预飫饇饫馭驈驭鬰鬱鬻魊鱊鳿鴥鴧鴪鵒鷸鸒鹆鹬冤剈囦嬽寃悁惌棩淵渁渆渊渕灁眢肙葾蒬蜎蜵裷駌鳶鴛鵷鸢鸳鹓鼘鼝元円原厡厵员員园圆圎園圓垣塬媴嫄援杬榞榬橼櫞沅湲源溒爰猨猿笎緣縁缘羱芫茒蒝薗蚖蝝蝯螈袁褤謜貟贠轅辕邍邧酛鈨鎱騵魭鶢鶰黿鼋盶薳远逺遠鋺傆噮垸夗妴媛怨愿掾瑗禐苑衏裫褑院願啘曰曱矱箹約约哕噦刖妜嬳岄岳嶽恱悅悦戉抈捳月樾泧瀹爚玥礿禴篗籆籥籰粤粵蘥蚎蚏越跀跃躍軏鈅鉞鑰钥钺閱閲阅鸑鸙黦龠龥奫晕暈氲氳煴熅蒀蒕蝹贇赟馧云伝勻匀囩妘愪抣昀橒沄涢溳澐熉畇眃秐筠筼篔紜縜纭耘耺芸蒷蕓郧鄖鋆雲允喗夽抎殒殞狁磒荺賱鈗阭陨隕霣馻齫齳傊孕恽惲愠慍枟熨緼縕缊腪蕰蕴薀藴蘊褞运運郓鄆酝醖醞韗韞韫韵韻餫匝咂帀扎拶桚沞臜臢迊鉔魳囃杂沯砸襍雑雜雥韴咋哉栽渽溨災灾烖甾畠睵賳宰崽傤儎再在扗洅縡載载酨兂橵簪簮糌鐕鐟鵤偺咱喒儧儹噆寁揝撍攅攒攢昝趱趲囋暂暫濽灒瓉瓒瓚禶襸讃讚賛贊赞蹔鄼錾鏨饡匨牂羘臧賍賘贓贜赃髒駔驵塟奘弉脏臓臟葬蔵銺傮糟蹧遭醩凿鑿早枣栆棗澡璅璪薻藻蚤唕唣喿噪慥梍灶煰燥皁皂竃竈簉艁譟趮躁造则則啧啫嘖嫧帻幘択择擇樍歵沢泎泽溭滜澤皟瞔矠礋箦簀舴蔶蠌襗諎謮責賾责赜迮鸅齚齰仄崱庂捑昃昗汄戝蠈賊贼鰂鱡鲗怎譖谮増增憎橧璔矰磳繒缯罾譄鄫鱛囎熷甑贈赠鋥锃鬵偧劄哳喳抯挓揸摣柤楂樝渣皶皻紥紮觰譇齄齇札牐箚耫蚻譗鍘铡閘闸霅厏拃眨砟鮓鮺鲊鲝乍吒咤宱搾栅榨溠灹炸痄蚱詐诈醡夈捚摘斋斎榸粂齋宅檡窄鉙债債寨瘵砦噡岾嶦惉旃旜枬栴毡氈氊沾瞻薝蛅詀詹譫谵趈邅閚霑飦饘驙魙鱣鳣鸇鹯讝嫸展崭嶃嶄搌斩斬榐橏琖盏盞輾辗醆颭飐佔偡僝占嶘战戦戰栈桟棧湛站綻绽菚蘸虥虦覱譧轏驏傽嫜张張彰慞暲樟漳獐璋章粻蔁蟑遧鄣鏱餦騿鱆麞仉幥掌涨漲礃丈仗墇嶂帐帳幛扙杖涱痮瘬瘴瞕粀胀脹賬账障佋妱巶招昭皽釗鉊鍣钊駋找沼爪爫瑵兆召垗旐曌枛棹櫂炤照燳狣瞾笊箌罀罩羄肁肇肈詔诏赵趙鮡嗻嫬遮厇哲啠喆嚞埑悊折摺晢晣歽矺砓磔籷粍虴蛰蜇蟄袩詟謫謺讁讋谪輒輙轍辄辙銸鮿乽者褶襵赭踷鍺锗柘樜浙淛蔗蟅这這鷓鹧侦偵嫃寊帧帪幀搸斟桢椹楨榛樼殝浈湞溱潧澵獉珍珎瑧甄眞真砧碪祯禎禛箴籈胗臻葴蒖蓁薽貞贞轃遉酙針鉁錱鍼针鱵姫屒弫抮昣枕畛疹眕稹紾縝縥缜聄萙袗裖覙診诊軫轸辴駗鬒黰侲圳塦挋振揕朕栚甽眹紖絼纼誫賑赈鋴鎭鎮镇阵陣震鴆鸩争佂凧埩姃媜峥崝崢征徰徴徵怔掙揁炡烝爭狰猙癥眐睁睜筝箏篜糽聇脀蒸踭鉦錚鏳钲铮鬇愸抍拯掟撜整晸氶塣幁挣政正症証諍證证诤郑鄭靕鴊之倁卮吱巵憄搘支枝栀栺梔椥榰汁汥泜疷知祗祬秓稙綕織织肢胑胝脂臸芝蘵蜘衼隻馶鳷鴲鼅侄値值埴執妷姪嬂慹戠执摭植樴殖淔漐潪犆瓡直禃絷縶聀职職膱蟙跖踯蹠躑軄釞馽凪劧只咫址坁坧墌夂帋恉扺抧指旨枳止汦沚洔淽疻砋祇祉秖紙纸芷茋藢衹襧訨趾軹轵酯阯黹乿俧偫傂儨制剬劕厔垁墆娡寘峙崻帙帜幟庢庤廌彘徏徝志忮懥懫扻挃挚掷搱摨摯擲擳旘晊智柣栉桎梽櫍櫛歭治洷滍滞滯潌瀄炙熫狾猘璏瓆畤疐痓痔痣瘈礩祑秩秷稚稺穉窒筫紩緻置翐膣至致芖蛭袟袠製覟觗觯觶誌豑豒豸貭質贄质贽跱踬躓輊轾迣郅銍鋕鑕铚锧陟隲雉駤騭騺驇骘鯯鴙鷙鸷中伀刣妐幒彸忠柊汷泈炂盅籦終终舯蔠蜙螤螽衳衷蹱鈡銿鍾鐘钟锺鴤鼨冢喠塚尰徸歱煄瘇种種肿腫踵仲众偅堹妕媑狆眾祌筗茽蚛衆衶諥重侜周啁喌嚋婤州徟洲淍炿烐珘盩矪粥舟謅譸诌诪賙赒輈輖辀週郮銂霌駲騆鵃鸼妯碡軸轴帚晭疛睭箒肘菷鯞伷僽冑呪咒咮噣宙昼晝甃皱皺籀籒籕粙紂縐纣绉胄荮葤詋酎駎驟骤侏朱株槠橥櫧櫫洙潴瀦猪珠硃秼絑茱蕏藸蛛蝫蠩袾誅諸诛诸豬跦邾銖铢駯鮢鯺鴸鼄劚孎斸曯欘灟炢烛燭爥瘃窋竹竺笁笜篴舳茿蓫蠋蠾躅逐逫钃鱁丶主劯嘱囑宔帾拄渚濐煑煮燝瞩矚罜褚詝陼鸀麈乼伫佇住助坾墸壴嵀拀杼柱柷樦殶注炷疰眝砫祝祩竚筑筯箸築篫簗紵紸纻羜翥苎苧莇著蛀註貯贮跓軴迬鉒鋳鑄铸飳馵駐驻麆抓撾檛簻膼髽跩拽专叀塼嫥専專瑼甎砖磗磚膞蟤諯鄟顓颛鱄孨竱轉转僎啭囀堟撰灷瑑篆篹籑縳腞蒃襈譔賺赚転饌馔妆妝娤庄庒桩梉樁湷粧糚荘莊装裝壮壯壵撞焋状狀椎追錐锥隹騅骓鵻沝坠墜娷惴甀畷硾礈笍綴縋缀缒腏膇諈贅赘醊錣鑆啍宒窀肫衠諄谆迍准凖埻準綧稕訰倬拙捉桌梲棁棳槕涿炪焯穛穱窧鐯丵劅卓叕啄啅圴妰娺彴撯擆擢斀斫斮斱斲斵晫椓櫡汋浊浞濁濯灂灼烵犳琢琸着硺禚窡篧籗籱罬茁蠗蠿諁諑謶诼酌鋜鐲镯鵫鷟兹呲咨嗞姕姿孖孜孳孶崰嵫栥椔淄湽滋澬玆禌秶稵粢紎緇緕纃缁茊茲菑葘觜訾諮谘貲資赀资赼趑趦輜輺辎鄑鈭錙鍿鎡锱镃頾頿髭鯔鰦鲻鶅鼒齍齜龇蓻仔吇呰啙姉姊子杍梓榟橴滓矷秄秭笫籽紫耔胏茈虸訿釨倳剚字恣渍漬牸眥眦胔胾自芓茡荢嗭倧堫宗嵏嵕惾朡棕椶熧猣磫稯綜緃緵繌综翪腙葼蝬豵踨踪蹤鍐鑁騌騣骔鬃鬉鬷鯮鯼倊偬傯嵸总惣捴揔搃摠焧燪総緫縂總蓗昮猔疭瘲碂粽糉糭縦縱纵掫棷棸箃緅菆諏诹邹郰鄒鄹陬騶驺鯫鲰黀齱齺走赱鯐奏揍租菹葅蒩卆卒哫崒崪族椊箤足踤鏃镞俎唨爼珇祖組组詛诅鎺阻靻劗躜躦鉆鑚鑽钻籫繤纂纉纘缵攥厜嗺樶纗蟕嘴噿嶊璻冣嶵晬最栬槜檇檌祽稡絊罪蕞辠酔酻醉鋷錊噂墫尊嶟樽繜罇遵鐏鱒鳟鶎鷷僔撙譐捘銌嘬穝捽昨秨稓笮筰苲莋鈼佐左繓作侳做唑坐岝岞座怍柞祚糳胙葃葄蓙袏酢阼飵咗龦龧龨龩龪龫龬龭龮龯龰龱龲龳龴龵龶龷龸龹龺龻龼龽龾龿鿀鿁鿂鿃鿄鿅鿆鿇鿈鿉鿊鿋鿌鿍鿎鿏鿐"; +export const CODE_INDEX = {}; +for (let i = 0; i < codes.length; i++) { + CODE_INDEX[codes[i]] = i; +} diff --git a/src/widget/date/calendar/popup.month.js b/src/widget/date/calendar/popup.month.js index 32c3b6f5a..9a989ecdd 100644 --- a/src/widget/date/calendar/popup.month.js +++ b/src/widget/date/calendar/popup.month.js @@ -13,7 +13,8 @@ import { contains, getDate, LogicFactory, - parseInt + parseInt, + SIZE_CONSANTS } from "@/core"; /** @@ -58,7 +59,7 @@ export class MonthPopup extends Widget { columns: 2, rows: 6, columnSize: [1 / 2, 1 / 2], - rowSize: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + rowSize: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, } ) ), @@ -100,7 +101,7 @@ export class MonthPopup extends Widget { whiteSpace: "nowrap", once: false, forceSelected: true, - height: toPix(BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, 1), + height: toPix(SIZE_CONSANTS.LIST_ITEM_HEIGHT, 1), width: 30, value: td, text: td, diff --git a/src/widget/downlist/item.downlist.js b/src/widget/downlist/item.downlist.js index 2adf328c1..8a222f980 100644 --- a/src/widget/downlist/item.downlist.js +++ b/src/widget/downlist/item.downlist.js @@ -1,5 +1,5 @@ import { Label, Icon, BasicButton } from "@/base"; -import { CenterAdaptLayout, shortcut, extend, createWidget, isPlainObject, LogicFactory, Direction } from "@/core"; +import { CenterAdaptLayout, shortcut, extend, createWidget, isPlainObject, LogicFactory, Direction, SIZE_CONSANTS } from "@/core"; @shortcut() export class DownListItem extends BasicButton { @@ -13,7 +13,7 @@ export class DownListItem extends BasicButton { return extend(conf, { baseCls: "bi-down-list-item bi-list-item-active", cls: "", - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, logic: { dynamic: true, }, diff --git a/src/widget/downlist/popup.downlist.js b/src/widget/downlist/popup.downlist.js index 984e78273..b598ea65d 100644 --- a/src/widget/downlist/popup.downlist.js +++ b/src/widget/downlist/popup.downlist.js @@ -14,7 +14,9 @@ import { isNotEmptyString, isNotEmptyArray, some, - deepClone + deepClone, + SIZE_CONSANTS, + BlankSplitChar } from "@/core"; import { DownListGroup } from "./group.downlist"; @@ -129,7 +131,7 @@ export class DownListPopup extends Pane { item.el.logic = { dynamic: true, }; - item.el.height = sourceItem.el.height || BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT; + item.el.height = sourceItem.el.height || SIZE_CONSANTS.LIST_ITEM_HEIGHT; item.el.iconCls2 = this.constants.nextIcon; item.popup = { lgap: 1, @@ -226,7 +228,7 @@ export class DownListPopup extends Pane { } _createChildValue(fatherValue, childValue) { - return fatherValue + BI.BlankSplitChar + childValue; + return fatherValue + BlankSplitChar + childValue; } _digest(valueItem) { diff --git a/src/widget/dynamicdate/dynamicdate.card.js b/src/widget/dynamicdate/dynamicdate.card.js index e70d2bdd1..9ea322d12 100644 --- a/src/widget/dynamicdate/dynamicdate.card.js +++ b/src/widget/dynamicdate/dynamicdate.card.js @@ -17,7 +17,8 @@ import { isNull, isNotEmptyString, parseDateTime, - any + any, + SIZE_CONSANTS } from "@/core"; import { Label, ButtonGroup, Bubbles } from "@/base"; import { MultiSelectItem, TextValueCombo } from "@/case"; @@ -246,7 +247,7 @@ export class DynamicDateCard extends Widget { comboItems[0].text = i18nText("BI-Basic_Empty"); items.push({ type: TextValueCombo.xtype, - height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + height: SIZE_CONSANTS.TOOL_BAR_HEIGHT, items: comboItems, container: null, value: positionValue || DynamicDateCard.OFFSET.CURRENT, @@ -272,7 +273,7 @@ export class DynamicDateCard extends Widget { ) { items.push({ type: TextValueCombo.xtype, - height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + height: SIZE_CONSANTS.TOOL_BAR_HEIGHT, container: null, items: this._getText(last(values).dateType), value: positionValue || DynamicDateCard.OFFSET.CURRENT, @@ -305,67 +306,67 @@ export class DynamicDateCard extends Widget { _getText(lastValue) { switch (lastValue) { - case DynamicDateCard.TYPE.YEAR: - return [ - { - text: i18nText("BI-Basic_Current_Day"), - value: DynamicDateCard.OFFSET.CURRENT, - }, - { - text: i18nText("BI-Basic_Year_Begin"), - value: DynamicDateCard.OFFSET.BEGIN, - }, - { - text: i18nText("BI-Basic_Year_End"), - value: DynamicDateCard.OFFSET.END, - } - ]; - case DynamicDateCard.TYPE.QUARTER: - return [ - { - text: i18nText("BI-Basic_Current_Day"), - value: DynamicDateCard.OFFSET.CURRENT, - }, - { - text: i18nText("BI-Basic_Quarter_Begin"), - value: DynamicDateCard.OFFSET.BEGIN, - }, - { - text: i18nText("BI-Basic_Quarter_End"), - value: DynamicDateCard.OFFSET.END, - } - ]; - case DynamicDateCard.TYPE.MONTH: - return [ - { - text: i18nText("BI-Basic_Current_Day"), - value: DynamicDateCard.OFFSET.CURRENT, - }, - { - text: i18nText("BI-Basic_Month_Begin"), - value: DynamicDateCard.OFFSET.BEGIN, - }, - { - text: i18nText("BI-Basic_Month_End"), - value: DynamicDateCard.OFFSET.END, - } - ]; - case DynamicDateCard.TYPE.WEEK: - default: - return [ - { - text: i18nText("BI-Basic_Current_Day"), - value: DynamicDateCard.OFFSET.CURRENT, - }, - { - text: i18nText("BI-Basic_Week_Begin"), - value: DynamicDateCard.OFFSET.BEGIN, - }, - { - text: i18nText("BI-Basic_Week_End"), - value: DynamicDateCard.OFFSET.END, - } - ]; + case DynamicDateCard.TYPE.YEAR: + return [ + { + text: i18nText("BI-Basic_Current_Day"), + value: DynamicDateCard.OFFSET.CURRENT, + }, + { + text: i18nText("BI-Basic_Year_Begin"), + value: DynamicDateCard.OFFSET.BEGIN, + }, + { + text: i18nText("BI-Basic_Year_End"), + value: DynamicDateCard.OFFSET.END, + } + ]; + case DynamicDateCard.TYPE.QUARTER: + return [ + { + text: i18nText("BI-Basic_Current_Day"), + value: DynamicDateCard.OFFSET.CURRENT, + }, + { + text: i18nText("BI-Basic_Quarter_Begin"), + value: DynamicDateCard.OFFSET.BEGIN, + }, + { + text: i18nText("BI-Basic_Quarter_End"), + value: DynamicDateCard.OFFSET.END, + } + ]; + case DynamicDateCard.TYPE.MONTH: + return [ + { + text: i18nText("BI-Basic_Current_Day"), + value: DynamicDateCard.OFFSET.CURRENT, + }, + { + text: i18nText("BI-Basic_Month_Begin"), + value: DynamicDateCard.OFFSET.BEGIN, + }, + { + text: i18nText("BI-Basic_Month_End"), + value: DynamicDateCard.OFFSET.END, + } + ]; + case DynamicDateCard.TYPE.WEEK: + default: + return [ + { + text: i18nText("BI-Basic_Current_Day"), + value: DynamicDateCard.OFFSET.CURRENT, + }, + { + text: i18nText("BI-Basic_Week_Begin"), + value: DynamicDateCard.OFFSET.BEGIN, + }, + { + text: i18nText("BI-Basic_Week_End"), + value: DynamicDateCard.OFFSET.END, + } + ]; } } @@ -380,26 +381,26 @@ export class DynamicDateCard extends Widget { _digestDateTypeValue(value) { const valueMap = {}; switch (value.dateType) { - case DynamicDateCard.TYPE.YEAR: - valueMap.year = value.offset === 0 ? -value.value : +value.value; - break; - case DynamicDateCard.TYPE.QUARTER: - valueMap.quarter = value.offset === 0 ? -value.value : +value.value; - break; - case DynamicDateCard.TYPE.MONTH: - valueMap.month = value.offset === 0 ? -value.value : +value.value; - break; - case DynamicDateCard.TYPE.WEEK: - valueMap.week = value.offset === 0 ? -value.value : +value.value; - break; - case DynamicDateCard.TYPE.DAY: - valueMap.day = value.offset === 0 ? -value.value : +value.value; - break; - case DynamicDateCard.TYPE.WORK_DAY: - valueMap.workDay = value.offset === 0 ? -value.value : +value.value; - break; - default: - break; + case DynamicDateCard.TYPE.YEAR: + valueMap.year = value.offset === 0 ? -value.value : +value.value; + break; + case DynamicDateCard.TYPE.QUARTER: + valueMap.quarter = value.offset === 0 ? -value.value : +value.value; + break; + case DynamicDateCard.TYPE.MONTH: + valueMap.month = value.offset === 0 ? -value.value : +value.value; + break; + case DynamicDateCard.TYPE.WEEK: + valueMap.week = value.offset === 0 ? -value.value : +value.value; + break; + case DynamicDateCard.TYPE.DAY: + valueMap.day = value.offset === 0 ? -value.value : +value.value; + break; + case DynamicDateCard.TYPE.WORK_DAY: + valueMap.workDay = value.offset === 0 ? -value.value : +value.value; + break; + default: + break; } if (isNull(value.dateType)) { valueMap.position = this.position || DynamicDateCard.OFFSET.CURRENT; diff --git a/src/widget/dynamicdate/dynamicdate.param.item.js b/src/widget/dynamicdate/dynamicdate.param.item.js index 3ab6561dd..26dd9f22c 100644 --- a/src/widget/dynamicdate/dynamicdate.param.item.js +++ b/src/widget/dynamicdate/dynamicdate.param.item.js @@ -1,4 +1,4 @@ -import { HTapeLayout, shortcut, Widget, toPix, isNaturalNumber, i18nText } from "@/core"; +import { HTapeLayout, shortcut, Widget, toPix, isNaturalNumber, i18nText, SIZE_CONSANTS } from "@/core"; import { SignEditor, TextValueCombo } from "@/case"; import { Label } from "@/base"; import { DynamicDateCard } from "./dynamicdate.card"; @@ -19,7 +19,7 @@ export class DynamicDateParamItem extends Widget { }, value: 0, offset: 0, - height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + height: SIZE_CONSANTS.TOOL_BAR_HEIGHT, }; } @@ -33,7 +33,7 @@ export class DynamicDateParamItem extends Widget { el: { type: SignEditor.xtype, cls: "bi-border bi-focus-shadow bi-border-radius", - height: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 2), + height: toPix(SIZE_CONSANTS.TOOL_BAR_HEIGHT, 2), validationChecker(v) { return isNaturalNumber(v); }, @@ -65,14 +65,14 @@ export class DynamicDateParamItem extends Widget { { el: { type: Label.xtype, - height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + height: SIZE_CONSANTS.TOOL_BAR_HEIGHT, text: this._getText(), }, width: o.dateType === DynamicDateCard.TYPE.WORK_DAY ? 60 : 20, }, { type: TextValueCombo.xtype, - height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + height: SIZE_CONSANTS.TOOL_BAR_HEIGHT, items: [ { text: i18nText("BI-Basic_Front"), @@ -104,25 +104,25 @@ export class DynamicDateParamItem extends Widget { _getText() { let text = ""; switch (this.options.dateType) { - case DynamicDateCard.TYPE.YEAR: - text = i18nText("BI-Basic_Year"); - break; - case DynamicDateCard.TYPE.QUARTER: - text = i18nText("BI-Basic_Single_Quarter"); - break; - case DynamicDateCard.TYPE.MONTH: - text = i18nText("BI-Basic_Month"); - break; - case DynamicDateCard.TYPE.WEEK: - text = i18nText("BI-Basic_Week"); - break; - case DynamicDateCard.TYPE.DAY: - text = i18nText("BI-Basic_Day"); - break; - case DynamicDateCard.TYPE.WORK_DAY: - default: - text = i18nText("BI-Basic_Work_Day"); - break; + case DynamicDateCard.TYPE.YEAR: + text = i18nText("BI-Basic_Year"); + break; + case DynamicDateCard.TYPE.QUARTER: + text = i18nText("BI-Basic_Single_Quarter"); + break; + case DynamicDateCard.TYPE.MONTH: + text = i18nText("BI-Basic_Month"); + break; + case DynamicDateCard.TYPE.WEEK: + text = i18nText("BI-Basic_Week"); + break; + case DynamicDateCard.TYPE.DAY: + text = i18nText("BI-Basic_Day"); + break; + case DynamicDateCard.TYPE.WORK_DAY: + default: + text = i18nText("BI-Basic_Work_Day"); + break; } return text; diff --git a/src/widget/dynamicdate/dynamicdate.popup.js b/src/widget/dynamicdate/dynamicdate.popup.js index 253c4a210..907303d1e 100644 --- a/src/widget/dynamicdate/dynamicdate.popup.js +++ b/src/widget/dynamicdate/dynamicdate.popup.js @@ -12,7 +12,8 @@ import { isEmptyString, getDate, checkDateVoid, - print + print, + SIZE_CONSANTS } from "@/core"; import { TextButton, Tab } from "@/base"; import { LinearSegment } from "@/case"; @@ -64,7 +65,7 @@ export class DynamicDatePopup extends Widget { cls: "bi-high-light bi-split-top", shadow: true, text: i18nText("BI-Basic_Clear"), - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + textHeight: toPix(SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), listeners: [ { eventName: TextButton.EVENT_CHANGE, @@ -78,7 +79,7 @@ export class DynamicDatePopup extends Widget { type: TextButton.xtype, cls: "bi-split-left bi-split-right bi-high-light bi-split-top", shadow: true, - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + textHeight: toPix(SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), text: i18nText("BI-Multi_Date_Today"), disabled: this._checkTodayValid(), ref: _ref => { @@ -96,7 +97,7 @@ export class DynamicDatePopup extends Widget { { type: TextButton.xtype, cls: "bi-high-light bi-split-top", - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + textHeight: toPix(SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), shadow: true, text: i18nText("BI-Basic_OK"), listeners: [ @@ -116,7 +117,7 @@ export class DynamicDatePopup extends Widget { } ] ], - height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + height: SIZE_CONSANTS.TOOL_BAR_HEIGHT, }, } ], diff --git a/src/widget/dynamicdatetime/dynamicdatetime.popup.js b/src/widget/dynamicdatetime/dynamicdatetime.popup.js index a5f184e0c..6668ca462 100644 --- a/src/widget/dynamicdatetime/dynamicdatetime.popup.js +++ b/src/widget/dynamicdatetime/dynamicdatetime.popup.js @@ -13,7 +13,8 @@ import { isEmptyString, getDate, checkDateVoid, - extend + extend, + SIZE_CONSANTS } from "@/core"; import { TextButton, Tab } from "@/base"; import { LinearSegment } from "@/case"; @@ -64,7 +65,7 @@ export class DynamicDateTimePopup extends Widget { { type: TextButton.xtype, cls: "bi-high-light bi-split-top", - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + textHeight: toPix(SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), shadow: true, text: i18nText("BI-Basic_Clear"), listeners: [ @@ -79,7 +80,7 @@ export class DynamicDateTimePopup extends Widget { { type: TextButton.xtype, cls: "bi-split-left bi-split-right bi-high-light bi-split-top", - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + textHeight: toPix(SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), shadow: true, text: i18nText("BI-Multi_Date_Today"), disabled: this._checkTodayValid(), @@ -98,7 +99,7 @@ export class DynamicDateTimePopup extends Widget { { type: TextButton.xtype, cls: "bi-high-light bi-split-top", - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + textHeight: toPix(SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), shadow: true, text: i18nText("BI-Basic_OK"), listeners: [ @@ -118,7 +119,7 @@ export class DynamicDateTimePopup extends Widget { } ] ], - height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + height: SIZE_CONSANTS.TOOL_BAR_HEIGHT, }, } ], @@ -160,58 +161,58 @@ export class DynamicDateTimePopup extends Widget { }, cardCreator: v => { switch (v) { - case DynamicDateCombo.Dynamic: - return { - type: DynamicDateCard.xtype, - cls: "dynamic-date-pane", - listeners: [ - { - eventName: "EVENT_CHANGE", - action: () => { - this._setInnerValue(this.year, v); - }, - } - ], - ref: _ref => { - this.dynamicPane = _ref; - }, - min: this.options.min, - max: this.options.max, - }; - case DynamicDateCombo.Static: - default: - return { - type: VerticalLayout.xtype, - items: [ - { - type: DateCalendarPopup.xtype, - behaviors: o.behaviors, - min: this.options.min, - max: this.options.max, - ref: _ref => { - this.ymd = _ref; - }, - listeners: [ - { - eventName: DateCalendarPopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, - action: () => { - this.fireEvent(DynamicDateTimePopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); - }, - } - ], + case DynamicDateCombo.Dynamic: + return { + type: DynamicDateCard.xtype, + cls: "dynamic-date-pane", + listeners: [ + { + eventName: "EVENT_CHANGE", + action: () => { + this._setInnerValue(this.year, v); + }, + } + ], + ref: _ref => { + this.dynamicPane = _ref; }, - { - el: { - type: DynamicDateTimeSelect.xtype, - cls: "bi-split-top", + min: this.options.min, + max: this.options.max, + }; + case DynamicDateCombo.Static: + default: + return { + type: VerticalLayout.xtype, + items: [ + { + type: DateCalendarPopup.xtype, + behaviors: o.behaviors, + min: this.options.min, + max: this.options.max, ref: _ref => { - this.timeSelect = _ref; + this.ymd = _ref; }, - height: 40, + listeners: [ + { + eventName: DateCalendarPopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, + action: () => { + this.fireEvent(DynamicDateTimePopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); + }, + } + ], }, - } - ], - }; + { + el: { + type: DynamicDateTimeSelect.xtype, + cls: "bi-split-top", + ref: _ref => { + this.timeSelect = _ref; + }, + height: 40, + }, + } + ], + }; } }, listeners: [ @@ -221,26 +222,26 @@ export class DynamicDateTimePopup extends Widget { const v = this.dateTab.getSelect(); const date = DynamicDateHelper.getCalculation(this.dynamicPane.getValue()); switch (v) { - case DynamicDateCombo.Static: - this.ymd.setValue({ - year: date.getFullYear(), - month: date.getMonth() + 1, - day: date.getDate(), - }); - this.timeSelect.setValue(); - this._setInnerValue(); - break; - case DynamicDateCombo.Dynamic: - default: - if (this.storeValue && this.storeValue.type === DynamicDateCombo.Dynamic) { - this.dynamicPane.setValue(this.storeValue.value); - } else { - this.dynamicPane.setValue({ - year: 0, + case DynamicDateCombo.Static: + this.ymd.setValue({ + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), }); - } - this._setInnerValue(); - break; + this.timeSelect.setValue(); + this._setInnerValue(); + break; + case DynamicDateCombo.Dynamic: + default: + if (this.storeValue && this.storeValue.type === DynamicDateCombo.Dynamic) { + this.dynamicPane.setValue(this.storeValue.value); + } else { + this.dynamicPane.setValue({ + year: 0, + }); + } + this._setInnerValue(); + break; } }, } @@ -292,32 +293,32 @@ export class DynamicDateTimePopup extends Widget { const value = v.value || v; this.dateTab.setSelect(type); switch (type) { - case DynamicDateCombo.Dynamic: - this.dynamicPane.setValue(value); - this._setInnerValue(); - break; - case DynamicDateCombo.Static: - default: - if (this._checkValueValid(value)) { - const date = getDate(); - this.ymd.setValue({ - year: date.getFullYear(), - month: date.getMonth() + 1, - day: date.getDate(), - }); - this.timeSelect.setValue(); - this.todayButton.setValue(i18nText("BI-Multi_Date_Today")); - } else { - this.ymd.setValue(value); - this.timeSelect.setValue({ - hour: value.hour, - minute: value.minute, - second: value.second, - }); - this.todayButton.setValue(i18nText("BI-Multi_Date_Today")); - } - this.todayButton.setEnable(!this._checkTodayValid()); - break; + case DynamicDateCombo.Dynamic: + this.dynamicPane.setValue(value); + this._setInnerValue(); + break; + case DynamicDateCombo.Static: + default: + if (this._checkValueValid(value)) { + const date = getDate(); + this.ymd.setValue({ + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), + }); + this.timeSelect.setValue(); + this.todayButton.setValue(i18nText("BI-Multi_Date_Today")); + } else { + this.ymd.setValue(value); + this.timeSelect.setValue({ + hour: value.hour, + minute: value.minute, + second: value.second, + }); + this.todayButton.setValue(i18nText("BI-Multi_Date_Today")); + } + this.todayButton.setEnable(!this._checkTodayValid()); + break; } } diff --git a/src/widget/dynamicdatetime/dynamicdatetime.timeselect.js b/src/widget/dynamicdatetime/dynamicdatetime.timeselect.js index 475092cb5..f67b2d59f 100644 --- a/src/widget/dynamicdatetime/dynamicdatetime.timeselect.js +++ b/src/widget/dynamicdatetime/dynamicdatetime.timeselect.js @@ -8,7 +8,8 @@ import { isNumeric, i18nText, isNull, - isEmptyString + isEmptyString, + SIZE_CONSANTS } from "@/core"; import { NumberEditor } from "../numbereditor/number.editor"; import { Label } from "@/base"; @@ -73,7 +74,7 @@ export class DynamicDateTimeSelect extends Widget { } ], width: 60, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, }, }, { @@ -118,7 +119,7 @@ export class DynamicDateTimeSelect extends Widget { } ], width: 60, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, }, { type: Label.xtype, @@ -152,7 +153,7 @@ export class DynamicDateTimeSelect extends Widget { } ], width: 60, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, } ], } @@ -186,29 +187,29 @@ export class DynamicDateTimeSelect extends Widget { let limit = 0; let value = `${v}`; switch (type) { - case DynamicDateTimeSelect.HOUR: - limit = 2; - break; - case DynamicDateTimeSelect.MINUTE: - limit = 5; - break; - default: - break; - } - if (value.length === 1 && parseInt(value) > limit) { - value = `0${value}`; - } - if (value.length === 2) { - switch (type) { case DynamicDateTimeSelect.HOUR: - this.hour.isEditing() && this.minute.focus(); + limit = 2; break; case DynamicDateTimeSelect.MINUTE: - this.minute.isEditing() && this.second.focus(); + limit = 5; break; - case DynamicDateTimeSelect.SECOND: default: break; + } + if (value.length === 1 && parseInt(value) > limit) { + value = `0${value}`; + } + if (value.length === 2) { + switch (type) { + case DynamicDateTimeSelect.HOUR: + this.hour.isEditing() && this.minute.focus(); + break; + case DynamicDateTimeSelect.MINUTE: + this.minute.isEditing() && this.second.focus(); + break; + case DynamicDateTimeSelect.SECOND: + default: + break; } } diff --git a/src/widget/multilayerdownlist/popup.downlist.js b/src/widget/multilayerdownlist/popup.downlist.js index edbd95dff..a55504ec0 100644 --- a/src/widget/multilayerdownlist/popup.downlist.js +++ b/src/widget/multilayerdownlist/popup.downlist.js @@ -16,7 +16,8 @@ import { isNotEmptyString, some, concat, - BlankSplitChar + BlankSplitChar, + SIZE_CONSANTS } from "@/core"; import { Pane, ButtonTree, ComboGroup } from "@/base"; import { DownListGroup, DownListGroupItem, DownListItem } from "../downlist"; @@ -135,7 +136,7 @@ export class MultiLayerDownListPopup extends Pane { item.el.logic = { dynamic: true, }; - item.el.height = sourceItem.el.height || BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT; + item.el.height = sourceItem.el.height || SIZE_CONSANTS.LIST_ITEM_HEIGHT; item.el.iconCls2 = self.constants.nextIcon; item.popup = { lgap: 1, @@ -222,7 +223,7 @@ export class MultiLayerDownListPopup extends Pane { if (isNotEmptyArray(child.children)) { item.type = DownListGroupItem.xtype; item.iconCls2 = self.constants.nextIcon; - item.height = child.height || BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT; + item.height = child.height || SIZE_CONSANTS.LIST_ITEM_HEIGHT; self._createChildren(item, child); } targetItem.items.push(item); diff --git a/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js b/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js index dc621d9e6..99751ce09 100644 --- a/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js +++ b/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js @@ -16,7 +16,8 @@ import { VerticalLayout, AdaptiveLayout, isNull, - isArray + isArray, + SIZE_CONSANTS } from "@/core"; import { Pane, CustomTree, Loader, ButtonTree } from "@/base"; import { BasicTreeNode, BasicTreeItem, TreeExpander } from "@/case"; @@ -58,7 +59,7 @@ export class MultiLayerSelectLevelTree extends Pane { const extend = { isFirstNode: i === 0, isLastNode: i === nodes.length - 1, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, }; node.layer = layer; if (!isKey(node.id)) { @@ -179,8 +180,7 @@ export class MultiLayerSelectLevelTree extends Pane { setValue(v) { // getValue依赖于storeValue, 那么不选的时候就不要更新storeValue了 - if (this.options.chooseType === Selection.None) { - } else { + if (this.options.chooseType !== Selection.None) { this.storeValue = v; this.tree.setValue(v); } diff --git a/src/widget/multilayerselecttree/multilayerselecttree.popup.js b/src/widget/multilayerselecttree/multilayerselecttree.popup.js index e16b341ff..d881277ee 100644 --- a/src/widget/multilayerselecttree/multilayerselecttree.popup.js +++ b/src/widget/multilayerselecttree/multilayerselecttree.popup.js @@ -1,4 +1,4 @@ -import { shortcut, Widget, extend, i18nText, emptyFn, createWidget, Controller, VerticalLayout, isArray } from "@/core"; +import { shortcut, Widget, extend, i18nText, emptyFn, createWidget, Controller, VerticalLayout, isArray, pixFormat } from "@/core"; import { MultiLayerSelectLevelTree } from "./multilayerselecttree.leveltree"; @shortcut() @@ -57,7 +57,7 @@ export class MultiLayerSelectTreePopup extends Widget { self.fireEvent(MultiLayerSelectTreePopup.EVENT_CHANGE); }); - this.tree.css("min-height", BI.pixFormat(o.minHeight - 10)); + this.tree.css("min-height", pixFormat(o.minHeight - 10)); } getValue() { diff --git a/src/widget/multilayerselecttree/multilayerselecttree.trigger.js b/src/widget/multilayerselecttree/multilayerselecttree.trigger.js index 3dc982964..14805eb12 100644 --- a/src/widget/multilayerselecttree/multilayerselecttree.trigger.js +++ b/src/widget/multilayerselecttree/multilayerselecttree.trigger.js @@ -47,7 +47,7 @@ export class MultiLayerSelectTreeTrigger extends Trigger { render() { const self = this, o = this.options; - if (o.itemsCreator === BI.emptyFn) { + if (o.itemsCreator === emptyFn) { this._initData(); } @@ -131,7 +131,7 @@ export class MultiLayerSelectTreeTrigger extends Trigger { }, onSearch(obj, callback) { const keyword = obj.keyword; - if (o.itemsCreator === BI.emptyFn) { + if (o.itemsCreator === emptyFn) { callback(self._getSearchItems(keyword)); o.allowInsertValue && self.popup.setKeyword(keyword); } else { diff --git a/src/widget/multilayersingletree/multilayersingletree.leveltree.js b/src/widget/multilayersingletree/multilayersingletree.leveltree.js index 96076ca70..d0073fdf2 100644 --- a/src/widget/multilayersingletree/multilayersingletree.leveltree.js +++ b/src/widget/multilayersingletree/multilayersingletree.leveltree.js @@ -16,7 +16,8 @@ import { VerticalLayout, AdaptiveLayout, isNull, - isArray + isArray, + SIZE_CONSANTS } from "@/core"; import { Pane, CustomTree, Loader, ButtonTree } from "@/base"; import { BasicTreeNode, BasicTreeItem, TreeExpander } from "@/case"; @@ -58,7 +59,7 @@ export class MultiLayerSingleLevelTree extends Pane { const extend = { isFirstNode: i === 0, isLastNode: i === nodes.length - 1, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, }; node.layer = layer; if (!isKey(node.id)) { diff --git a/src/widget/multilayersingletree/multilayersingletree.popup.js b/src/widget/multilayersingletree/multilayersingletree.popup.js index 760ad3743..990fb2a71 100644 --- a/src/widget/multilayersingletree/multilayersingletree.popup.js +++ b/src/widget/multilayersingletree/multilayersingletree.popup.js @@ -1,4 +1,4 @@ -import { shortcut, Widget, extend, i18nText, emptyFn, createWidget, Controller, VerticalLayout, isArray } from "@/core"; +import { shortcut, Widget, extend, i18nText, emptyFn, createWidget, Controller, VerticalLayout, isArray, pixFormat } from "@/core"; import { MultiLayerSingleLevelTree } from "./multilayersingletree.leveltree"; @shortcut() @@ -56,7 +56,7 @@ export class MultiLayerSingleTreePopup extends Widget { self.fireEvent(MultiLayerSingleTreePopup.EVENT_CHANGE); }); - this.tree.css("min-height", BI.pixFormat(o.minHeight - 10)); + this.tree.css("min-height", pixFormat(o.minHeight - 10)); } getValue() { diff --git a/src/widget/multilayersingletree/multilayersingletree.trigger.js b/src/widget/multilayersingletree/multilayersingletree.trigger.js index 51407adbd..c06846692 100644 --- a/src/widget/multilayersingletree/multilayersingletree.trigger.js +++ b/src/widget/multilayersingletree/multilayersingletree.trigger.js @@ -47,7 +47,7 @@ export class MultiLayerSingleTreeTrigger extends Trigger { render() { const self = this, o = this.options; - if (o.itemsCreator === BI.emptyFn) { + if (o.itemsCreator === emptyFn) { this._initData(); } @@ -131,7 +131,7 @@ export class MultiLayerSingleTreeTrigger extends Trigger { }, onSearch(obj, callback) { const keyword = obj.keyword; - if (o.itemsCreator === BI.emptyFn) { + if (o.itemsCreator === emptyFn) { callback(self._getSearchItems(keyword)); o.allowInsertValue && self.popup.setKeyword(keyword); } else { diff --git a/src/widget/multiselect/check/multiselect.check.pane.js b/src/widget/multiselect/check/multiselect.check.pane.js index 6bcbc1c93..8563504be 100644 --- a/src/widget/multiselect/check/multiselect.check.pane.js +++ b/src/widget/multiselect/check/multiselect.check.pane.js @@ -7,7 +7,8 @@ import { map, i18nText, VerticalAdaptLayout, - VTapeLayout + VTapeLayout, + Selection } from "@/core"; import { TextButton, Label } from "@/base"; import { DisplaySelectedList } from "./multiselect.display"; @@ -42,7 +43,7 @@ export class MultiSelectCheckPane extends Widget { op = extend(op || {}, { selectedValues: self.storeValue.value, }); - if (self.storeValue.type === BI.Selection.Multi) { + if (self.storeValue.type === Selection.Multi) { callback({ items: map(self.storeValue.value, (i, v) => { const txt = opts.valueFormatter(v) || v; diff --git a/src/widget/multiselect/multiselect.combo.js b/src/widget/multiselect/multiselect.combo.js index 7fded29b9..2c807beac 100644 --- a/src/widget/multiselect/multiselect.combo.js +++ b/src/widget/multiselect/multiselect.combo.js @@ -25,9 +25,13 @@ import { filter, contains, isNull, + SIZE_CONSANTS, + pushDistinct, + endWith, + BlankSplitChar } from "@/core"; import { Single, Combo } from "@/base"; -import { TriggerIconButton } from "@/case"; +import { TriggerIconButton, MultiSelectBar } from "@/case"; import { MultiSelectTrigger } from "./multiselect.trigger"; import { MultiSelectCheckSelectedSwitcher } from "./trigger/switcher.checkselected"; @@ -49,7 +53,7 @@ export class MultiSelectCombo extends Single { baseCls: "bi-multi-select-combo", itemsCreator: emptyFn, valueFormatter: emptyFn, - itemHeight: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + itemHeight: SIZE_CONSANTS.LIST_ITEM_HEIGHT, height: 24, allowEdit: true, }); @@ -68,12 +72,12 @@ export class MultiSelectCombo extends Single { function assertShowValue() { if (isKey(self._startValue)) { - if (self.storeValue.type === BI.Selection.All) { + if (self.storeValue.type === Selection.All) { remove(self.storeValue.value, self._startValue); self.storeValue.assist = self.storeValue.assist || []; - BI.pushDistinct(self.storeValue.assist, self._startValue); + pushDistinct(self.storeValue.assist, self._startValue); } else { - BI.pushDistinct(self.storeValue.value, self._startValue); + pushDistinct(self.storeValue.value, self._startValue); remove(self.storeValue.assist, self._startValue); } } @@ -100,7 +104,7 @@ export class MultiSelectCombo extends Single { left: 0, top: 0, right: 0, - bottom: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, }, }, valueFormatter: o.valueFormatter, @@ -125,12 +129,12 @@ export class MultiSelectCombo extends Single { self._setStartValue(""); self.fireEvent(MultiSelectCombo.EVENT_STOP); }); - this.trigger.on(MultiSelectTrigger.EVENT_SEARCHING, (keywords) => { + this.trigger.on(MultiSelectTrigger.EVENT_SEARCHING, keywords => { const lastKeyword = last(keywords); keywords = initial(keywords || []); if (keywords.length > 0) { self._joinKeywords(keywords, () => { - if (BI.endWith(lastKeyword, BI.BlankSplitChar)) { + if (endWith(lastKeyword, BlankSplitChar)) { self.combo.setValue(self.storeValue); assertShowValue(); self.combo.populate(); @@ -146,7 +150,7 @@ export class MultiSelectCombo extends Single { }); this.trigger.on(MultiSelectTrigger.EVENT_CHANGE, function (value, obj) { - if (obj instanceof BI.MultiSelectBar) { + if (obj instanceof MultiSelectBar) { self._joinAll(this.getValue(), () => { assertShowValue(); self.fireEvent(MultiSelectCombo.EVENT_CLICK_ITEM); @@ -209,7 +213,7 @@ export class MultiSelectCombo extends Single { self.setValue(); self._defaultState(); }, - }, + } ], itemsCreator: o.itemsCreator, itemHeight: o.itemHeight, @@ -270,7 +274,7 @@ export class MultiSelectCombo extends Single { left: 0, top: 0, right: 0, - bottom: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, }, }, valueFormatter: o.valueFormatter, @@ -286,7 +290,7 @@ export class MultiSelectCombo extends Single { this.updateSelectedValue(self.storeValue); }); - this.numberCounter.on(Events.VIEW, (b) => { + this.numberCounter.on(Events.VIEW, b => { nextTick(() => { // 自动调整宽度 self.trigger.refreshPlaceHolderWidth(b === true ? self.numberCounter.element.outerWidth() + 8 : 0); @@ -300,7 +304,7 @@ export class MultiSelectCombo extends Single { }); }); - this.trigger.element.click((e) => { + this.trigger.element.click(e => { if (self.trigger.element.find(e.target).length > 0) { self.numberCounter.hideView(); } @@ -331,7 +335,7 @@ export class MultiSelectCombo extends Single { right: o.height, top: 0, height: o.height, - }, + } ], }); } @@ -360,7 +364,7 @@ export class MultiSelectCombo extends Single { _assertValue(val) { val || (val = {}); - val.type || (val.type = BI.Selection.Multi); + val.type || (val.type = Selection.Multi); val.value || (val.value = []); } @@ -378,7 +382,7 @@ export class MultiSelectCombo extends Single { type: MultiSelectCombo.REQ_GET_ALL_DATA, keywords, }, - (ob) => { + ob => { const values = map(ob.items, "value"); digest(values); } @@ -388,8 +392,8 @@ export class MultiSelectCombo extends Single { const selectedMap = self._makeMap(items); each(keywords, (i, val) => { if (isNotNull(selectedMap[val])) { - self.storeValue.type === BI.Selection.Multi - ? BI.pushDistinct(self.storeValue.value, val) + self.storeValue.type === Selection.Multi + ? pushDistinct(self.storeValue.value, val) : remove(self.storeValue.value, val); } }); @@ -433,7 +437,7 @@ export class MultiSelectCombo extends Single { keywords: [this.trigger.getKey()], selectedValues: filter(this.storeValue.value, (_i, v) => !contains(res.value, v)), }, - (ob) => { + ob => { const items = map(ob.items, "value"); const selectedMap = self._makeMap(self.storeValue.value); const notSelectedMap = self._makeMap(res.value); @@ -476,7 +480,7 @@ export class MultiSelectCombo extends Single { const map = this._makeMap(this.storeValue.value); each(res.value, (i, v) => { if (!map[v]) { - BI.pushDistinct(self.storeValue.value, v); + pushDistinct(self.storeValue.value, v); remove(self.storeValue.assist, v); map[v] = v; } diff --git a/src/widget/multiselect/multiselect.combo.nobar.js b/src/widget/multiselect/multiselect.combo.nobar.js index f1df798ad..cc1a1196a 100644 --- a/src/widget/multiselect/multiselect.combo.nobar.js +++ b/src/widget/multiselect/multiselect.combo.nobar.js @@ -25,7 +25,10 @@ import { contains, isNull, pushDistinct, - Selection + Selection, + SIZE_CONSANTS, + endWith, + BlankSplitChar } from "@/core"; import { Single, Combo } from "@/base"; import { MultiSelectBar, TriggerIconButton } from "@/case"; @@ -51,7 +54,7 @@ export class MultiSelectNoBarCombo extends Single { baseCls: "bi-multi-select-combo-no-bar", itemsCreator: emptyFn, valueFormatter: emptyFn, - itemHeight: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + itemHeight: SIZE_CONSANTS.LIST_ITEM_HEIGHT, height: 24, }); } @@ -69,7 +72,7 @@ export class MultiSelectNoBarCombo extends Single { function assertShowValue() { if (isKey(self._startValue)) { - if (self.storeValue.type === BI.Selection.All) { + if (self.storeValue.type === Selection.All) { remove(self.storeValue.value, self._startValue); self.storeValue.assist = self.storeValue.assist || []; pushDistinct(self.storeValue.assist, self._startValue); @@ -99,7 +102,7 @@ export class MultiSelectNoBarCombo extends Single { left: 0, top: 0, right: 0, - bottom: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, }, }, valueFormatter: o.valueFormatter, @@ -107,7 +110,7 @@ export class MultiSelectNoBarCombo extends Single { itemFormatter: o.itemFormatter, itemHeight: o.itemHeight, value: { - type: BI.Selection.Multi, + type: Selection.Multi, value: o.value, }, }); @@ -133,7 +136,7 @@ export class MultiSelectNoBarCombo extends Single { keywords = initial(keywords || []); if (keywords.length > 0) { self._joinKeywords(keywords, () => { - if (BI.endWith(lastKeyword, BI.BlankSplitChar)) { + if (endWith(lastKeyword, BlankSplitChar)) { self.combo.setValue(self.storeValue); assertShowValue(); self.combo.populate(); @@ -226,7 +229,7 @@ export class MultiSelectNoBarCombo extends Single { }, }, value: { - type: BI.Selection.Multi, + type: Selection.Multi, value: o.value, }, hideChecker(e) { @@ -274,13 +277,13 @@ export class MultiSelectNoBarCombo extends Single { left: 0, top: 0, right: 0, - bottom: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, }, }, valueFormatter: o.valueFormatter, itemsCreator: bind(this._itemsCreator4Trigger, this), value: { - type: BI.Selection.Multi, + type: Selection.Multi, value: o.value, }, }); @@ -348,13 +351,13 @@ export class MultiSelectNoBarCombo extends Single { const keyword = this.trigger.getSearcher().getKeyword(); this._join( { - type: BI.Selection.Multi, + type: Selection.Multi, value: [keyword], }, () => { // 如果在不选的状态下直接把该值添加进来 - if (self.storeValue.type === BI.Selection.Multi) { - BI.pushDistinct(self.storeValue.value, keyword); + if (self.storeValue.type === Selection.Multi) { + pushDistinct(self.storeValue.value, keyword); } self.combo.setValue(self.storeValue); self._setStartValue(keyword); @@ -390,7 +393,7 @@ export class MultiSelectNoBarCombo extends Single { _assertValue(val) { val || (val = {}); - val.type || (val.type = BI.Selection.Multi); + val.type || (val.type = Selection.Multi); val.value || (val.value = []); } @@ -418,8 +421,8 @@ export class MultiSelectNoBarCombo extends Single { const selectedMap = self._makeMap(items); each(keywords, (i, val) => { if (isNotNull(selectedMap[val])) { - self.storeValue.type === BI.Selection.Multi - ? BI.pushDistinct(self.storeValue.value, val) + self.storeValue.type === Selection.Multi + ? pushDistinct(self.storeValue.value, val) : remove(self.storeValue.value, val); } }); @@ -546,7 +549,7 @@ export class MultiSelectNoBarCombo extends Single { setValue(v) { this.storeValue = { - type: BI.Selection.Multi, + type: Selection.Multi, value: v || [], }; this.combo.setValue(this.storeValue); diff --git a/src/widget/multiselect/multiselect.insert.combo.js b/src/widget/multiselect/multiselect.insert.combo.js index fe1599980..008d1039b 100644 --- a/src/widget/multiselect/multiselect.insert.combo.js +++ b/src/widget/multiselect/multiselect.insert.combo.js @@ -29,7 +29,9 @@ import { isNull, endWith, pushDistinct, - Selection + Selection, + SIZE_CONSANTS, + BlankSplitChar } from "@/core"; import { Single, Combo, Msg } from "@/base"; import { MultiSelectBar, TriggerIconButton } from "@/case"; @@ -55,7 +57,7 @@ export class MultiSelectInsertCombo extends Single { itemsCreator: emptyFn, valueFormatter: emptyFn, height: 24, - itemHeight: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + itemHeight: SIZE_CONSANTS.LIST_ITEM_HEIGHT, allowEdit: true, }); } @@ -103,7 +105,7 @@ export class MultiSelectInsertCombo extends Single { left: 0, top: 0, right: 0, - bottom: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, }, }, valueFormatter: o.valueFormatter, @@ -137,7 +139,7 @@ export class MultiSelectInsertCombo extends Single { keywords = initial(keywords || []); if (keywords.length > 0) { self._joinKeywords(keywords, () => { - if (endWith(lastKeyword, BI.BlankSplitChar)) { + if (endWith(lastKeyword, BlankSplitChar)) { self.combo.setValue(self.storeValue); assertShowValue(); self.combo.populate(); @@ -279,7 +281,7 @@ export class MultiSelectInsertCombo extends Single { left: 0, top: 0, right: 0, - bottom: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, }, }, valueFormatter: o.valueFormatter, diff --git a/src/widget/multiselect/multiselect.insert.combo.nobar.js b/src/widget/multiselect/multiselect.insert.combo.nobar.js index b3dca3bf5..0110bc518 100644 --- a/src/widget/multiselect/multiselect.insert.combo.nobar.js +++ b/src/widget/multiselect/multiselect.insert.combo.nobar.js @@ -27,7 +27,9 @@ import { isNull, endWith, pushDistinct, - Selection + Selection, + BlankSplitChar, + SIZE_CONSANTS } from "@/core"; import { Single, Combo, Msg } from "@/base"; import { MultiSelectInsertTrigger } from "./multiselect.insert.trigger"; @@ -49,7 +51,7 @@ export class MultiSelectInsertNoBarCombo extends Single { baseCls: "bi-multi-select-insert-combo-no-bar", itemsCreator: emptyFn, valueFormatter: emptyFn, - itemHeight: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + itemHeight: SIZE_CONSANTS.LIST_ITEM_HEIGHT, height: 24, }); } @@ -97,7 +99,7 @@ export class MultiSelectInsertNoBarCombo extends Single { left: 0, top: 0, right: 0, - bottom: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, }, }, valueFormatter: o.valueFormatter, @@ -126,7 +128,7 @@ export class MultiSelectInsertNoBarCombo extends Single { keywords = initial(keywords || []); if (keywords.length > 0) { self._joinKeywords(keywords, () => { - if (endWith(lastKeyword, BI.BlankSplitChar)) { + if (endWith(lastKeyword, BlankSplitChar)) { self.combo.setValue(self.storeValue); assertShowValue(); self.combo.populate(); @@ -266,7 +268,7 @@ export class MultiSelectInsertNoBarCombo extends Single { left: 0, top: 0, right: 0, - bottom: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, }, }, valueFormatter: o.valueFormatter, diff --git a/src/widget/multiselect/multiselect.loader.js b/src/widget/multiselect/multiselect.loader.js index 5d7cfe093..f0546622f 100644 --- a/src/widget/multiselect/multiselect.loader.js +++ b/src/widget/multiselect/multiselect.loader.js @@ -14,7 +14,8 @@ import { Selection, Direction, LogicFactory, - pushDistinct + pushDistinct, + SIZE_CONSANTS } from "@/core"; import { SelectList, MultiSelectBar, MultiSelectItem } from "@/case"; import { MultiSelectInnerLoader } from "./loader"; @@ -38,7 +39,7 @@ export class MultiSelectLoader extends Widget { itemsCreator: emptyFn, itemFormatter: emptyFn, onLoaded: emptyFn, - itemHeight: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + itemHeight: SIZE_CONSANTS.LIST_ITEM_HEIGHT, isDefaultInit: false, }); } @@ -59,7 +60,7 @@ export class MultiSelectLoader extends Widget { toolbar: { type: MultiSelectBar.xtype, cls: "bi-list-item-active", - height: this.options.itemHeight || BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: this.options.itemHeight || SIZE_CONSANTS.LIST_ITEM_HEIGHT, iconWrapperWidth: 36, }, el: extend( @@ -160,7 +161,7 @@ export class MultiSelectLoader extends Widget { type: MultiSelectItem.xtype, logic: this.options.logic, cls: "bi-list-item-active", - height: this.options.itemHeight || BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: this.options.itemHeight || SIZE_CONSANTS.LIST_ITEM_HEIGHT, selected: allSelected, iconWrapperWidth: 36, ...item, diff --git a/src/widget/multiselect/multiselect.loader.nobar.js b/src/widget/multiselect/multiselect.loader.nobar.js index bf7030331..d5d69c82c 100644 --- a/src/widget/multiselect/multiselect.loader.nobar.js +++ b/src/widget/multiselect/multiselect.loader.nobar.js @@ -14,7 +14,8 @@ import { isNotNull, toPix, Selection, - pushDistinct + pushDistinct, + SIZE_CONSANTS } from "@/core"; import { ButtonGroup, Loader } from "@/base"; import { SelectList, ListPane, MultiSelectItem } from "@/case"; @@ -36,7 +37,7 @@ export class MultiSelectNoBarLoader extends Widget { }, valueFormatter: emptyFn, itemsCreator: emptyFn, - itemHeight: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + itemHeight: SIZE_CONSANTS.LIST_ITEM_HEIGHT, onLoaded: emptyFn, itemFormatter: emptyFn, }); @@ -153,7 +154,7 @@ export class MultiSelectNoBarLoader extends Widget { type: MultiSelectItem.xtype, cls: "bi-list-item-active", logic: this.options.logic, - height: this.options.itemHeight || BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: this.options.itemHeight || SIZE_CONSANTS.LIST_ITEM_HEIGHT, iconWrapperWidth: 36, ...item, ...this.options.itemFormatter(item), diff --git a/src/widget/multiselect/multiselect.popup.view.js b/src/widget/multiselect/multiselect.popup.view.js index 3d935af87..2a833446e 100644 --- a/src/widget/multiselect/multiselect.popup.view.js +++ b/src/widget/multiselect/multiselect.popup.view.js @@ -1,4 +1,4 @@ -import { shortcut, Widget, extend, emptyFn, createWidget, i18nText } from "@/core"; +import { shortcut, Widget, extend, emptyFn, createWidget, i18nText, SIZE_CONSANTS } from "@/core"; import { MultiPopupView } from "@/case"; import { MultiSelectLoader } from "./multiselect.loader"; @@ -19,7 +19,7 @@ export class MultiSelectPopupView extends Widget { valueFormatter: emptyFn, itemsCreator: emptyFn, onLoaded: emptyFn, - itemHeight: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + itemHeight: SIZE_CONSANTS.LIST_ITEM_HEIGHT, }); } @@ -55,14 +55,14 @@ export class MultiSelectPopupView extends Widget { }); this.popupView.on(MultiPopupView.EVENT_CLICK_TOOLBAR_BUTTON, index => { switch (index) { - case 0: - self.fireEvent(MultiSelectPopupView.EVENT_CLICK_CLEAR); - break; - case 1: - self.fireEvent(MultiSelectPopupView.EVENT_CLICK_CONFIRM); - break; - default: - break; + case 0: + self.fireEvent(MultiSelectPopupView.EVENT_CLICK_CLEAR); + break; + case 1: + self.fireEvent(MultiSelectPopupView.EVENT_CLICK_CONFIRM); + break; + default: + break; } }); } diff --git a/src/widget/multiselect/multiselect.popup.view.nobar.js b/src/widget/multiselect/multiselect.popup.view.nobar.js index afd965b64..1ba871201 100644 --- a/src/widget/multiselect/multiselect.popup.view.nobar.js +++ b/src/widget/multiselect/multiselect.popup.view.nobar.js @@ -1,4 +1,4 @@ -import { shortcut, Widget, extend, emptyFn, createWidget, i18nText } from "@/core"; +import { shortcut, Widget, extend, emptyFn, createWidget, i18nText, SIZE_CONSANTS } from "@/core"; import { MultiPopupView } from "@/case"; import { MultiSelectNoBarLoader } from "./multiselect.loader.nobar"; @@ -18,7 +18,7 @@ export class MultiSelectNoBarPopupView extends Widget { maxHeight: 400, valueFormatter: emptyFn, itemsCreator: emptyFn, - itemHeight: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + itemHeight: SIZE_CONSANTS.LIST_ITEM_HEIGHT, onLoaded: emptyFn, }); } @@ -55,12 +55,13 @@ export class MultiSelectNoBarPopupView extends Widget { }); this.popupView.on(MultiPopupView.EVENT_CLICK_TOOLBAR_BUTTON, index => { switch (index) { - case 0: - self.fireEvent(MultiSelectNoBarPopupView.EVENT_CLICK_CLEAR); - break; - case 1: - self.fireEvent(MultiSelectNoBarPopupView.EVENT_CLICK_CONFIRM); - break; + case 0: + self.fireEvent(MultiSelectNoBarPopupView.EVENT_CLICK_CLEAR); + break; + case 1: + self.fireEvent(MultiSelectNoBarPopupView.EVENT_CLICK_CONFIRM); + break; + default: } }); } diff --git a/src/widget/multiselect/search/multiselect.search.insert.pane.js b/src/widget/multiselect/search/multiselect.search.insert.pane.js index 708af5dcd..93ee0c7fa 100644 --- a/src/widget/multiselect/search/multiselect.search.insert.pane.js +++ b/src/widget/multiselect/search/multiselect.search.insert.pane.js @@ -1,4 +1,4 @@ -import { shortcut, Widget, extend, emptyFn, createWidget, i18nText, Controller, VerticalFillLayout } from "@/core"; +import { shortcut, Widget, extend, emptyFn, createWidget, i18nText, Controller, VerticalFillLayout, SIZE_CONSANTS } from "@/core"; import { Label } from "@/base"; import { MultiSelectSearchLoader } from "./multiselect.search.loader"; @@ -28,7 +28,7 @@ export class MultiSelectSearchInsertPane extends Widget { this.addNotMatchTip = createWidget({ type: Label.xtype, text: i18nText("BI-Basic_Press_Enter_To_Add_Text", ""), - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, cls: "bi-keyword-red-mark", hgap: 5, }); diff --git a/src/widget/multiselect/search/multiselect.search.loader.js b/src/widget/multiselect/search/multiselect.search.loader.js index e695cca98..92da5257f 100644 --- a/src/widget/multiselect/search/multiselect.search.loader.js +++ b/src/widget/multiselect/search/multiselect.search.loader.js @@ -10,7 +10,8 @@ import { VerticalLayout, map, isKey, - Func + Func, + SIZE_CONSANTS } from "@/core"; import { ButtonGroup, Loader } from "@/base"; import { SelectList, MultiSelectBar, MultiSelectItem } from "@/case"; @@ -119,7 +120,7 @@ export class MultiSelectSearchLoader extends Widget { logic: { dynamic: false, }, - height: this.options.itemHeight || BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: this.options.itemHeight || SIZE_CONSANTS.LIST_ITEM_HEIGHT, selected: allSelected, cls: "bi-list-item-active", iconWrapperWidth: 36, @@ -153,7 +154,7 @@ export class MultiSelectSearchLoader extends Widget { text: v.text, title: v.text, value: v.value, - selected: src.type === BI.Selection.All, + selected: src.type === Selection.All, ...o.itemFormatter(v), }; }); diff --git a/src/widget/multiselect/trigger/button.checkselected.js b/src/widget/multiselect/trigger/button.checkselected.js index 8254a658e..02bfc1473 100644 --- a/src/widget/multiselect/trigger/button.checkselected.js +++ b/src/widget/multiselect/trigger/button.checkselected.js @@ -100,7 +100,7 @@ export class MultiSelectCheckSelectedButton extends Single { _assertValue(ob) { ob || (ob = {}); - ob.type || (ob.type = BI.Selection.Multi); + ob.type || (ob.type = Selection.Multi); ob.value || (ob.value = []); return ob; diff --git a/src/widget/multiselect/trigger/editor.multiselect.js b/src/widget/multiselect/trigger/editor.multiselect.js index 83446d7f7..3391c22a8 100644 --- a/src/widget/multiselect/trigger/editor.multiselect.js +++ b/src/widget/multiselect/trigger/editor.multiselect.js @@ -1,4 +1,4 @@ -import { shortcut, Widget, extend, i18nText, createWidget, Controller, isEmptyString, isEmptyArray } from "@/core"; +import { shortcut, Widget, extend, i18nText, createWidget, Controller, isEmptyString, isEmptyArray, BlankSplitChar } from "@/core"; import { StateEditor } from "@/case"; import { SelectPatchEditor } from "./editor/editor.patch"; @@ -81,7 +81,7 @@ export class MultiSelectEditor extends Widget { keywords = keywords.slice(0, keywords.length - 1); } if (/\u200b\s\u200b$/.test(val)) { - return keywords.concat([BI.BlankSplitChar]); + return keywords.concat([BlankSplitChar]); } return keywords; diff --git a/src/widget/multiselect/trigger/editor/editor.patch.js b/src/widget/multiselect/trigger/editor/editor.patch.js index 4252990b5..d5f4c60f6 100644 --- a/src/widget/multiselect/trigger/editor/editor.patch.js +++ b/src/widget/multiselect/trigger/editor/editor.patch.js @@ -9,7 +9,10 @@ import { isKey, Events, trim, - replaceAll + replaceAll, + KeyCode, + endWith, + BlankSplitChar } from "@/core"; import { Editor, TextAreaEditor } from "@/base"; import { StateEditor } from "@/case"; @@ -72,7 +75,7 @@ export class SelectPatchEditor extends Widget { { eventName: Editor.EVENT_KEY_DOWN, action(keyCode) { - if (keyCode === BI.KeyCode.ENTER) { + if (keyCode === KeyCode.ENTER) { self._clearSplitValue(); } }, @@ -124,7 +127,7 @@ export class SelectPatchEditor extends Widget { if (this._trimValue(this._lastValue) !== this._trimValue(value)) { this.fireEvent(Controller.EVENT_CHANGE, arguments); } - if (BI.endWith(value, BI.BlankSplitChar)) { + if (endWith(value, BlankSplitChar)) { this._pause = true; this.fireEvent(Controller.EVENT_CHANGE, Events.PAUSE, "", this); } @@ -136,11 +139,11 @@ export class SelectPatchEditor extends Widget { } _trimValue(v) { - return trim(replaceAll(v || "", BI.BlankSplitChar, "")); + return trim(replaceAll(v || "", BlankSplitChar, "")); } _formatText(v) { - return replaceAll(v || "", "\n", BI.BlankSplitChar); + return replaceAll(v || "", "\n", BlankSplitChar); } setWaterMark(v) { diff --git a/src/widget/multiselect/trigger/searcher.multiselect.insert.js b/src/widget/multiselect/trigger/searcher.multiselect.insert.js index 542e5e799..66249b148 100644 --- a/src/widget/multiselect/trigger/searcher.multiselect.insert.js +++ b/src/widget/multiselect/trigger/searcher.multiselect.insert.js @@ -1,4 +1,4 @@ -import { shortcut, Widget, extend, emptyFn, i18nText, createWidget, isNotNull, isEmptyArray, size, each } from "@/core"; +import { shortcut, Widget, extend, emptyFn, i18nText, createWidget, isNotNull, isEmptyArray, size, each, BlankSplitChar, Selection } from "@/core"; import { MultiSelectEditor } from "./editor.multiselect"; import { Searcher } from "@/base"; import { MultiSelectSearchInsertPane } from "../search/multiselect.search.insert.pane"; @@ -110,7 +110,7 @@ export class MultiSelectInsertSearcher extends Widget { const keywords = this.getKeywords(); self.fireEvent( MultiSelectInsertSearcher.EVENT_SEARCHING, - keywords.length > 2000 ? keywords.slice(0, 2000).concat([BI.BlankSplitChar]) : keywords.slice(0, 2000) + keywords.length > 2000 ? keywords.slice(0, 2000).concat([BlankSplitChar]) : keywords.slice(0, 2000) ); }); if (isNotNull(o.value)) { @@ -133,12 +133,12 @@ export class MultiSelectInsertSearcher extends Widget { getKeywordsLength() { const keywords = this.editor.getKeywords(); - return keywords[keywords.length - 1] === BI.BlankSplitChar ? keywords.length - 1 : keywords.length; + return keywords[keywords.length - 1] === BlankSplitChar ? keywords.length - 1 : keywords.length; } getKeyword() { let keywords = this.editor.getKeywords().slice(0, 2000); - if (keywords[keywords.length - 1] === BI.BlankSplitChar) { + if (keywords[keywords.length - 1] === BlankSplitChar) { keywords = keywords.slice(0, keywords.length - 1); } @@ -162,9 +162,9 @@ export class MultiSelectInsertSearcher extends Widget { const o = this.options; ob || (ob = {}); ob.value || (ob.value = []); - if (ob.type === BI.Selection.All) { + if (ob.type === Selection.All) { if (ob.value.length === 0) { - this.editor.setState(BI.Selection.All); + this.editor.setState(Selection.All); } else if (size(ob.assist) <= 20) { state = ""; each(ob.assist, (i, v) => { @@ -176,11 +176,11 @@ export class MultiSelectInsertSearcher extends Widget { }); this.editor.setState(state); } else { - this.editor.setState(BI.Selection.Multi); + this.editor.setState(Selection.Multi); } } else { if (ob.value.length === 0) { - this.editor.setState(BI.Selection.None); + this.editor.setState(Selection.None); } else if (size(ob.value) <= 20) { state = ""; each(ob.value, (i, v) => { @@ -192,7 +192,7 @@ export class MultiSelectInsertSearcher extends Widget { }); this.editor.setState(state); } else { - this.editor.setState(BI.Selection.Multi); + this.editor.setState(Selection.Multi); } } } diff --git a/src/widget/multiselect/trigger/searcher.multiselect.js b/src/widget/multiselect/trigger/searcher.multiselect.js index 1adfff4b1..710a17bbc 100644 --- a/src/widget/multiselect/trigger/searcher.multiselect.js +++ b/src/widget/multiselect/trigger/searcher.multiselect.js @@ -1,4 +1,4 @@ -import { shortcut, Widget, extend, emptyFn, i18nText, createWidget, isNotNull, size, each } from "@/core"; +import { shortcut, Widget, extend, emptyFn, i18nText, createWidget, isNotNull, size, each, Selection } from "@/core"; import { MultiSelectEditor } from "./editor.multiselect"; import { Searcher } from "@/base"; import { MultiSelectSearchPane } from "../search/multiselect.search.pane"; @@ -158,9 +158,9 @@ export class MultiSelectSearcher extends Widget { const o = this.options; ob || (ob = {}); ob.value || (ob.value = []); - if (ob.type === BI.Selection.All) { + if (ob.type === Selection.All) { if (ob.value.length === 0) { - this.editor.setState(BI.Selection.All); + this.editor.setState(Selection.All); } else if (size(ob.assist) <= 20) { state = ""; each(ob.assist, (i, v) => { @@ -172,11 +172,11 @@ export class MultiSelectSearcher extends Widget { }); this.editor.setState(state); } else { - this.editor.setState(BI.Selection.Multi); + this.editor.setState(Selection.Multi); } } else { if (ob.value.length === 0) { - this.editor.setState(BI.Selection.None); + this.editor.setState(Selection.None); } else if (size(ob.value) <= 20) { state = ""; each(ob.value, (i, v) => { @@ -188,7 +188,7 @@ export class MultiSelectSearcher extends Widget { }); this.editor.setState(state); } else { - this.editor.setState(BI.Selection.Multi); + this.editor.setState(Selection.Multi); } } } diff --git a/src/widget/multiselectlist/multiselectlist.insert.js b/src/widget/multiselectlist/multiselectlist.insert.js index 7e60d6aed..1390634c5 100644 --- a/src/widget/multiselectlist/multiselectlist.insert.js +++ b/src/widget/multiselectlist/multiselectlist.insert.js @@ -26,9 +26,11 @@ import { filter, contains, isNull, - VerticalFillLayout + VerticalFillLayout, + SIZE_CONSANTS, + BlankSplitChar } from "@/core"; -import { Single, Searcher } from "@/base"; +import { Single, Searcher, Msg } from "@/base"; import { MultiSelectBar } from "@/case"; import { SelectPatchEditor } from "../multiselect/trigger/editor/editor.patch"; import { MultiSelectLoader } from "../multiselect/multiselect.loader"; @@ -48,8 +50,8 @@ export class MultiSelectInsertList extends Single { baseCls: "bi-multi-select-insert-list", itemsCreator: emptyFn, valueFormatter: emptyFn, - searcherHeight: BI.SIZE_CONSANTS.TRIGGER_HEIGHT, - itemHeight: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + searcherHeight: SIZE_CONSANTS.TRIGGER_HEIGHT, + itemHeight: SIZE_CONSANTS.LIST_ITEM_HEIGHT, }); } @@ -152,7 +154,7 @@ export class MultiSelectInsertList extends Single { eventName: Searcher.EVENT_PAUSE, action() { let keywords = self._getKeywords(); - if (keywords[keywords.length - 1] === BI.BlankSplitChar) { + if (keywords[keywords.length - 1] === BlankSplitChar) { keywords = keywords.slice(0, keywords.length - 1); } const keyword = isEmptyArray(keywords) ? "" : keywords[keywords.length - 1]; @@ -185,7 +187,7 @@ export class MultiSelectInsertList extends Single { keywords = initial(keywords || []); if (keywords.length > 0) { self._joinKeywords(keywords, () => { - if (endWith(lastKeyword, BI.BlankSplitChar)) { + if (endWith(lastKeyword, BlankSplitChar)) { self.adapter.setValue(self.storeValue); assertShowValue(); self.adapter.populate(); @@ -197,7 +199,7 @@ export class MultiSelectInsertList extends Single { self.fireEvent(MultiSelectInsertList.EVENT_CHANGE); }); self._getKeywordsLength() > 2000 && - BI.Msg.alert( + Msg.alert( i18nText("BI-Basic_Prompt"), i18nText("BI-Basic_Too_Much_Value_Get_Two_Thousand") ); @@ -243,7 +245,7 @@ export class MultiSelectInsertList extends Single { items: [ { el: this.searcherPane, - top: o.searcherHeight || BI.SIZE_CONSANTS.TRIGGER_HEIGHT, + top: o.searcherHeight || SIZE_CONSANTS.TRIGGER_HEIGHT, bottom: 0, left: 0, right: 0, @@ -259,10 +261,10 @@ export class MultiSelectInsertList extends Single { keywords = keywords.slice(0, keywords.length - 1); } if (/\u200b\s\u200b$/.test(val)) { - keywords = keywords.concat([BI.BlankSplitChar]); + keywords = keywords.concat([BlankSplitChar]); } - return keywords.length > 2000 ? keywords.slice(0, 2000).concat([BI.BlankSplitChar]) : keywords.slice(0, 2000); + return keywords.length > 2000 ? keywords.slice(0, 2000).concat([BlankSplitChar]) : keywords.slice(0, 2000); } _getKeywordsLength() { diff --git a/src/widget/multiselectlist/multiselectlist.insert.nobar.js b/src/widget/multiselectlist/multiselectlist.insert.nobar.js index bac2a74ca..62373d33e 100644 --- a/src/widget/multiselectlist/multiselectlist.insert.nobar.js +++ b/src/widget/multiselectlist/multiselectlist.insert.nobar.js @@ -26,7 +26,8 @@ import { filter, contains, isNull, - VTapeLayout + VTapeLayout, + BlankSplitChar } from "@/core"; import { Single, Searcher, Msg } from "@/base"; import { MultiSelectBar } from "@/case"; @@ -48,7 +49,7 @@ export class MultiSelectInsertNoBarList extends Single { baseCls: "bi-multi-select-insert-list", itemsCreator: emptyFn, valueFormatter: emptyFn, - searcherHeight: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + searcherHeight: SIZE_CONSANTS.LIST_ITEM_HEIGHT, }); } @@ -155,7 +156,7 @@ export class MultiSelectInsertNoBarList extends Single { eventName: Searcher.EVENT_PAUSE, action() { let keywords = self._getKeywords(); - if (keywords[keywords.length - 1] === BI.BlankSplitChar) { + if (keywords[keywords.length - 1] === BlankSplitChar) { keywords = keywords.slice(0, keywords.length - 1); } const keyword = isEmptyArray(keywords) ? "" : keywords[keywords.length - 1]; @@ -187,7 +188,7 @@ export class MultiSelectInsertNoBarList extends Single { keywords = initial(keywords || []); if (keywords.length > 0) { self._joinKeywords(keywords, () => { - if (endWith(lastKeyword, BI.BlankSplitChar)) { + if (endWith(lastKeyword, BlankSplitChar)) { self.adapter.setValue(self.storeValue); assertShowValue(); self.adapter.populate(); @@ -265,10 +266,10 @@ export class MultiSelectInsertNoBarList extends Single { keywords = keywords.slice(0, keywords.length - 1); } if (/\u200b\s\u200b$/.test(val)) { - keywords = keywords.concat([BI.BlankSplitChar]); + keywords = keywords.concat([BlankSplitChar]); } - return keywords.length > 2000 ? keywords.slice(0, 2000).concat([BI.BlankSplitChar]) : keywords.slice(0, 2000); + return keywords.length > 2000 ? keywords.slice(0, 2000).concat([BlankSplitChar]) : keywords.slice(0, 2000); } _getKeywordsLength() { diff --git a/src/widget/multiselectlist/multiselectlist.js b/src/widget/multiselectlist/multiselectlist.js index caebd8e2f..e4190fb0a 100644 --- a/src/widget/multiselectlist/multiselectlist.js +++ b/src/widget/multiselectlist/multiselectlist.js @@ -25,7 +25,9 @@ import { filter, contains, isNull, - VTapeLayout + VTapeLayout, + SIZE_CONSANTS, + BlankSplitChar } from "@/core"; import { Searcher } from "@/base"; import { MultiSelectBar } from "@/case"; @@ -48,7 +50,7 @@ export class MultiSelectList extends Widget { itemsCreator: emptyFn, valueFormatter: emptyFn, searcherHeight: 24, - itemHeight: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + itemHeight: SIZE_CONSANTS.LIST_ITEM_HEIGHT, }); } @@ -162,7 +164,7 @@ export class MultiSelectList extends Widget { keywords = initial(keywords || []); if (keywords.length > 0) { self._joinKeywords(keywords, () => { - if (endWith(lastKeyword, BI.BlankSplitChar)) { + if (endWith(lastKeyword, BlankSplitChar)) { self.adapter.setValue(self.storeValue); assertShowValue(); self.adapter.populate(); @@ -231,7 +233,7 @@ export class MultiSelectList extends Widget { keywords = keywords.slice(0, keywords.length - 1); } if (/\u200b\s\u200b$/.test(val)) { - return keywords.concat([BI.BlankSplitChar]); + return keywords.concat([BlankSplitChar]); } return keywords; diff --git a/src/widget/multitree/multi.tree.combo.js b/src/widget/multitree/multi.tree.combo.js index 1eac4b54b..198aa591f 100644 --- a/src/widget/multitree/multi.tree.combo.js +++ b/src/widget/multitree/multi.tree.combo.js @@ -8,7 +8,9 @@ import { Events, AbsoluteLayout, VerticalAdaptLayout, - deepClone + deepClone, + Selection, + SIZE_CONSANTS } from "@/core"; import { Single, Combo } from "@/base"; import { MultiTreeSearcher } from "./trigger/searcher.multi.tree"; @@ -73,7 +75,7 @@ export class MultiTreeCombo extends Single { left: 0, top: 0, right: 0, - bottom: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, }, }, searcher: { @@ -121,7 +123,7 @@ export class MultiTreeCombo extends Single { action() { change = true; const val = { - type: BI.Selection.Multi, + type: Selection.Multi, value: this.hasChecked() ? this.getValue() : {}, }; self.trigger.getSearcher().setState(val); @@ -230,11 +232,11 @@ export class MultiTreeCombo extends Single { this.trigger.on(MultiSelectTrigger.EVENT_CHANGE, function () { const checked = this.getSearcher().hasChecked(); const val = { - type: BI.Selection.Multi, + type: Selection.Multi, value: checked ? { 1: 1 } : {}, }; this.getSearcher().setState( - checked ? BI.Selection.Multi : BI.Selection.None + checked ? Selection.Multi : Selection.None ); self.numberCounter.setButtonChecked(val); self.fireEvent( @@ -307,7 +309,7 @@ export class MultiTreeCombo extends Single { left: 0, top: 0, right: 0, - bottom: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, }, }, itemsCreator: o.itemsCreator, diff --git a/src/widget/multitree/multi.tree.insert.combo.js b/src/widget/multitree/multi.tree.insert.combo.js index 43e8f5426..7b43365d3 100644 --- a/src/widget/multitree/multi.tree.insert.combo.js +++ b/src/widget/multitree/multi.tree.insert.combo.js @@ -13,7 +13,9 @@ import { Events, AbsoluteLayout, VerticalAdaptLayout, - deepClone + deepClone, + Selection, + SIZE_CONSANTS } from "@/core"; import { Single, Combo } from "@/base"; import { MultiSelectTrigger } from "../multiselect/multiselect.trigger"; @@ -65,7 +67,7 @@ export class MultiTreeInsertCombo extends Single { left: 0, top: 0, right: 0, - bottom: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, }, }, searcher: { @@ -129,7 +131,7 @@ export class MultiTreeInsertCombo extends Single { action() { change = true; const val = { - type: BI.Selection.Multi, + type: Selection.Multi, value: this.hasChecked() ? this.getValue() : {}, }; self.trigger.getSearcher().setState(val); @@ -226,10 +228,10 @@ export class MultiTreeInsertCombo extends Single { this.trigger.on(MultiSelectTrigger.EVENT_CHANGE, function () { const checked = this.getSearcher().hasChecked(); const val = { - type: BI.Selection.Multi, + type: Selection.Multi, value: checked ? { 1: 1 } : {}, }; - this.getSearcher().setState(checked ? BI.Selection.Multi : BI.Selection.None); + this.getSearcher().setState(checked ? Selection.Multi : Selection.None); self.numberCounter.setButtonChecked(val); self.fireEvent(MultiTreeInsertCombo.EVENT_CLICK_ITEM, self.combo.getValue()); self._dataChange = true; @@ -298,7 +300,7 @@ export class MultiTreeInsertCombo extends Single { left: 0, top: 0, right: 0, - bottom: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, }, }, valueFormatter: o.valueFormatter, diff --git a/src/widget/multitree/multi.tree.list.combo.js b/src/widget/multitree/multi.tree.list.combo.js index f5ef2f738..eb20de280 100644 --- a/src/widget/multitree/multi.tree.list.combo.js +++ b/src/widget/multitree/multi.tree.list.combo.js @@ -11,7 +11,9 @@ import { Events, AbsoluteLayout, VerticalAdaptLayout, - deepClone + deepClone, + Selection, + SIZE_CONSANTS } from "@/core"; import { Single, Combo } from "@/base"; import { MultiTreeSearchInsertPane } from "./trigger/multi.tree.search.insert.pane"; @@ -67,7 +69,7 @@ export class MultiTreeListCombo extends Single { left: 0, top: 0, right: 0, - bottom: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, }, }, searcher: { @@ -142,7 +144,7 @@ export class MultiTreeListCombo extends Single { action() { change = true; const val = { - type: BI.Selection.Multi, + type: Selection.Multi, value: this.hasChecked() ? this.getValue() : [], }; self.trigger.getSearcher().setState(val); @@ -239,10 +241,10 @@ export class MultiTreeListCombo extends Single { this.trigger.on(MultiSelectTrigger.EVENT_CHANGE, function () { const checked = this.getSearcher().hasChecked(); const val = { - type: BI.Selection.Multi, + type: Selection.Multi, value: checked ? { 1: 1 } : {}, }; - this.getSearcher().setState(checked ? BI.Selection.Multi : BI.Selection.None); + this.getSearcher().setState(checked ? Selection.Multi : Selection.None); self.numberCounter.setButtonChecked(val); self.fireEvent(MultiTreeListCombo.EVENT_CLICK_ITEM, self.combo.getValue()); self._dataChange = true; @@ -311,7 +313,7 @@ export class MultiTreeListCombo extends Single { left: 0, top: 0, right: 0, - bottom: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, }, }, valueFormatter: o.valueFormatter, diff --git a/src/widget/multitree/trigger/searcher.list.multi.tree.js b/src/widget/multitree/trigger/searcher.list.multi.tree.js index ae390b49c..0c6bcf7e0 100644 --- a/src/widget/multitree/trigger/searcher.list.multi.tree.js +++ b/src/widget/multitree/trigger/searcher.list.multi.tree.js @@ -1,4 +1,4 @@ -import { shortcut, Widget, extend, emptyFn, createWidget, isNotNull, isNumber, size, each, last } from "@/core"; +import { shortcut, Widget, extend, emptyFn, createWidget, isNotNull, isNumber, size, each, last, Selection } from "@/core"; import { MultiSelectEditor } from "../../multiselect/trigger/editor.multiselect"; import { MultiSelectSearcher } from "../../multiselect/trigger/searcher.multiselect"; import { Searcher } from "@/base"; @@ -142,7 +142,7 @@ export class MultiListTreeSearcher extends Widget { if (isNumber(ob)) { this.editor.setState(ob); } else if (size(ob.value) === 0) { - this.editor.setState(BI.Selection.None); + this.editor.setState(Selection.None); } else { let text = ""; each(ob.value, (idx, path) => { @@ -152,7 +152,7 @@ export class MultiListTreeSearcher extends Widget { }); if (count > 20) { - this.editor.setState(BI.Selection.Multi); + this.editor.setState(Selection.Multi); } else { this.editor.setState(text); } diff --git a/src/widget/multitree/trigger/searcher.multi.tree.js b/src/widget/multitree/trigger/searcher.multi.tree.js index ea8d96086..555e579fd 100644 --- a/src/widget/multitree/trigger/searcher.multi.tree.js +++ b/src/widget/multitree/trigger/searcher.multi.tree.js @@ -10,7 +10,8 @@ import { keys, each, isEmptyObject, - Func + Func, + Selection } from "@/core"; import { MultiSelectEditor } from "../../multiselect/trigger/editor.multiselect"; import { MultiSelectSearcher } from "../../multiselect/trigger/searcher.multiselect"; @@ -169,11 +170,11 @@ export class MultiTreeSearcher extends Widget { if (isNumber(ob)) { this.editor.setState(ob); } else if (size(ob.value) === 0) { - this.editor.setState(BI.Selection.None); + this.editor.setState(Selection.None); } else { let text = ""; const value = ob.value; - const names = BI.Func.getSortedResult(keys(value)); + const names = Func.getSortedResult(keys(value)); each(names, (idx, name) => { const childNodes = getChildrenNode(value[name]); text += `${ diff --git a/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js b/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js index e830aa352..1b0919afa 100644 --- a/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js +++ b/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js @@ -26,7 +26,8 @@ import { isNotEmptyArray, isArray, find, - BlankSplitChar + BlankSplitChar, + SIZE_CONSANTS } from "@/core"; import { Single, Combo } from "@/base"; import { MultiSelectBar, TriggerIconButton } from "@/case"; @@ -90,7 +91,7 @@ export class SearchMultiTextValueCombo extends Single { left: 0, top: 0, right: 0, - bottom: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, }, }, allValueGetter: () => this.allValue, diff --git a/src/widget/searchmultitextvaluecombo/multitextvalue.loader.search.js b/src/widget/searchmultitextvaluecombo/multitextvalue.loader.search.js index cc8b80a85..42b9c12a3 100644 --- a/src/widget/searchmultitextvaluecombo/multitextvalue.loader.search.js +++ b/src/widget/searchmultitextvaluecombo/multitextvalue.loader.search.js @@ -14,7 +14,8 @@ import { VerticalLayout, createItems, delay, - isNotNull + isNotNull, + SIZE_CONSANTS } from "@/core"; import { ButtonGroup, Loader } from "@/base"; import { SelectList, MultiSelectBar, MultiSelectItem } from "@/case"; @@ -36,7 +37,7 @@ export class SearchMultiSelectLoader extends Widget { }, valueFormatter: emptyFn, itemsCreator: emptyFn, - itemHeight: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + itemHeight: SIZE_CONSANTS.LIST_ITEM_HEIGHT, onLoaded: emptyFn, }); } diff --git a/src/widget/selecttree/selecttree.popup.js b/src/widget/selecttree/selecttree.popup.js index 4a543efa9..1356a995b 100644 --- a/src/widget/selecttree/selecttree.popup.js +++ b/src/widget/selecttree/selecttree.popup.js @@ -10,7 +10,8 @@ import { UUID, defaults, Tree, - VerticalLayout + VerticalLayout, + SIZE_CONSANTS } from "@/core"; import { Pane } from "@/base"; import { BasicTreeItem, BasicTreeNode, LevelTree, TreeExpander } from "@/case"; @@ -37,7 +38,7 @@ export class SelectTreePopup extends Pane { layer, isFirstNode: i === 0, isLastNode: i === nodes.length - 1, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, pNode, }; node.id = node.id || UUID(); diff --git a/src/widget/singleselect/search/singleselect.search.loader.js b/src/widget/singleselect/search/singleselect.search.loader.js index 3d88e3095..0eb7009a5 100644 --- a/src/widget/singleselect/search/singleselect.search.loader.js +++ b/src/widget/singleselect/search/singleselect.search.loader.js @@ -11,7 +11,8 @@ import { map, isArray, isKey, - Func + Func, + SIZE_CONSANTS } from "@/core"; import { ButtonGroup, Loader } from "@/base"; import { SingleSelectList } from "../singleselect.list"; @@ -118,7 +119,7 @@ export class SingleSelectSearchLoader extends Widget { type: o.allowNoSelect ? SingleSelectItem.xtype : SingleSelectRadioItem.xtype, logic: o.logic, cls: "bi-list-item-active", - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, selected: false, iconWrapperWidth: 26, hgap: o.allowNoSelect ? 10 : 0, diff --git a/src/widget/singleselect/singleselect.list.js b/src/widget/singleselect/singleselect.list.js index 7b3cec4dd..e29f6e976 100644 --- a/src/widget/singleselect/singleselect.list.js +++ b/src/widget/singleselect/singleselect.list.js @@ -1,4 +1,4 @@ -import { shortcut, Widget, extend, emptyFn, createWidget, Controller, Events, i18nText } from "@/core"; +import { shortcut, Widget, extend, emptyFn, createWidget, Controller, Events, i18nText, Direction, LogicFactory, pixFormat } from "@/core"; import { ListPane, SingleSelectItem } from "@/case"; @shortcut() @@ -12,7 +12,7 @@ export class SingleSelectList extends Widget { _defaultConfig() { return extend(super._defaultConfig(...arguments), { baseCls: "bi-select-list", - direction: BI.Direction.Top, // toolbar的位置 + direction: Direction.Top, // toolbar的位置 logic: { dynamic: true, }, @@ -62,8 +62,8 @@ export class SingleSelectList extends Widget { { element: this, }, - BI.LogicFactory.createLogic( - BI.LogicFactory.createLogicTypeByDirection(o.direction), + LogicFactory.createLogic( + LogicFactory.createLogicTypeByDirection(o.direction), extend( { scrolly: true, @@ -71,7 +71,7 @@ export class SingleSelectList extends Widget { o.logic, { items: o.allowNoSelect - ? BI.LogicFactory.createLogicItemsByDirection( + ? LogicFactory.createLogicItemsByDirection( o.direction, { type: SingleSelectItem.xtype, @@ -97,7 +97,7 @@ export class SingleSelectList extends Widget { }, this.list ) - : BI.LogicFactory.createLogicItemsByDirection(o.direction, this.list), + : LogicFactory.createLogicItemsByDirection(o.direction, this.list), } ) ) @@ -141,7 +141,7 @@ export class SingleSelectList extends Widget { this.list.resetHeight ? this.list.resetHeight(h) : this.list.element.css({ - "max-height": BI.pixFormat(h - (this.options.allowNoSelect ? this._constants.itemHeight : 0)), + "max-height": pixFormat(h - (this.options.allowNoSelect ? this._constants.itemHeight : 0)), }); } diff --git a/src/widget/singleselect/singleselect.loader.js b/src/widget/singleselect/singleselect.loader.js index 4719b635e..18589a815 100644 --- a/src/widget/singleselect/singleselect.loader.js +++ b/src/widget/singleselect/singleselect.loader.js @@ -9,7 +9,8 @@ import { isKey, Controller, VerticalLayout, - delay + delay, + SIZE_CONSANTS } from "@/core"; import { ButtonGroup, Loader } from "@/base"; import { SingleSelectList } from "./singleselect.list"; @@ -145,7 +146,7 @@ export class SingleSelectLoader extends Widget { type: o.allowNoSelect ? SingleSelectItem.xtype : SingleSelectRadioItem.xtype, logic: o.logic, cls: "bi-list-item-active", - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, selected: false, iconWrapperWidth: 26, textHgap: o.allowNoSelect ? 10 : 0, diff --git a/src/widget/year/card.dynamic.year.js b/src/widget/year/card.dynamic.year.js index 24949a579..020af63a2 100644 --- a/src/widget/year/card.dynamic.year.js +++ b/src/widget/year/card.dynamic.year.js @@ -1,4 +1,4 @@ -import { checkDateVoid, i18nText, isNotEmptyString, parseDateTime, shortcut, VerticalLayout, Widget } from "@/core"; +import { checkDateVoid, i18nText, isNotEmptyString, parseDateTime, shortcut, VerticalLayout, Widget, SIZE_CONSANTS } from "@/core"; import { Bubbles, Label } from "@/base"; import { DynamicDateCard } from "@/widget/dynamicdate/dynamicdate.card"; import { DynamicDateHelper } from "@/widget/dynamicdate/dynamicdate.caculate"; @@ -8,8 +8,8 @@ import { DynamicDateParamItem } from "@/widget/dynamicdate/dynamicdate.param.ite * 年份展示面板 * * Created by GUY on 2015/9/2. - * @class BI.YearCard - * @extends BI.Trigger + * @class YearCard + * @extends Trigger */ @shortcut() @@ -30,7 +30,7 @@ export class DynamicYearCard extends Widget { type: Label.xtype, text: i18nText("BI-Multi_Date_Relative_Current_Time"), textAlign: "left", - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, }, { type: DynamicDateParamItem.xtype, diff --git a/src/widget/year/combo.year.js b/src/widget/year/combo.year.js index 4ec9661bb..b1ce3612f 100644 --- a/src/widget/year/combo.year.js +++ b/src/widget/year/combo.year.js @@ -1,5 +1,5 @@ import { IconButton, Combo } from "@/base"; -import { shortcut, Widget, toPix, getDate, isNotNull, AbsoluteLayout, HorizontalFillLayout, extend } from "@/core"; +import { shortcut, Widget, toPix, getDate, isNotNull, AbsoluteLayout, HorizontalFillLayout, extend, createWidget } from "@/core"; import { DynamicYearTrigger } from "@/widget/year/trigger.year"; import { DynamicYearPopup } from "@/widget/year/popup.year"; import { DynamicDateCombo } from "@/widget/dynamicdate/dynamicdate.combo"; @@ -12,6 +12,10 @@ export class DynamicYearCombo extends Widget { static EVENT_ERROR = "EVENT_ERROR"; static EVENT_VALID = "EVENT_VALID"; static EVENT_FOCUS = "EVENT_FOCUS"; + + static Static = 1; + static Dynamic = 2; + _const = { iconWidth: 24, }; @@ -30,7 +34,7 @@ export class DynamicYearCombo extends Widget { super._init(...arguments); this.storeValue = o.value; const border = o.simple ? 1 : 2; - this.trigger = BI.createWidget({ + this.trigger = createWidget({ type: DynamicYearTrigger.xtype, simple: o.simple, min: o.minDate, @@ -77,7 +81,7 @@ export class DynamicYearCombo extends Widget { this._checkDynamicValue(this.storeValue); this.fireEvent(DynamicYearCombo.EVENT_CONFIRM); }); - this.combo = BI.createWidget({ + this.combo = createWidget({ type: Combo.xtype, container: o.container, isNeedAdjustHeight: false, @@ -143,7 +147,7 @@ export class DynamicYearCombo extends Widget { this.fireEvent(DynamicYearCombo.EVENT_BEFORE_POPUPVIEW); }); - BI.createWidget({ + createWidget({ type: AbsoluteLayout.xtype, element: this, items: [ @@ -186,12 +190,12 @@ export class DynamicYearCombo extends Widget { type = v.type; } switch (type) { - case DynamicYearCombo.Dynamic: - this.changeIcon.setVisible(true); - break; - default: - this.changeIcon.setVisible(false); - break; + case DynamicYearCombo.Dynamic: + this.changeIcon.setVisible(true); + break; + default: + this.changeIcon.setVisible(false); + break; } } diff --git a/src/widget/year/popup.year.js b/src/widget/year/popup.year.js index df9911766..5400407c0 100644 --- a/src/widget/year/popup.year.js +++ b/src/widget/year/popup.year.js @@ -8,12 +8,14 @@ import { print, getDate, checkDateVoid, - createItems + createItems, + SIZE_CONSANTS } from "@/core"; import { TextButton, Tab } from "@/base"; import { LinearSegment } from "@/case"; import { DynamicDateCombo } from "@/widget/dynamicdate/dynamicdate.combo"; import { DynamicDateHelper } from "@/widget/dynamicdate/dynamicdate.caculate"; +import { DynamicYearMonthPopup } from "../yearmonth/popup.yearmonth"; import { DynamicYearCard } from "@/widget/year/card.dynamic.year"; import { DynamicYearCombo } from "@/widget/year/combo.year"; import { StaticYearCard } from "@/widget/year/card.year"; @@ -54,7 +56,7 @@ export class DynamicYearPopup extends Widget { { type: TextButton.xtype, cls: "bi-split-top bi-high-light", - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + textHeight: toPix(SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), shadow: true, text: i18nText("BI-Basic_Clear"), listeners: [ @@ -68,7 +70,7 @@ export class DynamicYearPopup extends Widget { }, { type: TextButton.xtype, - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + textHeight: toPix(SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), cls: "bi-split-left bi-split-right bi-high-light bi-split-top", shadow: true, text: i18nText("BI-Basic_Current_Year"), @@ -88,7 +90,7 @@ export class DynamicYearPopup extends Widget { { type: TextButton.xtype, cls: "bi-split-top bi-high-light", - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + textHeight: toPix(SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), shadow: true, text: i18nText("BI-Basic_OK"), listeners: [ @@ -98,7 +100,7 @@ export class DynamicYearPopup extends Widget { const type = this.dateTab.getSelect(); if (type === DynamicDateCombo.Dynamic) { this.dynamicPane.checkValidation(true) && - this.fireEvent(BI.DynamicYearMonthPopup.BUTTON_OK_EVENT_CHANGE); + this.fireEvent(DynamicYearMonthPopup.BUTTON_OK_EVENT_CHANGE); } else { this.fireEvent(DynamicYearPopup.BUTTON_OK_EVENT_CHANGE); } @@ -108,7 +110,7 @@ export class DynamicYearPopup extends Widget { } ] ], - height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + height: SIZE_CONSANTS.TOOL_BAR_HEIGHT, }, } ], @@ -167,43 +169,43 @@ export class DynamicYearPopup extends Widget { }, cardCreator: v => { switch (v) { - case DynamicYearCombo.Dynamic: - return { - type: DynamicYearCard.xtype, - cls: "dynamic-year-pane", - min: o.min, - max: o.max, - listeners: [ - { - eventName: "EVENT_CHANGE", - action: () => { - this._setInnerValue(this.year, v); - }, - } - ], - ref: _ref => { - this.dynamicPane = _ref; - }, - }; - case DynamicYearCombo.Static: - default: - return { - type: StaticYearCard.xtype, - behaviors: o.behaviors, - min: o.min, - max: o.max, - listeners: [ - { - eventName: StaticYearCard.EVENT_CHANGE, - action: () => { - this.fireEvent(DynamicYearPopup.EVENT_CHANGE); - }, - } - ], - ref: _ref => { - this.year = _ref; - }, - }; + case DynamicYearCombo.Dynamic: + return { + type: DynamicYearCard.xtype, + cls: "dynamic-year-pane", + min: o.min, + max: o.max, + listeners: [ + { + eventName: "EVENT_CHANGE", + action: () => { + this._setInnerValue(this.year, v); + }, + } + ], + ref: _ref => { + this.dynamicPane = _ref; + }, + }; + case DynamicYearCombo.Static: + default: + return { + type: StaticYearCard.xtype, + behaviors: o.behaviors, + min: o.min, + max: o.max, + listeners: [ + { + eventName: StaticYearCard.EVENT_CHANGE, + action: () => { + this.fireEvent(DynamicYearPopup.EVENT_CHANGE); + }, + } + ], + ref: _ref => { + this.year = _ref; + }, + }; } }, listeners: [ @@ -212,23 +214,23 @@ export class DynamicYearPopup extends Widget { action: () => { const v = this.dateTab.getSelect(); switch (v) { - case DynamicYearCombo.Static: { - const date = DynamicDateHelper.getCalculation(this.dynamicPane.getValue()); - this.year.setValue({ year: date.getFullYear() }); - this._setInnerValue(); - break; - } - case DynamicYearCombo.Dynamic: - default: - if (this.storeValue && this.storeValue.type === DynamicYearCombo.Dynamic) { - this.dynamicPane.setValue(this.storeValue.value); - } else { - this.dynamicPane.setValue({ - year: 0, - }); + case DynamicYearCombo.Static: { + const date = DynamicDateHelper.getCalculation(this.dynamicPane.getValue()); + this.year.setValue({ year: date.getFullYear() }); + this._setInnerValue(); + break; } - this._setInnerValue(); - break; + case DynamicYearCombo.Dynamic: + default: + if (this.storeValue && this.storeValue.type === DynamicYearCombo.Dynamic) { + this.dynamicPane.setValue(this.storeValue.value); + } else { + this.dynamicPane.setValue({ + year: 0, + }); + } + this._setInnerValue(); + break; } }, } @@ -266,16 +268,16 @@ export class DynamicYearPopup extends Widget { const value = v.value || v; this.dateTab.setSelect(type); switch (type) { - case DynamicDateCombo.Dynamic: - this.dynamicPane.setValue(value); - this._setInnerValue(); - break; - case DynamicDateCombo.Static: - default: - this.year.setValue(value); - this.yearButton.setValue(i18nText("BI-Basic_Current_Year")); - this.yearButton.setEnable(!this._checkTodayValid()); - break; + case DynamicDateCombo.Dynamic: + this.dynamicPane.setValue(value); + this._setInnerValue(); + break; + case DynamicDateCombo.Static: + default: + this.year.setValue(value); + this.yearButton.setValue(i18nText("BI-Basic_Current_Year")); + this.yearButton.setEnable(!this._checkTodayValid()); + break; } } diff --git a/src/widget/year/trigger.year.js b/src/widget/year/trigger.year.js index 3d75124ed..8e7562601 100644 --- a/src/widget/year/trigger.year.js +++ b/src/widget/year/trigger.year.js @@ -12,7 +12,8 @@ import { parseInt, print, getDate, - HorizontalFillLayout + HorizontalFillLayout, + isEmptyString } from "@/core"; import { Trigger, TextButton } from "@/base"; import { SignEditor, TriggerIconButton } from "@/case"; @@ -166,20 +167,20 @@ export class DynamicYearTrigger extends Trigger { } switch (type) { - case DynamicDateCombo.Dynamic: { - const text = this._getText(value); - let date = getDate(); - date = DynamicDateHelper.getCalculation(value); - const dateStr = BI.print(date, "%Y"); + case DynamicDateCombo.Dynamic: { + const text = this._getText(value); + let date = getDate(); + date = DynamicDateHelper.getCalculation(value); + const dateStr = print(date, "%Y"); - return BI.isEmptyString(text) ? dateStr : `${text}:${dateStr}`; - } + return isEmptyString(text) ? dateStr : `${text}:${dateStr}`; + } - case DynamicDateCombo.Static: - default: - value = value || {}; + case DynamicDateCombo.Static: + default: + value = value || {}; - return value.year; + return value.year; } } @@ -192,18 +193,18 @@ export class DynamicYearTrigger extends Trigger { value = v.value || v; } switch (type) { - case DynamicDateCombo.Dynamic: { - const text = this._getText(value); - date = DynamicDateHelper.getCalculation(value); - this._setInnerValue(date, text); - break; - } - case DynamicDateCombo.Static: - default: - value = value || {}; - this.editor.setState(value.year); - this.editor.setValue(value.year); - break; + case DynamicDateCombo.Dynamic: { + const text = this._getText(value); + date = DynamicDateHelper.getCalculation(value); + this._setInnerValue(date, text); + break; + } + case DynamicDateCombo.Static: + default: + value = value || {}; + this.editor.setState(value.year); + this.editor.setValue(value.year); + break; } } diff --git a/src/widget/yearmonth/card.dynamic.yearmonth.js b/src/widget/yearmonth/card.dynamic.yearmonth.js index 9b799caf4..70dab3331 100644 --- a/src/widget/yearmonth/card.dynamic.yearmonth.js +++ b/src/widget/yearmonth/card.dynamic.yearmonth.js @@ -7,7 +7,8 @@ import { parseDateTime, extend, checkDateVoid, - isNotEmptyString + isNotEmptyString, + SIZE_CONSANTS } from "@/core"; import { DynamicDateCard, DynamicDateParamItem, DynamicDateHelper } from "../dynamicdate"; import { Label, Bubbles } from "@/base"; @@ -28,7 +29,7 @@ export class DynamicYearMonthCard extends Widget { type: Label.xtype, text: i18nText("BI-Multi_Date_Relative_Current_Time"), textAlign: "left", - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, }, { type: VerticalLayout.xtype, @@ -113,14 +114,14 @@ export class DynamicYearMonthCard extends Widget { _digestDateTypeValue(value) { const valueMap = {}; switch (value.dateType) { - case DynamicDateCard.TYPE.YEAR: - valueMap.year = value.offset === 0 ? -value.value : +value.value; - break; - case DynamicDateCard.TYPE.MONTH: - valueMap.month = value.offset === 0 ? -value.value : +value.value; - break; - default: - break; + case DynamicDateCard.TYPE.YEAR: + valueMap.year = value.offset === 0 ? -value.value : +value.value; + break; + case DynamicDateCard.TYPE.MONTH: + valueMap.month = value.offset === 0 ? -value.value : +value.value; + break; + default: + break; } return valueMap; diff --git a/src/widget/yearmonth/card.static.yearmonth.js b/src/widget/yearmonth/card.static.yearmonth.js index d83de53c1..0a478cc1b 100644 --- a/src/widget/yearmonth/card.static.yearmonth.js +++ b/src/widget/yearmonth/card.static.yearmonth.js @@ -12,7 +12,9 @@ import { checkDateVoid, contains, getDate, - parseInt + parseInt, + SIZE_CONSANTS, + LogicFactory } from "@/core"; import { TextItem, ButtonGroup } from "@/base"; import { YearPicker } from "../date/calendar"; @@ -39,7 +41,7 @@ export class StaticYearMonthCard extends Widget { whiteSpace: "nowrap", once: false, forceSelected: true, - height: toPix(BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, 1), + height: toPix(SIZE_CONSANTS.LIST_ITEM_HEIGHT, 1), width: 38, value: td, text: td, @@ -88,7 +90,7 @@ export class StaticYearMonthCard extends Widget { }, items: this._createMonths(), layouts: [ - BI.LogicFactory.createLogic( + LogicFactory.createLogic( "table", extend( { @@ -98,7 +100,7 @@ export class StaticYearMonthCard extends Widget { columns: 2, rows: 6, columnSize: [1 / 2, 1 / 2], - rowSize: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + rowSize: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, } ) ), diff --git a/src/widget/yearmonth/popup.yearmonth.js b/src/widget/yearmonth/popup.yearmonth.js index 0366a9d3f..a269169b8 100644 --- a/src/widget/yearmonth/popup.yearmonth.js +++ b/src/widget/yearmonth/popup.yearmonth.js @@ -8,7 +8,8 @@ import { print, getDate, checkDateVoid, - createItems + createItems, + SIZE_CONSANTS } from "@/core"; import { DynamicYearMonthCombo } from "./combo.yearmonth"; import { TextButton, Tab } from "@/base"; @@ -18,8 +19,6 @@ import { StaticYearMonthCard } from "./card.static.yearmonth"; import { LinearSegment } from "@/case"; import { DynamicYearMonthCard } from "./card.dynamic.yearmonth"; -// - @shortcut() export class DynamicYearMonthPopup extends Widget { static xtype = "bi.dynamic_year_month_popup"; @@ -56,7 +55,7 @@ export class DynamicYearMonthPopup extends Widget { { type: TextButton.xtype, cls: "bi-split-top bi-high-light", - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + textHeight: toPix(SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), shadow: true, text: i18nText("BI-Basic_Clear"), listeners: [ @@ -71,7 +70,7 @@ export class DynamicYearMonthPopup extends Widget { { type: TextButton.xtype, cls: "bi-split-left bi-split-right bi-high-light bi-split-top", - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + textHeight: toPix(SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), shadow: true, text: i18nText("BI-Basic_Current_Month"), disabled: this._checkTodayValid(), @@ -90,7 +89,7 @@ export class DynamicYearMonthPopup extends Widget { { type: TextButton.xtype, cls: "bi-split-top bi-high-light", - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + textHeight: toPix(SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), shadow: true, text: i18nText("BI-Basic_OK"), listeners: [ @@ -110,7 +109,7 @@ export class DynamicYearMonthPopup extends Widget { } ] ], - height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + height: SIZE_CONSANTS.TOOL_BAR_HEIGHT, }, } ], @@ -156,11 +155,11 @@ export class DynamicYearMonthPopup extends Widget { [ { text: i18nText("BI-Basic_Year_Month"), - value: BI.DynamicYearCombo.Static, + value: DynamicYearCombo.Static, }, { text: i18nText("BI-Basic_Dynamic_Title"), - value: BI.DynamicYearCombo.Dynamic, + value: DynamicYearCombo.Dynamic, } ], { @@ -170,43 +169,43 @@ export class DynamicYearMonthPopup extends Widget { }, cardCreator: v => { switch (v) { - case BI.DynamicYearCombo.Dynamic: - return { - type: DynamicYearMonthCard.xtype, - cls: "dynamic-year-month-pane", - min: this.options.min, - max: this.options.max, - listeners: [ - { - eventName: "EVENT_CHANGE", - action: () => { - this._setInnerValue(this.year, v); - }, - } - ], - ref: _ref => { - this.dynamicPane = _ref; - }, - }; - case BI.DynamicYearCombo.Static: - default: - return { - type: StaticYearMonthCard.xtype, - behaviors: o.behaviors, - min: this.options.min, - max: this.options.max, - listeners: [ - { - eventName: StaticYearMonthCard.EVENT_CHANGE, - action: () => { - this.fireEvent(DynamicYearMonthPopup.EVENT_CHANGE); - }, - } - ], - ref: _ref => { - this.year = _ref; - }, - }; + case DynamicYearCombo.Dynamic: + return { + type: DynamicYearMonthCard.xtype, + cls: "dynamic-year-month-pane", + min: this.options.min, + max: this.options.max, + listeners: [ + { + eventName: "EVENT_CHANGE", + action: () => { + this._setInnerValue(this.year, v); + }, + } + ], + ref: _ref => { + this.dynamicPane = _ref; + }, + }; + case DynamicYearCombo.Static: + default: + return { + type: StaticYearMonthCard.xtype, + behaviors: o.behaviors, + min: this.options.min, + max: this.options.max, + listeners: [ + { + eventName: StaticYearMonthCard.EVENT_CHANGE, + action: () => { + this.fireEvent(DynamicYearMonthPopup.EVENT_CHANGE); + }, + } + ], + ref: _ref => { + this.year = _ref; + }, + }; } }, listeners: [ @@ -215,26 +214,26 @@ export class DynamicYearMonthPopup extends Widget { action: () => { const v = this.dateTab.getSelect(); switch (v) { - case BI.DynamicYearCombo.Static: { - const date = DynamicDateHelper.getCalculation(this.dynamicPane.getValue()); - this.year.setValue({ - year: date.getFullYear(), - month: date.getMonth() + 1, - }); - this._setInnerValue(); - break; - } - case BI.DynamicYearCombo.Dynamic: - default: - if (this.storeValue && this.storeValue.type === BI.DynamicYearCombo.Dynamic) { - this.dynamicPane.setValue(this.storeValue.value); - } else { - this.dynamicPane.setValue({ - year: 0, + case DynamicYearCombo.Static: { + const date = DynamicDateHelper.getCalculation(this.dynamicPane.getValue()); + this.year.setValue({ + year: date.getFullYear(), + month: date.getMonth() + 1, }); + this._setInnerValue(); + break; } - this._setInnerValue(); - break; + case DynamicYearCombo.Dynamic: + default: + if (this.storeValue && this.storeValue.type === DynamicYearCombo.Dynamic) { + this.dynamicPane.setValue(this.storeValue.value); + } else { + this.dynamicPane.setValue({ + year: 0, + }); + } + this._setInnerValue(); + break; } }, } @@ -266,16 +265,16 @@ export class DynamicYearMonthPopup extends Widget { this.dateTab.setSelect(type); switch (type) { - case DynamicDateCombo.Dynamic: - this.dynamicPane.setValue(value); - this._setInnerValue(); - break; - case DynamicDateCombo.Static: - default: - this.year.setValue(value); - this.textButton.setValue(i18nText("BI-Basic_Current_Month")); - this.textButton.setEnable(!this._checkTodayValid()); - break; + case DynamicDateCombo.Dynamic: + this.dynamicPane.setValue(value); + this._setInnerValue(); + break; + case DynamicDateCombo.Static: + default: + this.year.setValue(value); + this.textButton.setValue(i18nText("BI-Basic_Current_Month")); + this.textButton.setEnable(!this._checkTodayValid()); + break; } } diff --git a/src/widget/yearquarter/card.dynamic.yearquarter.js b/src/widget/yearquarter/card.dynamic.yearquarter.js index 667d7f8c3..1ea538991 100644 --- a/src/widget/yearquarter/card.dynamic.yearquarter.js +++ b/src/widget/yearquarter/card.dynamic.yearquarter.js @@ -8,7 +8,8 @@ import { extend, checkDateVoid, isNotEmptyString, - getQuarter + getQuarter, + SIZE_CONSANTS } from "@/core"; import { DynamicDateCard, DynamicDateParamItem, DynamicDateHelper } from "../dynamicdate"; import { Label, Bubbles } from "@/base"; @@ -29,7 +30,7 @@ export class DynamicYearQuarterCard extends Widget { type: Label.xtype, text: i18nText("BI-Multi_Date_Relative_Current_Time"), textAlign: "left", - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: SIZE_CONSANTS.LIST_ITEM_HEIGHT, }, { type: VerticalLayout.xtype, @@ -126,16 +127,16 @@ export class DynamicYearQuarterCard extends Widget { _digestDateTypeValue(value) { const valueMap = {}; switch (value.dateType) { - case DynamicDateCard.TYPE.YEAR: - valueMap.year = + case DynamicDateCard.TYPE.YEAR: + valueMap.year = value.offset === 0 ? -value.value : +value.value; - break; - case DynamicDateCard.TYPE.QUARTER: - valueMap.quarter = + break; + case DynamicDateCard.TYPE.QUARTER: + valueMap.quarter = value.offset === 0 ? -value.value : +value.value; - break; - default: - break; + break; + default: + break; } return valueMap; diff --git a/src/widget/yearquarter/card.static.yearquarter.js b/src/widget/yearquarter/card.static.yearquarter.js index 811b430e4..079f5284c 100644 --- a/src/widget/yearquarter/card.static.yearquarter.js +++ b/src/widget/yearquarter/card.static.yearquarter.js @@ -10,7 +10,8 @@ import { checkDateVoid, getDate, getQuarterName, - getQuarter + getQuarter, + SIZE_CONSANTS } from "@/core"; import { TextItem, ButtonGroup } from "@/base"; import { YearPicker } from "../date/calendar"; @@ -50,7 +51,7 @@ export class StaticYearQuarterCard extends Widget { whiteSpace: "nowrap", once: false, forceSelected: true, - height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + height: SIZE_CONSANTS.TOOL_BAR_HEIGHT, ref: _ref => { this.quarterMap[j + 1] = _ref; }, diff --git a/src/widget/yearquarter/popup.yearquarter.js b/src/widget/yearquarter/popup.yearquarter.js index 4a1d13d1f..5ac06d6a0 100644 --- a/src/widget/yearquarter/popup.yearquarter.js +++ b/src/widget/yearquarter/popup.yearquarter.js @@ -9,7 +9,8 @@ import { getDate, checkDateVoid, createItems, - getQuarter + getQuarter, + SIZE_CONSANTS } from "@/core"; import { DynamicYearQuarterCombo } from "./combo.yearquarter"; import { TextButton, Tab } from "@/base"; @@ -57,7 +58,7 @@ export class DynamicYearQuarterPopup extends Widget { cls: "bi-split-top bi-high-light", shadow: true, textHeight: toPix( - BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1 ), text: i18nText("BI-Basic_Clear"), @@ -76,7 +77,7 @@ export class DynamicYearQuarterPopup extends Widget { type: TextButton.xtype, cls: "bi-split-left bi-split-right bi-high-light bi-split-top", textHeight: toPix( - BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1 ), shadow: true, @@ -101,7 +102,7 @@ export class DynamicYearQuarterPopup extends Widget { cls: "bi-split-top bi-high-light", shadow: true, textHeight: toPix( - BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1 ), text: i18nText("BI-Basic_OK"), @@ -132,7 +133,7 @@ export class DynamicYearQuarterPopup extends Widget { } ] ], - height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + height: SIZE_CONSANTS.TOOL_BAR_HEIGHT, }, } ], @@ -200,45 +201,45 @@ export class DynamicYearQuarterPopup extends Widget { }, cardCreator: v => { switch (v) { - case DynamicYearQuarterCombo.Dynamic: - return { - type: DynamicYearQuarterCard.xtype, - cls: "dynamic-year-quarter-pane", - min: this.options.min, - max: this.options.max, - listeners: [ - { - eventName: "EVENT_CHANGE", - action: () => { - this._setInnerValue(this.year, v); - }, - } - ], - ref: _ref => { - this.dynamicPane = _ref; - }, - }; - case DynamicYearQuarterCombo.Static: - default: - return { - type: StaticYearQuarterCard.xtype, - behaviors: o.behaviors, - min: this.options.min, - max: this.options.max, - listeners: [ - { - eventName: DynamicYearCard.EVENT_CHANGE, - action: () => { - this.fireEvent( - DynamicYearQuarterPopup.EVENT_CHANGE - ); - }, - } - ], - ref: _ref => { - this.year = _ref; - }, - }; + case DynamicYearQuarterCombo.Dynamic: + return { + type: DynamicYearQuarterCard.xtype, + cls: "dynamic-year-quarter-pane", + min: this.options.min, + max: this.options.max, + listeners: [ + { + eventName: "EVENT_CHANGE", + action: () => { + this._setInnerValue(this.year, v); + }, + } + ], + ref: _ref => { + this.dynamicPane = _ref; + }, + }; + case DynamicYearQuarterCombo.Static: + default: + return { + type: StaticYearQuarterCard.xtype, + behaviors: o.behaviors, + min: this.options.min, + max: this.options.max, + listeners: [ + { + eventName: DynamicYearCard.EVENT_CHANGE, + action: () => { + this.fireEvent( + DynamicYearQuarterPopup.EVENT_CHANGE + ); + }, + } + ], + ref: _ref => { + this.year = _ref; + }, + }; } }, listeners: [ @@ -248,33 +249,33 @@ export class DynamicYearQuarterPopup extends Widget { const v = this.dateTab.getSelect(); let date; switch (v) { - case DynamicYearQuarterCombo.Static: - date = DynamicDateHelper.getCalculation( - this.dynamicPane.getValue() - ); - this.year.setValue({ - year: date.getFullYear(), - quarter: getQuarter(date), - }); - this._setInnerValue(); - break; - case DynamicYearQuarterCombo.Dynamic: - default: - if ( - this.storeValue && - this.storeValue.type === - DynamicYearQuarterCombo.Dynamic - ) { - this.dynamicPane.setValue( - this.storeValue.value + case DynamicYearQuarterCombo.Static: + date = DynamicDateHelper.getCalculation( + this.dynamicPane.getValue() ); - } else { - this.dynamicPane.setValue({ - year: 0, + this.year.setValue({ + year: date.getFullYear(), + quarter: getQuarter(date), }); - } - this._setInnerValue(); - break; + this._setInnerValue(); + break; + case DynamicYearQuarterCombo.Dynamic: + default: + if ( + this.storeValue && + this.storeValue.type === + DynamicYearQuarterCombo.Dynamic + ) { + this.dynamicPane.setValue( + this.storeValue.value + ); + } else { + this.dynamicPane.setValue({ + year: 0, + }); + } + this._setInnerValue(); + break; } }, } @@ -305,16 +306,16 @@ export class DynamicYearQuarterPopup extends Widget { const value = v.value || v; this.dateTab.setSelect(type); switch (type) { - case DynamicDateCombo.Dynamic: - this.dynamicPane.setValue(value); - this._setInnerValue(); - break; - case DynamicDateCombo.Static: - default: - this.year.setValue(value); - this.textButton.setValue(i18nText("BI-Basic_Current_Quarter")); - this.textButton.setEnable(!this._checkTodayValid()); - break; + case DynamicDateCombo.Dynamic: + this.dynamicPane.setValue(value); + this._setInnerValue(); + break; + case DynamicDateCombo.Static: + default: + this.year.setValue(value); + this.textButton.setValue(i18nText("BI-Basic_Current_Quarter")); + this.textButton.setEnable(!this._checkTodayValid()); + break; } }