UNPKG

highcharts

Version:
15 lines 7.09 kB
!/** * Highstock JS v13.0.1 (2026-08-17) * @module highcharts/modules/pointandfigure * @requires highcharts * @requires highcharts/modules/stock * * Point and figure series type for Highcharts Stock * * (c) 2010-2026 Highsoft AS * * Author: Kamil Musiałowski * * A commercial license may be required depending on use, * see www.highcharts.com/license */function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(e._Highcharts,e._Highcharts.SeriesRegistry):"function"==typeof define&&define.amd?define("highcharts/modules/pointandfigure",["highcharts/highcharts"],function(e){return t(e,e.SeriesRegistry)}):"object"==typeof exports?exports["highcharts/modules/pointandfigure"]=t(e._Highcharts,e._Highcharts.SeriesRegistry):e.Highcharts=t(e.Highcharts,e.Highcharts.SeriesRegistry)}("u"<typeof window?this:window,(e,t)=>(()=>{"use strict";var r,s={512(e){e.exports=t},944(t){t.exports=e}};let o={};function i(e){let t=o[e];if(void 0!==t)return t.exports;let r=o[e]={exports:{}};return s[e](r,r.exports,i),r.exports}i.n=e=>{let t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{if(Array.isArray(t))for(var r=0;r<t.length;){var s=t[r++],o=t[r++];i.o(e,s)?0===o&&r++:0===o?Object.defineProperty(e,s,{enumerable:!0,value:t[r++]}):Object.defineProperty(e,s,{enumerable:!0,get:o})}else for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);let n={};i.d(n,{default:()=>M});var a=i(944),l=i.n(a);let{setLength:h,splice:u}={convertToNumber:function(e,t){switch(typeof e){case"boolean":return+!!e;case"number":return isNaN(e)&&!t?null:e;default:return isNaN(e=parseFloat(`${e??""}`))&&!t?null:e}},setLength:function(e,t,r){return Array.isArray(e)?(e.length=t,e):e[r?"subarray":"slice"](0,t)},splice:function(e,t,r,s,o=[]){if(Array.isArray(e))return Array.isArray(o)||(o=Array.from(o)),{removed:e.splice(t,r,...o),array:e};let i=Object.getPrototypeOf(e).constructor,n=e[s?"subarray":"slice"](t,t+r),a=new i(e.length-r+o.length);return a.set(e.subarray(0,t),0),a.set(o,t),a.set(e.subarray(t+r),t+o.length),{removed:n,array:a}}},p=class{constructor(e={}){this.isDataTable=!0,this.autoId=!e.id,this.columns={},this.id=e.id||(0,a.uniqueKey)(),this.rowCount=0,this.versionTag=(0,a.uniqueKey)();let t=0;(0,a.objectEach)(e.columns||{},(e,r)=>{this.columns[r]=e.slice(),t=Math.max(t,e.length)}),this.applyRowCount(t)}applyRowCount(e){this.rowCount=e,(0,a.objectEach)(this.columns,(t,r)=>{t.length!==e&&(this.columns[r]=h(t,e))})}deleteRows(e,t=1){if(t>0&&e<this.rowCount){let r=0;(0,a.objectEach)(this.columns,(s,o)=>{this.columns[o]=u(s,e,t).array,r=s.length}),this.rowCount=r}(0,a.fireEvent)(this,"afterDeleteRows",{rowIndex:e,rowCount:t}),this.versionTag=(0,a.uniqueKey)()}getColumn(e,t){return this.columns[e]}getColumns(e,t){return(e||Object.keys(this.columns)).reduce((e,t)=>(e[t]=this.columns[t],e),{})}getRowObject(e,t){let r={},s=this.columns;for(let o of(t??(t=Object.keys(this.columns)),t))r[o]=s[o]?.[e];return r}setColumn(e,t=[],r=0,s){this.setColumns({[e]:t},r,s)}setColumns(e,t,r){let s=this.rowCount;(0,a.objectEach)(e,(e,t)=>{this.columns[t]=e.slice(),s=e.length}),this.applyRowCount(s),r?.silent||((0,a.fireEvent)(this,"afterSetColumns"),this.versionTag=(0,a.uniqueKey)())}setRow(e,t=this.rowCount,r,s){var o;let{columns:i}=this,n=r?this.rowCount+1:t+1,l=Object.keys(e);if(s?.addColumns!==!1)for(let e=0,t=l.length;e<t;e++)i[o=l[e]]||(i[o]=Array(this.rowCount));(0,a.objectEach)(i,(s,o)=>{s&&(r?s=u(s,t,0,!0,[e[o]]).array:s[t]=o in e?e[o]:s[t],i[o]=s)}),this.applyRowCount(Math.max(n,this.rowCount)),s?.silent||((0,a.fireEvent)(this,"afterSetRows",{rowIndex:t}),this.versionTag=(0,a.uniqueKey)())}getModified(){return this.modified||this}};var c=i(512),d=i.n(c);let{seriesTypes:{scatter:{prototype:{pointClass:m}}}}=d(),f=class extends m{resolveMarker(){let e=this.series.options;this.marker=this.options.marker=this.upTrend?e.markerUp:e.marker,this.color=this.options.marker.lineColor}resolveColor(){super.resolveColor(),this.resolveMarker()}getClassName(){return super.getClassName.call(this)+(this.upTrend?" highcharts-point-up":" highcharts-point-down")}},{composed:g}=l();function y(e,t,r,s){return[["M",e,t],["L",e+r,t+s],["M",e+r,t],["L",e,t+s],["Z"]]}(r||(r={})).compose=function(e){(0,a.pushUnique)(g,"Series.CrossSymbol")&&(e.prototype.symbols.cross=y)};let b=r,{composed:C}=l(),{scatter:w,column:{prototype:x}}=d().seriesTypes;class v extends w{constructor(){super(...arguments),this.allowDG=!1}static compose(e){(0,a.pushUnique)(C,"pointandfigure")&&b.compose(e)}init(){super.init.apply(this,arguments),this.pnfDataGroups=[]}getProcessedData(){let e;if(!this.pnfDataGroups)return{modified:this.dataTable.getModified(),cropped:!1,cropStart:0,closestPointRange:1};let t=this.options,r=this.getColumn("x",!0),s=this.getColumn("y",!0),o=t.boxSize,i=(0,a.isNumber)(o)?o:(0,a.relativeLength)(o,s[0]),n=this.pnfDataGroups,l=i*t.reversalAmount,h=this.dataTable.getModified(),u=h===this.dataTable?h:new p;function c(e,t,r){let s=n[n.length-1],o=t?1:-1,a=Math.floor(o*(e-r)/i);for(let e=1;e<=a;e++){let t=r+i*e*o;s.y.push(t)}}if(this.calculatedBoxSize=i,this.isDirtyData||0===n.length){this.pnfDataGroups.length=0;for(let t=0;t<s.length;t++){let o=r[t],a=s[t],l=s[0];if(a-l>=i){e=!0,n.push({x:o,y:[a],upTrend:e});break}if(l-a>=i){e=!1,n.push({x:o,y:[a],upTrend:e});break}}s.forEach((t,s)=>{let o,a=r[s],h=(o=n[n.length-1].y)[o.length-1];e&&(t-h>=i&&c(t,e,h),h-t>=l&&(e=!1,n.push({x:a,y:[],upTrend:e}),c(t,e,h))),!e&&(h-t>=i&&c(t,e,h),t-h>=l&&(e=!0,n.push({x:a,y:[],upTrend:e}),c(t,e,h)))})}let d=[],m=[],f=[],g=[];return n.forEach(e=>{let t=e.x,r=e.upTrend;e.y.forEach(e=>{m.push(t),f.push(e),g.push(r),d.push({x:t,y:e,upTrend:r})})}),u.setColumn("x",m),u.setColumn("y",f),u.setColumn("upTrend",g),this.pnfDataGroups=n,this.hasProcessedDataTable=!0,{modified:u,cropped:!1,cropStart:0,closestPointRange:1}}markerAttribs(e){let t=this.options,r={},s=e.pos();return r.width=this.markerWidth,r.height=this.markerHeight,s&&r.width&&r.height&&(r.x=s[0]-Math.round(r.width)/2,r.y=s[1]-Math.round(r.height)/2),t.crisp&&r.x&&(r.x=Math.floor(r.x)),r}translate(){let e=this.getColumnMetrics(),t=this.calculatedBoxSize;this.markerWidth=e.width+e.paddedWidth+e.offset,this.markerHeight=this.yAxis.toPixels(0)-this.yAxis.toPixels(t),super.translate()}}v.defaultOptions=(0,a.merge)(w.defaultOptions,{boxSize:"1%",reversalAmount:3,tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b> {series.name}</b><br/>Close: {point.y:.2f}<br/>',headerFormat:""},turboThreshold:0,groupPadding:.2,pointPadding:.1,pointRange:null,dataGrouping:{enabled:!1},markerUp:{symbol:"cross",lineColor:"#00FF00",lineWidth:2},marker:{symbol:"circle",fillColor:"transparent",lineColor:"#FF0000",lineWidth:2},legendSymbol:"lineMarker"}),(0,a.extend)(v.prototype,{takeOrdinalPosition:!0,pnfDataGroups:[],getColumnMetrics:x.getColumnMetrics,pointClass:f,sorted:!0}),d().registerSeriesType("pointandfigure",v);let k=l();v.compose(k.Renderer);let M=l();return n.default})());