123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- define("dijit/_BidiSupport", ["./_WidgetBase"], function(_WidgetBase){
- /*=====
- var _WidgetBase = dijit._WidgetBase;
- ====*/
- // module:
- // dijit/_BidiSupport
- // summary:
- // Module that deals with BIDI, special with the auto
- // direction if needed without changing the GUI direction.
- // Including this module will extend _WidgetBase with BIDI related methods.
- // description:
- // There's a special need for displaying BIDI text in rtl direction
- // in ltr GUI, sometimes needed auto support.
- // In creation of widget, if it's want to activate this class,
- // the widget should define the "textDir".
- _WidgetBase.extend({
- getTextDir: function(/*String*/ text){
- // summary:
- // Gets the right direction of text.
- // description:
- // If textDir is ltr or rtl returns the value.
- // If it's auto, calls to another function that responsible
- // for checking the value, and defining the direction.
- // tags:
- // protected.
- return this.textDir == "auto" ? this._checkContextual(text) : this.textDir;
- },
- _checkContextual: function(text){
- // summary:
- // Finds the first strong (directional) character, return ltr if isLatin
- // or rtl if isBidiChar.
- // tags:
- // private.
- // look for strong (directional) characters
- var fdc = /[A-Za-z\u05d0-\u065f\u066a-\u06ef\u06fa-\u07ff\ufb1d-\ufdff\ufe70-\ufefc]/.exec(text);
- // if found return the direction that defined by the character, else return widgets dir as defult.
- return fdc ? ( fdc[0] <= 'z' ? "ltr" : "rtl" ) : this.dir ? this.dir : this.isLeftToRight() ? "ltr" : "rtl";
- },
- applyTextDir: function(/*Object*/ element, /*String*/ text){
- // summary:
- // Set element.dir according to this.textDir
- // element:
- // The text element to be set. Should have dir property.
- // text:
- // Used in case this.textDir is "auto", for calculating the right transformation
- // description:
- // If textDir is ltr or rtl returns the value.
- // If it's auto, calls to another function that responsible
- // for checking the value, and defining the direction.
- // tags:
- // protected.
- var textDir = this.textDir == "auto" ? this._checkContextual(text) : this.textDir;
- // update only when there's a difference
- if(element.dir != textDir){
- element.dir = textDir;
- }
- }
- });
- return _WidgetBase;
- });
|