{"version":3,"sources":["jsdelivr-header.js","/npm/downsample-lttb@0.0.1/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,OAAO,QAAQ,YAAc,SAAS,EAAQ,GAC7C,OAAO,4BAA4B,EAAQ,EAC5C,EAEA,IAAI,MAAQ,KAAK,MAChB,IAAM,KAAK,IAEZ,SAAS,4BAA4B,EAAM,GAE1C,IAAI,EAAc,EAAK,OACvB,GAAI,GAAa,GAA6B,IAAd,EAC/B,OAAO,EAGR,IAOC,EACA,EACA,EACA,EAVG,EAAU,GACb,EAAgB,EAGb,GAAS,EAAc,IAAM,EAAY,GAEzC,EAAI,EAMR,EAAS,KAAoB,EAAM,GAEnC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,EAAG,IAAK,CAWvC,IARA,IAAI,EAAQ,EACX,EAAQ,EACR,EAAmB,OAAS,EAAI,GAAM,GAAU,EAChD,EAAmB,OAAS,EAAI,GAAM,GAAU,EAG7C,GAFJ,EAAgB,EAAgB,EAAc,EAAgB,GAEvB,EAE/B,EAAgB,EAAe,IACrC,GAAwC,EAA/B,EAAM,GAAmB,GAClC,GAAwC,EAA/B,EAAM,GAAmB,GAEpC,GAAS,EACT,GAAS,EAGT,IAAI,EAAa,OAAQ,EAAI,GAAK,GAAU,EAC3C,EAAa,OAAQ,EAAI,GAAK,GAAU,EAGrC,EAA6B,EAAjB,EAAM,GAAK,GAC1B,EAA6B,EAAjB,EAAM,GAAK,GAIxB,IAFA,EAAW,GAAQ,EAEX,EAAa,EAAU,KAE9B,EAEQ,GAFD,KAAO,EAAY,IAAY,EAAM,GAAc,GAAM,IAC3D,EAAY,EAAM,GAAc,KAAU,EAAQ,KAE3C,IACX,EAAW,EACX,EAAiB,EAAM,GACvB,EAAS,GAIX,EAAS,KAAoB,EAC7B,EAAI,CACL,CAIA,OAFA,EAAS,KAAoB,EAAM,EAAc,GAE1C,CACR","file":"/npm/downsample-lttb@0.0.1/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/downsample-lttb@0.0.1/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","module.exports.processData = function(series, threshold) {\r\n\treturn largestTriangleThreeBuckets(series, threshold);\r\n}\r\n\r\nvar floor = Math.floor,\r\n\tabs = Math.abs;\r\n\r\nfunction largestTriangleThreeBuckets(data, threshold) {\r\n\r\n\tvar data_length = data.length;\r\n\tif (threshold >= data_length || threshold === 0) {\r\n\t\treturn data; // Nothing to do\r\n\t}\r\n\r\n\tvar sampled = [],\r\n\t\tsampled_index = 0;\r\n\r\n\t// Bucket size. Leave room for start and end data points\r\n\tvar every = (data_length - 2) / (threshold - 2);\r\n\r\n\tvar a = 0,  // Initially a is the first point in the triangle\r\n\t\tmax_area_point,\r\n\t\tmax_area,\r\n\t\tarea,\r\n\t\tnext_a;\r\n\r\n\tsampled[ sampled_index++ ] = data[ a ]; // Always add the first point\r\n\r\n\tfor (var i = 0; i < threshold - 2; i++) {\r\n\r\n\t\t// Calculate point average for next bucket (containing c)\r\n\t\tvar avg_x = 0,\r\n\t\t\tavg_y = 0,\r\n\t\t\tavg_range_start  = floor( ( i + 1 ) * every ) + 1,\r\n\t\t\tavg_range_end    = floor( ( i + 2 ) * every ) + 1;\r\n\t\tavg_range_end = avg_range_end < data_length ? avg_range_end : data_length;\r\n\r\n\t\tvar avg_range_length = avg_range_end - avg_range_start;\r\n\r\n\t\tfor ( ; avg_range_start<avg_range_end; avg_range_start++ ) {\r\n\t\t  avg_x += data[ avg_range_start ][ 0 ] * 1; // * 1 enforces Number (value may be Date)\r\n\t\t  avg_y += data[ avg_range_start ][ 1 ] * 1;\r\n\t\t}\r\n\t\tavg_x /= avg_range_length;\r\n\t\tavg_y /= avg_range_length;\r\n\r\n\t\t// Get the range for this bucket\r\n\t\tvar range_offs = floor( (i + 0) * every ) + 1,\r\n\t\t\trange_to   = floor( (i + 1) * every ) + 1;\r\n\r\n\t\t// Point a\r\n\t\tvar point_a_x = data[ a ][ 0 ] * 1, // enforce Number (value may be Date)\r\n\t\t\tpoint_a_y = data[ a ][ 1 ] * 1;\r\n\r\n\t\tmax_area = area = -1;\r\n\r\n\t\tfor ( ; range_offs < range_to; range_offs++ ) {\r\n\t\t\t// Calculate triangle area over three buckets\r\n\t\t\tarea = abs( ( point_a_x - avg_x ) * ( data[ range_offs ][ 1 ] - point_a_y ) -\r\n\t\t\t\t\t\t( point_a_x - data[ range_offs ][ 0 ] ) * ( avg_y - point_a_y )\r\n\t\t\t\t\t  ) * 0.5;\r\n\t\t\tif ( area > max_area ) {\r\n\t\t\t\tmax_area = area;\r\n\t\t\t\tmax_area_point = data[ range_offs ];\r\n\t\t\t\tnext_a = range_offs; // Next a is this b\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsampled[ sampled_index++ ] = max_area_point; // Pick this point from the bucket\r\n\t\ta = next_a; // This a is the next a (chosen b)\r\n\t}\r\n\r\n\tsampled[ sampled_index++ ] = data[ data_length - 1 ]; // Always add last\r\n\r\n\treturn sampled;\r\n}\r\n\r\n"]}