You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
20 lines
8.2 KiB
20 lines
8.2 KiB
// All material copyright Esri, All Rights Reserved, unless otherwise specified. |
|
// See https://js.arcgis.com/4.30/esri/copyright.txt for details. |
|
//>>built |
|
define(["exports","./Theme"],function(w,k){class r extends k.Graphics{_beforeChanged(){super._beforeChanged();if(this.isDirty("pointerBaseWidth")||this.isDirty("cornerRadius")||this.isDirty("pointerLength")||this.isDirty("pointerX")||this.isDirty("pointerY")||this.isDirty("width")||this.isDirty("height"))this._clear=!0}_changed(){super._changed();if(this._clear){this.markDirtyBounds();var a=this.width();let d=this.height();if(0<a&&0<d){let b=this.get("cornerRadius",8);b=k.fitToRange(b,0,Math.min(a/ |
|
2,d/2));let f=this.get("pointerX",0),h=this.get("pointerY",0),e=this.get("pointerBaseWidth",15)/2,l=(f-0)*(d-0)-(h-0)*(a-0),n=(f-0)*(0-d)-(h-d)*(a-0);const g=this._display;g.moveTo(b,0);if(0<l&&0<n){var c=Math.round(k.fitToRange(f,b+e,a-e-b));h=k.fitToRange(h,-Infinity,0);g.lineTo(c-e,0);g.lineTo(f,h);g.lineTo(c+e,0)}g.lineTo(a-b,0);g.arcTo(a,0,a,b,b);0<l&&0>n&&(c=Math.round(k.fitToRange(h,b+e,d-e-b)),f=k.fitToRange(f,a,Infinity),g.lineTo(a,b),g.lineTo(a,Math.max(c-e,b)),g.lineTo(f,h),g.lineTo(a, |
|
c+e));g.lineTo(a,d-b);g.arcTo(a,d,a-b,d,b);0>l&&0>n&&(c=Math.round(k.fitToRange(f,b+e,a-e-b)),h=k.fitToRange(h,d,Infinity),g.lineTo(a-b,d),g.lineTo(c+e,d),g.lineTo(f,h),g.lineTo(c-e,d));g.lineTo(b,d);g.arcTo(0,d,0,d-b,b);0>l&&0<n&&(a=Math.round(k.fitToRange(h,b+e,d-b-e)),f=k.fitToRange(f,-Infinity,0),g.lineTo(0,d-b),g.lineTo(0,a+e),g.lineTo(f,h),g.lineTo(0,Math.max(a-e,b)));g.lineTo(0,b);g.arcTo(0,0,b,0,b);g.closePath()}}}}Object.defineProperty(r,"className",{enumerable:!0,configurable:!0,writable:!0, |
|
value:"PointedRectangle"});Object.defineProperty(r,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:k.Graphics.classNames.concat([r.className])});class v extends k.Container{constructor(a,c,d,b=[]){super(a,c,d,b);Object.defineProperty(this,"_fx",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"_fy",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"_label",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this, |
|
"_fillDp",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_strokeDp",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_labelDp",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_w",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"_h",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"_keepHoverDp",{enumerable:!0,configurable:!0, |
|
writable:!0,value:void 0});Object.defineProperty(this,"_htmlContentHovered",{enumerable:!0,configurable:!0,writable:!0,value:!1})}_afterNew(){this._settings.themeTags=k.mergeTags(this._settings.themeTags,["tooltip"]);super._afterNew();this._setDefaultFn("background",()=>r.new(this._root,{})).set("themeTags",["tooltip","background"]);this._label=this.children.push(k.Label.new(this._root,{}));this._disposers.push(this._label.events.on("boundschanged",()=>{this._updateBackground()}));this._disposers.push(this.on("bounds", |
|
()=>{this._updateBackground()}));this._updateTextColor();this._root.tooltipContainer.children.push(this);this.hide(0);this._disposers.push(this.label.onPrivate("htmlElement",a=>{a&&(this._disposers.push(k.addEventListener(a,"pointerover",c=>{this._htmlContentHovered=!0})),this._disposers.push(k.addEventListener(a,"pointerout",c=>{this._htmlContentHovered=!1})))}));this.on("visible",a=>{this._handleReaderAnnouncement()});this.label.events.on("dataitemchanged",a=>{this._handleReaderAnnouncement()}); |
|
this._root._tooltips.push(this)}_handleReaderAnnouncement(){this.get("readerAnnounce")&&this.isVisibleDeep()&&this._root.readerAlert(this.label.getAccessibleText())}get label(){return this._label}dispose(){super.dispose();k.remove(this._root._tooltips,this)}_updateChildren(){super._updateChildren();(this.isDirty("pointerOrientation")||this.isPrivateDirty("minWidth")||this.isPrivateDirty("minHeight"))&&this.get("background")._markDirtyKey("width");null!=this.get("labelText")&&this.label.set("text", |
|
this.get("labelText"));null!=this.get("labelHTML")&&this.label.set("html",this.get("labelHTML"));null!=this.get("labelAriaLabel")&&this.label.set("ariaLabel",this.get("labelAriaLabel"))}_changed(){super._changed();(this.isDirty("pointTo")||this.isDirty("pointerOrientation"))&&this._updateBackground();this.isDirty("tooltipTarget")&&this.updateBackgroundColor();if(this.isDirty("keepTargetHover"))if(this.get("keepTargetHover")){const a=this.get("background");this._keepHoverDp=new k.MultiDisposer([a.events.on("pointerover", |
|
c=>{if(c=this.get("tooltipTarget"))c.parent&&c.parent.getPrivate("tooltipTarget")==c&&(c=c.parent),c.hover()}),a.events.on("pointerout",c=>{if(c=this.get("tooltipTarget"))c.parent&&c.parent.getPrivate("tooltipTarget")==c&&(c=c.parent),this._htmlContentHovered||c.unhover()})]);this.label.onPrivate("htmlElement",c=>{this._keepHoverDp&&c&&this._keepHoverDp.disposers.push(k.addEventListener(c,"pointerleave",d=>{d=this.root._renderer.getEvent(d);a.events.dispatch("pointerout",{type:"pointerout",originalEvent:d.event, |
|
point:d.point,simulated:!1,target:a})}))})}else this._keepHoverDp&&(this._keepHoverDp.dispose(),this._keepHoverDp=void 0)}_onShow(){super._onShow();this.updateBackgroundColor()}updateBackgroundColor(){let a=this.get("tooltipTarget");const c=this.get("background");let d,b;a&&c&&(d=a.get("fill"),b=a.get("stroke"),null==d&&(d=b),this.get("getFillFromSprite")&&(this._fillDp&&this._fillDp.dispose(),null!=d&&c.set("fill",d),this._fillDp=a.on("fill",f=>{null!=f&&(c.set("fill",f),this._updateTextColor(f))}), |
|
this._disposers.push(this._fillDp)),this.get("getStrokeFromSprite")&&(this._strokeDp&&this._strokeDp.dispose(),null!=d&&c.set("stroke",d),this._strokeDp=a.on("fill",f=>{null!=f&&c.set("stroke",f)}),this._disposers.push(this._strokeDp)),this.get("getLabelFillFromSprite")&&(this._labelDp&&this._labelDp.dispose(),null!=d&&this.label.set("fill",d),this._labelDp=a.on("fill",f=>{null!=f&&this.label.set("fill",f)}),this._disposers.push(this._labelDp)));this._updateTextColor(d)}_updateTextColor(a){this.get("autoTextColor")&& |
|
(null==a&&(a=this.get("background").get("fill")),null==a&&(a=this._root.interfaceColors.get("background")),a instanceof k.Color&&this.label.set("fill",k.Color.alternative(a,this._root.interfaceColors.get("alternativeText"),this._root.interfaceColors.get("text"))))}_setDataItem(a){super._setDataItem(a);this.label._setDataItem(a)}_updateBackground(){super.updateBackground();var a=this._root.container;if(a){var c=.5,d=.5,b=this.get("centerX");b instanceof k.Percent&&(c=b.value);b=this.get("centerY"); |
|
b instanceof k.Percent&&(d=b.value);var f=a.width(),h=a.height(),e=this.parent;b=a=0;e&&(a=e.x(),b=e.y(),e=e.get("layerMargin"))&&(a+=e.left||0,b+=e.top||0,f+=(e.left||0)+(e.right||0),h+=(e.top||0)+(e.bottom||0));e=this.get("bounds",{left:-a,top:-b,right:f-a,bottom:h-b});this._updateBounds();a=this.width();b=this.height();0===a&&(a=this._w);0===b&&(b=this._h);let g=this.get("pointTo",{x:f/2,y:h/2});f=g.x;h=g.y;let q=this.get("pointerOrientation"),p=this.get("background"),m=0,t=0,u=0;p instanceof r&& |
|
(m=p.get("pointerLength",0),u=t=p.get("strokeWidth",0)/2,p.set("width",a),p.set("height",b));var l=0,n=0;l=e.right-e.left;n=e.bottom-e.top;"horizontal"==q||"left"==q||"right"==q?(t=0,"horizontal"==q?f>e.left+l/2?(f-=a*(1-c)+m,u*=-1):f+=a*c+m:"left"==q?f+=a*(1-c)+m:(f-=a*c+m,u*=-1)):(u=0,"vertical"==q?h>e.top+b/2+m?h-=b*(1-d)+m:(h+=b*d+m,t*=-1):"down"==q?h-=b*(1-d)+m:(h+=b*d+m,t*=-1));f=k.fitToRange(f,e.left+a*c,e.left+l-a*(1-c))+u;h=k.fitToRange(h,e.top+b*d,e.top+n-b*(1-d))-t;l=g.x-f+a*c+u;n=g.y- |
|
h+b*d-t;this._fx=f;this._fy=h;c=this.get("animationDuration",0);0<c&&this.get("visible")&&.1<this.get("opacity")?(d=this.get("animationEasing"),this.animate({key:"x",to:f,duration:c,easing:d}),this.animate({key:"y",to:h,duration:c,easing:d})):(this.set("x",f),this.set("y",h));p instanceof r&&(p.set("pointerX",l),p.set("pointerY",n));0<a&&(this._w=a);0<b&&(this._h=b)}}}Object.defineProperty(v,"className",{enumerable:!0,configurable:!0,writable:!0,value:"Tooltip"});Object.defineProperty(v,"classNames", |
|
{enumerable:!0,configurable:!0,writable:!0,value:k.Container.classNames.concat([v.className])});w.Tooltip=v}); |