diff --git a/app/controllers/concerns/chart_table_concern.rb b/app/controllers/concerns/chart_table_concern.rb index dc403da..4317be6 100644 --- a/app/controllers/concerns/chart_table_concern.rb +++ b/app/controllers/concerns/chart_table_concern.rb @@ -16,10 +16,10 @@ module ChartTableConcern def setup_chart_and_table_data ransack_params = params[:q] || {} - # Setup chart data first using original time range (no sorting from table) unless turbo_frame_request? - setup_chart_formatters + # Setup chart data first using original time range (no sorting from table) setup_chart_data(ransack_params) + setup_chart_formatters end # Setup table data using zoom parameters if present, otherwise use chart parameters @@ -31,7 +31,10 @@ def setup_chart_data(ransack_params) chart_ransack_query = chart_model.ransack(chart_ransack_params) @chart_data = chart_class.new( ransack_query: chart_ransack_query, - group_by: group_by, + period_type: period_type, + start_time: @start_time, + end_time: @end_time, + start_duration: @start_duration, **chart_options ).to_rails_chart end @@ -57,10 +60,14 @@ def setup_time_and_response_ranges end def setup_chart_formatters - @xaxis_formatter = RailsPulse::ChartFormatters.occurred_at_as_time_or_date(@time_diff_hours) + @xaxis_formatter = RailsPulse::ChartFormatters.period_as_time_or_date(@time_diff_hours) @tooltip_formatter = RailsPulse::ChartFormatters.tooltip_as_time_or_date_with_marker(@time_diff_hours) end + def period_type + @time_diff_hours <= 25 ? :hour : :day + end + def group_by @time_diff_hours <= 25 ? :group_by_hour : :group_by_day end diff --git a/app/controllers/concerns/response_range_concern.rb b/app/controllers/concerns/response_range_concern.rb index ec4ba0d..56eddce 100644 --- a/app/controllers/concerns/response_range_concern.rb +++ b/app/controllers/concerns/response_range_concern.rb @@ -5,10 +5,13 @@ def setup_duration_range(type = :route) ransack_params = params[:q] || {} thresholds = RailsPulse.configuration.public_send("#{type}_thresholds") - if ransack_params[:duration].present? - selected_range = ransack_params[:duration] + # Check both avg_duration (for Summary) and duration (for Request/Operation) + duration_param = ransack_params[:avg_duration] || ransack_params[:duration] + + if duration_param.present? + selected_range = duration_param start_duration = - case ransack_params[:duration].to_sym + case duration_param.to_sym when :slow then thresholds[:slow] when :very_slow then thresholds[:very_slow] when :critical then thresholds[:critical] diff --git a/app/controllers/concerns/time_range_concern.rb b/app/controllers/concerns/time_range_concern.rb index f6fe840..97e809b 100644 --- a/app/controllers/concerns/time_range_concern.rb +++ b/app/controllers/concerns/time_range_concern.rb @@ -17,17 +17,13 @@ def setup_time_range ransack_params = params[:q] || {} - if ransack_params[:requests_occurred_at_gteq].present? - # Custom time range from routes index chart zoom which filters requests through an association - start_time = parse_time_param(ransack_params[:requests_occurred_at_gteq]) - end_time = parse_time_param(ransack_params[:requests_occurred_at_lt]) - elsif ransack_params[:occurred_at_gteq].present? + if ransack_params[:occurred_at_gteq].present? # Custom time range from chart zoom where there is no association start_time = parse_time_param(ransack_params[:occurred_at_gteq]) end_time = parse_time_param(ransack_params[:occurred_at_lt]) - elsif ransack_params[:occurred_at_range] + elsif ransack_params[:period_start_range] # Predefined time range from dropdown - selected_time_range = ransack_params[:occurred_at_range] + selected_time_range = ransack_params[:period_start_range] start_time = case selected_time_range.to_sym when :last_day then 1.day.ago diff --git a/app/controllers/rails_pulse/application_controller.rb b/app/controllers/rails_pulse/application_controller.rb index 065a44c..98e778e 100644 --- a/app/controllers/rails_pulse/application_controller.rb +++ b/app/controllers/rails_pulse/application_controller.rb @@ -54,8 +54,11 @@ def fallback_http_basic_auth end def session_pagination_limit - # Keep default small for optimal performance - session[:pagination_limit] || 10 + # Use URL param if present, otherwise session, otherwise default + limit = params[:limit].presence || session[:pagination_limit] || 10 + # Update session if URL param was used + session[:pagination_limit] = limit.to_i if params[:limit].present? + limit.to_i end def store_pagination_limit(limit) diff --git a/app/controllers/rails_pulse/dashboard_controller.rb b/app/controllers/rails_pulse/dashboard_controller.rb index a96b973..0cfed2b 100644 --- a/app/controllers/rails_pulse/dashboard_controller.rb +++ b/app/controllers/rails_pulse/dashboard_controller.rb @@ -1,6 +1,18 @@ module RailsPulse class DashboardController < ApplicationController def index + @average_query_times_metric_card = RailsPulse::Routes::Cards::AverageResponseTimes.new(route: nil).to_metric_card + @percentile_response_times_metric_card = RailsPulse::Routes::Cards::PercentileResponseTimes.new(route: nil).to_metric_card + @request_count_totals_metric_card = RailsPulse::Routes::Cards::RequestCountTotals.new(route: nil).to_metric_card + @error_rate_per_route_metric_card = RailsPulse::Routes::Cards::ErrorRatePerRoute.new(route: nil).to_metric_card + + # Generate chart data for inline rendering + @average_response_time_chart_data = RailsPulse::Dashboard::Charts::AverageResponseTime.new.to_chart_data + @p95_response_time_chart_data = RailsPulse::Dashboard::Charts::P95ResponseTime.new.to_chart_data + + # Generate table data for inline rendering + @slow_routes_table_data = RailsPulse::Dashboard::Tables::SlowRoutes.new.to_table_data + @slow_queries_table_data = RailsPulse::Dashboard::Tables::SlowQueries.new.to_table_data end end end diff --git a/app/controllers/rails_pulse/queries_controller.rb b/app/controllers/rails_pulse/queries_controller.rb index a675b64..982e599 100644 --- a/app/controllers/rails_pulse/queries_controller.rb +++ b/app/controllers/rails_pulse/queries_controller.rb @@ -5,21 +5,29 @@ class QueriesController < ApplicationController before_action :set_query, only: :show def index + @average_query_times_metric_card = RailsPulse::Queries::Cards::AverageQueryTimes.new(query: @query).to_metric_card + @percentile_query_times_metric_card = RailsPulse::Queries::Cards::PercentileQueryTimes.new(query: @query).to_metric_card + @execution_rate_metric_card = RailsPulse::Queries::Cards::ExecutionRate.new(query: @query).to_metric_card + setup_chart_and_table_data end def show + @average_query_times_metric_card = RailsPulse::Queries::Cards::AverageQueryTimes.new(query: @query).to_metric_card + @percentile_query_times_metric_card = RailsPulse::Queries::Cards::PercentileQueryTimes.new(query: @query).to_metric_card + @execution_rate_metric_card = RailsPulse::Queries::Cards::ExecutionRate.new(query: @query).to_metric_card + setup_chart_and_table_data end private def chart_model - show_action? ? Operation : Query + Summary end def table_model - show_action? ? Operation : Query + show_action? ? Operation : Summary end def chart_class @@ -31,75 +39,56 @@ def chart_options end def build_chart_ransack_params(ransack_params) - base_params = ransack_params.except(:s) + base_params = ransack_params.except(:s).merge( + avg_duration: @start_duration, + period_start_gteq: Time.at(@start_time), + period_start_lt: Time.at(@end_time) + ) if show_action? - base_params.merge( - query_id_eq: @query.id, - occurred_at_gteq: Time.at(@start_time), - occurred_at_lt: Time.at(@end_time), - duration_gteq: @start_duration - ) + base_params.merge(summarizable_id_eq: @query.id) else - base_params.merge( - operations_occurred_at_gteq: Time.at(@start_time), - operations_occurred_at_lt: Time.at(@end_time), - operations_duration_gteq: @start_duration - ) + base_params end end def build_table_ransack_params(ransack_params) if show_action? + # For Operation model on show page ransack_params.merge( - query_id_eq: @query.id, occurred_at_gteq: Time.at(@table_start_time), occurred_at_lt: Time.at(@table_end_time), - duration_gteq: @start_duration - ) + query_id_eq: @query.id + ).tap { |params| params[:duration_gteq] = @start_duration if @start_duration } else + # For Summary model on index page ransack_params.merge( - operations_occurred_at_gteq: Time.at(@table_start_time), - operations_occurred_at_lt: Time.at(@table_end_time), - operations_duration_gteq: @start_duration + avg_duration: @start_duration, + period_start_gteq: Time.at(@table_start_time), + period_start_lt: Time.at(@table_end_time) ) end end def default_table_sort - "occurred_at desc" + show_action? ? "occurred_at desc" : "period_start desc" end def build_table_results if show_action? - @ransack_query.result.select("id", "occurred_at", "duration") + @ransack_query.result else - # Optimized query: Use INNER JOIN since we only want queries with operations in time range - # This dramatically reduces the dataset before aggregation - @ransack_query.result(distinct: false) - .joins("INNER JOIN rails_pulse_operations ON rails_pulse_operations.query_id = rails_pulse_queries.id") - .where("rails_pulse_operations.occurred_at >= ? AND rails_pulse_operations.occurred_at < ?", - Time.at(@table_start_time), Time.at(@table_end_time)) - .group("rails_pulse_queries.id, rails_pulse_queries.normalized_sql, rails_pulse_queries.created_at, rails_pulse_queries.updated_at") - .select( - "rails_pulse_queries.*", - optimized_aggregations_sql - ) + Queries::Tables::Index.new( + ransack_query: @ransack_query, + period_type: period_type, + start_time: @start_time, + params: params + ).to_table end end private - def optimized_aggregations_sql - # Efficient aggregations that work with our composite indexes - [ - "COALESCE(AVG(rails_pulse_operations.duration), 0) AS average_query_time_ms", - "COUNT(rails_pulse_operations.id) AS execution_count", - "COALESCE(SUM(rails_pulse_operations.duration), 0) AS total_time_consumed", - "MAX(rails_pulse_operations.occurred_at) AS occurred_at" - ].join(", ") - end - def show_action? action_name == "show" end @@ -108,14 +97,13 @@ def pagination_method show_action? ? :set_pagination_limit : :store_pagination_limit end - def set_query - @query = Query.find(params[:id]) + def setup_time_and_response_ranges + @start_time, @end_time, @selected_time_range, @time_diff_hours = setup_time_range + @start_duration, @selected_response_range = setup_duration_range(:query) end - def setup_metic_cards - @average_query_times_card = Queries::Cards::AverageQueryTimes.new(query: @query).to_metric_card - @percentile_response_times_card = Queries::Cards::PercentileQueryTimes.new(query: @query).to_metric_card - @execution_rate_card = Queries::Cards::ExecutionRate.new(query: @query).to_metric_card + def set_query + @query = Query.find(params[:id]) end end end diff --git a/app/controllers/rails_pulse/requests_controller.rb b/app/controllers/rails_pulse/requests_controller.rb index 9512334..ee5f66d 100644 --- a/app/controllers/rails_pulse/requests_controller.rb +++ b/app/controllers/rails_pulse/requests_controller.rb @@ -5,6 +5,11 @@ class RequestsController < ApplicationController before_action :set_request, only: :show def index + @average_response_times_metric_card = RailsPulse::Routes::Cards::AverageResponseTimes.new(route: nil).to_metric_card + @percentile_response_times_metric_card = RailsPulse::Routes::Cards::PercentileResponseTimes.new(route: nil).to_metric_card + @request_count_totals_metric_card = RailsPulse::Routes::Cards::RequestCountTotals.new(route: nil).to_metric_card + @error_rate_per_route_metric_card = RailsPulse::Routes::Cards::ErrorRatePerRoute.new(route: nil).to_metric_card + setup_chart_and_table_data end @@ -15,7 +20,7 @@ def show private def chart_model - Request + Summary end def table_model @@ -27,14 +32,13 @@ def chart_class end def chart_options - { route: true } + {} end def build_chart_ransack_params(ransack_params) ransack_params.except(:s).merge( - occurred_at_gteq: Time.at(@start_time), - occurred_at_lt: Time.at(@end_time), - duration_gteq: @start_duration + period_start_gteq: Time.at(@start_time), + period_start_lt: Time.at(@end_time) ) end @@ -52,13 +56,14 @@ def default_table_sort def build_table_results @ransack_query.result - .includes(:route) + .joins(:route) .select( "rails_pulse_requests.id", "rails_pulse_requests.occurred_at", "rails_pulse_requests.duration", "rails_pulse_requests.status", - "rails_pulse_requests.route_id" + "rails_pulse_requests.route_id", + "rails_pulse_routes.path" ) end diff --git a/app/controllers/rails_pulse/routes_controller.rb b/app/controllers/rails_pulse/routes_controller.rb index 19bd880..0d7d226 100644 --- a/app/controllers/rails_pulse/routes_controller.rb +++ b/app/controllers/rails_pulse/routes_controller.rb @@ -5,21 +5,30 @@ class RoutesController < ApplicationController before_action :set_route, only: :show def index + setup_metric_cards setup_chart_and_table_data end def show + setup_metric_cards setup_chart_and_table_data end private + def setup_metric_cards + @average_query_times_metric_card = RailsPulse::Routes::Cards::AverageResponseTimes.new(route: @route).to_metric_card + @percentile_response_times_metric_card = RailsPulse::Routes::Cards::PercentileResponseTimes.new(route: @route).to_metric_card + @request_count_totals_metric_card = RailsPulse::Routes::Cards::RequestCountTotals.new(route: @route).to_metric_card + @error_rate_per_route_metric_card = RailsPulse::Routes::Cards::ErrorRatePerRoute.new(route: @route).to_metric_card + end + def chart_model - show_action? ? Request : Route + Summary end def table_model - show_action? ? Request : Route + show_action? ? Request : Summary end def chart_class @@ -31,49 +40,49 @@ def chart_options end def build_chart_ransack_params(ransack_params) - base_params = ransack_params.except(:s).merge(duration_field => @start_duration) + base_params = ransack_params.except(:s).merge( + duration_field => @start_duration, + period_start_gteq: Time.at(@start_time), + period_start_lt: Time.at(@end_time) + ) if show_action? - base_params.merge( - route_id_eq: @route.id, - occurred_at_gteq: @start_time, - occurred_at_lt: @end_time - ) + base_params.merge(summarizable_id_eq: @route.id) else - base_params.merge( - requests_occurred_at_gteq: @start_time, - requests_occurred_at_lt: @end_time - ) + base_params end end def build_table_ransack_params(ransack_params) - base_params = ransack_params.merge(duration_field => @start_duration) - if show_action? - base_params.merge( - route_id_eq: @route.id, + # For Request model on show page + ransack_params.merge( + duration_gteq: @start_duration, occurred_at_gteq: Time.at(@table_start_time), - occurred_at_lt: Time.at(@table_end_time) + occurred_at_lt: Time.at(@table_end_time), + route_id_eq: @route.id ) else - base_params.merge( - requests_occurred_at_gteq: Time.at(@table_start_time), - requests_occurred_at_lt: Time.at(@table_end_time) + # For Summary model on index page + ransack_params.merge( + duration_field => @start_duration, + period_start_gteq: Time.at(@table_start_time), + period_start_lt: Time.at(@table_end_time) ) end end def default_table_sort - show_action? ? "occurred_at desc" : "average_response_time_ms desc" + show_action? ? "occurred_at desc" : "avg_duration desc" end def build_table_results if show_action? - @ransack_query.result.select("id", "route_id", "occurred_at", "duration", "status") + @ransack_query.result else Routes::Tables::Index.new( ransack_query: @ransack_query, + period_type: period_type, start_time: @start_time, params: params ).to_table @@ -81,7 +90,7 @@ def build_table_results end def duration_field - show_action? ? :duration_gteq : :requests_duration_gteq + :avg_duration end def show_action? diff --git a/app/helpers/rails_pulse/chart_formatters.rb b/app/helpers/rails_pulse/chart_formatters.rb index a16ed4d..91fbc56 100644 --- a/app/helpers/rails_pulse/chart_formatters.rb +++ b/app/helpers/rails_pulse/chart_formatters.rb @@ -1,6 +1,6 @@ module RailsPulse module ChartFormatters - def self.occurred_at_as_time_or_date(time_diff_hours) + def self.period_as_time_or_date(time_diff_hours) if time_diff_hours <= 25 <<~JS function(value) { @@ -25,7 +25,7 @@ def self.tooltip_as_time_or_date_with_marker(time_diff_hours) const data = params[0]; const date = new Date(data.axisValue * 1000); const dateString = date.getHours().toString().padStart(2, '0') + ':00'; - return `${dateString}
${data.marker} ${parseInt(data.data.value)} ms`; + return `${dateString}
${data.marker} ${parseInt(data.data)} ms`; } JS else @@ -34,7 +34,7 @@ def self.tooltip_as_time_or_date_with_marker(time_diff_hours) const data = params[0]; const date = new Date(data.axisValue * 1000); const dateString = date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' }); - return `${dateString}
${data.marker} ${parseInt(data.data.value)} ms`; + return `${dateString}
${data.marker} ${parseInt(data.data)} ms`; } JS end diff --git a/app/javascript/rails_pulse/controllers/pagination_controller.js b/app/javascript/rails_pulse/controllers/pagination_controller.js index ab83039..e4af415 100644 --- a/app/javascript/rails_pulse/controllers/pagination_controller.js +++ b/app/javascript/rails_pulse/controllers/pagination_controller.js @@ -11,33 +11,25 @@ export default class extends Controller { this.restorePaginationLimit() } - // Update pagination limit via AJAX and reload the page to reflect changes - async updateLimit() { + // Update pagination limit and refresh the turbo frame + updateLimit() { const limit = this.limitTarget.value - // Save to session storage + // Save to session storage only - no server request needed sessionStorage.setItem(this.storageKeyValue, limit) - try { - // Send AJAX request to update server session using Rails.ajax - const response = await fetch(this.urlValue, { - method: 'PATCH', - headers: { - 'Content-Type': 'application/json', - 'X-CSRF-Token': this.getCSRFToken() - }, - body: JSON.stringify({ limit: limit }) - }) - - if (response.ok) { - // Reload the page to reflect the new pagination limit - // This preserves all current URL parameters including Ransack search params - window.location.reload() - } else { - throw new Error(`HTTP error! status: ${response.status}`) - } - } catch (error) { - console.error('Error updating pagination limit:', error) + // Find the closest turbo frame and reload it to apply new pagination + const turboFrame = this.element.closest('turbo-frame') + if (turboFrame) { + // Add the limit as a URL parameter so server picks it up + const currentUrl = new URL(window.location) + currentUrl.searchParams.set('limit', limit) + turboFrame.src = currentUrl.pathname + currentUrl.search + } else { + // Fallback to page reload if not within a turbo frame + const currentUrl = new URL(window.location) + currentUrl.searchParams.set('limit', limit) + window.location.href = currentUrl.pathname + currentUrl.search } } @@ -60,9 +52,7 @@ export default class extends Controller { // Only set if the current value is different (prevents unnecessary DOM updates) if (this.limitTarget.value !== savedLimit) { this.limitTarget.value = savedLimit - - // Trigger a change event to ensure any other listeners are notified - this.limitTarget.dispatchEvent(new Event('change', { bubbles: true })) + // Don't trigger change event when restoring from session - prevents infinite loops } } } diff --git a/app/jobs/rails_pulse/backfill_summaries_job.rb b/app/jobs/rails_pulse/backfill_summaries_job.rb new file mode 100644 index 0000000..6e67f9c --- /dev/null +++ b/app/jobs/rails_pulse/backfill_summaries_job.rb @@ -0,0 +1,41 @@ +module RailsPulse + class BackfillSummariesJob < ApplicationJob + queue_as :low_priority + + def perform(start_date, end_date, period_types = [ "hour", "day" ]) + start_date = start_date.to_datetime + end_date = end_date.to_datetime + + period_types.each do |period_type| + backfill_period(period_type, start_date, end_date) + end + end + + private + + def backfill_period(period_type, start_date, end_date) + current = Summary.normalize_period_start(period_type, start_date) + period_end = Summary.calculate_period_end(period_type, end_date) + + while current <= period_end + Rails.logger.info "[RailsPulse] Backfilling #{period_type} summary for #{current}" + + SummaryService.new(period_type, current).perform + + current = advance_period(current, period_type) + + # Add small delay to avoid overwhelming the database + sleep 0.1 + end + end + + def advance_period(time, period_type) + case period_type + when "hour" then time + 1.hour + when "day" then time + 1.day + when "week" then time + 1.week + when "month" then time + 1.month + end + end + end +end diff --git a/app/jobs/rails_pulse/summary_job.rb b/app/jobs/rails_pulse/summary_job.rb new file mode 100644 index 0000000..de484ef --- /dev/null +++ b/app/jobs/rails_pulse/summary_job.rb @@ -0,0 +1,53 @@ +module RailsPulse + class SummaryJob < ApplicationJob + queue_as :low_priority + + def perform(target_hour = nil) + target_hour ||= 1.hour.ago.beginning_of_hour + + # Always run hourly summary + process_hourly_summary(target_hour) + + # Check if we should run daily summary (at the start of a new day) + if target_hour.hour == 0 + process_daily_summary(target_hour.to_date - 1.day) + + # Check if we should run weekly summary (Monday at midnight) + if target_hour.wday == 1 + process_weekly_summary((target_hour.to_date - 1.week).beginning_of_week) + end + + # Check if we should run monthly summary (first day of month) + if target_hour.day == 1 + process_monthly_summary((target_hour.to_date - 1.month).beginning_of_month) + end + end + rescue => e + Rails.logger.error "[RailsPulse] Summary job failed: #{e.message}" + Rails.logger.error e.backtrace.join("\n") + raise + end + + private + + def process_hourly_summary(hour) + Rails.logger.info "[RailsPulse] Processing hourly summary for #{hour}" + SummaryService.new("hour", hour).perform + end + + def process_daily_summary(date) + Rails.logger.info "[RailsPulse] Processing daily summary for #{date}" + SummaryService.new("day", date).perform + end + + def process_weekly_summary(week_start) + Rails.logger.info "[RailsPulse] Processing weekly summary for week starting #{week_start}" + SummaryService.new("week", week_start).perform + end + + def process_monthly_summary(month_start) + Rails.logger.info "[RailsPulse] Processing monthly summary for month starting #{month_start}" + SummaryService.new("month", month_start).perform + end + end +end diff --git a/app/models/rails_pulse/dashboard/charts/average_response_time.rb b/app/models/rails_pulse/dashboard/charts/average_response_time.rb index 84d6ce5..fd3e0ce 100644 --- a/app/models/rails_pulse/dashboard/charts/average_response_time.rb +++ b/app/models/rails_pulse/dashboard/charts/average_response_time.rb @@ -8,17 +8,38 @@ def to_chart_data end_date = Time.current.to_date date_range = (start_date..end_date) - # Get the actual data - requests = RailsPulse::Request.where("occurred_at >= ?", start_date.beginning_of_day) - actual_data = requests - .group_by_day(:occurred_at) - .average(:duration) + # Get the actual data from Summary records (routes) + summaries = RailsPulse::Summary.where( + summarizable_type: "RailsPulse::Route", + period_type: "day", + period_start: start_date.beginning_of_day..end_date.end_of_day + ) + + # Group by day manually for cross-database compatibility + actual_data = {} + summaries.each do |summary| + date = summary.period_start.to_date + + if actual_data[date] + actual_data[date][:total_weighted] += (summary.avg_duration || 0) * (summary.count || 0) + actual_data[date][:total_count] += (summary.count || 0) + else + actual_data[date] = { + total_weighted: (summary.avg_duration || 0) * (summary.count || 0), + total_count: (summary.count || 0) + } + end + end + + # Convert to final values + actual_data = actual_data.transform_values do |data| + data[:total_count] > 0 ? (data[:total_weighted] / data[:total_count]).round(0) : 0 + end # Fill in all dates with zero values for missing days date_range.each_with_object({}) do |date, result| formatted_date = date.strftime("%b %-d") - avg_duration = actual_data[date] - result[formatted_date] = avg_duration&.round(0) || 0 + result[formatted_date] = actual_data[date] || 0 end end end diff --git a/app/models/rails_pulse/dashboard/charts/p95_response_time.rb b/app/models/rails_pulse/dashboard/charts/p95_response_time.rb index 0737fb8..6e76d5c 100644 --- a/app/models/rails_pulse/dashboard/charts/p95_response_time.rb +++ b/app/models/rails_pulse/dashboard/charts/p95_response_time.rb @@ -3,32 +3,28 @@ module Dashboard module Charts class P95ResponseTime def to_chart_data - start_date = 2.weeks.ago.beginning_of_day + # Create a range of all dates in the past 2 weeks + start_date = 2.weeks.ago.beginning_of_day.to_date + end_date = Time.current.to_date + date_range = (start_date..end_date) - # Performance optimization: Single query instead of N+1 queries (15 queries -> 1 query) - # Fetch all requests for 2-week period, pre-sorted by date and duration - # For optimal performance, ensure index exists: (occurred_at, duration) - requests_by_day = RailsPulse::Request - .where(occurred_at: start_date..) - .select("occurred_at, duration, DATE(occurred_at) as request_date") - .order("request_date, duration") - .group_by { |r| r.request_date.to_date } + # Get the actual data from Summary records (queries for P95) + summaries = RailsPulse::Summary.where( + summarizable_type: "RailsPulse::Query", + period_type: "day", + period_start: start_date.beginning_of_day..end_date.end_of_day + ) - # Generate all dates in range and calculate P95 for each - (start_date.to_date..Time.current.to_date).each_with_object({}) do |date, hash| - day_requests = requests_by_day[date] || [] - - if day_requests.empty? - p95_value = 0 - else - # Calculate P95 from in-memory sorted array (already sorted by DB) - count = day_requests.length - p95_index = (count * 0.95).ceil - 1 - p95_value = day_requests[p95_index].duration.round(0) - end + actual_data = summaries + .group_by_day(:period_start, time_zone: Time.zone) + .average(:p95_duration) + .transform_keys { |date| date.to_date } + .transform_values { |avg| avg&.round(0) || 0 } + # Fill in all dates with zero values for missing days + date_range.each_with_object({}) do |date, result| formatted_date = date.strftime("%b %-d") - hash[formatted_date] = p95_value + result[formatted_date] = actual_data[date] || 0 end end end diff --git a/app/models/rails_pulse/dashboard/tables/slow_queries.rb b/app/models/rails_pulse/dashboard/tables/slow_queries.rb index d2f7191..a96fed6 100644 --- a/app/models/rails_pulse/dashboard/tables/slow_queries.rb +++ b/app/models/rails_pulse/dashboard/tables/slow_queries.rb @@ -8,11 +8,22 @@ def to_table_data this_week_start = 1.week.ago.beginning_of_week this_week_end = Time.current.end_of_week - # Fetch query data for this week - query_data = RailsPulse::Operation.joins(:query) - .where(occurred_at: this_week_start..this_week_end) - .group("rails_pulse_queries.id, rails_pulse_queries.normalized_sql") - .select("rails_pulse_queries.id, rails_pulse_queries.normalized_sql, AVG(rails_pulse_operations.duration) as avg_duration, COUNT(*) as request_count, MAX(rails_pulse_operations.occurred_at) as last_seen") + # Fetch query data from Summary records for this week + query_data = RailsPulse::Summary + .joins("INNER JOIN rails_pulse_queries ON rails_pulse_queries.id = rails_pulse_summaries.summarizable_id") + .where( + summarizable_type: "RailsPulse::Query", + period_type: "day", + period_start: this_week_start..this_week_end + ) + .group("rails_pulse_summaries.summarizable_id, rails_pulse_queries.normalized_sql") + .select( + "rails_pulse_summaries.summarizable_id as query_id", + "rails_pulse_queries.normalized_sql", + "SUM(rails_pulse_summaries.avg_duration * rails_pulse_summaries.count) / SUM(rails_pulse_summaries.count) as avg_duration", + "SUM(rails_pulse_summaries.count) as request_count", + "MAX(rails_pulse_summaries.period_end) as last_seen" + ) .order("avg_duration DESC") .limit(5) @@ -20,8 +31,8 @@ def to_table_data data_rows = query_data.map do |record| { query_text: truncate_query(record.normalized_sql), - query_id: record.id, - query_link: "/rails_pulse/queries/#{record.id}", + query_id: record.query_id, + query_link: "/rails_pulse/queries/#{record.query_id}", average_time: record.avg_duration.to_f.round(0), request_count: record.request_count, last_request: time_ago_in_words(record.last_seen) diff --git a/app/models/rails_pulse/dashboard/tables/slow_routes.rb b/app/models/rails_pulse/dashboard/tables/slow_routes.rb index cda141f..cf07279 100644 --- a/app/models/rails_pulse/dashboard/tables/slow_routes.rb +++ b/app/models/rails_pulse/dashboard/tables/slow_routes.rb @@ -5,58 +5,51 @@ class SlowRoutes include RailsPulse::FormattingHelper def to_table_data - # Get data for this week and last week + # Get data for this week this_week_start = 1.week.ago.beginning_of_week this_week_end = Time.current.end_of_week - last_week_start = 2.weeks.ago.beginning_of_week - last_week_end = 1.week.ago.beginning_of_week - # Get this week's data - this_week_data = RailsPulse::Request.joins(:route) - .where(occurred_at: this_week_start..this_week_end) - .group("rails_pulse_routes.path, rails_pulse_routes.id") - .select("rails_pulse_routes.path, rails_pulse_routes.id, AVG(rails_pulse_requests.duration) as avg_duration, COUNT(*) as request_count") + # Fetch route data from Summary records for this week + route_data = RailsPulse::Summary + .joins("INNER JOIN rails_pulse_routes ON rails_pulse_routes.id = rails_pulse_summaries.summarizable_id") + .where( + summarizable_type: "RailsPulse::Route", + period_type: "day", + period_start: this_week_start..this_week_end + ) + .group("rails_pulse_summaries.summarizable_id, rails_pulse_routes.path") + .select( + "rails_pulse_summaries.summarizable_id as route_id", + "rails_pulse_routes.path", + "SUM(rails_pulse_summaries.avg_duration * rails_pulse_summaries.count) / SUM(rails_pulse_summaries.count) as avg_duration", + "SUM(rails_pulse_summaries.count) as request_count", + "MAX(rails_pulse_summaries.period_end) as last_seen" + ) .order("avg_duration DESC") .limit(5) - # Get last week's data for comparison - last_week_averages = RailsPulse::Request.joins(:route) - .where(occurred_at: last_week_start..last_week_end) - .group("rails_pulse_routes.path") - .average("rails_pulse_requests.duration") - - # Build result array matching test expectations - this_week_data.map do |record| - this_week_avg = record.avg_duration.to_f.round(0) - last_week_avg = last_week_averages[record.path]&.round(0) || 0 - - # Calculate percentage change - percentage_change = if last_week_avg == 0 - this_week_avg > 0 ? 100.0 : 0.0 - else - ((this_week_avg - last_week_avg) / last_week_avg.to_f * 100).round(1) - end - - # Determine trend (worse = slower response times) - trend = if last_week_avg == 0 - this_week_avg > 0 ? "worse" : "stable" - elsif this_week_avg > last_week_avg - "worse" # Slower = worse - elsif this_week_avg < last_week_avg - "better" # Faster = better - else - "stable" - end - + # Build data rows + data_rows = route_data.map do |record| { route_path: record.path, - this_week_avg: this_week_avg, - last_week_avg: last_week_avg, - percentage_change: percentage_change, + route_id: record.route_id, + route_link: "/rails_pulse/routes/#{record.route_id}", + average_time: record.avg_duration.to_f.round(0), request_count: record.request_count, - trend: trend + last_request: time_ago_in_words(record.last_seen) } end + + # Return new structure with columns and data + { + columns: [ + { field: :route_path, label: "Route", link_to: :route_link, class: "w-auto" }, + { field: :average_time, label: "Average Time", class: "w-32" }, + { field: :request_count, label: "Requests", class: "w-24" }, + { field: :last_request, label: "Last Request", class: "w-32" } + ], + data: data_rows + } end end end diff --git a/app/models/rails_pulse/queries/cards/average_query_times.rb b/app/models/rails_pulse/queries/cards/average_query_times.rb index 41a14e3..4a2ff32 100644 --- a/app/models/rails_pulse/queries/cards/average_query_times.rb +++ b/app/models/rails_pulse/queries/cards/average_query_times.rb @@ -2,42 +2,66 @@ module RailsPulse module Queries module Cards class AverageQueryTimes - def initialize(query:) + def initialize(query: nil) @query = query end def to_metric_card - operations = if @query - RailsPulse::Operation.where(query: @query) - else - RailsPulse::Operation.all - end - - # Calculate overall average response time - average_query_time = operations.average(:duration)&.round(0) || 0 - - # Calculate trend by comparing last 7 days vs previous 7 days last_7_days = 7.days.ago.beginning_of_day previous_7_days = 14.days.ago.beginning_of_day - current_period_avg = operations.where("occurred_at >= ?", last_7_days).average(:duration) || 0 - previous_period_avg = operations.where("occurred_at >= ? AND occurred_at < ?", previous_7_days, last_7_days).average(:duration) || 0 - percentage = previous_period_avg.zero? ? 0 : ((previous_period_avg - current_period_avg) / previous_period_avg * 100).abs.round(1) - trend_icon = percentage < 0.1 ? "move-right" : current_period_avg < previous_period_avg ? "trending-down" : "trending-up" + # Single query to get all aggregated metrics with conditional sums + base_query = RailsPulse::Summary.where( + summarizable_type: "RailsPulse::Query", + period_type: "day", + period_start: 2.weeks.ago.beginning_of_day..Time.current + ) + base_query = base_query.where(summarizable_id: @query.id) if @query + + metrics = base_query.select( + "SUM(avg_duration * count) AS total_weighted_duration", + "SUM(count) AS total_requests", + "SUM(CASE WHEN period_start >= '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN avg_duration * count ELSE 0 END) AS current_weighted_duration", + "SUM(CASE WHEN period_start >= '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN count ELSE 0 END) AS current_requests", + "SUM(CASE WHEN period_start >= '#{previous_7_days.strftime('%Y-%m-%d %H:%M:%S')}' AND period_start < '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN avg_duration * count ELSE 0 END) AS previous_weighted_duration", + "SUM(CASE WHEN period_start >= '#{previous_7_days.strftime('%Y-%m-%d %H:%M:%S')}' AND period_start < '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN count ELSE 0 END) AS previous_requests" + ).first + + # Calculate metrics from single query result + average_query_time = metrics.total_requests > 0 ? (metrics.total_weighted_duration / metrics.total_requests).round(0) : 0 + current_period_avg = metrics.current_requests > 0 ? (metrics.current_weighted_duration / metrics.current_requests) : 0 + previous_period_avg = metrics.previous_requests > 0 ? (metrics.previous_weighted_duration / metrics.previous_requests) : 0 + + percentage = previous_period_avg.zero? ? 0 : ((previous_period_avg - current_period_avg) / previous_period_avg * 100).abs.round(1) + trend_icon = percentage < 0.1 ? "move-right" : current_period_avg < previous_period_avg ? "trending-down" : "trending-up" trend_amount = previous_period_avg.zero? ? "0%" : "#{percentage}%" - sparkline_data = operations - .group_by_week(:occurred_at, time_zone: "UTC") - .average(:duration) - .each_with_object({}) do |(date, avg), hash| - formatted_date = date.strftime("%b %-d") - value = avg&.round(0) || 0 - hash[formatted_date] = { - value: value + # Separate query for sparkline data - manually calculate weighted averages by week + sparkline_data = {} + base_query.each do |summary| + week_start = summary.period_start.beginning_of_week + formatted_date = week_start.strftime("%b %-d") + + if sparkline_data[formatted_date] + sparkline_data[formatted_date][:total_weighted] += (summary.avg_duration || 0) * (summary.count || 0) + sparkline_data[formatted_date][:total_count] += (summary.count || 0) + else + sparkline_data[formatted_date] = { + total_weighted: (summary.avg_duration || 0) * (summary.count || 0), + total_count: (summary.count || 0) } end + end + + # Convert to final format + sparkline_data = sparkline_data.transform_values do |data| + weighted_avg = data[:total_count] > 0 ? (data[:total_weighted] / data[:total_count]).round(0) : 0 + { value: weighted_avg } + end { + id: "average_query_times", + context: "queries", title: "Average Query Time", summary: "#{average_query_time} ms", line_chart_data: sparkline_data, diff --git a/app/models/rails_pulse/queries/cards/execution_rate.rb b/app/models/rails_pulse/queries/cards/execution_rate.rb index 1449a1b..83928f7 100644 --- a/app/models/rails_pulse/queries/cards/execution_rate.rb +++ b/app/models/rails_pulse/queries/cards/execution_rate.rb @@ -7,44 +7,51 @@ def initialize(query: nil) end def to_metric_card - operations = if @query - RailsPulse::Operation.where(query: @query) - else - RailsPulse::Operation.all - end - - # Calculate total request count - total_request_count = operations.count - - # Calculate trend by comparing last 7 days vs previous 7 days last_7_days = 7.days.ago.beginning_of_day previous_7_days = 14.days.ago.beginning_of_day - current_period_count = operations.where("occurred_at >= ?", last_7_days).count - previous_period_count = operations.where("occurred_at >= ? AND occurred_at < ?", previous_7_days, last_7_days).count + + # Single query to get all count metrics with conditional aggregation + base_query = RailsPulse::Summary.where( + summarizable_type: "RailsPulse::Query", + period_type: "day", + period_start: 2.weeks.ago.beginning_of_day..Time.current + ) + base_query = base_query.where(summarizable_id: @query.id) if @query + + metrics = base_query.select( + "SUM(count) AS total_count", + "SUM(CASE WHEN period_start >= '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN count ELSE 0 END) AS current_count", + "SUM(CASE WHEN period_start >= '#{previous_7_days.strftime('%Y-%m-%d %H:%M:%S')}' AND period_start < '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN count ELSE 0 END) AS previous_count" + ).first + + # Calculate metrics from single query result + total_execution_count = metrics.total_count || 0 + current_period_count = metrics.current_count || 0 + previous_period_count = metrics.previous_count || 0 percentage = previous_period_count.zero? ? 0 : ((previous_period_count - current_period_count) / previous_period_count.to_f * 100).abs.round(1) trend_icon = percentage < 0.1 ? "move-right" : current_period_count < previous_period_count ? "trending-down" : "trending-up" trend_amount = previous_period_count.zero? ? "0%" : "#{percentage}%" - sparkline_data = operations - .group_by_week(:occurred_at, time_zone: "UTC") - .count - .each_with_object({}) do |(date, count), hash| - formatted_date = date.strftime("%b %-d") - hash[formatted_date] = { - value: count - } + # Separate query for sparkline data - group by week using Rails + sparkline_data = base_query + .group_by_week(:period_start, time_zone: "UTC") + .sum(:count) + .each_with_object({}) do |(week_start, total_count), hash| + formatted_date = week_start.strftime("%b %-d") + value = total_count || 0 + hash[formatted_date] = { value: value } end - # Calculate average operations per minute - min_time = operations.minimum(:occurred_at) - max_time = operations.maximum(:occurred_at) - total_minutes = min_time && max_time && min_time != max_time ? (max_time - min_time) / 60.0 : 1 - average_operations_per_minute = total_request_count / total_minutes + # Calculate average executions per minute over 2-week period + total_minutes = 2.weeks / 1.minute + average_executions_per_minute = total_execution_count / total_minutes { + id: "execution_rate", + context: "queries", title: "Execution Rate", - summary: "#{average_operations_per_minute.round(2)} / min", + summary: "#{average_executions_per_minute.round(2)} / min", line_chart_data: sparkline_data, trend_icon: trend_icon, trend_amount: trend_amount, diff --git a/app/models/rails_pulse/queries/cards/percentile_query_times.rb b/app/models/rails_pulse/queries/cards/percentile_query_times.rb index 1caf303..6b08cb5 100644 --- a/app/models/rails_pulse/queries/cards/percentile_query_times.rb +++ b/app/models/rails_pulse/queries/cards/percentile_query_times.rb @@ -7,58 +7,47 @@ def initialize(query: nil) end def to_metric_card - operations = if @query - RailsPulse::Operation.where(query: @query) - else - RailsPulse::Operation.all - end - - # Calculate overall 95th percentile response time - count = operations.count - percentile_95th = if count > 0 - operations.select("duration").order("duration").limit(1).offset((count * 0.95).floor).pluck(:duration).first || 0 - else - 0 - end - - # Calculate trend by comparing last 7 days vs previous 7 days for 95th percentile last_7_days = 7.days.ago.beginning_of_day previous_7_days = 14.days.ago.beginning_of_day - current_period = operations.where("occurred_at >= ?", last_7_days) - current_count = current_period.count - current_period_95th = if current_count > 0 - current_period.select("duration").order("duration").limit(1).offset((current_count * 0.95).floor).pluck(:duration).first || 0 - else - 0 - end - - previous_period = operations.where("occurred_at >= ? AND occurred_at < ?", previous_7_days, last_7_days) - previous_count = previous_period.count - previous_period_95th = if previous_count > 0 - previous_period.select("duration").order("duration").limit(1).offset((previous_count * 0.95).floor).pluck(:duration).first || 0 - else - 0 - end - - percentage = previous_period_95th.zero? ? 0 : ((previous_period_95th - current_period_95th) / previous_period_95th * 100).abs.round(1) - trend_icon = percentage < 0.1 ? "move-right" : current_period_95th < previous_period_95th ? "trending-down" : "trending-up" - trend_amount = previous_period_95th.zero? ? "0%" : "#{percentage}%" - - sparkline_data = operations - .group_by_week(:occurred_at, time_zone: "UTC") - .average(:duration) - .each_with_object({}) do |(date, avg), hash| - formatted_date = date.strftime("%b %-d") - value = avg&.round(0) || 0 - hash[formatted_date] = { - value: value - } + # Single query to get all P95 metrics with conditional aggregation + base_query = RailsPulse::Summary.where( + summarizable_type: "RailsPulse::Query", + period_type: "day", + period_start: 2.weeks.ago.beginning_of_day..Time.current + ) + base_query = base_query.where(summarizable_id: @query.id) if @query + + metrics = base_query.select( + "AVG(p95_duration) AS overall_p95", + "AVG(CASE WHEN period_start >= '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN p95_duration ELSE NULL END) AS current_p95", + "AVG(CASE WHEN period_start >= '#{previous_7_days.strftime('%Y-%m-%d %H:%M:%S')}' AND period_start < '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN p95_duration ELSE NULL END) AS previous_p95" + ).first + + # Calculate metrics from single query result + p95_query_time = (metrics.overall_p95 || 0).round(0) + current_period_p95 = metrics.current_p95 || 0 + previous_period_p95 = metrics.previous_p95 || 0 + + percentage = previous_period_p95.zero? ? 0 : ((previous_period_p95 - current_period_p95) / previous_period_p95 * 100).abs.round(1) + trend_icon = percentage < 0.1 ? "move-right" : current_period_p95 < previous_period_p95 ? "trending-down" : "trending-up" + trend_amount = previous_period_p95.zero? ? "0%" : "#{percentage}%" + + # Separate query for sparkline data - group by week using Rails + sparkline_data = base_query + .group_by_week(:period_start, time_zone: "UTC") + .average(:p95_duration) + .each_with_object({}) do |(week_start, avg_p95), hash| + formatted_date = week_start.strftime("%b %-d") + value = (avg_p95 || 0).round(0) + hash[formatted_date] = { value: value } end { + id: "percentile_query_times", + context: "queries", title: "95th Percentile Query Time", - summary: "#{percentile_95th} ms", + summary: "#{p95_query_time} ms", line_chart_data: sparkline_data, trend_icon: trend_icon, trend_amount: trend_amount, diff --git a/app/models/rails_pulse/queries/charts/average_query_times.rb b/app/models/rails_pulse/queries/charts/average_query_times.rb index a7e787b..55cdd19 100644 --- a/app/models/rails_pulse/queries/charts/average_query_times.rb +++ b/app/models/rails_pulse/queries/charts/average_query_times.rb @@ -2,34 +2,35 @@ module RailsPulse module Queries module Charts class AverageQueryTimes - def initialize(ransack_query:, group_by: :group_by_day, query: nil) + def initialize(ransack_query:, period_type: nil, query: nil, start_time: nil, end_time: nil, start_duration: nil) @ransack_query = ransack_query - @group_by = group_by + @period_type = period_type @query = query + @start_time = start_time + @end_time = end_time + @start_duration = start_duration end def to_rails_chart - # Let groupdate handle the grouping and series filling - actual_data = if @query - @ransack_query.result(distinct: false) - .public_send(@group_by, "occurred_at", series: true, time_zone: "UTC") - .average(:duration) - else - @ransack_query.result(distinct: false) - .left_joins(:operations) - .public_send(@group_by, "rails_pulse_operations.occurred_at", series: true, time_zone: "UTC") - .average("rails_pulse_operations.duration") - end + summaries = @ransack_query.result(distinct: false).where( + summarizable_type: "RailsPulse::Query", + period_type: @period_type + ) + + summaries = summaries.where(summarizable_id: @query.id) if @query + summaries = summaries + .group(:period_start) + .having("AVG(avg_duration) > ?", @start_duration || 0) + .average(:avg_duration) + .transform_keys(&:to_i) - # Convert to the format expected by rails_charts - actual_data.transform_keys do |k| - if k.respond_to?(:to_i) - k.to_i - else - # For Date objects, use beginning_of_day to get consistent UTC timestamps - k.is_a?(Date) ? k.beginning_of_day.to_i : k.to_time.to_i - end - end.transform_values { |v| { value: v.to_f } } + # Pad missing data points with zeros + step = @period_type == :hour ? 1.hour : 1.day + data = {} + (@start_time.to_i..@end_time.to_i).step(step) do |timestamp| + data[timestamp.to_i] = summaries[timestamp.to_i].to_f.round(2) + end + data end end end diff --git a/app/models/rails_pulse/queries/tables/index.rb b/app/models/rails_pulse/queries/tables/index.rb new file mode 100644 index 0000000..d22d8c1 --- /dev/null +++ b/app/models/rails_pulse/queries/tables/index.rb @@ -0,0 +1,38 @@ +module RailsPulse + module Queries + module Tables + class Index + def initialize(ransack_query:, period_type: nil, start_time:, params:, query: nil) + @ransack_query = ransack_query + @period_type = period_type + @start_time = start_time + @params = params + @query = query + end + + def to_table + summaries = @ransack_query.result(distinct: false) + .joins("INNER JOIN rails_pulse_queries ON rails_pulse_queries.id = rails_pulse_summaries.summarizable_id") + .where( + summarizable_type: "RailsPulse::Query", + period_type: @period_type + ) + + summaries = summaries.where(summarizable_id: @query.id) if @query + summaries = summaries + .group("rails_pulse_summaries.summarizable_id") + .select( + "rails_pulse_summaries.summarizable_id", + "rails_pulse_summaries.summarizable_type", + "rails_pulse_queries.id as query_id, rails_pulse_queries.normalized_sql", + "AVG(rails_pulse_summaries.avg_duration) as avg_duration", + "MAX(rails_pulse_summaries.max_duration) as max_duration", + "SUM(rails_pulse_summaries.count) as execution_count", + "SUM(rails_pulse_summaries.count * rails_pulse_summaries.avg_duration) as total_time_consumed", + "MAX(rails_pulse_summaries.period_end) as occurred_at" + ) + end + end + end + end +end diff --git a/app/models/rails_pulse/query.rb b/app/models/rails_pulse/query.rb index c83cada..590989d 100644 --- a/app/models/rails_pulse/query.rb +++ b/app/models/rails_pulse/query.rb @@ -4,6 +4,7 @@ class Query < RailsPulse::ApplicationRecord # Associations has_many :operations, class_name: "RailsPulse::Operation", inverse_of: :query + has_many :summaries, as: :summarizable, class_name: "RailsPulse::Summary", dependent: :destroy # Validations validates :normalized_sql, presence: true, uniqueness: true diff --git a/app/models/rails_pulse/requests/charts/average_response_times.rb b/app/models/rails_pulse/requests/charts/average_response_times.rb index 5052e3c..c1dbfa1 100644 --- a/app/models/rails_pulse/requests/charts/average_response_times.rb +++ b/app/models/rails_pulse/requests/charts/average_response_times.rb @@ -2,27 +2,35 @@ module RailsPulse module Requests module Charts class AverageResponseTimes - def initialize(ransack_query:, group_by: :group_by_day, route: nil) + def initialize(ransack_query:, period_type: nil, route: nil, start_time: nil, end_time: nil, start_duration: nil) @ransack_query = ransack_query - @group_by = group_by + @period_type = period_type @route = route + @start_time = start_time + @end_time = end_time + @start_duration = start_duration end def to_rails_chart - # Let groupdate handle the grouping and series filling - actual_data = @ransack_query.result(distinct: false) - .public_send(@group_by, "occurred_at", series: true, time_zone: "UTC") - .average(:duration) + summaries = @ransack_query.result(distinct: false).where( + summarizable_type: "RailsPulse::Route", + period_type: @period_type + ) - # Convert to the format expected by rails_charts - actual_data.transform_keys do |k| - if k.respond_to?(:to_i) - k.to_i - else - # For Date objects, use beginning_of_day to get consistent UTC timestamps - k.is_a?(Date) ? k.beginning_of_day.to_i : k.to_time.to_i - end - end.transform_values { |v| { value: v.to_f } } + summaries = summaries.where(summarizable_id: @route.id) if @route + summaries = summaries + .group(:period_start) + .having("AVG(avg_duration) > ?", @start_duration || 0) + .average(:avg_duration) + .transform_keys(&:to_i) + + # Pad missing data points with zeros + step = @period_type == :hour ? 1.hour : 1.day + data = {} + (@start_time.to_i..@end_time.to_i).step(step) do |timestamp| + data[timestamp.to_i] = summaries[timestamp.to_i].to_f.round(2) + end + data end end end diff --git a/app/models/rails_pulse/route.rb b/app/models/rails_pulse/route.rb index 2af6a34..2a60518 100644 --- a/app/models/rails_pulse/route.rb +++ b/app/models/rails_pulse/route.rb @@ -4,6 +4,7 @@ class Route < RailsPulse::ApplicationRecord # Associations has_many :requests, class_name: "RailsPulse::Request", foreign_key: "route_id", dependent: :restrict_with_exception + has_many :summaries, as: :summarizable, class_name: "RailsPulse::Summary", dependent: :destroy # Validations validates :method, presence: true diff --git a/app/models/rails_pulse/routes/cards/average_response_times.rb b/app/models/rails_pulse/routes/cards/average_response_times.rb index 8230122..9be3216 100644 --- a/app/models/rails_pulse/routes/cards/average_response_times.rb +++ b/app/models/rails_pulse/routes/cards/average_response_times.rb @@ -7,39 +7,61 @@ def initialize(route:) end def to_metric_card - requests = if @route - RailsPulse::Request.where(route: @route) - else - RailsPulse::Request.all - end + last_7_days = 7.days.ago.beginning_of_day + previous_7_days = 14.days.ago.beginning_of_day - requests = requests.where("occurred_at >= ?", 2.weeks.ago.beginning_of_day) + # Single query to get all aggregated metrics with conditional sums + base_query = RailsPulse::Summary.where( + summarizable_type: "RailsPulse::Route", + period_type: "day", + period_start: 2.weeks.ago.beginning_of_day..Time.current + ) + base_query = base_query.where(summarizable_id: @route.id) if @route - # Calculate overall average response time - average_response_time = requests.average(:duration)&.round(0) || 0 + metrics = base_query.select( + "SUM(avg_duration * count) AS total_weighted_duration", + "SUM(count) AS total_requests", + "SUM(CASE WHEN period_start >= '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN avg_duration * count ELSE 0 END) AS current_weighted_duration", + "SUM(CASE WHEN period_start >= '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN count ELSE 0 END) AS current_requests", + "SUM(CASE WHEN period_start >= '#{previous_7_days.strftime('%Y-%m-%d %H:%M:%S')}' AND period_start < '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN avg_duration * count ELSE 0 END) AS previous_weighted_duration", + "SUM(CASE WHEN period_start >= '#{previous_7_days.strftime('%Y-%m-%d %H:%M:%S')}' AND period_start < '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN count ELSE 0 END) AS previous_requests" + ).take - # Calculate trend by comparing last 7 days vs previous 7 days - last_7_days = 7.days.ago.beginning_of_day - previous_7_days = 14.days.ago.beginning_of_day - current_period_avg = requests.where("occurred_at >= ?", last_7_days).average(:duration) || 0 - previous_period_avg = requests.where("occurred_at >= ? AND occurred_at < ?", previous_7_days, last_7_days).average(:duration) || 0 + # Calculate metrics from single query result + average_response_time = metrics.total_requests > 0 ? (metrics.total_weighted_duration / metrics.total_requests).round(0) : 0 + current_period_avg = metrics.current_requests > 0 ? (metrics.current_weighted_duration / metrics.current_requests) : 0 + previous_period_avg = metrics.previous_requests > 0 ? (metrics.previous_weighted_duration / metrics.previous_requests) : 0 - percentage = previous_period_avg.zero? ? 0 : ((previous_period_avg - current_period_avg) / previous_period_avg * 100).abs.round(1) - trend_icon = percentage < 0.1 ? "move-right" : current_period_avg < previous_period_avg ? "trending-down" : "trending-up" + percentage = previous_period_avg.zero? ? 0 : ((previous_period_avg - current_period_avg) / previous_period_avg * 100).abs.round(1) + trend_icon = percentage < 0.1 ? "move-right" : current_period_avg < previous_period_avg ? "trending-down" : "trending-up" trend_amount = previous_period_avg.zero? ? "0%" : "#{percentage}%" - sparkline_data = requests - .group_by_week(:occurred_at, time_zone: "UTC") - .average(:duration) - .each_with_object({}) do |(date, avg), hash| - formatted_date = date.strftime("%b %-d") - value = avg&.round(0) || 0 - hash[formatted_date] = { - value: value + # Separate query for sparkline data - manually calculate weighted averages by week + sparkline_data = {} + base_query.each do |summary| + week_start = summary.period_start.beginning_of_week + formatted_date = week_start.strftime("%b %-d") + + if sparkline_data[formatted_date] + sparkline_data[formatted_date][:total_weighted] += (summary.avg_duration || 0) * (summary.count || 0) + sparkline_data[formatted_date][:total_count] += (summary.count || 0) + else + sparkline_data[formatted_date] = { + total_weighted: (summary.avg_duration || 0) * (summary.count || 0), + total_count: (summary.count || 0) } end + end + + # Convert to final format + sparkline_data = sparkline_data.transform_values do |data| + weighted_avg = data[:total_count] > 0 ? (data[:total_weighted] / data[:total_count]).round(0) : 0 + { value: weighted_avg } + end { + id: "average_response_times", + context: "routes", title: "Average Response Time", summary: "#{average_response_time} ms", line_chart_data: sparkline_data, diff --git a/app/models/rails_pulse/routes/cards/error_rate_per_route.rb b/app/models/rails_pulse/routes/cards/error_rate_per_route.rb index b8ca30e..fbfae81 100644 --- a/app/models/rails_pulse/routes/cards/error_rate_per_route.rb +++ b/app/models/rails_pulse/routes/cards/error_rate_per_route.rb @@ -7,60 +7,53 @@ def initialize(route: nil) end def to_metric_card - # Calculate error rate for each route or a specific route - routes = if @route - RailsPulse::Route.where(id: @route) - else - RailsPulse::Route.all - end + last_7_days = 7.days.ago.beginning_of_day + previous_7_days = 14.days.ago.beginning_of_day - routes = routes.where("occurred_at >= ?", 2.weeks.ago.beginning_of_day) + # Single query to get all error metrics with conditional aggregation + base_query = RailsPulse::Summary.where( + summarizable_type: "RailsPulse::Route", + period_type: "day", + period_start: 2.weeks.ago.beginning_of_day..Time.current + ) + base_query = base_query.where(summarizable_id: @route.id) if @route - error_rates = routes.joins(:requests) - .select("rails_pulse_routes.id, rails_pulse_routes.path, COUNT(rails_pulse_requests.id) as total_requests, SUM(CASE WHEN rails_pulse_requests.is_error = true THEN 1 ELSE 0 END) as error_count") - .group("rails_pulse_routes.id, rails_pulse_routes.path") - .map do |route| - error_rate = route.error_count.to_f / route.total_requests * 100 - { - path: route.path, - error_rate: error_rate.round(2) - } - end + metrics = base_query.select( + "SUM(error_count) AS total_errors", + "SUM(count) AS total_requests", + "SUM(CASE WHEN period_start >= '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN error_count ELSE 0 END) AS current_errors", + "SUM(CASE WHEN period_start >= '#{previous_7_days.strftime('%Y-%m-%d %H:%M:%S')}' AND period_start < '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN error_count ELSE 0 END) AS previous_errors" + ).take - # Calculate overall error rate summary as errors per day - requests = @route ? RailsPulse::Request.where(route: @route) : RailsPulse::Request.all - total_errors = requests.where(is_error: true).count - min_time = requests.minimum(:occurred_at) - max_time = requests.maximum(:occurred_at) - total_days = min_time && max_time && min_time != max_time ? (max_time - min_time) / 1.day : 1 - errors_per_day = total_errors / total_days - error_rate_summary = "#{errors_per_day.round(2)} / day" + # Calculate metrics from single query result + total_errors = metrics.total_errors || 0 + total_requests = metrics.total_requests || 0 + current_period_errors = metrics.current_errors || 0 + previous_period_errors = metrics.previous_errors || 0 - # Generate sparkline data - sparkline_data = requests - .where(is_error: true) - .group_by_week(:occurred_at, time_zone: "UTC") - .count - .each_with_object({}) do |(date, count), hash| - formatted_date = date.strftime("%b %-d") - hash[formatted_date] = { - value: count - } - end + # Calculate overall error rate percentage + overall_error_rate = total_requests > 0 ? (total_errors.to_f / total_requests * 100).round(2) : 0 - # Determine trend direction and amount - last_7_days = 7.days.ago.beginning_of_day - previous_7_days = 14.days.ago.beginning_of_day - current_period_errors = requests.where("occurred_at >= ? AND is_error = ?", last_7_days, true).count - previous_period_errors = requests.where("occurred_at >= ? AND occurred_at < ? AND is_error = ?", previous_7_days, last_7_days, true).count + # Calculate trend + percentage = previous_period_errors.zero? ? 0 : ((previous_period_errors - current_period_errors) / previous_period_errors.to_f * 100).abs.round(1) + trend_icon = percentage < 0.1 ? "move-right" : current_period_errors < previous_period_errors ? "trending-down" : "trending-up" + trend_amount = previous_period_errors.zero? ? "0%" : "#{percentage}%" - trend_amount = previous_period_errors.zero? ? "0%" : "#{((current_period_errors - previous_period_errors) / previous_period_errors.to_f * 100).round(1)}%" - trend_icon = trend_amount.to_f < 0.1 ? "move-right" : current_period_errors < previous_period_errors ? "trending-down" : "trending-up" + # Separate query for sparkline data - group by week using Rails + sparkline_data = base_query + .group_by_week(:period_start, time_zone: "UTC") + .sum(:error_count) + .each_with_object({}) do |(week_start, total_errors), hash| + formatted_date = week_start.strftime("%b %-d") + value = total_errors || 0 + hash[formatted_date] = { value: value } + end { + id: "error_rate_per_route", + context: "routes", title: "Error Rate Per Route", - data: error_rates, - summary: error_rate_summary, + summary: "#{overall_error_rate}%", line_chart_data: sparkline_data, trend_icon: trend_icon, trend_amount: trend_amount, diff --git a/app/models/rails_pulse/routes/cards/percentile_response_times.rb b/app/models/rails_pulse/routes/cards/percentile_response_times.rb index d569662..bd22a13 100644 --- a/app/models/rails_pulse/routes/cards/percentile_response_times.rb +++ b/app/models/rails_pulse/routes/cards/percentile_response_times.rb @@ -7,60 +7,47 @@ def initialize(route: nil) end def to_metric_card - requests = if @route - RailsPulse::Request.where(route: @route) - else - RailsPulse::Request.all - end - - requests = requests.where("occurred_at >= ?", 2.weeks.ago.beginning_of_day) - - # Calculate overall 95th percentile response time - count = requests.count - percentile_95th = if count > 0 - requests.select("duration").order("duration").limit(1).offset((count * 0.95).floor).pluck(:duration).first.round(0) || 0 - else - 0 - end - - # Calculate trend by comparing last 7 days vs previous 7 days for 95th percentile last_7_days = 7.days.ago.beginning_of_day previous_7_days = 14.days.ago.beginning_of_day - current_period = requests.where("occurred_at >= ?", last_7_days) - current_count = current_period.count - current_period_95th = if current_count > 0 - current_period.select("duration").order("duration").limit(1).offset((current_count * 0.95).floor).pluck(:duration).first || 0 - else - 0 - end - - previous_period = requests.where("occurred_at >= ? AND occurred_at < ?", previous_7_days, last_7_days) - previous_count = previous_period.count - previous_period_95th = if previous_count > 0 - previous_period.select("duration").order("duration").limit(1).offset((previous_count * 0.95).floor).pluck(:duration).first || 0 - else - 0 - end - - percentage = previous_period_95th.zero? ? 0 : ((previous_period_95th - current_period_95th) / previous_period_95th * 100).abs.round(1) - trend_icon = percentage < 0.1 ? "move-right" : current_period_95th < previous_period_95th ? "trending-down" : "trending-up" - trend_amount = previous_period_95th.zero? ? "0%" : "#{percentage}%" - - sparkline_data = requests - .group_by_week(:occurred_at, time_zone: "UTC") - .average(:duration) - .each_with_object({}) do |(date, avg), hash| - formatted_date = date.strftime("%b %-d") - value = avg&.round(0) || 0 - hash[formatted_date] = { - value: value - } + # Single query to get all P95 metrics with conditional aggregation + base_query = RailsPulse::Summary.where( + summarizable_type: "RailsPulse::Route", + period_type: "day", + period_start: 2.weeks.ago.beginning_of_day..Time.current + ) + base_query = base_query.where(summarizable_id: @route.id) if @route + + metrics = base_query.select( + "AVG(p95_duration) AS overall_p95", + "AVG(CASE WHEN period_start >= '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN p95_duration ELSE NULL END) AS current_p95", + "AVG(CASE WHEN period_start >= '#{previous_7_days.strftime('%Y-%m-%d %H:%M:%S')}' AND period_start < '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN p95_duration ELSE NULL END) AS previous_p95" + ).take + + # Calculate metrics from single query result + p95_response_time = (metrics.overall_p95 || 0).round(0) + current_period_p95 = metrics.current_p95 || 0 + previous_period_p95 = metrics.previous_p95 || 0 + + percentage = previous_period_p95.zero? ? 0 : ((previous_period_p95 - current_period_p95) / previous_period_p95 * 100).abs.round(1) + trend_icon = percentage < 0.1 ? "move-right" : current_period_p95 < previous_period_p95 ? "trending-down" : "trending-up" + trend_amount = previous_period_p95.zero? ? "0%" : "#{percentage}%" + + # Separate query for sparkline data - group by week using Rails + sparkline_data = base_query + .group_by_week(:period_start, time_zone: "UTC") + .average(:p95_duration) + .each_with_object({}) do |(week_start, avg_p95), hash| + formatted_date = week_start.strftime("%b %-d") + value = (avg_p95 || 0).round(0) + hash[formatted_date] = { value: value } end { + id: "percentile_response_times", + context: "routes", title: "95th Percentile Response Time", - summary: "#{percentile_95th} ms", + summary: "#{p95_response_time} ms", line_chart_data: sparkline_data, trend_icon: trend_icon, trend_amount: trend_amount, diff --git a/app/models/rails_pulse/routes/cards/request_count_totals.rb b/app/models/rails_pulse/routes/cards/request_count_totals.rb index e0af4dc..2fbdc12 100644 --- a/app/models/rails_pulse/routes/cards/request_count_totals.rb +++ b/app/models/rails_pulse/routes/cards/request_count_totals.rb @@ -7,44 +7,49 @@ def initialize(route: nil) end def to_metric_card - requests = if @route - RailsPulse::Request.where(route: @route) - else - RailsPulse::Request.all - end + last_7_days = 7.days.ago.beginning_of_day + previous_7_days = 14.days.ago.beginning_of_day - requests = requests.where("occurred_at >= ?", 2.weeks.ago.beginning_of_day) + # Single query to get all count metrics with conditional aggregation + base_query = RailsPulse::Summary.where( + summarizable_type: "RailsPulse::Route", + period_type: "day", + period_start: 2.weeks.ago.beginning_of_day..Time.current + ) + base_query = base_query.where(summarizable_id: @route.id) if @route - # Calculate total request count - total_request_count = requests.count + metrics = base_query.select( + "SUM(count) AS total_count", + "SUM(CASE WHEN period_start >= '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN count ELSE 0 END) AS current_count", + "SUM(CASE WHEN period_start >= '#{previous_7_days.strftime('%Y-%m-%d %H:%M:%S')}' AND period_start < '#{last_7_days.strftime('%Y-%m-%d %H:%M:%S')}' THEN count ELSE 0 END) AS previous_count" + ).take - # Calculate trend by comparing last 7 days vs previous 7 days - last_7_days = 7.days.ago.beginning_of_day - previous_7_days = 14.days.ago.beginning_of_day - current_period_count = requests.where("occurred_at >= ?", last_7_days).count - previous_period_count = requests.where("occurred_at >= ? AND occurred_at < ?", previous_7_days, last_7_days).count + # Calculate metrics from single query result + total_request_count = metrics.total_count || 0 + current_period_count = metrics.current_count || 0 + previous_period_count = metrics.previous_count || 0 percentage = previous_period_count.zero? ? 0 : ((previous_period_count - current_period_count) / previous_period_count.to_f * 100).abs.round(1) trend_icon = percentage < 0.1 ? "move-right" : current_period_count < previous_period_count ? "trending-down" : "trending-up" trend_amount = previous_period_count.zero? ? "0%" : "#{percentage}%" - sparkline_data = requests - .group_by_week(:occurred_at, time_zone: "UTC") - .count - .each_with_object({}) do |(date, count), hash| - formatted_date = date.strftime("%b %-d") - hash[formatted_date] = { - value: count - } + # Separate query for sparkline data - group by week using Rails + sparkline_data = base_query + .group_by_week(:period_start, time_zone: "UTC") + .sum(:count) + .each_with_object({}) do |(week_start, total_count), hash| + formatted_date = week_start.strftime("%b %-d") + value = total_count || 0 + hash[formatted_date] = { value: value } end - # Calculate average requests per minute - min_time = requests.minimum(:occurred_at) - max_time = requests.maximum(:occurred_at) - total_minutes = min_time && max_time && min_time != max_time ? (max_time - min_time) / 60.0 : 1 + # Calculate average requests per minute over 2-week period + total_minutes = 2.weeks / 1.minute average_requests_per_minute = total_request_count / total_minutes { + id: "request_count_totals", + context: "routes", title: "Request Count Total", summary: "#{average_requests_per_minute.round(2)} / min", line_chart_data: sparkline_data, diff --git a/app/models/rails_pulse/routes/charts/average_response_times.rb b/app/models/rails_pulse/routes/charts/average_response_times.rb index 31a4cc5..a4bdf89 100644 --- a/app/models/rails_pulse/routes/charts/average_response_times.rb +++ b/app/models/rails_pulse/routes/charts/average_response_times.rb @@ -2,34 +2,35 @@ module RailsPulse module Routes module Charts class AverageResponseTimes - def initialize(ransack_query:, group_by: :group_by_day, route: nil) + def initialize(ransack_query:, period_type: nil, route: nil, start_time: nil, end_time: nil, start_duration: nil) @ransack_query = ransack_query - @group_by = group_by + @period_type = period_type @route = route + @start_time = start_time + @end_time = end_time + @start_duration = start_duration end def to_rails_chart - # Let groupdate handle the grouping and series filling - actual_data = if @route - @ransack_query.result(distinct: false) - .public_send(@group_by, "occurred_at", series: true, time_zone: "UTC") - .average(:duration) - else - @ransack_query.result(distinct: false) - .left_joins(:requests) - .public_send(@group_by, "rails_pulse_requests.occurred_at", series: true, time_zone: "UTC") - .average("rails_pulse_requests.duration") - end + summaries = @ransack_query.result(distinct: false).where( + summarizable_type: "RailsPulse::Route", + period_type: @period_type + ) + + summaries = summaries.where(summarizable_id: @route.id) if @route + summaries = summaries + .group(:period_start) + .having("AVG(avg_duration) > ?", @start_duration || 0) + .average(:avg_duration) + .transform_keys(&:to_i) - # Convert to the format expected by rails_charts - actual_data.transform_keys do |k| - if k.respond_to?(:to_i) - k.to_i - else - # For Date objects, use beginning_of_day to get consistent UTC timestamps - k.is_a?(Date) ? k.beginning_of_day.to_i : k.to_time.to_i - end - end.transform_values { |v| { value: v.to_f } } + # Pad missing data points with zeros + step = @period_type == :hour ? 1.hour : 1.day + data = {} + (@start_time.to_i..@end_time.to_i).step(step) do |timestamp| + data[timestamp.to_i] = summaries[timestamp.to_i].to_f.round(2) + end + data end end end diff --git a/app/models/rails_pulse/routes/tables/index.rb b/app/models/rails_pulse/routes/tables/index.rb index f27b212..e267f8c 100644 --- a/app/models/rails_pulse/routes/tables/index.rb +++ b/app/models/rails_pulse/routes/tables/index.rb @@ -2,61 +2,35 @@ module RailsPulse module Routes module Tables class Index - def initialize(ransack_query:, start_time:, params:) + def initialize(ransack_query:, period_type: nil, start_time:, params:) @ransack_query = ransack_query + @period_type = period_type @start_time = start_time @params = params end def to_table - # Pre-calculate values to avoid SQL injection and improve readability - minutes_elapsed = calculate_minutes_elapsed - - # Get thresholds with safe defaults to avoid nil access errors - config = RailsPulse.configuration rescue nil - thresholds = config&.route_thresholds || { slow: 500, very_slow: 1500, critical: 3000 } - - requests_per_minute_divisor = minutes_elapsed > 0 ? minutes_elapsed : 1 - - status_sql = build_status_sql(thresholds) + summaries = @ransack_query.result(distinct: false) + .joins("INNER JOIN rails_pulse_routes ON rails_pulse_routes.id = rails_pulse_summaries.summarizable_id") + .where( + summarizable_type: "RailsPulse::Route", + period_type: @period_type + ) - @ransack_query.result(distinct: false) - .left_joins(:requests) - .group("rails_pulse_routes.id") + summaries = summaries.where(summarizable_id: @route.id) if @route + summaries = summaries + .group("rails_pulse_summaries.summarizable_id") .select( - "rails_pulse_routes.*", - "COALESCE(AVG(rails_pulse_requests.duration), 0) AS average_response_time_ms", - "COUNT(rails_pulse_requests.id) AS request_count", - "COALESCE(COUNT(rails_pulse_requests.id) / #{requests_per_minute_divisor}, 0) AS requests_per_minute", - "COALESCE(SUM(CASE WHEN rails_pulse_requests.is_error = true THEN 1 ELSE 0 END), 0) AS error_count", - "CASE WHEN COUNT(rails_pulse_requests.id) > 0 THEN ROUND((COALESCE(SUM(CASE WHEN rails_pulse_requests.is_error = true THEN 1 ELSE 0 END), 0) * 100.0) / COUNT(rails_pulse_requests.id), 2) ELSE 0 END AS error_rate_percentage", - "COALESCE(MAX(rails_pulse_requests.duration), 0) AS max_response_time_ms", - "#{status_sql} AS status_indicator" + "rails_pulse_summaries.summarizable_id", + "rails_pulse_summaries.summarizable_type", + "rails_pulse_routes.id as route_id, rails_pulse_routes.path, rails_pulse_routes.method as route_method", + "AVG(rails_pulse_summaries.avg_duration) as avg_duration", + "MAX(rails_pulse_summaries.max_duration) as max_duration", + "SUM(rails_pulse_summaries.count) as count", + "SUM(rails_pulse_summaries.error_count) as error_count", + "SUM(rails_pulse_summaries.success_count) as success_count" ) end - - private - - def calculate_minutes_elapsed - start_timestamp = Time.at(@start_time.to_i).utc - ((Time.current.utc - start_timestamp) / 60.0).round(2) - end - - def build_status_sql(thresholds) - # Ensure all thresholds have default values - slow = thresholds[:slow] || 500 - very_slow = thresholds[:very_slow] || 1500 - critical = thresholds[:critical] || 3000 - - <<-SQL.squish - CASE - WHEN COALESCE(AVG(rails_pulse_requests.duration), 0) >= #{critical} THEN 3 - WHEN COALESCE(AVG(rails_pulse_requests.duration), 0) >= #{very_slow} THEN 2 - WHEN COALESCE(AVG(rails_pulse_requests.duration), 0) >= #{slow} THEN 1 - ELSE 0 - END - SQL - end end end end diff --git a/app/models/rails_pulse/summary.rb b/app/models/rails_pulse/summary.rb new file mode 100644 index 0000000..2812a01 --- /dev/null +++ b/app/models/rails_pulse/summary.rb @@ -0,0 +1,116 @@ +module RailsPulse + class Summary < ApplicationRecord + self.table_name = "rails_pulse_summaries" + + PERIOD_TYPES = %w[hour day week month].freeze + + # Polymorphic association + belongs_to :summarizable, polymorphic: true, optional: true # Optional for Request summaries + + # Convenience associations for easier querying + belongs_to :route, -> { where(rails_pulse_summaries: { summarizable_type: "RailsPulse::Route" }) }, + foreign_key: "summarizable_id", class_name: "RailsPulse::Route", optional: true + belongs_to :query, -> { where(rails_pulse_summaries: { summarizable_type: "RailsPulse::Query" }) }, + foreign_key: "summarizable_id", class_name: "RailsPulse::Query", optional: true + + # Validations + validates :period_type, inclusion: { in: PERIOD_TYPES } + validates :period_start, presence: true + validates :period_end, presence: true + + # Scopes + scope :for_period_type, ->(type) { where(period_type: type) } + scope :for_date_range, ->(start_date, end_date) { + where(period_start: start_date..end_date) + } + scope :for_requests, -> { where(summarizable_type: "RailsPulse::Request") } + scope :for_routes, -> { where(summarizable_type: "RailsPulse::Route") } + scope :for_queries, -> { where(summarizable_type: "RailsPulse::Query") } + scope :recent, -> { order(period_start: :desc) } + + # Special scope for overall request summaries + scope :overall_requests, -> { + where(summarizable_type: "RailsPulse::Request", summarizable_id: 0) + } + + # Ransack configuration + def self.ransackable_attributes(auth_object = nil) + %w[ + period_start period_end avg_duration max_duration count error_count + requests_per_minute error_rate_percentage route_path_cont + execution_count total_time_consumed normalized_sql occurred_at + ] + end + + def self.ransackable_associations(auth_object = nil) + %w[route query] + end + + # Custom ransackers for calculated fields (designed to work with GROUP BY queries) + ransacker :count do + Arel.sql("SUM(rails_pulse_summaries.count)") # Use SUM for proper grouping + end + + ransacker :requests_per_minute do + Arel.sql("SUM(rails_pulse_summaries.count) / 60.0") # Use SUM for consistency + end + + ransacker :error_rate_percentage do + Arel.sql("(SUM(rails_pulse_summaries.error_count) * 100.0) / SUM(rails_pulse_summaries.count)") # Use SUM for both + end + + # Ransacker for route path sorting (when joined with routes table) + ransacker :route_path do + Arel.sql("rails_pulse_routes.path") + end + + # Ransacker for route path filtering using subquery (works without JOIN) + ransacker :route_path_cont do |parent| + Arel.sql(<<-SQL) + rails_pulse_summaries.summarizable_id IN ( + SELECT id FROM rails_pulse_routes + WHERE rails_pulse_routes.path LIKE '%' || ? || '%' + ) + SQL + end + + # Ransackers for queries table calculated fields + ransacker :execution_count do + Arel.sql("SUM(rails_pulse_summaries.count)") # Total executions + end + + ransacker :total_time_consumed do + Arel.sql("SUM(rails_pulse_summaries.count * rails_pulse_summaries.avg_duration)") # Total time consumed + end + + # Ransacker for query SQL sorting (when joined with queries table) + ransacker :normalized_sql do + Arel.sql("rails_pulse_queries.normalized_sql") + end + + # Ransacker for average duration in grouped queries (needed for queries table sorting) + ransacker :avg_duration do + Arel.sql("AVG(rails_pulse_summaries.avg_duration)") + end + + class << self + def calculate_period_end(period_type, start_time) + case period_type + when "hour" then start_time.end_of_hour + when "day" then start_time.end_of_day + when "week" then start_time.end_of_week + when "month" then start_time.end_of_month + end + end + + def normalize_period_start(period_type, time) + case period_type + when "hour" then time.beginning_of_hour + when "day" then time.beginning_of_day + when "week" then time.beginning_of_week + when "month" then time.beginning_of_month + end + end + end + end +end diff --git a/app/services/rails_pulse/summary_service.rb b/app/services/rails_pulse/summary_service.rb new file mode 100644 index 0000000..62e3023 --- /dev/null +++ b/app/services/rails_pulse/summary_service.rb @@ -0,0 +1,199 @@ + +module RailsPulse + class SummaryService + attr_reader :period_type, :start_time, :end_time + + def initialize(period_type, start_time) + @period_type = period_type + @start_time = Summary.normalize_period_start(period_type, start_time) + @end_time = Summary.calculate_period_end(period_type, @start_time) + end + + def perform + Rails.logger.info "[RailsPulse] Starting #{period_type} summary for #{start_time}" + + ActiveRecord::Base.transaction do + aggregate_requests # Overall system metrics + aggregate_routes # Per-route metrics + aggregate_queries # Per-query metrics + end + + Rails.logger.info "[RailsPulse] Completed #{period_type} summary" + rescue => e + Rails.logger.error "[RailsPulse] Summary failed: #{e.message}" + raise + end + + private + + def aggregate_requests + # Create a single summary for ALL requests in this period + requests = Request.where(occurred_at: start_time...end_time) + + return if requests.empty? + + # Get all durations and statuses for percentile calculations + request_data = requests.pluck(:duration, :status) + durations = request_data.map(&:first).compact.sort + statuses = request_data.map(&:second) + + # Find or create the overall request summary + summary = Summary.find_or_initialize_by( + summarizable_type: "RailsPulse::Request", + summarizable_id: 0, # Use 0 as a special ID for overall summaries + period_type: period_type, + period_start: start_time + ) + + summary.assign_attributes( + period_end: end_time, + count: durations.size, + avg_duration: durations.any? ? durations.sum.to_f / durations.size : 0, + min_duration: durations.min, + max_duration: durations.max, + total_duration: durations.sum, + p50_duration: calculate_percentile(durations, 0.5), + p95_duration: calculate_percentile(durations, 0.95), + p99_duration: calculate_percentile(durations, 0.99), + stddev_duration: calculate_stddev(durations, durations.sum.to_f / durations.size), + error_count: statuses.count { |s| s >= 400 }, + success_count: statuses.count { |s| s < 400 }, + status_2xx: statuses.count { |s| s.between?(200, 299) }, + status_3xx: statuses.count { |s| s.between?(300, 399) }, + status_4xx: statuses.count { |s| s.between?(400, 499) }, + status_5xx: statuses.count { |s| s >= 500 } + ) + + summary.save! + end + + private + + def aggregate_routes + # Use ActiveRecord for cross-database compatibility + route_groups = Request + .where(occurred_at: start_time...end_time) + .where.not(route_id: nil) + .group(:route_id) + + # Calculate basic aggregates + basic_stats = route_groups.pluck( + :route_id, + Arel.sql("COUNT(*) as request_count"), + Arel.sql("AVG(duration) as avg_duration"), + Arel.sql("MIN(duration) as min_duration"), + Arel.sql("MAX(duration) as max_duration"), + Arel.sql("SUM(duration) as total_duration") + ) + + basic_stats.each do |stats| + route_id = stats[0] + + # Calculate percentiles and status counts separately for cross-DB compatibility + durations = Request + .where(occurred_at: start_time...end_time) + .where(route_id: route_id) + .pluck(:duration, :status) + + sorted_durations = durations.map(&:first).compact.sort + statuses = durations.map(&:last) + + summary = Summary.find_or_initialize_by( + summarizable_type: "RailsPulse::Route", + summarizable_id: route_id, + period_type: period_type, + period_start: start_time + ) + + summary.assign_attributes( + period_end: end_time, + count: stats[1], + avg_duration: stats[2], + min_duration: stats[3], + max_duration: stats[4], + total_duration: stats[5], + p50_duration: calculate_percentile(sorted_durations, 0.5), + p95_duration: calculate_percentile(sorted_durations, 0.95), + p99_duration: calculate_percentile(sorted_durations, 0.99), + stddev_duration: calculate_stddev(sorted_durations, stats[2]), + error_count: statuses.count { |s| s >= 400 }, + success_count: statuses.count { |s| s < 400 }, + status_2xx: statuses.count { |s| s.between?(200, 299) }, + status_3xx: statuses.count { |s| s.between?(300, 399) }, + status_4xx: statuses.count { |s| s.between?(400, 499) }, + status_5xx: statuses.count { |s| s >= 500 } + ) + + summary.save! + end + end + + def aggregate_queries + query_groups = Operation + .where(occurred_at: start_time...end_time) + .where.not(query_id: nil) + .group(:query_id) + + basic_stats = query_groups.pluck( + :query_id, + Arel.sql("COUNT(*) as execution_count"), + Arel.sql("AVG(duration) as avg_duration"), + Arel.sql("MIN(duration) as min_duration"), + Arel.sql("MAX(duration) as max_duration"), + Arel.sql("SUM(duration) as total_duration") + ) + + basic_stats.each do |stats| + query_id = stats[0] + + # Calculate percentiles separately + durations = Operation + .where(occurred_at: start_time...end_time) + .where(query_id: query_id) + .pluck(:duration) + .compact + .sort + + summary = Summary.find_or_initialize_by( + summarizable_type: "RailsPulse::Query", + summarizable_id: query_id, + period_type: period_type, + period_start: start_time + ) + + summary.assign_attributes( + period_end: end_time, + count: stats[1], + avg_duration: stats[2], + min_duration: stats[3], + max_duration: stats[4], + total_duration: stats[5], + p50_duration: calculate_percentile(durations, 0.5), + p95_duration: calculate_percentile(durations, 0.95), + p99_duration: calculate_percentile(durations, 0.99), + stddev_duration: calculate_stddev(durations, stats[2]) + ) + + summary.save! + end + end + + def calculate_percentile(sorted_array, percentile) + return nil if sorted_array.empty? + + k = (percentile * (sorted_array.length - 1)).floor + f = (percentile * (sorted_array.length - 1)) - k + + return sorted_array[k] if f == 0 || k + 1 >= sorted_array.length + + sorted_array[k] + (sorted_array[k + 1] - sorted_array[k]) * f + end + + def calculate_stddev(values, mean) + return nil if values.empty? || values.size == 1 + + sum_of_squares = values.sum { |v| (v - mean) ** 2 } + Math.sqrt(sum_of_squares / (values.size - 1)) + end + end +end diff --git a/app/views/rails_pulse/components/_metric_card.html.erb b/app/views/rails_pulse/components/_metric_card.html.erb index 8506a00..1ae6551 100644 --- a/app/views/rails_pulse/components/_metric_card.html.erb +++ b/app/views/rails_pulse/components/_metric_card.html.erb @@ -1,13 +1,13 @@ <% - @component_data ||= {} - id ||= @component_data[:id] - context ||= @component_data[:context] - title ||= @component_data[:title] - summary ||= @component_data[:summary] - line_chart_data ||= @component_data[:line_chart_data] - trend_icon ||= @component_data[:trend_icon] - trend_amount ||= @component_data[:trend_amount] - trend_text ||= @component_data[:trend_text] + # Use the passed data object directly + id = data[:id] + context = data[:context] + title = data[:title] + summary = data[:summary] + line_chart_data = data[:line_chart_data] + trend_icon = data[:trend_icon] + trend_amount = data[:trend_amount] + trend_text = data[:trend_text] %>
<%= render 'rails_pulse/components/panel', { title: title, card_classes: 'card-compact' } do %> @@ -35,20 +35,6 @@ <%= trend_amount %>

<%= trend_text %>

- <% - refresh_path = rails_pulse.cache_path(id: id, context: context, refresh: true) - cached_iso = @cached_at ? @cached_at.iso8601 : nil - %> - <%= link_to refresh_path, - data: { - controller: "rails-pulse--timezone", - rails_pulse__timezone_target_frame_value: "#{id}_card", - rails_pulse__timezone_cached_at_value: cached_iso, - turbo_frame: "#{id}_card", - turbo_prefetch: "false" - } do %> - <%= rails_pulse_icon 'refresh-cw', height: "15px", width: "15px" %> - <% end %>
<% end %> diff --git a/app/views/rails_pulse/dashboard/index.html.erb b/app/views/rails_pulse/dashboard/index.html.erb index 84b86ca..e93be76 100644 --- a/app/views/rails_pulse/dashboard/index.html.erb +++ b/app/views/rails_pulse/dashboard/index.html.erb @@ -1,64 +1,82 @@
- <%= cached_component(component: "metric_card", id: "average_response_times", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "percentile_response_times", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "request_count_totals", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "error_rate_per_route", class: "grid-item block") %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @average_query_times_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @percentile_response_times_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @request_count_totals_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @error_rate_per_route_metric_card } %>
- <%= cached_component( - component: "panel", - id: "dashboard_average_response_time", - card_classes: 'b-full', + <%= render 'rails_pulse/components/panel', { title: 'Average Response Time', + card_classes: 'b-full', help_heading: 'Average Response Time', help_text: 'This panel measures the average server-side response time in milliseconds for all HTTP requests processed by your application. This is the time it takes from the server receiving a request until the request is returned to the client in milliseconds.', - actions: [{ url: routes_path, icon: 'external-link', title: 'View details', data: { turbo_frame: '_top' } }], - refresh_action: true, - content_partial: 'rails_pulse/dashboard/charts/bar_chart') - %> + actions: [{ url: routes_path, icon: 'external-link', title: 'View details', data: { turbo_frame: '_top' } }] + } do %> + <% if @average_response_time_chart_data.present? %> +
+ <%= bar_chart( + @average_response_time_chart_data, + code: false, + id: "dashboard_average_response_time_chart", + height: "100%", + options: bar_chart_options( + units: "ms" + ) + ) %> +
+ <% end %> + <% end %>
- <%= cached_component( - component: "panel", - id: "dashboard_p95_response_time", - card_classes: 'b-full', + <%= render 'rails_pulse/components/panel', { title: 'Query Performance', + card_classes: 'b-full', help_heading: 'Query Performance', help_text: 'This panel measures the 95th percentile response time in milliseconds for queries in your application. This represents the query performance below which 95% of queries fall, indicating the upper-bound performance for most database operations.', - actions: [{ url: routes_path, icon: 'external-link', title: 'View details', data: { turbo_frame: '_top' } }], - refresh_action: true, - content_partial: 'rails_pulse/dashboard/charts/bar_chart') - %> + actions: [{ url: queries_path, icon: 'external-link', title: 'View details', data: { turbo_frame: '_top' } }] + } do %> + <% if @p95_response_time_chart_data.present? %> +
+ <%= bar_chart( + @p95_response_time_chart_data, + code: false, + id: "dashboard_p95_response_time_chart", + height: "100%", + options: bar_chart_options( + units: "ms" + ) + ) %> +
+ <% end %> + <% end %>
- <%= cached_component( - component: "panel", - id: "dashboard_slow_routes", + <%= render 'rails_pulse/components/panel', { title: 'Slowest Routes This Week', help_heading: 'Slowest Routes', - help_text: 'This panel shows the slowest routes in your application this week compared to last week, including average response time, week-over-week change, and total request count.', - refresh_action: true, - content_partial: 'rails_pulse/dashboard/tables/standard_table', - class: "table-container") - %> + help_text: 'This panel shows the slowest routes in your application this week, including average response time and total request count.', + actions: [{ url: routes_path, icon: 'external-link', title: 'View details', data: { turbo_frame: '_top' } }], + card_classes: 'table-container' + } do %> + <%= render 'rails_pulse/components/table', table_data: @slow_routes_table_data %> + <% end %>
- <%= cached_component( - component: "panel", - id: "dashboard_slow_queries", + <%= render 'rails_pulse/components/panel', { title: 'Slowest Queries This Week', - help_heading: 'Slowest Queries', + help_heading: 'Slowest Queries', help_text: 'This panel shows the slowest database queries in your application this week, including average execution time and when they were last seen.', - refresh_action: true, - content_partial: 'rails_pulse/dashboard/tables/standard_table', - class: "table-container") - %> + actions: [{ url: queries_path, icon: 'external-link', title: 'View details', data: { turbo_frame: '_top' } }], + card_classes: 'table-container' + } do %> + <%= render 'rails_pulse/components/table', table_data: @slow_queries_table_data %> + <% end %>
diff --git a/app/views/rails_pulse/queries/_table.html.erb b/app/views/rails_pulse/queries/_table.html.erb index 8b93cda..08f3e6c 100644 --- a/app/views/rails_pulse/queries/_table.html.erb +++ b/app/views/rails_pulse/queries/_table.html.erb @@ -1,9 +1,9 @@ <% columns = [ { field: :normalized_sql, label: 'Query', class: 'w-auto' }, { field: :execution_count, label: 'Executions', class: 'w-24' }, - { field: :average_query_time_ms, label: 'Avg Time', class: 'w-24' }, + { field: :avg_duration, label: 'Avg Time', class: 'w-24' }, { field: :total_time_consumed, label: 'Total Time', class: 'w-28' }, - { field: :performance_status, label: 'Status', class: 'w-16' }, + { field: :performance_status, label: 'Status', class: 'w-16', sortable: false }, { field: :occurred_at, label: 'Last Seen', class: 'w-32' } ] %> @@ -11,18 +11,18 @@ <%= render "rails_pulse/components/table_head", columns: columns %> - <% @table_data.each do |query| %> + <% @table_data.each do |summary| %>
- <%= link_to html_escape(truncate_sql(query.normalized_sql)), query_path(query), data: { turbo_frame: '_top', } %> + <%= link_to html_escape(truncate_sql(summary.normalized_sql)), query_path(summary.query_id), data: { turbo_frame: '_top', } %>
- <%= number_with_delimiter query.execution_count %> - <%= query.average_query_time_ms.to_i %> ms - <%= number_with_delimiter query.total_time_consumed.to_i %> ms - <%= query_status_indicator(query.average_query_time_ms) %> - <%= human_readable_occurred_at(query.occurred_at) if query.occurred_at %> + <%= number_with_delimiter summary.execution_count %> + <%= summary.avg_duration.to_i %> ms + <%= number_with_delimiter summary.total_time_consumed.to_i %> ms + <%= query_status_indicator(summary.avg_duration) %> + <%= human_readable_occurred_at(summary.occurred_at) if summary.occurred_at %> <% end %> diff --git a/app/views/rails_pulse/queries/index.html.erb b/app/views/rails_pulse/queries/index.html.erb index 0b1a49d..7539716 100644 --- a/app/views/rails_pulse/queries/index.html.erb +++ b/app/views/rails_pulse/queries/index.html.erb @@ -1,10 +1,9 @@ <%= render 'rails_pulse/components/breadcrumbs' %>
- <%= cached_component(component: "metric_card", id: "average_response_times", context: "routes", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "percentile_response_times", context: "routes", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "request_count_totals", context: "routes", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "error_rate_per_route", context: "routes", class: "grid-item block") %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @average_query_times_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @percentile_query_times_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @execution_rate_metric_card } %>
<%= search_form_for @ransack_query, url: queries_path, class: "flex items-center justify-between gap mb-4" do |form| %>
- <%= form.select :occurred_at_range, + <%= form.select :period_start_range, RailsPulse::QueriesController::TIME_RANGE_OPTIONS, { selected: @selected_time_range }, { class: "input" } %> - <%= form.select :duration, + <%= form.select :avg_duration, duration_options(:query), { selected: @selected_response_range }, { class: "input" } diff --git a/app/views/rails_pulse/queries/show.html.erb b/app/views/rails_pulse/queries/show.html.erb index 6801afd..7ca2ce3 100644 --- a/app/views/rails_pulse/queries/show.html.erb +++ b/app/views/rails_pulse/queries/show.html.erb @@ -1,9 +1,9 @@ <%= render 'rails_pulse/components/breadcrumbs' %>
- <%= cached_component(component: "metric_card", id: "average_query_times", context: "query_#{@query.id}", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "request_count_totals", context: "query_#{@query.id}", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "execution_rate", context: "query_#{@query.id}", class: "grid-item block") %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @average_query_times_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @percentile_query_times_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @execution_rate_metric_card } %>
@@ -14,13 +14,12 @@ class="row" data-controller="rails-pulse--index" data-rails-pulse--index-chart-id-value="query_responses_chart" - data-rails-pulse--index-occurred-at-param-value="occurred_at" >
<%= render 'rails_pulse/components/panel', { title: 'Query Responses' } do %> <%= search_form_for @ransack_query, url: query_path(@query), class: "flex items-center justify-between gap mb-4" do |form| %>
- <%= form.select :occurred_at_range, + <%= form.select :period_start_range, RailsPulse::RoutesController::TIME_RANGE_OPTIONS, { selected: @selected_time_range }, { class: "input" } diff --git a/app/views/rails_pulse/requests/index.html.erb b/app/views/rails_pulse/requests/index.html.erb index e9f8835..4875884 100644 --- a/app/views/rails_pulse/requests/index.html.erb +++ b/app/views/rails_pulse/requests/index.html.erb @@ -1,10 +1,10 @@ <%= render 'rails_pulse/components/breadcrumbs' %>
- <%= cached_component(component: "metric_card", id: "average_response_times", context: "requests", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "percentile_response_times", context: "requests", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "request_count_totals", context: "requests", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "error_rate_per_route", context: "requests", class: "grid-item block") %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @average_response_times_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @percentile_response_times_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @request_count_totals_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @error_rate_per_route_metric_card } %>
<%= search_form_for @ransack_query, url: requests_path, class: "flex items-center justify-between gap mb-4" do |form| %>
- <%= form.select :occurred_at_range, + <%= form.select :period_start_range, RailsPulse::RequestsController::TIME_RANGE_OPTIONS, { selected: @selected_time_range }, { class: "input" } %> - <%= form.select :duration, + <%= form.select :avg_duration, duration_options(:request), { selected: @selected_response_range }, { class: "input" } diff --git a/app/views/rails_pulse/routes/_table.html.erb b/app/views/rails_pulse/routes/_table.html.erb index 66108b3..8d76afd 100644 --- a/app/views/rails_pulse/routes/_table.html.erb +++ b/app/views/rails_pulse/routes/_table.html.erb @@ -1,8 +1,8 @@ <% columns = [ - { field: :path, label: 'Route', class: 'w-auto' }, - { field: :average_response_time_ms, label: 'Average Response Time', class: 'w-36' }, - { field: :max_response_time_ms, label: 'Max Response Time', class: 'w-32' }, - { field: :request_count, label: 'Requests', class: 'w-24' }, + { field: :route_path, label: 'Route', class: 'w-auto' }, + { field: :avg_duration, label: 'Average Response Time', class: 'w-36' }, + { field: :max_duration, label: 'Max Response Time', class: 'w-32' }, + { field: :count, label: 'Requests', class: 'w-24' }, { field: :requests_per_minute, label: 'Requests Per Minute', class: 'w-28' }, { field: :error_rate_percentage, label: 'Error Rate (%)', class: 'w-20' }, { field: :status_indicator, label: 'Status', class: 'w-16', sortable: false } @@ -12,15 +12,15 @@ <%= render "rails_pulse/components/table_head", columns: columns %> - <% @table_data.each do |route| %> + <% @table_data.each do |summary| %> - <%= link_to route.path_and_method, route, data: { turbo_frame: '_top' } %> - <%= route.average_response_time_ms.to_i %> ms - <%= route.max_response_time_ms.to_i %> ms - <%= number_with_delimiter route.request_count %> - <%= route.requests_per_minute < 1 ? '< 1' : route.requests_per_minute.round(2) %> - <%= route.error_rate_percentage %>% - <%= route_status_indicator(route.status_indicator) %> + <%= link_to "#{summary.path} #{summary.route_method}", route_path(summary.route_id), data: { turbo_frame: '_top' } %> + <%= summary.avg_duration.to_i %> ms + <%= summary.max_duration.to_i %> ms + <%= number_with_delimiter summary.count %> + <%= summary.count < 1 ? '< 1' : (summary.count / 60.0).round(2) %> + <%= ((summary.error_count.to_f / summary.count) * 100).round(2) %>% + <%= route_status_indicator(summary.avg_duration >= 500 ? 1 : 0) %> <% end %> diff --git a/app/views/rails_pulse/routes/index.html.erb b/app/views/rails_pulse/routes/index.html.erb index 798917f..5d435aa 100644 --- a/app/views/rails_pulse/routes/index.html.erb +++ b/app/views/rails_pulse/routes/index.html.erb @@ -1,10 +1,10 @@ <%= render 'rails_pulse/components/breadcrumbs' %>
- <%= cached_component(component: "metric_card", id: "average_response_times", context: "routes", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "percentile_response_times", context: "routes", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "request_count_totals", context: "routes", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "error_rate_per_route", context: "routes", class: "grid-item block") %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @average_query_times_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @percentile_response_times_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @request_count_totals_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @error_rate_per_route_metric_card } %>
<%= search_form_for @ransack_query, url: routes_path, class: "flex items-center justify-between gap mb-4" do |form| %>
- <%= form.search_field :path_cont, placeholder: "Filter by route", autocomplete: "off", class: "input", style: "max-inline-size: 250px" %> - <%= form.select :occurred_at_range, + <%= form.search_field :route_path_cont, placeholder: "Filter by route", autocomplete: "off", class: "input", style: "max-inline-size: 250px" %> + <%= form.select :period_start_range, RailsPulse::RoutesController::TIME_RANGE_OPTIONS, { selected: @selected_time_range }, { class: "input" } %> - <%= form.select :duration, + <%= form.select :avg_duration, duration_options(:route), { selected: @selected_response_range }, { class: "input" } diff --git a/app/views/rails_pulse/routes/show.html.erb b/app/views/rails_pulse/routes/show.html.erb index 962bdda..6577116 100644 --- a/app/views/rails_pulse/routes/show.html.erb +++ b/app/views/rails_pulse/routes/show.html.erb @@ -3,28 +3,27 @@

<%= @route.path_and_method %>

- <%= cached_component(component: "metric_card", id: "average_response_times", context: "routes_#{@route.id}", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "percentile_response_times", context: "routes_#{@route.id}", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "request_count_totals", context: "routes_#{@route.id}", class: "grid-item block") %> - <%= cached_component(component: "metric_card", id: "error_rate_per_route", context: "routes_#{@route.id}", class: "grid-item block") %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @average_query_times_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @percentile_response_times_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @request_count_totals_metric_card } %> + <%= render 'rails_pulse/components/metric_card', { class: "grid-item block", data: @error_rate_per_route_metric_card } %>
<%= render 'rails_pulse/components/panel', { title: 'Route Reqeusts', } do %> <%= search_form_for @ransack_query, url: route_path(@route), class: "flex items-center justify-between gap mb-4" do |form| %>
- <%= form.select :occurred_at_range, + <%= form.select :period_start_range, RailsPulse::RoutesController::TIME_RANGE_OPTIONS, { selected: @selected_time_range }, { class: "input" } %> - <%= form.select :duration, + <%= form.select :avg_duration, duration_options(:route), { selected: @selected_response_range }, { class: "input" } diff --git a/db/migrate/20241222000001_create_rails_pulse_summaries.rb b/db/migrate/20241222000001_create_rails_pulse_summaries.rb new file mode 100644 index 0000000..10c5c6f --- /dev/null +++ b/db/migrate/20241222000001_create_rails_pulse_summaries.rb @@ -0,0 +1,54 @@ +class CreateRailsPulseSummaries < ActiveRecord::Migration[7.1] + def change + create_table :rails_pulse_summaries do |t| + # Time fields + t.datetime :period_start, null: false + t.datetime :period_end, null: false + t.string :period_type, null: false # 'hour', 'day', 'week', 'month' + + # Polymorphic association to handle both routes and queries + t.references :summarizable, polymorphic: true, null: false, index: true + # This creates summarizable_type (e.g., 'RailsPulse::Route', 'RailsPulse::Query') + # and summarizable_id (route_id or query_id) + + # Universal metrics + t.integer :count, default: 0, null: false + t.float :avg_duration + t.float :min_duration + t.float :max_duration + t.float :p50_duration + t.float :p95_duration + t.float :p99_duration + t.float :total_duration + t.float :stddev_duration + + # Request/Route specific metrics + t.integer :error_count, default: 0 + t.integer :success_count, default: 0 + t.integer :status_2xx, default: 0 + t.integer :status_3xx, default: 0 + t.integer :status_4xx, default: 0 + t.integer :status_5xx, default: 0 + + t.timestamps + + # Unique constraint and indexes + t.index [ :summarizable_type, :summarizable_id, :period_type, :period_start ], + unique: true, + name: 'idx_pulse_summaries_unique' + t.index [ :period_type, :period_start ] + t.index :created_at + end + + # Add indexes to existing tables for efficient aggregation + add_index :rails_pulse_requests, [ :created_at, :route_id ], + name: 'idx_requests_for_aggregation' + add_index :rails_pulse_requests, :created_at, + name: 'idx_requests_created_at' + + add_index :rails_pulse_operations, [ :created_at, :query_id ], + name: 'idx_operations_for_aggregation' + add_index :rails_pulse_operations, :created_at, + name: 'idx_operations_created_at' + end +end diff --git a/db/rails_pulse_schema.rb b/db/rails_pulse_schema.rb new file mode 100644 index 0000000..1f515ce --- /dev/null +++ b/db/rails_pulse_schema.rb @@ -0,0 +1,60 @@ +# Rails Pulse Database Schema +# This file contains the complete schema for Rails Pulse tables +# Load with: rails db:schema:load:rails_pulse or db:prepare + +RailsPulse::Schema = lambda do |connection| + # Skip if tables already exist to prevent conflicts + return if connection.table_exists?(:rails_pulse_routes) + + connection.create_table :rails_pulse_routes do |t| + t.string :method, null: false, comment: "HTTP method (e.g., GET, POST)" + t.string :path, null: false, comment: "Request path (e.g., /posts/index)" + t.timestamps + end + + connection.add_index :rails_pulse_routes, [ :method, :path ], unique: true, name: "index_rails_pulse_routes_on_method_and_path" + + connection.create_table :rails_pulse_queries do |t| + t.string :normalized_sql, limit: 1000, null: false, comment: "Normalized SQL query string (e.g., SELECT * FROM users WHERE id = ?)" + t.timestamps + end + + connection.add_index :rails_pulse_queries, :normalized_sql, unique: true, name: "index_rails_pulse_queries_on_normalized_sql", length: 191 + + connection.create_table :rails_pulse_requests do |t| + t.references :route, null: false, foreign_key: { to_table: :rails_pulse_routes }, comment: "Link to the route" + t.decimal :duration, precision: 15, scale: 6, null: false, comment: "Total request duration in milliseconds" + t.integer :status, null: false, comment: "HTTP status code (e.g., 200, 500)" + t.boolean :is_error, null: false, default: false, comment: "True if status >= 500" + t.string :request_uuid, null: false, comment: "Unique identifier for the request (e.g., UUID)" + t.string :controller_action, comment: "Controller and action handling the request (e.g., PostsController#show)" + t.timestamp :occurred_at, null: false, comment: "When the request started" + t.timestamps + end + + connection.add_index :rails_pulse_requests, :occurred_at, name: "index_rails_pulse_requests_on_occurred_at" + connection.add_index :rails_pulse_requests, :request_uuid, unique: true, name: "index_rails_pulse_requests_on_request_uuid" + connection.add_index :rails_pulse_requests, [ :route_id, :occurred_at ], name: "index_rails_pulse_requests_on_route_id_and_occurred_at" + + connection.create_table :rails_pulse_operations do |t| + t.references :request, null: false, foreign_key: { to_table: :rails_pulse_requests }, comment: "Link to the request" + t.references :query, foreign_key: { to_table: :rails_pulse_queries }, index: true, comment: "Link to the normalized SQL query" + t.string :operation_type, null: false, comment: "Type of operation (e.g., database, view, gem_call)" + t.string :label, null: false, comment: "Descriptive name (e.g., SELECT FROM users WHERE id = 1, render layout)" + t.decimal :duration, precision: 15, scale: 6, null: false, comment: "Operation duration in milliseconds" + t.string :codebase_location, comment: "File and line number (e.g., app/models/user.rb:25)" + t.float :start_time, null: false, default: 0.0, comment: "Operation start time in milliseconds" + t.timestamp :occurred_at, null: false, comment: "When the request started" + t.timestamps + end + + connection.add_index :rails_pulse_operations, :operation_type, name: "index_rails_pulse_operations_on_operation_type" + connection.add_index :rails_pulse_operations, :occurred_at, name: "index_rails_pulse_operations_on_occurred_at" + connection.add_index :rails_pulse_operations, [ :query_id, :occurred_at ], name: "index_rails_pulse_operations_on_query_and_time" + connection.add_index :rails_pulse_operations, [ :query_id, :duration, :occurred_at ], name: "index_rails_pulse_operations_query_performance" + connection.add_index :rails_pulse_operations, [ :occurred_at, :duration, :operation_type ], name: "index_rails_pulse_operations_on_time_duration_type" +end + +if defined?(RailsPulse::ApplicationRecord) + RailsPulse::Schema.call(RailsPulse::ApplicationRecord.connection) +end diff --git a/lib/tasks/rails_pulse.rake b/lib/tasks/rails_pulse.rake index 698d928..1dd4074 100644 --- a/lib/tasks/rails_pulse.rake +++ b/lib/tasks/rails_pulse.rake @@ -16,3 +16,43 @@ namespace :db do task prepare: "schema:load_rails_pulse" task setup: "schema:load_rails_pulse" end + +namespace :rails_pulse do + desc "Backfill summary data from existing requests and operations" + task backfill_summaries: :environment do + puts "Starting Rails Pulse summary backfill..." + + # Find earliest data + earliest_request = RailsPulse::Request.minimum(:occurred_at) + earliest_operation = RailsPulse::Operation.minimum(:occurred_at) + + historical_start_time = if earliest_request && earliest_operation + [ earliest_request, earliest_operation ].min.beginning_of_day + elsif earliest_request + earliest_request.beginning_of_day + elsif earliest_operation + earliest_operation.beginning_of_day + else + puts "No Rails Pulse data found - skipping summary generation" + return + end + + historical_end_time = Time.current + + # Generate daily summaries from beginning of data + puts "\nCreating daily summaries from #{historical_start_time.strftime('%B %d, %Y')} to #{historical_end_time.strftime('%B %d, %Y')}" + RailsPulse::BackfillSummariesJob.perform_now(historical_start_time, historical_end_time, [ "day" ]) + + # Generate hourly summaries for past 26 hours + puts "\nCreating hourly summaries for the past 26 hours..." + hourly_start_time = 26.hours.ago + hourly_end_time = Time.current + + puts "From #{hourly_start_time.strftime('%B %d at %I:%M %p')} to #{hourly_end_time.strftime('%B %d at %I:%M %p')}" + RailsPulse::BackfillSummariesJob.perform_now(hourly_start_time, hourly_end_time, [ "hour" ]) + + puts "\nSummary backfill completed!" + puts "Total summaries: #{RailsPulse::Summary.count}" + puts "\nTo keep summaries up to date, schedule RailsPulse::SummaryJob to run hourly" + end +end diff --git a/public/rails-pulse-assets/rails-pulse.css b/public/rails-pulse-assets/rails-pulse.css index 204bd02..e2ebf55 100644 --- a/public/rails-pulse-assets/rails-pulse.css +++ b/public/rails-pulse-assets/rails-pulse.css @@ -1,2964 +1 @@ - -/* vendor/css-zero/reset.css */ -/* - 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) - 2. Remove default margins and padding - 3. Reset all borders. -*/ - -*, -::after, -::before, -::backdrop, -::file-selector-button { - box-sizing: border-box; /* 1 */ - margin: 0; /* 2 */ - padding: 0; /* 2 */ - border: 0 solid; /* 3 */ -} - -/* - 1. Use a consistent sensible line-height in all browsers. - 2. Prevent adjustments of font size after orientation changes in iOS. - 3. Use a more readable tab size. - 4. Use the user's configured `sans` font-family by default. - 5. Use the user's configured `sans` font-feature-settings by default. - 6. Use the user's configured `sans` font-variation-settings by default. - 7. Disable tap highlights on iOS. -*/ - -html, -:host { - line-height: 1.5; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; /* 3 */ - font-family: var(--default-font-family, system-ui, sans-serif); /* 4 */ - font-feature-settings: var(--default-font-feature-settings, normal); /* 5 */ - font-variation-settings: var(--default-font-variation-settings, normal); /* 6 */ - -webkit-tap-highlight-color: transparent; /* 7 */ -} - -/* - Inherit line-height from `html` so users can set them as a class directly on the `html` element. -*/ - -body { - line-height: inherit; -} - -/* - 1. Add the correct height in Firefox. - 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) - 3. Reset the default border style to a 1px solid border. -*/ - -hr { - block-size: 0; /* 1 */ - color: inherit; /* 2 */ - border-block-start-width: 1px; /* 3 */ -} - -/* - Add the correct text decoration in Chrome, Edge, and Safari. -*/ - -abbr:where([title]) { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; -} - -/* - Remove the default font size and weight for headings. -*/ - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: inherit; - font-weight: inherit; -} - -/* - Reset links to optimize for opt-in styling instead of opt-out. -*/ - -a { - color: inherit; - -webkit-text-decoration: inherit; - text-decoration: inherit; -} - -/* - Add the correct font weight in Edge and Safari. -*/ - -b, -strong { - font-weight: bolder; -} - -/* - 1. Use the user's configured `mono` font-family by default. - 2. Use the user's configured `mono` font-feature-settings by default. - 3. Use the user's configured `mono` font-variation-settings by default. - 4. Correct the odd `em` font sizing in all browsers. -*/ - -code, -kbd, -samp, -pre { - font-family: var(--default-mono-font-family, ui-monospace, monospace); /* 4 */ - font-feature-settings: var(--default-mono-font-feature-settings, normal); /* 5 */ - font-variation-settings: var(--default-mono-font-variation-settings, normal); /* 6 */ - font-size: 1em; /* 4 */ -} - -/* - Add the correct font size in all browsers. -*/ - -small { - font-size: 80%; -} - -/* - Prevent `sub` and `sup` elements from affecting the line height in all browsers. -*/ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - inset-block-end: -0.25em; -} - -sup { - inset-block-start: -0.5em; -} - -/* - 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) - 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) - 3. Remove gaps between table borders by default. -*/ - -table { - text-indent: 0; /* 1 */ - border-color: inherit; /* 2 */ - border-collapse: collapse; /* 3 */ -} - -/* - Use the modern Firefox focus style for all focusable elements. -*/ - -:-moz-focusring { - outline: auto; -} - -/* - Add the correct vertical alignment in Chrome and Firefox. -*/ - -progress { - vertical-align: baseline; -} - -/* - Add the correct display in Chrome and Safari. -*/ - -summary { - display: list-item; -} - -/* - Make lists unstyled by default. -*/ - -ol, -ul, -menu { - list-style: none; -} - -/* - 1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) - 2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) - This can trigger a poorly considered lint error in some tools but is included by design. -*/ - -img, -svg, -video, -canvas, -audio, -iframe, -embed, -object { - display: block; /* 1 */ - vertical-align: middle; /* 2 */ -} - -/* - Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) -*/ - -img, -video { - max-inline-size: 100%; - block-size: auto; -} - -/* - 1. Inherit font styles in all browsers. - 2. Remove border radius in all browsers. - 3. Remove background color in all browsers. - 4. Ensure consistent opacity for disabled states in all browsers. -*/ - -button, -input, -select, -optgroup, -textarea, -::file-selector-button { - font: inherit; /* 1 */ - font-feature-settings: inherit; /* 1 */ - font-variation-settings: inherit; /* 1 */ - letter-spacing: inherit; /* 1 */ - color: inherit; /* 1 */ - border-radius: 0; /* 2 */ - background-color: transparent; /* 3 */ - opacity: 1; /* 4 */ -} - -/* - Restore default font weight. -*/ - -:where(select:is([multiple], [size])) optgroup { - font-weight: bolder; -} - -/* - Restore indentation. -*/ - -:where(select:is([multiple], [size])) optgroup option { - padding-inline-start: 20px; -} - -/* - Restore space after button. -*/ - -::file-selector-button { - margin-inline-end: 4px; -} - -/* - 1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) - 2. Set the default placeholder color to a semi-transparent version of the current text color. -*/ - -::-moz-placeholder { - opacity: 1; /* 1 */ - color: color-mix(in oklab, currentColor 50%, transparent); /* 2 */ -} - -::placeholder { - opacity: 1; /* 1 */ - color: color-mix(in oklab, currentColor 50%, transparent); /* 2 */ -} - -/* - Prevent resizing textareas horizontally by default. -*/ - -textarea { - resize: vertical; -} - -/* - Remove the inner padding in Chrome and Safari on macOS. -*/ - -::-webkit-search-decoration { - -webkit-appearance: none; -} - -/* - 1. Ensure date/time inputs have the same height when empty in iOS Safari. - 2. Ensure text alignment can be changed on date/time inputs in iOS Safari. -*/ - -::-webkit-date-and-time-value { - min-block-size: 1lh; /* 1 */ - text-align: inherit; /* 2 */ -} - -/* - Prevent height from changing on date/time inputs in macOS Safari when the input is set to `display: block`. -*/ - -::-webkit-datetime-edit { - display: inline-flex; -} - -/* - Remove excess padding from pseudo-elements in date/time inputs to ensure consistent height across browsers. -*/ - -::-webkit-datetime-edit-fields-wrapper { - padding: 0; -} - -::-webkit-datetime-edit, -::-webkit-datetime-edit-year-field, -::-webkit-datetime-edit-month-field, -::-webkit-datetime-edit-day-field, -::-webkit-datetime-edit-hour-field, -::-webkit-datetime-edit-minute-field, -::-webkit-datetime-edit-second-field, -::-webkit-datetime-edit-millisecond-field, -::-webkit-datetime-edit-meridiem-field { - padding-block: 0; -} - -/* - Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) -*/ - -:-moz-ui-invalid { - box-shadow: none; -} - -/* - Correct the inability to style the border radius in iOS Safari. -*/ - -button, -input:where([type='button'], [type='reset'], [type='submit']), -::file-selector-button { - -webkit-appearance: button; - -moz-appearance: button; - appearance: button; -} - -/* - Correct the cursor style of increment and decrement buttons in Safari. -*/ - -::-webkit-inner-spin-button, -::-webkit-outer-spin-button { - block-size: auto; -} - -/* - Make elements with the HTML hidden attribute stay hidden by default. -*/ - -[hidden]:where(:not([hidden='until-found'])) { - display: none !important; -} - -/* - Make elements with the HTML contents attribute become pseudo-box by default. -*/ - -[contents] { - display: contents !important; -} - -/* - Make turbo frame become pseudo-box by default. -*/ - -turbo-frame { - display: contents; -} - -/* - Enables size interpolation to allow animation. -*/ - -:root { - interpolate-size: allow-keywords; -} - -/* - Set color scheme to light and dark. -*/ - -:root { - color-scheme: light dark; -} - -/* - Correct the arrow style of datalist in Chrome. -*/ - -::-webkit-calendar-picker-indicator { - line-height: 1em; -} - -/* - Restore space between options. -*/ - -option { - padding: 2px 4px; -} - -/* - Prevent page scroll when modal dialog is open. -*/ - -html:has(dialog:modal[open]) { - overflow: hidden; -} - -/* - Remove all animations and transitions for people that prefer not to see them -*/ - -@media (prefers-reduced-motion: reduce) { - *, ::before, ::after, ::backdrop { - animation-duration: 0.01ms !important; - animation-iteration-count: 1 !important; - transition-duration: 0.01ms !important; - } -} - - -/* vendor/css-zero/colors.css */ -:root { - --slate-50: oklch(0.984 0.003 247.858); - --slate-100: oklch(0.968 0.007 247.896); - --slate-200: oklch(0.929 0.013 255.508); - --slate-300: oklch(0.869 0.022 252.894); - --slate-400: oklch(0.704 0.04 256.788); - --slate-500: oklch(0.554 0.046 257.417); - --slate-600: oklch(0.446 0.043 257.281); - --slate-700: oklch(0.372 0.044 257.287); - --slate-800: oklch(0.279 0.041 260.031); - --slate-900: oklch(0.208 0.042 265.755); - --slate-950: oklch(0.129 0.042 264.695); - - --gray-50: oklch(0.985 0.002 247.839); - --gray-100: oklch(0.967 0.003 264.542); - --gray-200: oklch(0.928 0.006 264.531); - --gray-300: oklch(0.872 0.01 258.338); - --gray-400: oklch(0.707 0.022 261.325); - --gray-500: oklch(0.551 0.027 264.364); - --gray-600: oklch(0.446 0.03 256.802); - --gray-700: oklch(0.373 0.034 259.733); - --gray-800: oklch(0.278 0.033 256.848); - --gray-900: oklch(0.21 0.034 264.665); - --gray-950: oklch(0.13 0.028 261.692); - - --zinc-50: oklch(0.985 0 0); - --zinc-100: oklch(0.967 0.001 286.375); - --zinc-200: oklch(0.92 0.004 286.32); - --zinc-300: oklch(0.871 0.006 286.286); - --zinc-400: oklch(0.705 0.015 286.067); - --zinc-500: oklch(0.552 0.016 285.938); - --zinc-600: oklch(0.442 0.017 285.786); - --zinc-700: oklch(0.37 0.013 285.805); - --zinc-800: oklch(0.274 0.006 286.033); - --zinc-900: oklch(0.21 0.006 285.885); - --zinc-950: oklch(0.141 0.005 285.823); - - --neutral-50: oklch(0.985 0 0); - --neutral-100: oklch(0.97 0 0); - --neutral-200: oklch(0.922 0 0); - --neutral-300: oklch(0.87 0 0); - --neutral-400: oklch(0.708 0 0); - --neutral-500: oklch(0.556 0 0); - --neutral-600: oklch(0.439 0 0); - --neutral-700: oklch(0.371 0 0); - --neutral-800: oklch(0.269 0 0); - --neutral-900: oklch(0.205 0 0); - --neutral-950: oklch(0.145 0 0); - - --stone-50: oklch(0.985 0.001 106.423); - --stone-100: oklch(0.97 0.001 106.424); - --stone-200: oklch(0.923 0.003 48.717); - --stone-300: oklch(0.869 0.005 56.366); - --stone-400: oklch(0.709 0.01 56.259); - --stone-500: oklch(0.553 0.013 58.071); - --stone-600: oklch(0.444 0.011 73.639); - --stone-700: oklch(0.374 0.01 67.558); - --stone-800: oklch(0.268 0.007 34.298); - --stone-900: oklch(0.216 0.006 56.043); - --stone-950: oklch(0.147 0.004 49.25); - - --red-50: oklch(0.971 0.013 17.38); - --red-100: oklch(0.936 0.032 17.717); - --red-200: oklch(0.885 0.062 18.334); - --red-300: oklch(0.808 0.114 19.571); - --red-400: oklch(0.704 0.191 22.216); - --red-500: oklch(0.637 0.237 25.331); - --red-600: oklch(0.577 0.245 27.325); - --red-700: oklch(0.505 0.213 27.518); - --red-800: oklch(0.444 0.177 26.899); - --red-900: oklch(0.396 0.141 25.723); - --red-950: oklch(0.258 0.092 26.042); - - --orange-50: oklch(0.98 0.016 73.684); - --orange-100: oklch(0.954 0.038 75.164); - --orange-200: oklch(0.901 0.076 70.697); - --orange-300: oklch(0.837 0.128 66.29); - --orange-400: oklch(0.75 0.183 55.934); - --orange-500: oklch(0.705 0.213 47.604); - --orange-600: oklch(0.646 0.222 41.116); - --orange-700: oklch(0.553 0.195 38.402); - --orange-800: oklch(0.47 0.157 37.304); - --orange-900: oklch(0.408 0.123 38.172); - --orange-950: oklch(0.266 0.079 36.259); - - --amber-50: oklch(0.987 0.022 95.277); - --amber-100: oklch(0.962 0.059 95.617); - --amber-200: oklch(0.924 0.12 95.746); - --amber-300: oklch(0.879 0.169 91.605); - --amber-400: oklch(0.828 0.189 84.429); - --amber-500: oklch(0.769 0.188 70.08); - --amber-600: oklch(0.666 0.179 58.318); - --amber-700: oklch(0.555 0.163 48.998); - --amber-800: oklch(0.473 0.137 46.201); - --amber-900: oklch(0.414 0.112 45.904); - --amber-950: oklch(0.279 0.077 45.635); - - --yellow-50: oklch(0.987 0.026 102.212); - --yellow-100: oklch(0.973 0.071 103.193); - --yellow-200: oklch(0.945 0.129 101.54); - --yellow-300: oklch(0.905 0.182 98.111); - --yellow-400: oklch(0.852 0.199 91.936); - --yellow-500: oklch(0.795 0.184 86.047); - --yellow-600: oklch(0.681 0.162 75.834); - --yellow-700: oklch(0.554 0.135 66.442); - --yellow-800: oklch(0.476 0.114 61.907); - --yellow-900: oklch(0.421 0.095 57.708); - --yellow-950: oklch(0.286 0.066 53.813); - - --lime-50: oklch(0.986 0.031 120.757); - --lime-100: oklch(0.967 0.067 122.328); - --lime-200: oklch(0.938 0.127 124.321); - --lime-300: oklch(0.897 0.196 126.665); - --lime-400: oklch(0.841 0.238 128.85); - --lime-500: oklch(0.768 0.233 130.85); - --lime-600: oklch(0.648 0.2 131.684); - --lime-700: oklch(0.532 0.157 131.589); - --lime-800: oklch(0.453 0.124 130.933); - --lime-900: oklch(0.405 0.101 131.063); - --lime-950: oklch(0.274 0.072 132.109); - - --green-50: oklch(0.982 0.018 155.826); - --green-100: oklch(0.962 0.044 156.743); - --green-200: oklch(0.925 0.084 155.995); - --green-300: oklch(0.871 0.15 154.449); - --green-400: oklch(0.792 0.209 151.711); - --green-500: oklch(0.723 0.219 149.579); - --green-600: oklch(0.627 0.194 149.214); - --green-700: oklch(0.527 0.154 150.069); - --green-800: oklch(0.448 0.119 151.328); - --green-900: oklch(0.393 0.095 152.535); - --green-950: oklch(0.266 0.065 152.934); - - --emerald-50: oklch(0.979 0.021 166.113); - --emerald-100: oklch(0.95 0.052 163.051); - --emerald-200: oklch(0.905 0.093 164.15); - --emerald-300: oklch(0.845 0.143 164.978); - --emerald-400: oklch(0.765 0.177 163.223); - --emerald-500: oklch(0.696 0.17 162.48); - --emerald-600: oklch(0.596 0.145 163.225); - --emerald-700: oklch(0.508 0.118 165.612); - --emerald-800: oklch(0.432 0.095 166.913); - --emerald-900: oklch(0.378 0.077 168.94); - --emerald-950: oklch(0.262 0.051 172.552); - - --teal-50: oklch(0.984 0.014 180.72); - --teal-100: oklch(0.953 0.051 180.801); - --teal-200: oklch(0.91 0.096 180.426); - --teal-300: oklch(0.855 0.138 181.071); - --teal-400: oklch(0.777 0.152 181.912); - --teal-500: oklch(0.704 0.14 182.503); - --teal-600: oklch(0.6 0.118 184.704); - --teal-700: oklch(0.511 0.096 186.391); - --teal-800: oklch(0.437 0.078 188.216); - --teal-900: oklch(0.386 0.063 188.416); - --teal-950: oklch(0.277 0.046 192.524); - - --cyan-50: oklch(0.984 0.019 200.873); - --cyan-100: oklch(0.956 0.045 203.388); - --cyan-200: oklch(0.917 0.08 205.041); - --cyan-300: oklch(0.865 0.127 207.078); - --cyan-400: oklch(0.789 0.154 211.53); - --cyan-500: oklch(0.715 0.143 215.221); - --cyan-600: oklch(0.609 0.126 221.723); - --cyan-700: oklch(0.52 0.105 223.128); - --cyan-800: oklch(0.45 0.085 224.283); - --cyan-900: oklch(0.398 0.07 227.392); - --cyan-950: oklch(0.302 0.056 229.695); - - --sky-50: oklch(0.977 0.013 236.62); - --sky-100: oklch(0.951 0.026 236.824); - --sky-200: oklch(0.901 0.058 230.902); - --sky-300: oklch(0.828 0.111 230.318); - --sky-400: oklch(0.746 0.16 232.661); - --sky-500: oklch(0.685 0.169 237.323); - --sky-600: oklch(0.588 0.158 241.966); - --sky-700: oklch(0.5 0.134 242.749); - --sky-800: oklch(0.443 0.11 240.79); - --sky-900: oklch(0.391 0.09 240.876); - --sky-950: oklch(0.293 0.066 243.157); - - --blue-50: oklch(0.97 0.014 254.604); - --blue-100: oklch(0.932 0.032 255.585); - --blue-200: oklch(0.882 0.059 254.128); - --blue-300: oklch(0.809 0.105 251.813); - --blue-400: oklch(0.707 0.165 254.624); - --blue-500: oklch(0.623 0.214 259.815); - --blue-600: oklch(0.546 0.245 262.881); - --blue-700: oklch(0.488 0.243 264.376); - --blue-800: oklch(0.424 0.199 265.638); - --blue-900: oklch(0.379 0.146 265.522); - --blue-950: oklch(0.282 0.091 267.935); - - --indigo-50: oklch(0.962 0.018 272.314); - --indigo-100: oklch(0.93 0.034 272.788); - --indigo-200: oklch(0.87 0.065 274.039); - --indigo-300: oklch(0.785 0.115 274.713); - --indigo-400: oklch(0.673 0.182 276.935); - --indigo-500: oklch(0.585 0.233 277.117); - --indigo-600: oklch(0.511 0.262 276.966); - --indigo-700: oklch(0.457 0.24 277.023); - --indigo-800: oklch(0.398 0.195 277.366); - --indigo-900: oklch(0.359 0.144 278.697); - --indigo-950: oklch(0.257 0.09 281.288); - - --violet-50: oklch(0.969 0.016 293.756); - --violet-100: oklch(0.943 0.029 294.588); - --violet-200: oklch(0.894 0.057 293.283); - --violet-300: oklch(0.811 0.111 293.571); - --violet-400: oklch(0.702 0.183 293.541); - --violet-500: oklch(0.606 0.25 292.717); - --violet-600: oklch(0.541 0.281 293.009); - --violet-700: oklch(0.491 0.27 292.581); - --violet-800: oklch(0.432 0.232 292.759); - --violet-900: oklch(0.38 0.189 293.745); - --violet-950: oklch(0.283 0.141 291.089); - - --purple-50: oklch(0.977 0.014 308.299); - --purple-100: oklch(0.946 0.033 307.174); - --purple-200: oklch(0.902 0.063 306.703); - --purple-300: oklch(0.827 0.119 306.383); - --purple-400: oklch(0.714 0.203 305.504); - --purple-500: oklch(0.627 0.265 303.9); - --purple-600: oklch(0.558 0.288 302.321); - --purple-700: oklch(0.496 0.265 301.924); - --purple-800: oklch(0.438 0.218 303.724); - --purple-900: oklch(0.381 0.176 304.987); - --purple-950: oklch(0.291 0.149 302.717); - - --fuchsia-50: oklch(0.977 0.017 320.058); - --fuchsia-100: oklch(0.952 0.037 318.852); - --fuchsia-200: oklch(0.903 0.076 319.62); - --fuchsia-300: oklch(0.833 0.145 321.434); - --fuchsia-400: oklch(0.74 0.238 322.16); - --fuchsia-500: oklch(0.667 0.295 322.15); - --fuchsia-600: oklch(0.591 0.293 322.896); - --fuchsia-700: oklch(0.518 0.253 323.949); - --fuchsia-800: oklch(0.452 0.211 324.591); - --fuchsia-900: oklch(0.401 0.17 325.612); - --fuchsia-950: oklch(0.293 0.136 325.661); - - --pink-50: oklch(0.971 0.014 343.198); - --pink-100: oklch(0.948 0.028 342.258); - --pink-200: oklch(0.899 0.061 343.231); - --pink-300: oklch(0.823 0.12 346.018); - --pink-400: oklch(0.718 0.202 349.761); - --pink-500: oklch(0.656 0.241 354.308); - --pink-600: oklch(0.592 0.249 0.584); - --pink-700: oklch(0.525 0.223 3.958); - --pink-800: oklch(0.459 0.187 3.815); - --pink-900: oklch(0.408 0.153 2.432); - --pink-950: oklch(0.284 0.109 3.907); - - --rose-50: oklch(0.969 0.015 12.422); - --rose-100: oklch(0.941 0.03 12.58); - --rose-200: oklch(0.892 0.058 10.001); - --rose-300: oklch(0.81 0.117 11.638); - --rose-400: oklch(0.712 0.194 13.428); - --rose-500: oklch(0.645 0.246 16.439); - --rose-600: oklch(0.586 0.253 17.585); - --rose-700: oklch(0.514 0.222 16.935); - --rose-800: oklch(0.455 0.188 13.697); - --rose-900: oklch(0.41 0.159 10.272); - --rose-950: oklch(0.271 0.105 12.094); -} - - -/* vendor/css-zero/sizes.css */ -:root { - /**************************************************************** - * Fixed Size - *****************************************************************/ - --size-0_5: 0.125rem; /* 2px */ - --size-1: 0.25rem; /* 4px */ - --size-1_5: 0.375rem; /* 6px */ - --size-2: 0.5rem; /* 8px */ - --size-2_5: 0.625rem; /* 10px */ - --size-3: 0.75rem; /* 12px */ - --size-3_5: 0.875rem; /* 14px */ - --size-4: 1rem; /* 16px */ - --size-5: 1.25rem; /* 20px */ - --size-6: 1.5rem; /* 24px */ - --size-7: 1.75rem; /* 28px */ - --size-8: 2rem; /* 32px */ - --size-9: 2.25rem; /* 36px */ - --size-10: 2.5rem; /* 40px */ - --size-11: 2.75rem; /* 44px */ - --size-12: 3rem; /* 48px */ - --size-14: 3.5rem; /* 56px */ - --size-16: 4rem; /* 64px */ - --size-20: 5rem; /* 80px */ - --size-24: 6rem; /* 96px */ - --size-28: 7rem; /* 112px */ - --size-32: 8rem; /* 128px */ - --size-36: 9rem; /* 144px */ - --size-40: 10rem; /* 160px */ - --size-44: 11rem; /* 176px */ - --size-48: 12rem; /* 192px */ - --size-52: 13rem; /* 208px */ - --size-56: 14rem; /* 224px */ - --size-60: 15rem; /* 240px */ - --size-64: 16rem; /* 256px */ - --size-72: 18rem; /* 288px */ - --size-80: 20rem; /* 320px */ - --size-96: 24rem; /* 384px */ - - /**************************************************************** - * Percentual Size - *****************************************************************/ - --size-1-2: 50%; - --size-1-3: 33.333333%; - --size-2-3: 66.666667%; - --size-1-4: 25%; - --size-2-4: 50%; - --size-3-4: 75%; - --size-1-5: 20%; - --size-2-5: 40%; - --size-3-5: 60%; - --size-4-5: 80%; - --size-1-6: 16.666667%; - --size-2-6: 33.333333%; - --size-3-6: 50%; - --size-4-6: 66.666667%; - --size-5-6: 83.333333%; - --size-1-12: 8.333333%; - --size-2-12: 16.666667%; - --size-3-12: 25%; - --size-4-12: 33.333333%; - --size-5-12: 41.666667%; - --size-6-12: 50%; - --size-7-12: 58.333333%; - --size-8-12: 66.666667%; - --size-9-12: 75%; - --size-10-12: 83.333333%; - --size-11-12: 91.666667%; - --size-full: 100%; - - /**************************************************************** - * Max Inline Sizes - *****************************************************************/ - --max-i-3xs: 16rem; /* 256px */ - --max-i-2xs: 18rem; /* 288px */ - --max-i-xs: 20rem; /* 320px */ - --max-i-sm: 24rem; /* 384px */ - --max-i-md: 28rem; /* 448px */ - --max-i-lg: 32rem; /* 512px */ - --max-i-xl: 36rem; /* 576px */ - --max-i-2xl: 42rem; /* 672px */ - --max-i-3xl: 48rem; /* 768px */ - --max-i-4xl: 56rem; /* 896px */ - --max-i-5xl: 64rem; /* 1024px */ - --max-i-6xl: 72rem; /* 1152px */ - --max-i-7xl: 80rem; /* 1280px */ - - /**************************************************************** - * Aspect Ratio - *****************************************************************/ - --aspect-square: 1/1; - --aspect-widescreen: 16/9; - - /**************************************************************** - * Breakpoints - *****************************************************************/ - --breakpoint-sm: 40rem; /* Mobile 640px */ - --breakpoint-md: 48rem; /* Tablet 768px */ - --breakpoint-lg: 64rem; /* Laptop 1024px */ - --breakpoint-xl: 80rem; /* Desktop 1280px */ -} - - -/* vendor/css-zero/borders.css */ -:root { - /**************************************************************** - * Border Width - * Variables for controlling the width of an element's borders. - * border-width: var(--border); - *****************************************************************/ - --border: 1px; - --border-2: 2px; - --border-4: 4px; - --border-8: 8px; - - /**************************************************************** - * Border Radius - * Variables for controlling the border radius of an element. - * border-radius: var(--rounded-sm); - *****************************************************************/ - --rounded-xs: 0.125rem; /* 2px */ - --rounded-sm: 0.25rem; /* 4px */ - --rounded-md: 0.375rem; /* 6px */ - --rounded-lg: 0.5rem; /* 8px */ - --rounded-xl: 0.75rem; /* 12px */ - --rounded-2xl: 1rem; /* 16px */ - --rounded-3xl: 1.5rem; /* 24px */ - --rounded-full: 9999px; -} - - -/* vendor/css-zero/effects.css */ -:root { - /**************************************************************** - * Box Shadow - * Variables for controlling the box shadow of an element. - * box-shadow: var(--shadow-sm); - ****************************************************************/ - --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05); - --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); - --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); - --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); - --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); - --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25); - --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); - - /**************************************************************** - * Opacity - * Variables for controlling the opacity of an element. - * opacity: var(--opacity-25); - ****************************************************************/ - --opacity-5: 0.05; - --opacity-10: 0.1; - --opacity-20: 0.2; - --opacity-25: 0.25; - --opacity-30: 0.3; - --opacity-40: 0.4; - --opacity-50: 0.5; - --opacity-60: 0.6; - --opacity-70: 0.7; - --opacity-75: 0.75; - --opacity-80: 0.8; - --opacity-90: 0.9; - --opacity-95: 0.95; - --opacity-100: 1; -} - - -/* vendor/css-zero/typography.css */ -:root { - /**************************************************************** - * Font Size - * Variables for controlling the font size of an element. - * font-size: var(--text-xs); - *****************************************************************/ - --text-xs: 0.75rem; /* 12px */ - --text-sm: 0.875rem; /* 14px */ - --text-base: 1rem; /* 16px */ - --text-lg: 1.125rem; /* 18px */ - --text-xl: 1.25rem; /* 20px */ - --text-2xl: 1.5rem; /* 24px */ - --text-3xl: 1.875rem; /* 30px */ - --text-4xl: 2.25rem; /* 36px */ - --text-5xl: 3rem; /* 48px */ - --text-6xl: 3.75rem; /* 60px */ - --text-7xl: 4.5rem; /* 72px */ - --text-8xl: 6rem; /* 96px */ - --text-9xl: 8rem; /* 128px */ - - --text-fluid-xs: clamp(0.75rem, 0.64rem + 0.57vw, 1rem); /* 12px..16px */ - --text-fluid-sm: clamp(0.875rem, 0.761rem + 0.568vw, 1.125rem); /* 14px..18px */ - --text-fluid-base: clamp(1rem, 0.89rem + 0.57vw, 1.25rem); /* 16px..20px */ - --text-fluid-lg: clamp(1.125rem, 0.955rem + 0.852vw, 1.5rem); /* 18px..24px */ - --text-fluid-xl: clamp(1.25rem, 0.966rem + 1.42vw, 1.875rem); /* 20px..30px */ - --text-fluid-2xl: clamp(1.5rem, 1.16rem + 1.7vw, 2.25rem); /* 24px..36px */ - --text-fluid-3xl: clamp(1.875rem, 1.364rem + 2.557vw, 3rem); /* 30px..48px */ - --text-fluid-4xl: clamp(2.25rem, 1.57rem + 3.41vw, 3.75rem); /* 36px..60px */ - --text-fluid-5xl: clamp(3rem, 2.32rem + 3.41vw, 4.5rem); /* 48px..72px */ - --text-fluid-6xl: clamp(3.75rem, 2.73rem + 5.11vw, 6rem); /* 60px..96px */ - --text-fluid-7xl: clamp(4.5rem, 2.91rem + 7.95vw, 8rem); /* 72px..128px */ - - /**************************************************************** - * Font Weight - * Variables for controlling the font weight of an element. - * font-weight: var(--font-hairline); - *****************************************************************/ - --font-thin: 100; - --font-extralight: 200; - --font-light: 300; - --font-normal: 400; - --font-medium: 500; - --font-semibold: 600; - --font-bold: 700; - --font-extrabold: 800; - --font-black: 900; - - /**************************************************************** - * Line Height - * Variables for controlling the leading (line height) of an element. - * line-height: var(--leading-tight); - *****************************************************************/ - --leading-none: 1; - --leading-tight: 1.25; - --leading-snug: 1.375; - --leading-normal: 1.5; - --leading-relaxed: 1.625; - --leading-loose: 2; - --leading-3: .75rem; /* 12px */ - --leading-4: 1rem; /* 16px */ - --leading-5: 1.25rem; /* 20px */ - --leading-6: 1.5rem; /* 24px */ - --leading-7: 1.75rem; /* 28px */ - --leading-8: 2rem; /* 32px */ - --leading-9: 2.25rem; /* 36px */ - --leading-10: 2.5rem; /* 40px */ - - /**************************************************************** - * Font Family (https://modernfontstacks.com) - * Variables for controlling the font family of an element. - * font-family: var(--font-sans); - *****************************************************************/ - --font-system-ui: system-ui, sans-serif; - --font-transitional: Charter, Bitstream Charter, Sitka Text, Cambria, serif; - --font-old-style: Iowan Old Style, Palatino Linotype, URW Palladio L, P052, serif; - --font-humanist: Seravek, Gill Sans Nova, Ubuntu, Calibri, DejaVu Sans, source-sans-pro, sans-serif; - --font-geometric-humanist: Avenir, Montserrat, Corbel, URW Gothic, source-sans-pro, sans-serif; - --font-classical-humanist: Optima, Candara, Noto Sans, source-sans-pro, sans-serif; - --font-neo-grotesque: Inter, Roboto, Helvetica Neue, Arial Nova, Nimbus Sans, Arial, sans-serif; - --font-monospace-slab-serif: Nimbus Mono PS, Courier New, monospace; - --font-monospace-code: Dank Mono, Operator Mono, Inconsolata, Fira Mono, ui-monospace, SF Mono, Monaco, Droid Sans Mono, Source Code Pro, Cascadia Code, Menlo, Consolas, DejaVu Sans Mono, monospace; - --font-industrial: Bahnschrift, DIN Alternate, Franklin Gothic Medium, Nimbus Sans Narrow, sans-serif-condensed, sans-serif; - --font-rounded-sans: ui-rounded, Hiragino Maru Gothic ProN, Quicksand, Comfortaa, Manjari, Arial Rounded MT, Arial Rounded MT Bold, Calibri, source-sans-pro, sans-serif; - --font-slab-serif: Rockwell, Rockwell Nova, Roboto Slab, DejaVu Serif, Sitka Small, serif; - --font-antique: Superclarendon, Bookman Old Style, URW Bookman, URW Bookman L, Georgia Pro, Georgia, serif; - --font-didone: Didot, Bodoni MT, Noto Serif Display, URW Palladio L, P052, Sylfaen, serif; - --font-handwritten: Segoe Print, Bradley Hand, Chilanka, TSCu_Comic, casual, cursive; - - /**************************************************************** - * Letter Spacing - * Variables for controlling the tracking (letter spacing) of an element. - * letter-spacing: var(--tracking-tighter); - *****************************************************************/ - --tracking-tighter: -0.05em; - --tracking-tight: -0.025em; - --tracking-normal: 0em; - --tracking-wide: 0.025em; - --tracking-wider: 0.05em; - --tracking-widest: 0.1em; -} - - -/* vendor/css-zero/animations.css */ -/**************************************************************** -* Animation -* Variables for animating elements with CSS animations. -* animation: var(--animate-fade-in) forwards; -*****************************************************************/ - -:root { - --animate-fade-in: fade-in .5s cubic-bezier(.25, 0, .3, 1); - --animate-fade-in-bloom: fade-in-bloom 2s cubic-bezier(.25, 0, .3, 1); - --animate-fade-out: fade-out .5s cubic-bezier(.25, 0, .3, 1); - --animate-fade-out-bloom: fade-out-bloom 2s cubic-bezier(.25, 0, .3, 1); - --animate-scale-up: scale-up .5s cubic-bezier(.25, 0, .3, 1); - --animate-scale-down: scale-down .5s cubic-bezier(.25, 0, .3, 1); - --animate-slide-out-up: slide-out-up .5s cubic-bezier(.25, 0, .3, 1); - --animate-slide-out-down: slide-out-down .5s cubic-bezier(.25, 0, .3, 1); - --animate-slide-out-right: slide-out-right .5s cubic-bezier(.25, 0, .3, 1); - --animate-slide-out-left: slide-out-left .5s cubic-bezier(.25, 0, .3, 1); - --animate-slide-in-up: slide-in-up .5s cubic-bezier(.25, 0, .3, 1); - --animate-slide-in-down: slide-in-down .5s cubic-bezier(.25, 0, .3, 1); - --animate-slide-in-right: slide-in-right .5s cubic-bezier(.25, 0, .3, 1); - --animate-slide-in-left: slide-in-left .5s cubic-bezier(.25, 0, .3, 1); - --animate-shake-x: shake-x .75s cubic-bezier(0, 0, 0, 1); - --animate-shake-y: shake-y .75s cubic-bezier(0, 0, 0, 1); - --animate-shake-z: shake-z 1s cubic-bezier(0, 0, 0, 1); - --animate-spin: spin 2s linear infinite; - --animate-ping: ping 5s cubic-bezier(0, 0, .3, 1) infinite; - --animate-blink: blink 1s cubic-bezier(0, 0, .3, 1) infinite; - --animate-float: float 3s cubic-bezier(0, 0, 0, 1) infinite; - --animate-bounce: bounce 2s cubic-bezier(.5, -.3, .1, 1.5) infinite; - --animate-pulse: pulse 2s cubic-bezier(0, 0, .3, 1) infinite; -} - -@keyframes fade-in { - to { opacity: 1 } -} - -@keyframes fade-in-bloom { - 0% { opacity: 0; filter: brightness(1) blur(20px) } - 10% { opacity: 1; filter: brightness(2) blur(10px) } - 100% { opacity: 1; filter: brightness(1) blur(0) } -} - -@keyframes fade-out { - to { opacity: 0 } -} - -@keyframes fade-out-bloom { - 100% { opacity: 0; filter: brightness(1) blur(20px) } - 10% { opacity: 1; filter: brightness(2) blur(10px) } - 0% { opacity: 1; filter: brightness(1) blur(0) } -} -@keyframes scale-up { - to { transform: scale(1.25) } -} - -@keyframes scale-down { - to { transform: scale(.75) } -} - -@keyframes slide-out-up { - to { transform: translateY(-100%) } -} - -@keyframes slide-out-down { - to { transform: translateY(100%) } -} - -@keyframes slide-out-right { - to { transform: translateX(100%) } -} - -@keyframes slide-out-left { - to { transform: translateX(-100%) } -} - -@keyframes slide-in-up { - from { transform: translateY(100%) } -} - -@keyframes slide-in-down { - from { transform: translateY(-100%) } -} - -@keyframes slide-in-right { - from { transform: translateX(-100%) } -} - -@keyframes slide-in-left { - from { transform: translateX(100%) } -} - -@keyframes shake-x { - 0%, 100% { transform: translateX(0%) } - 20% { transform: translateX(-5%) } - 40% { transform: translateX(5%) } - 60% { transform: translateX(-5%) } - 80% { transform: translateX(5%) } -} - -@keyframes shake-y { - 0%, 100% { transform: translateY(0%) } - 20% { transform: translateY(-5%) } - 40% { transform: translateY(5%) } - 60% { transform: translateY(-5%) } - 80% { transform: translateY(5%) } -} - -@keyframes shake-z { - 0%, 100% { transform: rotate(0deg) } - 20% { transform: rotate(-2deg) } - 40% { transform: rotate(2deg) } - 60% { transform: rotate(-2deg) } - 80% { transform: rotate(2deg) } -} - -@keyframes spin { - to { transform: rotate(1turn) } -} - -@keyframes ping { - 90%, 100% { - transform: scale(2); - opacity: 0; - } -} - -@keyframes blink { - 0%, 100% { - opacity: 1 - } - 50% { - opacity: .5 - } -} - -@keyframes float { - 50% { transform: translateY(-25%) } -} - -@keyframes bounce { - 25% { transform: translateY(-20%) } - 40% { transform: translateY(-3%) } - 0%, 60%, 100% { transform: translateY(0) } -} - -@keyframes pulse { - 50% { transform: scale(.9,.9) } -} - -@media (prefers-color-scheme: dark) { - @keyframes fade-in-bloom { - 0% { opacity: 0; filter: brightness(1) blur(20px) } - 10% { opacity: 1; filter: brightness(0.5) blur(10px) } - 100% { opacity: 1; filter: brightness(1) blur(0) } - } -} - -@media (prefers-color-scheme: dark) { - @keyframes fade-out-bloom { - 100% { opacity: 0; filter: brightness(1) blur(20px) } - 10% { opacity: 1; filter: brightness(0.5) blur(10px) } - 0% { opacity: 1; filter: brightness(1) blur(0) } - } -} - -/* vendor/css-zero/transforms.css */ -:root { - /**************************************************************** - * Scale - * Variables for scaling elements with transform. - * transform: var(--scale-100); - *****************************************************************/ - --scale-50: scale(0.50); - --scale-75: scale(0.75); - --scale-90: scale(0.90); - --scale-95: scale(0.95); - --scale-100: scale(1); - --scale-105: scale(1.05); - --scale-110: scale(1.10); - --scale-125: scale(1.25); - --scale-150: scale(1.50); - - /**************************************************************** - * Rotate - * Variables for rotating elements with transform. - * transform: var(--rotate-45); - *****************************************************************/ - --rotate-0: rotate(0deg); - --rotate-1: rotate(1deg); - --rotate-2: rotate(2deg); - --rotate-3: rotate(3deg); - --rotate-6: rotate(6deg); - --rotate-12: rotate(12deg); - --rotate-45: rotate(45deg); - --rotate-90: rotate(90deg); - --rotate-180: rotate(180deg); - - /**************************************************************** - * Skew - * Varibles for skewing elements with transform. - * transform: var(--skew-x-3); - *****************************************************************/ - --skew-x-0: skewX(0deg); - --skew-y-0: skewY(0deg); - --skew-x-1: skewX(1deg); - --skew-y-1: skewY(1deg); - --skew-x-2: skewX(2deg); - --skew-y-2: skewY(2deg); - --skew-x-3: skewX(3deg); - --skew-y-3: skewY(3deg); - --skew-x-6: skewX(6deg); - --skew-y-6: skewY(6deg); - --skew-x-12: skewX(12deg); - --skew-y-12: skewY(12deg); -} - - -/* vendor/css-zero/transitions.css */ -:root { - /**************************************************************** - * Transition Property - * Variables for controlling which CSS properties transition. - * transition-property: var(--transition); - *****************************************************************/ - --transition: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, translate, scale, rotate, filter, backdrop-filter; - --transition-colors: color, background-color, border-color, text-decoration-color, fill, stroke; - --transition-transform: transform, translate, scale, rotate; - - /**************************************************************** - * Transition Timing - * Variables for controlling the timing of CSS transitions. - * transition-duration|transition-delay: var(--time-75); - *****************************************************************/ - --time-75: 75ms; - --time-100: 100ms; - --time-150: 150ms; - --time-200: 200ms; - --time-300: 300ms; - --time-500: 500ms; - --time-700: 700ms; - --time-1000: 1000ms; -} - - -/* vendor/css-zero/filters.css */ -:root { - /**************************************************************** - * Blur - * Variables for applying blur filters to an element. - * filter|backdrop-filter: var(--blur-sm); - *****************************************************************/ - --blur-none: blur(0); - --blur-xs: blur(4px); - --blur-sm: blur(8px); - --blur-md: blur(12px); - --blur-lg: blur(16px); - --blur-xl: blur(24px); - --blur-2xl: blur(40px); - --blur-3xl: blur(64px); - - /**************************************************************** - * Brightness - * Variables for applying brightness filters to an element. - * filter|backdrop-filter: var(--brightness-50); - *****************************************************************/ - --brightness-0: brightness(0); - --brightness-50: brightness(0.5); - --brightness-75: brightness(0.75); - --brightness-90: brightness(0.9); - --brightness-95: brightness(0.95); - --brightness-100: brightness(1); - --brightness-105: brightness(1.05); - --brightness-110: brightness(1.1); - --brightness-125: brightness(1.25); - --brightness-150: brightness(1.5); - --brightness-200: brightness(2); - - /**************************************************************** - * Contrast - * Variables for applying contrast filters to an element. - * filter|backdrop-filter: var(--contrast-50); - *****************************************************************/ - --contrast-0: contrast(0); - --contrast-50: contrast(0.5); - --contrast-75: contrast(0.75); - --contrast-100: contrast(1); - --contrast-125: contrast(1.25); - --contrast-150: contrast(1.5); - --contrast-200: contrast(2); - - /**************************************************************** - * Drop Shadow - * Variables for applying drop-shadow filters to an element. - * filter: var(--drop-shadow); - *****************************************************************/ - --drop-shadow-none: drop-shadow(0 0 #0000); - --drop-shadow-sm: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.05)); - --drop-shadow: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.1)) drop-shadow(0 1px 1px rgba(0, 0, 0, 0.06)); - --drop-shadow-md: drop-shadow(0 4px 3px rgba(0, 0, 0, 0.07)) drop-shadow(0 2px 2px rgba(0, 0, 0, 0.06)); - --drop-shadow-lg: drop-shadow(0 10px 8px rgba(0, 0, 0, 0.04)) drop-shadow(0 4px 3px rgba(0, 0, 0, 0.1)); - --drop-shadow-xl: drop-shadow(0 20px 13px rgba(0, 0, 0, 0.03)) drop-shadow(0 8px 5px rgba(0, 0, 0, 0.08)); - --drop-shadow-2xl: drop-shadow(0 25px 25px rgba(0, 0, 0, 0.15)); - - /**************************************************************** - * Grayscale - * Variables for applying grayscale filters to an element. - * filter|backdrop-filter: var(--grayscale); - *****************************************************************/ - --grayscale-0: grayscale(0); - --grayscale: grayscale(100%); - - /**************************************************************** - * Hue Rotate - * Variables for applying hue-rotate filters to an element. - * filter|backdrop-filter: var(--hue-rotate-15); - *****************************************************************/ - --hue-rotate-0: hue-rotate(0deg); - --hue-rotate-15: hue-rotate(15deg); - --hue-rotate-30: hue-rotate(30deg); - --hue-rotate-60: hue-rotate(60deg); - --hue-rotate-90: hue-rotate(90deg); - --hue-rotate-180: hue-rotate(180deg); - - /**************************************************************** - * Invert - * Variables for applying invert filters to an element. - * filter|backdrop-filter: var(--invert); - *****************************************************************/ - --invert-0: invert(0); - --invert: invert(100%); - - /**************************************************************** - * Saturate - * Variables for applying saturation filters to an element. - * filter|backdrop-filter: var(--saturate-50); - *****************************************************************/ - --saturate-0: saturate(0); - --saturate-50: saturate(0.5); - --saturate-100: saturate(1); - --saturate-150: saturate(1.5); - --saturate-200: saturate(2); - - /**************************************************************** - * Sepia - * Variables for applying sepia filters to an element. - * filter|backdrop-filter: var(--sepia); - *****************************************************************/ - --sepia-0: sepia(0); - --sepia: sepia(100%); - - /**************************************************************** - * Opacity - * Utilities for applying backdrop opacity filters to an element. - * backdrop-filter: var(--alpha-45); - *****************************************************************/ - --alpha-0: opacity(0); - --alpha-5: opacity(0.05); - --alpha-10: opacity(0.1); - --alpha-15: opacity(0.15); - --alpha-20: opacity(0.2); - --alpha-25: opacity(0.25); - --alpha-30: opacity(0.3); - --alpha-35: opacity(0.35); - --alpha-40: opacity(0.4); - --alpha-45: opacity(0.45); - --alpha-50: opacity(0.5); - --alpha-55: opacity(0.55); - --alpha-60: opacity(0.6); - --alpha-65: opacity(0.65); - --alpha-70: opacity(0.7); - --alpha-75: opacity(0.75); - --alpha-80: opacity(0.8); - --alpha-85: opacity(0.85); - --alpha-90: opacity(0.9); - --alpha-95: opacity(0.95); - --alpha-100: opacity(1); -} - - -/* app/assets/stylesheets/rails_pulse/components/alert.css */ -.alert { - border: 1px solid var(--alert-border-color, var(--color-border)); - border-radius: var(--rounded-lg); - color: var(--alert-color, var(--color-text)); - font-size: var(--text-sm); - inline-size: var(--size-full); - padding: var(--size-4); - - img { - filter: var(--alert-icon-color, var(--color-filter-text)); - } -} - -.alert--positive { - --alert-border-color: var(--color-positive); - --alert-color: var(--color-positive); - --alert-icon-color: var(--color-filter-positive); -} - -.alert--negative { - --alert-border-color: var(--color-negative); - --alert-color: var(--color-negative); - --alert-icon-color: var(--color-filter-negative); -} - - -/* app/assets/stylesheets/rails_pulse/components/badge.css */ -.badge { - background-color: var(--badge-background, var(--color-bg)); - border-radius: var(--rounded-md); - border: 1px solid var(--badge-border-color, var(--color-border)); - box-shadow: var(--badge-box-shadow, none); - color: var(--badge-color, var(--color-text)); - display: inline-flex; - font-size: var(--text-xs); - font-weight: var(--font-semibold); - line-height: var(--leading-4); - padding: var(--size-0_5) var(--size-2_5); -} - -.badge--primary { - --badge-background: var(--color-primary); - --badge-border-color: transparent; - --badge-box-shadow: var(--shadow-sm); - --badge-color: var(--color-text-reversed); -} - -.badge--secondary { - --badge-background: var(--color-secondary); - --badge-border-color: transparent; - --badge-box-shadow: none; - --badge-color: var(--color-text); -} - -.badge--positive { - --badge-background: var(--color-positive); - --badge-border-color: transparent; - --badge-box-shadow: var(--shadow-sm); - --badge-color: white; -} - -.badge--negative { - --badge-background: var(--color-negative); - --badge-border-color: transparent; - --badge-box-shadow: var(--shadow-sm); - --badge-color: white; -} - -.badge--primary-inverse { - --badge-background: var(--color-bg); - --badge-border-color: transparent; - --badge-color: var(--color-positive); -} - -.badge--positive-inverse { - --badge-background: var(--color-bg); - --badge-border-color: transparent; - --badge-color: var(--color-positive); -} - -.badge--negative-inverse { - --badge-background: var(--color-bg); - --badge-border-color: transparent; - --badge-color: var(--color-negative); -} - - -/* app/assets/stylesheets/rails_pulse/components/base.css */ -:root { - /* Abstractions */ - --color-bg: white; - --color-text: black; - --color-text-reversed: white; - --color-text-subtle: var(--zinc-500); - --color-link: var(--blue-700); - --color-border-light: var(--zinc-100); - --color-border: var(--zinc-200); - --color-border-dark: var(--zinc-400); - --color-selected: var(--blue-100); - --color-selected-dark: var(--blue-300); - --color-highlight: var(--yellow-200); - - /* Accent colors */ - --color-primary: var(--zinc-900); - --color-secondary: var(--zinc-100); - --color-negative: var(--red-600); - --color-positive: var(--green-600); - - /* SVG color values */ - --color-filter-text: invert(0); - --color-filter-text-reversed: invert(1); - --color-filter-negative: invert(22%) sepia(85%) saturate(1790%) hue-rotate(339deg) brightness(105%) contrast(108%); - --color-filter-positive: invert(44%) sepia(89%) saturate(409%) hue-rotate(89deg) brightness(94%) contrast(97%); -} - -html[data-color-scheme="dark"] { - /* Abstractions */ - --color-bg: var(--zinc-800); - --color-text: white; - --color-text-reversed: black; - --color-text-subtle: var(--zinc-400); - --color-link: var(--blue-400); - --color-border-light: var(--zinc-900); - --color-border: var(--zinc-800); - --color-border-dark: var(--zinc-600); - --color-selected: var(--blue-950); - --color-selected-dark: var(--blue-800); - --color-highlight: var(--yellow-900); - - /* Accent colors */ - --color-primary: var(--zinc-50); - --color-secondary: var(--zinc-800); - --color-negative: var(--red-900); - --color-positive: var(--green-900); - - /* SVG color values */ - --color-filter-text: invert(1); - --color-filter-text-reversed: invert(0); - --color-filter-negative: invert(15%) sepia(65%) saturate(2067%) hue-rotate(339deg) brightness(102%) contrast(97%); - --color-filter-positive: invert(23%) sepia(62%) saturate(554%) hue-rotate(91deg) brightness(93%) contrast(91%); -} - -* { - border-color: var(--color-border); - scrollbar-color: #C1C1C1 transparent; - scrollbar-width: thin; -} - -html { - scroll-behavior: smooth; -} - -body { - background-color: var(--color-bg); - color: var(--color-text); - font-synthesis-weight: none; - overscroll-behavior: none; - text-rendering: optimizeLegibility; -} - -.turbo-progress-bar { - background-color: #4a8136 -} - -::-moz-selection { - background-color: var(--color-selected); -} - -::selection { - background-color: var(--color-selected); -} - - -/* app/assets/stylesheets/rails_pulse/components/breadcrumb.css */ -.breadcrumb { - align-items: center; - color: var(--color-text-subtle); - -moz-column-gap: var(--size-1); - column-gap: var(--size-1); - display: flex; - flex-wrap: wrap; - font-size: var(--text-sm); - overflow-wrap: break-word; - - a { - padding-block-end: 2px; - } - - img.breadcrumb-separator { - filter: var(--color-filter-text); - opacity: 0.5; - } - - a:hover { - color: var(--color-text); - } - - span[aria-current="page"] { - color: var(--color-text); - font-weight: 500; - } - - @media (width >= 40rem) { - -moz-column-gap: var(--size-2); - column-gap: var(--size-2); - } -} - - -/* app/assets/stylesheets/rails_pulse/components/button.css */ -.btn { - --btn-background: var(--color-bg); - --hover-color: oklch(from var(--btn-background) calc(l * .95) c h); - - align-items: center; - background-color: var(--btn-background); - block-size: var(--btn-block-size, auto); - border-radius: var(--btn-radius, var(--rounded-md)); - border: 1px solid var(--btn-border-color, var(--color-border)); - box-shadow: var(--btn-box-shadow, var(--shadow-xs)); - color: var(--btn-color, var(--color-text)); - -moz-column-gap: var(--size-2); - column-gap: var(--size-2); - cursor: default; - display: inline-flex; - font-size: var(--btn-font-size, var(--text-sm)); - font-weight: var(--btn-font-weight, var(--font-medium)); - inline-size: var(--btn-inline-size, auto); - justify-content: var(--btn-justify-content, center); - padding: var(--btn-padding, .375rem 1rem); - position: relative; - text-align: var(--btn-text-align, center); - white-space: nowrap; - - img:not([class]) { - filter: var(--btn-icon-color, var(--color-filter-text)); - } - - &:hover { - background-color: var(--btn-hover-color, var(--hover-color)); - } - - &:focus-visible { - outline: var(--btn-outline-size, 2px) solid var(--color-selected-dark); - } - - &:is(:disabled, [aria-disabled]) { - opacity: var(--opacity-50); pointer-events: none; - } -} - -.btn--primary { - --btn-background: var(--color-primary); - --btn-border-color: transparent; - --btn-color: var(--color-text-reversed); - --btn-icon-color: var(--color-filter-text-reversed); -} - -.btn--secondary { - --btn-background: var(--color-secondary); - --btn-border-color: transparent; -} - -.btn--borderless { - --btn-border-color: transparent; - --btn-box-shadow: none; -} - -.btn--positive { - --btn-background: var(--color-positive); - --btn-border-color: transparent; - --btn-color: white; - --btn-icon-color: invert(1); -} - -.btn--negative { - --btn-background: var(--color-negative); - --btn-border-color: transparent; - --btn-color: white; - --btn-icon-color: invert(1); -} - -.btn--plain { - --btn-background: transparent; - --btn-border-color: transparent; - --btn-hover-color: transparent; - --btn-padding: 0; - --btn-box-shadow: none; -} - -.btn--icon { - --btn-padding: var(--size-2); -} - -[aria-busy] .btn--loading:disabled { - > * { - visibility: hidden; - } - - &::after { - animation: spin 1s linear infinite; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='12' x2='12' y1='2' y2='6'/%3e%3cline x1='12' x2='12' y1='18' y2='22'/%3e%3cline x1='4.93' x2='7.76' y1='4.93' y2='7.76'/%3e%3cline x1='16.24' x2='19.07' y1='16.24' y2='19.07'/%3e%3cline x1='2' x2='6' y1='12' y2='12'/%3e%3cline x1='18' x2='22' y1='12' y2='12'/%3e%3cline x1='4.93' x2='7.76' y1='19.07' y2='16.24'/%3e%3cline x1='16.24' x2='19.07' y1='7.76' y2='4.93'/%3e%3c/svg%3e"); - background-size: cover; - block-size: var(--size-5); - content: ""; - filter: var(--btn-icon-color, var(--color-filter-text)); - inline-size: var(--size-5); - position: absolute; - } -} - - -/* app/assets/stylesheets/rails_pulse/components/card.css */ -.card { - background-color: var(--color-bg); - border-radius: var(--rounded-xl); - border-width: var(--border); - padding: var(--size-6); - box-shadow: var(--shadow-sm); -} - -.card-selectable { - background-color: var(--color-bg); - border-radius: var(--rounded-xl); - border-width: var(--border); - padding: var(--size-3); - - &:has(:checked) { - background-color: var(--color-secondary); - border-color: var(--color-primary); - } -} - - -/* app/assets/stylesheets/rails_pulse/components/chart.css */ -.chart-container { - width: 100%; - aspect-ratio: 4 / 2; -} - -.chart-container--slim { - aspect-ratio: 4 / 3; -} - -@media (min-width: 64rem) { - .chart-container { - aspect-ratio: 16 / 5; - } - - .chart-container--slim { - aspect-ratio: 16 / 5; - } -} - - -/* app/assets/stylesheets/rails_pulse/components/csp_safe_positioning.css */ -/* CSP-Safe Positioning Utilities for Rails Pulse */ -/* Supports dynamic positioning using CSS custom properties */ - -/* Rails Pulse CSS loaded indicator for CSP testing */ -:root { - --rails-pulse-loaded: true; -} - -/* Popover positioning using CSS custom properties */ -.positioned { - --popover-x: 0px; - --popover-y: 0px; - --context-menu-x: 0px; - --context-menu-y: 0px; -} - -/* Popover positioning (used by popover_controller.js) */ -[popover].positioned { - position: fixed; - inset-inline-start: var(--popover-x, 0px) !important; - inset-block-start: var(--popover-y, 0px) !important; -} - -/* Context menu positioning (used by context_menu_controller.js) */ -[popover].positioned { - inset-inline-start: var(--context-menu-x, var(--popover-x, 0px)) !important; - inset-block-start: var(--context-menu-y, var(--popover-y, 0px)) !important; -} - -/* Icon loading states for icon_controller.js */ -[data-controller*="rails-pulse--icon"] { - display: inline-block; - line-height: 0; -} - -[data-controller*="rails-pulse--icon"].loading { - opacity: 0.6; -} - -[data-controller*="rails-pulse--icon"].error { - opacity: 0.4; - filter: grayscale(1); -} - -[data-controller*="rails-pulse--icon"].loaded { - opacity: 1; -} - -/* CSP-safe icon rendering */ -[data-controller*="rails-pulse--icon"] svg { - display: block; - width: inherit; - height: inherit; -} - -/* Accessibility improvements */ -[data-controller*="rails-pulse--icon"][aria-label] { - position: relative; -} - -/* Focus indicators for interactive icons */ -[data-controller*="rails-pulse--icon"]:focus-visible { - outline: 2px solid currentColor; - outline-offset: 2px; - border-radius: 2px; -} - -/* CSP Test Page Utilities */ -.csp-test-grid-single { - --columns: 1; -} - -.csp-test-context-area { - padding: 2rem; - border: 2px dashed var(--color-border); - text-align: center; -} - -.csp-test-nav-gap { - --column-gap: 1rem; -} - -/* Sheet sizing for dialog */ -.csp-test-sheet { - --sheet-size: 288px; -} - -/* app/assets/stylesheets/rails_pulse/components/descriptive_list.css */ -.descriptive-list { - display: grid; - grid-template-columns: 200px 1fr; - gap: 0.5rem; -} - -.descriptive-list dt, .descriptive-list dd { - font-size: var(--text-sm); -} - - -/* app/assets/stylesheets/rails_pulse/components/dialog.css */ -.dialog { - background-color: var(--color-bg); - border-radius: var(--rounded-lg); - border-width: var(--border); - box-shadow: var(--shadow-lg); - color: var(--color-text); - inline-size: var(--size-full); - margin: auto; - max-inline-size: var(--dialog-size, var(--max-i-lg)); - - &::backdrop { - background-color: rgba(0, 0, 0, .8); - } - - /* Final state of exit animation and setup */ - opacity: 0; - transform: var(--scale-95); - transition-behavior: allow-discrete; - transition-duration: var(--time-200); - transition-property: display, overlay, opacity, transform; - - &::backdrop { - opacity: 0; - transition-behavior: allow-discrete; - transition-duration: var(--time-200); - transition-property: display, overlay, opacity; - } - - /* Final state of entry animation */ - &[open] { opacity: 1; transform: var(--scale-100); } - &[open]::backdrop { opacity: 1; } - - /* Initial state of entry animation */ - @starting-style { - &[open] { opacity: 0; transform: var(--scale-95); } - &[open]::backdrop { opacity: 0; } - } - - /* Drawer component on mobile */ - @media (width < 40rem) { - border-end-end-radius: 0; - border-end-start-radius: 0; - margin-block-end: 0; - max-inline-size: none; - } -} - -.dialog__content { - padding: var(--size-6); -} - -.dialog__close { - inset-block-start: var(--size-3); - inset-inline-end: var(--size-3); - position: absolute; -} - - -/* app/assets/stylesheets/rails_pulse/components/flash.css */ -.flash { - align-items: center; - animation: appear-then-fade 4s 300ms both; - backdrop-filter: var(--blur-sm) var(--contrast-75); - background-color: var(--flash-background, rgb(from var(--color-text) r g b / .65)); - border-radius: var(--rounded-full); - color: var(--flash-color, var(--color-text-reversed)); - -moz-column-gap: var(--size-2); - column-gap: var(--size-2); - display: flex; - font-size: var(--text-fluid-base); - justify-content: center; - line-height: var(--leading-none); - margin-block-start: var(--flash-position, var(--size-4)); - margin-inline: auto; - min-block-size: var(--size-11); - padding: var(--size-1) var(--size-4); - text-align: center; - - [data-turbo-preview] & { - display: none; - } -} - -.flash--positive { - --flash-background: var(--color-positive); - --flash-color: white; -} - -.flash--negative { - --flash-background: var(--color-negative); - --flash-color: white; -} - -.flash--extended { - animation-name: appear-then-fade-extended; - animation-duration: 12s; -} - -@keyframes appear-then-fade { - 0%, 100% { opacity: 0; } - 5%, 60% { opacity: 1; } -} - -@keyframes appear-then-fade-extended { - 0%, 100% { opacity: 0; } - 2%, 90% { opacity: 1; } -} - - -/* app/assets/stylesheets/rails_pulse/components/input.css */ -.input { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - background-color: var(--input-background, transparent); - block-size: var(--input-block-size, auto); - border: 1px solid var(--input-border-color, var(--color-border)); - border-radius: var(--input-radius, var(--rounded-md)); - box-shadow: var(--input-box-shadow, var(--shadow-xs)); - font-size: var(--input-font-size, var(--text-sm)); - inline-size: var(--input-inline-size, var(--size-full)); - padding: var(--input-padding, .375rem .75rem); - - &:is(textarea[rows=auto]) { - field-sizing: content; - max-block-size: calc(.875rem + var(--input-max-rows, 10lh)); - min-block-size: calc(.875rem + var(--input-rows, 2lh)); - } - - &:is(select):not([multiple], [size]) { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m6 9 6 6 6-6'/%3e%3c/svg%3e"); - background-position: center right var(--size-2); - background-repeat: no-repeat; - background-size: var(--size-4) auto; - } - - &::file-selector-button { - font-weight: var(--font-medium); - } - - &:user-invalid { - border-color: var(--color-negative); - } - - &:user-invalid ~ .invalid-feedback { - display: flex; - } - - &:disabled { - cursor: not-allowed; opacity: var(--opacity-50); - } -} - -.input--actor { - input { - border: 0; inline-size: 100%; outline: 0; - } - - img:not([class]) { - filter: var(--input-icon-color, var(--color-filter-text)); - } - - &:focus-within { - outline: var(--input-outline-size, 2px) solid var(--color-selected-dark); - } -} - -.invalid-feedback { - display: none; -} - -:is(.checkbox, .radio) { - transform: scale(1.2); -} - -:is(.checkbox, .radio, .range) { - accent-color: var(--color-primary); -} - -:is(.input, .checkbox, .radio, .range) { - &:focus-visible { - outline: var(--input-outline-size, 2px) solid var(--color-selected-dark); - } - - &:focus-visible:user-invalid { - outline: none; - } - - .field_with_errors & { - border-color: var(--color-negative); display: contents; - } -} - - -/* app/assets/stylesheets/rails_pulse/components/layouts.css */ -.sidebar-layout { - display: grid; - grid-template-areas: "header header" "sidebar main"; - grid-template-columns: var(--sidebar-width, 0) 1fr; - grid-template-rows: auto 1fr; - block-size: 100dvh; - - @media (width >= 48rem) { - --sidebar-border-width: var(--border); - --sidebar-padding: var(--size-2); - --sidebar-width: var(--max-i-3xs); - } -} - -.header-layout { - display: grid; - grid-template-areas: "header" "main"; - grid-template-rows: auto 1fr; - block-size: 100dvh; -} - -.centered-layout { - display: grid; - place-items: center; - block-size: 100dvh; -} - -.container { - inline-size: 100%; - margin-inline: auto; - max-inline-size: var(--container-width, 80rem); -} - -#header { - align-items: center; - background-color: rgb(from var(--color-border-light) r g b / .5); - border-block-end-width: var(--border); - block-size: var(--size-16); - -moz-column-gap: var(--size-4); - column-gap: var(--size-4); - display: flex; - grid-area: header; - padding-inline: var(--size-4); -} - -#sidebar { - background-color: rgb(from var(--color-border-light) r g b / .5); - border-inline-end-width: var(--sidebar-border-width, 0); - display: flex; - flex-direction: column; - grid-area: sidebar; - overflow-x: hidden; - padding: var(--sidebar-padding, 0); - row-gap: var(--size-2); -} - -#main { - display: flex; - flex-direction: column; - gap: var(--size-4); - grid-area: main; - overflow: auto; - padding: var(--size-4); -} - - -/* app/assets/stylesheets/rails_pulse/components/menu.css */ -.menu { - display: flex; - flex-direction: column; - padding: var(--size-1); - row-gap: var(--size-1); -} - -.menu__header { - font-size: var(--text-sm); - font-weight: var(--font-semibold); - padding: var(--size-1_5) var(--size-2); -} - -.menu__group { - display: flex; - flex-direction: column; - row-gap: 1px; -} - -.menu__separator { - margin-inline: -0.25rem; -} - -.menu__item { - --btn-border-color: transparent; - --btn-box-shadow: none; - --btn-font-weight: var(--font-normal); - --btn-hover-color: var(--color-secondary); - --btn-justify-content: start; - --btn-outline-size: 0; - --btn-padding: var(--size-1_5) var(--size-2); - --btn-text-align: start; - - &:focus-visible { - --btn-background: var(--color-secondary); - } -} - -.menu__item-key { - color: var(--color-text-subtle); - font-size: var(--text-xs); - margin-inline-start: auto; -} - - -/* app/assets/stylesheets/rails_pulse/components/popover.css */ -.popover { - background-color: var(--color-bg); - border-radius: var(--rounded-md); - border-width: var(--border); - box-shadow: var(--shadow-md); - color: var(--color-text); - inline-size: var(--popover-size, -moz-max-content); - inline-size: var(--popover-size, max-content); - - /* Final state of exit animation and setup */ - opacity: 0; - transform: var(--scale-95); - transition-behavior: allow-discrete; - transition-duration: var(--time-150); - transition-property: display, overlay, opacity, transform; - - /* Final state of entry animation */ - &:popover-open { - opacity: 1; transform: var(--scale-100); - } - - /* Initial state of entry animation */ - @starting-style { - &:popover-open { - opacity: 0; transform: var(--scale-95); - } - } - - /* Positioning rules for Floating UI */ - &.positioned { - position: fixed !important; - left: var(--popover-x, 0) !important; - top: var(--popover-y, 0) !important; - margin: 0 !important; - inset: unset !important; - } -} - - -/* app/assets/stylesheets/rails_pulse/components/prose.css */ -.prose { - font-size: var(--text-fluid-base); - max-inline-size: 65ch; - - /* Antialiased fonts */ - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - - :is(h1, h2, h3, h4, h5, h6) { - font-weight: var(--font-extrabold); - hyphens: auto; - letter-spacing: -0.02ch; - line-height: 1.1; - margin-block: 0.5em; - overflow-wrap: break-word; - text-wrap: balance; - } - - h1 { - font-size: 2.4em; - } - - h2 { - font-size: 1.8em; - } - - h3 { - font-size: 1.5em; - } - - h4 { - font-size: 1.2em; - } - - h5 { - font-size: 1em; - } - - h6 { - font-size: 0.8em; - } - - :is(ul, ol, menu) { - list-style: revert; - padding-inline-start: revert; - } - - :is(p, ul, ol, dl, blockquote, pre, figure, table, hr) { - margin-block: 0.65lh; - overflow-wrap: break-word; - text-wrap: pretty; - } - - hr { - border-color: var(--color-border-dark); - border-style: var(--border-style, solid) none none; - margin: 2lh auto; - } - - :is(b, strong) { - font-weight: var(--font-bold); - } - - :is(pre, code) { - background-color: var(--color-border-light); - border: 1px solid var(--color-border); - border-radius: var(--rounded-sm); - font-family: var(--font-monospace-code); - font-size: 0.85em; - } - - code { - padding: 0.1em 0.3em; - } - - pre { - border-radius: 0.5em; - overflow-x: auto; - padding: 0.5lh 2ch; - text-wrap: nowrap; - } - - pre code { - background-color: transparent; - border: 0; - font-size: 1em; - padding: 0; - } - - p { - hyphens: auto; - letter-spacing: -0.005ch; - } - - blockquote { - font-style: italic; - margin: 0 3ch; - } - - blockquote p { - hyphens: none; - } - - table { - border: 1px solid var(--color-border-dark); - border-collapse: collapse; - margin: 1lh 0; - } - - th { - font-weight: var(--font-bold); - } - - :is(th, td) { - border: 1px solid var(--color-border-dark); - padding: 0.2lh 1ch; - text-align: start; - } - - th { - border-block-end-width: 3px; - } - - del { - background-color: rgb(from var(--color-negative) r g b / .1); - color: var(--color-negative); - } - - ins { - background-color: rgb(from var(--color-positive) r g b / .1); - color: var(--color-positive); - } - - a { - color: var(--color-link); - text-decoration: underline; - -webkit-text-decoration-skip: ink; - text-decoration-skip-ink: auto; - } - - mark { - color: var(--color-text); - background-color: var(--color-highlight); - } -} - - -/* app/assets/stylesheets/rails_pulse/components/row.css */ -.row { - display: flex; - justify-content: space-between; - width: 100%; - gap: var(--column-gap, 0.5rem); -} - -.row > * { - flex: 1; - min-width: 0; -} - -/* Stack items on smaller screens */ -@media (max-width: 768px) { - .row { - flex-direction: column; - gap: 0.5rem; - } - - .row > * { - flex: none; - width: 100%; - } -} - - -/* app/assets/stylesheets/rails_pulse/components/sidebar_menu.css */ -.sidebar-menu { - display: flex; - flex-direction: column; - row-gap: var(--size-4); - block-size: var(--size-full); -} - -.sidebar-menu__button { - --btn-background: transparent; - --btn-border-color: transparent; - --btn-box-shadow: none; - --btn-font-weight: var(--font-normal); - --btn-hover-color: var(--color-secondary); - --btn-justify-content: start; - --btn-outline-size: 0; - --btn-inline-size: var(--size-full); - --btn-padding: var(--size-1) var(--size-2); - --btn-text-align: start; - - &:focus-visible { - --btn-background: var(--color-secondary); - } - - &:is(summary) { - &::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m9 18 6-6-6-6'/%3e%3c/svg%3e"); - background-size: cover; - block-size: var(--size-4); - content: ""; - filter: var(--color-filter-text); - inline-size: var(--size-4); - margin-inline-start: auto; - min-inline-size: var(--size-4); - transition: transform var(--time-200); - } - - details[open] > &::after { - transform: var(--rotate-90); - } - - &::-webkit-details-marker { - display: none; - } - } -} - -.sidebar-menu__content { - display: flex; - flex-direction: column; - row-gap: var(--size-4); - overflow-y: scroll; -} - -.sidebar-menu__group { - display: flex; - flex-direction: column; -} - -.sidebar-menu__group-label { - color: var(--color-text-subtle); - font-size: var(--text-xs); - font-weight: var(--font-medium); - padding: var(--size-1_5) var(--size-2); -} - -.sidebar-menu__items { - display: flex; - flex-direction: column; - row-gap: var(--size-1); -} - -.sidebar-menu__sub { - border-inline-start-width: var(--border); - display: flex; - flex-direction: column; - margin-inline-start: var(--size-4); - padding: var(--size-0_5) var(--size-2); - row-gap: var(--size-1); -} - - -/* app/assets/stylesheets/rails_pulse/components/skeleton.css */ -.skeleton { - animation: var(--animate-blink); - border-radius: var(--rounded-md); - background-color: var(--color-border-light); -} - - -/* app/assets/stylesheets/rails_pulse/components/table.css */ -:where(.table) { - caption-side: bottom; - font-size: var(--text-sm); - inline-size: var(--size-full); - - caption { - color: var(--color-text-subtle); - margin-block-start: var(--size-4); - } - - thead { - color: var(--color-text-subtle); - } - - tbody tr { - border-block-start-width: var(--border); - } - - tr:hover { - background-color: rgb(from var(--color-border-light) r g b / .5); - } - - th { - font-weight: var(--font-medium); - text-align: start; - } - - th, td { - padding: var(--size-2); - } - - tfoot { - background-color: rgb(from var(--color-border-light) r g b / .5); - border-block-start-width: var(--border); - font-weight: var(--font-medium); - } -} - - -/* app/assets/stylesheets/rails_pulse/components/utilities.css */ -/* Width utilities */ -.w-auto { width: auto; } -.w-4 { width: 1rem; } -.w-6 { width: 1.5rem; } -.w-8 { width: 2rem; } -.w-12 { width: 3rem; } -.w-16 { width: 4rem; } -.w-20 { width: 5rem; } -.w-24 { width: 6rem; } -.w-28 { width: 7rem; } -.w-32 { width: 8rem; } -.w-36 { width: 9rem; } -.w-40 { width: 10rem; } -.w-44 { width: 11rem; } -.w-48 { width: 12rem; } -.w-52 { width: 13rem; } -.w-56 { width: 14rem; } -.w-60 { width: 15rem; } -.w-64 { width: 16rem; } - -/* Min-width utilities */ -.min-w-0 { min-width: 0; } -.min-w-4 { min-width: 1rem; } -.min-w-8 { min-width: 2rem; } -.min-w-12 { min-width: 3rem; } -.min-w-16 { min-width: 4rem; } -.min-w-20 { min-width: 5rem; } -.min-w-24 { min-width: 6rem; } -.min-w-32 { min-width: 8rem; } - -/* Max-width utilities */ -.max-w-xs { max-width: 20rem; } -.max-w-sm { max-width: 24rem; } -.max-w-md { max-width: 28rem; } -.max-w-lg { max-width: 32rem; } -.max-w-xl { max-width: 36rem; } - - -/* app/assets/stylesheets/rails_pulse/application.css */ -* { - font-family: AvenirNextPro, sans-serif -} - -a { - text-decoration: underline; - color: #0048b5; -} - -#header { - background-color: #ffc91f; -} - -#header a { - color: black -} - -#header a:hover { - background-color: #ffe284; -} - -a:hover { - cursor: pointer; -} - -.hidden { - display: none; -} - -/* REQUEST OPERATIONS GRAPH */ -.operations-table { - width: 100%; -} - -.operations-table tr { - cursor: pointer; -} - -.operations-label-cell { - width: 380px; - max-width: 380px; - min-width: 120px; - padding-right: 10px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - vertical-align: middle; -} -.operations-label-cell span { - font-family: 'Times New Roman', Times, serif; -} - -.operations-duration-cell { - width: 60px; - max-width: 100px; -} - -.operations-event-cell { - position: relative; - background: none; - padding: 0; -} - -.operations-event { - box-sizing: border-box; - height: 16px; - padding: 2px; - position: absolute; - top: 11px; -} - -/* REQUEST OPERATIONS BAR */ -.bar-container { - height:10px; - position:relative -} -.bar { - background-color:#727579; - height:100%; - position:absolute; - top:0 -} -.bar.db { - background-color:#92c282 -} -.bar.app { - background-color:#00adc4 -} -.bar.gc { - background-color:#323333 -} -.bar.view { - background-color:#b48da3 -} -.bar:first-child { - border-bottom-left-radius:1px; - border-top-left-radius:1px -} -.bar:last-child { - border-bottom-right-radius:1px; - border-top-right-radius:1px -} - - -/* vendor/css-zero/utilities.css */ -/**************************************************************** -* Flex -*****************************************************************/ -.flex { display: flex; } -.flex-col { flex-direction: column; } -.flex-wrap { flex-wrap: wrap; } -.inline-flex { display: inline-flex; } - -.justify-start { justify-content: start; } -.justify-center { justify-content: center; } -.justify-end { justify-content: end; } -.justify-between { justify-content: space-between; } - -.items-start { align-items: start; } -.items-end { align-items: end; } -.items-center { align-items: center; } - -.grow { flex-grow: 1; } -.grow-0 { flex-grow: 0; } - -.shrink { flex-shrink: 1; } -.shrink-0 { flex-shrink: 0; } - -.self-start { align-self: start; } -.self-end { align-self: end; } -.self-center { align-self: center; } - -.gap { -moz-column-gap: var(--column-gap, 0.5rem); column-gap: var(--column-gap, 0.5rem); row-gap: var(--row-gap, 1rem); } -.gap-half { -moz-column-gap: 0.25rem; column-gap: 0.25rem; row-gap: 0.5rem; } - -/**************************************************************** -* Text -*****************************************************************/ -.font-normal { font-weight: var(--font-normal); } -.font-medium { font-weight: var(--font-medium); } -.font-semibold { font-weight: var(--font-semibold); } -.font-bold { font-weight: var(--font-bold); } - -.underline { text-decoration: underline; } -.no-underline { text-decoration: none; } - -.uppercase { text-transform: uppercase; } -.normal-case { text-transform: none; } - -.whitespace-nowrap { white-space: nowrap; } -.whitespace-normal { white-space: normal; } - -.break-words { overflow-wrap: break-word; } -.break-all { word-break: break-all; } - -.overflow-clip { text-overflow: clip; white-space: nowrap; overflow: hidden; } -.overflow-ellipsis { text-overflow: ellipsis; white-space: nowrap; overflow: hidden; } - -.opacity-75 { opacity: var(--opacity-75); } -.opacity-50 { opacity: var(--opacity-50); } - -.leading-none { line-height: var(--leading-none); } -.leading-tight { line-height: var(--leading-tight); } - -.text-start { text-align: start; } -.text-end { text-align: end; } -.text-center { text-align: center; } - -.text-primary { color: var(--color-text); } -.text-reversed { color: var(--color-text-reversed); } -.text-negative { color: var(--color-negative); } -.text-positive { color: var(--color-positive); } -.text-subtle { color: var(--color-text-subtle); } - -.text-xs { font-size: var(--text-xs); } -.text-sm { font-size: var(--text-sm); } -.text-base { font-size: var(--text-base); } -.text-lg { font-size: var(--text-lg); } -.text-xl { font-size: var(--text-xl); } -.text-2xl { font-size: var(--text-2xl); } -.text-3xl { font-size: var(--text-3xl); } -.text-4xl { font-size: var(--text-4xl); } -.text-5xl { font-size: var(--text-5xl); } - -.text-fluid-xs { font-size: var(--text-fluid-xs); } -.text-fluid-sm { font-size: var(--text-fluid-sm); } -.text-fluid-base { font-size: var(--text-fluid-base); } -.text-fluid-lg { font-size: var(--text-fluid-lg); } -.text-fluid-xl { font-size: var(--text-fluid-xl); } -.text-fluid-2xl { font-size: var(--text-fluid-2xl); } -.text-fluid-3xl { font-size: var(--text-fluid-3xl); } - -/**************************************************************** -* Background -*****************************************************************/ -.bg-main { background-color: var(--color-bg); } -.bg-black { background-color: var(--color-text); } -.bg-white { background-color: var(--color-text-reversed); } -.bg-shade { background-color: var(--color-border-light); } -.bg-transparent { background-color: transparent; } - -/**************************************************************** -* SVG colors -*****************************************************************/ -.colorize-black { filter: var(--color-filter-text); } -.colorize-white { filter: var(--color-filter-text-reversed); } -.colorize-negative { filter: var(--color-filter-negative); } -.colorize-positive { filter: var(--color-filter-positive); } - -/**************************************************************** -* Border -*****************************************************************/ -.border-0 { border-width: 0; } -.border { border-width: var(--border-size, 1px); } - -.border-b { border-block-width: var(--border-size, 1px); } -.border-bs { border-block-start-width: var(--border-size, 1px); } -.border-be { border-block-end-width: var(--border-size, 1px); } - -.border-i { border-inline-width: var(--border-size, 1px); } -.border-is { border-inline-start-width: var(--border-size, 1px); } -.border-ie { border-inline-end-width: var(--border-size, 1px); } - -.border-main { border-color: var(--color-border); } -.border-dark { border-color: var(--color-border-dark); } - -.rounded-none { border-radius: 0; } -.rounded-xs { border-radius: var(--rounded-xs); } -.rounded-sm { border-radius: var(--rounded-sm); } -.rounded-md { border-radius: var(--rounded-md); } -.rounded-lg { border-radius: var(--rounded-lg); } -.rounded-full { border-radius: var(--rounded-full); } - -/**************************************************************** -* Shadow -*****************************************************************/ -.shadow-none { box-shadow: none; } -.shadow-xs { box-shadow: var(--shadow-xs); } -.shadow-sm { box-shadow: var(--shadow-sm); } -.shadow-md { box-shadow: var(--shadow-md); } -.shadow-lg { box-shadow: var(--shadow-lg); } - -/**************************************************************** -* Layout -*****************************************************************/ -.block { display: block; } -.inline { display: inline; } -.inline-block { display: inline-block; } - -.relative { position: relative; } -.sticky { position: sticky; } - -.min-i-0 { min-inline-size: 0; } -.max-i-none { max-inline-size: none; } -.max-i-full { max-inline-size: 100%; } - -.b-full { block-size: 100%; } -.i-full { inline-size: 100%; } - -.i-min { inline-size: -moz-min-content; inline-size: min-content; } - -.overflow-x-auto { overflow-x: auto; scroll-snap-type: x mandatory; } -.overflow-y-auto { overflow-y: auto; scroll-snap-type: y mandatory; } -.overflow-hidden { overflow: hidden; } - -.object-contain { -o-object-fit: contain; object-fit: contain; } -.object-cover { -o-object-fit: cover; object-fit: cover; } - -.aspect-square { aspect-ratio: 1; } -.aspect-widescreen { aspect-ratio: 16 / 9; } - -/**************************************************************** -* Margin -*****************************************************************/ -.m-0 { margin: 0; } -.m-1 { margin: var(--size-1); } -.m-2 { margin: var(--size-2); } -.m-3 { margin: var(--size-3); } -.m-4 { margin: var(--size-4); } -.m-5 { margin: var(--size-5); } -.m-6 { margin: var(--size-6); } -.m-8 { margin: var(--size-8); } -.m-10 { margin: var(--size-10); } -.m-auto { margin: auto; } - -.mb-0 { margin-block: 0; } -.mb-1 { margin-block: var(--size-1); } -.mb-2 { margin-block: var(--size-2); } -.mb-3 { margin-block: var(--size-3); } -.mb-4 { margin-block: var(--size-4); } -.mb-5 { margin-block: var(--size-5); } -.mb-6 { margin-block: var(--size-6); } -.mb-8 { margin-block: var(--size-8); } -.mb-10 { margin-block: var(--size-10); } -.mb-auto { margin-block: auto; } - -.mbs-0 { margin-block-start: 0; } -.mbs-1 { margin-block-start: var(--size-1); } -.mbs-2 { margin-block-start: var(--size-2); } -.mbs-3 { margin-block-start: var(--size-3); } -.mbs-4 { margin-block-start: var(--size-4); } -.mbs-5 { margin-block-start: var(--size-5); } -.mbs-6 { margin-block-start: var(--size-6); } -.mbs-8 { margin-block-start: var(--size-8); } -.mbs-10 { margin-block-start: var(--size-10); } -.mbs-auto { margin-block-start: auto; } - -.mbe-0 { margin-block-end: 0; } -.mbe-1 { margin-block-end: var(--size-1); } -.mbe-2 { margin-block-end: var(--size-2); } -.mbe-3 { margin-block-end: var(--size-3); } -.mbe-4 { margin-block-end: var(--size-4); } -.mbe-5 { margin-block-end: var(--size-5); } -.mbe-6 { margin-block-end: var(--size-6); } -.mbe-8 { margin-block-end: var(--size-8); } -.mbe-10 { margin-block-end: var(--size-10); } -.mbe-auto { margin-block-end: auto; } - -.mi-0 { margin-inline: 0; } -.mi-1 { margin-inline: var(--size-1); } -.mi-2 { margin-inline: var(--size-2); } -.mi-3 { margin-inline: var(--size-3); } -.mi-4 { margin-inline: var(--size-4); } -.mi-5 { margin-inline: var(--size-5); } -.mi-6 { margin-inline: var(--size-6); } -.mi-8 { margin-inline: var(--size-8); } -.mi-10 { margin-inline: var(--size-10); } -.mi-auto { margin-inline: auto; } - -.mis-0 { margin-inline-start: 0; } -.mis-1 { margin-inline-start: var(--size-1); } -.mis-2 { margin-inline-start: var(--size-2); } -.mis-3 { margin-inline-start: var(--size-3); } -.mis-4 { margin-inline-start: var(--size-4); } -.mis-5 { margin-inline-start: var(--size-5); } -.mis-6 { margin-inline-start: var(--size-6); } -.mis-8 { margin-inline-start: var(--size-8); } -.mis-10 { margin-inline-start: var(--size-10); } -.mis-auto { margin-inline-start: auto; } - -.mie-0 { margin-inline-end: 0; } -.mie-1 { margin-inline-end: var(--size-1); } -.mie-2 { margin-inline-end: var(--size-2); } -.mie-3 { margin-inline-end: var(--size-3); } -.mie-4 { margin-inline-end: var(--size-4); } -.mie-5 { margin-inline-end: var(--size-5); } -.mie-6 { margin-inline-end: var(--size-6); } -.mie-8 { margin-inline-end: var(--size-8); } -.mie-10 { margin-inline-end: var(--size-10); } -.mie-auto { margin-inline-end: auto; } - -/**************************************************************** -* Padding -*****************************************************************/ -.p-0 { padding: 0; } -.p-1 { padding: var(--size-1); } -.p-2 { padding: var(--size-2); } -.p-3 { padding: var(--size-3); } -.p-4 { padding: var(--size-4); } -.p-5 { padding: var(--size-5); } -.p-6 { padding: var(--size-6); } -.p-8 { padding: var(--size-8); } -.p-10 { padding: var(--size-10); } - -.pb-0 { padding-block: 0; } -.pb-1 { padding-block: var(--size-1); } -.pb-2 { padding-block: var(--size-2); } -.pb-3 { padding-block: var(--size-3); } -.pb-4 { padding-block: var(--size-4); } -.pb-5 { padding-block: var(--size-5); } -.pb-6 { padding-block: var(--size-6); } -.pb-8 { padding-block: var(--size-8); } -.pb-10 { padding-block: var(--size-10); } - -.pbs-0 { padding-block-start: 0; } -.pbs-1 { padding-block-start: var(--size-1); } -.pbs-2 { padding-block-start: var(--size-2); } -.pbs-3 { padding-block-start: var(--size-3); } -.pbs-4 { padding-block-start: var(--size-4); } -.pbs-5 { padding-block-start: var(--size-5); } -.pbs-6 { padding-block-start: var(--size-6); } -.pbs-8 { padding-block-start: var(--size-8); } -.pbs-10 { padding-block-start: var(--size-10); } - -.pbe-0 { padding-block-end: 0; } -.pbe-1 { padding-block-end: var(--size-1); } -.pbe-2 { padding-block-end: var(--size-2); } -.pbe-3 { padding-block-end: var(--size-3); } -.pbe-4 { padding-block-end: var(--size-4); } -.pbe-5 { padding-block-end: var(--size-5); } -.pbe-6 { padding-block-end: var(--size-6); } -.pbe-8 { padding-block-end: var(--size-8); } -.pbe-10 { padding-block-end: var(--size-10); } - -.pi-0 { padding-inline: 0; } -.pi-1 { padding-inline: var(--size-1); } -.pi-2 { padding-inline: var(--size-2); } -.pi-3 { padding-inline: var(--size-3); } -.pi-4 { padding-inline: var(--size-4); } -.pi-5 { padding-inline: var(--size-5); } -.pi-6 { padding-inline: var(--size-6); } -.pi-8 { padding-inline: var(--size-8); } -.pi-10 { padding-inline: var(--size-10); } - -.pis-0 { padding-inline-start: 0; } -.pis-1 { padding-inline-start: var(--size-1); } -.pis-2 { padding-inline-start: var(--size-2); } -.pis-3 { padding-inline-start: var(--size-3); } -.pis-4 { padding-inline-start: var(--size-4); } -.pis-5 { padding-inline-start: var(--size-5); } -.pis-6 { padding-inline-start: var(--size-6); } -.pis-8 { padding-inline-start: var(--size-8); } -.pis-10 { padding-inline-start: var(--size-10); } - -.pie-0 { padding-inline-end: 0; } -.pie-1 { padding-inline-end: var(--size-1); } -.pie-2 { padding-inline-end: var(--size-2); } -.pie-3 { padding-inline-end: var(--size-3); } -.pie-4 { padding-inline-end: var(--size-4); } -.pie-5 { padding-inline-end: var(--size-5); } -.pie-6 { padding-inline-end: var(--size-6); } -.pie-8 { padding-inline-end: var(--size-8); } -.pie-10 { padding-inline-end: var(--size-10); } - -/**************************************************************** -* Hiding/Showing -*****************************************************************/ -.show\@sm, .show\@md, .show\@lg, .show\@xl { display: none; } - -.show\@sm { @media (width >= 40rem) { display: flex; } } -.show\@md { @media (width >= 48rem) { display: flex; } } -.show\@lg { @media (width >= 64rem) { display: flex; } } -.show\@xl { @media (width >= 80rem) { display: flex; } } - -.hide\@sm { @media (width >= 40rem) { display: none; } } -.hide\@md { @media (width >= 48rem) { display: none; } } -.hide\@lg { @media (width >= 64rem) { display: none; } } -.hide\@xl { @media (width >= 80rem) { display: none; } } - -.hide\@pwa { @media (display-mode: standalone) { display: none; } } -.hide\@browser { @media (display-mode: browser) { display: none; } } - -.hide\@print { @media print { display: none; } } - -/**************************************************************** -* Accessibility -*****************************************************************/ -.sr-only { block-size: 1px; clip-path: inset(50%); inline-size: 1px; overflow: hidden; position: absolute; white-space: nowrap; } - - -/*# sourceMappingURL=rails-pulse.css.map */ \ No newline at end of file +*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:var(--default-font-family,system-ui,sans-serif);font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{block-size:0;border-block-start-width:1px;color:inherit}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{inset-block-end:-.25em}sup{inset-block-start:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{block-size:auto;max-inline-size:100%}::file-selector-button,button,input,optgroup,select,textarea{background-color:transparent;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{color:color-mix(in oklab,currentColor 50%,transparent);opacity:1}::placeholder{color:color-mix(in oklab,currentColor 50%,transparent);opacity:1}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-block-size:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}::file-selector-button,button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{block-size:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}[contents]{display:contents!important}turbo-frame{display:contents}:root{interpolate-size:allow-keywords;color-scheme:light dark}::-webkit-calendar-picker-indicator{line-height:1em}option{padding:2px 4px}html:has(dialog:modal[open]){overflow:hidden}@media (prefers-reduced-motion:reduce){*,::backdrop,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}:root{--slate-50:oklch(0.984 0.003 247.858);--slate-100:oklch(0.968 0.007 247.896);--slate-200:oklch(0.929 0.013 255.508);--slate-300:oklch(0.869 0.022 252.894);--slate-400:oklch(0.704 0.04 256.788);--slate-500:oklch(0.554 0.046 257.417);--slate-600:oklch(0.446 0.043 257.281);--slate-700:oklch(0.372 0.044 257.287);--slate-800:oklch(0.279 0.041 260.031);--slate-900:oklch(0.208 0.042 265.755);--slate-950:oklch(0.129 0.042 264.695);--gray-50:oklch(0.985 0.002 247.839);--gray-100:oklch(0.967 0.003 264.542);--gray-200:oklch(0.928 0.006 264.531);--gray-300:oklch(0.872 0.01 258.338);--gray-400:oklch(0.707 0.022 261.325);--gray-500:oklch(0.551 0.027 264.364);--gray-600:oklch(0.446 0.03 256.802);--gray-700:oklch(0.373 0.034 259.733);--gray-800:oklch(0.278 0.033 256.848);--gray-900:oklch(0.21 0.034 264.665);--gray-950:oklch(0.13 0.028 261.692);--zinc-50:oklch(0.985 0 0);--zinc-100:oklch(0.967 0.001 286.375);--zinc-200:oklch(0.92 0.004 286.32);--zinc-300:oklch(0.871 0.006 286.286);--zinc-400:oklch(0.705 0.015 286.067);--zinc-500:oklch(0.552 0.016 285.938);--zinc-600:oklch(0.442 0.017 285.786);--zinc-700:oklch(0.37 0.013 285.805);--zinc-800:oklch(0.274 0.006 286.033);--zinc-900:oklch(0.21 0.006 285.885);--zinc-950:oklch(0.141 0.005 285.823);--neutral-50:oklch(0.985 0 0);--neutral-100:oklch(0.97 0 0);--neutral-200:oklch(0.922 0 0);--neutral-300:oklch(0.87 0 0);--neutral-400:oklch(0.708 0 0);--neutral-500:oklch(0.556 0 0);--neutral-600:oklch(0.439 0 0);--neutral-700:oklch(0.371 0 0);--neutral-800:oklch(0.269 0 0);--neutral-900:oklch(0.205 0 0);--neutral-950:oklch(0.145 0 0);--stone-50:oklch(0.985 0.001 106.423);--stone-100:oklch(0.97 0.001 106.424);--stone-200:oklch(0.923 0.003 48.717);--stone-300:oklch(0.869 0.005 56.366);--stone-400:oklch(0.709 0.01 56.259);--stone-500:oklch(0.553 0.013 58.071);--stone-600:oklch(0.444 0.011 73.639);--stone-700:oklch(0.374 0.01 67.558);--stone-800:oklch(0.268 0.007 34.298);--stone-900:oklch(0.216 0.006 56.043);--stone-950:oklch(0.147 0.004 49.25);--red-50:oklch(0.971 0.013 17.38);--red-100:oklch(0.936 0.032 17.717);--red-200:oklch(0.885 0.062 18.334);--red-300:oklch(0.808 0.114 19.571);--red-400:oklch(0.704 0.191 22.216);--red-500:oklch(0.637 0.237 25.331);--red-600:oklch(0.577 0.245 27.325);--red-700:oklch(0.505 0.213 27.518);--red-800:oklch(0.444 0.177 26.899);--red-900:oklch(0.396 0.141 25.723);--red-950:oklch(0.258 0.092 26.042);--orange-50:oklch(0.98 0.016 73.684);--orange-100:oklch(0.954 0.038 75.164);--orange-200:oklch(0.901 0.076 70.697);--orange-300:oklch(0.837 0.128 66.29);--orange-400:oklch(0.75 0.183 55.934);--orange-500:oklch(0.705 0.213 47.604);--orange-600:oklch(0.646 0.222 41.116);--orange-700:oklch(0.553 0.195 38.402);--orange-800:oklch(0.47 0.157 37.304);--orange-900:oklch(0.408 0.123 38.172);--orange-950:oklch(0.266 0.079 36.259);--amber-50:oklch(0.987 0.022 95.277);--amber-100:oklch(0.962 0.059 95.617);--amber-200:oklch(0.924 0.12 95.746);--amber-300:oklch(0.879 0.169 91.605);--amber-400:oklch(0.828 0.189 84.429);--amber-500:oklch(0.769 0.188 70.08);--amber-600:oklch(0.666 0.179 58.318);--amber-700:oklch(0.555 0.163 48.998);--amber-800:oklch(0.473 0.137 46.201);--amber-900:oklch(0.414 0.112 45.904);--amber-950:oklch(0.279 0.077 45.635);--yellow-50:oklch(0.987 0.026 102.212);--yellow-100:oklch(0.973 0.071 103.193);--yellow-200:oklch(0.945 0.129 101.54);--yellow-300:oklch(0.905 0.182 98.111);--yellow-400:oklch(0.852 0.199 91.936);--yellow-500:oklch(0.795 0.184 86.047);--yellow-600:oklch(0.681 0.162 75.834);--yellow-700:oklch(0.554 0.135 66.442);--yellow-800:oklch(0.476 0.114 61.907);--yellow-900:oklch(0.421 0.095 57.708);--yellow-950:oklch(0.286 0.066 53.813);--lime-50:oklch(0.986 0.031 120.757);--lime-100:oklch(0.967 0.067 122.328);--lime-200:oklch(0.938 0.127 124.321);--lime-300:oklch(0.897 0.196 126.665);--lime-400:oklch(0.841 0.238 128.85);--lime-500:oklch(0.768 0.233 130.85);--lime-600:oklch(0.648 0.2 131.684);--lime-700:oklch(0.532 0.157 131.589);--lime-800:oklch(0.453 0.124 130.933);--lime-900:oklch(0.405 0.101 131.063);--lime-950:oklch(0.274 0.072 132.109);--green-50:oklch(0.982 0.018 155.826);--green-100:oklch(0.962 0.044 156.743);--green-200:oklch(0.925 0.084 155.995);--green-300:oklch(0.871 0.15 154.449);--green-400:oklch(0.792 0.209 151.711);--green-500:oklch(0.723 0.219 149.579);--green-600:oklch(0.627 0.194 149.214);--green-700:oklch(0.527 0.154 150.069);--green-800:oklch(0.448 0.119 151.328);--green-900:oklch(0.393 0.095 152.535);--green-950:oklch(0.266 0.065 152.934);--emerald-50:oklch(0.979 0.021 166.113);--emerald-100:oklch(0.95 0.052 163.051);--emerald-200:oklch(0.905 0.093 164.15);--emerald-300:oklch(0.845 0.143 164.978);--emerald-400:oklch(0.765 0.177 163.223);--emerald-500:oklch(0.696 0.17 162.48);--emerald-600:oklch(0.596 0.145 163.225);--emerald-700:oklch(0.508 0.118 165.612);--emerald-800:oklch(0.432 0.095 166.913);--emerald-900:oklch(0.378 0.077 168.94);--emerald-950:oklch(0.262 0.051 172.552);--teal-50:oklch(0.984 0.014 180.72);--teal-100:oklch(0.953 0.051 180.801);--teal-200:oklch(0.91 0.096 180.426);--teal-300:oklch(0.855 0.138 181.071);--teal-400:oklch(0.777 0.152 181.912);--teal-500:oklch(0.704 0.14 182.503);--teal-600:oklch(0.6 0.118 184.704);--teal-700:oklch(0.511 0.096 186.391);--teal-800:oklch(0.437 0.078 188.216);--teal-900:oklch(0.386 0.063 188.416);--teal-950:oklch(0.277 0.046 192.524);--cyan-50:oklch(0.984 0.019 200.873);--cyan-100:oklch(0.956 0.045 203.388);--cyan-200:oklch(0.917 0.08 205.041);--cyan-300:oklch(0.865 0.127 207.078);--cyan-400:oklch(0.789 0.154 211.53);--cyan-500:oklch(0.715 0.143 215.221);--cyan-600:oklch(0.609 0.126 221.723);--cyan-700:oklch(0.52 0.105 223.128);--cyan-800:oklch(0.45 0.085 224.283);--cyan-900:oklch(0.398 0.07 227.392);--cyan-950:oklch(0.302 0.056 229.695);--sky-50:oklch(0.977 0.013 236.62);--sky-100:oklch(0.951 0.026 236.824);--sky-200:oklch(0.901 0.058 230.902);--sky-300:oklch(0.828 0.111 230.318);--sky-400:oklch(0.746 0.16 232.661);--sky-500:oklch(0.685 0.169 237.323);--sky-600:oklch(0.588 0.158 241.966);--sky-700:oklch(0.5 0.134 242.749);--sky-800:oklch(0.443 0.11 240.79);--sky-900:oklch(0.391 0.09 240.876);--sky-950:oklch(0.293 0.066 243.157);--blue-50:oklch(0.97 0.014 254.604);--blue-100:oklch(0.932 0.032 255.585);--blue-200:oklch(0.882 0.059 254.128);--blue-300:oklch(0.809 0.105 251.813);--blue-400:oklch(0.707 0.165 254.624);--blue-500:oklch(0.623 0.214 259.815);--blue-600:oklch(0.546 0.245 262.881);--blue-700:oklch(0.488 0.243 264.376);--blue-800:oklch(0.424 0.199 265.638);--blue-900:oklch(0.379 0.146 265.522);--blue-950:oklch(0.282 0.091 267.935);--indigo-50:oklch(0.962 0.018 272.314);--indigo-100:oklch(0.93 0.034 272.788);--indigo-200:oklch(0.87 0.065 274.039);--indigo-300:oklch(0.785 0.115 274.713);--indigo-400:oklch(0.673 0.182 276.935);--indigo-500:oklch(0.585 0.233 277.117);--indigo-600:oklch(0.511 0.262 276.966);--indigo-700:oklch(0.457 0.24 277.023);--indigo-800:oklch(0.398 0.195 277.366);--indigo-900:oklch(0.359 0.144 278.697);--indigo-950:oklch(0.257 0.09 281.288);--violet-50:oklch(0.969 0.016 293.756);--violet-100:oklch(0.943 0.029 294.588);--violet-200:oklch(0.894 0.057 293.283);--violet-300:oklch(0.811 0.111 293.571);--violet-400:oklch(0.702 0.183 293.541);--violet-500:oklch(0.606 0.25 292.717);--violet-600:oklch(0.541 0.281 293.009);--violet-700:oklch(0.491 0.27 292.581);--violet-800:oklch(0.432 0.232 292.759);--violet-900:oklch(0.38 0.189 293.745);--violet-950:oklch(0.283 0.141 291.089);--purple-50:oklch(0.977 0.014 308.299);--purple-100:oklch(0.946 0.033 307.174);--purple-200:oklch(0.902 0.063 306.703);--purple-300:oklch(0.827 0.119 306.383);--purple-400:oklch(0.714 0.203 305.504);--purple-500:oklch(0.627 0.265 303.9);--purple-600:oklch(0.558 0.288 302.321);--purple-700:oklch(0.496 0.265 301.924);--purple-800:oklch(0.438 0.218 303.724);--purple-900:oklch(0.381 0.176 304.987);--purple-950:oklch(0.291 0.149 302.717);--fuchsia-50:oklch(0.977 0.017 320.058);--fuchsia-100:oklch(0.952 0.037 318.852);--fuchsia-200:oklch(0.903 0.076 319.62);--fuchsia-300:oklch(0.833 0.145 321.434);--fuchsia-400:oklch(0.74 0.238 322.16);--fuchsia-500:oklch(0.667 0.295 322.15);--fuchsia-600:oklch(0.591 0.293 322.896);--fuchsia-700:oklch(0.518 0.253 323.949);--fuchsia-800:oklch(0.452 0.211 324.591);--fuchsia-900:oklch(0.401 0.17 325.612);--fuchsia-950:oklch(0.293 0.136 325.661);--pink-50:oklch(0.971 0.014 343.198);--pink-100:oklch(0.948 0.028 342.258);--pink-200:oklch(0.899 0.061 343.231);--pink-300:oklch(0.823 0.12 346.018);--pink-400:oklch(0.718 0.202 349.761);--pink-500:oklch(0.656 0.241 354.308);--pink-600:oklch(0.592 0.249 0.584);--pink-700:oklch(0.525 0.223 3.958);--pink-800:oklch(0.459 0.187 3.815);--pink-900:oklch(0.408 0.153 2.432);--pink-950:oklch(0.284 0.109 3.907);--rose-50:oklch(0.969 0.015 12.422);--rose-100:oklch(0.941 0.03 12.58);--rose-200:oklch(0.892 0.058 10.001);--rose-300:oklch(0.81 0.117 11.638);--rose-400:oklch(0.712 0.194 13.428);--rose-500:oklch(0.645 0.246 16.439);--rose-600:oklch(0.586 0.253 17.585);--rose-700:oklch(0.514 0.222 16.935);--rose-800:oklch(0.455 0.188 13.697);--rose-900:oklch(0.41 0.159 10.272);--rose-950:oklch(0.271 0.105 12.094);--size-0_5:0.125rem;--size-1:0.25rem;--size-1_5:0.375rem;--size-2:0.5rem;--size-2_5:0.625rem;--size-3:0.75rem;--size-3_5:0.875rem;--size-4:1rem;--size-5:1.25rem;--size-6:1.5rem;--size-7:1.75rem;--size-8:2rem;--size-9:2.25rem;--size-10:2.5rem;--size-11:2.75rem;--size-12:3rem;--size-14:3.5rem;--size-16:4rem;--size-20:5rem;--size-24:6rem;--size-28:7rem;--size-32:8rem;--size-36:9rem;--size-40:10rem;--size-44:11rem;--size-48:12rem;--size-52:13rem;--size-56:14rem;--size-60:15rem;--size-64:16rem;--size-72:18rem;--size-80:20rem;--size-96:24rem;--size-1-2:50%;--size-1-3:33.333333%;--size-2-3:66.666667%;--size-1-4:25%;--size-2-4:50%;--size-3-4:75%;--size-1-5:20%;--size-2-5:40%;--size-3-5:60%;--size-4-5:80%;--size-1-6:16.666667%;--size-2-6:33.333333%;--size-3-6:50%;--size-4-6:66.666667%;--size-5-6:83.333333%;--size-1-12:8.333333%;--size-2-12:16.666667%;--size-3-12:25%;--size-4-12:33.333333%;--size-5-12:41.666667%;--size-6-12:50%;--size-7-12:58.333333%;--size-8-12:66.666667%;--size-9-12:75%;--size-10-12:83.333333%;--size-11-12:91.666667%;--size-full:100%;--max-i-3xs:16rem;--max-i-2xs:18rem;--max-i-xs:20rem;--max-i-sm:24rem;--max-i-md:28rem;--max-i-lg:32rem;--max-i-xl:36rem;--max-i-2xl:42rem;--max-i-3xl:48rem;--max-i-4xl:56rem;--max-i-5xl:64rem;--max-i-6xl:72rem;--max-i-7xl:80rem;--aspect-square:1/1;--aspect-widescreen:16/9;--breakpoint-sm:40rem;--breakpoint-md:48rem;--breakpoint-lg:64rem;--breakpoint-xl:80rem;--border:1px;--border-2:2px;--border-4:4px;--border-8:8px;--rounded-xs:0.125rem;--rounded-sm:0.25rem;--rounded-md:0.375rem;--rounded-lg:0.5rem;--rounded-xl:0.75rem;--rounded-2xl:1rem;--rounded-3xl:1.5rem;--rounded-full:9999px;--shadow-xs:0 1px 2px 0 rgba(0,0,0,.05);--shadow-sm:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--shadow-xl:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--shadow-2xl:0 25px 50px -12px rgba(0,0,0,.25);--shadow-inner:inset 0 2px 4px 0 rgba(0,0,0,.05);--opacity-5:0.05;--opacity-10:0.1;--opacity-20:0.2;--opacity-25:0.25;--opacity-30:0.3;--opacity-40:0.4;--opacity-50:0.5;--opacity-60:0.6;--opacity-70:0.7;--opacity-75:0.75;--opacity-80:0.8;--opacity-90:0.9;--opacity-95:0.95;--opacity-100:1;--text-xs:0.75rem;--text-sm:0.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--text-5xl:3rem;--text-6xl:3.75rem;--text-7xl:4.5rem;--text-8xl:6rem;--text-9xl:8rem;--text-fluid-xs:clamp(0.75rem,0.64rem + 0.57vw,1rem);--text-fluid-sm:clamp(0.875rem,0.761rem + 0.568vw,1.125rem);--text-fluid-base:clamp(1rem,0.89rem + 0.57vw,1.25rem);--text-fluid-lg:clamp(1.125rem,0.955rem + 0.852vw,1.5rem);--text-fluid-xl:clamp(1.25rem,0.966rem + 1.42vw,1.875rem);--text-fluid-2xl:clamp(1.5rem,1.16rem + 1.7vw,2.25rem);--text-fluid-3xl:clamp(1.875rem,1.364rem + 2.557vw,3rem);--text-fluid-4xl:clamp(2.25rem,1.57rem + 3.41vw,3.75rem);--text-fluid-5xl:clamp(3rem,2.32rem + 3.41vw,4.5rem);--text-fluid-6xl:clamp(3.75rem,2.73rem + 5.11vw,6rem);--text-fluid-7xl:clamp(4.5rem,2.91rem + 7.95vw,8rem);--font-thin:100;--font-extralight:200;--font-light:300;--font-normal:400;--font-medium:500;--font-semibold:600;--font-bold:700;--font-extrabold:800;--font-black:900;--leading-none:1;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--leading-loose:2;--leading-3:.75rem;--leading-4:1rem;--leading-5:1.25rem;--leading-6:1.5rem;--leading-7:1.75rem;--leading-8:2rem;--leading-9:2.25rem;--leading-10:2.5rem;--font-system-ui:system-ui,sans-serif;--font-transitional:Charter,Bitstream Charter,Sitka Text,Cambria,serif;--font-old-style:Iowan Old Style,Palatino Linotype,URW Palladio L,P052,serif;--font-humanist:Seravek,Gill Sans Nova,Ubuntu,Calibri,DejaVu Sans,source-sans-pro,sans-serif;--font-geometric-humanist:Avenir,Montserrat,Corbel,URW Gothic,source-sans-pro,sans-serif;--font-classical-humanist:Optima,Candara,Noto Sans,source-sans-pro,sans-serif;--font-neo-grotesque:Inter,Roboto,Helvetica Neue,Arial Nova,Nimbus Sans,Arial,sans-serif;--font-monospace-slab-serif:Nimbus Mono PS,Courier New,monospace;--font-monospace-code:Dank Mono,Operator Mono,Inconsolata,Fira Mono,ui-monospace,SF Mono,Monaco,Droid Sans Mono,Source Code Pro,Cascadia Code,Menlo,Consolas,DejaVu Sans Mono,monospace;--font-industrial:Bahnschrift,DIN Alternate,Franklin Gothic Medium,Nimbus Sans Narrow,sans-serif-condensed,sans-serif;--font-rounded-sans:ui-rounded,Hiragino Maru Gothic ProN,Quicksand,Comfortaa,Manjari,Arial Rounded MT,Arial Rounded MT Bold,Calibri,source-sans-pro,sans-serif;--font-slab-serif:Rockwell,Rockwell Nova,Roboto Slab,DejaVu Serif,Sitka Small,serif;--font-antique:Superclarendon,Bookman Old Style,URW Bookman,URW Bookman L,Georgia Pro,Georgia,serif;--font-didone:Didot,Bodoni MT,Noto Serif Display,URW Palladio L,P052,Sylfaen,serif;--font-handwritten:Segoe Print,Bradley Hand,Chilanka,TSCu_Comic,casual,cursive;--tracking-tighter:-0.05em;--tracking-tight:-0.025em;--tracking-normal:0em;--tracking-wide:0.025em;--tracking-wider:0.05em;--tracking-widest:0.1em;--animate-fade-in:fade-in .5s cubic-bezier(.25,0,.3,1);--animate-fade-in-bloom:fade-in-bloom 2s cubic-bezier(.25,0,.3,1);--animate-fade-out:fade-out .5s cubic-bezier(.25,0,.3,1);--animate-fade-out-bloom:fade-out-bloom 2s cubic-bezier(.25,0,.3,1);--animate-scale-up:scale-up .5s cubic-bezier(.25,0,.3,1);--animate-scale-down:scale-down .5s cubic-bezier(.25,0,.3,1);--animate-slide-out-up:slide-out-up .5s cubic-bezier(.25,0,.3,1);--animate-slide-out-down:slide-out-down .5s cubic-bezier(.25,0,.3,1);--animate-slide-out-right:slide-out-right .5s cubic-bezier(.25,0,.3,1);--animate-slide-out-left:slide-out-left .5s cubic-bezier(.25,0,.3,1);--animate-slide-in-up:slide-in-up .5s cubic-bezier(.25,0,.3,1);--animate-slide-in-down:slide-in-down .5s cubic-bezier(.25,0,.3,1);--animate-slide-in-right:slide-in-right .5s cubic-bezier(.25,0,.3,1);--animate-slide-in-left:slide-in-left .5s cubic-bezier(.25,0,.3,1);--animate-shake-x:shake-x .75s cubic-bezier(0,0,0,1);--animate-shake-y:shake-y .75s cubic-bezier(0,0,0,1);--animate-shake-z:shake-z 1s cubic-bezier(0,0,0,1);--animate-spin:spin 2s linear infinite;--animate-ping:ping 5s cubic-bezier(0,0,.3,1) infinite;--animate-blink:blink 1s cubic-bezier(0,0,.3,1) infinite;--animate-float:float 3s cubic-bezier(0,0,0,1) infinite;--animate-bounce:bounce 2s cubic-bezier(.5,-.3,.1,1.5) infinite;--animate-pulse:pulse 2s cubic-bezier(0,0,.3,1) infinite}@keyframes fade-in{to{opacity:1}}@keyframes fade-in-bloom{0%{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(2) blur(10px);opacity:1}to{filter:brightness(1) blur(0);opacity:1}}@keyframes fade-out{to{opacity:0}}@keyframes fade-out-bloom{to{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(2) blur(10px);opacity:1}0%{filter:brightness(1) blur(0);opacity:1}}@keyframes scale-up{to{transform:scale(1.25)}}@keyframes scale-down{to{transform:scale(.75)}}@keyframes slide-out-up{to{transform:translateY(-100%)}}@keyframes slide-out-down{to{transform:translateY(100%)}}@keyframes slide-out-right{to{transform:translateX(100%)}}@keyframes slide-out-left{to{transform:translateX(-100%)}}@keyframes slide-in-up{0%{transform:translateY(100%)}}@keyframes slide-in-down{0%{transform:translateY(-100%)}}@keyframes slide-in-right{0%{transform:translateX(-100%)}}@keyframes slide-in-left{0%{transform:translateX(100%)}}@keyframes shake-x{0%,to{transform:translateX(0)}20%{transform:translateX(-5%)}40%{transform:translateX(5%)}60%{transform:translateX(-5%)}80%{transform:translateX(5%)}}@keyframes shake-y{0%,to{transform:translateY(0)}20%{transform:translateY(-5%)}40%{transform:translateY(5%)}60%{transform:translateY(-5%)}80%{transform:translateY(5%)}}@keyframes shake-z{0%,to{transform:rotate(0deg)}20%{transform:rotate(-2deg)}40%{transform:rotate(2deg)}60%{transform:rotate(-2deg)}80%{transform:rotate(2deg)}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes ping{90%,to{opacity:0;transform:scale(2)}}@keyframes blink{0%,to{opacity:1}50%{opacity:.5}}@keyframes float{50%{transform:translateY(-25%)}}@keyframes bounce{25%{transform:translateY(-20%)}40%{transform:translateY(-3%)}0%,60%,to{transform:translateY(0)}}@keyframes pulse{50%{transform:scale(.9)}}@media (prefers-color-scheme:dark){@keyframes fade-in-bloom{0%{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(.5) blur(10px);opacity:1}to{filter:brightness(1) blur(0);opacity:1}}}@media (prefers-color-scheme:dark){@keyframes fade-out-bloom{to{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(.5) blur(10px);opacity:1}0%{filter:brightness(1) blur(0);opacity:1}}}:root{--scale-50:scale(0.50);--scale-75:scale(0.75);--scale-90:scale(0.90);--scale-95:scale(0.95);--scale-100:scale(1);--scale-105:scale(1.05);--scale-110:scale(1.10);--scale-125:scale(1.25);--scale-150:scale(1.50);--rotate-0:rotate(0deg);--rotate-1:rotate(1deg);--rotate-2:rotate(2deg);--rotate-3:rotate(3deg);--rotate-6:rotate(6deg);--rotate-12:rotate(12deg);--rotate-45:rotate(45deg);--rotate-90:rotate(90deg);--rotate-180:rotate(180deg);--skew-x-0:skewX(0deg);--skew-y-0:skewY(0deg);--skew-x-1:skewX(1deg);--skew-y-1:skewY(1deg);--skew-x-2:skewX(2deg);--skew-y-2:skewY(2deg);--skew-x-3:skewX(3deg);--skew-y-3:skewY(3deg);--skew-x-6:skewX(6deg);--skew-y-6:skewY(6deg);--skew-x-12:skewX(12deg);--skew-y-12:skewY(12deg);--transition:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter;--transition-colors:color,background-color,border-color,text-decoration-color,fill,stroke;--transition-transform:transform,translate,scale,rotate;--time-75:75ms;--time-100:100ms;--time-150:150ms;--time-200:200ms;--time-300:300ms;--time-500:500ms;--time-700:700ms;--time-1000:1000ms;--blur-none:blur(0);--blur-xs:blur(4px);--blur-sm:blur(8px);--blur-md:blur(12px);--blur-lg:blur(16px);--blur-xl:blur(24px);--blur-2xl:blur(40px);--blur-3xl:blur(64px);--brightness-0:brightness(0);--brightness-50:brightness(0.5);--brightness-75:brightness(0.75);--brightness-90:brightness(0.9);--brightness-95:brightness(0.95);--brightness-100:brightness(1);--brightness-105:brightness(1.05);--brightness-110:brightness(1.1);--brightness-125:brightness(1.25);--brightness-150:brightness(1.5);--brightness-200:brightness(2);--contrast-0:contrast(0);--contrast-50:contrast(0.5);--contrast-75:contrast(0.75);--contrast-100:contrast(1);--contrast-125:contrast(1.25);--contrast-150:contrast(1.5);--contrast-200:contrast(2);--drop-shadow-none:drop-shadow(0 0 #0000);--drop-shadow-sm:drop-shadow(0 1px 1px rgba(0,0,0,.05));--drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06));--drop-shadow-md:drop-shadow(0 4px 3px rgba(0,0,0,.07)) drop-shadow(0 2px 2px rgba(0,0,0,.06));--drop-shadow-lg:drop-shadow(0 10px 8px rgba(0,0,0,.04)) drop-shadow(0 4px 3px rgba(0,0,0,.1));--drop-shadow-xl:drop-shadow(0 20px 13px rgba(0,0,0,.03)) drop-shadow(0 8px 5px rgba(0,0,0,.08));--drop-shadow-2xl:drop-shadow(0 25px 25px rgba(0,0,0,.15));--grayscale-0:grayscale(0);--grayscale:grayscale(100%);--hue-rotate-0:hue-rotate(0deg);--hue-rotate-15:hue-rotate(15deg);--hue-rotate-30:hue-rotate(30deg);--hue-rotate-60:hue-rotate(60deg);--hue-rotate-90:hue-rotate(90deg);--hue-rotate-180:hue-rotate(180deg);--invert-0:invert(0);--invert:invert(100%);--saturate-0:saturate(0);--saturate-50:saturate(0.5);--saturate-100:saturate(1);--saturate-150:saturate(1.5);--saturate-200:saturate(2);--sepia-0:sepia(0);--sepia:sepia(100%);--alpha-0:opacity(0);--alpha-5:opacity(0.05);--alpha-10:opacity(0.1);--alpha-15:opacity(0.15);--alpha-20:opacity(0.2);--alpha-25:opacity(0.25);--alpha-30:opacity(0.3);--alpha-35:opacity(0.35);--alpha-40:opacity(0.4);--alpha-45:opacity(0.45);--alpha-50:opacity(0.5);--alpha-55:opacity(0.55);--alpha-60:opacity(0.6);--alpha-65:opacity(0.65);--alpha-70:opacity(0.7);--alpha-75:opacity(0.75);--alpha-80:opacity(0.8);--alpha-85:opacity(0.85);--alpha-90:opacity(0.9);--alpha-95:opacity(0.95);--alpha-100:opacity(1)}.alert{border:1px solid var(--alert-border-color,var(--color-border));border-radius:var(--rounded-lg);color:var(--alert-color,var(--color-text));font-size:var(--text-sm);inline-size:var(--size-full);padding:var(--size-4);img{filter:var(--alert-icon-color,var(--color-filter-text))}}.alert--positive{--alert-border-color:var(--color-positive);--alert-color:var(--color-positive);--alert-icon-color:var(--color-filter-positive)}.alert--negative{--alert-border-color:var(--color-negative);--alert-color:var(--color-negative);--alert-icon-color:var(--color-filter-negative)}.badge{background-color:var(--badge-background,var(--color-bg));border:1px solid var(--badge-border-color,var(--color-border));border-radius:var(--rounded-md);box-shadow:var(--badge-box-shadow,none);color:var(--badge-color,var(--color-text));display:inline-flex;font-size:var(--text-xs);font-weight:var(--font-semibold);line-height:var(--leading-4);padding:var(--size-0_5) var(--size-2_5)}.badge--primary{--badge-background:var(--color-primary);--badge-border-color:transparent;--badge-box-shadow:var(--shadow-sm);--badge-color:var(--color-text-reversed)}.badge--secondary{--badge-background:var(--color-secondary);--badge-border-color:transparent;--badge-box-shadow:none;--badge-color:var(--color-text)}.badge--positive{--badge-background:var(--color-positive);--badge-border-color:transparent;--badge-box-shadow:var(--shadow-sm);--badge-color:#fff}.badge--negative{--badge-background:var(--color-negative);--badge-border-color:transparent;--badge-box-shadow:var(--shadow-sm);--badge-color:#fff}.badge--positive-inverse,.badge--primary-inverse{--badge-background:var(--color-bg);--badge-border-color:transparent;--badge-color:var(--color-positive)}.badge--negative-inverse{--badge-background:var(--color-bg);--badge-border-color:transparent;--badge-color:var(--color-negative)}:root{--color-bg:#fff;--color-text:#000;--color-text-reversed:#fff;--color-text-subtle:var(--zinc-500);--color-link:var(--blue-700);--color-border-light:var(--zinc-100);--color-border:var(--zinc-200);--color-border-dark:var(--zinc-400);--color-selected:var(--blue-100);--color-selected-dark:var(--blue-300);--color-highlight:var(--yellow-200);--color-primary:var(--zinc-900);--color-secondary:var(--zinc-100);--color-negative:var(--red-600);--color-positive:var(--green-600);--color-filter-text:invert(0);--color-filter-text-reversed:invert(1);--color-filter-negative:invert(22%) sepia(85%) saturate(1790%) hue-rotate(339deg) brightness(105%) contrast(108%);--color-filter-positive:invert(44%) sepia(89%) saturate(409%) hue-rotate(89deg) brightness(94%) contrast(97%)}html[data-color-scheme=dark]{--color-bg:var(--zinc-800);--color-text:#fff;--color-text-reversed:#000;--color-text-subtle:var(--zinc-400);--color-link:var(--blue-400);--color-border-light:var(--zinc-900);--color-border:var(--zinc-800);--color-border-dark:var(--zinc-600);--color-selected:var(--blue-950);--color-selected-dark:var(--blue-800);--color-highlight:var(--yellow-900);--color-primary:var(--zinc-50);--color-secondary:var(--zinc-800);--color-negative:var(--red-900);--color-positive:var(--green-900);--color-filter-text:invert(1);--color-filter-text-reversed:invert(0);--color-filter-negative:invert(15%) sepia(65%) saturate(2067%) hue-rotate(339deg) brightness(102%) contrast(97%);--color-filter-positive:invert(23%) sepia(62%) saturate(554%) hue-rotate(91deg) brightness(93%) contrast(91%)}*{border-color:var(--color-border);scrollbar-color:#c1c1c1 transparent;scrollbar-width:thin}html{scroll-behavior:smooth}body{background-color:var(--color-bg);color:var(--color-text);font-synthesis-weight:none;overscroll-behavior:none;text-rendering:optimizeLegibility}.turbo-progress-bar{background-color:#4a8136}::-moz-selection{background-color:var(--color-selected)}::selection{background-color:var(--color-selected)}.breadcrumb{align-items:center;color:var(--color-text-subtle);-moz-column-gap:var(--size-1);column-gap:var(--size-1);display:flex;flex-wrap:wrap;font-size:var(--text-sm);overflow-wrap:break-word;a{padding-block-end:2px}img.breadcrumb-separator{filter:var(--color-filter-text);opacity:.5}a:hover{color:var(--color-text)}span[aria-current=page]{color:var(--color-text);font-weight:500}@media (width >= 40rem){-moz-column-gap:var(--size-2);column-gap:var(--size-2)}}.btn{--btn-background:var(--color-bg);--hover-color:oklch(from var(--btn-background) calc(l * .95) c h);align-items:center;background-color:var(--btn-background);block-size:var(--btn-block-size,auto);border:1px solid var(--btn-border-color,var(--color-border));border-radius:var(--btn-radius,var(--rounded-md));box-shadow:var(--btn-box-shadow,var(--shadow-xs));color:var(--btn-color,var(--color-text));-moz-column-gap:var(--size-2);column-gap:var(--size-2);cursor:default;display:inline-flex;font-size:var(--btn-font-size,var(--text-sm));font-weight:var(--btn-font-weight,var(--font-medium));inline-size:var(--btn-inline-size,auto);justify-content:var(--btn-justify-content,center);padding:var(--btn-padding,.375rem 1rem);position:relative;text-align:var(--btn-text-align,center);white-space:nowrap;img:not([class]){filter:var(--btn-icon-color,var(--color-filter-text))}&:hover{background-color:var(--btn-hover-color,var(--hover-color))}&:focus-visible{outline:var(--btn-outline-size,2px) solid var(--color-selected-dark)}&:is(:disabled,[aria-disabled]){opacity:var(--opacity-50);pointer-events:none}}.btn--primary{--btn-background:var(--color-primary);--btn-border-color:transparent;--btn-color:var(--color-text-reversed);--btn-icon-color:var(--color-filter-text-reversed)}.btn--secondary{--btn-background:var(--color-secondary);--btn-border-color:transparent}.btn--borderless{--btn-border-color:transparent;--btn-box-shadow:none}.btn--positive{--btn-background:var(--color-positive);--btn-border-color:transparent;--btn-color:#fff;--btn-icon-color:invert(1)}.btn--negative{--btn-background:var(--color-negative);--btn-border-color:transparent;--btn-color:#fff;--btn-icon-color:invert(1)}.btn--plain{--btn-background:transparent;--btn-border-color:transparent;--btn-hover-color:transparent;--btn-padding:0;--btn-box-shadow:none}.btn--icon{--btn-padding:var(--size-2)}[aria-busy] .btn--loading:disabled{>*{visibility:hidden}&:after{animation:spin 1s linear infinite;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83'/%3E%3C/svg%3E");background-size:cover;block-size:var(--size-5);content:"";filter:var(--btn-icon-color,var(--color-filter-text));inline-size:var(--size-5);position:absolute}}.card{background-color:var(--color-bg);border-radius:var(--rounded-xl);border-width:var(--border);box-shadow:var(--shadow-sm);padding:var(--size-6)}.card-selectable{background-color:var(--color-bg);border-radius:var(--rounded-xl);border-width:var(--border);padding:var(--size-3);&:has(:checked){background-color:var(--color-secondary);border-color:var(--color-primary)}}.chart-container{aspect-ratio:4/2;width:100%}.chart-container--slim{aspect-ratio:4/3}@media (min-width:64rem){.chart-container,.chart-container--slim{aspect-ratio:16/5}}:root{--rails-pulse-loaded:true}.positioned{--popover-x:0px;--popover-y:0px;--context-menu-x:0px;--context-menu-y:0px}[popover].positioned{inset-block-start:var(--popover-y,0)!important;inset-block-start:var(--context-menu-y,var(--popover-y,0))!important;inset-inline-start:var(--popover-x,0)!important;inset-inline-start:var(--context-menu-x,var(--popover-x,0))!important;position:fixed}[data-controller*=rails-pulse--icon]{display:inline-block;line-height:0}[data-controller*=rails-pulse--icon].loading{opacity:.6}[data-controller*=rails-pulse--icon].error{filter:grayscale(1);opacity:.4}[data-controller*=rails-pulse--icon].loaded{opacity:1}[data-controller*=rails-pulse--icon] svg{display:block;height:inherit;width:inherit}[data-controller*=rails-pulse--icon][aria-label]{position:relative}[data-controller*=rails-pulse--icon]:focus-visible{border-radius:2px;outline:2px solid currentColor;outline-offset:2px}.csp-test-grid-single{--columns:1}.csp-test-context-area{border:2px dashed var(--color-border);padding:2rem;text-align:center}.csp-test-nav-gap{--column-gap:1rem}.csp-test-sheet{--sheet-size:288px}.descriptive-list{display:grid;gap:.5rem;grid-template-columns:200px 1fr}.descriptive-list dd,.descriptive-list dt{font-size:var(--text-sm)}.dialog{background-color:var(--color-bg);border-radius:var(--rounded-lg);border-width:var(--border);box-shadow:var(--shadow-lg);color:var(--color-text);inline-size:var(--size-full);margin:auto;max-inline-size:var(--dialog-size,var(--max-i-lg));opacity:0;transform:var(--scale-95);transition-behavior:allow-discrete;transition-duration:var(--time-200);transition-property:display,overlay,opacity,transform;&::backdrop{background-color:rgba(0,0,0,.8)}&::backdrop{opacity:0;transition-behavior:allow-discrete;transition-duration:var(--time-200);transition-property:display,overlay,opacity}&[open]{opacity:1;transform:var(--scale-100)}&[open]::backdrop{opacity:1}@starting-style{&[open]{opacity:0;transform:var(--scale-95)}&[open]::backdrop{opacity:0}}@media (width < 40rem){border-end-end-radius:0;border-end-start-radius:0;margin-block-end:0;max-inline-size:none}}.dialog__content{padding:var(--size-6)}.dialog__close{inset-block-start:var(--size-3);inset-inline-end:var(--size-3);position:absolute}.flash{align-items:center;animation:appear-then-fade 4s .3s both;backdrop-filter:var(--blur-sm) var(--contrast-75);background-color:var(--flash-background,rgb(from var(--color-text) r g b/.65));border-radius:var(--rounded-full);color:var(--flash-color,var(--color-text-reversed));-moz-column-gap:var(--size-2);column-gap:var(--size-2);display:flex;font-size:var(--text-fluid-base);justify-content:center;line-height:var(--leading-none);margin-block-start:var(--flash-position,var(--size-4));margin-inline:auto;min-block-size:var(--size-11);padding:var(--size-1) var(--size-4);text-align:center;[data-turbo-preview] &{display:none}}.flash--positive{--flash-background:var(--color-positive);--flash-color:#fff}.flash--negative{--flash-background:var(--color-negative);--flash-color:#fff}.flash--extended{animation-duration:12s;animation-name:appear-then-fade-extended}@keyframes appear-then-fade{0%,to{opacity:0}5%,60%{opacity:1}}@keyframes appear-then-fade-extended{0%,to{opacity:0}2%,90%{opacity:1}}.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--input-background,transparent);block-size:var(--input-block-size,auto);border:1px solid var(--input-border-color,var(--color-border));border-radius:var(--input-radius,var(--rounded-md));box-shadow:var(--input-box-shadow,var(--shadow-xs));font-size:var(--input-font-size,var(--text-sm));inline-size:var(--input-inline-size,var(--size-full));padding:var(--input-padding,.375rem .75rem);&:is(textarea[rows=auto]){field-sizing:content;max-block-size:calc(.875rem + var(--input-max-rows, 10lh));min-block-size:calc(.875rem + var(--input-rows, 2lh))}&:is(select):not([multiple],[size]){background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:center right var(--size-2);background-repeat:no-repeat;background-size:var(--size-4) auto}&::file-selector-button{font-weight:var(--font-medium)}&:user-invalid{border-color:var(--color-negative)}&:user-invalid~.invalid-feedback{display:flex}&:disabled{cursor:not-allowed;opacity:var(--opacity-50)}}.input--actor{input{border:0;inline-size:100%;outline:0}img:not([class]){filter:var(--input-icon-color,var(--color-filter-text))}&:focus-within{outline:var(--input-outline-size,2px) solid var(--color-selected-dark)}}.invalid-feedback{display:none}:is(.checkbox,.radio){transform:scale(1.2)}:is(.checkbox,.radio,.range){accent-color:var(--color-primary)}:is(.input,.checkbox,.radio,.range){&:focus-visible{outline:var(--input-outline-size,2px) solid var(--color-selected-dark)}&:focus-visible:user-invalid{outline:none}.field_with_errors &{border-color:var(--color-negative);display:contents}}.sidebar-layout{block-size:100dvh;display:grid;grid-template-areas:"header header" "sidebar main";grid-template-columns:var(--sidebar-width,0) 1fr;grid-template-rows:auto 1fr;@media (width >= 48rem){--sidebar-border-width:var(--border);--sidebar-padding:var(--size-2);--sidebar-width:var(--max-i-3xs)}}.header-layout{block-size:100dvh;display:grid;grid-template-areas:"header" "main";grid-template-rows:auto 1fr}.centered-layout{block-size:100dvh;display:grid;place-items:center}.container{inline-size:100%;margin-inline:auto;max-inline-size:var(--container-width,80rem)}#header{align-items:center;block-size:var(--size-16);border-block-end-width:var(--border);-moz-column-gap:var(--size-4);column-gap:var(--size-4);grid-area:header;padding-inline:var(--size-4)}#header,#sidebar{background-color:rgb(from var(--color-border-light) r g b/.5);display:flex}#sidebar{border-inline-end-width:var(--sidebar-border-width,0);flex-direction:column;grid-area:sidebar;overflow-x:hidden;padding:var(--sidebar-padding,0);row-gap:var(--size-2)}#main{gap:var(--size-4);grid-area:main;overflow:auto;padding:var(--size-4)}#main,.menu{display:flex;flex-direction:column}.menu{padding:var(--size-1);row-gap:var(--size-1)}.menu__header{font-size:var(--text-sm);font-weight:var(--font-semibold);padding:var(--size-1_5) var(--size-2)}.menu__group{display:flex;flex-direction:column;row-gap:1px}.menu__separator{margin-inline:-.25rem}.menu__item{--btn-border-color:transparent;--btn-box-shadow:none;--btn-font-weight:var(--font-normal);--btn-hover-color:var(--color-secondary);--btn-justify-content:start;--btn-outline-size:0;--btn-padding:var(--size-1_5) var(--size-2);--btn-text-align:start;&:focus-visible{--btn-background:var(--color-secondary)}}.menu__item-key{color:var(--color-text-subtle);font-size:var(--text-xs);margin-inline-start:auto}.popover{background-color:var(--color-bg);border-radius:var(--rounded-md);border-width:var(--border);box-shadow:var(--shadow-md);color:var(--color-text);inline-size:var(--popover-size,-moz-max-content);inline-size:var(--popover-size,max-content);opacity:0;transform:var(--scale-95);transition-behavior:allow-discrete;transition-duration:var(--time-150);transition-property:display,overlay,opacity,transform;&:popover-open{opacity:1;transform:var(--scale-100)}@starting-style{&:popover-open{opacity:0;transform:var(--scale-95)}}&.positioned{left:var(--popover-x,0)!important;margin:0!important;position:fixed!important;top:var(--popover-y,0)!important;inset:unset!important}}.prose{font-size:var(--text-fluid-base);max-inline-size:65ch;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;:is(h1,h2,h3,h4,h5,h6){font-weight:var(--font-extrabold);hyphens:auto;letter-spacing:-.02ch;line-height:1.1;margin-block:.5em;overflow-wrap:break-word;text-wrap:balance}h1{font-size:2.4em}h2{font-size:1.8em}h3{font-size:1.5em}h4{font-size:1.2em}h5{font-size:1em}h6{font-size:.8em}:is(ul,ol,menu){list-style:revert;padding-inline-start:revert}:is(p,ul,ol,dl,blockquote,pre,figure,table,hr){margin-block:.65lh;overflow-wrap:break-word;text-wrap:pretty}hr{border-color:var(--color-border-dark);border-style:var(--border-style,solid) none none;margin:2lh auto}:is(b,strong){font-weight:var(--font-bold)}:is(pre,code){background-color:var(--color-border-light);border:1px solid var(--color-border);border-radius:var(--rounded-sm);font-family:var(--font-monospace-code);font-size:.85em}code{padding:.1em .3em}pre{border-radius:.5em;overflow-x:auto;padding:.5lh 2ch;text-wrap:nowrap}pre code{background-color:transparent;border:0;font-size:1em;padding:0}p{hyphens:auto;letter-spacing:-.005ch}blockquote{font-style:italic;margin:0 3ch}blockquote p{hyphens:none}table{border:1px solid var(--color-border-dark);border-collapse:collapse;margin:1lh 0}th{font-weight:var(--font-bold)}:is(th,td){border:1px solid var(--color-border-dark);padding:.2lh 1ch;text-align:start}th{border-block-end-width:3px}del{background-color:rgb(from var(--color-negative) r g b/.1);color:var(--color-negative)}ins{background-color:rgb(from var(--color-positive) r g b/.1);color:var(--color-positive)}a{color:var(--color-link);text-decoration:underline;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}mark{background-color:var(--color-highlight);color:var(--color-text)}}.row{display:flex;gap:var(--column-gap,.5rem);justify-content:space-between;width:100%}.row>*{flex:1;min-width:0}@media (max-width:768px){.row{flex-direction:column;gap:.5rem}.row>*{flex:none;width:100%}}.sidebar-menu{block-size:var(--size-full);display:flex;flex-direction:column;row-gap:var(--size-4)}.sidebar-menu__button{--btn-background:transparent;--btn-border-color:transparent;--btn-box-shadow:none;--btn-font-weight:var(--font-normal);--btn-hover-color:var(--color-secondary);--btn-justify-content:start;--btn-outline-size:0;--btn-inline-size:var(--size-full);--btn-padding:var(--size-1) var(--size-2);--btn-text-align:start;&:focus-visible{--btn-background:var(--color-secondary)}&:is(summary){&:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E");background-size:cover;block-size:var(--size-4);content:"";filter:var(--color-filter-text);inline-size:var(--size-4);margin-inline-start:auto;min-inline-size:var(--size-4);transition:transform var(--time-200)}details[open]>&:after{transform:var(--rotate-90)}&::-webkit-details-marker{display:none}}}.sidebar-menu__content{overflow-y:scroll;row-gap:var(--size-4)}.sidebar-menu__content,.sidebar-menu__group{display:flex;flex-direction:column}.sidebar-menu__group-label{color:var(--color-text-subtle);font-size:var(--text-xs);font-weight:var(--font-medium);padding:var(--size-1_5) var(--size-2)}.sidebar-menu__items,.sidebar-menu__sub{display:flex;flex-direction:column;row-gap:var(--size-1)}.sidebar-menu__sub{border-inline-start-width:var(--border);margin-inline-start:var(--size-4);padding:var(--size-0_5) var(--size-2)}.skeleton{animation:var(--animate-blink);background-color:var(--color-border-light);border-radius:var(--rounded-md)}:where(.table){caption-side:bottom;font-size:var(--text-sm);inline-size:var(--size-full);caption{margin-block-start:var(--size-4)}caption,thead{color:var(--color-text-subtle)}tbody tr{border-block-start-width:var(--border)}tr:hover{background-color:rgb(from var(--color-border-light) r g b/.5)}th{font-weight:var(--font-medium);text-align:start}td,th{padding:var(--size-2)}tfoot{background-color:rgb(from var(--color-border-light) r g b/.5);border-block-start-width:var(--border);font-weight:var(--font-medium)}}.w-auto{width:auto}.w-4{width:1rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-12{width:3rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-32{width:8rem}.w-36{width:9rem}.w-40{width:10rem}.w-44{width:11rem}.w-48{width:12rem}.w-52{width:13rem}.w-56{width:14rem}.w-60{width:15rem}.w-64{width:16rem}.min-w-0{min-width:0}.min-w-4{min-width:1rem}.min-w-8{min-width:2rem}.min-w-12{min-width:3rem}.min-w-16{min-width:4rem}.min-w-20{min-width:5rem}.min-w-24{min-width:6rem}.min-w-32{min-width:8rem}.max-w-xs{max-width:20rem}.max-w-sm{max-width:24rem}.max-w-md{max-width:28rem}.max-w-lg{max-width:32rem}.max-w-xl{max-width:36rem}*{font-family:AvenirNextPro,sans-serif}a{color:#0048b5;text-decoration:underline}#header{background-color:#ffc91f}#header a{color:#000}#header a:hover{background-color:#ffe284}a:hover{cursor:pointer}.hidden{display:none}.operations-table{width:100%}.operations-table tr{cursor:pointer}.operations-label-cell{max-width:380px;min-width:120px;overflow:hidden;padding-right:10px;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap;width:380px}.operations-label-cell span{font-family:Times New Roman,Times,serif}.operations-duration-cell{max-width:100px;width:60px}.operations-event-cell{background:none;padding:0;position:relative}.operations-event{box-sizing:border-box;height:16px;padding:2px;position:absolute;top:11px}.bar-container{height:10px;position:relative}.bar{background-color:#727579;height:100%;position:absolute;top:0}.bar.db{background-color:#92c282}.bar.app{background-color:#00adc4}.bar.gc{background-color:#323333}.bar.view{background-color:#b48da3}.bar:first-child{border-bottom-left-radius:1px;border-top-left-radius:1px}.bar:last-child{border-bottom-right-radius:1px;border-top-right-radius:1px}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.inline-flex{display:inline-flex}.justify-start{justify-content:start}.justify-center{justify-content:center}.justify-end{justify-content:end}.justify-between{justify-content:space-between}.items-start{align-items:start}.items-end{align-items:end}.items-center{align-items:center}.grow{flex-grow:1}.grow-0{flex-grow:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.self-start{align-self:start}.self-end{align-self:end}.self-center{align-self:center}.gap{-moz-column-gap:var(--column-gap,.5rem);column-gap:var(--column-gap,.5rem);row-gap:var(--row-gap,1rem)}.gap-half{-moz-column-gap:.25rem;column-gap:.25rem;row-gap:.5rem}.font-normal{font-weight:var(--font-normal)}.font-medium{font-weight:var(--font-medium)}.font-semibold{font-weight:var(--font-semibold)}.font-bold{font-weight:var(--font-bold)}.underline{text-decoration:underline}.no-underline{text-decoration:none}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.whitespace-nowrap{white-space:nowrap}.whitespace-normal{white-space:normal}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.overflow-clip{text-overflow:clip}.overflow-clip,.overflow-ellipsis{overflow:hidden;white-space:nowrap}.overflow-ellipsis{text-overflow:ellipsis}.opacity-75{opacity:var(--opacity-75)}.opacity-50{opacity:var(--opacity-50)}.leading-none{line-height:var(--leading-none)}.leading-tight{line-height:var(--leading-tight)}.text-start{text-align:start}.text-end{text-align:end}.text-center{text-align:center}.text-primary{color:var(--color-text)}.text-reversed{color:var(--color-text-reversed)}.text-negative{color:var(--color-negative)}.text-positive{color:var(--color-positive)}.text-subtle{color:var(--color-text-subtle)}.text-xs{font-size:var(--text-xs)}.text-sm{font-size:var(--text-sm)}.text-base{font-size:var(--text-base)}.text-lg{font-size:var(--text-lg)}.text-xl{font-size:var(--text-xl)}.text-2xl{font-size:var(--text-2xl)}.text-3xl{font-size:var(--text-3xl)}.text-4xl{font-size:var(--text-4xl)}.text-5xl{font-size:var(--text-5xl)}.text-fluid-xs{font-size:var(--text-fluid-xs)}.text-fluid-sm{font-size:var(--text-fluid-sm)}.text-fluid-base{font-size:var(--text-fluid-base)}.text-fluid-lg{font-size:var(--text-fluid-lg)}.text-fluid-xl{font-size:var(--text-fluid-xl)}.text-fluid-2xl{font-size:var(--text-fluid-2xl)}.text-fluid-3xl{font-size:var(--text-fluid-3xl)}.bg-main{background-color:var(--color-bg)}.bg-black{background-color:var(--color-text)}.bg-white{background-color:var(--color-text-reversed)}.bg-shade{background-color:var(--color-border-light)}.bg-transparent{background-color:transparent}.colorize-black{filter:var(--color-filter-text)}.colorize-white{filter:var(--color-filter-text-reversed)}.colorize-negative{filter:var(--color-filter-negative)}.colorize-positive{filter:var(--color-filter-positive)}.border-0{border-width:0}.border{border-width:var(--border-size,1px)}.border-b{border-block-width:var(--border-size,1px)}.border-bs{border-block-start-width:var(--border-size,1px)}.border-be{border-block-end-width:var(--border-size,1px)}.border-i{border-inline-width:var(--border-size,1px)}.border-is{border-inline-start-width:var(--border-size,1px)}.border-ie{border-inline-end-width:var(--border-size,1px)}.border-main{border-color:var(--color-border)}.border-dark{border-color:var(--color-border-dark)}.rounded-none{border-radius:0}.rounded-xs{border-radius:var(--rounded-xs)}.rounded-sm{border-radius:var(--rounded-sm)}.rounded-md{border-radius:var(--rounded-md)}.rounded-lg{border-radius:var(--rounded-lg)}.rounded-full{border-radius:var(--rounded-full)}.shadow-none{box-shadow:none}.shadow-xs{box-shadow:var(--shadow-xs)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.block{display:block}.inline{display:inline}.inline-block{display:inline-block}.relative{position:relative}.sticky{position:sticky}.min-i-0{min-inline-size:0}.max-i-none{max-inline-size:none}.max-i-full{max-inline-size:100%}.b-full{block-size:100%}.i-full{inline-size:100%}.i-min{inline-size:-moz-min-content;inline-size:min-content}.overflow-x-auto{overflow-x:auto;scroll-snap-type:x mandatory}.overflow-y-auto{overflow-y:auto;scroll-snap-type:y mandatory}.overflow-hidden{overflow:hidden}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.aspect-square{aspect-ratio:1}.aspect-widescreen{aspect-ratio:16/9}.m-0{margin:0}.m-1{margin:var(--size-1)}.m-2{margin:var(--size-2)}.m-3{margin:var(--size-3)}.m-4{margin:var(--size-4)}.m-5{margin:var(--size-5)}.m-6{margin:var(--size-6)}.m-8{margin:var(--size-8)}.m-10{margin:var(--size-10)}.m-auto{margin:auto}.mb-0{margin-block:0}.mb-1{margin-block:var(--size-1)}.mb-2{margin-block:var(--size-2)}.mb-3{margin-block:var(--size-3)}.mb-4{margin-block:var(--size-4)}.mb-5{margin-block:var(--size-5)}.mb-6{margin-block:var(--size-6)}.mb-8{margin-block:var(--size-8)}.mb-10{margin-block:var(--size-10)}.mb-auto{margin-block:auto}.mbs-0{margin-block-start:0}.mbs-1{margin-block-start:var(--size-1)}.mbs-2{margin-block-start:var(--size-2)}.mbs-3{margin-block-start:var(--size-3)}.mbs-4{margin-block-start:var(--size-4)}.mbs-5{margin-block-start:var(--size-5)}.mbs-6{margin-block-start:var(--size-6)}.mbs-8{margin-block-start:var(--size-8)}.mbs-10{margin-block-start:var(--size-10)}.mbs-auto{margin-block-start:auto}.mbe-0{margin-block-end:0}.mbe-1{margin-block-end:var(--size-1)}.mbe-2{margin-block-end:var(--size-2)}.mbe-3{margin-block-end:var(--size-3)}.mbe-4{margin-block-end:var(--size-4)}.mbe-5{margin-block-end:var(--size-5)}.mbe-6{margin-block-end:var(--size-6)}.mbe-8{margin-block-end:var(--size-8)}.mbe-10{margin-block-end:var(--size-10)}.mbe-auto{margin-block-end:auto}.mi-0{margin-inline:0}.mi-1{margin-inline:var(--size-1)}.mi-2{margin-inline:var(--size-2)}.mi-3{margin-inline:var(--size-3)}.mi-4{margin-inline:var(--size-4)}.mi-5{margin-inline:var(--size-5)}.mi-6{margin-inline:var(--size-6)}.mi-8{margin-inline:var(--size-8)}.mi-10{margin-inline:var(--size-10)}.mi-auto{margin-inline:auto}.mis-0{margin-inline-start:0}.mis-1{margin-inline-start:var(--size-1)}.mis-2{margin-inline-start:var(--size-2)}.mis-3{margin-inline-start:var(--size-3)}.mis-4{margin-inline-start:var(--size-4)}.mis-5{margin-inline-start:var(--size-5)}.mis-6{margin-inline-start:var(--size-6)}.mis-8{margin-inline-start:var(--size-8)}.mis-10{margin-inline-start:var(--size-10)}.mis-auto{margin-inline-start:auto}.mie-0{margin-inline-end:0}.mie-1{margin-inline-end:var(--size-1)}.mie-2{margin-inline-end:var(--size-2)}.mie-3{margin-inline-end:var(--size-3)}.mie-4{margin-inline-end:var(--size-4)}.mie-5{margin-inline-end:var(--size-5)}.mie-6{margin-inline-end:var(--size-6)}.mie-8{margin-inline-end:var(--size-8)}.mie-10{margin-inline-end:var(--size-10)}.mie-auto{margin-inline-end:auto}.p-0{padding:0}.p-1{padding:var(--size-1)}.p-2{padding:var(--size-2)}.p-3{padding:var(--size-3)}.p-4{padding:var(--size-4)}.p-5{padding:var(--size-5)}.p-6{padding:var(--size-6)}.p-8{padding:var(--size-8)}.p-10{padding:var(--size-10)}.pb-0{padding-block:0}.pb-1{padding-block:var(--size-1)}.pb-2{padding-block:var(--size-2)}.pb-3{padding-block:var(--size-3)}.pb-4{padding-block:var(--size-4)}.pb-5{padding-block:var(--size-5)}.pb-6{padding-block:var(--size-6)}.pb-8{padding-block:var(--size-8)}.pb-10{padding-block:var(--size-10)}.pbs-0{padding-block-start:0}.pbs-1{padding-block-start:var(--size-1)}.pbs-2{padding-block-start:var(--size-2)}.pbs-3{padding-block-start:var(--size-3)}.pbs-4{padding-block-start:var(--size-4)}.pbs-5{padding-block-start:var(--size-5)}.pbs-6{padding-block-start:var(--size-6)}.pbs-8{padding-block-start:var(--size-8)}.pbs-10{padding-block-start:var(--size-10)}.pbe-0{padding-block-end:0}.pbe-1{padding-block-end:var(--size-1)}.pbe-2{padding-block-end:var(--size-2)}.pbe-3{padding-block-end:var(--size-3)}.pbe-4{padding-block-end:var(--size-4)}.pbe-5{padding-block-end:var(--size-5)}.pbe-6{padding-block-end:var(--size-6)}.pbe-8{padding-block-end:var(--size-8)}.pbe-10{padding-block-end:var(--size-10)}.pi-0{padding-inline:0}.pi-1{padding-inline:var(--size-1)}.pi-2{padding-inline:var(--size-2)}.pi-3{padding-inline:var(--size-3)}.pi-4{padding-inline:var(--size-4)}.pi-5{padding-inline:var(--size-5)}.pi-6{padding-inline:var(--size-6)}.pi-8{padding-inline:var(--size-8)}.pi-10{padding-inline:var(--size-10)}.pis-0{padding-inline-start:0}.pis-1{padding-inline-start:var(--size-1)}.pis-2{padding-inline-start:var(--size-2)}.pis-3{padding-inline-start:var(--size-3)}.pis-4{padding-inline-start:var(--size-4)}.pis-5{padding-inline-start:var(--size-5)}.pis-6{padding-inline-start:var(--size-6)}.pis-8{padding-inline-start:var(--size-8)}.pis-10{padding-inline-start:var(--size-10)}.pie-0{padding-inline-end:0}.pie-1{padding-inline-end:var(--size-1)}.pie-2{padding-inline-end:var(--size-2)}.pie-3{padding-inline-end:var(--size-3)}.pie-4{padding-inline-end:var(--size-4)}.pie-5{padding-inline-end:var(--size-5)}.pie-6{padding-inline-end:var(--size-6)}.pie-8{padding-inline-end:var(--size-8)}.pie-10{padding-inline-end:var(--size-10)}.show\@lg,.show\@md,.show\@sm,.show\@xl{display:none}.show\@sm{@media (width >= 40rem){display:flex}}.show\@md{@media (width >= 48rem){display:flex}}.show\@lg{@media (width >= 64rem){display:flex}}.show\@xl{@media (width >= 80rem){display:flex}}.hide\@sm{@media (width >= 40rem){display:none}}.hide\@md{@media (width >= 48rem){display:none}}.hide\@lg{@media (width >= 64rem){display:none}}.hide\@xl{@media (width >= 80rem){display:none}}.hide\@pwa{@media (display-mode:standalone){display:none}}.hide\@browser{@media (display-mode:browser){display:none}}.hide\@print{@media print{display:none}}.sr-only{block-size:1px;clip-path:inset(50%);inline-size:1px;overflow:hidden;position:absolute;white-space:nowrap} \ No newline at end of file diff --git a/public/rails-pulse-assets/rails-pulse.js b/public/rails-pulse-assets/rails-pulse.js index ec559b4..99941c9 100644 --- a/public/rails-pulse-assets/rails-pulse.js +++ b/public/rails-pulse-assets/rails-pulse.js @@ -1,155364 +1,113 @@ // Rails Pulse JavaScript Bundle - Auto-generated -(() => { - var __create = Object.create; - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __getProtoOf = Object.getPrototypeOf; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; - var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; - var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; - }; - var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod - )); - var __publicField = (obj, key, value) => { - __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; - }; - var __accessCheck = (obj, member, msg) => { - if (!member.has(obj)) - throw TypeError("Cannot " + msg); - }; - var __privateGet = (obj, member, getter) => { - __accessCheck(obj, member, "read from private field"); - return getter ? getter.call(obj) : member.get(obj); - }; - var __privateAdd = (obj, member, value) => { - if (member.has(obj)) - throw TypeError("Cannot add the same private member more than once"); - member instanceof WeakSet ? member.add(obj) : member.set(obj, value); - }; - var __privateSet = (obj, member, value, setter) => { - __accessCheck(obj, member, "write to private field"); - setter ? setter.call(obj, value) : member.set(obj, value); - return value; - }; - var __privateMethod = (obj, member, method) => { - __accessCheck(obj, member, "access private method"); - return method; - }; - - // node_modules/echarts/dist/echarts.js - var require_echarts = __commonJS({ - "node_modules/echarts/dist/echarts.js"(exports, module) { - (function(global2, factory) { - typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.echarts = {})); - })(exports, function(exports2) { - "use strict"; - var extendStatics2 = function(d, b) { - extendStatics2 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { - d2.__proto__ = b2; - } || function(d2, b2) { - for (var p in b2) - if (Object.prototype.hasOwnProperty.call(b2, p)) - d2[p] = b2[p]; - }; - return extendStatics2(d, b); - }; - function __extends2(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics2(d, b); - function __() { - this.constructor = d; - } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - var Browser2 = /* @__PURE__ */ function() { - function Browser3() { - this.firefox = false; - this.ie = false; - this.edge = false; - this.newEdge = false; - this.weChat = false; - } - return Browser3; - }(); - var Env2 = /* @__PURE__ */ function() { - function Env3() { - this.browser = new Browser2(); - this.node = false; - this.wxa = false; - this.worker = false; - this.svgSupported = false; - this.touchEventsSupported = false; - this.pointerEventsSupported = false; - this.domSupported = false; - this.transformSupported = false; - this.transform3dSupported = false; - this.hasGlobalWindow = typeof window !== "undefined"; - } - return Env3; - }(); - var env2 = new Env2(); - if (typeof wx === "object" && typeof wx.getSystemInfoSync === "function") { - env2.wxa = true; - env2.touchEventsSupported = true; - } else if (typeof document === "undefined" && typeof self !== "undefined") { - env2.worker = true; - } else if (!env2.hasGlobalWindow || "Deno" in window) { - env2.node = true; - env2.svgSupported = true; - } else { - detect2(navigator.userAgent, env2); - } - function detect2(ua, env3) { - var browser = env3.browser; - var firefox = ua.match(/Firefox\/([\d.]+)/); - var ie = ua.match(/MSIE\s([\d.]+)/) || ua.match(/Trident\/.+?rv:(([\d.]+))/); - var edge = ua.match(/Edge?\/([\d.]+)/); - var weChat = /micromessenger/i.test(ua); - if (firefox) { - browser.firefox = true; - browser.version = firefox[1]; - } - if (ie) { - browser.ie = true; - browser.version = ie[1]; - } - if (edge) { - browser.edge = true; - browser.version = edge[1]; - browser.newEdge = +edge[1].split(".")[0] > 18; - } - if (weChat) { - browser.weChat = true; - } - env3.svgSupported = typeof SVGRect !== "undefined"; - env3.touchEventsSupported = "ontouchstart" in window && !browser.ie && !browser.edge; - env3.pointerEventsSupported = "onpointerdown" in window && (browser.edge || browser.ie && +browser.version >= 11); - env3.domSupported = typeof document !== "undefined"; - var style = document.documentElement.style; - env3.transform3dSupported = (browser.ie && "transition" in style || browser.edge || "WebKitCSSMatrix" in window && "m11" in new WebKitCSSMatrix() || "MozPerspective" in style) && !("OTransition" in style); - env3.transformSupported = env3.transform3dSupported || browser.ie && +browser.version >= 9; - } - var DEFAULT_FONT_SIZE2 = 12; - var DEFAULT_FONT_FAMILY2 = "sans-serif"; - var DEFAULT_FONT2 = DEFAULT_FONT_SIZE2 + "px " + DEFAULT_FONT_FAMILY2; - var OFFSET2 = 20; - var SCALE2 = 100; - var defaultWidthMapStr2 = "007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N"; - function getTextWidthMap2(mapStr) { - var map4 = {}; - if (typeof JSON === "undefined") { - return map4; - } - for (var i2 = 0; i2 < mapStr.length; i2++) { - var char = String.fromCharCode(i2 + 32); - var size2 = (mapStr.charCodeAt(i2) - OFFSET2) / SCALE2; - map4[char] = size2; - } - return map4; - } - var DEFAULT_TEXT_WIDTH_MAP2 = getTextWidthMap2(defaultWidthMapStr2); - var platformApi2 = { - createCanvas: function() { - return typeof document !== "undefined" && document.createElement("canvas"); - }, - measureText: /* @__PURE__ */ function() { - var _ctx; - var _cachedFont; - return function(text, font) { - if (!_ctx) { - var canvas = platformApi2.createCanvas(); - _ctx = canvas && canvas.getContext("2d"); - } - if (_ctx) { - if (_cachedFont !== font) { - _cachedFont = _ctx.font = font || DEFAULT_FONT2; - } - return _ctx.measureText(text); - } else { - text = text || ""; - font = font || DEFAULT_FONT2; - var res = /((?:\d+)?\.?\d*)px/.exec(font); - var fontSize = res && +res[1] || DEFAULT_FONT_SIZE2; - var width = 0; - if (font.indexOf("mono") >= 0) { - width = fontSize * text.length; - } else { - for (var i2 = 0; i2 < text.length; i2++) { - var preCalcWidth = DEFAULT_TEXT_WIDTH_MAP2[text[i2]]; - width += preCalcWidth == null ? fontSize : preCalcWidth * fontSize; - } - } - return { width }; - } - }; - }(), - loadImage: function(src, onload, onerror) { - var image = new Image(); - image.onload = onload; - image.onerror = onerror; - image.src = src; - return image; - } - }; - function setPlatformAPI2(newPlatformApis) { - for (var key in platformApi2) { - if (newPlatformApis[key]) { - platformApi2[key] = newPlatformApis[key]; - } - } - } - var BUILTIN_OBJECT2 = reduce2([ - "Function", - "RegExp", - "Date", - "Error", - "CanvasGradient", - "CanvasPattern", - "Image", - "Canvas" - ], function(obj, val) { - obj["[object " + val + "]"] = true; - return obj; - }, {}); - var TYPED_ARRAY2 = reduce2([ - "Int8", - "Uint8", - "Uint8Clamped", - "Int16", - "Uint16", - "Int32", - "Uint32", - "Float32", - "Float64" - ], function(obj, val) { - obj["[object " + val + "Array]"] = true; - return obj; - }, {}); - var objToString2 = Object.prototype.toString; - var arrayProto2 = Array.prototype; - var nativeForEach2 = arrayProto2.forEach; - var nativeFilter2 = arrayProto2.filter; - var nativeSlice2 = arrayProto2.slice; - var nativeMap2 = arrayProto2.map; - var ctorFunction2 = function() { - }.constructor; - var protoFunction2 = ctorFunction2 ? ctorFunction2.prototype : null; - var protoKey2 = "__proto__"; - var idStart2 = 2311; - function guid2() { - return idStart2++; - } - function logError2() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - if (typeof console !== "undefined") { - console.error.apply(console, args); - } - } - function clone6(source) { - if (source == null || typeof source !== "object") { - return source; - } - var result = source; - var typeStr = objToString2.call(source); - if (typeStr === "[object Array]") { - if (!isPrimitive2(source)) { - result = []; - for (var i2 = 0, len3 = source.length; i2 < len3; i2++) { - result[i2] = clone6(source[i2]); - } - } - } else if (TYPED_ARRAY2[typeStr]) { - if (!isPrimitive2(source)) { - var Ctor = source.constructor; - if (Ctor.from) { - result = Ctor.from(source); - } else { - result = new Ctor(source.length); - for (var i2 = 0, len3 = source.length; i2 < len3; i2++) { - result[i2] = source[i2]; - } - } - } - } else if (!BUILTIN_OBJECT2[typeStr] && !isPrimitive2(source) && !isDom2(source)) { - result = {}; - for (var key in source) { - if (source.hasOwnProperty(key) && key !== protoKey2) { - result[key] = clone6(source[key]); - } - } - } - return result; - } - function merge2(target, source, overwrite) { - if (!isObject5(source) || !isObject5(target)) { - return overwrite ? clone6(source) : target; - } - for (var key in source) { - if (source.hasOwnProperty(key) && key !== protoKey2) { - var targetProp = target[key]; - var sourceProp = source[key]; - if (isObject5(sourceProp) && isObject5(targetProp) && !isArray3(sourceProp) && !isArray3(targetProp) && !isDom2(sourceProp) && !isDom2(targetProp) && !isBuiltInObject2(sourceProp) && !isBuiltInObject2(targetProp) && !isPrimitive2(sourceProp) && !isPrimitive2(targetProp)) { - merge2(targetProp, sourceProp, overwrite); - } else if (overwrite || !(key in target)) { - target[key] = clone6(source[key]); - } - } - } - return target; - } - function mergeAll2(targetAndSources, overwrite) { - var result = targetAndSources[0]; - for (var i2 = 1, len3 = targetAndSources.length; i2 < len3; i2++) { - result = merge2(result, targetAndSources[i2], overwrite); - } - return result; - } - function extend3(target, source) { - if (Object.assign) { - Object.assign(target, source); - } else { - for (var key in source) { - if (source.hasOwnProperty(key) && key !== protoKey2) { - target[key] = source[key]; - } - } - } - return target; - } - function defaults2(target, source, overlay) { - var keysArr = keys2(source); - for (var i2 = 0, len3 = keysArr.length; i2 < len3; i2++) { - var key = keysArr[i2]; - if (overlay ? source[key] != null : target[key] == null) { - target[key] = source[key]; - } - } - return target; - } - var createCanvas2 = platformApi2.createCanvas; - function indexOf2(array, value) { - if (array) { - if (array.indexOf) { - return array.indexOf(value); - } - for (var i2 = 0, len3 = array.length; i2 < len3; i2++) { - if (array[i2] === value) { - return i2; - } - } - } - return -1; - } - function inherits2(clazz, baseClazz) { - var clazzPrototype = clazz.prototype; - function F() { - } - F.prototype = baseClazz.prototype; - clazz.prototype = new F(); - for (var prop in clazzPrototype) { - if (clazzPrototype.hasOwnProperty(prop)) { - clazz.prototype[prop] = clazzPrototype[prop]; - } - } - clazz.prototype.constructor = clazz; - clazz.superClass = baseClazz; - } - function mixin2(target, source, override) { - target = "prototype" in target ? target.prototype : target; - source = "prototype" in source ? source.prototype : source; - if (Object.getOwnPropertyNames) { - var keyList = Object.getOwnPropertyNames(source); - for (var i2 = 0; i2 < keyList.length; i2++) { - var key = keyList[i2]; - if (key !== "constructor") { - if (override ? source[key] != null : target[key] == null) { - target[key] = source[key]; - } - } - } - } else { - defaults2(target, source, override); - } - } - function isArrayLike2(data) { - if (!data) { - return false; - } - if (typeof data === "string") { - return false; - } - return typeof data.length === "number"; - } - function each17(arr, cb, context) { - if (!(arr && cb)) { - return; - } - if (arr.forEach && arr.forEach === nativeForEach2) { - arr.forEach(cb, context); - } else if (arr.length === +arr.length) { - for (var i2 = 0, len3 = arr.length; i2 < len3; i2++) { - cb.call(context, arr[i2], i2, arr); - } - } else { - for (var key in arr) { - if (arr.hasOwnProperty(key)) { - cb.call(context, arr[key], key, arr); - } - } - } - } - function map3(arr, cb, context) { - if (!arr) { - return []; - } - if (!cb) { - return slice2(arr); - } - if (arr.map && arr.map === nativeMap2) { - return arr.map(cb, context); - } else { - var result = []; - for (var i2 = 0, len3 = arr.length; i2 < len3; i2++) { - result.push(cb.call(context, arr[i2], i2, arr)); - } - return result; - } - } - function reduce2(arr, cb, memo, context) { - if (!(arr && cb)) { - return; - } - for (var i2 = 0, len3 = arr.length; i2 < len3; i2++) { - memo = cb.call(context, memo, arr[i2], i2, arr); - } - return memo; - } - function filter2(arr, cb, context) { - if (!arr) { - return []; - } - if (!cb) { - return slice2(arr); - } - if (arr.filter && arr.filter === nativeFilter2) { - return arr.filter(cb, context); - } else { - var result = []; - for (var i2 = 0, len3 = arr.length; i2 < len3; i2++) { - if (cb.call(context, arr[i2], i2, arr)) { - result.push(arr[i2]); - } - } - return result; - } - } - function find2(arr, cb, context) { - if (!(arr && cb)) { - return; - } - for (var i2 = 0, len3 = arr.length; i2 < len3; i2++) { - if (cb.call(context, arr[i2], i2, arr)) { - return arr[i2]; - } - } - } - function keys2(obj) { - if (!obj) { - return []; - } - if (Object.keys) { - return Object.keys(obj); - } - var keyList = []; - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - keyList.push(key); - } - } - return keyList; - } - function bindPolyfill2(func, context) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - return function() { - return func.apply(context, args.concat(nativeSlice2.call(arguments))); - }; - } - var bind3 = protoFunction2 && isFunction2(protoFunction2.bind) ? protoFunction2.call.bind(protoFunction2.bind) : bindPolyfill2; - function curry3(func) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - return function() { - return func.apply(this, args.concat(nativeSlice2.call(arguments))); - }; - } - function isArray3(value) { - if (Array.isArray) { - return Array.isArray(value); - } - return objToString2.call(value) === "[object Array]"; - } - function isFunction2(value) { - return typeof value === "function"; - } - function isString2(value) { - return typeof value === "string"; - } - function isStringSafe2(value) { - return objToString2.call(value) === "[object String]"; - } - function isNumber2(value) { - return typeof value === "number"; - } - function isObject5(value) { - var type = typeof value; - return type === "function" || !!value && type === "object"; - } - function isBuiltInObject2(value) { - return !!BUILTIN_OBJECT2[objToString2.call(value)]; - } - function isTypedArray2(value) { - return !!TYPED_ARRAY2[objToString2.call(value)]; - } - function isDom2(value) { - return typeof value === "object" && typeof value.nodeType === "number" && typeof value.ownerDocument === "object"; - } - function isGradientObject2(value) { - return value.colorStops != null; - } - function isImagePatternObject2(value) { - return value.image != null; - } - function isRegExp2(value) { - return objToString2.call(value) === "[object RegExp]"; - } - function eqNaN2(value) { - return value !== value; - } - function retrieve4() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - for (var i2 = 0, len3 = args.length; i2 < len3; i2++) { - if (args[i2] != null) { - return args[i2]; - } - } - } - function retrieve22(value0, value1) { - return value0 != null ? value0 : value1; - } - function retrieve32(value0, value1, value2) { - return value0 != null ? value0 : value1 != null ? value1 : value2; - } - function slice2(arr) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - return nativeSlice2.apply(arr, args); - } - function normalizeCssArray3(val) { - if (typeof val === "number") { - return [val, val, val, val]; - } - var len3 = val.length; - if (len3 === 2) { - return [val[0], val[1], val[0], val[1]]; - } else if (len3 === 3) { - return [val[0], val[1], val[2], val[1]]; - } - return val; - } - function assert2(condition, message) { - if (!condition) { - throw new Error(message); - } - } - function trim3(str) { - if (str == null) { - return null; - } else if (typeof str.trim === "function") { - return str.trim(); - } else { - return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); - } - } - var primitiveKey2 = "__ec_primitive__"; - function setAsPrimitive2(obj) { - obj[primitiveKey2] = true; - } - function isPrimitive2(obj) { - return obj[primitiveKey2]; - } - var MapPolyfill2 = function() { - function MapPolyfill3() { - this.data = {}; - } - MapPolyfill3.prototype["delete"] = function(key) { - var existed = this.has(key); - if (existed) { - delete this.data[key]; - } - return existed; - }; - MapPolyfill3.prototype.has = function(key) { - return this.data.hasOwnProperty(key); - }; - MapPolyfill3.prototype.get = function(key) { - return this.data[key]; - }; - MapPolyfill3.prototype.set = function(key, value) { - this.data[key] = value; - return this; - }; - MapPolyfill3.prototype.keys = function() { - return keys2(this.data); - }; - MapPolyfill3.prototype.forEach = function(callback) { - var data = this.data; - for (var key in data) { - if (data.hasOwnProperty(key)) { - callback(data[key], key); - } - } - }; - return MapPolyfill3; - }(); - var isNativeMapSupported2 = typeof Map === "function"; - function maybeNativeMap2() { - return isNativeMapSupported2 ? /* @__PURE__ */ new Map() : new MapPolyfill2(); - } - var HashMap2 = function() { - function HashMap3(obj) { - var isArr = isArray3(obj); - this.data = maybeNativeMap2(); - var thisMap = this; - obj instanceof HashMap3 ? obj.each(visit2) : obj && each17(obj, visit2); - function visit2(value, key) { - isArr ? thisMap.set(value, key) : thisMap.set(key, value); - } - } - HashMap3.prototype.hasKey = function(key) { - return this.data.has(key); - }; - HashMap3.prototype.get = function(key) { - return this.data.get(key); - }; - HashMap3.prototype.set = function(key, value) { - this.data.set(key, value); - return value; - }; - HashMap3.prototype.each = function(cb, context) { - this.data.forEach(function(value, key) { - cb.call(context, value, key); - }); - }; - HashMap3.prototype.keys = function() { - var keys3 = this.data.keys(); - return isNativeMapSupported2 ? Array.from(keys3) : keys3; - }; - HashMap3.prototype.removeKey = function(key) { - this.data["delete"](key); - }; - return HashMap3; - }(); - function createHashMap2(obj) { - return new HashMap2(obj); - } - function concatArray2(a, b) { - var newArray = new a.constructor(a.length + b.length); - for (var i2 = 0; i2 < a.length; i2++) { - newArray[i2] = a[i2]; - } - var offset3 = a.length; - for (var i2 = 0; i2 < b.length; i2++) { - newArray[i2 + offset3] = b[i2]; - } - return newArray; - } - function createObject2(proto3, properties) { - var obj; - if (Object.create) { - obj = Object.create(proto3); - } else { - var StyleCtor = function() { - }; - StyleCtor.prototype = proto3; - obj = new StyleCtor(); - } - if (properties) { - extend3(obj, properties); - } - return obj; - } - function disableUserSelect2(dom) { - var domStyle = dom.style; - domStyle.webkitUserSelect = "none"; - domStyle.userSelect = "none"; - domStyle.webkitTapHighlightColor = "rgba(0,0,0,0)"; - domStyle["-webkit-touch-callout"] = "none"; - } - function hasOwn2(own, prop) { - return own.hasOwnProperty(prop); - } - function noop2() { - } - var RADIAN_TO_DEGREE2 = 180 / Math.PI; - var util = /* @__PURE__ */ Object.freeze({ - __proto__: null, - guid: guid2, - logError: logError2, - clone: clone6, - merge: merge2, - mergeAll: mergeAll2, - extend: extend3, - defaults: defaults2, - createCanvas: createCanvas2, - indexOf: indexOf2, - inherits: inherits2, - mixin: mixin2, - isArrayLike: isArrayLike2, - each: each17, - map: map3, - reduce: reduce2, - filter: filter2, - find: find2, - keys: keys2, - bind: bind3, - curry: curry3, - isArray: isArray3, - isFunction: isFunction2, - isString: isString2, - isStringSafe: isStringSafe2, - isNumber: isNumber2, - isObject: isObject5, - isBuiltInObject: isBuiltInObject2, - isTypedArray: isTypedArray2, - isDom: isDom2, - isGradientObject: isGradientObject2, - isImagePatternObject: isImagePatternObject2, - isRegExp: isRegExp2, - eqNaN: eqNaN2, - retrieve: retrieve4, - retrieve2: retrieve22, - retrieve3: retrieve32, - slice: slice2, - normalizeCssArray: normalizeCssArray3, - assert: assert2, - trim: trim3, - setAsPrimitive: setAsPrimitive2, - isPrimitive: isPrimitive2, - HashMap: HashMap2, - createHashMap: createHashMap2, - concatArray: concatArray2, - createObject: createObject2, - disableUserSelect: disableUserSelect2, - hasOwn: hasOwn2, - noop: noop2, - RADIAN_TO_DEGREE: RADIAN_TO_DEGREE2 - }); - function create4(x, y) { - if (x == null) { - x = 0; - } - if (y == null) { - y = 0; - } - return [x, y]; - } - function copy3(out3, v) { - out3[0] = v[0]; - out3[1] = v[1]; - return out3; - } - function clone$1(v) { - return [v[0], v[1]]; - } - function set3(out3, a, b) { - out3[0] = a; - out3[1] = b; - return out3; - } - function add3(out3, v13, v23) { - out3[0] = v13[0] + v23[0]; - out3[1] = v13[1] + v23[1]; - return out3; - } - function scaleAndAdd3(out3, v13, v23, a) { - out3[0] = v13[0] + v23[0] * a; - out3[1] = v13[1] + v23[1] * a; - return out3; - } - function sub2(out3, v13, v23) { - out3[0] = v13[0] - v23[0]; - out3[1] = v13[1] - v23[1]; - return out3; - } - function len2(v) { - return Math.sqrt(lenSquare2(v)); - } - var length2 = len2; - function lenSquare2(v) { - return v[0] * v[0] + v[1] * v[1]; - } - var lengthSquare2 = lenSquare2; - function mul3(out3, v13, v23) { - out3[0] = v13[0] * v23[0]; - out3[1] = v13[1] * v23[1]; - return out3; - } - function div2(out3, v13, v23) { - out3[0] = v13[0] / v23[0]; - out3[1] = v13[1] / v23[1]; - return out3; - } - function dot2(v13, v23) { - return v13[0] * v23[0] + v13[1] * v23[1]; - } - function scale4(out3, v, s) { - out3[0] = v[0] * s; - out3[1] = v[1] * s; - return out3; - } - function normalize5(out3, v) { - var d = len2(v); - if (d === 0) { - out3[0] = 0; - out3[1] = 0; - } else { - out3[0] = v[0] / d; - out3[1] = v[1] / d; - } - return out3; - } - function distance2(v13, v23) { - return Math.sqrt((v13[0] - v23[0]) * (v13[0] - v23[0]) + (v13[1] - v23[1]) * (v13[1] - v23[1])); - } - var dist3 = distance2; - function distanceSquare2(v13, v23) { - return (v13[0] - v23[0]) * (v13[0] - v23[0]) + (v13[1] - v23[1]) * (v13[1] - v23[1]); - } - var distSquare2 = distanceSquare2; - function negate2(out3, v) { - out3[0] = -v[0]; - out3[1] = -v[1]; - return out3; - } - function lerp3(out3, v13, v23, t) { - out3[0] = v13[0] + t * (v23[0] - v13[0]); - out3[1] = v13[1] + t * (v23[1] - v13[1]); - return out3; - } - function applyTransform3(out3, v, m3) { - var x = v[0]; - var y = v[1]; - out3[0] = m3[0] * x + m3[2] * y + m3[4]; - out3[1] = m3[1] * x + m3[3] * y + m3[5]; - return out3; - } - function min4(out3, v13, v23) { - out3[0] = Math.min(v13[0], v23[0]); - out3[1] = Math.min(v13[1], v23[1]); - return out3; - } - function max4(out3, v13, v23) { - out3[0] = Math.max(v13[0], v23[0]); - out3[1] = Math.max(v13[1], v23[1]); - return out3; - } - var vector = /* @__PURE__ */ Object.freeze({ - __proto__: null, - create: create4, - copy: copy3, - clone: clone$1, - set: set3, - add: add3, - scaleAndAdd: scaleAndAdd3, - sub: sub2, - len: len2, - length: length2, - lenSquare: lenSquare2, - lengthSquare: lengthSquare2, - mul: mul3, - div: div2, - dot: dot2, - scale: scale4, - normalize: normalize5, - distance: distance2, - dist: dist3, - distanceSquare: distanceSquare2, - distSquare: distSquare2, - negate: negate2, - lerp: lerp3, - applyTransform: applyTransform3, - min: min4, - max: max4 - }); - var Param2 = /* @__PURE__ */ function() { - function Param3(target, e3) { - this.target = target; - this.topTarget = e3 && e3.topTarget; - } - return Param3; - }(); - var Draggable2 = function() { - function Draggable3(handler) { - this.handler = handler; - handler.on("mousedown", this._dragStart, this); - handler.on("mousemove", this._drag, this); - handler.on("mouseup", this._dragEnd, this); - } - Draggable3.prototype._dragStart = function(e3) { - var draggingTarget = e3.target; - while (draggingTarget && !draggingTarget.draggable) { - draggingTarget = draggingTarget.parent || draggingTarget.__hostTarget; - } - if (draggingTarget) { - this._draggingTarget = draggingTarget; - draggingTarget.dragging = true; - this._x = e3.offsetX; - this._y = e3.offsetY; - this.handler.dispatchToElement(new Param2(draggingTarget, e3), "dragstart", e3.event); - } - }; - Draggable3.prototype._drag = function(e3) { - var draggingTarget = this._draggingTarget; - if (draggingTarget) { - var x = e3.offsetX; - var y = e3.offsetY; - var dx = x - this._x; - var dy = y - this._y; - this._x = x; - this._y = y; - draggingTarget.drift(dx, dy, e3); - this.handler.dispatchToElement(new Param2(draggingTarget, e3), "drag", e3.event); - var dropTarget = this.handler.findHover(x, y, draggingTarget).target; - var lastDropTarget = this._dropTarget; - this._dropTarget = dropTarget; - if (draggingTarget !== dropTarget) { - if (lastDropTarget && dropTarget !== lastDropTarget) { - this.handler.dispatchToElement(new Param2(lastDropTarget, e3), "dragleave", e3.event); - } - if (dropTarget && dropTarget !== lastDropTarget) { - this.handler.dispatchToElement(new Param2(dropTarget, e3), "dragenter", e3.event); - } - } - } - }; - Draggable3.prototype._dragEnd = function(e3) { - var draggingTarget = this._draggingTarget; - if (draggingTarget) { - draggingTarget.dragging = false; - } - this.handler.dispatchToElement(new Param2(draggingTarget, e3), "dragend", e3.event); - if (this._dropTarget) { - this.handler.dispatchToElement(new Param2(this._dropTarget, e3), "drop", e3.event); - } - this._draggingTarget = null; - this._dropTarget = null; - }; - return Draggable3; - }(); - var Eventful2 = function() { - function Eventful3(eventProcessors) { - if (eventProcessors) { - this._$eventProcessor = eventProcessors; - } - } - Eventful3.prototype.on = function(event, query, handler, context) { - if (!this._$handlers) { - this._$handlers = {}; - } - var _h = this._$handlers; - if (typeof query === "function") { - context = handler; - handler = query; - query = null; - } - if (!handler || !event) { - return this; - } - var eventProcessor = this._$eventProcessor; - if (query != null && eventProcessor && eventProcessor.normalizeQuery) { - query = eventProcessor.normalizeQuery(query); - } - if (!_h[event]) { - _h[event] = []; - } - for (var i2 = 0; i2 < _h[event].length; i2++) { - if (_h[event][i2].h === handler) { - return this; - } - } - var wrap = { - h: handler, - query, - ctx: context || this, - callAtLast: handler.zrEventfulCallAtLast - }; - var lastIndex = _h[event].length - 1; - var lastWrap = _h[event][lastIndex]; - lastWrap && lastWrap.callAtLast ? _h[event].splice(lastIndex, 0, wrap) : _h[event].push(wrap); - return this; - }; - Eventful3.prototype.isSilent = function(eventName) { - var _h = this._$handlers; - return !_h || !_h[eventName] || !_h[eventName].length; - }; - Eventful3.prototype.off = function(eventType, handler) { - var _h = this._$handlers; - if (!_h) { - return this; - } - if (!eventType) { - this._$handlers = {}; - return this; - } - if (handler) { - if (_h[eventType]) { - var newList = []; - for (var i2 = 0, l = _h[eventType].length; i2 < l; i2++) { - if (_h[eventType][i2].h !== handler) { - newList.push(_h[eventType][i2]); - } - } - _h[eventType] = newList; - } - if (_h[eventType] && _h[eventType].length === 0) { - delete _h[eventType]; - } - } else { - delete _h[eventType]; - } - return this; - }; - Eventful3.prototype.trigger = function(eventType) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - if (!this._$handlers) { - return this; - } - var _h = this._$handlers[eventType]; - var eventProcessor = this._$eventProcessor; - if (_h) { - var argLen = args.length; - var len3 = _h.length; - for (var i2 = 0; i2 < len3; i2++) { - var hItem = _h[i2]; - if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(eventType, hItem.query)) { - continue; - } - switch (argLen) { - case 0: - hItem.h.call(hItem.ctx); - break; - case 1: - hItem.h.call(hItem.ctx, args[0]); - break; - case 2: - hItem.h.call(hItem.ctx, args[0], args[1]); - break; - default: - hItem.h.apply(hItem.ctx, args); - break; - } - } - } - eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(eventType); - return this; - }; - Eventful3.prototype.triggerWithContext = function(type) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - if (!this._$handlers) { - return this; - } - var _h = this._$handlers[type]; - var eventProcessor = this._$eventProcessor; - if (_h) { - var argLen = args.length; - var ctx = args[argLen - 1]; - var len3 = _h.length; - for (var i2 = 0; i2 < len3; i2++) { - var hItem = _h[i2]; - if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) { - continue; - } - switch (argLen) { - case 0: - hItem.h.call(ctx); - break; - case 1: - hItem.h.call(ctx, args[0]); - break; - case 2: - hItem.h.call(ctx, args[0], args[1]); - break; - default: - hItem.h.apply(ctx, args.slice(1, argLen - 1)); - break; - } - } - } - eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type); - return this; - }; - return Eventful3; - }(); - var LN22 = Math.log(2); - function determinant2(rows, rank, rowStart, rowMask, colMask, detCache) { - var cacheKey = rowMask + "-" + colMask; - var fullRank = rows.length; - if (detCache.hasOwnProperty(cacheKey)) { - return detCache[cacheKey]; - } - if (rank === 1) { - var colStart = Math.round(Math.log((1 << fullRank) - 1 & ~colMask) / LN22); - return rows[rowStart][colStart]; - } - var subRowMask = rowMask | 1 << rowStart; - var subRowStart = rowStart + 1; - while (rowMask & 1 << subRowStart) { - subRowStart++; - } - var sum3 = 0; - for (var j = 0, colLocalIdx = 0; j < fullRank; j++) { - var colTag = 1 << j; - if (!(colTag & colMask)) { - sum3 += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j] * determinant2(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache); - colLocalIdx++; - } - } - detCache[cacheKey] = sum3; - return sum3; - } - function buildTransformer2(src, dest) { - var mA = [ - [src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]], - [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]], - [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]], - [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]], - [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]], - [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]], - [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]], - [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]] - ]; - var detCache = {}; - var det = determinant2(mA, 8, 0, 0, 0, detCache); - if (det === 0) { - return; - } - var vh = []; - for (var i2 = 0; i2 < 8; i2++) { - for (var j = 0; j < 8; j++) { - vh[j] == null && (vh[j] = 0); - vh[j] += ((i2 + j) % 2 ? -1 : 1) * determinant2(mA, 7, i2 === 0 ? 1 : 0, 1 << i2, 1 << j, detCache) / det * dest[i2]; - } - } - return function(out3, srcPointX, srcPointY) { - var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1; - out3[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk; - out3[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk; - }; - } - var EVENT_SAVED_PROP2 = "___zrEVENTSAVED"; - var _calcOut3 = []; - function transformLocalCoord2(out3, elFrom, elTarget, inX, inY) { - return transformCoordWithViewport2(_calcOut3, elFrom, inX, inY, true) && transformCoordWithViewport2(out3, elTarget, _calcOut3[0], _calcOut3[1]); - } - function transformCoordWithViewport2(out3, el, inX, inY, inverse) { - if (el.getBoundingClientRect && env2.domSupported && !isCanvasEl2(el)) { - var saved = el[EVENT_SAVED_PROP2] || (el[EVENT_SAVED_PROP2] = {}); - var markers = prepareCoordMarkers2(el, saved); - var transformer = preparePointerTransformer2(markers, saved, inverse); - if (transformer) { - transformer(out3, inX, inY); - return true; - } - } - return false; - } - function prepareCoordMarkers2(el, saved) { - var markers = saved.markers; - if (markers) { - return markers; - } - markers = saved.markers = []; - var propLR = ["left", "right"]; - var propTB = ["top", "bottom"]; - for (var i2 = 0; i2 < 4; i2++) { - var marker = document.createElement("div"); - var stl = marker.style; - var idxLR = i2 % 2; - var idxTB = (i2 >> 1) % 2; - stl.cssText = [ - "position: absolute", - "visibility: hidden", - "padding: 0", - "margin: 0", - "border-width: 0", - "user-select: none", - "width:0", - "height:0", - propLR[idxLR] + ":0", - propTB[idxTB] + ":0", - propLR[1 - idxLR] + ":auto", - propTB[1 - idxTB] + ":auto", - "" - ].join("!important;"); - el.appendChild(marker); - markers.push(marker); - } - return markers; - } - function preparePointerTransformer2(markers, saved, inverse) { - var transformerName = inverse ? "invTrans" : "trans"; - var transformer = saved[transformerName]; - var oldSrcCoords = saved.srcCoords; - var srcCoords = []; - var destCoords = []; - var oldCoordTheSame = true; - for (var i2 = 0; i2 < 4; i2++) { - var rect = markers[i2].getBoundingClientRect(); - var ii = 2 * i2; - var x = rect.left; - var y = rect.top; - srcCoords.push(x, y); - oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1]; - destCoords.push(markers[i2].offsetLeft, markers[i2].offsetTop); - } - return oldCoordTheSame && transformer ? transformer : (saved.srcCoords = srcCoords, saved[transformerName] = inverse ? buildTransformer2(destCoords, srcCoords) : buildTransformer2(srcCoords, destCoords)); - } - function isCanvasEl2(el) { - return el.nodeName.toUpperCase() === "CANVAS"; - } - var replaceReg2 = /([&<>"'])/g; - var replaceMap2 = { - "&": "&", - "<": "<", - ">": ">", - '"': """, - "'": "'" - }; - function encodeHTML2(source) { - return source == null ? "" : (source + "").replace(replaceReg2, function(str, c) { - return replaceMap2[c]; - }); - } - var MOUSE_EVENT_REG2 = /^(?:mouse|pointer|contextmenu|drag|drop)|click/; - var _calcOut$1 = []; - var firefoxNotSupportOffsetXY2 = env2.browser.firefox && +env2.browser.version.split(".")[0] < 39; - function clientToLocal2(el, e3, out3, calculate) { - out3 = out3 || {}; - if (calculate) { - calculateZrXY2(el, e3, out3); - } else if (firefoxNotSupportOffsetXY2 && e3.layerX != null && e3.layerX !== e3.offsetX) { - out3.zrX = e3.layerX; - out3.zrY = e3.layerY; - } else if (e3.offsetX != null) { - out3.zrX = e3.offsetX; - out3.zrY = e3.offsetY; - } else { - calculateZrXY2(el, e3, out3); - } - return out3; - } - function calculateZrXY2(el, e3, out3) { - if (env2.domSupported && el.getBoundingClientRect) { - var ex = e3.clientX; - var ey = e3.clientY; - if (isCanvasEl2(el)) { - var box3 = el.getBoundingClientRect(); - out3.zrX = ex - box3.left; - out3.zrY = ey - box3.top; - return; - } else { - if (transformCoordWithViewport2(_calcOut$1, el, ex, ey)) { - out3.zrX = _calcOut$1[0]; - out3.zrY = _calcOut$1[1]; - return; - } - } - } - out3.zrX = out3.zrY = 0; - } - function getNativeEvent2(e3) { - return e3 || window.event; - } - function normalizeEvent2(el, e3, calculate) { - e3 = getNativeEvent2(e3); - if (e3.zrX != null) { - return e3; - } - var eventType = e3.type; - var isTouch = eventType && eventType.indexOf("touch") >= 0; - if (!isTouch) { - clientToLocal2(el, e3, e3, calculate); - var wheelDelta = getWheelDeltaMayPolyfill2(e3); - e3.zrDelta = wheelDelta ? wheelDelta / 120 : -(e3.detail || 0) / 3; - } else { - var touch = eventType !== "touchend" ? e3.targetTouches[0] : e3.changedTouches[0]; - touch && clientToLocal2(el, touch, e3, calculate); - } - var button = e3.button; - if (e3.which == null && button !== void 0 && MOUSE_EVENT_REG2.test(e3.type)) { - e3.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0; - } - return e3; - } - function getWheelDeltaMayPolyfill2(e3) { - var rawWheelDelta = e3.wheelDelta; - if (rawWheelDelta) { - return rawWheelDelta; - } - var deltaX = e3.deltaX; - var deltaY = e3.deltaY; - if (deltaX == null || deltaY == null) { - return rawWheelDelta; - } - var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX); - var sign = deltaY > 0 ? -1 : deltaY < 0 ? 1 : deltaX > 0 ? -1 : 1; - return 3 * delta * sign; - } - function addEventListener3(el, name, handler, opt) { - el.addEventListener(name, handler, opt); - } - function removeEventListener3(el, name, handler, opt) { - el.removeEventListener(name, handler, opt); - } - var stop2 = function(e3) { - e3.preventDefault(); - e3.stopPropagation(); - e3.cancelBubble = true; - }; - function isMiddleOrRightButtonOnMouseUpDown2(e3) { - return e3.which === 2 || e3.which === 3; - } - var GestureMgr2 = function() { - function GestureMgr3() { - this._track = []; - } - GestureMgr3.prototype.recognize = function(event, target, root) { - this._doTrack(event, target, root); - return this._recognize(event); - }; - GestureMgr3.prototype.clear = function() { - this._track.length = 0; - return this; - }; - GestureMgr3.prototype._doTrack = function(event, target, root) { - var touches = event.touches; - if (!touches) { - return; - } - var trackItem = { - points: [], - touches: [], - target, - event - }; - for (var i2 = 0, len3 = touches.length; i2 < len3; i2++) { - var touch = touches[i2]; - var pos = clientToLocal2(root, touch, {}); - trackItem.points.push([pos.zrX, pos.zrY]); - trackItem.touches.push(touch); - } - this._track.push(trackItem); - }; - GestureMgr3.prototype._recognize = function(event) { - for (var eventName in recognizers2) { - if (recognizers2.hasOwnProperty(eventName)) { - var gestureInfo = recognizers2[eventName](this._track, event); - if (gestureInfo) { - return gestureInfo; - } - } - } - }; - return GestureMgr3; - }(); - function dist$1(pointPair) { - var dx = pointPair[1][0] - pointPair[0][0]; - var dy = pointPair[1][1] - pointPair[0][1]; - return Math.sqrt(dx * dx + dy * dy); - } - function center3(pointPair) { - return [ - (pointPair[0][0] + pointPair[1][0]) / 2, - (pointPair[0][1] + pointPair[1][1]) / 2 - ]; - } - var recognizers2 = { - pinch: function(tracks, event) { - var trackLen = tracks.length; - if (!trackLen) { - return; - } - var pinchEnd = (tracks[trackLen - 1] || {}).points; - var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd; - if (pinchPre && pinchPre.length > 1 && pinchEnd && pinchEnd.length > 1) { - var pinchScale = dist$1(pinchEnd) / dist$1(pinchPre); - !isFinite(pinchScale) && (pinchScale = 1); - event.pinchScale = pinchScale; - var pinchCenter = center3(pinchEnd); - event.pinchX = pinchCenter[0]; - event.pinchY = pinchCenter[1]; - return { - type: "pinch", - target: tracks[0].target, - event - }; - } - } - }; - function create$1() { - return [1, 0, 0, 1, 0, 0]; - } - function identity2(out3) { - out3[0] = 1; - out3[1] = 0; - out3[2] = 0; - out3[3] = 1; - out3[4] = 0; - out3[5] = 0; - return out3; - } - function copy$1(out3, m3) { - out3[0] = m3[0]; - out3[1] = m3[1]; - out3[2] = m3[2]; - out3[3] = m3[3]; - out3[4] = m3[4]; - out3[5] = m3[5]; - return out3; - } - function mul$1(out3, m1, m22) { - var out0 = m1[0] * m22[0] + m1[2] * m22[1]; - var out1 = m1[1] * m22[0] + m1[3] * m22[1]; - var out22 = m1[0] * m22[2] + m1[2] * m22[3]; - var out32 = m1[1] * m22[2] + m1[3] * m22[3]; - var out4 = m1[0] * m22[4] + m1[2] * m22[5] + m1[4]; - var out5 = m1[1] * m22[4] + m1[3] * m22[5] + m1[5]; - out3[0] = out0; - out3[1] = out1; - out3[2] = out22; - out3[3] = out32; - out3[4] = out4; - out3[5] = out5; - return out3; - } - function translate2(out3, a, v) { - out3[0] = a[0]; - out3[1] = a[1]; - out3[2] = a[2]; - out3[3] = a[3]; - out3[4] = a[4] + v[0]; - out3[5] = a[5] + v[1]; - return out3; - } - function rotate2(out3, a, rad, pivot) { - if (pivot === void 0) { - pivot = [0, 0]; - } - var aa = a[0]; - var ac = a[2]; - var atx = a[4]; - var ab = a[1]; - var ad = a[3]; - var aty = a[5]; - var st = Math.sin(rad); - var ct = Math.cos(rad); - out3[0] = aa * ct + ab * st; - out3[1] = -aa * st + ab * ct; - out3[2] = ac * ct + ad * st; - out3[3] = -ac * st + ct * ad; - out3[4] = ct * (atx - pivot[0]) + st * (aty - pivot[1]) + pivot[0]; - out3[5] = ct * (aty - pivot[1]) - st * (atx - pivot[0]) + pivot[1]; - return out3; - } - function scale$1(out3, a, v) { - var vx = v[0]; - var vy = v[1]; - out3[0] = a[0] * vx; - out3[1] = a[1] * vy; - out3[2] = a[2] * vx; - out3[3] = a[3] * vy; - out3[4] = a[4] * vx; - out3[5] = a[5] * vy; - return out3; - } - function invert2(out3, a) { - var aa = a[0]; - var ac = a[2]; - var atx = a[4]; - var ab = a[1]; - var ad = a[3]; - var aty = a[5]; - var det = aa * ad - ab * ac; - if (!det) { - return null; - } - det = 1 / det; - out3[0] = ad * det; - out3[1] = -ab * det; - out3[2] = -ac * det; - out3[3] = aa * det; - out3[4] = (ac * aty - ad * atx) * det; - out3[5] = (ab * atx - aa * aty) * det; - return out3; - } - function clone$2(a) { - var b = create$1(); - copy$1(b, a); - return b; - } - var matrix = /* @__PURE__ */ Object.freeze({ - __proto__: null, - create: create$1, - identity: identity2, - copy: copy$1, - mul: mul$1, - translate: translate2, - rotate: rotate2, - scale: scale$1, - invert: invert2, - clone: clone$2 - }); - var Point2 = function() { - function Point3(x, y) { - this.x = x || 0; - this.y = y || 0; - } - Point3.prototype.copy = function(other) { - this.x = other.x; - this.y = other.y; - return this; - }; - Point3.prototype.clone = function() { - return new Point3(this.x, this.y); - }; - Point3.prototype.set = function(x, y) { - this.x = x; - this.y = y; - return this; - }; - Point3.prototype.equal = function(other) { - return other.x === this.x && other.y === this.y; - }; - Point3.prototype.add = function(other) { - this.x += other.x; - this.y += other.y; - return this; - }; - Point3.prototype.scale = function(scalar) { - this.x *= scalar; - this.y *= scalar; - }; - Point3.prototype.scaleAndAdd = function(other, scalar) { - this.x += other.x * scalar; - this.y += other.y * scalar; - }; - Point3.prototype.sub = function(other) { - this.x -= other.x; - this.y -= other.y; - return this; - }; - Point3.prototype.dot = function(other) { - return this.x * other.x + this.y * other.y; - }; - Point3.prototype.len = function() { - return Math.sqrt(this.x * this.x + this.y * this.y); - }; - Point3.prototype.lenSquare = function() { - return this.x * this.x + this.y * this.y; - }; - Point3.prototype.normalize = function() { - var len3 = this.len(); - this.x /= len3; - this.y /= len3; - return this; - }; - Point3.prototype.distance = function(other) { - var dx = this.x - other.x; - var dy = this.y - other.y; - return Math.sqrt(dx * dx + dy * dy); - }; - Point3.prototype.distanceSquare = function(other) { - var dx = this.x - other.x; - var dy = this.y - other.y; - return dx * dx + dy * dy; - }; - Point3.prototype.negate = function() { - this.x = -this.x; - this.y = -this.y; - return this; - }; - Point3.prototype.transform = function(m3) { - if (!m3) { - return; - } - var x = this.x; - var y = this.y; - this.x = m3[0] * x + m3[2] * y + m3[4]; - this.y = m3[1] * x + m3[3] * y + m3[5]; - return this; - }; - Point3.prototype.toArray = function(out3) { - out3[0] = this.x; - out3[1] = this.y; - return out3; - }; - Point3.prototype.fromArray = function(input) { - this.x = input[0]; - this.y = input[1]; - }; - Point3.set = function(p, x, y) { - p.x = x; - p.y = y; - }; - Point3.copy = function(p, p2) { - p.x = p2.x; - p.y = p2.y; - }; - Point3.len = function(p) { - return Math.sqrt(p.x * p.x + p.y * p.y); - }; - Point3.lenSquare = function(p) { - return p.x * p.x + p.y * p.y; - }; - Point3.dot = function(p0, p1) { - return p0.x * p1.x + p0.y * p1.y; - }; - Point3.add = function(out3, p0, p1) { - out3.x = p0.x + p1.x; - out3.y = p0.y + p1.y; - }; - Point3.sub = function(out3, p0, p1) { - out3.x = p0.x - p1.x; - out3.y = p0.y - p1.y; - }; - Point3.scale = function(out3, p0, scalar) { - out3.x = p0.x * scalar; - out3.y = p0.y * scalar; - }; - Point3.scaleAndAdd = function(out3, p0, p1, scalar) { - out3.x = p0.x + p1.x * scalar; - out3.y = p0.y + p1.y * scalar; - }; - Point3.lerp = function(out3, p0, p1, t) { - var onet = 1 - t; - out3.x = onet * p0.x + t * p1.x; - out3.y = onet * p0.y + t * p1.y; - }; - return Point3; - }(); - var mathMin12 = Math.min; - var mathMax12 = Math.max; - var lt2 = new Point2(); - var rb2 = new Point2(); - var lb2 = new Point2(); - var rt2 = new Point2(); - var minTv3 = new Point2(); - var maxTv3 = new Point2(); - var BoundingRect2 = function() { - function BoundingRect3(x, y, width, height) { - if (width < 0) { - x = x + width; - width = -width; - } - if (height < 0) { - y = y + height; - height = -height; - } - this.x = x; - this.y = y; - this.width = width; - this.height = height; - } - BoundingRect3.prototype.union = function(other) { - var x = mathMin12(other.x, this.x); - var y = mathMin12(other.y, this.y); - if (isFinite(this.x) && isFinite(this.width)) { - this.width = mathMax12(other.x + other.width, this.x + this.width) - x; - } else { - this.width = other.width; - } - if (isFinite(this.y) && isFinite(this.height)) { - this.height = mathMax12(other.y + other.height, this.y + this.height) - y; - } else { - this.height = other.height; - } - this.x = x; - this.y = y; - }; - BoundingRect3.prototype.applyTransform = function(m3) { - BoundingRect3.applyTransform(this, this, m3); - }; - BoundingRect3.prototype.calculateTransform = function(b) { - var a = this; - var sx = b.width / a.width; - var sy = b.height / a.height; - var m3 = create$1(); - translate2(m3, m3, [-a.x, -a.y]); - scale$1(m3, m3, [sx, sy]); - translate2(m3, m3, [b.x, b.y]); - return m3; - }; - BoundingRect3.prototype.intersect = function(b, mtv) { - if (!b) { - return false; - } - if (!(b instanceof BoundingRect3)) { - b = BoundingRect3.create(b); - } - var a = this; - var ax0 = a.x; - var ax1 = a.x + a.width; - var ay0 = a.y; - var ay1 = a.y + a.height; - var bx0 = b.x; - var bx1 = b.x + b.width; - var by0 = b.y; - var by1 = b.y + b.height; - var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0); - if (mtv) { - var dMin = Infinity; - var dMax = 0; - var d0 = Math.abs(ax1 - bx0); - var d1 = Math.abs(bx1 - ax0); - var d2 = Math.abs(ay1 - by0); - var d3 = Math.abs(by1 - ay0); - var dx = Math.min(d0, d1); - var dy = Math.min(d2, d3); - if (ax1 < bx0 || bx1 < ax0) { - if (dx > dMax) { - dMax = dx; - if (d0 < d1) { - Point2.set(maxTv3, -d0, 0); - } else { - Point2.set(maxTv3, d1, 0); - } - } - } else { - if (dx < dMin) { - dMin = dx; - if (d0 < d1) { - Point2.set(minTv3, d0, 0); - } else { - Point2.set(minTv3, -d1, 0); - } - } - } - if (ay1 < by0 || by1 < ay0) { - if (dy > dMax) { - dMax = dy; - if (d2 < d3) { - Point2.set(maxTv3, 0, -d2); - } else { - Point2.set(maxTv3, 0, d3); - } - } - } else { - if (dx < dMin) { - dMin = dx; - if (d2 < d3) { - Point2.set(minTv3, 0, d2); - } else { - Point2.set(minTv3, 0, -d3); - } - } - } - } - if (mtv) { - Point2.copy(mtv, overlap ? minTv3 : maxTv3); - } - return overlap; - }; - BoundingRect3.prototype.contain = function(x, y) { - var rect = this; - return x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height; - }; - BoundingRect3.prototype.clone = function() { - return new BoundingRect3(this.x, this.y, this.width, this.height); - }; - BoundingRect3.prototype.copy = function(other) { - BoundingRect3.copy(this, other); - }; - BoundingRect3.prototype.plain = function() { - return { - x: this.x, - y: this.y, - width: this.width, - height: this.height - }; - }; - BoundingRect3.prototype.isFinite = function() { - return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height); - }; - BoundingRect3.prototype.isZero = function() { - return this.width === 0 || this.height === 0; - }; - BoundingRect3.create = function(rect) { - return new BoundingRect3(rect.x, rect.y, rect.width, rect.height); - }; - BoundingRect3.copy = function(target, source) { - target.x = source.x; - target.y = source.y; - target.width = source.width; - target.height = source.height; - }; - BoundingRect3.applyTransform = function(target, source, m3) { - if (!m3) { - if (target !== source) { - BoundingRect3.copy(target, source); - } - return; - } - if (m3[1] < 1e-5 && m3[1] > -1e-5 && m3[2] < 1e-5 && m3[2] > -1e-5) { - var sx = m3[0]; - var sy = m3[3]; - var tx = m3[4]; - var ty = m3[5]; - target.x = source.x * sx + tx; - target.y = source.y * sy + ty; - target.width = source.width * sx; - target.height = source.height * sy; - if (target.width < 0) { - target.x += target.width; - target.width = -target.width; - } - if (target.height < 0) { - target.y += target.height; - target.height = -target.height; - } - return; - } - lt2.x = lb2.x = source.x; - lt2.y = rt2.y = source.y; - rb2.x = rt2.x = source.x + source.width; - rb2.y = lb2.y = source.y + source.height; - lt2.transform(m3); - rt2.transform(m3); - rb2.transform(m3); - lb2.transform(m3); - target.x = mathMin12(lt2.x, rb2.x, lb2.x, rt2.x); - target.y = mathMin12(lt2.y, rb2.y, lb2.y, rt2.y); - var maxX = mathMax12(lt2.x, rb2.x, lb2.x, rt2.x); - var maxY = mathMax12(lt2.y, rb2.y, lb2.y, rt2.y); - target.width = maxX - target.x; - target.height = maxY - target.y; - }; - return BoundingRect3; - }(); - var SILENT2 = "silent"; - function makeEventPacket2(eveType, targetInfo, event) { - return { - type: eveType, - event, - target: targetInfo.target, - topTarget: targetInfo.topTarget, - cancelBubble: false, - offsetX: event.zrX, - offsetY: event.zrY, - gestureEvent: event.gestureEvent, - pinchX: event.pinchX, - pinchY: event.pinchY, - pinchScale: event.pinchScale, - wheelDelta: event.zrDelta, - zrByTouch: event.zrByTouch, - which: event.which, - stop: stopEvent2 - }; - } - function stopEvent2() { - stop2(this.event); - } - var EmptyProxy2 = function(_super) { - __extends2(EmptyProxy3, _super); - function EmptyProxy3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.handler = null; - return _this; - } - EmptyProxy3.prototype.dispose = function() { - }; - EmptyProxy3.prototype.setCursor = function() { - }; - return EmptyProxy3; - }(Eventful2); - var HoveredResult2 = /* @__PURE__ */ function() { - function HoveredResult3(x, y) { - this.x = x; - this.y = y; - } - return HoveredResult3; - }(); - var handlerNames2 = [ - "click", - "dblclick", - "mousewheel", - "mouseout", - "mouseup", - "mousedown", - "mousemove", - "contextmenu" - ]; - var tmpRect3 = new BoundingRect2(0, 0, 0, 0); - var Handler2 = function(_super) { - __extends2(Handler3, _super); - function Handler3(storage3, painter, proxy, painterRoot, pointerSize) { - var _this = _super.call(this) || this; - _this._hovered = new HoveredResult2(0, 0); - _this.storage = storage3; - _this.painter = painter; - _this.painterRoot = painterRoot; - _this._pointerSize = pointerSize; - proxy = proxy || new EmptyProxy2(); - _this.proxy = null; - _this.setHandlerProxy(proxy); - _this._draggingMgr = new Draggable2(_this); - return _this; - } - Handler3.prototype.setHandlerProxy = function(proxy) { - if (this.proxy) { - this.proxy.dispose(); - } - if (proxy) { - each17(handlerNames2, function(name) { - proxy.on && proxy.on(name, this[name], this); - }, this); - proxy.handler = this; - } - this.proxy = proxy; - }; - Handler3.prototype.mousemove = function(event) { - var x = event.zrX; - var y = event.zrY; - var isOutside = isOutsideBoundary2(this, x, y); - var lastHovered = this._hovered; - var lastHoveredTarget = lastHovered.target; - if (lastHoveredTarget && !lastHoveredTarget.__zr) { - lastHovered = this.findHover(lastHovered.x, lastHovered.y); - lastHoveredTarget = lastHovered.target; - } - var hovered = this._hovered = isOutside ? new HoveredResult2(x, y) : this.findHover(x, y); - var hoveredTarget = hovered.target; - var proxy = this.proxy; - proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : "default"); - if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) { - this.dispatchToElement(lastHovered, "mouseout", event); - } - this.dispatchToElement(hovered, "mousemove", event); - if (hoveredTarget && hoveredTarget !== lastHoveredTarget) { - this.dispatchToElement(hovered, "mouseover", event); - } - }; - Handler3.prototype.mouseout = function(event) { - var eventControl = event.zrEventControl; - if (eventControl !== "only_globalout") { - this.dispatchToElement(this._hovered, "mouseout", event); - } - if (eventControl !== "no_globalout") { - this.trigger("globalout", { type: "globalout", event }); - } - }; - Handler3.prototype.resize = function() { - this._hovered = new HoveredResult2(0, 0); - }; - Handler3.prototype.dispatch = function(eventName, eventArgs) { - var handler = this[eventName]; - handler && handler.call(this, eventArgs); - }; - Handler3.prototype.dispose = function() { - this.proxy.dispose(); - this.storage = null; - this.proxy = null; - this.painter = null; - }; - Handler3.prototype.setCursorStyle = function(cursorStyle) { - var proxy = this.proxy; - proxy.setCursor && proxy.setCursor(cursorStyle); - }; - Handler3.prototype.dispatchToElement = function(targetInfo, eventName, event) { - targetInfo = targetInfo || {}; - var el = targetInfo.target; - if (el && el.silent) { - return; - } - var eventKey = "on" + eventName; - var eventPacket = makeEventPacket2(eventName, targetInfo, event); - while (el) { - el[eventKey] && (eventPacket.cancelBubble = !!el[eventKey].call(el, eventPacket)); - el.trigger(eventName, eventPacket); - el = el.__hostTarget ? el.__hostTarget : el.parent; - if (eventPacket.cancelBubble) { - break; - } - } - if (!eventPacket.cancelBubble) { - this.trigger(eventName, eventPacket); - if (this.painter && this.painter.eachOtherLayer) { - this.painter.eachOtherLayer(function(layer) { - if (typeof layer[eventKey] === "function") { - layer[eventKey].call(layer, eventPacket); - } - if (layer.trigger) { - layer.trigger(eventName, eventPacket); - } - }); - } - } - }; - Handler3.prototype.findHover = function(x, y, exclude) { - var list = this.storage.getDisplayList(); - var out3 = new HoveredResult2(x, y); - setHoverTarget2(list, out3, x, y, exclude); - if (this._pointerSize && !out3.target) { - var candidates = []; - var pointerSize = this._pointerSize; - var targetSizeHalf = pointerSize / 2; - var pointerRect = new BoundingRect2(x - targetSizeHalf, y - targetSizeHalf, pointerSize, pointerSize); - for (var i2 = list.length - 1; i2 >= 0; i2--) { - var el = list[i2]; - if (el !== exclude && !el.ignore && !el.ignoreCoarsePointer && (!el.parent || !el.parent.ignoreCoarsePointer)) { - tmpRect3.copy(el.getBoundingRect()); - if (el.transform) { - tmpRect3.applyTransform(el.transform); - } - if (tmpRect3.intersect(pointerRect)) { - candidates.push(el); - } - } - } - if (candidates.length) { - var rStep = 4; - var thetaStep = Math.PI / 12; - var PI211 = Math.PI * 2; - for (var r = 0; r < targetSizeHalf; r += rStep) { - for (var theta = 0; theta < PI211; theta += thetaStep) { - var x1 = x + r * Math.cos(theta); - var y1 = y + r * Math.sin(theta); - setHoverTarget2(candidates, out3, x1, y1, exclude); - if (out3.target) { - return out3; - } - } - } - } - } - return out3; - }; - Handler3.prototype.processGesture = function(event, stage) { - if (!this._gestureMgr) { - this._gestureMgr = new GestureMgr2(); - } - var gestureMgr = this._gestureMgr; - stage === "start" && gestureMgr.clear(); - var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom); - stage === "end" && gestureMgr.clear(); - if (gestureInfo) { - var type = gestureInfo.type; - event.gestureEvent = type; - var res = new HoveredResult2(); - res.target = gestureInfo.target; - this.dispatchToElement(res, type, gestureInfo.event); - } - }; - return Handler3; - }(Eventful2); - each17(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function(name) { - Handler2.prototype[name] = function(event) { - var x = event.zrX; - var y = event.zrY; - var isOutside = isOutsideBoundary2(this, x, y); - var hovered; - var hoveredTarget; - if (name !== "mouseup" || !isOutside) { - hovered = this.findHover(x, y); - hoveredTarget = hovered.target; - } - if (name === "mousedown") { - this._downEl = hoveredTarget; - this._downPoint = [event.zrX, event.zrY]; - this._upEl = hoveredTarget; - } else if (name === "mouseup") { - this._upEl = hoveredTarget; - } else if (name === "click") { - if (this._downEl !== this._upEl || !this._downPoint || dist3(this._downPoint, [event.zrX, event.zrY]) > 4) { - return; - } - this._downPoint = null; - } - this.dispatchToElement(hovered, name, event); - }; - }); - function isHover2(displayable, x, y) { - if (displayable[displayable.rectHover ? "rectContain" : "contain"](x, y)) { - var el = displayable; - var isSilent = void 0; - var ignoreClip = false; - while (el) { - if (el.ignoreClip) { - ignoreClip = true; - } - if (!ignoreClip) { - var clipPath = el.getClipPath(); - if (clipPath && !clipPath.contain(x, y)) { - return false; - } - } - if (el.silent) { - isSilent = true; - } - var hostEl = el.__hostTarget; - el = hostEl ? hostEl : el.parent; - } - return isSilent ? SILENT2 : true; - } - return false; - } - function setHoverTarget2(list, out3, x, y, exclude) { - for (var i2 = list.length - 1; i2 >= 0; i2--) { - var el = list[i2]; - var hoverCheckResult = void 0; - if (el !== exclude && !el.ignore && (hoverCheckResult = isHover2(el, x, y))) { - !out3.topTarget && (out3.topTarget = el); - if (hoverCheckResult !== SILENT2) { - out3.target = el; - break; - } - } - } - } - function isOutsideBoundary2(handlerInstance, x, y) { - var painter = handlerInstance.painter; - return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight(); - } - var DEFAULT_MIN_MERGE2 = 32; - var DEFAULT_MIN_GALLOPING2 = 7; - function minRunLength2(n) { - var r = 0; - while (n >= DEFAULT_MIN_MERGE2) { - r |= n & 1; - n >>= 1; - } - return n + r; - } - function makeAscendingRun2(array, lo, hi, compare3) { - var runHi = lo + 1; - if (runHi === hi) { - return 1; - } - if (compare3(array[runHi++], array[lo]) < 0) { - while (runHi < hi && compare3(array[runHi], array[runHi - 1]) < 0) { - runHi++; - } - reverseRun2(array, lo, runHi); - } else { - while (runHi < hi && compare3(array[runHi], array[runHi - 1]) >= 0) { - runHi++; - } - } - return runHi - lo; - } - function reverseRun2(array, lo, hi) { - hi--; - while (lo < hi) { - var t = array[lo]; - array[lo++] = array[hi]; - array[hi--] = t; - } - } - function binaryInsertionSort2(array, lo, hi, start4, compare3) { - if (start4 === lo) { - start4++; - } - for (; start4 < hi; start4++) { - var pivot = array[start4]; - var left = lo; - var right = start4; - var mid; - while (left < right) { - mid = left + right >>> 1; - if (compare3(pivot, array[mid]) < 0) { - right = mid; - } else { - left = mid + 1; - } - } - var n = start4 - left; - switch (n) { - case 3: - array[left + 3] = array[left + 2]; - case 2: - array[left + 2] = array[left + 1]; - case 1: - array[left + 1] = array[left]; - break; - default: - while (n > 0) { - array[left + n] = array[left + n - 1]; - n--; - } - } - array[left] = pivot; - } - } - function gallopLeft2(value, array, start4, length3, hint, compare3) { - var lastOffset = 0; - var maxOffset = 0; - var offset3 = 1; - if (compare3(value, array[start4 + hint]) > 0) { - maxOffset = length3 - hint; - while (offset3 < maxOffset && compare3(value, array[start4 + hint + offset3]) > 0) { - lastOffset = offset3; - offset3 = (offset3 << 1) + 1; - if (offset3 <= 0) { - offset3 = maxOffset; - } - } - if (offset3 > maxOffset) { - offset3 = maxOffset; - } - lastOffset += hint; - offset3 += hint; - } else { - maxOffset = hint + 1; - while (offset3 < maxOffset && compare3(value, array[start4 + hint - offset3]) <= 0) { - lastOffset = offset3; - offset3 = (offset3 << 1) + 1; - if (offset3 <= 0) { - offset3 = maxOffset; - } - } - if (offset3 > maxOffset) { - offset3 = maxOffset; - } - var tmp = lastOffset; - lastOffset = hint - offset3; - offset3 = hint - tmp; - } - lastOffset++; - while (lastOffset < offset3) { - var m3 = lastOffset + (offset3 - lastOffset >>> 1); - if (compare3(value, array[start4 + m3]) > 0) { - lastOffset = m3 + 1; - } else { - offset3 = m3; - } - } - return offset3; - } - function gallopRight2(value, array, start4, length3, hint, compare3) { - var lastOffset = 0; - var maxOffset = 0; - var offset3 = 1; - if (compare3(value, array[start4 + hint]) < 0) { - maxOffset = hint + 1; - while (offset3 < maxOffset && compare3(value, array[start4 + hint - offset3]) < 0) { - lastOffset = offset3; - offset3 = (offset3 << 1) + 1; - if (offset3 <= 0) { - offset3 = maxOffset; - } - } - if (offset3 > maxOffset) { - offset3 = maxOffset; - } - var tmp = lastOffset; - lastOffset = hint - offset3; - offset3 = hint - tmp; - } else { - maxOffset = length3 - hint; - while (offset3 < maxOffset && compare3(value, array[start4 + hint + offset3]) >= 0) { - lastOffset = offset3; - offset3 = (offset3 << 1) + 1; - if (offset3 <= 0) { - offset3 = maxOffset; - } - } - if (offset3 > maxOffset) { - offset3 = maxOffset; - } - lastOffset += hint; - offset3 += hint; - } - lastOffset++; - while (lastOffset < offset3) { - var m3 = lastOffset + (offset3 - lastOffset >>> 1); - if (compare3(value, array[start4 + m3]) < 0) { - offset3 = m3; - } else { - lastOffset = m3 + 1; - } - } - return offset3; - } - function TimSort2(array, compare3) { - var minGallop = DEFAULT_MIN_GALLOPING2; - var runStart; - var runLength; - var stackSize = 0; - var tmp = []; - runStart = []; - runLength = []; - function pushRun(_runStart, _runLength) { - runStart[stackSize] = _runStart; - runLength[stackSize] = _runLength; - stackSize += 1; - } - function mergeRuns() { - while (stackSize > 1) { - var n = stackSize - 2; - if (n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1] || n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1]) { - if (runLength[n - 1] < runLength[n + 1]) { - n--; - } - } else if (runLength[n] > runLength[n + 1]) { - break; - } - mergeAt(n); - } - } - function forceMergeRuns() { - while (stackSize > 1) { - var n = stackSize - 2; - if (n > 0 && runLength[n - 1] < runLength[n + 1]) { - n--; - } - mergeAt(n); - } - } - function mergeAt(i2) { - var start1 = runStart[i2]; - var length1 = runLength[i2]; - var start22 = runStart[i2 + 1]; - var length22 = runLength[i2 + 1]; - runLength[i2] = length1 + length22; - if (i2 === stackSize - 3) { - runStart[i2 + 1] = runStart[i2 + 2]; - runLength[i2 + 1] = runLength[i2 + 2]; - } - stackSize--; - var k2 = gallopRight2(array[start22], array, start1, length1, 0, compare3); - start1 += k2; - length1 -= k2; - if (length1 === 0) { - return; - } - length22 = gallopLeft2(array[start1 + length1 - 1], array, start22, length22, length22 - 1, compare3); - if (length22 === 0) { - return; - } - if (length1 <= length22) { - mergeLow(start1, length1, start22, length22); - } else { - mergeHigh(start1, length1, start22, length22); - } - } - function mergeLow(start1, length1, start22, length22) { - var i2 = 0; - for (i2 = 0; i2 < length1; i2++) { - tmp[i2] = array[start1 + i2]; - } - var cursor1 = 0; - var cursor2 = start22; - var dest = start1; - array[dest++] = array[cursor2++]; - if (--length22 === 0) { - for (i2 = 0; i2 < length1; i2++) { - array[dest + i2] = tmp[cursor1 + i2]; - } - return; - } - if (length1 === 1) { - for (i2 = 0; i2 < length22; i2++) { - array[dest + i2] = array[cursor2 + i2]; - } - array[dest + length22] = tmp[cursor1]; - return; - } - var _minGallop = minGallop; - var count1; - var count22; - var exit; - while (1) { - count1 = 0; - count22 = 0; - exit = false; - do { - if (compare3(array[cursor2], tmp[cursor1]) < 0) { - array[dest++] = array[cursor2++]; - count22++; - count1 = 0; - if (--length22 === 0) { - exit = true; - break; - } - } else { - array[dest++] = tmp[cursor1++]; - count1++; - count22 = 0; - if (--length1 === 1) { - exit = true; - break; - } - } - } while ((count1 | count22) < _minGallop); - if (exit) { - break; - } - do { - count1 = gallopRight2(array[cursor2], tmp, cursor1, length1, 0, compare3); - if (count1 !== 0) { - for (i2 = 0; i2 < count1; i2++) { - array[dest + i2] = tmp[cursor1 + i2]; - } - dest += count1; - cursor1 += count1; - length1 -= count1; - if (length1 <= 1) { - exit = true; - break; - } - } - array[dest++] = array[cursor2++]; - if (--length22 === 0) { - exit = true; - break; - } - count22 = gallopLeft2(tmp[cursor1], array, cursor2, length22, 0, compare3); - if (count22 !== 0) { - for (i2 = 0; i2 < count22; i2++) { - array[dest + i2] = array[cursor2 + i2]; - } - dest += count22; - cursor2 += count22; - length22 -= count22; - if (length22 === 0) { - exit = true; - break; - } - } - array[dest++] = tmp[cursor1++]; - if (--length1 === 1) { - exit = true; - break; - } - _minGallop--; - } while (count1 >= DEFAULT_MIN_GALLOPING2 || count22 >= DEFAULT_MIN_GALLOPING2); - if (exit) { - break; - } - if (_minGallop < 0) { - _minGallop = 0; - } - _minGallop += 2; - } - minGallop = _minGallop; - minGallop < 1 && (minGallop = 1); - if (length1 === 1) { - for (i2 = 0; i2 < length22; i2++) { - array[dest + i2] = array[cursor2 + i2]; - } - array[dest + length22] = tmp[cursor1]; - } else if (length1 === 0) { - throw new Error(); - } else { - for (i2 = 0; i2 < length1; i2++) { - array[dest + i2] = tmp[cursor1 + i2]; - } - } - } - function mergeHigh(start1, length1, start22, length22) { - var i2 = 0; - for (i2 = 0; i2 < length22; i2++) { - tmp[i2] = array[start22 + i2]; - } - var cursor1 = start1 + length1 - 1; - var cursor2 = length22 - 1; - var dest = start22 + length22 - 1; - var customCursor = 0; - var customDest = 0; - array[dest--] = array[cursor1--]; - if (--length1 === 0) { - customCursor = dest - (length22 - 1); - for (i2 = 0; i2 < length22; i2++) { - array[customCursor + i2] = tmp[i2]; - } - return; - } - if (length22 === 1) { - dest -= length1; - cursor1 -= length1; - customDest = dest + 1; - customCursor = cursor1 + 1; - for (i2 = length1 - 1; i2 >= 0; i2--) { - array[customDest + i2] = array[customCursor + i2]; - } - array[dest] = tmp[cursor2]; - return; - } - var _minGallop = minGallop; - while (true) { - var count1 = 0; - var count22 = 0; - var exit = false; - do { - if (compare3(tmp[cursor2], array[cursor1]) < 0) { - array[dest--] = array[cursor1--]; - count1++; - count22 = 0; - if (--length1 === 0) { - exit = true; - break; - } - } else { - array[dest--] = tmp[cursor2--]; - count22++; - count1 = 0; - if (--length22 === 1) { - exit = true; - break; - } - } - } while ((count1 | count22) < _minGallop); - if (exit) { - break; - } - do { - count1 = length1 - gallopRight2(tmp[cursor2], array, start1, length1, length1 - 1, compare3); - if (count1 !== 0) { - dest -= count1; - cursor1 -= count1; - length1 -= count1; - customDest = dest + 1; - customCursor = cursor1 + 1; - for (i2 = count1 - 1; i2 >= 0; i2--) { - array[customDest + i2] = array[customCursor + i2]; - } - if (length1 === 0) { - exit = true; - break; - } - } - array[dest--] = tmp[cursor2--]; - if (--length22 === 1) { - exit = true; - break; - } - count22 = length22 - gallopLeft2(array[cursor1], tmp, 0, length22, length22 - 1, compare3); - if (count22 !== 0) { - dest -= count22; - cursor2 -= count22; - length22 -= count22; - customDest = dest + 1; - customCursor = cursor2 + 1; - for (i2 = 0; i2 < count22; i2++) { - array[customDest + i2] = tmp[customCursor + i2]; - } - if (length22 <= 1) { - exit = true; - break; - } - } - array[dest--] = array[cursor1--]; - if (--length1 === 0) { - exit = true; - break; - } - _minGallop--; - } while (count1 >= DEFAULT_MIN_GALLOPING2 || count22 >= DEFAULT_MIN_GALLOPING2); - if (exit) { - break; - } - if (_minGallop < 0) { - _minGallop = 0; - } - _minGallop += 2; - } - minGallop = _minGallop; - if (minGallop < 1) { - minGallop = 1; - } - if (length22 === 1) { - dest -= length1; - cursor1 -= length1; - customDest = dest + 1; - customCursor = cursor1 + 1; - for (i2 = length1 - 1; i2 >= 0; i2--) { - array[customDest + i2] = array[customCursor + i2]; - } - array[dest] = tmp[cursor2]; - } else if (length22 === 0) { - throw new Error(); - } else { - customCursor = dest - (length22 - 1); - for (i2 = 0; i2 < length22; i2++) { - array[customCursor + i2] = tmp[i2]; - } - } - } - return { - mergeRuns, - forceMergeRuns, - pushRun - }; - } - function sort4(array, compare3, lo, hi) { - if (!lo) { - lo = 0; - } - if (!hi) { - hi = array.length; - } - var remaining = hi - lo; - if (remaining < 2) { - return; - } - var runLength = 0; - if (remaining < DEFAULT_MIN_MERGE2) { - runLength = makeAscendingRun2(array, lo, hi, compare3); - binaryInsertionSort2(array, lo, hi, lo + runLength, compare3); - return; - } - var ts = TimSort2(array, compare3); - var minRun = minRunLength2(remaining); - do { - runLength = makeAscendingRun2(array, lo, hi, compare3); - if (runLength < minRun) { - var force = remaining; - if (force > minRun) { - force = minRun; - } - binaryInsertionSort2(array, lo, lo + force, lo + runLength, compare3); - runLength = force; - } - ts.pushRun(lo, runLength); - ts.mergeRuns(); - remaining -= runLength; - lo += runLength; - } while (remaining !== 0); - ts.forceMergeRuns(); - } - var REDRAW_BIT2 = 1; - var STYLE_CHANGED_BIT2 = 2; - var SHAPE_CHANGED_BIT2 = 4; - var invalidZErrorLogged2 = false; - function logInvalidZError2() { - if (invalidZErrorLogged2) { - return; - } - invalidZErrorLogged2 = true; - console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"); - } - function shapeCompareFunc2(a, b) { - if (a.zlevel === b.zlevel) { - if (a.z === b.z) { - return a.z2 - b.z2; - } - return a.z - b.z; - } - return a.zlevel - b.zlevel; - } - var Storage2 = function() { - function Storage3() { - this._roots = []; - this._displayList = []; - this._displayListLen = 0; - this.displayableSortFunc = shapeCompareFunc2; - } - Storage3.prototype.traverse = function(cb, context) { - for (var i2 = 0; i2 < this._roots.length; i2++) { - this._roots[i2].traverse(cb, context); - } - }; - Storage3.prototype.getDisplayList = function(update, includeIgnore) { - includeIgnore = includeIgnore || false; - var displayList = this._displayList; - if (update || !displayList.length) { - this.updateDisplayList(includeIgnore); - } - return displayList; - }; - Storage3.prototype.updateDisplayList = function(includeIgnore) { - this._displayListLen = 0; - var roots3 = this._roots; - var displayList = this._displayList; - for (var i2 = 0, len3 = roots3.length; i2 < len3; i2++) { - this._updateAndAddDisplayable(roots3[i2], null, includeIgnore); - } - displayList.length = this._displayListLen; - sort4(displayList, shapeCompareFunc2); - }; - Storage3.prototype._updateAndAddDisplayable = function(el, clipPaths, includeIgnore) { - if (el.ignore && !includeIgnore) { - return; - } - el.beforeUpdate(); - el.update(); - el.afterUpdate(); - var userSetClipPath = el.getClipPath(); - if (el.ignoreClip) { - clipPaths = null; - } else if (userSetClipPath) { - if (clipPaths) { - clipPaths = clipPaths.slice(); - } else { - clipPaths = []; - } - var currentClipPath = userSetClipPath; - var parentClipPath = el; - while (currentClipPath) { - currentClipPath.parent = parentClipPath; - currentClipPath.updateTransform(); - clipPaths.push(currentClipPath); - parentClipPath = currentClipPath; - currentClipPath = currentClipPath.getClipPath(); - } - } - if (el.childrenRef) { - var children = el.childrenRef(); - for (var i2 = 0; i2 < children.length; i2++) { - var child = children[i2]; - if (el.__dirty) { - child.__dirty |= REDRAW_BIT2; - } - this._updateAndAddDisplayable(child, clipPaths, includeIgnore); - } - el.__dirty = 0; - } else { - var disp = el; - if (clipPaths && clipPaths.length) { - disp.__clipPaths = clipPaths; - } else if (disp.__clipPaths && disp.__clipPaths.length > 0) { - disp.__clipPaths = []; - } - if (isNaN(disp.z)) { - logInvalidZError2(); - disp.z = 0; - } - if (isNaN(disp.z2)) { - logInvalidZError2(); - disp.z2 = 0; - } - if (isNaN(disp.zlevel)) { - logInvalidZError2(); - disp.zlevel = 0; - } - this._displayList[this._displayListLen++] = disp; - } - var decalEl = el.getDecalElement && el.getDecalElement(); - if (decalEl) { - this._updateAndAddDisplayable(decalEl, clipPaths, includeIgnore); - } - var textGuide = el.getTextGuideLine(); - if (textGuide) { - this._updateAndAddDisplayable(textGuide, clipPaths, includeIgnore); - } - var textEl = el.getTextContent(); - if (textEl) { - this._updateAndAddDisplayable(textEl, clipPaths, includeIgnore); - } - }; - Storage3.prototype.addRoot = function(el) { - if (el.__zr && el.__zr.storage === this) { - return; - } - this._roots.push(el); - }; - Storage3.prototype.delRoot = function(el) { - if (el instanceof Array) { - for (var i2 = 0, l = el.length; i2 < l; i2++) { - this.delRoot(el[i2]); - } - return; - } - var idx = indexOf2(this._roots, el); - if (idx >= 0) { - this._roots.splice(idx, 1); - } - }; - Storage3.prototype.delAllRoots = function() { - this._roots = []; - this._displayList = []; - this._displayListLen = 0; - return; - }; - Storage3.prototype.getRoots = function() { - return this._roots; - }; - Storage3.prototype.dispose = function() { - this._displayList = null; - this._roots = null; - }; - return Storage3; - }(); - var requestAnimationFrame3; - requestAnimationFrame3 = env2.hasGlobalWindow && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function(func) { - return setTimeout(func, 16); - }; - var requestAnimationFrame$1 = requestAnimationFrame3; - var easingFuncs2 = { - linear: function(k2) { - return k2; - }, - quadraticIn: function(k2) { - return k2 * k2; - }, - quadraticOut: function(k2) { - return k2 * (2 - k2); - }, - quadraticInOut: function(k2) { - if ((k2 *= 2) < 1) { - return 0.5 * k2 * k2; - } - return -0.5 * (--k2 * (k2 - 2) - 1); - }, - cubicIn: function(k2) { - return k2 * k2 * k2; - }, - cubicOut: function(k2) { - return --k2 * k2 * k2 + 1; - }, - cubicInOut: function(k2) { - if ((k2 *= 2) < 1) { - return 0.5 * k2 * k2 * k2; - } - return 0.5 * ((k2 -= 2) * k2 * k2 + 2); - }, - quarticIn: function(k2) { - return k2 * k2 * k2 * k2; - }, - quarticOut: function(k2) { - return 1 - --k2 * k2 * k2 * k2; - }, - quarticInOut: function(k2) { - if ((k2 *= 2) < 1) { - return 0.5 * k2 * k2 * k2 * k2; - } - return -0.5 * ((k2 -= 2) * k2 * k2 * k2 - 2); - }, - quinticIn: function(k2) { - return k2 * k2 * k2 * k2 * k2; - }, - quinticOut: function(k2) { - return --k2 * k2 * k2 * k2 * k2 + 1; - }, - quinticInOut: function(k2) { - if ((k2 *= 2) < 1) { - return 0.5 * k2 * k2 * k2 * k2 * k2; - } - return 0.5 * ((k2 -= 2) * k2 * k2 * k2 * k2 + 2); - }, - sinusoidalIn: function(k2) { - return 1 - Math.cos(k2 * Math.PI / 2); - }, - sinusoidalOut: function(k2) { - return Math.sin(k2 * Math.PI / 2); - }, - sinusoidalInOut: function(k2) { - return 0.5 * (1 - Math.cos(Math.PI * k2)); - }, - exponentialIn: function(k2) { - return k2 === 0 ? 0 : Math.pow(1024, k2 - 1); - }, - exponentialOut: function(k2) { - return k2 === 1 ? 1 : 1 - Math.pow(2, -10 * k2); - }, - exponentialInOut: function(k2) { - if (k2 === 0) { - return 0; - } - if (k2 === 1) { - return 1; - } - if ((k2 *= 2) < 1) { - return 0.5 * Math.pow(1024, k2 - 1); - } - return 0.5 * (-Math.pow(2, -10 * (k2 - 1)) + 2); - }, - circularIn: function(k2) { - return 1 - Math.sqrt(1 - k2 * k2); - }, - circularOut: function(k2) { - return Math.sqrt(1 - --k2 * k2); - }, - circularInOut: function(k2) { - if ((k2 *= 2) < 1) { - return -0.5 * (Math.sqrt(1 - k2 * k2) - 1); - } - return 0.5 * (Math.sqrt(1 - (k2 -= 2) * k2) + 1); - }, - elasticIn: function(k2) { - var s; - var a = 0.1; - var p = 0.4; - if (k2 === 0) { - return 0; - } - if (k2 === 1) { - return 1; - } - if (!a || a < 1) { - a = 1; - s = p / 4; - } else { - s = p * Math.asin(1 / a) / (2 * Math.PI); - } - return -(a * Math.pow(2, 10 * (k2 -= 1)) * Math.sin((k2 - s) * (2 * Math.PI) / p)); - }, - elasticOut: function(k2) { - var s; - var a = 0.1; - var p = 0.4; - if (k2 === 0) { - return 0; - } - if (k2 === 1) { - return 1; - } - if (!a || a < 1) { - a = 1; - s = p / 4; - } else { - s = p * Math.asin(1 / a) / (2 * Math.PI); - } - return a * Math.pow(2, -10 * k2) * Math.sin((k2 - s) * (2 * Math.PI) / p) + 1; - }, - elasticInOut: function(k2) { - var s; - var a = 0.1; - var p = 0.4; - if (k2 === 0) { - return 0; - } - if (k2 === 1) { - return 1; - } - if (!a || a < 1) { - a = 1; - s = p / 4; - } else { - s = p * Math.asin(1 / a) / (2 * Math.PI); - } - if ((k2 *= 2) < 1) { - return -0.5 * (a * Math.pow(2, 10 * (k2 -= 1)) * Math.sin((k2 - s) * (2 * Math.PI) / p)); - } - return a * Math.pow(2, -10 * (k2 -= 1)) * Math.sin((k2 - s) * (2 * Math.PI) / p) * 0.5 + 1; - }, - backIn: function(k2) { - var s = 1.70158; - return k2 * k2 * ((s + 1) * k2 - s); - }, - backOut: function(k2) { - var s = 1.70158; - return --k2 * k2 * ((s + 1) * k2 + s) + 1; - }, - backInOut: function(k2) { - var s = 1.70158 * 1.525; - if ((k2 *= 2) < 1) { - return 0.5 * (k2 * k2 * ((s + 1) * k2 - s)); - } - return 0.5 * ((k2 -= 2) * k2 * ((s + 1) * k2 + s) + 2); - }, - bounceIn: function(k2) { - return 1 - easingFuncs2.bounceOut(1 - k2); - }, - bounceOut: function(k2) { - if (k2 < 1 / 2.75) { - return 7.5625 * k2 * k2; - } else if (k2 < 2 / 2.75) { - return 7.5625 * (k2 -= 1.5 / 2.75) * k2 + 0.75; - } else if (k2 < 2.5 / 2.75) { - return 7.5625 * (k2 -= 2.25 / 2.75) * k2 + 0.9375; - } else { - return 7.5625 * (k2 -= 2.625 / 2.75) * k2 + 0.984375; - } - }, - bounceInOut: function(k2) { - if (k2 < 0.5) { - return easingFuncs2.bounceIn(k2 * 2) * 0.5; - } - return easingFuncs2.bounceOut(k2 * 2 - 1) * 0.5 + 0.5; - } - }; - var mathPow4 = Math.pow; - var mathSqrt5 = Math.sqrt; - var EPSILON6 = 1e-8; - var EPSILON_NUMERIC2 = 1e-4; - var THREE_SQRT2 = mathSqrt5(3); - var ONE_THIRD2 = 1 / 3; - var _v02 = create4(); - var _v12 = create4(); - var _v22 = create4(); - function isAroundZero3(val) { - return val > -EPSILON6 && val < EPSILON6; - } - function isNotAroundZero3(val) { - return val > EPSILON6 || val < -EPSILON6; - } - function cubicAt2(p0, p1, p2, p3, t) { - var onet = 1 - t; - return onet * onet * (onet * p0 + 3 * t * p1) + t * t * (t * p3 + 3 * onet * p2); - } - function cubicDerivativeAt2(p0, p1, p2, p3, t) { - var onet = 1 - t; - return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet + (p3 - p2) * t * t); - } - function cubicRootAt2(p0, p1, p2, p3, val, roots3) { - var a = p3 + 3 * (p1 - p2) - p0; - var b = 3 * (p2 - p1 * 2 + p0); - var c = 3 * (p1 - p0); - var d = p0 - val; - var A = b * b - 3 * a * c; - var B = b * c - 9 * a * d; - var C = c * c - 3 * b * d; - var n = 0; - if (isAroundZero3(A) && isAroundZero3(B)) { - if (isAroundZero3(b)) { - roots3[0] = 0; - } else { - var t1 = -c / b; - if (t1 >= 0 && t1 <= 1) { - roots3[n++] = t1; - } - } - } else { - var disc = B * B - 4 * A * C; - if (isAroundZero3(disc)) { - var K = B / A; - var t1 = -b / a + K; - var t2 = -K / 2; - if (t1 >= 0 && t1 <= 1) { - roots3[n++] = t1; - } - if (t2 >= 0 && t2 <= 1) { - roots3[n++] = t2; - } - } else if (disc > 0) { - var discSqrt = mathSqrt5(disc); - var Y1 = A * b + 1.5 * a * (-B + discSqrt); - var Y2 = A * b + 1.5 * a * (-B - discSqrt); - if (Y1 < 0) { - Y1 = -mathPow4(-Y1, ONE_THIRD2); - } else { - Y1 = mathPow4(Y1, ONE_THIRD2); - } - if (Y2 < 0) { - Y2 = -mathPow4(-Y2, ONE_THIRD2); - } else { - Y2 = mathPow4(Y2, ONE_THIRD2); - } - var t1 = (-b - (Y1 + Y2)) / (3 * a); - if (t1 >= 0 && t1 <= 1) { - roots3[n++] = t1; - } - } else { - var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt5(A * A * A)); - var theta = Math.acos(T) / 3; - var ASqrt = mathSqrt5(A); - var tmp = Math.cos(theta); - var t1 = (-b - 2 * ASqrt * tmp) / (3 * a); - var t2 = (-b + ASqrt * (tmp + THREE_SQRT2 * Math.sin(theta))) / (3 * a); - var t3 = (-b + ASqrt * (tmp - THREE_SQRT2 * Math.sin(theta))) / (3 * a); - if (t1 >= 0 && t1 <= 1) { - roots3[n++] = t1; - } - if (t2 >= 0 && t2 <= 1) { - roots3[n++] = t2; - } - if (t3 >= 0 && t3 <= 1) { - roots3[n++] = t3; - } - } - } - return n; - } - function cubicExtrema2(p0, p1, p2, p3, extrema3) { - var b = 6 * p2 - 12 * p1 + 6 * p0; - var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2; - var c = 3 * p1 - 3 * p0; - var n = 0; - if (isAroundZero3(a)) { - if (isNotAroundZero3(b)) { - var t1 = -c / b; - if (t1 >= 0 && t1 <= 1) { - extrema3[n++] = t1; - } - } - } else { - var disc = b * b - 4 * a * c; - if (isAroundZero3(disc)) { - extrema3[0] = -b / (2 * a); - } else if (disc > 0) { - var discSqrt = mathSqrt5(disc); - var t1 = (-b + discSqrt) / (2 * a); - var t2 = (-b - discSqrt) / (2 * a); - if (t1 >= 0 && t1 <= 1) { - extrema3[n++] = t1; - } - if (t2 >= 0 && t2 <= 1) { - extrema3[n++] = t2; - } - } - } - return n; - } - function cubicSubdivide2(p0, p1, p2, p3, t, out3) { - var p01 = (p1 - p0) * t + p0; - var p12 = (p2 - p1) * t + p1; - var p23 = (p3 - p2) * t + p2; - var p012 = (p12 - p01) * t + p01; - var p123 = (p23 - p12) * t + p12; - var p0123 = (p123 - p012) * t + p012; - out3[0] = p0; - out3[1] = p01; - out3[2] = p012; - out3[3] = p0123; - out3[4] = p0123; - out3[5] = p123; - out3[6] = p23; - out3[7] = p3; - } - function cubicProjectPoint2(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out3) { - var t; - var interval = 5e-3; - var d = Infinity; - var prev; - var next; - var d1; - var d2; - _v02[0] = x; - _v02[1] = y; - for (var _t = 0; _t < 1; _t += 0.05) { - _v12[0] = cubicAt2(x0, x1, x2, x3, _t); - _v12[1] = cubicAt2(y0, y1, y2, y3, _t); - d1 = distSquare2(_v02, _v12); - if (d1 < d) { - t = _t; - d = d1; - } - } - d = Infinity; - for (var i2 = 0; i2 < 32; i2++) { - if (interval < EPSILON_NUMERIC2) { - break; - } - prev = t - interval; - next = t + interval; - _v12[0] = cubicAt2(x0, x1, x2, x3, prev); - _v12[1] = cubicAt2(y0, y1, y2, y3, prev); - d1 = distSquare2(_v12, _v02); - if (prev >= 0 && d1 < d) { - t = prev; - d = d1; - } else { - _v22[0] = cubicAt2(x0, x1, x2, x3, next); - _v22[1] = cubicAt2(y0, y1, y2, y3, next); - d2 = distSquare2(_v22, _v02); - if (next <= 1 && d2 < d) { - t = next; - d = d2; - } else { - interval *= 0.5; - } - } - } - if (out3) { - out3[0] = cubicAt2(x0, x1, x2, x3, t); - out3[1] = cubicAt2(y0, y1, y2, y3, t); - } - return mathSqrt5(d); - } - function cubicLength2(x0, y0, x1, y1, x2, y2, x3, y3, iteration) { - var px = x0; - var py = y0; - var d = 0; - var step = 1 / iteration; - for (var i2 = 1; i2 <= iteration; i2++) { - var t = i2 * step; - var x = cubicAt2(x0, x1, x2, x3, t); - var y = cubicAt2(y0, y1, y2, y3, t); - var dx = x - px; - var dy = y - py; - d += Math.sqrt(dx * dx + dy * dy); - px = x; - py = y; - } - return d; - } - function quadraticAt3(p0, p1, p2, t) { - var onet = 1 - t; - return onet * (onet * p0 + 2 * t * p1) + t * t * p2; - } - function quadraticDerivativeAt2(p0, p1, p2, t) { - return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1)); - } - function quadraticRootAt2(p0, p1, p2, val, roots3) { - var a = p0 - 2 * p1 + p2; - var b = 2 * (p1 - p0); - var c = p0 - val; - var n = 0; - if (isAroundZero3(a)) { - if (isNotAroundZero3(b)) { - var t1 = -c / b; - if (t1 >= 0 && t1 <= 1) { - roots3[n++] = t1; - } - } - } else { - var disc = b * b - 4 * a * c; - if (isAroundZero3(disc)) { - var t1 = -b / (2 * a); - if (t1 >= 0 && t1 <= 1) { - roots3[n++] = t1; - } - } else if (disc > 0) { - var discSqrt = mathSqrt5(disc); - var t1 = (-b + discSqrt) / (2 * a); - var t2 = (-b - discSqrt) / (2 * a); - if (t1 >= 0 && t1 <= 1) { - roots3[n++] = t1; - } - if (t2 >= 0 && t2 <= 1) { - roots3[n++] = t2; - } - } - } - return n; - } - function quadraticExtremum2(p0, p1, p2) { - var divider = p0 + p2 - 2 * p1; - if (divider === 0) { - return 0.5; - } else { - return (p0 - p1) / divider; - } - } - function quadraticSubdivide2(p0, p1, p2, t, out3) { - var p01 = (p1 - p0) * t + p0; - var p12 = (p2 - p1) * t + p1; - var p012 = (p12 - p01) * t + p01; - out3[0] = p0; - out3[1] = p01; - out3[2] = p012; - out3[3] = p012; - out3[4] = p12; - out3[5] = p2; - } - function quadraticProjectPoint2(x0, y0, x1, y1, x2, y2, x, y, out3) { - var t; - var interval = 5e-3; - var d = Infinity; - _v02[0] = x; - _v02[1] = y; - for (var _t = 0; _t < 1; _t += 0.05) { - _v12[0] = quadraticAt3(x0, x1, x2, _t); - _v12[1] = quadraticAt3(y0, y1, y2, _t); - var d1 = distSquare2(_v02, _v12); - if (d1 < d) { - t = _t; - d = d1; - } - } - d = Infinity; - for (var i2 = 0; i2 < 32; i2++) { - if (interval < EPSILON_NUMERIC2) { - break; - } - var prev = t - interval; - var next = t + interval; - _v12[0] = quadraticAt3(x0, x1, x2, prev); - _v12[1] = quadraticAt3(y0, y1, y2, prev); - var d1 = distSquare2(_v12, _v02); - if (prev >= 0 && d1 < d) { - t = prev; - d = d1; - } else { - _v22[0] = quadraticAt3(x0, x1, x2, next); - _v22[1] = quadraticAt3(y0, y1, y2, next); - var d2 = distSquare2(_v22, _v02); - if (next <= 1 && d2 < d) { - t = next; - d = d2; - } else { - interval *= 0.5; - } - } - } - if (out3) { - out3[0] = quadraticAt3(x0, x1, x2, t); - out3[1] = quadraticAt3(y0, y1, y2, t); - } - return mathSqrt5(d); - } - function quadraticLength2(x0, y0, x1, y1, x2, y2, iteration) { - var px = x0; - var py = y0; - var d = 0; - var step = 1 / iteration; - for (var i2 = 1; i2 <= iteration; i2++) { - var t = i2 * step; - var x = quadraticAt3(x0, x1, x2, t); - var y = quadraticAt3(y0, y1, y2, t); - var dx = x - px; - var dy = y - py; - d += Math.sqrt(dx * dx + dy * dy); - px = x; - py = y; - } - return d; - } - var regexp2 = /cubic-bezier\(([0-9,\.e ]+)\)/; - function createCubicEasingFunc2(cubicEasingStr) { - var cubic = cubicEasingStr && regexp2.exec(cubicEasingStr); - if (cubic) { - var points5 = cubic[1].split(","); - var a_1 = +trim3(points5[0]); - var b_1 = +trim3(points5[1]); - var c_1 = +trim3(points5[2]); - var d_1 = +trim3(points5[3]); - if (isNaN(a_1 + b_1 + c_1 + d_1)) { - return; - } - var roots_1 = []; - return function(p) { - return p <= 0 ? 0 : p >= 1 ? 1 : cubicRootAt2(0, a_1, c_1, 1, p, roots_1) && cubicAt2(0, b_1, d_1, 1, roots_1[0]); - }; - } - } - var Clip2 = function() { - function Clip3(opts) { - this._inited = false; - this._startTime = 0; - this._pausedTime = 0; - this._paused = false; - this._life = opts.life || 1e3; - this._delay = opts.delay || 0; - this.loop = opts.loop || false; - this.onframe = opts.onframe || noop2; - this.ondestroy = opts.ondestroy || noop2; - this.onrestart = opts.onrestart || noop2; - opts.easing && this.setEasing(opts.easing); - } - Clip3.prototype.step = function(globalTime, deltaTime) { - if (!this._inited) { - this._startTime = globalTime + this._delay; - this._inited = true; - } - if (this._paused) { - this._pausedTime += deltaTime; - return; - } - var life = this._life; - var elapsedTime = globalTime - this._startTime - this._pausedTime; - var percent = elapsedTime / life; - if (percent < 0) { - percent = 0; - } - percent = Math.min(percent, 1); - var easingFunc = this.easingFunc; - var schedule = easingFunc ? easingFunc(percent) : percent; - this.onframe(schedule); - if (percent === 1) { - if (this.loop) { - var remainder = elapsedTime % life; - this._startTime = globalTime - remainder; - this._pausedTime = 0; - this.onrestart(); - } else { - return true; - } - } - return false; - }; - Clip3.prototype.pause = function() { - this._paused = true; - }; - Clip3.prototype.resume = function() { - this._paused = false; - }; - Clip3.prototype.setEasing = function(easing) { - this.easing = easing; - this.easingFunc = isFunction2(easing) ? easing : easingFuncs2[easing] || createCubicEasingFunc2(easing); - }; - return Clip3; - }(); - var Entry2 = /* @__PURE__ */ function() { - function Entry3(val) { - this.value = val; - } - return Entry3; - }(); - var LinkedList2 = function() { - function LinkedList3() { - this._len = 0; - } - LinkedList3.prototype.insert = function(val) { - var entry = new Entry2(val); - this.insertEntry(entry); - return entry; - }; - LinkedList3.prototype.insertEntry = function(entry) { - if (!this.head) { - this.head = this.tail = entry; - } else { - this.tail.next = entry; - entry.prev = this.tail; - entry.next = null; - this.tail = entry; - } - this._len++; - }; - LinkedList3.prototype.remove = function(entry) { - var prev = entry.prev; - var next = entry.next; - if (prev) { - prev.next = next; - } else { - this.head = next; - } - if (next) { - next.prev = prev; - } else { - this.tail = prev; - } - entry.next = entry.prev = null; - this._len--; - }; - LinkedList3.prototype.len = function() { - return this._len; - }; - LinkedList3.prototype.clear = function() { - this.head = this.tail = null; - this._len = 0; - }; - return LinkedList3; - }(); - var LRU2 = function() { - function LRU3(maxSize) { - this._list = new LinkedList2(); - this._maxSize = 10; - this._map = {}; - this._maxSize = maxSize; - } - LRU3.prototype.put = function(key, value) { - var list = this._list; - var map4 = this._map; - var removed = null; - if (map4[key] == null) { - var len3 = list.len(); - var entry = this._lastRemovedEntry; - if (len3 >= this._maxSize && len3 > 0) { - var leastUsedEntry = list.head; - list.remove(leastUsedEntry); - delete map4[leastUsedEntry.key]; - removed = leastUsedEntry.value; - this._lastRemovedEntry = leastUsedEntry; - } - if (entry) { - entry.value = value; - } else { - entry = new Entry2(value); - } - entry.key = key; - list.insertEntry(entry); - map4[key] = entry; - } - return removed; - }; - LRU3.prototype.get = function(key) { - var entry = this._map[key]; - var list = this._list; - if (entry != null) { - if (entry !== list.tail) { - list.remove(entry); - list.insertEntry(entry); - } - return entry.value; - } - }; - LRU3.prototype.clear = function() { - this._list.clear(); - this._map = {}; - }; - LRU3.prototype.len = function() { - return this._list.len(); - }; - return LRU3; - }(); - var kCSSColorTable2 = { - "transparent": [0, 0, 0, 0], - "aliceblue": [240, 248, 255, 1], - "antiquewhite": [250, 235, 215, 1], - "aqua": [0, 255, 255, 1], - "aquamarine": [127, 255, 212, 1], - "azure": [240, 255, 255, 1], - "beige": [245, 245, 220, 1], - "bisque": [255, 228, 196, 1], - "black": [0, 0, 0, 1], - "blanchedalmond": [255, 235, 205, 1], - "blue": [0, 0, 255, 1], - "blueviolet": [138, 43, 226, 1], - "brown": [165, 42, 42, 1], - "burlywood": [222, 184, 135, 1], - "cadetblue": [95, 158, 160, 1], - "chartreuse": [127, 255, 0, 1], - "chocolate": [210, 105, 30, 1], - "coral": [255, 127, 80, 1], - "cornflowerblue": [100, 149, 237, 1], - "cornsilk": [255, 248, 220, 1], - "crimson": [220, 20, 60, 1], - "cyan": [0, 255, 255, 1], - "darkblue": [0, 0, 139, 1], - "darkcyan": [0, 139, 139, 1], - "darkgoldenrod": [184, 134, 11, 1], - "darkgray": [169, 169, 169, 1], - "darkgreen": [0, 100, 0, 1], - "darkgrey": [169, 169, 169, 1], - "darkkhaki": [189, 183, 107, 1], - "darkmagenta": [139, 0, 139, 1], - "darkolivegreen": [85, 107, 47, 1], - "darkorange": [255, 140, 0, 1], - "darkorchid": [153, 50, 204, 1], - "darkred": [139, 0, 0, 1], - "darksalmon": [233, 150, 122, 1], - "darkseagreen": [143, 188, 143, 1], - "darkslateblue": [72, 61, 139, 1], - "darkslategray": [47, 79, 79, 1], - "darkslategrey": [47, 79, 79, 1], - "darkturquoise": [0, 206, 209, 1], - "darkviolet": [148, 0, 211, 1], - "deeppink": [255, 20, 147, 1], - "deepskyblue": [0, 191, 255, 1], - "dimgray": [105, 105, 105, 1], - "dimgrey": [105, 105, 105, 1], - "dodgerblue": [30, 144, 255, 1], - "firebrick": [178, 34, 34, 1], - "floralwhite": [255, 250, 240, 1], - "forestgreen": [34, 139, 34, 1], - "fuchsia": [255, 0, 255, 1], - "gainsboro": [220, 220, 220, 1], - "ghostwhite": [248, 248, 255, 1], - "gold": [255, 215, 0, 1], - "goldenrod": [218, 165, 32, 1], - "gray": [128, 128, 128, 1], - "green": [0, 128, 0, 1], - "greenyellow": [173, 255, 47, 1], - "grey": [128, 128, 128, 1], - "honeydew": [240, 255, 240, 1], - "hotpink": [255, 105, 180, 1], - "indianred": [205, 92, 92, 1], - "indigo": [75, 0, 130, 1], - "ivory": [255, 255, 240, 1], - "khaki": [240, 230, 140, 1], - "lavender": [230, 230, 250, 1], - "lavenderblush": [255, 240, 245, 1], - "lawngreen": [124, 252, 0, 1], - "lemonchiffon": [255, 250, 205, 1], - "lightblue": [173, 216, 230, 1], - "lightcoral": [240, 128, 128, 1], - "lightcyan": [224, 255, 255, 1], - "lightgoldenrodyellow": [250, 250, 210, 1], - "lightgray": [211, 211, 211, 1], - "lightgreen": [144, 238, 144, 1], - "lightgrey": [211, 211, 211, 1], - "lightpink": [255, 182, 193, 1], - "lightsalmon": [255, 160, 122, 1], - "lightseagreen": [32, 178, 170, 1], - "lightskyblue": [135, 206, 250, 1], - "lightslategray": [119, 136, 153, 1], - "lightslategrey": [119, 136, 153, 1], - "lightsteelblue": [176, 196, 222, 1], - "lightyellow": [255, 255, 224, 1], - "lime": [0, 255, 0, 1], - "limegreen": [50, 205, 50, 1], - "linen": [250, 240, 230, 1], - "magenta": [255, 0, 255, 1], - "maroon": [128, 0, 0, 1], - "mediumaquamarine": [102, 205, 170, 1], - "mediumblue": [0, 0, 205, 1], - "mediumorchid": [186, 85, 211, 1], - "mediumpurple": [147, 112, 219, 1], - "mediumseagreen": [60, 179, 113, 1], - "mediumslateblue": [123, 104, 238, 1], - "mediumspringgreen": [0, 250, 154, 1], - "mediumturquoise": [72, 209, 204, 1], - "mediumvioletred": [199, 21, 133, 1], - "midnightblue": [25, 25, 112, 1], - "mintcream": [245, 255, 250, 1], - "mistyrose": [255, 228, 225, 1], - "moccasin": [255, 228, 181, 1], - "navajowhite": [255, 222, 173, 1], - "navy": [0, 0, 128, 1], - "oldlace": [253, 245, 230, 1], - "olive": [128, 128, 0, 1], - "olivedrab": [107, 142, 35, 1], - "orange": [255, 165, 0, 1], - "orangered": [255, 69, 0, 1], - "orchid": [218, 112, 214, 1], - "palegoldenrod": [238, 232, 170, 1], - "palegreen": [152, 251, 152, 1], - "paleturquoise": [175, 238, 238, 1], - "palevioletred": [219, 112, 147, 1], - "papayawhip": [255, 239, 213, 1], - "peachpuff": [255, 218, 185, 1], - "peru": [205, 133, 63, 1], - "pink": [255, 192, 203, 1], - "plum": [221, 160, 221, 1], - "powderblue": [176, 224, 230, 1], - "purple": [128, 0, 128, 1], - "red": [255, 0, 0, 1], - "rosybrown": [188, 143, 143, 1], - "royalblue": [65, 105, 225, 1], - "saddlebrown": [139, 69, 19, 1], - "salmon": [250, 128, 114, 1], - "sandybrown": [244, 164, 96, 1], - "seagreen": [46, 139, 87, 1], - "seashell": [255, 245, 238, 1], - "sienna": [160, 82, 45, 1], - "silver": [192, 192, 192, 1], - "skyblue": [135, 206, 235, 1], - "slateblue": [106, 90, 205, 1], - "slategray": [112, 128, 144, 1], - "slategrey": [112, 128, 144, 1], - "snow": [255, 250, 250, 1], - "springgreen": [0, 255, 127, 1], - "steelblue": [70, 130, 180, 1], - "tan": [210, 180, 140, 1], - "teal": [0, 128, 128, 1], - "thistle": [216, 191, 216, 1], - "tomato": [255, 99, 71, 1], - "turquoise": [64, 224, 208, 1], - "violet": [238, 130, 238, 1], - "wheat": [245, 222, 179, 1], - "white": [255, 255, 255, 1], - "whitesmoke": [245, 245, 245, 1], - "yellow": [255, 255, 0, 1], - "yellowgreen": [154, 205, 50, 1] - }; - function clampCssByte2(i2) { - i2 = Math.round(i2); - return i2 < 0 ? 0 : i2 > 255 ? 255 : i2; - } - function clampCssAngle2(i2) { - i2 = Math.round(i2); - return i2 < 0 ? 0 : i2 > 360 ? 360 : i2; - } - function clampCssFloat2(f) { - return f < 0 ? 0 : f > 1 ? 1 : f; - } - function parseCssInt2(val) { - var str = val; - if (str.length && str.charAt(str.length - 1) === "%") { - return clampCssByte2(parseFloat(str) / 100 * 255); - } - return clampCssByte2(parseInt(str, 10)); - } - function parseCssFloat2(val) { - var str = val; - if (str.length && str.charAt(str.length - 1) === "%") { - return clampCssFloat2(parseFloat(str) / 100); - } - return clampCssFloat2(parseFloat(str)); - } - function cssHueToRgb2(m1, m22, h) { - if (h < 0) { - h += 1; - } else if (h > 1) { - h -= 1; - } - if (h * 6 < 1) { - return m1 + (m22 - m1) * h * 6; - } - if (h * 2 < 1) { - return m22; - } - if (h * 3 < 2) { - return m1 + (m22 - m1) * (2 / 3 - h) * 6; - } - return m1; - } - function lerpNumber2(a, b, p) { - return a + (b - a) * p; - } - function setRgba2(out3, r, g, b, a) { - out3[0] = r; - out3[1] = g; - out3[2] = b; - out3[3] = a; - return out3; - } - function copyRgba2(out3, a) { - out3[0] = a[0]; - out3[1] = a[1]; - out3[2] = a[2]; - out3[3] = a[3]; - return out3; - } - var colorCache2 = new LRU2(20); - var lastRemovedArr2 = null; - function putToCache2(colorStr, rgbaArr) { - if (lastRemovedArr2) { - copyRgba2(lastRemovedArr2, rgbaArr); - } - lastRemovedArr2 = colorCache2.put(colorStr, lastRemovedArr2 || rgbaArr.slice()); - } - function parse2(colorStr, rgbaArr) { - if (!colorStr) { - return; - } - rgbaArr = rgbaArr || []; - var cached = colorCache2.get(colorStr); - if (cached) { - return copyRgba2(rgbaArr, cached); - } - colorStr = colorStr + ""; - var str = colorStr.replace(/ /g, "").toLowerCase(); - if (str in kCSSColorTable2) { - copyRgba2(rgbaArr, kCSSColorTable2[str]); - putToCache2(colorStr, rgbaArr); - return rgbaArr; - } - var strLen = str.length; - if (str.charAt(0) === "#") { - if (strLen === 4 || strLen === 5) { - var iv = parseInt(str.slice(1, 4), 16); - if (!(iv >= 0 && iv <= 4095)) { - setRgba2(rgbaArr, 0, 0, 0, 1); - return; - } - setRgba2(rgbaArr, (iv & 3840) >> 4 | (iv & 3840) >> 8, iv & 240 | (iv & 240) >> 4, iv & 15 | (iv & 15) << 4, strLen === 5 ? parseInt(str.slice(4), 16) / 15 : 1); - putToCache2(colorStr, rgbaArr); - return rgbaArr; - } else if (strLen === 7 || strLen === 9) { - var iv = parseInt(str.slice(1, 7), 16); - if (!(iv >= 0 && iv <= 16777215)) { - setRgba2(rgbaArr, 0, 0, 0, 1); - return; - } - setRgba2(rgbaArr, (iv & 16711680) >> 16, (iv & 65280) >> 8, iv & 255, strLen === 9 ? parseInt(str.slice(7), 16) / 255 : 1); - putToCache2(colorStr, rgbaArr); - return rgbaArr; - } - return; - } - var op = str.indexOf("("); - var ep = str.indexOf(")"); - if (op !== -1 && ep + 1 === strLen) { - var fname = str.substr(0, op); - var params = str.substr(op + 1, ep - (op + 1)).split(","); - var alpha = 1; - switch (fname) { - case "rgba": - if (params.length !== 4) { - return params.length === 3 ? setRgba2(rgbaArr, +params[0], +params[1], +params[2], 1) : setRgba2(rgbaArr, 0, 0, 0, 1); - } - alpha = parseCssFloat2(params.pop()); - case "rgb": - if (params.length >= 3) { - setRgba2(rgbaArr, parseCssInt2(params[0]), parseCssInt2(params[1]), parseCssInt2(params[2]), params.length === 3 ? alpha : parseCssFloat2(params[3])); - putToCache2(colorStr, rgbaArr); - return rgbaArr; - } else { - setRgba2(rgbaArr, 0, 0, 0, 1); - return; - } - case "hsla": - if (params.length !== 4) { - setRgba2(rgbaArr, 0, 0, 0, 1); - return; - } - params[3] = parseCssFloat2(params[3]); - hsla2rgba2(params, rgbaArr); - putToCache2(colorStr, rgbaArr); - return rgbaArr; - case "hsl": - if (params.length !== 3) { - setRgba2(rgbaArr, 0, 0, 0, 1); - return; - } - hsla2rgba2(params, rgbaArr); - putToCache2(colorStr, rgbaArr); - return rgbaArr; - default: - return; - } - } - setRgba2(rgbaArr, 0, 0, 0, 1); - return; - } - function hsla2rgba2(hsla, rgba) { - var h = (parseFloat(hsla[0]) % 360 + 360) % 360 / 360; - var s = parseCssFloat2(hsla[1]); - var l = parseCssFloat2(hsla[2]); - var m22 = l <= 0.5 ? l * (s + 1) : l + s - l * s; - var m1 = l * 2 - m22; - rgba = rgba || []; - setRgba2(rgba, clampCssByte2(cssHueToRgb2(m1, m22, h + 1 / 3) * 255), clampCssByte2(cssHueToRgb2(m1, m22, h) * 255), clampCssByte2(cssHueToRgb2(m1, m22, h - 1 / 3) * 255), 1); - if (hsla.length === 4) { - rgba[3] = hsla[3]; - } - return rgba; - } - function rgba2hsla2(rgba) { - if (!rgba) { - return; - } - var R = rgba[0] / 255; - var G = rgba[1] / 255; - var B = rgba[2] / 255; - var vMin = Math.min(R, G, B); - var vMax = Math.max(R, G, B); - var delta = vMax - vMin; - var L = (vMax + vMin) / 2; - var H; - var S; - if (delta === 0) { - H = 0; - S = 0; - } else { - if (L < 0.5) { - S = delta / (vMax + vMin); - } else { - S = delta / (2 - vMax - vMin); - } - var deltaR = ((vMax - R) / 6 + delta / 2) / delta; - var deltaG = ((vMax - G) / 6 + delta / 2) / delta; - var deltaB = ((vMax - B) / 6 + delta / 2) / delta; - if (R === vMax) { - H = deltaB - deltaG; - } else if (G === vMax) { - H = 1 / 3 + deltaR - deltaB; - } else if (B === vMax) { - H = 2 / 3 + deltaG - deltaR; - } - if (H < 0) { - H += 1; - } - if (H > 1) { - H -= 1; - } - } - var hsla = [H * 360, S, L]; - if (rgba[3] != null) { - hsla.push(rgba[3]); - } - return hsla; - } - function lift2(color2, level) { - var colorArr = parse2(color2); - if (colorArr) { - for (var i2 = 0; i2 < 3; i2++) { - if (level < 0) { - colorArr[i2] = colorArr[i2] * (1 - level) | 0; - } else { - colorArr[i2] = (255 - colorArr[i2]) * level + colorArr[i2] | 0; - } - if (colorArr[i2] > 255) { - colorArr[i2] = 255; - } else if (colorArr[i2] < 0) { - colorArr[i2] = 0; - } - } - return stringify2(colorArr, colorArr.length === 4 ? "rgba" : "rgb"); - } - } - function toHex2(color2) { - var colorArr = parse2(color2); - if (colorArr) { - return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + +colorArr[2]).toString(16).slice(1); - } - } - function fastLerp2(normalizedValue, colors, out3) { - if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) { - return; - } - out3 = out3 || []; - var value = normalizedValue * (colors.length - 1); - var leftIndex = Math.floor(value); - var rightIndex = Math.ceil(value); - var leftColor = colors[leftIndex]; - var rightColor = colors[rightIndex]; - var dv = value - leftIndex; - out3[0] = clampCssByte2(lerpNumber2(leftColor[0], rightColor[0], dv)); - out3[1] = clampCssByte2(lerpNumber2(leftColor[1], rightColor[1], dv)); - out3[2] = clampCssByte2(lerpNumber2(leftColor[2], rightColor[2], dv)); - out3[3] = clampCssFloat2(lerpNumber2(leftColor[3], rightColor[3], dv)); - return out3; - } - var fastMapToColor2 = fastLerp2; - function lerp$1(normalizedValue, colors, fullOutput) { - if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) { - return; - } - var value = normalizedValue * (colors.length - 1); - var leftIndex = Math.floor(value); - var rightIndex = Math.ceil(value); - var leftColor = parse2(colors[leftIndex]); - var rightColor = parse2(colors[rightIndex]); - var dv = value - leftIndex; - var color2 = stringify2([ - clampCssByte2(lerpNumber2(leftColor[0], rightColor[0], dv)), - clampCssByte2(lerpNumber2(leftColor[1], rightColor[1], dv)), - clampCssByte2(lerpNumber2(leftColor[2], rightColor[2], dv)), - clampCssFloat2(lerpNumber2(leftColor[3], rightColor[3], dv)) - ], "rgba"); - return fullOutput ? { - color: color2, - leftIndex, - rightIndex, - value - } : color2; - } - var mapToColor2 = lerp$1; - function modifyHSL2(color2, h, s, l) { - var colorArr = parse2(color2); - if (color2) { - colorArr = rgba2hsla2(colorArr); - h != null && (colorArr[0] = clampCssAngle2(h)); - s != null && (colorArr[1] = parseCssFloat2(s)); - l != null && (colorArr[2] = parseCssFloat2(l)); - return stringify2(hsla2rgba2(colorArr), "rgba"); - } - } - function modifyAlpha2(color2, alpha) { - var colorArr = parse2(color2); - if (colorArr && alpha != null) { - colorArr[3] = clampCssFloat2(alpha); - return stringify2(colorArr, "rgba"); - } - } - function stringify2(arrColor, type) { - if (!arrColor || !arrColor.length) { - return; - } - var colorStr = arrColor[0] + "," + arrColor[1] + "," + arrColor[2]; - if (type === "rgba" || type === "hsva" || type === "hsla") { - colorStr += "," + arrColor[3]; - } - return type + "(" + colorStr + ")"; - } - function lum2(color2, backgroundLum) { - var arr = parse2(color2); - return arr ? (0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3] / 255 + (1 - arr[3]) * backgroundLum : 0; - } - function random2() { - return stringify2([ - Math.round(Math.random() * 255), - Math.round(Math.random() * 255), - Math.round(Math.random() * 255) - ], "rgb"); - } - var liftedColorCache2 = new LRU2(100); - function liftColor2(color2) { - if (isString2(color2)) { - var liftedColor = liftedColorCache2.get(color2); - if (!liftedColor) { - liftedColor = lift2(color2, -0.1); - liftedColorCache2.put(color2, liftedColor); - } - return liftedColor; - } else if (isGradientObject2(color2)) { - var ret = extend3({}, color2); - ret.colorStops = map3(color2.colorStops, function(stop3) { - return { - offset: stop3.offset, - color: lift2(stop3.color, -0.1) - }; - }); - return ret; - } - return color2; - } - var color = /* @__PURE__ */ Object.freeze({ - __proto__: null, - parse: parse2, - lift: lift2, - toHex: toHex2, - fastLerp: fastLerp2, - fastMapToColor: fastMapToColor2, - lerp: lerp$1, - mapToColor: mapToColor2, - modifyHSL: modifyHSL2, - modifyAlpha: modifyAlpha2, - stringify: stringify2, - lum: lum2, - random: random2, - liftColor: liftColor2 - }); - var mathRound3 = Math.round; - function normalizeColor2(color2) { - var opacity; - if (!color2 || color2 === "transparent") { - color2 = "none"; - } else if (typeof color2 === "string" && color2.indexOf("rgba") > -1) { - var arr = parse2(color2); - if (arr) { - color2 = "rgb(" + arr[0] + "," + arr[1] + "," + arr[2] + ")"; - opacity = arr[3]; - } - } - return { - color: color2, - opacity: opacity == null ? 1 : opacity - }; - } - var EPSILON$1 = 1e-4; - function isAroundZero$1(transform2) { - return transform2 < EPSILON$1 && transform2 > -EPSILON$1; - } - function round32(transform2) { - return mathRound3(transform2 * 1e3) / 1e3; - } - function round42(transform2) { - return mathRound3(transform2 * 1e4) / 1e4; - } - function getMatrixStr2(m3) { - return "matrix(" + round32(m3[0]) + "," + round32(m3[1]) + "," + round32(m3[2]) + "," + round32(m3[3]) + "," + round42(m3[4]) + "," + round42(m3[5]) + ")"; - } - var TEXT_ALIGN_TO_ANCHOR2 = { - left: "start", - right: "end", - center: "middle", - middle: "middle" - }; - function adjustTextY3(y, lineHeight, textBaseline) { - if (textBaseline === "top") { - y += lineHeight / 2; - } else if (textBaseline === "bottom") { - y -= lineHeight / 2; - } - return y; - } - function hasShadow2(style) { - return style && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY); - } - function getShadowKey2(displayable) { - var style = displayable.style; - var globalScale = displayable.getGlobalScale(); - return [ - style.shadowColor, - (style.shadowBlur || 0).toFixed(2), - (style.shadowOffsetX || 0).toFixed(2), - (style.shadowOffsetY || 0).toFixed(2), - globalScale[0], - globalScale[1] - ].join(","); - } - function isImagePattern2(val) { - return val && !!val.image; - } - function isSVGPattern2(val) { - return val && !!val.svgElement; - } - function isPattern2(val) { - return isImagePattern2(val) || isSVGPattern2(val); - } - function isLinearGradient2(val) { - return val.type === "linear"; - } - function isRadialGradient2(val) { - return val.type === "radial"; - } - function isGradient2(val) { - return val && (val.type === "linear" || val.type === "radial"); - } - function getIdURL2(id) { - return "url(#" + id + ")"; - } - function getPathPrecision2(el) { - var scale5 = el.getGlobalScale(); - var size2 = Math.max(scale5[0], scale5[1]); - return Math.max(Math.ceil(Math.log(size2) / Math.log(10)), 1); - } - function getSRTTransformString2(transform2) { - var x = transform2.x || 0; - var y = transform2.y || 0; - var rotation = (transform2.rotation || 0) * RADIAN_TO_DEGREE2; - var scaleX = retrieve22(transform2.scaleX, 1); - var scaleY = retrieve22(transform2.scaleY, 1); - var skewX = transform2.skewX || 0; - var skewY = transform2.skewY || 0; - var res = []; - if (x || y) { - res.push("translate(" + x + "px," + y + "px)"); - } - if (rotation) { - res.push("rotate(" + rotation + ")"); - } - if (scaleX !== 1 || scaleY !== 1) { - res.push("scale(" + scaleX + "," + scaleY + ")"); - } - if (skewX || skewY) { - res.push("skew(" + mathRound3(skewX * RADIAN_TO_DEGREE2) + "deg, " + mathRound3(skewY * RADIAN_TO_DEGREE2) + "deg)"); - } - return res.join(" "); - } - var encodeBase642 = function() { - if (env2.hasGlobalWindow && isFunction2(window.btoa)) { - return function(str) { - return window.btoa(unescape(encodeURIComponent(str))); - }; - } - if (typeof Buffer !== "undefined") { - return function(str) { - return Buffer.from(str).toString("base64"); - }; - } - return function(str) { - if (true) { - logError2("Base64 isn't natively supported in the current environment."); - } - return null; - }; - }(); - var arraySlice2 = Array.prototype.slice; - function interpolateNumber3(p0, p1, percent) { - return (p1 - p0) * percent + p0; - } - function interpolate1DArray2(out3, p0, p1, percent) { - var len3 = p0.length; - for (var i2 = 0; i2 < len3; i2++) { - out3[i2] = interpolateNumber3(p0[i2], p1[i2], percent); - } - return out3; - } - function interpolate2DArray2(out3, p0, p1, percent) { - var len3 = p0.length; - var len22 = len3 && p0[0].length; - for (var i2 = 0; i2 < len3; i2++) { - if (!out3[i2]) { - out3[i2] = []; - } - for (var j = 0; j < len22; j++) { - out3[i2][j] = interpolateNumber3(p0[i2][j], p1[i2][j], percent); - } - } - return out3; - } - function add1DArray2(out3, p0, p1, sign) { - var len3 = p0.length; - for (var i2 = 0; i2 < len3; i2++) { - out3[i2] = p0[i2] + p1[i2] * sign; - } - return out3; - } - function add2DArray2(out3, p0, p1, sign) { - var len3 = p0.length; - var len22 = len3 && p0[0].length; - for (var i2 = 0; i2 < len3; i2++) { - if (!out3[i2]) { - out3[i2] = []; - } - for (var j = 0; j < len22; j++) { - out3[i2][j] = p0[i2][j] + p1[i2][j] * sign; - } - } - return out3; - } - function fillColorStops2(val0, val1) { - var len0 = val0.length; - var len1 = val1.length; - var shorterArr = len0 > len1 ? val1 : val0; - var shorterLen = Math.min(len0, len1); - var last = shorterArr[shorterLen - 1] || { color: [0, 0, 0, 0], offset: 0 }; - for (var i2 = shorterLen; i2 < Math.max(len0, len1); i2++) { - shorterArr.push({ - offset: last.offset, - color: last.color.slice() - }); - } - } - function fillArray2(val0, val1, arrDim) { - var arr0 = val0; - var arr1 = val1; - if (!arr0.push || !arr1.push) { - return; - } - var arr0Len = arr0.length; - var arr1Len = arr1.length; - if (arr0Len !== arr1Len) { - var isPreviousLarger = arr0Len > arr1Len; - if (isPreviousLarger) { - arr0.length = arr1Len; - } else { - for (var i2 = arr0Len; i2 < arr1Len; i2++) { - arr0.push(arrDim === 1 ? arr1[i2] : arraySlice2.call(arr1[i2])); - } - } - } - var len22 = arr0[0] && arr0[0].length; - for (var i2 = 0; i2 < arr0.length; i2++) { - if (arrDim === 1) { - if (isNaN(arr0[i2])) { - arr0[i2] = arr1[i2]; - } - } else { - for (var j = 0; j < len22; j++) { - if (isNaN(arr0[i2][j])) { - arr0[i2][j] = arr1[i2][j]; - } - } - } - } - } - function cloneValue2(value) { - if (isArrayLike2(value)) { - var len3 = value.length; - if (isArrayLike2(value[0])) { - var ret = []; - for (var i2 = 0; i2 < len3; i2++) { - ret.push(arraySlice2.call(value[i2])); - } - return ret; - } - return arraySlice2.call(value); - } - return value; - } - function rgba2String2(rgba) { - rgba[0] = Math.floor(rgba[0]) || 0; - rgba[1] = Math.floor(rgba[1]) || 0; - rgba[2] = Math.floor(rgba[2]) || 0; - rgba[3] = rgba[3] == null ? 1 : rgba[3]; - return "rgba(" + rgba.join(",") + ")"; - } - function guessArrayDim2(value) { - return isArrayLike2(value && value[0]) ? 2 : 1; - } - var VALUE_TYPE_NUMBER2 = 0; - var VALUE_TYPE_1D_ARRAY2 = 1; - var VALUE_TYPE_2D_ARRAY2 = 2; - var VALUE_TYPE_COLOR2 = 3; - var VALUE_TYPE_LINEAR_GRADIENT2 = 4; - var VALUE_TYPE_RADIAL_GRADIENT2 = 5; - var VALUE_TYPE_UNKOWN2 = 6; - function isGradientValueType2(valType) { - return valType === VALUE_TYPE_LINEAR_GRADIENT2 || valType === VALUE_TYPE_RADIAL_GRADIENT2; - } - function isArrayValueType2(valType) { - return valType === VALUE_TYPE_1D_ARRAY2 || valType === VALUE_TYPE_2D_ARRAY2; - } - var tmpRgba2 = [0, 0, 0, 0]; - var Track2 = function() { - function Track3(propName) { - this.keyframes = []; - this.discrete = false; - this._invalid = false; - this._needsSort = false; - this._lastFr = 0; - this._lastFrP = 0; - this.propName = propName; - } - Track3.prototype.isFinished = function() { - return this._finished; - }; - Track3.prototype.setFinished = function() { - this._finished = true; - if (this._additiveTrack) { - this._additiveTrack.setFinished(); - } - }; - Track3.prototype.needsAnimate = function() { - return this.keyframes.length >= 1; - }; - Track3.prototype.getAdditiveTrack = function() { - return this._additiveTrack; - }; - Track3.prototype.addKeyframe = function(time2, rawValue, easing) { - this._needsSort = true; - var keyframes = this.keyframes; - var len3 = keyframes.length; - var discrete = false; - var valType = VALUE_TYPE_UNKOWN2; - var value = rawValue; - if (isArrayLike2(rawValue)) { - var arrayDim = guessArrayDim2(rawValue); - valType = arrayDim; - if (arrayDim === 1 && !isNumber2(rawValue[0]) || arrayDim === 2 && !isNumber2(rawValue[0][0])) { - discrete = true; - } - } else { - if (isNumber2(rawValue) && !eqNaN2(rawValue)) { - valType = VALUE_TYPE_NUMBER2; - } else if (isString2(rawValue)) { - if (!isNaN(+rawValue)) { - valType = VALUE_TYPE_NUMBER2; - } else { - var colorArray = parse2(rawValue); - if (colorArray) { - value = colorArray; - valType = VALUE_TYPE_COLOR2; - } - } - } else if (isGradientObject2(rawValue)) { - var parsedGradient = extend3({}, value); - parsedGradient.colorStops = map3(rawValue.colorStops, function(colorStop) { - return { - offset: colorStop.offset, - color: parse2(colorStop.color) - }; - }); - if (isLinearGradient2(rawValue)) { - valType = VALUE_TYPE_LINEAR_GRADIENT2; - } else if (isRadialGradient2(rawValue)) { - valType = VALUE_TYPE_RADIAL_GRADIENT2; - } - value = parsedGradient; - } - } - if (len3 === 0) { - this.valType = valType; - } else if (valType !== this.valType || valType === VALUE_TYPE_UNKOWN2) { - discrete = true; - } - this.discrete = this.discrete || discrete; - var kf = { - time: time2, - value, - rawValue, - percent: 0 - }; - if (easing) { - kf.easing = easing; - kf.easingFunc = isFunction2(easing) ? easing : easingFuncs2[easing] || createCubicEasingFunc2(easing); - } - keyframes.push(kf); - return kf; - }; - Track3.prototype.prepare = function(maxTime, additiveTrack) { - var kfs = this.keyframes; - if (this._needsSort) { - kfs.sort(function(a, b) { - return a.time - b.time; - }); - } - var valType = this.valType; - var kfsLen = kfs.length; - var lastKf = kfs[kfsLen - 1]; - var isDiscrete = this.discrete; - var isArr = isArrayValueType2(valType); - var isGradient3 = isGradientValueType2(valType); - for (var i2 = 0; i2 < kfsLen; i2++) { - var kf = kfs[i2]; - var value = kf.value; - var lastValue = lastKf.value; - kf.percent = kf.time / maxTime; - if (!isDiscrete) { - if (isArr && i2 !== kfsLen - 1) { - fillArray2(value, lastValue, valType); - } else if (isGradient3) { - fillColorStops2(value.colorStops, lastValue.colorStops); - } - } - } - if (!isDiscrete && valType !== VALUE_TYPE_RADIAL_GRADIENT2 && additiveTrack && this.needsAnimate() && additiveTrack.needsAnimate() && valType === additiveTrack.valType && !additiveTrack._finished) { - this._additiveTrack = additiveTrack; - var startValue = kfs[0].value; - for (var i2 = 0; i2 < kfsLen; i2++) { - if (valType === VALUE_TYPE_NUMBER2) { - kfs[i2].additiveValue = kfs[i2].value - startValue; - } else if (valType === VALUE_TYPE_COLOR2) { - kfs[i2].additiveValue = add1DArray2([], kfs[i2].value, startValue, -1); - } else if (isArrayValueType2(valType)) { - kfs[i2].additiveValue = valType === VALUE_TYPE_1D_ARRAY2 ? add1DArray2([], kfs[i2].value, startValue, -1) : add2DArray2([], kfs[i2].value, startValue, -1); - } - } - } - }; - Track3.prototype.step = function(target, percent) { - if (this._finished) { - return; - } - if (this._additiveTrack && this._additiveTrack._finished) { - this._additiveTrack = null; - } - var isAdditive = this._additiveTrack != null; - var valueKey = isAdditive ? "additiveValue" : "value"; - var valType = this.valType; - var keyframes = this.keyframes; - var kfsNum = keyframes.length; - var propName = this.propName; - var isValueColor = valType === VALUE_TYPE_COLOR2; - var frameIdx; - var lastFrame = this._lastFr; - var mathMin13 = Math.min; - var frame; - var nextFrame; - if (kfsNum === 1) { - frame = nextFrame = keyframes[0]; - } else { - if (percent < 0) { - frameIdx = 0; - } else if (percent < this._lastFrP) { - var start4 = mathMin13(lastFrame + 1, kfsNum - 1); - for (frameIdx = start4; frameIdx >= 0; frameIdx--) { - if (keyframes[frameIdx].percent <= percent) { - break; - } - } - frameIdx = mathMin13(frameIdx, kfsNum - 2); - } else { - for (frameIdx = lastFrame; frameIdx < kfsNum; frameIdx++) { - if (keyframes[frameIdx].percent > percent) { - break; - } - } - frameIdx = mathMin13(frameIdx - 1, kfsNum - 2); - } - nextFrame = keyframes[frameIdx + 1]; - frame = keyframes[frameIdx]; - } - if (!(frame && nextFrame)) { - return; - } - this._lastFr = frameIdx; - this._lastFrP = percent; - var interval = nextFrame.percent - frame.percent; - var w = interval === 0 ? 1 : mathMin13((percent - frame.percent) / interval, 1); - if (nextFrame.easingFunc) { - w = nextFrame.easingFunc(w); - } - var targetArr = isAdditive ? this._additiveValue : isValueColor ? tmpRgba2 : target[propName]; - if ((isArrayValueType2(valType) || isValueColor) && !targetArr) { - targetArr = this._additiveValue = []; - } - if (this.discrete) { - target[propName] = w < 1 ? frame.rawValue : nextFrame.rawValue; - } else if (isArrayValueType2(valType)) { - valType === VALUE_TYPE_1D_ARRAY2 ? interpolate1DArray2(targetArr, frame[valueKey], nextFrame[valueKey], w) : interpolate2DArray2(targetArr, frame[valueKey], nextFrame[valueKey], w); - } else if (isGradientValueType2(valType)) { - var val = frame[valueKey]; - var nextVal_1 = nextFrame[valueKey]; - var isLinearGradient_1 = valType === VALUE_TYPE_LINEAR_GRADIENT2; - target[propName] = { - type: isLinearGradient_1 ? "linear" : "radial", - x: interpolateNumber3(val.x, nextVal_1.x, w), - y: interpolateNumber3(val.y, nextVal_1.y, w), - colorStops: map3(val.colorStops, function(colorStop, idx) { - var nextColorStop = nextVal_1.colorStops[idx]; - return { - offset: interpolateNumber3(colorStop.offset, nextColorStop.offset, w), - color: rgba2String2(interpolate1DArray2([], colorStop.color, nextColorStop.color, w)) - }; - }), - global: nextVal_1.global - }; - if (isLinearGradient_1) { - target[propName].x2 = interpolateNumber3(val.x2, nextVal_1.x2, w); - target[propName].y2 = interpolateNumber3(val.y2, nextVal_1.y2, w); - } else { - target[propName].r = interpolateNumber3(val.r, nextVal_1.r, w); - } - } else if (isValueColor) { - interpolate1DArray2(targetArr, frame[valueKey], nextFrame[valueKey], w); - if (!isAdditive) { - target[propName] = rgba2String2(targetArr); - } - } else { - var value = interpolateNumber3(frame[valueKey], nextFrame[valueKey], w); - if (isAdditive) { - this._additiveValue = value; - } else { - target[propName] = value; - } - } - if (isAdditive) { - this._addToTarget(target); - } - }; - Track3.prototype._addToTarget = function(target) { - var valType = this.valType; - var propName = this.propName; - var additiveValue = this._additiveValue; - if (valType === VALUE_TYPE_NUMBER2) { - target[propName] = target[propName] + additiveValue; - } else if (valType === VALUE_TYPE_COLOR2) { - parse2(target[propName], tmpRgba2); - add1DArray2(tmpRgba2, tmpRgba2, additiveValue, 1); - target[propName] = rgba2String2(tmpRgba2); - } else if (valType === VALUE_TYPE_1D_ARRAY2) { - add1DArray2(target[propName], target[propName], additiveValue, 1); - } else if (valType === VALUE_TYPE_2D_ARRAY2) { - add2DArray2(target[propName], target[propName], additiveValue, 1); - } - }; - return Track3; - }(); - var Animator2 = function() { - function Animator3(target, loop, allowDiscreteAnimation, additiveTo) { - this._tracks = {}; - this._trackKeys = []; - this._maxTime = 0; - this._started = 0; - this._clip = null; - this._target = target; - this._loop = loop; - if (loop && additiveTo) { - logError2("Can' use additive animation on looped animation."); - return; - } - this._additiveAnimators = additiveTo; - this._allowDiscrete = allowDiscreteAnimation; - } - Animator3.prototype.getMaxTime = function() { - return this._maxTime; - }; - Animator3.prototype.getDelay = function() { - return this._delay; - }; - Animator3.prototype.getLoop = function() { - return this._loop; - }; - Animator3.prototype.getTarget = function() { - return this._target; - }; - Animator3.prototype.changeTarget = function(target) { - this._target = target; - }; - Animator3.prototype.when = function(time2, props, easing) { - return this.whenWithKeys(time2, props, keys2(props), easing); - }; - Animator3.prototype.whenWithKeys = function(time2, props, propNames, easing) { - var tracks = this._tracks; - for (var i2 = 0; i2 < propNames.length; i2++) { - var propName = propNames[i2]; - var track = tracks[propName]; - if (!track) { - track = tracks[propName] = new Track2(propName); - var initialValue = void 0; - var additiveTrack = this._getAdditiveTrack(propName); - if (additiveTrack) { - var addtiveTrackKfs = additiveTrack.keyframes; - var lastFinalKf = addtiveTrackKfs[addtiveTrackKfs.length - 1]; - initialValue = lastFinalKf && lastFinalKf.value; - if (additiveTrack.valType === VALUE_TYPE_COLOR2 && initialValue) { - initialValue = rgba2String2(initialValue); - } - } else { - initialValue = this._target[propName]; - } - if (initialValue == null) { - continue; - } - if (time2 > 0) { - track.addKeyframe(0, cloneValue2(initialValue), easing); - } - this._trackKeys.push(propName); - } - track.addKeyframe(time2, cloneValue2(props[propName]), easing); - } - this._maxTime = Math.max(this._maxTime, time2); - return this; - }; - Animator3.prototype.pause = function() { - this._clip.pause(); - this._paused = true; - }; - Animator3.prototype.resume = function() { - this._clip.resume(); - this._paused = false; - }; - Animator3.prototype.isPaused = function() { - return !!this._paused; - }; - Animator3.prototype.duration = function(duration) { - this._maxTime = duration; - this._force = true; - return this; - }; - Animator3.prototype._doneCallback = function() { - this._setTracksFinished(); - this._clip = null; - var doneList = this._doneCbs; - if (doneList) { - var len3 = doneList.length; - for (var i2 = 0; i2 < len3; i2++) { - doneList[i2].call(this); - } - } - }; - Animator3.prototype._abortedCallback = function() { - this._setTracksFinished(); - var animation = this.animation; - var abortedList = this._abortedCbs; - if (animation) { - animation.removeClip(this._clip); - } - this._clip = null; - if (abortedList) { - for (var i2 = 0; i2 < abortedList.length; i2++) { - abortedList[i2].call(this); - } - } - }; - Animator3.prototype._setTracksFinished = function() { - var tracks = this._tracks; - var tracksKeys = this._trackKeys; - for (var i2 = 0; i2 < tracksKeys.length; i2++) { - tracks[tracksKeys[i2]].setFinished(); - } - }; - Animator3.prototype._getAdditiveTrack = function(trackName) { - var additiveTrack; - var additiveAnimators = this._additiveAnimators; - if (additiveAnimators) { - for (var i2 = 0; i2 < additiveAnimators.length; i2++) { - var track = additiveAnimators[i2].getTrack(trackName); - if (track) { - additiveTrack = track; - } - } - } - return additiveTrack; - }; - Animator3.prototype.start = function(easing) { - if (this._started > 0) { - return; - } - this._started = 1; - var self2 = this; - var tracks = []; - var maxTime = this._maxTime || 0; - for (var i2 = 0; i2 < this._trackKeys.length; i2++) { - var propName = this._trackKeys[i2]; - var track = this._tracks[propName]; - var additiveTrack = this._getAdditiveTrack(propName); - var kfs = track.keyframes; - var kfsNum = kfs.length; - track.prepare(maxTime, additiveTrack); - if (track.needsAnimate()) { - if (!this._allowDiscrete && track.discrete) { - var lastKf = kfs[kfsNum - 1]; - if (lastKf) { - self2._target[track.propName] = lastKf.rawValue; - } - track.setFinished(); - } else { - tracks.push(track); - } - } - } - if (tracks.length || this._force) { - var clip3 = new Clip2({ - life: maxTime, - loop: this._loop, - delay: this._delay || 0, - onframe: function(percent) { - self2._started = 2; - var additiveAnimators = self2._additiveAnimators; - if (additiveAnimators) { - var stillHasAdditiveAnimator = false; - for (var i3 = 0; i3 < additiveAnimators.length; i3++) { - if (additiveAnimators[i3]._clip) { - stillHasAdditiveAnimator = true; - break; - } - } - if (!stillHasAdditiveAnimator) { - self2._additiveAnimators = null; - } - } - for (var i3 = 0; i3 < tracks.length; i3++) { - tracks[i3].step(self2._target, percent); - } - var onframeList = self2._onframeCbs; - if (onframeList) { - for (var i3 = 0; i3 < onframeList.length; i3++) { - onframeList[i3](self2._target, percent); - } - } - }, - ondestroy: function() { - self2._doneCallback(); - } - }); - this._clip = clip3; - if (this.animation) { - this.animation.addClip(clip3); - } - if (easing) { - clip3.setEasing(easing); - } - } else { - this._doneCallback(); - } - return this; - }; - Animator3.prototype.stop = function(forwardToLast) { - if (!this._clip) { - return; - } - var clip3 = this._clip; - if (forwardToLast) { - clip3.onframe(1); - } - this._abortedCallback(); - }; - Animator3.prototype.delay = function(time2) { - this._delay = time2; - return this; - }; - Animator3.prototype.during = function(cb) { - if (cb) { - if (!this._onframeCbs) { - this._onframeCbs = []; - } - this._onframeCbs.push(cb); - } - return this; - }; - Animator3.prototype.done = function(cb) { - if (cb) { - if (!this._doneCbs) { - this._doneCbs = []; - } - this._doneCbs.push(cb); - } - return this; - }; - Animator3.prototype.aborted = function(cb) { - if (cb) { - if (!this._abortedCbs) { - this._abortedCbs = []; - } - this._abortedCbs.push(cb); - } - return this; - }; - Animator3.prototype.getClip = function() { - return this._clip; - }; - Animator3.prototype.getTrack = function(propName) { - return this._tracks[propName]; - }; - Animator3.prototype.getTracks = function() { - var _this = this; - return map3(this._trackKeys, function(key) { - return _this._tracks[key]; - }); - }; - Animator3.prototype.stopTracks = function(propNames, forwardToLast) { - if (!propNames.length || !this._clip) { - return true; - } - var tracks = this._tracks; - var tracksKeys = this._trackKeys; - for (var i2 = 0; i2 < propNames.length; i2++) { - var track = tracks[propNames[i2]]; - if (track && !track.isFinished()) { - if (forwardToLast) { - track.step(this._target, 1); - } else if (this._started === 1) { - track.step(this._target, 0); - } - track.setFinished(); - } - } - var allAborted = true; - for (var i2 = 0; i2 < tracksKeys.length; i2++) { - if (!tracks[tracksKeys[i2]].isFinished()) { - allAborted = false; - break; - } - } - if (allAborted) { - this._abortedCallback(); - } - return allAborted; - }; - Animator3.prototype.saveTo = function(target, trackKeys, firstOrLast) { - if (!target) { - return; - } - trackKeys = trackKeys || this._trackKeys; - for (var i2 = 0; i2 < trackKeys.length; i2++) { - var propName = trackKeys[i2]; - var track = this._tracks[propName]; - if (!track || track.isFinished()) { - continue; - } - var kfs = track.keyframes; - var kf = kfs[firstOrLast ? 0 : kfs.length - 1]; - if (kf) { - target[propName] = cloneValue2(kf.rawValue); - } - } - }; - Animator3.prototype.__changeFinalValue = function(finalProps, trackKeys) { - trackKeys = trackKeys || keys2(finalProps); - for (var i2 = 0; i2 < trackKeys.length; i2++) { - var propName = trackKeys[i2]; - var track = this._tracks[propName]; - if (!track) { - continue; - } - var kfs = track.keyframes; - if (kfs.length > 1) { - var lastKf = kfs.pop(); - track.addKeyframe(lastKf.time, finalProps[propName]); - track.prepare(this._maxTime, track.getAdditiveTrack()); - } - } - }; - return Animator3; - }(); - function getTime2() { - return (/* @__PURE__ */ new Date()).getTime(); - } - var Animation2 = function(_super) { - __extends2(Animation3, _super); - function Animation3(opts) { - var _this = _super.call(this) || this; - _this._running = false; - _this._time = 0; - _this._pausedTime = 0; - _this._pauseStart = 0; - _this._paused = false; - opts = opts || {}; - _this.stage = opts.stage || {}; - return _this; - } - Animation3.prototype.addClip = function(clip3) { - if (clip3.animation) { - this.removeClip(clip3); - } - if (!this._head) { - this._head = this._tail = clip3; - } else { - this._tail.next = clip3; - clip3.prev = this._tail; - clip3.next = null; - this._tail = clip3; - } - clip3.animation = this; - }; - Animation3.prototype.addAnimator = function(animator) { - animator.animation = this; - var clip3 = animator.getClip(); - if (clip3) { - this.addClip(clip3); - } - }; - Animation3.prototype.removeClip = function(clip3) { - if (!clip3.animation) { - return; - } - var prev = clip3.prev; - var next = clip3.next; - if (prev) { - prev.next = next; - } else { - this._head = next; - } - if (next) { - next.prev = prev; - } else { - this._tail = prev; - } - clip3.next = clip3.prev = clip3.animation = null; - }; - Animation3.prototype.removeAnimator = function(animator) { - var clip3 = animator.getClip(); - if (clip3) { - this.removeClip(clip3); - } - animator.animation = null; - }; - Animation3.prototype.update = function(notTriggerFrameAndStageUpdate) { - var time2 = getTime2() - this._pausedTime; - var delta = time2 - this._time; - var clip3 = this._head; - while (clip3) { - var nextClip = clip3.next; - var finished = clip3.step(time2, delta); - if (finished) { - clip3.ondestroy(); - this.removeClip(clip3); - clip3 = nextClip; - } else { - clip3 = nextClip; - } - } - this._time = time2; - if (!notTriggerFrameAndStageUpdate) { - this.trigger("frame", delta); - this.stage.update && this.stage.update(); - } - }; - Animation3.prototype._startLoop = function() { - var self2 = this; - this._running = true; - function step() { - if (self2._running) { - requestAnimationFrame$1(step); - !self2._paused && self2.update(); - } - } - requestAnimationFrame$1(step); - }; - Animation3.prototype.start = function() { - if (this._running) { - return; - } - this._time = getTime2(); - this._pausedTime = 0; - this._startLoop(); - }; - Animation3.prototype.stop = function() { - this._running = false; - }; - Animation3.prototype.pause = function() { - if (!this._paused) { - this._pauseStart = getTime2(); - this._paused = true; - } - }; - Animation3.prototype.resume = function() { - if (this._paused) { - this._pausedTime += getTime2() - this._pauseStart; - this._paused = false; - } - }; - Animation3.prototype.clear = function() { - var clip3 = this._head; - while (clip3) { - var nextClip = clip3.next; - clip3.prev = clip3.next = clip3.animation = null; - clip3 = nextClip; - } - this._head = this._tail = null; - }; - Animation3.prototype.isFinished = function() { - return this._head == null; - }; - Animation3.prototype.animate = function(target, options) { - options = options || {}; - this.start(); - var animator = new Animator2(target, options.loop); - this.addAnimator(animator); - return animator; - }; - return Animation3; - }(Eventful2); - var TOUCH_CLICK_DELAY2 = 300; - var globalEventSupported2 = env2.domSupported; - var localNativeListenerNames2 = function() { - var mouseHandlerNames = [ - "click", - "dblclick", - "mousewheel", - "wheel", - "mouseout", - "mouseup", - "mousedown", - "mousemove", - "contextmenu" - ]; - var touchHandlerNames = [ - "touchstart", - "touchend", - "touchmove" - ]; - var pointerEventNameMap = { - pointerdown: 1, - pointerup: 1, - pointermove: 1, - pointerout: 1 - }; - var pointerHandlerNames = map3(mouseHandlerNames, function(name) { - var nm = name.replace("mouse", "pointer"); - return pointerEventNameMap.hasOwnProperty(nm) ? nm : name; - }); - return { - mouse: mouseHandlerNames, - touch: touchHandlerNames, - pointer: pointerHandlerNames - }; - }(); - var globalNativeListenerNames2 = { - mouse: ["mousemove", "mouseup"], - pointer: ["pointermove", "pointerup"] - }; - var wheelEventSupported2 = false; - function isPointerFromTouch2(event) { - var pointerType = event.pointerType; - return pointerType === "pen" || pointerType === "touch"; - } - function setTouchTimer2(scope) { - scope.touching = true; - if (scope.touchTimer != null) { - clearTimeout(scope.touchTimer); - scope.touchTimer = null; - } - scope.touchTimer = setTimeout(function() { - scope.touching = false; - scope.touchTimer = null; - }, 700); - } - function markTouch2(event) { - event && (event.zrByTouch = true); - } - function normalizeGlobalEvent2(instance, event) { - return normalizeEvent2(instance.dom, new FakeGlobalEvent2(instance, event), true); - } - function isLocalEl2(instance, el) { - var elTmp = el; - var isLocal = false; - while (elTmp && elTmp.nodeType !== 9 && !(isLocal = elTmp.domBelongToZr || elTmp !== el && elTmp === instance.painterRoot)) { - elTmp = elTmp.parentNode; - } - return isLocal; - } - var FakeGlobalEvent2 = /* @__PURE__ */ function() { - function FakeGlobalEvent3(instance, event) { - this.stopPropagation = noop2; - this.stopImmediatePropagation = noop2; - this.preventDefault = noop2; - this.type = event.type; - this.target = this.currentTarget = instance.dom; - this.pointerType = event.pointerType; - this.clientX = event.clientX; - this.clientY = event.clientY; - } - return FakeGlobalEvent3; - }(); - var localDOMHandlers2 = { - mousedown: function(event) { - event = normalizeEvent2(this.dom, event); - this.__mayPointerCapture = [event.zrX, event.zrY]; - this.trigger("mousedown", event); - }, - mousemove: function(event) { - event = normalizeEvent2(this.dom, event); - var downPoint = this.__mayPointerCapture; - if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) { - this.__togglePointerCapture(true); - } - this.trigger("mousemove", event); - }, - mouseup: function(event) { - event = normalizeEvent2(this.dom, event); - this.__togglePointerCapture(false); - this.trigger("mouseup", event); - }, - mouseout: function(event) { - event = normalizeEvent2(this.dom, event); - var element = event.toElement || event.relatedTarget; - if (!isLocalEl2(this, element)) { - if (this.__pointerCapturing) { - event.zrEventControl = "no_globalout"; - } - this.trigger("mouseout", event); - } - }, - wheel: function(event) { - wheelEventSupported2 = true; - event = normalizeEvent2(this.dom, event); - this.trigger("mousewheel", event); - }, - mousewheel: function(event) { - if (wheelEventSupported2) { - return; - } - event = normalizeEvent2(this.dom, event); - this.trigger("mousewheel", event); - }, - touchstart: function(event) { - event = normalizeEvent2(this.dom, event); - markTouch2(event); - this.__lastTouchMoment = /* @__PURE__ */ new Date(); - this.handler.processGesture(event, "start"); - localDOMHandlers2.mousemove.call(this, event); - localDOMHandlers2.mousedown.call(this, event); - }, - touchmove: function(event) { - event = normalizeEvent2(this.dom, event); - markTouch2(event); - this.handler.processGesture(event, "change"); - localDOMHandlers2.mousemove.call(this, event); - }, - touchend: function(event) { - event = normalizeEvent2(this.dom, event); - markTouch2(event); - this.handler.processGesture(event, "end"); - localDOMHandlers2.mouseup.call(this, event); - if (+/* @__PURE__ */ new Date() - +this.__lastTouchMoment < TOUCH_CLICK_DELAY2) { - localDOMHandlers2.click.call(this, event); - } - }, - pointerdown: function(event) { - localDOMHandlers2.mousedown.call(this, event); - }, - pointermove: function(event) { - if (!isPointerFromTouch2(event)) { - localDOMHandlers2.mousemove.call(this, event); - } - }, - pointerup: function(event) { - localDOMHandlers2.mouseup.call(this, event); - }, - pointerout: function(event) { - if (!isPointerFromTouch2(event)) { - localDOMHandlers2.mouseout.call(this, event); - } - } - }; - each17(["click", "dblclick", "contextmenu"], function(name) { - localDOMHandlers2[name] = function(event) { - event = normalizeEvent2(this.dom, event); - this.trigger(name, event); - }; - }); - var globalDOMHandlers2 = { - pointermove: function(event) { - if (!isPointerFromTouch2(event)) { - globalDOMHandlers2.mousemove.call(this, event); - } - }, - pointerup: function(event) { - globalDOMHandlers2.mouseup.call(this, event); - }, - mousemove: function(event) { - this.trigger("mousemove", event); - }, - mouseup: function(event) { - var pointerCaptureReleasing = this.__pointerCapturing; - this.__togglePointerCapture(false); - this.trigger("mouseup", event); - if (pointerCaptureReleasing) { - event.zrEventControl = "only_globalout"; - this.trigger("mouseout", event); - } - } - }; - function mountLocalDOMEventListeners2(instance, scope) { - var domHandlers = scope.domHandlers; - if (env2.pointerEventsSupported) { - each17(localNativeListenerNames2.pointer, function(nativeEventName) { - mountSingleDOMEventListener2(scope, nativeEventName, function(event) { - domHandlers[nativeEventName].call(instance, event); - }); - }); - } else { - if (env2.touchEventsSupported) { - each17(localNativeListenerNames2.touch, function(nativeEventName) { - mountSingleDOMEventListener2(scope, nativeEventName, function(event) { - domHandlers[nativeEventName].call(instance, event); - setTouchTimer2(scope); - }); - }); - } - each17(localNativeListenerNames2.mouse, function(nativeEventName) { - mountSingleDOMEventListener2(scope, nativeEventName, function(event) { - event = getNativeEvent2(event); - if (!scope.touching) { - domHandlers[nativeEventName].call(instance, event); - } - }); - }); - } - } - function mountGlobalDOMEventListeners2(instance, scope) { - if (env2.pointerEventsSupported) { - each17(globalNativeListenerNames2.pointer, mount); - } else if (!env2.touchEventsSupported) { - each17(globalNativeListenerNames2.mouse, mount); - } - function mount(nativeEventName) { - function nativeEventListener(event) { - event = getNativeEvent2(event); - if (!isLocalEl2(instance, event.target)) { - event = normalizeGlobalEvent2(instance, event); - scope.domHandlers[nativeEventName].call(instance, event); - } - } - mountSingleDOMEventListener2(scope, nativeEventName, nativeEventListener, { capture: true }); - } - } - function mountSingleDOMEventListener2(scope, nativeEventName, listener, opt) { - scope.mounted[nativeEventName] = listener; - scope.listenerOpts[nativeEventName] = opt; - addEventListener3(scope.domTarget, nativeEventName, listener, opt); - } - function unmountDOMEventListeners2(scope) { - var mounted = scope.mounted; - for (var nativeEventName in mounted) { - if (mounted.hasOwnProperty(nativeEventName)) { - removeEventListener3(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]); - } - } - scope.mounted = {}; - } - var DOMHandlerScope2 = /* @__PURE__ */ function() { - function DOMHandlerScope3(domTarget, domHandlers) { - this.mounted = {}; - this.listenerOpts = {}; - this.touching = false; - this.domTarget = domTarget; - this.domHandlers = domHandlers; - } - return DOMHandlerScope3; - }(); - var HandlerDomProxy2 = function(_super) { - __extends2(HandlerDomProxy3, _super); - function HandlerDomProxy3(dom, painterRoot) { - var _this = _super.call(this) || this; - _this.__pointerCapturing = false; - _this.dom = dom; - _this.painterRoot = painterRoot; - _this._localHandlerScope = new DOMHandlerScope2(dom, localDOMHandlers2); - if (globalEventSupported2) { - _this._globalHandlerScope = new DOMHandlerScope2(document, globalDOMHandlers2); - } - mountLocalDOMEventListeners2(_this, _this._localHandlerScope); - return _this; - } - HandlerDomProxy3.prototype.dispose = function() { - unmountDOMEventListeners2(this._localHandlerScope); - if (globalEventSupported2) { - unmountDOMEventListeners2(this._globalHandlerScope); - } - }; - HandlerDomProxy3.prototype.setCursor = function(cursorStyle) { - this.dom.style && (this.dom.style.cursor = cursorStyle || "default"); - }; - HandlerDomProxy3.prototype.__togglePointerCapture = function(isPointerCapturing) { - this.__mayPointerCapture = null; - if (globalEventSupported2 && +this.__pointerCapturing ^ +isPointerCapturing) { - this.__pointerCapturing = isPointerCapturing; - var globalHandlerScope = this._globalHandlerScope; - isPointerCapturing ? mountGlobalDOMEventListeners2(this, globalHandlerScope) : unmountDOMEventListeners2(globalHandlerScope); - } - }; - return HandlerDomProxy3; - }(Eventful2); - var dpr2 = 1; - if (env2.hasGlobalWindow) { - dpr2 = Math.max(window.devicePixelRatio || window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI || 1, 1); - } - var devicePixelRatio2 = dpr2; - var DARK_MODE_THRESHOLD2 = 0.4; - var DARK_LABEL_COLOR2 = "#333"; - var LIGHT_LABEL_COLOR2 = "#ccc"; - var LIGHTER_LABEL_COLOR2 = "#eee"; - var mIdentity2 = identity2; - var EPSILON$2 = 5e-5; - function isNotAroundZero$1(val) { - return val > EPSILON$2 || val < -EPSILON$2; - } - var scaleTmp2 = []; - var tmpTransform2 = []; - var originTransform2 = create$1(); - var abs2 = Math.abs; - var Transformable2 = function() { - function Transformable3() { - } - Transformable3.prototype.getLocalTransform = function(m3) { - return Transformable3.getLocalTransform(this, m3); - }; - Transformable3.prototype.setPosition = function(arr) { - this.x = arr[0]; - this.y = arr[1]; - }; - Transformable3.prototype.setScale = function(arr) { - this.scaleX = arr[0]; - this.scaleY = arr[1]; - }; - Transformable3.prototype.setSkew = function(arr) { - this.skewX = arr[0]; - this.skewY = arr[1]; - }; - Transformable3.prototype.setOrigin = function(arr) { - this.originX = arr[0]; - this.originY = arr[1]; - }; - Transformable3.prototype.needLocalTransform = function() { - return isNotAroundZero$1(this.rotation) || isNotAroundZero$1(this.x) || isNotAroundZero$1(this.y) || isNotAroundZero$1(this.scaleX - 1) || isNotAroundZero$1(this.scaleY - 1) || isNotAroundZero$1(this.skewX) || isNotAroundZero$1(this.skewY); - }; - Transformable3.prototype.updateTransform = function() { - var parentTransform = this.parent && this.parent.transform; - var needLocalTransform = this.needLocalTransform(); - var m3 = this.transform; - if (!(needLocalTransform || parentTransform)) { - if (m3) { - mIdentity2(m3); - this.invTransform = null; - } - return; - } - m3 = m3 || create$1(); - if (needLocalTransform) { - this.getLocalTransform(m3); - } else { - mIdentity2(m3); - } - if (parentTransform) { - if (needLocalTransform) { - mul$1(m3, parentTransform, m3); - } else { - copy$1(m3, parentTransform); - } - } - this.transform = m3; - this._resolveGlobalScaleRatio(m3); - }; - Transformable3.prototype._resolveGlobalScaleRatio = function(m3) { - var globalScaleRatio = this.globalScaleRatio; - if (globalScaleRatio != null && globalScaleRatio !== 1) { - this.getGlobalScale(scaleTmp2); - var relX = scaleTmp2[0] < 0 ? -1 : 1; - var relY = scaleTmp2[1] < 0 ? -1 : 1; - var sx = ((scaleTmp2[0] - relX) * globalScaleRatio + relX) / scaleTmp2[0] || 0; - var sy = ((scaleTmp2[1] - relY) * globalScaleRatio + relY) / scaleTmp2[1] || 0; - m3[0] *= sx; - m3[1] *= sx; - m3[2] *= sy; - m3[3] *= sy; - } - this.invTransform = this.invTransform || create$1(); - invert2(this.invTransform, m3); - }; - Transformable3.prototype.getComputedTransform = function() { - var transformNode = this; - var ancestors = []; - while (transformNode) { - ancestors.push(transformNode); - transformNode = transformNode.parent; - } - while (transformNode = ancestors.pop()) { - transformNode.updateTransform(); - } - return this.transform; - }; - Transformable3.prototype.setLocalTransform = function(m3) { - if (!m3) { - return; - } - var sx = m3[0] * m3[0] + m3[1] * m3[1]; - var sy = m3[2] * m3[2] + m3[3] * m3[3]; - var rotation = Math.atan2(m3[1], m3[0]); - var shearX = Math.PI / 2 + rotation - Math.atan2(m3[3], m3[2]); - sy = Math.sqrt(sy) * Math.cos(shearX); - sx = Math.sqrt(sx); - this.skewX = shearX; - this.skewY = 0; - this.rotation = -rotation; - this.x = +m3[4]; - this.y = +m3[5]; - this.scaleX = sx; - this.scaleY = sy; - this.originX = 0; - this.originY = 0; - }; - Transformable3.prototype.decomposeTransform = function() { - if (!this.transform) { - return; - } - var parent = this.parent; - var m3 = this.transform; - if (parent && parent.transform) { - parent.invTransform = parent.invTransform || create$1(); - mul$1(tmpTransform2, parent.invTransform, m3); - m3 = tmpTransform2; - } - var ox = this.originX; - var oy = this.originY; - if (ox || oy) { - originTransform2[4] = ox; - originTransform2[5] = oy; - mul$1(tmpTransform2, m3, originTransform2); - tmpTransform2[4] -= ox; - tmpTransform2[5] -= oy; - m3 = tmpTransform2; - } - this.setLocalTransform(m3); - }; - Transformable3.prototype.getGlobalScale = function(out3) { - var m3 = this.transform; - out3 = out3 || []; - if (!m3) { - out3[0] = 1; - out3[1] = 1; - return out3; - } - out3[0] = Math.sqrt(m3[0] * m3[0] + m3[1] * m3[1]); - out3[1] = Math.sqrt(m3[2] * m3[2] + m3[3] * m3[3]); - if (m3[0] < 0) { - out3[0] = -out3[0]; - } - if (m3[3] < 0) { - out3[1] = -out3[1]; - } - return out3; - }; - Transformable3.prototype.transformCoordToLocal = function(x, y) { - var v23 = [x, y]; - var invTransform = this.invTransform; - if (invTransform) { - applyTransform3(v23, v23, invTransform); - } - return v23; - }; - Transformable3.prototype.transformCoordToGlobal = function(x, y) { - var v23 = [x, y]; - var transform2 = this.transform; - if (transform2) { - applyTransform3(v23, v23, transform2); - } - return v23; - }; - Transformable3.prototype.getLineScale = function() { - var m3 = this.transform; - return m3 && abs2(m3[0] - 1) > 1e-10 && abs2(m3[3] - 1) > 1e-10 ? Math.sqrt(abs2(m3[0] * m3[3] - m3[2] * m3[1])) : 1; - }; - Transformable3.prototype.copyTransform = function(source) { - copyTransform2(this, source); - }; - Transformable3.getLocalTransform = function(target, m3) { - m3 = m3 || []; - var ox = target.originX || 0; - var oy = target.originY || 0; - var sx = target.scaleX; - var sy = target.scaleY; - var ax = target.anchorX; - var ay = target.anchorY; - var rotation = target.rotation || 0; - var x = target.x; - var y = target.y; - var skewX = target.skewX ? Math.tan(target.skewX) : 0; - var skewY = target.skewY ? Math.tan(-target.skewY) : 0; - if (ox || oy || ax || ay) { - var dx = ox + ax; - var dy = oy + ay; - m3[4] = -dx * sx - skewX * dy * sy; - m3[5] = -dy * sy - skewY * dx * sx; - } else { - m3[4] = m3[5] = 0; - } - m3[0] = sx; - m3[3] = sy; - m3[1] = skewY * sx; - m3[2] = skewX * sy; - rotation && rotate2(m3, m3, rotation); - m3[4] += ox + x; - m3[5] += oy + y; - return m3; - }; - Transformable3.initDefaultProps = function() { - var proto3 = Transformable3.prototype; - proto3.scaleX = proto3.scaleY = proto3.globalScaleRatio = 1; - proto3.x = proto3.y = proto3.originX = proto3.originY = proto3.skewX = proto3.skewY = proto3.rotation = proto3.anchorX = proto3.anchorY = 0; - }(); - return Transformable3; - }(); - var TRANSFORMABLE_PROPS2 = [ - "x", - "y", - "originX", - "originY", - "anchorX", - "anchorY", - "rotation", - "scaleX", - "scaleY", - "skewX", - "skewY" - ]; - function copyTransform2(target, source) { - for (var i2 = 0; i2 < TRANSFORMABLE_PROPS2.length; i2++) { - var propName = TRANSFORMABLE_PROPS2[i2]; - target[propName] = source[propName]; - } - } - var textWidthCache2 = {}; - function getWidth2(text, font) { - font = font || DEFAULT_FONT2; - var cacheOfFont = textWidthCache2[font]; - if (!cacheOfFont) { - cacheOfFont = textWidthCache2[font] = new LRU2(500); - } - var width = cacheOfFont.get(text); - if (width == null) { - width = platformApi2.measureText(text, font).width; - cacheOfFont.put(text, width); - } - return width; - } - function innerGetBoundingRect2(text, font, textAlign, textBaseline) { - var width = getWidth2(text, font); - var height = getLineHeight2(font); - var x = adjustTextX2(0, width, textAlign); - var y = adjustTextY$1(0, height, textBaseline); - var rect = new BoundingRect2(x, y, width, height); - return rect; - } - function getBoundingRect2(text, font, textAlign, textBaseline) { - var textLines = ((text || "") + "").split("\n"); - var len3 = textLines.length; - if (len3 === 1) { - return innerGetBoundingRect2(textLines[0], font, textAlign, textBaseline); - } else { - var uniondRect = new BoundingRect2(0, 0, 0, 0); - for (var i2 = 0; i2 < textLines.length; i2++) { - var rect = innerGetBoundingRect2(textLines[i2], font, textAlign, textBaseline); - i2 === 0 ? uniondRect.copy(rect) : uniondRect.union(rect); - } - return uniondRect; - } - } - function adjustTextX2(x, width, textAlign) { - if (textAlign === "right") { - x -= width; - } else if (textAlign === "center") { - x -= width / 2; - } - return x; - } - function adjustTextY$1(y, height, verticalAlign) { - if (verticalAlign === "middle") { - y -= height / 2; - } else if (verticalAlign === "bottom") { - y -= height; - } - return y; - } - function getLineHeight2(font) { - return getWidth2("\u56FD", font); - } - function parsePercent3(value, maxValue) { - if (typeof value === "string") { - if (value.lastIndexOf("%") >= 0) { - return parseFloat(value) / 100 * maxValue; - } - return parseFloat(value); - } - return value; - } - function calculateTextPosition2(out3, opts, rect) { - var textPosition = opts.position || "inside"; - var distance3 = opts.distance != null ? opts.distance : 5; - var height = rect.height; - var width = rect.width; - var halfHeight = height / 2; - var x = rect.x; - var y = rect.y; - var textAlign = "left"; - var textVerticalAlign = "top"; - if (textPosition instanceof Array) { - x += parsePercent3(textPosition[0], rect.width); - y += parsePercent3(textPosition[1], rect.height); - textAlign = null; - textVerticalAlign = null; - } else { - switch (textPosition) { - case "left": - x -= distance3; - y += halfHeight; - textAlign = "right"; - textVerticalAlign = "middle"; - break; - case "right": - x += distance3 + width; - y += halfHeight; - textVerticalAlign = "middle"; - break; - case "top": - x += width / 2; - y -= distance3; - textAlign = "center"; - textVerticalAlign = "bottom"; - break; - case "bottom": - x += width / 2; - y += height + distance3; - textAlign = "center"; - break; - case "inside": - x += width / 2; - y += halfHeight; - textAlign = "center"; - textVerticalAlign = "middle"; - break; - case "insideLeft": - x += distance3; - y += halfHeight; - textVerticalAlign = "middle"; - break; - case "insideRight": - x += width - distance3; - y += halfHeight; - textAlign = "right"; - textVerticalAlign = "middle"; - break; - case "insideTop": - x += width / 2; - y += distance3; - textAlign = "center"; - break; - case "insideBottom": - x += width / 2; - y += height - distance3; - textAlign = "center"; - textVerticalAlign = "bottom"; - break; - case "insideTopLeft": - x += distance3; - y += distance3; - break; - case "insideTopRight": - x += width - distance3; - y += distance3; - textAlign = "right"; - break; - case "insideBottomLeft": - x += distance3; - y += height - distance3; - textVerticalAlign = "bottom"; - break; - case "insideBottomRight": - x += width - distance3; - y += height - distance3; - textAlign = "right"; - textVerticalAlign = "bottom"; - break; - } - } - out3 = out3 || {}; - out3.x = x; - out3.y = y; - out3.align = textAlign; - out3.verticalAlign = textVerticalAlign; - return out3; - } - var PRESERVED_NORMAL_STATE2 = "__zr_normal__"; - var PRIMARY_STATES_KEYS3 = TRANSFORMABLE_PROPS2.concat(["ignore"]); - var DEFAULT_ANIMATABLE_MAP2 = reduce2(TRANSFORMABLE_PROPS2, function(obj, key) { - obj[key] = true; - return obj; - }, { ignore: false }); - var tmpTextPosCalcRes2 = {}; - var tmpBoundingRect2 = new BoundingRect2(0, 0, 0, 0); - var Element3 = function() { - function Element4(props) { - this.id = guid2(); - this.animators = []; - this.currentStates = []; - this.states = {}; - this._init(props); - } - Element4.prototype._init = function(props) { - this.attr(props); - }; - Element4.prototype.drift = function(dx, dy, e3) { - switch (this.draggable) { - case "horizontal": - dy = 0; - break; - case "vertical": - dx = 0; - break; - } - var m3 = this.transform; - if (!m3) { - m3 = this.transform = [1, 0, 0, 1, 0, 0]; - } - m3[4] += dx; - m3[5] += dy; - this.decomposeTransform(); - this.markRedraw(); - }; - Element4.prototype.beforeUpdate = function() { - }; - Element4.prototype.afterUpdate = function() { - }; - Element4.prototype.update = function() { - this.updateTransform(); - if (this.__dirty) { - this.updateInnerText(); - } - }; - Element4.prototype.updateInnerText = function(forceUpdate) { - var textEl = this._textContent; - if (textEl && (!textEl.ignore || forceUpdate)) { - if (!this.textConfig) { - this.textConfig = {}; - } - var textConfig = this.textConfig; - var isLocal = textConfig.local; - var innerTransformable = textEl.innerTransformable; - var textAlign = void 0; - var textVerticalAlign = void 0; - var textStyleChanged = false; - innerTransformable.parent = isLocal ? this : null; - var innerOrigin = false; - innerTransformable.copyTransform(textEl); - if (textConfig.position != null) { - var layoutRect = tmpBoundingRect2; - if (textConfig.layoutRect) { - layoutRect.copy(textConfig.layoutRect); - } else { - layoutRect.copy(this.getBoundingRect()); - } - if (!isLocal) { - layoutRect.applyTransform(this.transform); - } - if (this.calculateTextPosition) { - this.calculateTextPosition(tmpTextPosCalcRes2, textConfig, layoutRect); - } else { - calculateTextPosition2(tmpTextPosCalcRes2, textConfig, layoutRect); - } - innerTransformable.x = tmpTextPosCalcRes2.x; - innerTransformable.y = tmpTextPosCalcRes2.y; - textAlign = tmpTextPosCalcRes2.align; - textVerticalAlign = tmpTextPosCalcRes2.verticalAlign; - var textOrigin = textConfig.origin; - if (textOrigin && textConfig.rotation != null) { - var relOriginX = void 0; - var relOriginY = void 0; - if (textOrigin === "center") { - relOriginX = layoutRect.width * 0.5; - relOriginY = layoutRect.height * 0.5; - } else { - relOriginX = parsePercent3(textOrigin[0], layoutRect.width); - relOriginY = parsePercent3(textOrigin[1], layoutRect.height); - } - innerOrigin = true; - innerTransformable.originX = -innerTransformable.x + relOriginX + (isLocal ? 0 : layoutRect.x); - innerTransformable.originY = -innerTransformable.y + relOriginY + (isLocal ? 0 : layoutRect.y); - } - } - if (textConfig.rotation != null) { - innerTransformable.rotation = textConfig.rotation; - } - var textOffset = textConfig.offset; - if (textOffset) { - innerTransformable.x += textOffset[0]; - innerTransformable.y += textOffset[1]; - if (!innerOrigin) { - innerTransformable.originX = -textOffset[0]; - innerTransformable.originY = -textOffset[1]; - } - } - var isInside = textConfig.inside == null ? typeof textConfig.position === "string" && textConfig.position.indexOf("inside") >= 0 : textConfig.inside; - var innerTextDefaultStyle = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {}); - var textFill = void 0; - var textStroke = void 0; - var autoStroke = void 0; - if (isInside && this.canBeInsideText()) { - textFill = textConfig.insideFill; - textStroke = textConfig.insideStroke; - if (textFill == null || textFill === "auto") { - textFill = this.getInsideTextFill(); - } - if (textStroke == null || textStroke === "auto") { - textStroke = this.getInsideTextStroke(textFill); - autoStroke = true; - } - } else { - textFill = textConfig.outsideFill; - textStroke = textConfig.outsideStroke; - if (textFill == null || textFill === "auto") { - textFill = this.getOutsideFill(); - } - if (textStroke == null || textStroke === "auto") { - textStroke = this.getOutsideStroke(textFill); - autoStroke = true; - } - } - textFill = textFill || "#000"; - if (textFill !== innerTextDefaultStyle.fill || textStroke !== innerTextDefaultStyle.stroke || autoStroke !== innerTextDefaultStyle.autoStroke || textAlign !== innerTextDefaultStyle.align || textVerticalAlign !== innerTextDefaultStyle.verticalAlign) { - textStyleChanged = true; - innerTextDefaultStyle.fill = textFill; - innerTextDefaultStyle.stroke = textStroke; - innerTextDefaultStyle.autoStroke = autoStroke; - innerTextDefaultStyle.align = textAlign; - innerTextDefaultStyle.verticalAlign = textVerticalAlign; - textEl.setDefaultTextStyle(innerTextDefaultStyle); - } - textEl.__dirty |= REDRAW_BIT2; - if (textStyleChanged) { - textEl.dirtyStyle(true); - } - } - }; - Element4.prototype.canBeInsideText = function() { - return true; - }; - Element4.prototype.getInsideTextFill = function() { - return "#fff"; - }; - Element4.prototype.getInsideTextStroke = function(textFill) { - return "#000"; - }; - Element4.prototype.getOutsideFill = function() { - return this.__zr && this.__zr.isDarkMode() ? LIGHT_LABEL_COLOR2 : DARK_LABEL_COLOR2; - }; - Element4.prototype.getOutsideStroke = function(textFill) { - var backgroundColor3 = this.__zr && this.__zr.getBackgroundColor(); - var colorArr = typeof backgroundColor3 === "string" && parse2(backgroundColor3); - if (!colorArr) { - colorArr = [255, 255, 255, 1]; - } - var alpha = colorArr[3]; - var isDark = this.__zr.isDarkMode(); - for (var i2 = 0; i2 < 3; i2++) { - colorArr[i2] = colorArr[i2] * alpha + (isDark ? 0 : 255) * (1 - alpha); - } - colorArr[3] = 1; - return stringify2(colorArr, "rgba"); - }; - Element4.prototype.traverse = function(cb, context) { - }; - Element4.prototype.attrKV = function(key, value) { - if (key === "textConfig") { - this.setTextConfig(value); - } else if (key === "textContent") { - this.setTextContent(value); - } else if (key === "clipPath") { - this.setClipPath(value); - } else if (key === "extra") { - this.extra = this.extra || {}; - extend3(this.extra, value); - } else { - this[key] = value; - } - }; - Element4.prototype.hide = function() { - this.ignore = true; - this.markRedraw(); - }; - Element4.prototype.show = function() { - this.ignore = false; - this.markRedraw(); - }; - Element4.prototype.attr = function(keyOrObj, value) { - if (typeof keyOrObj === "string") { - this.attrKV(keyOrObj, value); - } else if (isObject5(keyOrObj)) { - var obj = keyOrObj; - var keysArr = keys2(obj); - for (var i2 = 0; i2 < keysArr.length; i2++) { - var key = keysArr[i2]; - this.attrKV(key, keyOrObj[key]); - } - } - this.markRedraw(); - return this; - }; - Element4.prototype.saveCurrentToNormalState = function(toState) { - this._innerSaveToNormal(toState); - var normalState = this._normalState; - for (var i2 = 0; i2 < this.animators.length; i2++) { - var animator = this.animators[i2]; - var fromStateTransition = animator.__fromStateTransition; - if (animator.getLoop() || fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE2) { - continue; - } - var targetName = animator.targetName; - var target = targetName ? normalState[targetName] : normalState; - animator.saveTo(target); - } - }; - Element4.prototype._innerSaveToNormal = function(toState) { - var normalState = this._normalState; - if (!normalState) { - normalState = this._normalState = {}; - } - if (toState.textConfig && !normalState.textConfig) { - normalState.textConfig = this.textConfig; - } - this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS3); - }; - Element4.prototype._savePrimaryToNormal = function(toState, normalState, primaryKeys) { - for (var i2 = 0; i2 < primaryKeys.length; i2++) { - var key = primaryKeys[i2]; - if (toState[key] != null && !(key in normalState)) { - normalState[key] = this[key]; - } - } - }; - Element4.prototype.hasState = function() { - return this.currentStates.length > 0; - }; - Element4.prototype.getState = function(name) { - return this.states[name]; - }; - Element4.prototype.ensureState = function(name) { - var states = this.states; - if (!states[name]) { - states[name] = {}; - } - return states[name]; - }; - Element4.prototype.clearStates = function(noAnimation) { - this.useState(PRESERVED_NORMAL_STATE2, false, noAnimation); - }; - Element4.prototype.useState = function(stateName, keepCurrentStates, noAnimation, forceUseHoverLayer) { - var toNormalState = stateName === PRESERVED_NORMAL_STATE2; - var hasStates = this.hasState(); - if (!hasStates && toNormalState) { - return; - } - var currentStates = this.currentStates; - var animationCfg = this.stateTransition; - if (indexOf2(currentStates, stateName) >= 0 && (keepCurrentStates || currentStates.length === 1)) { - return; - } - var state; - if (this.stateProxy && !toNormalState) { - state = this.stateProxy(stateName); - } - if (!state) { - state = this.states && this.states[stateName]; - } - if (!state && !toNormalState) { - logError2("State " + stateName + " not exists."); - return; - } - if (!toNormalState) { - this.saveCurrentToNormalState(state); - } - var useHoverLayer = !!(state && state.hoverLayer || forceUseHoverLayer); - if (useHoverLayer) { - this._toggleHoverLayerFlag(true); - } - this._applyStateObj(stateName, state, this._normalState, keepCurrentStates, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg); - var textContent = this._textContent; - var textGuide = this._textGuide; - if (textContent) { - textContent.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer); - } - if (textGuide) { - textGuide.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer); - } - if (toNormalState) { - this.currentStates = []; - this._normalState = {}; - } else { - if (!keepCurrentStates) { - this.currentStates = [stateName]; - } else { - this.currentStates.push(stateName); - } - } - this._updateAnimationTargets(); - this.markRedraw(); - if (!useHoverLayer && this.__inHover) { - this._toggleHoverLayerFlag(false); - this.__dirty &= ~REDRAW_BIT2; - } - return state; - }; - Element4.prototype.useStates = function(states, noAnimation, forceUseHoverLayer) { - if (!states.length) { - this.clearStates(); - } else { - var stateObjects = []; - var currentStates = this.currentStates; - var len3 = states.length; - var notChange = len3 === currentStates.length; - if (notChange) { - for (var i2 = 0; i2 < len3; i2++) { - if (states[i2] !== currentStates[i2]) { - notChange = false; - break; - } - } - } - if (notChange) { - return; - } - for (var i2 = 0; i2 < len3; i2++) { - var stateName = states[i2]; - var stateObj = void 0; - if (this.stateProxy) { - stateObj = this.stateProxy(stateName, states); - } - if (!stateObj) { - stateObj = this.states[stateName]; - } - if (stateObj) { - stateObjects.push(stateObj); - } - } - var lastStateObj = stateObjects[len3 - 1]; - var useHoverLayer = !!(lastStateObj && lastStateObj.hoverLayer || forceUseHoverLayer); - if (useHoverLayer) { - this._toggleHoverLayerFlag(true); - } - var mergedState = this._mergeStates(stateObjects); - var animationCfg = this.stateTransition; - this.saveCurrentToNormalState(mergedState); - this._applyStateObj(states.join(","), mergedState, this._normalState, false, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg); - var textContent = this._textContent; - var textGuide = this._textGuide; - if (textContent) { - textContent.useStates(states, noAnimation, useHoverLayer); - } - if (textGuide) { - textGuide.useStates(states, noAnimation, useHoverLayer); - } - this._updateAnimationTargets(); - this.currentStates = states.slice(); - this.markRedraw(); - if (!useHoverLayer && this.__inHover) { - this._toggleHoverLayerFlag(false); - this.__dirty &= ~REDRAW_BIT2; - } - } - }; - Element4.prototype.isSilent = function() { - var isSilent = this.silent; - var ancestor = this.parent; - while (!isSilent && ancestor) { - if (ancestor.silent) { - isSilent = true; - break; - } - ancestor = ancestor.parent; - } - return isSilent; - }; - Element4.prototype._updateAnimationTargets = function() { - for (var i2 = 0; i2 < this.animators.length; i2++) { - var animator = this.animators[i2]; - if (animator.targetName) { - animator.changeTarget(this[animator.targetName]); - } - } - }; - Element4.prototype.removeState = function(state) { - var idx = indexOf2(this.currentStates, state); - if (idx >= 0) { - var currentStates = this.currentStates.slice(); - currentStates.splice(idx, 1); - this.useStates(currentStates); - } - }; - Element4.prototype.replaceState = function(oldState, newState, forceAdd) { - var currentStates = this.currentStates.slice(); - var idx = indexOf2(currentStates, oldState); - var newStateExists = indexOf2(currentStates, newState) >= 0; - if (idx >= 0) { - if (!newStateExists) { - currentStates[idx] = newState; - } else { - currentStates.splice(idx, 1); - } - } else if (forceAdd && !newStateExists) { - currentStates.push(newState); - } - this.useStates(currentStates); - }; - Element4.prototype.toggleState = function(state, enable) { - if (enable) { - this.useState(state, true); - } else { - this.removeState(state); - } - }; - Element4.prototype._mergeStates = function(states) { - var mergedState = {}; - var mergedTextConfig; - for (var i2 = 0; i2 < states.length; i2++) { - var state = states[i2]; - extend3(mergedState, state); - if (state.textConfig) { - mergedTextConfig = mergedTextConfig || {}; - extend3(mergedTextConfig, state.textConfig); - } - } - if (mergedTextConfig) { - mergedState.textConfig = mergedTextConfig; - } - return mergedState; - }; - Element4.prototype._applyStateObj = function(stateName, state, normalState, keepCurrentStates, transition, animationCfg) { - var needsRestoreToNormal = !(state && keepCurrentStates); - if (state && state.textConfig) { - this.textConfig = extend3({}, keepCurrentStates ? this.textConfig : normalState.textConfig); - extend3(this.textConfig, state.textConfig); - } else if (needsRestoreToNormal) { - if (normalState.textConfig) { - this.textConfig = normalState.textConfig; - } - } - var transitionTarget = {}; - var hasTransition = false; - for (var i2 = 0; i2 < PRIMARY_STATES_KEYS3.length; i2++) { - var key = PRIMARY_STATES_KEYS3[i2]; - var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP2[key]; - if (state && state[key] != null) { - if (propNeedsTransition) { - hasTransition = true; - transitionTarget[key] = state[key]; - } else { - this[key] = state[key]; - } - } else if (needsRestoreToNormal) { - if (normalState[key] != null) { - if (propNeedsTransition) { - hasTransition = true; - transitionTarget[key] = normalState[key]; - } else { - this[key] = normalState[key]; - } - } - } - } - if (!transition) { - for (var i2 = 0; i2 < this.animators.length; i2++) { - var animator = this.animators[i2]; - var targetName = animator.targetName; - if (!animator.getLoop()) { - animator.__changeFinalValue(targetName ? (state || normalState)[targetName] : state || normalState); - } - } - } - if (hasTransition) { - this._transitionState(stateName, transitionTarget, animationCfg); - } - }; - Element4.prototype._attachComponent = function(componentEl) { - if (componentEl.__zr && !componentEl.__hostTarget) { - if (true) { - throw new Error("Text element has been added to zrender."); - } - return; - } - if (componentEl === this) { - if (true) { - throw new Error("Recursive component attachment."); - } - return; - } - var zr = this.__zr; - if (zr) { - componentEl.addSelfToZr(zr); - } - componentEl.__zr = zr; - componentEl.__hostTarget = this; - }; - Element4.prototype._detachComponent = function(componentEl) { - if (componentEl.__zr) { - componentEl.removeSelfFromZr(componentEl.__zr); - } - componentEl.__zr = null; - componentEl.__hostTarget = null; - }; - Element4.prototype.getClipPath = function() { - return this._clipPath; - }; - Element4.prototype.setClipPath = function(clipPath) { - if (this._clipPath && this._clipPath !== clipPath) { - this.removeClipPath(); - } - this._attachComponent(clipPath); - this._clipPath = clipPath; - this.markRedraw(); - }; - Element4.prototype.removeClipPath = function() { - var clipPath = this._clipPath; - if (clipPath) { - this._detachComponent(clipPath); - this._clipPath = null; - this.markRedraw(); - } - }; - Element4.prototype.getTextContent = function() { - return this._textContent; - }; - Element4.prototype.setTextContent = function(textEl) { - var previousTextContent = this._textContent; - if (previousTextContent === textEl) { - return; - } - if (previousTextContent && previousTextContent !== textEl) { - this.removeTextContent(); - } - if (true) { - if (textEl.__zr && !textEl.__hostTarget) { - throw new Error("Text element has been added to zrender."); - } - } - textEl.innerTransformable = new Transformable2(); - this._attachComponent(textEl); - this._textContent = textEl; - this.markRedraw(); - }; - Element4.prototype.setTextConfig = function(cfg) { - if (!this.textConfig) { - this.textConfig = {}; - } - extend3(this.textConfig, cfg); - this.markRedraw(); - }; - Element4.prototype.removeTextConfig = function() { - this.textConfig = null; - this.markRedraw(); - }; - Element4.prototype.removeTextContent = function() { - var textEl = this._textContent; - if (textEl) { - textEl.innerTransformable = null; - this._detachComponent(textEl); - this._textContent = null; - this._innerTextDefaultStyle = null; - this.markRedraw(); - } - }; - Element4.prototype.getTextGuideLine = function() { - return this._textGuide; - }; - Element4.prototype.setTextGuideLine = function(guideLine) { - if (this._textGuide && this._textGuide !== guideLine) { - this.removeTextGuideLine(); - } - this._attachComponent(guideLine); - this._textGuide = guideLine; - this.markRedraw(); - }; - Element4.prototype.removeTextGuideLine = function() { - var textGuide = this._textGuide; - if (textGuide) { - this._detachComponent(textGuide); - this._textGuide = null; - this.markRedraw(); - } - }; - Element4.prototype.markRedraw = function() { - this.__dirty |= REDRAW_BIT2; - var zr = this.__zr; - if (zr) { - if (this.__inHover) { - zr.refreshHover(); - } else { - zr.refresh(); - } - } - if (this.__hostTarget) { - this.__hostTarget.markRedraw(); - } - }; - Element4.prototype.dirty = function() { - this.markRedraw(); - }; - Element4.prototype._toggleHoverLayerFlag = function(inHover) { - this.__inHover = inHover; - var textContent = this._textContent; - var textGuide = this._textGuide; - if (textContent) { - textContent.__inHover = inHover; - } - if (textGuide) { - textGuide.__inHover = inHover; - } - }; - Element4.prototype.addSelfToZr = function(zr) { - if (this.__zr === zr) { - return; - } - this.__zr = zr; - var animators = this.animators; - if (animators) { - for (var i2 = 0; i2 < animators.length; i2++) { - zr.animation.addAnimator(animators[i2]); - } - } - if (this._clipPath) { - this._clipPath.addSelfToZr(zr); - } - if (this._textContent) { - this._textContent.addSelfToZr(zr); - } - if (this._textGuide) { - this._textGuide.addSelfToZr(zr); - } - }; - Element4.prototype.removeSelfFromZr = function(zr) { - if (!this.__zr) { - return; - } - this.__zr = null; - var animators = this.animators; - if (animators) { - for (var i2 = 0; i2 < animators.length; i2++) { - zr.animation.removeAnimator(animators[i2]); - } - } - if (this._clipPath) { - this._clipPath.removeSelfFromZr(zr); - } - if (this._textContent) { - this._textContent.removeSelfFromZr(zr); - } - if (this._textGuide) { - this._textGuide.removeSelfFromZr(zr); - } - }; - Element4.prototype.animate = function(key, loop, allowDiscreteAnimation) { - var target = key ? this[key] : this; - if (true) { - if (!target) { - logError2('Property "' + key + '" is not existed in element ' + this.id); - return; - } - } - var animator = new Animator2(target, loop, allowDiscreteAnimation); - key && (animator.targetName = key); - this.addAnimator(animator, key); - return animator; - }; - Element4.prototype.addAnimator = function(animator, key) { - var zr = this.__zr; - var el = this; - animator.during(function() { - el.updateDuringAnimation(key); - }).done(function() { - var animators = el.animators; - var idx = indexOf2(animators, animator); - if (idx >= 0) { - animators.splice(idx, 1); - } - }); - this.animators.push(animator); - if (zr) { - zr.animation.addAnimator(animator); - } - zr && zr.wakeUp(); - }; - Element4.prototype.updateDuringAnimation = function(key) { - this.markRedraw(); - }; - Element4.prototype.stopAnimation = function(scope, forwardToLast) { - var animators = this.animators; - var len3 = animators.length; - var leftAnimators = []; - for (var i2 = 0; i2 < len3; i2++) { - var animator = animators[i2]; - if (!scope || scope === animator.scope) { - animator.stop(forwardToLast); - } else { - leftAnimators.push(animator); - } - } - this.animators = leftAnimators; - return this; - }; - Element4.prototype.animateTo = function(target, cfg, animationProps) { - animateTo2(this, target, cfg, animationProps); - }; - Element4.prototype.animateFrom = function(target, cfg, animationProps) { - animateTo2(this, target, cfg, animationProps, true); - }; - Element4.prototype._transitionState = function(stateName, target, cfg, animationProps) { - var animators = animateTo2(this, target, cfg, animationProps); - for (var i2 = 0; i2 < animators.length; i2++) { - animators[i2].__fromStateTransition = stateName; - } - }; - Element4.prototype.getBoundingRect = function() { - return null; - }; - Element4.prototype.getPaintRect = function() { - return null; - }; - Element4.initDefaultProps = function() { - var elProto = Element4.prototype; - elProto.type = "element"; - elProto.name = ""; - elProto.ignore = elProto.silent = elProto.isGroup = elProto.draggable = elProto.dragging = elProto.ignoreClip = elProto.__inHover = false; - elProto.__dirty = REDRAW_BIT2; - var logs = {}; - function logDeprecatedError(key, xKey, yKey) { - if (!logs[key + xKey + yKey]) { - console.warn("DEPRECATED: '" + key + "' has been deprecated. use '" + xKey + "', '" + yKey + "' instead"); - logs[key + xKey + yKey] = true; - } - } - function createLegacyProperty(key, privateKey, xKey, yKey) { - Object.defineProperty(elProto, key, { - get: function() { - if (true) { - logDeprecatedError(key, xKey, yKey); - } - if (!this[privateKey]) { - var pos = this[privateKey] = []; - enhanceArray(this, pos); - } - return this[privateKey]; - }, - set: function(pos) { - if (true) { - logDeprecatedError(key, xKey, yKey); - } - this[xKey] = pos[0]; - this[yKey] = pos[1]; - this[privateKey] = pos; - enhanceArray(this, pos); - } - }); - function enhanceArray(self2, pos) { - Object.defineProperty(pos, 0, { - get: function() { - return self2[xKey]; - }, - set: function(val) { - self2[xKey] = val; - } - }); - Object.defineProperty(pos, 1, { - get: function() { - return self2[yKey]; - }, - set: function(val) { - self2[yKey] = val; - } - }); - } - } - if (Object.defineProperty) { - createLegacyProperty("position", "_legacyPos", "x", "y"); - createLegacyProperty("scale", "_legacyScale", "scaleX", "scaleY"); - createLegacyProperty("origin", "_legacyOrigin", "originX", "originY"); - } - }(); - return Element4; - }(); - mixin2(Element3, Eventful2); - mixin2(Element3, Transformable2); - function animateTo2(animatable, target, cfg, animationProps, reverse3) { - cfg = cfg || {}; - var animators = []; - animateToShallow2(animatable, "", animatable, target, cfg, animationProps, animators, reverse3); - var finishCount = animators.length; - var doneHappened = false; - var cfgDone = cfg.done; - var cfgAborted = cfg.aborted; - var doneCb = function() { - doneHappened = true; - finishCount--; - if (finishCount <= 0) { - doneHappened ? cfgDone && cfgDone() : cfgAborted && cfgAborted(); - } - }; - var abortedCb = function() { - finishCount--; - if (finishCount <= 0) { - doneHappened ? cfgDone && cfgDone() : cfgAborted && cfgAborted(); - } - }; - if (!finishCount) { - cfgDone && cfgDone(); - } - if (animators.length > 0 && cfg.during) { - animators[0].during(function(target2, percent) { - cfg.during(percent); - }); - } - for (var i2 = 0; i2 < animators.length; i2++) { - var animator = animators[i2]; - if (doneCb) { - animator.done(doneCb); - } - if (abortedCb) { - animator.aborted(abortedCb); - } - if (cfg.force) { - animator.duration(cfg.duration); - } - animator.start(cfg.easing); - } - return animators; - } - function copyArrShallow2(source, target, len3) { - for (var i2 = 0; i2 < len3; i2++) { - source[i2] = target[i2]; - } - } - function is2DArray2(value) { - return isArrayLike2(value[0]); - } - function copyValue2(target, source, key) { - if (isArrayLike2(source[key])) { - if (!isArrayLike2(target[key])) { - target[key] = []; - } - if (isTypedArray2(source[key])) { - var len3 = source[key].length; - if (target[key].length !== len3) { - target[key] = new source[key].constructor(len3); - copyArrShallow2(target[key], source[key], len3); - } - } else { - var sourceArr = source[key]; - var targetArr = target[key]; - var len0 = sourceArr.length; - if (is2DArray2(sourceArr)) { - var len1 = sourceArr[0].length; - for (var i2 = 0; i2 < len0; i2++) { - if (!targetArr[i2]) { - targetArr[i2] = Array.prototype.slice.call(sourceArr[i2]); - } else { - copyArrShallow2(targetArr[i2], sourceArr[i2], len1); - } - } - } else { - copyArrShallow2(targetArr, sourceArr, len0); - } - targetArr.length = sourceArr.length; - } - } else { - target[key] = source[key]; - } - } - function isValueSame2(val1, val2) { - return val1 === val2 || isArrayLike2(val1) && isArrayLike2(val2) && is1DArraySame2(val1, val2); - } - function is1DArraySame2(arr0, arr1) { - var len3 = arr0.length; - if (len3 !== arr1.length) { - return false; - } - for (var i2 = 0; i2 < len3; i2++) { - if (arr0[i2] !== arr1[i2]) { - return false; - } - } - return true; - } - function animateToShallow2(animatable, topKey, animateObj, target, cfg, animationProps, animators, reverse3) { - var targetKeys = keys2(target); - var duration = cfg.duration; - var delay = cfg.delay; - var additive = cfg.additive; - var setToFinal = cfg.setToFinal; - var animateAll = !isObject5(animationProps); - var existsAnimators = animatable.animators; - var animationKeys = []; - for (var k2 = 0; k2 < targetKeys.length; k2++) { - var innerKey = targetKeys[k2]; - var targetVal = target[innerKey]; - if (targetVal != null && animateObj[innerKey] != null && (animateAll || animationProps[innerKey])) { - if (isObject5(targetVal) && !isArrayLike2(targetVal) && !isGradientObject2(targetVal)) { - if (topKey) { - if (!reverse3) { - animateObj[innerKey] = targetVal; - animatable.updateDuringAnimation(topKey); - } - continue; - } - animateToShallow2(animatable, innerKey, animateObj[innerKey], targetVal, cfg, animationProps && animationProps[innerKey], animators, reverse3); - } else { - animationKeys.push(innerKey); - } - } else if (!reverse3) { - animateObj[innerKey] = targetVal; - animatable.updateDuringAnimation(topKey); - animationKeys.push(innerKey); - } - } - var keyLen = animationKeys.length; - if (!additive && keyLen) { - for (var i2 = 0; i2 < existsAnimators.length; i2++) { - var animator = existsAnimators[i2]; - if (animator.targetName === topKey) { - var allAborted = animator.stopTracks(animationKeys); - if (allAborted) { - var idx = indexOf2(existsAnimators, animator); - existsAnimators.splice(idx, 1); - } - } - } - } - if (!cfg.force) { - animationKeys = filter2(animationKeys, function(key) { - return !isValueSame2(target[key], animateObj[key]); - }); - keyLen = animationKeys.length; - } - if (keyLen > 0 || cfg.force && !animators.length) { - var revertedSource = void 0; - var reversedTarget = void 0; - var sourceClone = void 0; - if (reverse3) { - reversedTarget = {}; - if (setToFinal) { - revertedSource = {}; - } - for (var i2 = 0; i2 < keyLen; i2++) { - var innerKey = animationKeys[i2]; - reversedTarget[innerKey] = animateObj[innerKey]; - if (setToFinal) { - revertedSource[innerKey] = target[innerKey]; - } else { - animateObj[innerKey] = target[innerKey]; - } - } - } else if (setToFinal) { - sourceClone = {}; - for (var i2 = 0; i2 < keyLen; i2++) { - var innerKey = animationKeys[i2]; - sourceClone[innerKey] = cloneValue2(animateObj[innerKey]); - copyValue2(animateObj, target, innerKey); - } - } - var animator = new Animator2(animateObj, false, false, additive ? filter2(existsAnimators, function(animator2) { - return animator2.targetName === topKey; - }) : null); - animator.targetName = topKey; - if (cfg.scope) { - animator.scope = cfg.scope; - } - if (setToFinal && revertedSource) { - animator.whenWithKeys(0, revertedSource, animationKeys); - } - if (sourceClone) { - animator.whenWithKeys(0, sourceClone, animationKeys); - } - animator.whenWithKeys(duration == null ? 500 : duration, reverse3 ? reversedTarget : target, animationKeys).delay(delay || 0); - animatable.addAnimator(animator, topKey); - animators.push(animator); - } - } - var Group5 = function(_super) { - __extends2(Group6, _super); - function Group6(opts) { - var _this = _super.call(this) || this; - _this.isGroup = true; - _this._children = []; - _this.attr(opts); - return _this; - } - Group6.prototype.childrenRef = function() { - return this._children; - }; - Group6.prototype.children = function() { - return this._children.slice(); - }; - Group6.prototype.childAt = function(idx) { - return this._children[idx]; - }; - Group6.prototype.childOfName = function(name) { - var children = this._children; - for (var i2 = 0; i2 < children.length; i2++) { - if (children[i2].name === name) { - return children[i2]; - } - } - }; - Group6.prototype.childCount = function() { - return this._children.length; - }; - Group6.prototype.add = function(child) { - if (child) { - if (child !== this && child.parent !== this) { - this._children.push(child); - this._doAdd(child); - } - if (true) { - if (child.__hostTarget) { - throw "This elemenet has been used as an attachment"; - } - } - } - return this; - }; - Group6.prototype.addBefore = function(child, nextSibling3) { - if (child && child !== this && child.parent !== this && nextSibling3 && nextSibling3.parent === this) { - var children = this._children; - var idx = children.indexOf(nextSibling3); - if (idx >= 0) { - children.splice(idx, 0, child); - this._doAdd(child); - } - } - return this; - }; - Group6.prototype.replace = function(oldChild, newChild) { - var idx = indexOf2(this._children, oldChild); - if (idx >= 0) { - this.replaceAt(newChild, idx); - } - return this; - }; - Group6.prototype.replaceAt = function(child, index) { - var children = this._children; - var old = children[index]; - if (child && child !== this && child.parent !== this && child !== old) { - children[index] = child; - old.parent = null; - var zr = this.__zr; - if (zr) { - old.removeSelfFromZr(zr); - } - this._doAdd(child); - } - return this; - }; - Group6.prototype._doAdd = function(child) { - if (child.parent) { - child.parent.remove(child); - } - child.parent = this; - var zr = this.__zr; - if (zr && zr !== child.__zr) { - child.addSelfToZr(zr); - } - zr && zr.refresh(); - }; - Group6.prototype.remove = function(child) { - var zr = this.__zr; - var children = this._children; - var idx = indexOf2(children, child); - if (idx < 0) { - return this; - } - children.splice(idx, 1); - child.parent = null; - if (zr) { - child.removeSelfFromZr(zr); - } - zr && zr.refresh(); - return this; - }; - Group6.prototype.removeAll = function() { - var children = this._children; - var zr = this.__zr; - for (var i2 = 0; i2 < children.length; i2++) { - var child = children[i2]; - if (zr) { - child.removeSelfFromZr(zr); - } - child.parent = null; - } - children.length = 0; - return this; - }; - Group6.prototype.eachChild = function(cb, context) { - var children = this._children; - for (var i2 = 0; i2 < children.length; i2++) { - var child = children[i2]; - cb.call(context, child, i2); - } - return this; - }; - Group6.prototype.traverse = function(cb, context) { - for (var i2 = 0; i2 < this._children.length; i2++) { - var child = this._children[i2]; - var stopped = cb.call(context, child); - if (child.isGroup && !stopped) { - child.traverse(cb, context); - } - } - return this; - }; - Group6.prototype.addSelfToZr = function(zr) { - _super.prototype.addSelfToZr.call(this, zr); - for (var i2 = 0; i2 < this._children.length; i2++) { - var child = this._children[i2]; - child.addSelfToZr(zr); - } - }; - Group6.prototype.removeSelfFromZr = function(zr) { - _super.prototype.removeSelfFromZr.call(this, zr); - for (var i2 = 0; i2 < this._children.length; i2++) { - var child = this._children[i2]; - child.removeSelfFromZr(zr); - } - }; - Group6.prototype.getBoundingRect = function(includeChildren) { - var tmpRect4 = new BoundingRect2(0, 0, 0, 0); - var children = includeChildren || this._children; - var tmpMat = []; - var rect = null; - for (var i2 = 0; i2 < children.length; i2++) { - var child = children[i2]; - if (child.ignore || child.invisible) { - continue; - } - var childRect = child.getBoundingRect(); - var transform2 = child.getLocalTransform(tmpMat); - if (transform2) { - BoundingRect2.applyTransform(tmpRect4, childRect, transform2); - rect = rect || tmpRect4.clone(); - rect.union(tmpRect4); - } else { - rect = rect || childRect.clone(); - rect.union(childRect); - } - } - return rect || tmpRect4; - }; - return Group6; - }(Element3); - Group5.prototype.type = "group"; - var painterCtors2 = {}; - var instances3 = {}; - function delInstance2(id) { - delete instances3[id]; - } - function isDarkMode2(backgroundColor3) { - if (!backgroundColor3) { - return false; - } - if (typeof backgroundColor3 === "string") { - return lum2(backgroundColor3, 1) < DARK_MODE_THRESHOLD2; - } else if (backgroundColor3.colorStops) { - var colorStops = backgroundColor3.colorStops; - var totalLum = 0; - var len3 = colorStops.length; - for (var i2 = 0; i2 < len3; i2++) { - totalLum += lum2(colorStops[i2].color, 1); - } - totalLum /= len3; - return totalLum < DARK_MODE_THRESHOLD2; - } - return false; - } - var ZRender2 = function() { - function ZRender3(id, dom, opts) { - var _this = this; - this._sleepAfterStill = 10; - this._stillFrameAccum = 0; - this._needsRefresh = true; - this._needsRefreshHover = true; - this._darkMode = false; - opts = opts || {}; - this.dom = dom; - this.id = id; - var storage3 = new Storage2(); - var rendererType = opts.renderer || "canvas"; - if (!painterCtors2[rendererType]) { - rendererType = keys2(painterCtors2)[0]; - } - if (true) { - if (!painterCtors2[rendererType]) { - throw new Error("Renderer '" + rendererType + "' is not imported. Please import it first."); - } - } - opts.useDirtyRect = opts.useDirtyRect == null ? false : opts.useDirtyRect; - var painter = new painterCtors2[rendererType](dom, storage3, opts, id); - var ssrMode = opts.ssr || painter.ssrOnly; - this.storage = storage3; - this.painter = painter; - var handlerProxy = !env2.node && !env2.worker && !ssrMode ? new HandlerDomProxy2(painter.getViewportRoot(), painter.root) : null; - var useCoarsePointer = opts.useCoarsePointer; - var usePointerSize = useCoarsePointer == null || useCoarsePointer === "auto" ? env2.touchEventsSupported : !!useCoarsePointer; - var defaultPointerSize = 44; - var pointerSize; - if (usePointerSize) { - pointerSize = retrieve22(opts.pointerSize, defaultPointerSize); - } - this.handler = new Handler2(storage3, painter, handlerProxy, painter.root, pointerSize); - this.animation = new Animation2({ - stage: { - update: ssrMode ? null : function() { - return _this._flush(true); - } - } - }); - if (!ssrMode) { - this.animation.start(); - } - } - ZRender3.prototype.add = function(el) { - if (this._disposed || !el) { - return; - } - this.storage.addRoot(el); - el.addSelfToZr(this); - this.refresh(); - }; - ZRender3.prototype.remove = function(el) { - if (this._disposed || !el) { - return; - } - this.storage.delRoot(el); - el.removeSelfFromZr(this); - this.refresh(); - }; - ZRender3.prototype.configLayer = function(zLevel, config2) { - if (this._disposed) { - return; - } - if (this.painter.configLayer) { - this.painter.configLayer(zLevel, config2); - } - this.refresh(); - }; - ZRender3.prototype.setBackgroundColor = function(backgroundColor3) { - if (this._disposed) { - return; - } - if (this.painter.setBackgroundColor) { - this.painter.setBackgroundColor(backgroundColor3); - } - this.refresh(); - this._backgroundColor = backgroundColor3; - this._darkMode = isDarkMode2(backgroundColor3); - }; - ZRender3.prototype.getBackgroundColor = function() { - return this._backgroundColor; - }; - ZRender3.prototype.setDarkMode = function(darkMode) { - this._darkMode = darkMode; - }; - ZRender3.prototype.isDarkMode = function() { - return this._darkMode; - }; - ZRender3.prototype.refreshImmediately = function(fromInside) { - if (this._disposed) { - return; - } - if (!fromInside) { - this.animation.update(true); - } - this._needsRefresh = false; - this.painter.refresh(); - this._needsRefresh = false; - }; - ZRender3.prototype.refresh = function() { - if (this._disposed) { - return; - } - this._needsRefresh = true; - this.animation.start(); - }; - ZRender3.prototype.flush = function() { - if (this._disposed) { - return; - } - this._flush(false); - }; - ZRender3.prototype._flush = function(fromInside) { - var triggerRendered; - var start4 = getTime2(); - if (this._needsRefresh) { - triggerRendered = true; - this.refreshImmediately(fromInside); - } - if (this._needsRefreshHover) { - triggerRendered = true; - this.refreshHoverImmediately(); - } - var end3 = getTime2(); - if (triggerRendered) { - this._stillFrameAccum = 0; - this.trigger("rendered", { - elapsedTime: end3 - start4 - }); - } else if (this._sleepAfterStill > 0) { - this._stillFrameAccum++; - if (this._stillFrameAccum > this._sleepAfterStill) { - this.animation.stop(); - } - } - }; - ZRender3.prototype.setSleepAfterStill = function(stillFramesCount) { - this._sleepAfterStill = stillFramesCount; - }; - ZRender3.prototype.wakeUp = function() { - if (this._disposed) { - return; - } - this.animation.start(); - this._stillFrameAccum = 0; - }; - ZRender3.prototype.refreshHover = function() { - this._needsRefreshHover = true; - }; - ZRender3.prototype.refreshHoverImmediately = function() { - if (this._disposed) { - return; - } - this._needsRefreshHover = false; - if (this.painter.refreshHover && this.painter.getType() === "canvas") { - this.painter.refreshHover(); - } - }; - ZRender3.prototype.resize = function(opts) { - if (this._disposed) { - return; - } - opts = opts || {}; - this.painter.resize(opts.width, opts.height); - this.handler.resize(); - }; - ZRender3.prototype.clearAnimation = function() { - if (this._disposed) { - return; - } - this.animation.clear(); - }; - ZRender3.prototype.getWidth = function() { - if (this._disposed) { - return; - } - return this.painter.getWidth(); - }; - ZRender3.prototype.getHeight = function() { - if (this._disposed) { - return; - } - return this.painter.getHeight(); - }; - ZRender3.prototype.setCursorStyle = function(cursorStyle) { - if (this._disposed) { - return; - } - this.handler.setCursorStyle(cursorStyle); - }; - ZRender3.prototype.findHover = function(x, y) { - if (this._disposed) { - return; - } - return this.handler.findHover(x, y); - }; - ZRender3.prototype.on = function(eventName, eventHandler, context) { - if (!this._disposed) { - this.handler.on(eventName, eventHandler, context); - } - return this; - }; - ZRender3.prototype.off = function(eventName, eventHandler) { - if (this._disposed) { - return; - } - this.handler.off(eventName, eventHandler); - }; - ZRender3.prototype.trigger = function(eventName, event) { - if (this._disposed) { - return; - } - this.handler.trigger(eventName, event); - }; - ZRender3.prototype.clear = function() { - if (this._disposed) { - return; - } - var roots3 = this.storage.getRoots(); - for (var i2 = 0; i2 < roots3.length; i2++) { - if (roots3[i2] instanceof Group5) { - roots3[i2].removeSelfFromZr(this); - } - } - this.storage.delAllRoots(); - this.painter.clear(); - }; - ZRender3.prototype.dispose = function() { - if (this._disposed) { - return; - } - this.animation.stop(); - this.clear(); - this.storage.dispose(); - this.painter.dispose(); - this.handler.dispose(); - this.animation = this.storage = this.painter = this.handler = null; - this._disposed = true; - delInstance2(this.id); - }; - return ZRender3; - }(); - function init4(dom, opts) { - var zr = new ZRender2(guid2(), dom, opts); - instances3[zr.id] = zr; - return zr; - } - function dispose3(zr) { - zr.dispose(); - } - function disposeAll2() { - for (var key in instances3) { - if (instances3.hasOwnProperty(key)) { - instances3[key].dispose(); - } - } - instances3 = {}; - } - function getInstance2(id) { - return instances3[id]; - } - function registerPainter2(name, Ctor) { - painterCtors2[name] = Ctor; - } - var ssrDataGetter2; - function getElementSSRData2(el) { - if (typeof ssrDataGetter2 === "function") { - return ssrDataGetter2(el); - } - } - function registerSSRDataGetter2(getter) { - ssrDataGetter2 = getter; - } - var version3 = "5.6.1"; - var zrender = /* @__PURE__ */ Object.freeze({ - __proto__: null, - init: init4, - dispose: dispose3, - disposeAll: disposeAll2, - getInstance: getInstance2, - registerPainter: registerPainter2, - getElementSSRData: getElementSSRData2, - registerSSRDataGetter: registerSSRDataGetter2, - version: version3 - }); - var RADIAN_EPSILON2 = 1e-4; - var ROUND_SUPPORTED_PRECISION_MAX2 = 20; - function _trim2(str) { - return str.replace(/^\s+|\s+$/g, ""); - } - function linearMap4(val, domain, range, clamp4) { - var d0 = domain[0]; - var d1 = domain[1]; - var r0 = range[0]; - var r1 = range[1]; - var subDomain = d1 - d0; - var subRange = r1 - r0; - if (subDomain === 0) { - return subRange === 0 ? r0 : (r0 + r1) / 2; - } - if (clamp4) { - if (subDomain > 0) { - if (val <= d0) { - return r0; - } else if (val >= d1) { - return r1; - } - } else { - if (val >= d0) { - return r0; - } else if (val <= d1) { - return r1; - } - } - } else { - if (val === d0) { - return r0; - } - if (val === d1) { - return r1; - } - } - return (val - d0) / subDomain * subRange + r0; - } - function parsePercent$1(percent, all) { - switch (percent) { - case "center": - case "middle": - percent = "50%"; - break; - case "left": - case "top": - percent = "0%"; - break; - case "right": - case "bottom": - percent = "100%"; - break; - } - if (isString2(percent)) { - if (_trim2(percent).match(/%$/)) { - return parseFloat(percent) / 100 * all; - } - return parseFloat(percent); - } - return percent == null ? NaN : +percent; - } - function round8(x, precision, returnStr) { - if (precision == null) { - precision = 10; - } - precision = Math.min(Math.max(0, precision), ROUND_SUPPORTED_PRECISION_MAX2); - x = (+x).toFixed(precision); - return returnStr ? x : +x; - } - function asc4(arr) { - arr.sort(function(a, b) { - return a - b; - }); - return arr; - } - function getPrecision2(val) { - val = +val; - if (isNaN(val)) { - return 0; - } - if (val > 1e-14) { - var e3 = 1; - for (var i2 = 0; i2 < 15; i2++, e3 *= 10) { - if (Math.round(val * e3) / e3 === val) { - return i2; - } - } - } - return getPrecisionSafe2(val); - } - function getPrecisionSafe2(val) { - var str = val.toString().toLowerCase(); - var eIndex = str.indexOf("e"); - var exp = eIndex > 0 ? +str.slice(eIndex + 1) : 0; - var significandPartLen = eIndex > 0 ? eIndex : str.length; - var dotIndex = str.indexOf("."); - var decimalPartLen = dotIndex < 0 ? 0 : significandPartLen - 1 - dotIndex; - return Math.max(0, decimalPartLen - exp); - } - function getPixelPrecision2(dataExtent, pixelExtent) { - var log3 = Math.log; - var LN10 = Math.LN10; - var dataQuantity = Math.floor(log3(dataExtent[1] - dataExtent[0]) / LN10); - var sizeQuantity = Math.round(log3(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); - var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20); - return !isFinite(precision) ? 20 : precision; - } - function getPercentWithPrecision2(valueList, idx, precision) { - if (!valueList[idx]) { - return 0; - } - var seats = getPercentSeats2(valueList, precision); - return seats[idx] || 0; - } - function getPercentSeats2(valueList, precision) { - var sum3 = reduce2(valueList, function(acc, val) { - return acc + (isNaN(val) ? 0 : val); - }, 0); - if (sum3 === 0) { - return []; - } - var digits = Math.pow(10, precision); - var votesPerQuota = map3(valueList, function(val) { - return (isNaN(val) ? 0 : val) / sum3 * digits * 100; - }); - var targetSeats = digits * 100; - var seats = map3(votesPerQuota, function(votes) { - return Math.floor(votes); - }); - var currentSum = reduce2(seats, function(acc, val) { - return acc + val; - }, 0); - var remainder = map3(votesPerQuota, function(votes, idx) { - return votes - seats[idx]; - }); - while (currentSum < targetSeats) { - var max5 = Number.NEGATIVE_INFINITY; - var maxId = null; - for (var i2 = 0, len3 = remainder.length; i2 < len3; ++i2) { - if (remainder[i2] > max5) { - max5 = remainder[i2]; - maxId = i2; - } - } - ++seats[maxId]; - remainder[maxId] = 0; - ++currentSum; - } - return map3(seats, function(seat) { - return seat / digits; - }); - } - function addSafe2(val0, val1) { - var maxPrecision = Math.max(getPrecision2(val0), getPrecision2(val1)); - var sum3 = val0 + val1; - return maxPrecision > ROUND_SUPPORTED_PRECISION_MAX2 ? sum3 : round8(sum3, maxPrecision); - } - var MAX_SAFE_INTEGER2 = 9007199254740991; - function remRadian2(radian) { - var pi2 = Math.PI * 2; - return (radian % pi2 + pi2) % pi2; - } - function isRadianAroundZero2(val) { - return val > -RADIAN_EPSILON2 && val < RADIAN_EPSILON2; - } - var TIME_REG2 = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/; - function parseDate2(value) { - if (value instanceof Date) { - return value; - } else if (isString2(value)) { - var match = TIME_REG2.exec(value); - if (!match) { - return /* @__PURE__ */ new Date(NaN); - } - if (!match[8]) { - return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, match[7] ? +match[7].substring(0, 3) : 0); - } else { - var hour = +match[4] || 0; - if (match[8].toUpperCase() !== "Z") { - hour -= +match[8].slice(0, 3); - } - return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, match[7] ? +match[7].substring(0, 3) : 0)); - } - } else if (value == null) { - return /* @__PURE__ */ new Date(NaN); - } - return new Date(Math.round(value)); - } - function quantity2(val) { - return Math.pow(10, quantityExponent2(val)); - } - function quantityExponent2(val) { - if (val === 0) { - return 0; - } - var exp = Math.floor(Math.log(val) / Math.LN10); - if (val / Math.pow(10, exp) >= 10) { - exp++; - } - return exp; - } - function nice2(val, round9) { - var exponent = quantityExponent2(val); - var exp10 = Math.pow(10, exponent); - var f = val / exp10; - var nf; - if (round9) { - if (f < 1.5) { - nf = 1; - } else if (f < 2.5) { - nf = 2; - } else if (f < 4) { - nf = 3; - } else if (f < 7) { - nf = 5; - } else { - nf = 10; - } - } else { - if (f < 1) { - nf = 1; - } else if (f < 2) { - nf = 2; - } else if (f < 3) { - nf = 3; - } else if (f < 5) { - nf = 5; - } else { - nf = 10; - } - } - val = nf * exp10; - return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val; - } - function quantile2(ascArr, p) { - var H = (ascArr.length - 1) * p + 1; - var h = Math.floor(H); - var v = +ascArr[h - 1]; - var e3 = H - h; - return e3 ? v + e3 * (ascArr[h] - v) : v; - } - function reformIntervals2(list) { - list.sort(function(a, b) { - return littleThan3(a, b, 0) ? -1 : 1; - }); - var curr = -Infinity; - var currClose = 1; - for (var i2 = 0; i2 < list.length; ) { - var interval = list[i2].interval; - var close_1 = list[i2].close; - for (var lg = 0; lg < 2; lg++) { - if (interval[lg] <= curr) { - interval[lg] = curr; - close_1[lg] = !lg ? 1 - currClose : 1; - } - curr = interval[lg]; - currClose = close_1[lg]; - } - if (interval[0] === interval[1] && close_1[0] * close_1[1] !== 1) { - list.splice(i2, 1); - } else { - i2++; - } - } - return list; - function littleThan3(a, b, lg2) { - return a.interval[lg2] < b.interval[lg2] || a.interval[lg2] === b.interval[lg2] && (a.close[lg2] - b.close[lg2] === (!lg2 ? 1 : -1) || !lg2 && littleThan3(a, b, 1)); - } - } - function numericToNumber2(val) { - var valFloat = parseFloat(val); - return valFloat == val && (valFloat !== 0 || !isString2(val) || val.indexOf("x") <= 0) ? valFloat : NaN; - } - function isNumeric2(val) { - return !isNaN(numericToNumber2(val)); - } - function getRandomIdBase2() { - return Math.round(Math.random() * 9); - } - function getGreatestCommonDividor2(a, b) { - if (b === 0) { - return a; - } - return getGreatestCommonDividor2(b, a % b); - } - function getLeastCommonMultiple2(a, b) { - if (a == null) { - return b; - } - if (b == null) { - return a; - } - return a * b / getGreatestCommonDividor2(a, b); - } - var ECHARTS_PREFIX2 = "[ECharts] "; - var storedLogs2 = {}; - var hasConsole2 = typeof console !== "undefined" && console.warn && console.log; - function outputLog2(type, str, onlyOnce) { - if (hasConsole2) { - if (onlyOnce) { - if (storedLogs2[str]) { - return; - } - storedLogs2[str] = true; - } - console[type](ECHARTS_PREFIX2 + str); - } - } - function log2(str, onlyOnce) { - outputLog2("log", str, onlyOnce); - } - function warn2(str, onlyOnce) { - outputLog2("warn", str, onlyOnce); - } - function error3(str, onlyOnce) { - outputLog2("error", str, onlyOnce); - } - function deprecateLog2(str) { - if (true) { - outputLog2("warn", "DEPRECATED: " + str, true); - } - } - function deprecateReplaceLog2(oldOpt, newOpt, scope) { - if (true) { - deprecateLog2((scope ? "[" + scope + "]" : "") + (oldOpt + " is deprecated, use " + newOpt + " instead.")); - } - } - function makePrintable2() { - var hintInfo = []; - for (var _i = 0; _i < arguments.length; _i++) { - hintInfo[_i] = arguments[_i]; - } - var msg = ""; - if (true) { - var makePrintableStringIfPossible_1 = function(val) { - return val === void 0 ? "undefined" : val === Infinity ? "Infinity" : val === -Infinity ? "-Infinity" : eqNaN2(val) ? "NaN" : val instanceof Date ? "Date(" + val.toISOString() + ")" : isFunction2(val) ? "function () { ... }" : isRegExp2(val) ? val + "" : null; - }; - msg = map3(hintInfo, function(arg) { - if (isString2(arg)) { - return arg; - } else { - var printableStr = makePrintableStringIfPossible_1(arg); - if (printableStr != null) { - return printableStr; - } else if (typeof JSON !== "undefined" && JSON.stringify) { - try { - return JSON.stringify(arg, function(n, val) { - var printableStr2 = makePrintableStringIfPossible_1(val); - return printableStr2 == null ? val : printableStr2; - }); - } catch (err) { - return "?"; - } - } else { - return "?"; - } - } - }).join(" "); - } - return msg; - } - function throwError2(msg) { - throw new Error(msg); - } - function interpolateNumber$1(p0, p1, percent) { - return (p1 - p0) * percent + p0; - } - var DUMMY_COMPONENT_NAME_PREFIX2 = "series\0"; - var INTERNAL_COMPONENT_ID_PREFIX2 = "\0_ec_\0"; - function normalizeToArray2(value) { - return value instanceof Array ? value : value == null ? [] : [value]; - } - function defaultEmphasis2(opt, key, subOpts) { - if (opt) { - opt[key] = opt[key] || {}; - opt.emphasis = opt.emphasis || {}; - opt.emphasis[key] = opt.emphasis[key] || {}; - for (var i2 = 0, len3 = subOpts.length; i2 < len3; i2++) { - var subOptName = subOpts[i2]; - if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) { - opt.emphasis[key][subOptName] = opt[key][subOptName]; - } - } - } - } - var TEXT_STYLE_OPTIONS2 = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor", "textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth", "borderRadius", "padding"]; - function getDataItemValue2(dataItem) { - return isObject5(dataItem) && !isArray3(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem; - } - function isDataItemOption2(dataItem) { - return isObject5(dataItem) && !(dataItem instanceof Array); - } - function mappingToExists2(existings, newCmptOptions, mode) { - var isNormalMergeMode = mode === "normalMerge"; - var isReplaceMergeMode = mode === "replaceMerge"; - var isReplaceAllMode = mode === "replaceAll"; - existings = existings || []; - newCmptOptions = (newCmptOptions || []).slice(); - var existingIdIdxMap = createHashMap2(); - each17(newCmptOptions, function(cmptOption, index) { - if (!isObject5(cmptOption)) { - newCmptOptions[index] = null; - return; - } - if (true) { - if (cmptOption.id != null && !isValidIdOrName2(cmptOption.id)) { - warnInvalidateIdOrName2(cmptOption.id); - } - if (cmptOption.name != null && !isValidIdOrName2(cmptOption.name)) { - warnInvalidateIdOrName2(cmptOption.name); - } - } - }); - var result = prepareResult2(existings, existingIdIdxMap, mode); - if (isNormalMergeMode || isReplaceMergeMode) { - mappingById2(result, existings, existingIdIdxMap, newCmptOptions); - } - if (isNormalMergeMode) { - mappingByName2(result, newCmptOptions); - } - if (isNormalMergeMode || isReplaceMergeMode) { - mappingByIndex2(result, newCmptOptions, isReplaceMergeMode); - } else if (isReplaceAllMode) { - mappingInReplaceAllMode2(result, newCmptOptions); - } - makeIdAndName2(result); - return result; - } - function prepareResult2(existings, existingIdIdxMap, mode) { - var result = []; - if (mode === "replaceAll") { - return result; - } - for (var index = 0; index < existings.length; index++) { - var existing = existings[index]; - if (existing && existing.id != null) { - existingIdIdxMap.set(existing.id, index); - } - result.push({ - existing: mode === "replaceMerge" || isComponentIdInternal2(existing) ? null : existing, - newOption: null, - keyInfo: null, - brandNew: null - }); - } - return result; - } - function mappingById2(result, existings, existingIdIdxMap, newCmptOptions) { - each17(newCmptOptions, function(cmptOption, index) { - if (!cmptOption || cmptOption.id == null) { - return; - } - var optionId = makeComparableKey2(cmptOption.id); - var existingIdx = existingIdIdxMap.get(optionId); - if (existingIdx != null) { - var resultItem = result[existingIdx]; - assert2(!resultItem.newOption, 'Duplicated option on id "' + optionId + '".'); - resultItem.newOption = cmptOption; - resultItem.existing = existings[existingIdx]; - newCmptOptions[index] = null; - } - }); - } - function mappingByName2(result, newCmptOptions) { - each17(newCmptOptions, function(cmptOption, index) { - if (!cmptOption || cmptOption.name == null) { - return; - } - for (var i2 = 0; i2 < result.length; i2++) { - var existing = result[i2].existing; - if (!result[i2].newOption && existing && (existing.id == null || cmptOption.id == null) && !isComponentIdInternal2(cmptOption) && !isComponentIdInternal2(existing) && keyExistAndEqual2("name", existing, cmptOption)) { - result[i2].newOption = cmptOption; - newCmptOptions[index] = null; - return; - } - } - }); - } - function mappingByIndex2(result, newCmptOptions, brandNew) { - each17(newCmptOptions, function(cmptOption) { - if (!cmptOption) { - return; - } - var resultItem; - var nextIdx = 0; - while ( - // Be `!resultItem` only when `nextIdx >= result.length`. - (resultItem = result[nextIdx]) && (resultItem.newOption || isComponentIdInternal2(resultItem.existing) || // In mode "replaceMerge", here no not-mapped-non-internal-existing. - resultItem.existing && cmptOption.id != null && !keyExistAndEqual2("id", cmptOption, resultItem.existing)) - ) { - nextIdx++; - } - if (resultItem) { - resultItem.newOption = cmptOption; - resultItem.brandNew = brandNew; - } else { - result.push({ - newOption: cmptOption, - brandNew, - existing: null, - keyInfo: null - }); - } - nextIdx++; - }); - } - function mappingInReplaceAllMode2(result, newCmptOptions) { - each17(newCmptOptions, function(cmptOption) { - result.push({ - newOption: cmptOption, - brandNew: true, - existing: null, - keyInfo: null - }); - }); - } - function makeIdAndName2(mapResult) { - var idMap = createHashMap2(); - each17(mapResult, function(item) { - var existing = item.existing; - existing && idMap.set(existing.id, item); - }); - each17(mapResult, function(item) { - var opt = item.newOption; - assert2(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, "id duplicates: " + (opt && opt.id)); - opt && opt.id != null && idMap.set(opt.id, item); - !item.keyInfo && (item.keyInfo = {}); - }); - each17(mapResult, function(item, index) { - var existing = item.existing; - var opt = item.newOption; - var keyInfo = item.keyInfo; - if (!isObject5(opt)) { - return; - } - keyInfo.name = opt.name != null ? makeComparableKey2(opt.name) : existing ? existing.name : DUMMY_COMPONENT_NAME_PREFIX2 + index; - if (existing) { - keyInfo.id = makeComparableKey2(existing.id); - } else if (opt.id != null) { - keyInfo.id = makeComparableKey2(opt.id); - } else { - var idNum = 0; - do { - keyInfo.id = "\0" + keyInfo.name + "\0" + idNum++; - } while (idMap.get(keyInfo.id)); - } - idMap.set(keyInfo.id, item); - }); - } - function keyExistAndEqual2(attr, obj1, obj2) { - var key1 = convertOptionIdName2(obj1[attr], null); - var key2 = convertOptionIdName2(obj2[attr], null); - return key1 != null && key2 != null && key1 === key2; - } - function makeComparableKey2(val) { - if (true) { - if (val == null) { - throw new Error(); - } - } - return convertOptionIdName2(val, ""); - } - function convertOptionIdName2(idOrName, defaultValue) { - if (idOrName == null) { - return defaultValue; - } - return isString2(idOrName) ? idOrName : isNumber2(idOrName) || isStringSafe2(idOrName) ? idOrName + "" : defaultValue; - } - function warnInvalidateIdOrName2(idOrName) { - if (true) { - warn2("`" + idOrName + "` is invalid id or name. Must be a string or number."); - } - } - function isValidIdOrName2(idOrName) { - return isStringSafe2(idOrName) || isNumeric2(idOrName); - } - function isNameSpecified2(componentModel) { - var name = componentModel.name; - return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX2)); - } - function isComponentIdInternal2(cmptOption) { - return cmptOption && cmptOption.id != null && makeComparableKey2(cmptOption.id).indexOf(INTERNAL_COMPONENT_ID_PREFIX2) === 0; - } - function makeInternalComponentId2(idSuffix) { - return INTERNAL_COMPONENT_ID_PREFIX2 + idSuffix; - } - function setComponentTypeToKeyInfo2(mappingResult, mainType, componentModelCtor) { - each17(mappingResult, function(item) { - var newOption = item.newOption; - if (isObject5(newOption)) { - item.keyInfo.mainType = mainType; - item.keyInfo.subType = determineSubType2(mainType, newOption, item.existing, componentModelCtor); - } - }); - } - function determineSubType2(mainType, newCmptOption, existComponent, componentModelCtor) { - var subType = newCmptOption.type ? newCmptOption.type : existComponent ? existComponent.subType : componentModelCtor.determineSubType(mainType, newCmptOption); - return subType; - } - function compressBatches2(batchA, batchB) { - var mapA = {}; - var mapB = {}; - makeMap(batchA || [], mapA); - makeMap(batchB || [], mapB, mapA); - return [mapToArray(mapA), mapToArray(mapB)]; - function makeMap(sourceBatch, map4, otherMap) { - for (var i2 = 0, len3 = sourceBatch.length; i2 < len3; i2++) { - var seriesId = convertOptionIdName2(sourceBatch[i2].seriesId, null); - if (seriesId == null) { - return; - } - var dataIndices = normalizeToArray2(sourceBatch[i2].dataIndex); - var otherDataIndices = otherMap && otherMap[seriesId]; - for (var j = 0, lenj = dataIndices.length; j < lenj; j++) { - var dataIndex = dataIndices[j]; - if (otherDataIndices && otherDataIndices[dataIndex]) { - otherDataIndices[dataIndex] = null; - } else { - (map4[seriesId] || (map4[seriesId] = {}))[dataIndex] = 1; - } - } - } - } - function mapToArray(map4, isData) { - var result = []; - for (var i2 in map4) { - if (map4.hasOwnProperty(i2) && map4[i2] != null) { - if (isData) { - result.push(+i2); - } else { - var dataIndices = mapToArray(map4[i2], true); - dataIndices.length && result.push({ - seriesId: i2, - dataIndex: dataIndices - }); - } - } - } - return result; - } - } - function queryDataIndex2(data, payload) { - if (payload.dataIndexInside != null) { - return payload.dataIndexInside; - } else if (payload.dataIndex != null) { - return isArray3(payload.dataIndex) ? map3(payload.dataIndex, function(value) { - return data.indexOfRawIndex(value); - }) : data.indexOfRawIndex(payload.dataIndex); - } else if (payload.name != null) { - return isArray3(payload.name) ? map3(payload.name, function(value) { - return data.indexOfName(value); - }) : data.indexOfName(payload.name); - } - } - function makeInner2() { - var key = "__ec_inner_" + innerUniqueIndex2++; - return function(hostObj) { - return hostObj[key] || (hostObj[key] = {}); - }; - } - var innerUniqueIndex2 = getRandomIdBase2(); - function parseFinder3(ecModel, finderInput, opt) { - var _a3 = preParseFinder2(finderInput, opt), mainTypeSpecified = _a3.mainTypeSpecified, queryOptionMap = _a3.queryOptionMap, others = _a3.others; - var result = others; - var defaultMainType = opt ? opt.defaultMainType : null; - if (!mainTypeSpecified && defaultMainType) { - queryOptionMap.set(defaultMainType, {}); - } - queryOptionMap.each(function(queryOption, mainType) { - var queryResult = queryReferringComponents2(ecModel, mainType, queryOption, { - useDefault: defaultMainType === mainType, - enableAll: opt && opt.enableAll != null ? opt.enableAll : true, - enableNone: opt && opt.enableNone != null ? opt.enableNone : true - }); - result[mainType + "Models"] = queryResult.models; - result[mainType + "Model"] = queryResult.models[0]; - }); - return result; - } - function preParseFinder2(finderInput, opt) { - var finder; - if (isString2(finderInput)) { - var obj = {}; - obj[finderInput + "Index"] = 0; - finder = obj; - } else { - finder = finderInput; - } - var queryOptionMap = createHashMap2(); - var others = {}; - var mainTypeSpecified = false; - each17(finder, function(value, key) { - if (key === "dataIndex" || key === "dataIndexInside") { - others[key] = value; - return; - } - var parsedKey = key.match(/^(\w+)(Index|Id|Name)$/) || []; - var mainType = parsedKey[1]; - var queryType = (parsedKey[2] || "").toLowerCase(); - if (!mainType || !queryType || opt && opt.includeMainTypes && indexOf2(opt.includeMainTypes, mainType) < 0) { - return; - } - mainTypeSpecified = mainTypeSpecified || !!mainType; - var queryOption = queryOptionMap.get(mainType) || queryOptionMap.set(mainType, {}); - queryOption[queryType] = value; - }); - return { - mainTypeSpecified, - queryOptionMap, - others - }; - } - var SINGLE_REFERRING2 = { - useDefault: true, - enableAll: false, - enableNone: false - }; - var MULTIPLE_REFERRING2 = { - useDefault: false, - enableAll: true, - enableNone: true - }; - function queryReferringComponents2(ecModel, mainType, userOption, opt) { - opt = opt || SINGLE_REFERRING2; - var indexOption = userOption.index; - var idOption = userOption.id; - var nameOption = userOption.name; - var result = { - models: null, - specified: indexOption != null || idOption != null || nameOption != null - }; - if (!result.specified) { - var firstCmpt = void 0; - result.models = opt.useDefault && (firstCmpt = ecModel.getComponent(mainType)) ? [firstCmpt] : []; - return result; - } - if (indexOption === "none" || indexOption === false) { - assert2(opt.enableNone, '`"none"` or `false` is not a valid value on index option.'); - result.models = []; - return result; - } - if (indexOption === "all") { - assert2(opt.enableAll, '`"all"` is not a valid value on index option.'); - indexOption = idOption = nameOption = null; - } - result.models = ecModel.queryComponents({ - mainType, - index: indexOption, - id: idOption, - name: nameOption - }); - return result; - } - function setAttribute2(dom, key, value) { - dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value; - } - function getAttribute3(dom, key) { - return dom.getAttribute ? dom.getAttribute(key) : dom[key]; - } - function getTooltipRenderMode2(renderModeOption) { - if (renderModeOption === "auto") { - return env2.domSupported ? "html" : "richText"; - } else { - return renderModeOption || "html"; - } - } - function groupData2(array, getKey3) { - var buckets = createHashMap2(); - var keys3 = []; - each17(array, function(item) { - var key = getKey3(item); - (buckets.get(key) || (keys3.push(key), buckets.set(key, []))).push(item); - }); - return { - keys: keys3, - buckets - }; - } - function interpolateRawValues2(data, precision, sourceValue, targetValue, percent) { - var isAutoPrecision = precision == null || precision === "auto"; - if (targetValue == null) { - return targetValue; - } - if (isNumber2(targetValue)) { - var value = interpolateNumber$1(sourceValue || 0, targetValue, percent); - return round8(value, isAutoPrecision ? Math.max(getPrecision2(sourceValue || 0), getPrecision2(targetValue)) : precision); - } else if (isString2(targetValue)) { - return percent < 1 ? sourceValue : targetValue; - } else { - var interpolated = []; - var leftArr = sourceValue; - var rightArr = targetValue; - var length_1 = Math.max(leftArr ? leftArr.length : 0, rightArr.length); - for (var i2 = 0; i2 < length_1; ++i2) { - var info = data.getDimensionInfo(i2); - if (info && info.type === "ordinal") { - interpolated[i2] = (percent < 1 && leftArr ? leftArr : rightArr)[i2]; - } else { - var leftVal = leftArr && leftArr[i2] ? leftArr[i2] : 0; - var rightVal = rightArr[i2]; - var value = interpolateNumber$1(leftVal, rightVal, percent); - interpolated[i2] = round8(value, isAutoPrecision ? Math.max(getPrecision2(leftVal), getPrecision2(rightVal)) : precision); - } - } - return interpolated; - } - } - var TYPE_DELIMITER2 = "."; - var IS_CONTAINER2 = "___EC__COMPONENT__CONTAINER___"; - var IS_EXTENDED_CLASS2 = "___EC__EXTENDED_CLASS___"; - function parseClassType2(componentType) { - var ret = { - main: "", - sub: "" - }; - if (componentType) { - var typeArr = componentType.split(TYPE_DELIMITER2); - ret.main = typeArr[0] || ""; - ret.sub = typeArr[1] || ""; - } - return ret; - } - function checkClassType2(componentType) { - assert2(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType "' + componentType + '" illegal'); - } - function isExtendedClass2(clz) { - return !!(clz && clz[IS_EXTENDED_CLASS2]); - } - function enableClassExtend2(rootClz, mandatoryMethods) { - rootClz.$constructor = rootClz; - rootClz.extend = function(proto3) { - if (true) { - each17(mandatoryMethods, function(method) { - if (!proto3[method]) { - console.warn("Method `" + method + "` should be implemented" + (proto3.type ? " in " + proto3.type : "") + "."); - } - }); - } - var superClass = this; - var ExtendedClass; - if (isESClass2(superClass)) { - ExtendedClass = /** @class */ - function(_super) { - __extends2(class_1, _super); - function class_1() { - return _super.apply(this, arguments) || this; - } - return class_1; - }(superClass); - } else { - ExtendedClass = function() { - (proto3.$constructor || superClass).apply(this, arguments); - }; - inherits2(ExtendedClass, this); - } - extend3(ExtendedClass.prototype, proto3); - ExtendedClass[IS_EXTENDED_CLASS2] = true; - ExtendedClass.extend = this.extend; - ExtendedClass.superCall = superCall2; - ExtendedClass.superApply = superApply2; - ExtendedClass.superClass = superClass; - return ExtendedClass; - }; - } - function isESClass2(fn) { - return isFunction2(fn) && /^class\s/.test(Function.prototype.toString.call(fn)); - } - function mountExtend2(SubClz, SupperClz) { - SubClz.extend = SupperClz.extend; - } - var classBase2 = Math.round(Math.random() * 10); - function enableClassCheck2(target) { - var classAttr = ["__\0is_clz", classBase2++].join("_"); - target.prototype[classAttr] = true; - if (true) { - assert2(!target.isInstance, 'The method "is" can not be defined.'); - } - target.isInstance = function(obj) { - return !!(obj && obj[classAttr]); - }; - } - function superCall2(context, methodName) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - return this.superClass.prototype[methodName].apply(context, args); - } - function superApply2(context, methodName, args) { - return this.superClass.prototype[methodName].apply(context, args); - } - function enableClassManagement2(target) { - var storage3 = {}; - target.registerClass = function(clz) { - var componentFullType = clz.type || clz.prototype.type; - if (componentFullType) { - checkClassType2(componentFullType); - clz.prototype.type = componentFullType; - var componentTypeInfo = parseClassType2(componentFullType); - if (!componentTypeInfo.sub) { - if (true) { - if (storage3[componentTypeInfo.main]) { - console.warn(componentTypeInfo.main + " exists."); - } - } - storage3[componentTypeInfo.main] = clz; - } else if (componentTypeInfo.sub !== IS_CONTAINER2) { - var container = makeContainer(componentTypeInfo); - container[componentTypeInfo.sub] = clz; - } - } - return clz; - }; - target.getClass = function(mainType, subType, throwWhenNotFound) { - var clz = storage3[mainType]; - if (clz && clz[IS_CONTAINER2]) { - clz = subType ? clz[subType] : null; - } - if (throwWhenNotFound && !clz) { - throw new Error(!subType ? mainType + ".type should be specified." : "Component " + mainType + "." + (subType || "") + " is used but not imported."); - } - return clz; - }; - target.getClassesByMainType = function(componentType) { - var componentTypeInfo = parseClassType2(componentType); - var result = []; - var obj = storage3[componentTypeInfo.main]; - if (obj && obj[IS_CONTAINER2]) { - each17(obj, function(o, type) { - type !== IS_CONTAINER2 && result.push(o); - }); - } else { - result.push(obj); - } - return result; - }; - target.hasClass = function(componentType) { - var componentTypeInfo = parseClassType2(componentType); - return !!storage3[componentTypeInfo.main]; - }; - target.getAllClassMainTypes = function() { - var types = []; - each17(storage3, function(obj, type) { - types.push(type); - }); - return types; - }; - target.hasSubTypes = function(componentType) { - var componentTypeInfo = parseClassType2(componentType); - var obj = storage3[componentTypeInfo.main]; - return obj && obj[IS_CONTAINER2]; - }; - function makeContainer(componentTypeInfo) { - var container = storage3[componentTypeInfo.main]; - if (!container || !container[IS_CONTAINER2]) { - container = storage3[componentTypeInfo.main] = {}; - container[IS_CONTAINER2] = true; - } - return container; - } - } - function makeStyleMapper2(properties, ignoreParent) { - for (var i2 = 0; i2 < properties.length; i2++) { - if (!properties[i2][1]) { - properties[i2][1] = properties[i2][0]; - } - } - ignoreParent = ignoreParent || false; - return function(model, excludes, includes) { - var style = {}; - for (var i3 = 0; i3 < properties.length; i3++) { - var propName = properties[i3][1]; - if (excludes && indexOf2(excludes, propName) >= 0 || includes && indexOf2(includes, propName) < 0) { - continue; - } - var val = model.getShallow(propName, ignoreParent); - if (val != null) { - style[properties[i3][0]] = val; - } - } - return style; - }; - } - var AREA_STYLE_KEY_MAP2 = [ - ["fill", "color"], - ["shadowBlur"], - ["shadowOffsetX"], - ["shadowOffsetY"], - ["opacity"], - ["shadowColor"] - // Option decal is in `DecalObject` but style.decal is in `PatternObject`. - // So do not transfer decal directly. - ]; - var getAreaStyle2 = makeStyleMapper2(AREA_STYLE_KEY_MAP2); - var AreaStyleMixin2 = ( - /** @class */ - function() { - function AreaStyleMixin3() { - } - AreaStyleMixin3.prototype.getAreaStyle = function(excludes, includes) { - return getAreaStyle2(this, excludes, includes); - }; - return AreaStyleMixin3; - }() - ); - var globalImageCache2 = new LRU2(50); - function findExistImage2(newImageOrSrc) { - if (typeof newImageOrSrc === "string") { - var cachedImgObj = globalImageCache2.get(newImageOrSrc); - return cachedImgObj && cachedImgObj.image; - } else { - return newImageOrSrc; - } - } - function createOrUpdateImage2(newImageOrSrc, image, hostEl, onload, cbPayload) { - if (!newImageOrSrc) { - return image; - } else if (typeof newImageOrSrc === "string") { - if (image && image.__zrImageSrc === newImageOrSrc || !hostEl) { - return image; - } - var cachedImgObj = globalImageCache2.get(newImageOrSrc); - var pendingWrap = { hostEl, cb: onload, cbPayload }; - if (cachedImgObj) { - image = cachedImgObj.image; - !isImageReady2(image) && cachedImgObj.pending.push(pendingWrap); - } else { - image = platformApi2.loadImage(newImageOrSrc, imageOnLoad2, imageOnLoad2); - image.__zrImageSrc = newImageOrSrc; - globalImageCache2.put(newImageOrSrc, image.__cachedImgObj = { - image, - pending: [pendingWrap] - }); - } - return image; - } else { - return newImageOrSrc; - } - } - function imageOnLoad2() { - var cachedImgObj = this.__cachedImgObj; - this.onload = this.onerror = this.__cachedImgObj = null; - for (var i2 = 0; i2 < cachedImgObj.pending.length; i2++) { - var pendingWrap = cachedImgObj.pending[i2]; - var cb = pendingWrap.cb; - cb && cb(this, pendingWrap.cbPayload); - pendingWrap.hostEl.dirty(); - } - cachedImgObj.pending.length = 0; - } - function isImageReady2(image) { - return image && image.width && image.height; - } - var STYLE_REG2 = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g; - function truncateText3(text, containerWidth, font, ellipsis, options) { - var out3 = {}; - truncateText22(out3, text, containerWidth, font, ellipsis, options); - return out3.text; - } - function truncateText22(out3, text, containerWidth, font, ellipsis, options) { - if (!containerWidth) { - out3.text = ""; - out3.isTruncated = false; - return; - } - var textLines = (text + "").split("\n"); - options = prepareTruncateOptions2(containerWidth, font, ellipsis, options); - var isTruncated = false; - var truncateOut = {}; - for (var i2 = 0, len3 = textLines.length; i2 < len3; i2++) { - truncateSingleLine2(truncateOut, textLines[i2], options); - textLines[i2] = truncateOut.textLine; - isTruncated = isTruncated || truncateOut.isTruncated; - } - out3.text = textLines.join("\n"); - out3.isTruncated = isTruncated; - } - function prepareTruncateOptions2(containerWidth, font, ellipsis, options) { - options = options || {}; - var preparedOpts = extend3({}, options); - preparedOpts.font = font; - ellipsis = retrieve22(ellipsis, "..."); - preparedOpts.maxIterations = retrieve22(options.maxIterations, 2); - var minChar = preparedOpts.minChar = retrieve22(options.minChar, 0); - preparedOpts.cnCharWidth = getWidth2("\u56FD", font); - var ascCharWidth = preparedOpts.ascCharWidth = getWidth2("a", font); - preparedOpts.placeholder = retrieve22(options.placeholder, ""); - var contentWidth = containerWidth = Math.max(0, containerWidth - 1); - for (var i2 = 0; i2 < minChar && contentWidth >= ascCharWidth; i2++) { - contentWidth -= ascCharWidth; - } - var ellipsisWidth = getWidth2(ellipsis, font); - if (ellipsisWidth > contentWidth) { - ellipsis = ""; - ellipsisWidth = 0; - } - contentWidth = containerWidth - ellipsisWidth; - preparedOpts.ellipsis = ellipsis; - preparedOpts.ellipsisWidth = ellipsisWidth; - preparedOpts.contentWidth = contentWidth; - preparedOpts.containerWidth = containerWidth; - return preparedOpts; - } - function truncateSingleLine2(out3, textLine, options) { - var containerWidth = options.containerWidth; - var font = options.font; - var contentWidth = options.contentWidth; - if (!containerWidth) { - out3.textLine = ""; - out3.isTruncated = false; - return; - } - var lineWidth = getWidth2(textLine, font); - if (lineWidth <= containerWidth) { - out3.textLine = textLine; - out3.isTruncated = false; - return; - } - for (var j = 0; ; j++) { - if (lineWidth <= contentWidth || j >= options.maxIterations) { - textLine += options.ellipsis; - break; - } - var subLength = j === 0 ? estimateLength2(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth) : lineWidth > 0 ? Math.floor(textLine.length * contentWidth / lineWidth) : 0; - textLine = textLine.substr(0, subLength); - lineWidth = getWidth2(textLine, font); - } - if (textLine === "") { - textLine = options.placeholder; - } - out3.textLine = textLine; - out3.isTruncated = true; - } - function estimateLength2(text, contentWidth, ascCharWidth, cnCharWidth) { - var width = 0; - var i2 = 0; - for (var len3 = text.length; i2 < len3 && width < contentWidth; i2++) { - var charCode = text.charCodeAt(i2); - width += 0 <= charCode && charCode <= 127 ? ascCharWidth : cnCharWidth; - } - return i2; - } - function parsePlainText2(text, style) { - text != null && (text += ""); - var overflow = style.overflow; - var padding = style.padding; - var font = style.font; - var truncate = overflow === "truncate"; - var calculatedLineHeight = getLineHeight2(font); - var lineHeight = retrieve22(style.lineHeight, calculatedLineHeight); - var bgColorDrawn = !!style.backgroundColor; - var truncateLineOverflow = style.lineOverflow === "truncate"; - var isTruncated = false; - var width = style.width; - var lines; - if (width != null && (overflow === "break" || overflow === "breakAll")) { - lines = text ? wrapText2(text, style.font, width, overflow === "breakAll", 0).lines : []; - } else { - lines = text ? text.split("\n") : []; - } - var contentHeight = lines.length * lineHeight; - var height = retrieve22(style.height, contentHeight); - if (contentHeight > height && truncateLineOverflow) { - var lineCount = Math.floor(height / lineHeight); - isTruncated = isTruncated || lines.length > lineCount; - lines = lines.slice(0, lineCount); - } - if (text && truncate && width != null) { - var options = prepareTruncateOptions2(width, font, style.ellipsis, { - minChar: style.truncateMinChar, - placeholder: style.placeholder - }); - var singleOut = {}; - for (var i2 = 0; i2 < lines.length; i2++) { - truncateSingleLine2(singleOut, lines[i2], options); - lines[i2] = singleOut.textLine; - isTruncated = isTruncated || singleOut.isTruncated; - } - } - var outerHeight = height; - var contentWidth = 0; - for (var i2 = 0; i2 < lines.length; i2++) { - contentWidth = Math.max(getWidth2(lines[i2], font), contentWidth); - } - if (width == null) { - width = contentWidth; - } - var outerWidth = contentWidth; - if (padding) { - outerHeight += padding[0] + padding[2]; - outerWidth += padding[1] + padding[3]; - width += padding[1] + padding[3]; - } - if (bgColorDrawn) { - outerWidth = width; - } - return { - lines, - height, - outerWidth, - outerHeight, - lineHeight, - calculatedLineHeight, - contentWidth, - contentHeight, - width, - isTruncated - }; - } - var RichTextToken2 = /* @__PURE__ */ function() { - function RichTextToken3() { - } - return RichTextToken3; - }(); - var RichTextLine2 = /* @__PURE__ */ function() { - function RichTextLine3(tokens) { - this.tokens = []; - if (tokens) { - this.tokens = tokens; - } - } - return RichTextLine3; - }(); - var RichTextContentBlock2 = /* @__PURE__ */ function() { - function RichTextContentBlock3() { - this.width = 0; - this.height = 0; - this.contentWidth = 0; - this.contentHeight = 0; - this.outerWidth = 0; - this.outerHeight = 0; - this.lines = []; - this.isTruncated = false; - } - return RichTextContentBlock3; - }(); - function parseRichText2(text, style) { - var contentBlock = new RichTextContentBlock2(); - text != null && (text += ""); - if (!text) { - return contentBlock; - } - var topWidth = style.width; - var topHeight = style.height; - var overflow = style.overflow; - var wrapInfo = (overflow === "break" || overflow === "breakAll") && topWidth != null ? { width: topWidth, accumWidth: 0, breakAll: overflow === "breakAll" } : null; - var lastIndex = STYLE_REG2.lastIndex = 0; - var result; - while ((result = STYLE_REG2.exec(text)) != null) { - var matchedIndex = result.index; - if (matchedIndex > lastIndex) { - pushTokens2(contentBlock, text.substring(lastIndex, matchedIndex), style, wrapInfo); - } - pushTokens2(contentBlock, result[2], style, wrapInfo, result[1]); - lastIndex = STYLE_REG2.lastIndex; - } - if (lastIndex < text.length) { - pushTokens2(contentBlock, text.substring(lastIndex, text.length), style, wrapInfo); - } - var pendingList = []; - var calculatedHeight = 0; - var calculatedWidth = 0; - var stlPadding = style.padding; - var truncate = overflow === "truncate"; - var truncateLine = style.lineOverflow === "truncate"; - var tmpTruncateOut = {}; - function finishLine(line2, lineWidth2, lineHeight2) { - line2.width = lineWidth2; - line2.lineHeight = lineHeight2; - calculatedHeight += lineHeight2; - calculatedWidth = Math.max(calculatedWidth, lineWidth2); - } - outer: - for (var i2 = 0; i2 < contentBlock.lines.length; i2++) { - var line = contentBlock.lines[i2]; - var lineHeight = 0; - var lineWidth = 0; - for (var j = 0; j < line.tokens.length; j++) { - var token = line.tokens[j]; - var tokenStyle = token.styleName && style.rich[token.styleName] || {}; - var textPadding = token.textPadding = tokenStyle.padding; - var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0; - var font = token.font = tokenStyle.font || style.font; - token.contentHeight = getLineHeight2(font); - var tokenHeight = retrieve22(tokenStyle.height, token.contentHeight); - token.innerHeight = tokenHeight; - textPadding && (tokenHeight += textPadding[0] + textPadding[2]); - token.height = tokenHeight; - token.lineHeight = retrieve32(tokenStyle.lineHeight, style.lineHeight, tokenHeight); - token.align = tokenStyle && tokenStyle.align || style.align; - token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || "middle"; - if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) { - var originalLength = contentBlock.lines.length; - if (j > 0) { - line.tokens = line.tokens.slice(0, j); - finishLine(line, lineWidth, lineHeight); - contentBlock.lines = contentBlock.lines.slice(0, i2 + 1); - } else { - contentBlock.lines = contentBlock.lines.slice(0, i2); - } - contentBlock.isTruncated = contentBlock.isTruncated || contentBlock.lines.length < originalLength; - break outer; - } - var styleTokenWidth = tokenStyle.width; - var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === "auto"; - if (typeof styleTokenWidth === "string" && styleTokenWidth.charAt(styleTokenWidth.length - 1) === "%") { - token.percentWidth = styleTokenWidth; - pendingList.push(token); - token.contentWidth = getWidth2(token.text, font); - } else { - if (tokenWidthNotSpecified) { - var textBackgroundColor = tokenStyle.backgroundColor; - var bgImg = textBackgroundColor && textBackgroundColor.image; - if (bgImg) { - bgImg = findExistImage2(bgImg); - if (isImageReady2(bgImg)) { - token.width = Math.max(token.width, bgImg.width * tokenHeight / bgImg.height); - } - } - } - var remainTruncWidth = truncate && topWidth != null ? topWidth - lineWidth : null; - if (remainTruncWidth != null && remainTruncWidth < token.width) { - if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) { - token.text = ""; - token.width = token.contentWidth = 0; - } else { - truncateText22(tmpTruncateOut, token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar }); - token.text = tmpTruncateOut.text; - contentBlock.isTruncated = contentBlock.isTruncated || tmpTruncateOut.isTruncated; - token.width = token.contentWidth = getWidth2(token.text, font); - } - } else { - token.contentWidth = getWidth2(token.text, font); - } - } - token.width += paddingH; - lineWidth += token.width; - tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight)); - } - finishLine(line, lineWidth, lineHeight); - } - contentBlock.outerWidth = contentBlock.width = retrieve22(topWidth, calculatedWidth); - contentBlock.outerHeight = contentBlock.height = retrieve22(topHeight, calculatedHeight); - contentBlock.contentHeight = calculatedHeight; - contentBlock.contentWidth = calculatedWidth; - if (stlPadding) { - contentBlock.outerWidth += stlPadding[1] + stlPadding[3]; - contentBlock.outerHeight += stlPadding[0] + stlPadding[2]; - } - for (var i2 = 0; i2 < pendingList.length; i2++) { - var token = pendingList[i2]; - var percentWidth = token.percentWidth; - token.width = parseInt(percentWidth, 10) / 100 * contentBlock.width; - } - return contentBlock; - } - function pushTokens2(block, str, style, wrapInfo, styleName) { - var isEmptyStr = str === ""; - var tokenStyle = styleName && style.rich[styleName] || {}; - var lines = block.lines; - var font = tokenStyle.font || style.font; - var newLine = false; - var strLines; - var linesWidths; - if (wrapInfo) { - var tokenPadding = tokenStyle.padding; - var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0; - if (tokenStyle.width != null && tokenStyle.width !== "auto") { - var outerWidth_1 = parsePercent3(tokenStyle.width, wrapInfo.width) + tokenPaddingH; - if (lines.length > 0) { - if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) { - strLines = str.split("\n"); - newLine = true; - } - } - wrapInfo.accumWidth = outerWidth_1; - } else { - var res = wrapText2(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth); - wrapInfo.accumWidth = res.accumWidth + tokenPaddingH; - linesWidths = res.linesWidths; - strLines = res.lines; - } - } else { - strLines = str.split("\n"); - } - for (var i2 = 0; i2 < strLines.length; i2++) { - var text = strLines[i2]; - var token = new RichTextToken2(); - token.styleName = styleName; - token.text = text; - token.isLineHolder = !text && !isEmptyStr; - if (typeof tokenStyle.width === "number") { - token.width = tokenStyle.width; - } else { - token.width = linesWidths ? linesWidths[i2] : getWidth2(text, font); - } - if (!i2 && !newLine) { - var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine2())).tokens; - var tokensLen = tokens.length; - tokensLen === 1 && tokens[0].isLineHolder ? tokens[0] = token : (text || !tokensLen || isEmptyStr) && tokens.push(token); - } else { - lines.push(new RichTextLine2([token])); - } - } - } - function isAlphabeticLetter2(ch) { - var code = ch.charCodeAt(0); - return code >= 32 && code <= 591 || code >= 880 && code <= 4351 || code >= 4608 && code <= 5119 || code >= 7680 && code <= 8303; - } - var breakCharMap2 = reduce2(",&?/;] ".split(""), function(obj, ch) { - obj[ch] = true; - return obj; - }, {}); - function isWordBreakChar2(ch) { - if (isAlphabeticLetter2(ch)) { - if (breakCharMap2[ch]) { - return true; - } - return false; - } - return true; - } - function wrapText2(text, font, lineWidth, isBreakAll, lastAccumWidth) { - var lines = []; - var linesWidths = []; - var line = ""; - var currentWord = ""; - var currentWordWidth = 0; - var accumWidth = 0; - for (var i2 = 0; i2 < text.length; i2++) { - var ch = text.charAt(i2); - if (ch === "\n") { - if (currentWord) { - line += currentWord; - accumWidth += currentWordWidth; - } - lines.push(line); - linesWidths.push(accumWidth); - line = ""; - currentWord = ""; - currentWordWidth = 0; - accumWidth = 0; - continue; - } - var chWidth = getWidth2(ch, font); - var inWord = isBreakAll ? false : !isWordBreakChar2(ch); - if (!lines.length ? lastAccumWidth + accumWidth + chWidth > lineWidth : accumWidth + chWidth > lineWidth) { - if (!accumWidth) { - if (inWord) { - lines.push(currentWord); - linesWidths.push(currentWordWidth); - currentWord = ch; - currentWordWidth = chWidth; - } else { - lines.push(ch); - linesWidths.push(chWidth); - } - } else if (line || currentWord) { - if (inWord) { - if (!line) { - line = currentWord; - currentWord = ""; - currentWordWidth = 0; - accumWidth = currentWordWidth; - } - lines.push(line); - linesWidths.push(accumWidth - currentWordWidth); - currentWord += ch; - currentWordWidth += chWidth; - line = ""; - accumWidth = currentWordWidth; - } else { - if (currentWord) { - line += currentWord; - currentWord = ""; - currentWordWidth = 0; - } - lines.push(line); - linesWidths.push(accumWidth); - line = ch; - accumWidth = chWidth; - } - } - continue; - } - accumWidth += chWidth; - if (inWord) { - currentWord += ch; - currentWordWidth += chWidth; - } else { - if (currentWord) { - line += currentWord; - currentWord = ""; - currentWordWidth = 0; - } - line += ch; - } - } - if (!lines.length && !line) { - line = text; - currentWord = ""; - currentWordWidth = 0; - } - if (currentWord) { - line += currentWord; - } - if (line) { - lines.push(line); - linesWidths.push(accumWidth); - } - if (lines.length === 1) { - accumWidth += lastAccumWidth; - } - return { - accumWidth, - lines, - linesWidths - }; - } - var STYLE_MAGIC_KEY2 = "__zr_style_" + Math.round(Math.random() * 10); - var DEFAULT_COMMON_STYLE2 = { - shadowBlur: 0, - shadowOffsetX: 0, - shadowOffsetY: 0, - shadowColor: "#000", - opacity: 1, - blend: "source-over" - }; - var DEFAULT_COMMON_ANIMATION_PROPS2 = { - style: { - shadowBlur: true, - shadowOffsetX: true, - shadowOffsetY: true, - shadowColor: true, - opacity: true - } - }; - DEFAULT_COMMON_STYLE2[STYLE_MAGIC_KEY2] = true; - var PRIMARY_STATES_KEYS$1 = ["z", "z2", "invisible"]; - var PRIMARY_STATES_KEYS_IN_HOVER_LAYER2 = ["invisible"]; - var Displayable2 = function(_super) { - __extends2(Displayable3, _super); - function Displayable3(props) { - return _super.call(this, props) || this; - } - Displayable3.prototype._init = function(props) { - var keysArr = keys2(props); - for (var i2 = 0; i2 < keysArr.length; i2++) { - var key = keysArr[i2]; - if (key === "style") { - this.useStyle(props[key]); - } else { - _super.prototype.attrKV.call(this, key, props[key]); - } - } - if (!this.style) { - this.useStyle({}); - } - }; - Displayable3.prototype.beforeBrush = function() { - }; - Displayable3.prototype.afterBrush = function() { - }; - Displayable3.prototype.innerBeforeBrush = function() { - }; - Displayable3.prototype.innerAfterBrush = function() { - }; - Displayable3.prototype.shouldBePainted = function(viewWidth, viewHeight, considerClipPath, considerAncestors) { - var m3 = this.transform; - if (this.ignore || this.invisible || this.style.opacity === 0 || this.culling && isDisplayableCulled2(this, viewWidth, viewHeight) || m3 && !m3[0] && !m3[3]) { - return false; - } - if (considerClipPath && this.__clipPaths) { - for (var i2 = 0; i2 < this.__clipPaths.length; ++i2) { - if (this.__clipPaths[i2].isZeroArea()) { - return false; - } - } - } - if (considerAncestors && this.parent) { - var parent_1 = this.parent; - while (parent_1) { - if (parent_1.ignore) { - return false; - } - parent_1 = parent_1.parent; - } - } - return true; - }; - Displayable3.prototype.contain = function(x, y) { - return this.rectContain(x, y); - }; - Displayable3.prototype.traverse = function(cb, context) { - cb.call(context, this); - }; - Displayable3.prototype.rectContain = function(x, y) { - var coord = this.transformCoordToLocal(x, y); - var rect = this.getBoundingRect(); - return rect.contain(coord[0], coord[1]); - }; - Displayable3.prototype.getPaintRect = function() { - var rect = this._paintRect; - if (!this._paintRect || this.__dirty) { - var transform2 = this.transform; - var elRect = this.getBoundingRect(); - var style = this.style; - var shadowSize = style.shadowBlur || 0; - var shadowOffsetX = style.shadowOffsetX || 0; - var shadowOffsetY = style.shadowOffsetY || 0; - rect = this._paintRect || (this._paintRect = new BoundingRect2(0, 0, 0, 0)); - if (transform2) { - BoundingRect2.applyTransform(rect, elRect, transform2); - } else { - rect.copy(elRect); - } - if (shadowSize || shadowOffsetX || shadowOffsetY) { - rect.width += shadowSize * 2 + Math.abs(shadowOffsetX); - rect.height += shadowSize * 2 + Math.abs(shadowOffsetY); - rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize); - rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize); - } - var tolerance = this.dirtyRectTolerance; - if (!rect.isZero()) { - rect.x = Math.floor(rect.x - tolerance); - rect.y = Math.floor(rect.y - tolerance); - rect.width = Math.ceil(rect.width + 1 + tolerance * 2); - rect.height = Math.ceil(rect.height + 1 + tolerance * 2); - } - } - return rect; - }; - Displayable3.prototype.setPrevPaintRect = function(paintRect) { - if (paintRect) { - this._prevPaintRect = this._prevPaintRect || new BoundingRect2(0, 0, 0, 0); - this._prevPaintRect.copy(paintRect); - } else { - this._prevPaintRect = null; - } - }; - Displayable3.prototype.getPrevPaintRect = function() { - return this._prevPaintRect; - }; - Displayable3.prototype.animateStyle = function(loop) { - return this.animate("style", loop); - }; - Displayable3.prototype.updateDuringAnimation = function(targetKey) { - if (targetKey === "style") { - this.dirtyStyle(); - } else { - this.markRedraw(); - } - }; - Displayable3.prototype.attrKV = function(key, value) { - if (key !== "style") { - _super.prototype.attrKV.call(this, key, value); - } else { - if (!this.style) { - this.useStyle(value); - } else { - this.setStyle(value); - } - } - }; - Displayable3.prototype.setStyle = function(keyOrObj, value) { - if (typeof keyOrObj === "string") { - this.style[keyOrObj] = value; - } else { - extend3(this.style, keyOrObj); - } - this.dirtyStyle(); - return this; - }; - Displayable3.prototype.dirtyStyle = function(notRedraw) { - if (!notRedraw) { - this.markRedraw(); - } - this.__dirty |= STYLE_CHANGED_BIT2; - if (this._rect) { - this._rect = null; - } - }; - Displayable3.prototype.dirty = function() { - this.dirtyStyle(); - }; - Displayable3.prototype.styleChanged = function() { - return !!(this.__dirty & STYLE_CHANGED_BIT2); - }; - Displayable3.prototype.styleUpdated = function() { - this.__dirty &= ~STYLE_CHANGED_BIT2; - }; - Displayable3.prototype.createStyle = function(obj) { - return createObject2(DEFAULT_COMMON_STYLE2, obj); - }; - Displayable3.prototype.useStyle = function(obj) { - if (!obj[STYLE_MAGIC_KEY2]) { - obj = this.createStyle(obj); - } - if (this.__inHover) { - this.__hoverStyle = obj; - } else { - this.style = obj; - } - this.dirtyStyle(); - }; - Displayable3.prototype.isStyleObject = function(obj) { - return obj[STYLE_MAGIC_KEY2]; - }; - Displayable3.prototype._innerSaveToNormal = function(toState) { - _super.prototype._innerSaveToNormal.call(this, toState); - var normalState = this._normalState; - if (toState.style && !normalState.style) { - normalState.style = this._mergeStyle(this.createStyle(), this.style); - } - this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS$1); - }; - Displayable3.prototype._applyStateObj = function(stateName, state, normalState, keepCurrentStates, transition, animationCfg) { - _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg); - var needsRestoreToNormal = !(state && keepCurrentStates); - var targetStyle; - if (state && state.style) { - if (transition) { - if (keepCurrentStates) { - targetStyle = state.style; - } else { - targetStyle = this._mergeStyle(this.createStyle(), normalState.style); - this._mergeStyle(targetStyle, state.style); - } - } else { - targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style); - this._mergeStyle(targetStyle, state.style); - } - } else if (needsRestoreToNormal) { - targetStyle = normalState.style; - } - if (targetStyle) { - if (transition) { - var sourceStyle = this.style; - this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle); - if (needsRestoreToNormal) { - var changedKeys = keys2(sourceStyle); - for (var i2 = 0; i2 < changedKeys.length; i2++) { - var key = changedKeys[i2]; - if (key in targetStyle) { - targetStyle[key] = targetStyle[key]; - this.style[key] = sourceStyle[key]; - } - } - } - var targetKeys = keys2(targetStyle); - for (var i2 = 0; i2 < targetKeys.length; i2++) { - var key = targetKeys[i2]; - this.style[key] = this.style[key]; - } - this._transitionState(stateName, { - style: targetStyle - }, animationCfg, this.getAnimationStyleProps()); - } else { - this.useStyle(targetStyle); - } - } - var statesKeys = this.__inHover ? PRIMARY_STATES_KEYS_IN_HOVER_LAYER2 : PRIMARY_STATES_KEYS$1; - for (var i2 = 0; i2 < statesKeys.length; i2++) { - var key = statesKeys[i2]; - if (state && state[key] != null) { - this[key] = state[key]; - } else if (needsRestoreToNormal) { - if (normalState[key] != null) { - this[key] = normalState[key]; - } - } - } - }; - Displayable3.prototype._mergeStates = function(states) { - var mergedState = _super.prototype._mergeStates.call(this, states); - var mergedStyle; - for (var i2 = 0; i2 < states.length; i2++) { - var state = states[i2]; - if (state.style) { - mergedStyle = mergedStyle || {}; - this._mergeStyle(mergedStyle, state.style); - } - } - if (mergedStyle) { - mergedState.style = mergedStyle; - } - return mergedState; - }; - Displayable3.prototype._mergeStyle = function(targetStyle, sourceStyle) { - extend3(targetStyle, sourceStyle); - return targetStyle; - }; - Displayable3.prototype.getAnimationStyleProps = function() { - return DEFAULT_COMMON_ANIMATION_PROPS2; - }; - Displayable3.initDefaultProps = function() { - var dispProto = Displayable3.prototype; - dispProto.type = "displayable"; - dispProto.invisible = false; - dispProto.z = 0; - dispProto.z2 = 0; - dispProto.zlevel = 0; - dispProto.culling = false; - dispProto.cursor = "pointer"; - dispProto.rectHover = false; - dispProto.incremental = false; - dispProto._rect = null; - dispProto.dirtyRectTolerance = 0; - dispProto.__dirty = REDRAW_BIT2 | STYLE_CHANGED_BIT2; - }(); - return Displayable3; - }(Element3); - var tmpRect$1 = new BoundingRect2(0, 0, 0, 0); - var viewRect2 = new BoundingRect2(0, 0, 0, 0); - function isDisplayableCulled2(el, width, height) { - tmpRect$1.copy(el.getBoundingRect()); - if (el.transform) { - tmpRect$1.applyTransform(el.transform); - } - viewRect2.width = width; - viewRect2.height = height; - return !tmpRect$1.intersect(viewRect2); - } - var mathMin$1 = Math.min; - var mathMax$1 = Math.max; - var mathSin6 = Math.sin; - var mathCos6 = Math.cos; - var PI210 = Math.PI * 2; - var start3 = create4(); - var end2 = create4(); - var extremity2 = create4(); - function fromPoints2(points5, min5, max5) { - if (points5.length === 0) { - return; - } - var p = points5[0]; - var left = p[0]; - var right = p[0]; - var top = p[1]; - var bottom = p[1]; - for (var i2 = 1; i2 < points5.length; i2++) { - p = points5[i2]; - left = mathMin$1(left, p[0]); - right = mathMax$1(right, p[0]); - top = mathMin$1(top, p[1]); - bottom = mathMax$1(bottom, p[1]); - } - min5[0] = left; - min5[1] = top; - max5[0] = right; - max5[1] = bottom; - } - function fromLine2(x0, y0, x1, y1, min5, max5) { - min5[0] = mathMin$1(x0, x1); - min5[1] = mathMin$1(y0, y1); - max5[0] = mathMax$1(x0, x1); - max5[1] = mathMax$1(y0, y1); - } - var xDim2 = []; - var yDim2 = []; - function fromCubic2(x0, y0, x1, y1, x2, y2, x3, y3, min5, max5) { - var cubicExtrema$1 = cubicExtrema2; - var cubicAt$1 = cubicAt2; - var n = cubicExtrema$1(x0, x1, x2, x3, xDim2); - min5[0] = Infinity; - min5[1] = Infinity; - max5[0] = -Infinity; - max5[1] = -Infinity; - for (var i2 = 0; i2 < n; i2++) { - var x = cubicAt$1(x0, x1, x2, x3, xDim2[i2]); - min5[0] = mathMin$1(x, min5[0]); - max5[0] = mathMax$1(x, max5[0]); - } - n = cubicExtrema$1(y0, y1, y2, y3, yDim2); - for (var i2 = 0; i2 < n; i2++) { - var y = cubicAt$1(y0, y1, y2, y3, yDim2[i2]); - min5[1] = mathMin$1(y, min5[1]); - max5[1] = mathMax$1(y, max5[1]); - } - min5[0] = mathMin$1(x0, min5[0]); - max5[0] = mathMax$1(x0, max5[0]); - min5[0] = mathMin$1(x3, min5[0]); - max5[0] = mathMax$1(x3, max5[0]); - min5[1] = mathMin$1(y0, min5[1]); - max5[1] = mathMax$1(y0, max5[1]); - min5[1] = mathMin$1(y3, min5[1]); - max5[1] = mathMax$1(y3, max5[1]); - } - function fromQuadratic2(x0, y0, x1, y1, x2, y2, min5, max5) { - var quadraticExtremum$1 = quadraticExtremum2; - var quadraticAt$12 = quadraticAt3; - var tx = mathMax$1(mathMin$1(quadraticExtremum$1(x0, x1, x2), 1), 0); - var ty = mathMax$1(mathMin$1(quadraticExtremum$1(y0, y1, y2), 1), 0); - var x = quadraticAt$12(x0, x1, x2, tx); - var y = quadraticAt$12(y0, y1, y2, ty); - min5[0] = mathMin$1(x0, x2, x); - min5[1] = mathMin$1(y0, y2, y); - max5[0] = mathMax$1(x0, x2, x); - max5[1] = mathMax$1(y0, y2, y); - } - function fromArc2(x, y, rx, ry, startAngle, endAngle, anticlockwise, min$12, max$12) { - var vec2Min = min4; - var vec2Max = max4; - var diff = Math.abs(startAngle - endAngle); - if (diff % PI210 < 1e-4 && diff > 1e-4) { - min$12[0] = x - rx; - min$12[1] = y - ry; - max$12[0] = x + rx; - max$12[1] = y + ry; - return; - } - start3[0] = mathCos6(startAngle) * rx + x; - start3[1] = mathSin6(startAngle) * ry + y; - end2[0] = mathCos6(endAngle) * rx + x; - end2[1] = mathSin6(endAngle) * ry + y; - vec2Min(min$12, start3, end2); - vec2Max(max$12, start3, end2); - startAngle = startAngle % PI210; - if (startAngle < 0) { - startAngle = startAngle + PI210; - } - endAngle = endAngle % PI210; - if (endAngle < 0) { - endAngle = endAngle + PI210; - } - if (startAngle > endAngle && !anticlockwise) { - endAngle += PI210; - } else if (startAngle < endAngle && anticlockwise) { - startAngle += PI210; - } - if (anticlockwise) { - var tmp = endAngle; - endAngle = startAngle; - startAngle = tmp; - } - for (var angle = 0; angle < endAngle; angle += Math.PI / 2) { - if (angle > startAngle) { - extremity2[0] = mathCos6(angle) * rx + x; - extremity2[1] = mathSin6(angle) * ry + y; - vec2Min(min$12, extremity2, min$12); - vec2Max(max$12, extremity2, max$12); - } - } - } - var CMD6 = { - M: 1, - L: 2, - C: 3, - Q: 4, - A: 5, - Z: 6, - R: 7 - }; - var tmpOutX2 = []; - var tmpOutY2 = []; - var min$1 = []; - var max$1 = []; - var min23 = []; - var max23 = []; - var mathMin$2 = Math.min; - var mathMax$2 = Math.max; - var mathCos$1 = Math.cos; - var mathSin$1 = Math.sin; - var mathAbs4 = Math.abs; - var PI11 = Math.PI; - var PI2$1 = PI11 * 2; - var hasTypedArray2 = typeof Float32Array !== "undefined"; - var tmpAngles2 = []; - function modPI22(radian) { - var n = Math.round(radian / PI11 * 1e8) / 1e8; - return n % 2 * PI11; - } - function normalizeArcAngles2(angles, anticlockwise) { - var newStartAngle = modPI22(angles[0]); - if (newStartAngle < 0) { - newStartAngle += PI2$1; - } - var delta = newStartAngle - angles[0]; - var newEndAngle = angles[1]; - newEndAngle += delta; - if (!anticlockwise && newEndAngle - newStartAngle >= PI2$1) { - newEndAngle = newStartAngle + PI2$1; - } else if (anticlockwise && newStartAngle - newEndAngle >= PI2$1) { - newEndAngle = newStartAngle - PI2$1; - } else if (!anticlockwise && newStartAngle > newEndAngle) { - newEndAngle = newStartAngle + (PI2$1 - modPI22(newStartAngle - newEndAngle)); - } else if (anticlockwise && newStartAngle < newEndAngle) { - newEndAngle = newStartAngle - (PI2$1 - modPI22(newEndAngle - newStartAngle)); - } - angles[0] = newStartAngle; - angles[1] = newEndAngle; - } - var PathProxy2 = function() { - function PathProxy3(notSaveData) { - this.dpr = 1; - this._xi = 0; - this._yi = 0; - this._x0 = 0; - this._y0 = 0; - this._len = 0; - if (notSaveData) { - this._saveData = false; - } - if (this._saveData) { - this.data = []; - } - } - PathProxy3.prototype.increaseVersion = function() { - this._version++; - }; - PathProxy3.prototype.getVersion = function() { - return this._version; - }; - PathProxy3.prototype.setScale = function(sx, sy, segmentIgnoreThreshold) { - segmentIgnoreThreshold = segmentIgnoreThreshold || 0; - if (segmentIgnoreThreshold > 0) { - this._ux = mathAbs4(segmentIgnoreThreshold / devicePixelRatio2 / sx) || 0; - this._uy = mathAbs4(segmentIgnoreThreshold / devicePixelRatio2 / sy) || 0; - } - }; - PathProxy3.prototype.setDPR = function(dpr3) { - this.dpr = dpr3; - }; - PathProxy3.prototype.setContext = function(ctx) { - this._ctx = ctx; - }; - PathProxy3.prototype.getContext = function() { - return this._ctx; - }; - PathProxy3.prototype.beginPath = function() { - this._ctx && this._ctx.beginPath(); - this.reset(); - return this; - }; - PathProxy3.prototype.reset = function() { - if (this._saveData) { - this._len = 0; - } - if (this._pathSegLen) { - this._pathSegLen = null; - this._pathLen = 0; - } - this._version++; - }; - PathProxy3.prototype.moveTo = function(x, y) { - this._drawPendingPt(); - this.addData(CMD6.M, x, y); - this._ctx && this._ctx.moveTo(x, y); - this._x0 = x; - this._y0 = y; - this._xi = x; - this._yi = y; - return this; - }; - PathProxy3.prototype.lineTo = function(x, y) { - var dx = mathAbs4(x - this._xi); - var dy = mathAbs4(y - this._yi); - var exceedUnit = dx > this._ux || dy > this._uy; - this.addData(CMD6.L, x, y); - if (this._ctx && exceedUnit) { - this._ctx.lineTo(x, y); - } - if (exceedUnit) { - this._xi = x; - this._yi = y; - this._pendingPtDist = 0; - } else { - var d2 = dx * dx + dy * dy; - if (d2 > this._pendingPtDist) { - this._pendingPtX = x; - this._pendingPtY = y; - this._pendingPtDist = d2; - } - } - return this; - }; - PathProxy3.prototype.bezierCurveTo = function(x1, y1, x2, y2, x3, y3) { - this._drawPendingPt(); - this.addData(CMD6.C, x1, y1, x2, y2, x3, y3); - if (this._ctx) { - this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3); - } - this._xi = x3; - this._yi = y3; - return this; - }; - PathProxy3.prototype.quadraticCurveTo = function(x1, y1, x2, y2) { - this._drawPendingPt(); - this.addData(CMD6.Q, x1, y1, x2, y2); - if (this._ctx) { - this._ctx.quadraticCurveTo(x1, y1, x2, y2); - } - this._xi = x2; - this._yi = y2; - return this; - }; - PathProxy3.prototype.arc = function(cx, cy, r, startAngle, endAngle, anticlockwise) { - this._drawPendingPt(); - tmpAngles2[0] = startAngle; - tmpAngles2[1] = endAngle; - normalizeArcAngles2(tmpAngles2, anticlockwise); - startAngle = tmpAngles2[0]; - endAngle = tmpAngles2[1]; - var delta = endAngle - startAngle; - this.addData(CMD6.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1); - this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise); - this._xi = mathCos$1(endAngle) * r + cx; - this._yi = mathSin$1(endAngle) * r + cy; - return this; - }; - PathProxy3.prototype.arcTo = function(x1, y1, x2, y2, radius) { - this._drawPendingPt(); - if (this._ctx) { - this._ctx.arcTo(x1, y1, x2, y2, radius); - } - return this; - }; - PathProxy3.prototype.rect = function(x, y, w, h) { - this._drawPendingPt(); - this._ctx && this._ctx.rect(x, y, w, h); - this.addData(CMD6.R, x, y, w, h); - return this; - }; - PathProxy3.prototype.closePath = function() { - this._drawPendingPt(); - this.addData(CMD6.Z); - var ctx = this._ctx; - var x0 = this._x0; - var y0 = this._y0; - if (ctx) { - ctx.closePath(); - } - this._xi = x0; - this._yi = y0; - return this; - }; - PathProxy3.prototype.fill = function(ctx) { - ctx && ctx.fill(); - this.toStatic(); - }; - PathProxy3.prototype.stroke = function(ctx) { - ctx && ctx.stroke(); - this.toStatic(); - }; - PathProxy3.prototype.len = function() { - return this._len; - }; - PathProxy3.prototype.setData = function(data) { - var len3 = data.length; - if (!(this.data && this.data.length === len3) && hasTypedArray2) { - this.data = new Float32Array(len3); - } - for (var i2 = 0; i2 < len3; i2++) { - this.data[i2] = data[i2]; - } - this._len = len3; - }; - PathProxy3.prototype.appendPath = function(path) { - if (!(path instanceof Array)) { - path = [path]; - } - var len3 = path.length; - var appendSize = 0; - var offset3 = this._len; - for (var i2 = 0; i2 < len3; i2++) { - appendSize += path[i2].len(); - } - if (hasTypedArray2 && this.data instanceof Float32Array) { - this.data = new Float32Array(offset3 + appendSize); - } - for (var i2 = 0; i2 < len3; i2++) { - var appendPathData = path[i2].data; - for (var k2 = 0; k2 < appendPathData.length; k2++) { - this.data[offset3++] = appendPathData[k2]; - } - } - this._len = offset3; - }; - PathProxy3.prototype.addData = function(cmd, a, b, c, d, e3, f, g, h) { - if (!this._saveData) { - return; - } - var data = this.data; - if (this._len + arguments.length > data.length) { - this._expandData(); - data = this.data; - } - for (var i2 = 0; i2 < arguments.length; i2++) { - data[this._len++] = arguments[i2]; - } - }; - PathProxy3.prototype._drawPendingPt = function() { - if (this._pendingPtDist > 0) { - this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY); - this._pendingPtDist = 0; - } - }; - PathProxy3.prototype._expandData = function() { - if (!(this.data instanceof Array)) { - var newData = []; - for (var i2 = 0; i2 < this._len; i2++) { - newData[i2] = this.data[i2]; - } - this.data = newData; - } - }; - PathProxy3.prototype.toStatic = function() { - if (!this._saveData) { - return; - } - this._drawPendingPt(); - var data = this.data; - if (data instanceof Array) { - data.length = this._len; - if (hasTypedArray2 && this._len > 11) { - this.data = new Float32Array(data); - } - } - }; - PathProxy3.prototype.getBoundingRect = function() { - min$1[0] = min$1[1] = min23[0] = min23[1] = Number.MAX_VALUE; - max$1[0] = max$1[1] = max23[0] = max23[1] = -Number.MAX_VALUE; - var data = this.data; - var xi = 0; - var yi = 0; - var x0 = 0; - var y0 = 0; - var i2; - for (i2 = 0; i2 < this._len; ) { - var cmd = data[i2++]; - var isFirst = i2 === 1; - if (isFirst) { - xi = data[i2]; - yi = data[i2 + 1]; - x0 = xi; - y0 = yi; - } - switch (cmd) { - case CMD6.M: - xi = x0 = data[i2++]; - yi = y0 = data[i2++]; - min23[0] = x0; - min23[1] = y0; - max23[0] = x0; - max23[1] = y0; - break; - case CMD6.L: - fromLine2(xi, yi, data[i2], data[i2 + 1], min23, max23); - xi = data[i2++]; - yi = data[i2++]; - break; - case CMD6.C: - fromCubic2(xi, yi, data[i2++], data[i2++], data[i2++], data[i2++], data[i2], data[i2 + 1], min23, max23); - xi = data[i2++]; - yi = data[i2++]; - break; - case CMD6.Q: - fromQuadratic2(xi, yi, data[i2++], data[i2++], data[i2], data[i2 + 1], min23, max23); - xi = data[i2++]; - yi = data[i2++]; - break; - case CMD6.A: - var cx = data[i2++]; - var cy = data[i2++]; - var rx = data[i2++]; - var ry = data[i2++]; - var startAngle = data[i2++]; - var endAngle = data[i2++] + startAngle; - i2 += 1; - var anticlockwise = !data[i2++]; - if (isFirst) { - x0 = mathCos$1(startAngle) * rx + cx; - y0 = mathSin$1(startAngle) * ry + cy; - } - fromArc2(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min23, max23); - xi = mathCos$1(endAngle) * rx + cx; - yi = mathSin$1(endAngle) * ry + cy; - break; - case CMD6.R: - x0 = xi = data[i2++]; - y0 = yi = data[i2++]; - var width = data[i2++]; - var height = data[i2++]; - fromLine2(x0, y0, x0 + width, y0 + height, min23, max23); - break; - case CMD6.Z: - xi = x0; - yi = y0; - break; - } - min4(min$1, min$1, min23); - max4(max$1, max$1, max23); - } - if (i2 === 0) { - min$1[0] = min$1[1] = max$1[0] = max$1[1] = 0; - } - return new BoundingRect2(min$1[0], min$1[1], max$1[0] - min$1[0], max$1[1] - min$1[1]); - }; - PathProxy3.prototype._calculateLength = function() { - var data = this.data; - var len3 = this._len; - var ux = this._ux; - var uy = this._uy; - var xi = 0; - var yi = 0; - var x0 = 0; - var y0 = 0; - if (!this._pathSegLen) { - this._pathSegLen = []; - } - var pathSegLen = this._pathSegLen; - var pathTotalLen = 0; - var segCount = 0; - for (var i2 = 0; i2 < len3; ) { - var cmd = data[i2++]; - var isFirst = i2 === 1; - if (isFirst) { - xi = data[i2]; - yi = data[i2 + 1]; - x0 = xi; - y0 = yi; - } - var l = -1; - switch (cmd) { - case CMD6.M: - xi = x0 = data[i2++]; - yi = y0 = data[i2++]; - break; - case CMD6.L: { - var x2 = data[i2++]; - var y2 = data[i2++]; - var dx = x2 - xi; - var dy = y2 - yi; - if (mathAbs4(dx) > ux || mathAbs4(dy) > uy || i2 === len3 - 1) { - l = Math.sqrt(dx * dx + dy * dy); - xi = x2; - yi = y2; - } - break; - } - case CMD6.C: { - var x1 = data[i2++]; - var y1 = data[i2++]; - var x2 = data[i2++]; - var y2 = data[i2++]; - var x3 = data[i2++]; - var y3 = data[i2++]; - l = cubicLength2(xi, yi, x1, y1, x2, y2, x3, y3, 10); - xi = x3; - yi = y3; - break; - } - case CMD6.Q: { - var x1 = data[i2++]; - var y1 = data[i2++]; - var x2 = data[i2++]; - var y2 = data[i2++]; - l = quadraticLength2(xi, yi, x1, y1, x2, y2, 10); - xi = x2; - yi = y2; - break; - } - case CMD6.A: - var cx = data[i2++]; - var cy = data[i2++]; - var rx = data[i2++]; - var ry = data[i2++]; - var startAngle = data[i2++]; - var delta = data[i2++]; - var endAngle = delta + startAngle; - i2 += 1; - if (isFirst) { - x0 = mathCos$1(startAngle) * rx + cx; - y0 = mathSin$1(startAngle) * ry + cy; - } - l = mathMax$2(rx, ry) * mathMin$2(PI2$1, Math.abs(delta)); - xi = mathCos$1(endAngle) * rx + cx; - yi = mathSin$1(endAngle) * ry + cy; - break; - case CMD6.R: { - x0 = xi = data[i2++]; - y0 = yi = data[i2++]; - var width = data[i2++]; - var height = data[i2++]; - l = width * 2 + height * 2; - break; - } - case CMD6.Z: { - var dx = x0 - xi; - var dy = y0 - yi; - l = Math.sqrt(dx * dx + dy * dy); - xi = x0; - yi = y0; - break; - } - } - if (l >= 0) { - pathSegLen[segCount++] = l; - pathTotalLen += l; - } - } - this._pathLen = pathTotalLen; - return pathTotalLen; - }; - PathProxy3.prototype.rebuildPath = function(ctx, percent) { - var d = this.data; - var ux = this._ux; - var uy = this._uy; - var len3 = this._len; - var x0; - var y0; - var xi; - var yi; - var x; - var y; - var drawPart = percent < 1; - var pathSegLen; - var pathTotalLen; - var accumLength = 0; - var segCount = 0; - var displayedLength; - var pendingPtDist = 0; - var pendingPtX; - var pendingPtY; - if (drawPart) { - if (!this._pathSegLen) { - this._calculateLength(); - } - pathSegLen = this._pathSegLen; - pathTotalLen = this._pathLen; - displayedLength = percent * pathTotalLen; - if (!displayedLength) { - return; - } - } - lo: - for (var i2 = 0; i2 < len3; ) { - var cmd = d[i2++]; - var isFirst = i2 === 1; - if (isFirst) { - xi = d[i2]; - yi = d[i2 + 1]; - x0 = xi; - y0 = yi; - } - if (cmd !== CMD6.L && pendingPtDist > 0) { - ctx.lineTo(pendingPtX, pendingPtY); - pendingPtDist = 0; - } - switch (cmd) { - case CMD6.M: - x0 = xi = d[i2++]; - y0 = yi = d[i2++]; - ctx.moveTo(xi, yi); - break; - case CMD6.L: { - x = d[i2++]; - y = d[i2++]; - var dx = mathAbs4(x - xi); - var dy = mathAbs4(y - yi); - if (dx > ux || dy > uy) { - if (drawPart) { - var l = pathSegLen[segCount++]; - if (accumLength + l > displayedLength) { - var t = (displayedLength - accumLength) / l; - ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t); - break lo; - } - accumLength += l; - } - ctx.lineTo(x, y); - xi = x; - yi = y; - pendingPtDist = 0; - } else { - var d2 = dx * dx + dy * dy; - if (d2 > pendingPtDist) { - pendingPtX = x; - pendingPtY = y; - pendingPtDist = d2; - } - } - break; - } - case CMD6.C: { - var x1 = d[i2++]; - var y1 = d[i2++]; - var x2 = d[i2++]; - var y2 = d[i2++]; - var x3 = d[i2++]; - var y3 = d[i2++]; - if (drawPart) { - var l = pathSegLen[segCount++]; - if (accumLength + l > displayedLength) { - var t = (displayedLength - accumLength) / l; - cubicSubdivide2(xi, x1, x2, x3, t, tmpOutX2); - cubicSubdivide2(yi, y1, y2, y3, t, tmpOutY2); - ctx.bezierCurveTo(tmpOutX2[1], tmpOutY2[1], tmpOutX2[2], tmpOutY2[2], tmpOutX2[3], tmpOutY2[3]); - break lo; - } - accumLength += l; - } - ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3); - xi = x3; - yi = y3; - break; - } - case CMD6.Q: { - var x1 = d[i2++]; - var y1 = d[i2++]; - var x2 = d[i2++]; - var y2 = d[i2++]; - if (drawPart) { - var l = pathSegLen[segCount++]; - if (accumLength + l > displayedLength) { - var t = (displayedLength - accumLength) / l; - quadraticSubdivide2(xi, x1, x2, t, tmpOutX2); - quadraticSubdivide2(yi, y1, y2, t, tmpOutY2); - ctx.quadraticCurveTo(tmpOutX2[1], tmpOutY2[1], tmpOutX2[2], tmpOutY2[2]); - break lo; - } - accumLength += l; - } - ctx.quadraticCurveTo(x1, y1, x2, y2); - xi = x2; - yi = y2; - break; - } - case CMD6.A: - var cx = d[i2++]; - var cy = d[i2++]; - var rx = d[i2++]; - var ry = d[i2++]; - var startAngle = d[i2++]; - var delta = d[i2++]; - var psi = d[i2++]; - var anticlockwise = !d[i2++]; - var r = rx > ry ? rx : ry; - var isEllipse = mathAbs4(rx - ry) > 1e-3; - var endAngle = startAngle + delta; - var breakBuild = false; - if (drawPart) { - var l = pathSegLen[segCount++]; - if (accumLength + l > displayedLength) { - endAngle = startAngle + delta * (displayedLength - accumLength) / l; - breakBuild = true; - } - accumLength += l; - } - if (isEllipse && ctx.ellipse) { - ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise); - } else { - ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise); - } - if (breakBuild) { - break lo; - } - if (isFirst) { - x0 = mathCos$1(startAngle) * rx + cx; - y0 = mathSin$1(startAngle) * ry + cy; - } - xi = mathCos$1(endAngle) * rx + cx; - yi = mathSin$1(endAngle) * ry + cy; - break; - case CMD6.R: - x0 = xi = d[i2]; - y0 = yi = d[i2 + 1]; - x = d[i2++]; - y = d[i2++]; - var width = d[i2++]; - var height = d[i2++]; - if (drawPart) { - var l = pathSegLen[segCount++]; - if (accumLength + l > displayedLength) { - var d_1 = displayedLength - accumLength; - ctx.moveTo(x, y); - ctx.lineTo(x + mathMin$2(d_1, width), y); - d_1 -= width; - if (d_1 > 0) { - ctx.lineTo(x + width, y + mathMin$2(d_1, height)); - } - d_1 -= height; - if (d_1 > 0) { - ctx.lineTo(x + mathMax$2(width - d_1, 0), y + height); - } - d_1 -= width; - if (d_1 > 0) { - ctx.lineTo(x, y + mathMax$2(height - d_1, 0)); - } - break lo; - } - accumLength += l; - } - ctx.rect(x, y, width, height); - break; - case CMD6.Z: - if (drawPart) { - var l = pathSegLen[segCount++]; - if (accumLength + l > displayedLength) { - var t = (displayedLength - accumLength) / l; - ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t); - break lo; - } - accumLength += l; - } - ctx.closePath(); - xi = x0; - yi = y0; - } - } - }; - PathProxy3.prototype.clone = function() { - var newProxy = new PathProxy3(); - var data = this.data; - newProxy.data = data.slice ? data.slice() : Array.prototype.slice.call(data); - newProxy._len = this._len; - return newProxy; - }; - PathProxy3.CMD = CMD6; - PathProxy3.initDefaultProps = function() { - var proto3 = PathProxy3.prototype; - proto3._saveData = true; - proto3._ux = 0; - proto3._uy = 0; - proto3._pendingPtDist = 0; - proto3._version = 0; - }(); - return PathProxy3; - }(); - function containStroke6(x0, y0, x1, y1, lineWidth, x, y) { - if (lineWidth === 0) { - return false; - } - var _l = lineWidth; - var _a3 = 0; - var _b3 = x0; - if (y > y0 + _l && y > y1 + _l || y < y0 - _l && y < y1 - _l || x > x0 + _l && x > x1 + _l || x < x0 - _l && x < x1 - _l) { - return false; - } - if (x0 !== x1) { - _a3 = (y0 - y1) / (x0 - x1); - _b3 = (x0 * y1 - x1 * y0) / (x0 - x1); - } else { - return Math.abs(x - x0) <= _l / 2; - } - var tmp = _a3 * x - y + _b3; - var _s = tmp * tmp / (_a3 * _a3 + 1); - return _s <= _l / 2 * _l / 2; - } - function containStroke$1(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) { - if (lineWidth === 0) { - return false; - } - var _l = lineWidth; - if (y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l) { - return false; - } - var d = cubicProjectPoint2(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null); - return d <= _l / 2; - } - function containStroke$2(x0, y0, x1, y1, x2, y2, lineWidth, x, y) { - if (lineWidth === 0) { - return false; - } - var _l = lineWidth; - if (y > y0 + _l && y > y1 + _l && y > y2 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l) { - return false; - } - var d = quadraticProjectPoint2(x0, y0, x1, y1, x2, y2, x, y, null); - return d <= _l / 2; - } - var PI2$2 = Math.PI * 2; - function normalizeRadian2(angle) { - angle %= PI2$2; - if (angle < 0) { - angle += PI2$2; - } - return angle; - } - var PI2$3 = Math.PI * 2; - function containStroke$3(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) { - if (lineWidth === 0) { - return false; - } - var _l = lineWidth; - x -= cx; - y -= cy; - var d = Math.sqrt(x * x + y * y); - if (d - _l > r || d + _l < r) { - return false; - } - if (Math.abs(startAngle - endAngle) % PI2$3 < 1e-4) { - return true; - } - if (anticlockwise) { - var tmp = startAngle; - startAngle = normalizeRadian2(endAngle); - endAngle = normalizeRadian2(tmp); - } else { - startAngle = normalizeRadian2(startAngle); - endAngle = normalizeRadian2(endAngle); - } - if (startAngle > endAngle) { - endAngle += PI2$3; - } - var angle = Math.atan2(y, x); - if (angle < 0) { - angle += PI2$3; - } - return angle >= startAngle && angle <= endAngle || angle + PI2$3 >= startAngle && angle + PI2$3 <= endAngle; - } - function windingLine2(x0, y0, x1, y1, x, y) { - if (y > y0 && y > y1 || y < y0 && y < y1) { - return 0; - } - if (y1 === y0) { - return 0; - } - var t = (y - y0) / (y1 - y0); - var dir4 = y1 < y0 ? 1 : -1; - if (t === 1 || t === 0) { - dir4 = y1 < y0 ? 0.5 : -0.5; - } - var x_ = t * (x1 - x0) + x0; - return x_ === x ? Infinity : x_ > x ? dir4 : 0; - } - var CMD$1 = PathProxy2.CMD; - var PI2$4 = Math.PI * 2; - var EPSILON$3 = 1e-4; - function isAroundEqual3(a, b) { - return Math.abs(a - b) < EPSILON$3; - } - var roots2 = [-1, -1, -1]; - var extrema2 = [-1, -1]; - function swapExtrema2() { - var tmp = extrema2[0]; - extrema2[0] = extrema2[1]; - extrema2[1] = tmp; - } - function windingCubic2(x0, y0, x1, y1, x2, y2, x3, y3, x, y) { - if (y > y0 && y > y1 && y > y2 && y > y3 || y < y0 && y < y1 && y < y2 && y < y3) { - return 0; - } - var nRoots = cubicRootAt2(y0, y1, y2, y3, y, roots2); - if (nRoots === 0) { - return 0; - } else { - var w = 0; - var nExtrema = -1; - var y0_ = void 0; - var y1_ = void 0; - for (var i2 = 0; i2 < nRoots; i2++) { - var t = roots2[i2]; - var unit = t === 0 || t === 1 ? 0.5 : 1; - var x_ = cubicAt2(x0, x1, x2, x3, t); - if (x_ < x) { - continue; - } - if (nExtrema < 0) { - nExtrema = cubicExtrema2(y0, y1, y2, y3, extrema2); - if (extrema2[1] < extrema2[0] && nExtrema > 1) { - swapExtrema2(); - } - y0_ = cubicAt2(y0, y1, y2, y3, extrema2[0]); - if (nExtrema > 1) { - y1_ = cubicAt2(y0, y1, y2, y3, extrema2[1]); - } - } - if (nExtrema === 2) { - if (t < extrema2[0]) { - w += y0_ < y0 ? unit : -unit; - } else if (t < extrema2[1]) { - w += y1_ < y0_ ? unit : -unit; - } else { - w += y3 < y1_ ? unit : -unit; - } - } else { - if (t < extrema2[0]) { - w += y0_ < y0 ? unit : -unit; - } else { - w += y3 < y0_ ? unit : -unit; - } - } - } - return w; - } - } - function windingQuadratic2(x0, y0, x1, y1, x2, y2, x, y) { - if (y > y0 && y > y1 && y > y2 || y < y0 && y < y1 && y < y2) { - return 0; - } - var nRoots = quadraticRootAt2(y0, y1, y2, y, roots2); - if (nRoots === 0) { - return 0; - } else { - var t = quadraticExtremum2(y0, y1, y2); - if (t >= 0 && t <= 1) { - var w = 0; - var y_ = quadraticAt3(y0, y1, y2, t); - for (var i2 = 0; i2 < nRoots; i2++) { - var unit = roots2[i2] === 0 || roots2[i2] === 1 ? 0.5 : 1; - var x_ = quadraticAt3(x0, x1, x2, roots2[i2]); - if (x_ < x) { - continue; - } - if (roots2[i2] < t) { - w += y_ < y0 ? unit : -unit; - } else { - w += y2 < y_ ? unit : -unit; - } - } - return w; - } else { - var unit = roots2[0] === 0 || roots2[0] === 1 ? 0.5 : 1; - var x_ = quadraticAt3(x0, x1, x2, roots2[0]); - if (x_ < x) { - return 0; - } - return y2 < y0 ? unit : -unit; - } - } - } - function windingArc2(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) { - y -= cy; - if (y > r || y < -r) { - return 0; - } - var tmp = Math.sqrt(r * r - y * y); - roots2[0] = -tmp; - roots2[1] = tmp; - var dTheta = Math.abs(startAngle - endAngle); - if (dTheta < 1e-4) { - return 0; - } - if (dTheta >= PI2$4 - 1e-4) { - startAngle = 0; - endAngle = PI2$4; - var dir4 = anticlockwise ? 1 : -1; - if (x >= roots2[0] + cx && x <= roots2[1] + cx) { - return dir4; - } else { - return 0; - } - } - if (startAngle > endAngle) { - var tmp_1 = startAngle; - startAngle = endAngle; - endAngle = tmp_1; - } - if (startAngle < 0) { - startAngle += PI2$4; - endAngle += PI2$4; - } - var w = 0; - for (var i2 = 0; i2 < 2; i2++) { - var x_ = roots2[i2]; - if (x_ + cx > x) { - var angle = Math.atan2(y, x_); - var dir4 = anticlockwise ? 1 : -1; - if (angle < 0) { - angle = PI2$4 + angle; - } - if (angle >= startAngle && angle <= endAngle || angle + PI2$4 >= startAngle && angle + PI2$4 <= endAngle) { - if (angle > Math.PI / 2 && angle < Math.PI * 1.5) { - dir4 = -dir4; - } - w += dir4; - } - } - } - return w; - } - function containPath2(path, lineWidth, isStroke, x, y) { - var data = path.data; - var len3 = path.len(); - var w = 0; - var xi = 0; - var yi = 0; - var x0 = 0; - var y0 = 0; - var x1; - var y1; - for (var i2 = 0; i2 < len3; ) { - var cmd = data[i2++]; - var isFirst = i2 === 1; - if (cmd === CMD$1.M && i2 > 1) { - if (!isStroke) { - w += windingLine2(xi, yi, x0, y0, x, y); - } - } - if (isFirst) { - xi = data[i2]; - yi = data[i2 + 1]; - x0 = xi; - y0 = yi; - } - switch (cmd) { - case CMD$1.M: - x0 = data[i2++]; - y0 = data[i2++]; - xi = x0; - yi = y0; - break; - case CMD$1.L: - if (isStroke) { - if (containStroke6(xi, yi, data[i2], data[i2 + 1], lineWidth, x, y)) { - return true; - } - } else { - w += windingLine2(xi, yi, data[i2], data[i2 + 1], x, y) || 0; - } - xi = data[i2++]; - yi = data[i2++]; - break; - case CMD$1.C: - if (isStroke) { - if (containStroke$1(xi, yi, data[i2++], data[i2++], data[i2++], data[i2++], data[i2], data[i2 + 1], lineWidth, x, y)) { - return true; - } - } else { - w += windingCubic2(xi, yi, data[i2++], data[i2++], data[i2++], data[i2++], data[i2], data[i2 + 1], x, y) || 0; - } - xi = data[i2++]; - yi = data[i2++]; - break; - case CMD$1.Q: - if (isStroke) { - if (containStroke$2(xi, yi, data[i2++], data[i2++], data[i2], data[i2 + 1], lineWidth, x, y)) { - return true; - } - } else { - w += windingQuadratic2(xi, yi, data[i2++], data[i2++], data[i2], data[i2 + 1], x, y) || 0; - } - xi = data[i2++]; - yi = data[i2++]; - break; - case CMD$1.A: - var cx = data[i2++]; - var cy = data[i2++]; - var rx = data[i2++]; - var ry = data[i2++]; - var theta = data[i2++]; - var dTheta = data[i2++]; - i2 += 1; - var anticlockwise = !!(1 - data[i2++]); - x1 = Math.cos(theta) * rx + cx; - y1 = Math.sin(theta) * ry + cy; - if (!isFirst) { - w += windingLine2(xi, yi, x1, y1, x, y); - } else { - x0 = x1; - y0 = y1; - } - var _x = (x - cx) * ry / rx + cx; - if (isStroke) { - if (containStroke$3(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) { - return true; - } - } else { - w += windingArc2(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y); - } - xi = Math.cos(theta + dTheta) * rx + cx; - yi = Math.sin(theta + dTheta) * ry + cy; - break; - case CMD$1.R: - x0 = xi = data[i2++]; - y0 = yi = data[i2++]; - var width = data[i2++]; - var height = data[i2++]; - x1 = x0 + width; - y1 = y0 + height; - if (isStroke) { - if (containStroke6(x0, y0, x1, y0, lineWidth, x, y) || containStroke6(x1, y0, x1, y1, lineWidth, x, y) || containStroke6(x1, y1, x0, y1, lineWidth, x, y) || containStroke6(x0, y1, x0, y0, lineWidth, x, y)) { - return true; - } - } else { - w += windingLine2(x1, y0, x1, y1, x, y); - w += windingLine2(x0, y1, x0, y0, x, y); - } - break; - case CMD$1.Z: - if (isStroke) { - if (containStroke6(xi, yi, x0, y0, lineWidth, x, y)) { - return true; - } - } else { - w += windingLine2(xi, yi, x0, y0, x, y); - } - xi = x0; - yi = y0; - break; - } - } - if (!isStroke && !isAroundEqual3(yi, y0)) { - w += windingLine2(xi, yi, x0, y0, x, y) || 0; - } - return w !== 0; - } - function contain4(pathProxy, x, y) { - return containPath2(pathProxy, 0, false, x, y); - } - function containStroke$4(pathProxy, lineWidth, x, y) { - return containPath2(pathProxy, lineWidth, true, x, y); - } - var DEFAULT_PATH_STYLE2 = defaults2({ - fill: "#000", - stroke: null, - strokePercent: 1, - fillOpacity: 1, - strokeOpacity: 1, - lineDashOffset: 0, - lineWidth: 1, - lineCap: "butt", - miterLimit: 10, - strokeNoScale: false, - strokeFirst: false - }, DEFAULT_COMMON_STYLE2); - var DEFAULT_PATH_ANIMATION_PROPS2 = { - style: defaults2({ - fill: true, - stroke: true, - strokePercent: true, - fillOpacity: true, - strokeOpacity: true, - lineDashOffset: true, - lineWidth: true, - miterLimit: true - }, DEFAULT_COMMON_ANIMATION_PROPS2.style) - }; - var pathCopyParams2 = TRANSFORMABLE_PROPS2.concat([ - "invisible", - "culling", - "z", - "z2", - "zlevel", - "parent" - ]); - var Path2 = function(_super) { - __extends2(Path3, _super); - function Path3(opts) { - return _super.call(this, opts) || this; - } - Path3.prototype.update = function() { - var _this = this; - _super.prototype.update.call(this); - var style = this.style; - if (style.decal) { - var decalEl = this._decalEl = this._decalEl || new Path3(); - if (decalEl.buildPath === Path3.prototype.buildPath) { - decalEl.buildPath = function(ctx) { - _this.buildPath(ctx, _this.shape); - }; - } - decalEl.silent = true; - var decalElStyle = decalEl.style; - for (var key in style) { - if (decalElStyle[key] !== style[key]) { - decalElStyle[key] = style[key]; - } - } - decalElStyle.fill = style.fill ? style.decal : null; - decalElStyle.decal = null; - decalElStyle.shadowColor = null; - style.strokeFirst && (decalElStyle.stroke = null); - for (var i2 = 0; i2 < pathCopyParams2.length; ++i2) { - decalEl[pathCopyParams2[i2]] = this[pathCopyParams2[i2]]; - } - decalEl.__dirty |= REDRAW_BIT2; - } else if (this._decalEl) { - this._decalEl = null; - } - }; - Path3.prototype.getDecalElement = function() { - return this._decalEl; - }; - Path3.prototype._init = function(props) { - var keysArr = keys2(props); - this.shape = this.getDefaultShape(); - var defaultStyle = this.getDefaultStyle(); - if (defaultStyle) { - this.useStyle(defaultStyle); - } - for (var i2 = 0; i2 < keysArr.length; i2++) { - var key = keysArr[i2]; - var value = props[key]; - if (key === "style") { - if (!this.style) { - this.useStyle(value); - } else { - extend3(this.style, value); - } - } else if (key === "shape") { - extend3(this.shape, value); - } else { - _super.prototype.attrKV.call(this, key, value); - } - } - if (!this.style) { - this.useStyle({}); - } - }; - Path3.prototype.getDefaultStyle = function() { - return null; - }; - Path3.prototype.getDefaultShape = function() { - return {}; - }; - Path3.prototype.canBeInsideText = function() { - return this.hasFill(); - }; - Path3.prototype.getInsideTextFill = function() { - var pathFill = this.style.fill; - if (pathFill !== "none") { - if (isString2(pathFill)) { - var fillLum = lum2(pathFill, 0); - if (fillLum > 0.5) { - return DARK_LABEL_COLOR2; - } else if (fillLum > 0.2) { - return LIGHTER_LABEL_COLOR2; - } - return LIGHT_LABEL_COLOR2; - } else if (pathFill) { - return LIGHT_LABEL_COLOR2; - } - } - return DARK_LABEL_COLOR2; - }; - Path3.prototype.getInsideTextStroke = function(textFill) { - var pathFill = this.style.fill; - if (isString2(pathFill)) { - var zr = this.__zr; - var isDarkMode3 = !!(zr && zr.isDarkMode()); - var isDarkLabel = lum2(textFill, 0) < DARK_MODE_THRESHOLD2; - if (isDarkMode3 === isDarkLabel) { - return pathFill; - } - } - }; - Path3.prototype.buildPath = function(ctx, shapeCfg, inBatch) { - }; - Path3.prototype.pathUpdated = function() { - this.__dirty &= ~SHAPE_CHANGED_BIT2; - }; - Path3.prototype.getUpdatedPathProxy = function(inBatch) { - !this.path && this.createPathProxy(); - this.path.beginPath(); - this.buildPath(this.path, this.shape, inBatch); - return this.path; - }; - Path3.prototype.createPathProxy = function() { - this.path = new PathProxy2(false); - }; - Path3.prototype.hasStroke = function() { - var style = this.style; - var stroke = style.stroke; - return !(stroke == null || stroke === "none" || !(style.lineWidth > 0)); - }; - Path3.prototype.hasFill = function() { - var style = this.style; - var fill = style.fill; - return fill != null && fill !== "none"; - }; - Path3.prototype.getBoundingRect = function() { - var rect = this._rect; - var style = this.style; - var needsUpdateRect = !rect; - if (needsUpdateRect) { - var firstInvoke = false; - if (!this.path) { - firstInvoke = true; - this.createPathProxy(); - } - var path = this.path; - if (firstInvoke || this.__dirty & SHAPE_CHANGED_BIT2) { - path.beginPath(); - this.buildPath(path, this.shape, false); - this.pathUpdated(); - } - rect = path.getBoundingRect(); - } - this._rect = rect; - if (this.hasStroke() && this.path && this.path.len() > 0) { - var rectStroke = this._rectStroke || (this._rectStroke = rect.clone()); - if (this.__dirty || needsUpdateRect) { - rectStroke.copy(rect); - var lineScale = style.strokeNoScale ? this.getLineScale() : 1; - var w = style.lineWidth; - if (!this.hasFill()) { - var strokeContainThreshold = this.strokeContainThreshold; - w = Math.max(w, strokeContainThreshold == null ? 4 : strokeContainThreshold); - } - if (lineScale > 1e-10) { - rectStroke.width += w / lineScale; - rectStroke.height += w / lineScale; - rectStroke.x -= w / lineScale / 2; - rectStroke.y -= w / lineScale / 2; - } - } - return rectStroke; - } - return rect; - }; - Path3.prototype.contain = function(x, y) { - var localPos = this.transformCoordToLocal(x, y); - var rect = this.getBoundingRect(); - var style = this.style; - x = localPos[0]; - y = localPos[1]; - if (rect.contain(x, y)) { - var pathProxy = this.path; - if (this.hasStroke()) { - var lineWidth = style.lineWidth; - var lineScale = style.strokeNoScale ? this.getLineScale() : 1; - if (lineScale > 1e-10) { - if (!this.hasFill()) { - lineWidth = Math.max(lineWidth, this.strokeContainThreshold); - } - if (containStroke$4(pathProxy, lineWidth / lineScale, x, y)) { - return true; - } - } - } - if (this.hasFill()) { - return contain4(pathProxy, x, y); - } - } - return false; - }; - Path3.prototype.dirtyShape = function() { - this.__dirty |= SHAPE_CHANGED_BIT2; - if (this._rect) { - this._rect = null; - } - if (this._decalEl) { - this._decalEl.dirtyShape(); - } - this.markRedraw(); - }; - Path3.prototype.dirty = function() { - this.dirtyStyle(); - this.dirtyShape(); - }; - Path3.prototype.animateShape = function(loop) { - return this.animate("shape", loop); - }; - Path3.prototype.updateDuringAnimation = function(targetKey) { - if (targetKey === "style") { - this.dirtyStyle(); - } else if (targetKey === "shape") { - this.dirtyShape(); - } else { - this.markRedraw(); - } - }; - Path3.prototype.attrKV = function(key, value) { - if (key === "shape") { - this.setShape(value); - } else { - _super.prototype.attrKV.call(this, key, value); - } - }; - Path3.prototype.setShape = function(keyOrObj, value) { - var shape = this.shape; - if (!shape) { - shape = this.shape = {}; - } - if (typeof keyOrObj === "string") { - shape[keyOrObj] = value; - } else { - extend3(shape, keyOrObj); - } - this.dirtyShape(); - return this; - }; - Path3.prototype.shapeChanged = function() { - return !!(this.__dirty & SHAPE_CHANGED_BIT2); - }; - Path3.prototype.createStyle = function(obj) { - return createObject2(DEFAULT_PATH_STYLE2, obj); - }; - Path3.prototype._innerSaveToNormal = function(toState) { - _super.prototype._innerSaveToNormal.call(this, toState); - var normalState = this._normalState; - if (toState.shape && !normalState.shape) { - normalState.shape = extend3({}, this.shape); - } - }; - Path3.prototype._applyStateObj = function(stateName, state, normalState, keepCurrentStates, transition, animationCfg) { - _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg); - var needsRestoreToNormal = !(state && keepCurrentStates); - var targetShape; - if (state && state.shape) { - if (transition) { - if (keepCurrentStates) { - targetShape = state.shape; - } else { - targetShape = extend3({}, normalState.shape); - extend3(targetShape, state.shape); - } - } else { - targetShape = extend3({}, keepCurrentStates ? this.shape : normalState.shape); - extend3(targetShape, state.shape); - } - } else if (needsRestoreToNormal) { - targetShape = normalState.shape; - } - if (targetShape) { - if (transition) { - this.shape = extend3({}, this.shape); - var targetShapePrimaryProps = {}; - var shapeKeys = keys2(targetShape); - for (var i2 = 0; i2 < shapeKeys.length; i2++) { - var key = shapeKeys[i2]; - if (typeof targetShape[key] === "object") { - this.shape[key] = targetShape[key]; - } else { - targetShapePrimaryProps[key] = targetShape[key]; - } - } - this._transitionState(stateName, { - shape: targetShapePrimaryProps - }, animationCfg); - } else { - this.shape = targetShape; - this.dirtyShape(); - } - } - }; - Path3.prototype._mergeStates = function(states) { - var mergedState = _super.prototype._mergeStates.call(this, states); - var mergedShape; - for (var i2 = 0; i2 < states.length; i2++) { - var state = states[i2]; - if (state.shape) { - mergedShape = mergedShape || {}; - this._mergeStyle(mergedShape, state.shape); - } - } - if (mergedShape) { - mergedState.shape = mergedShape; - } - return mergedState; - }; - Path3.prototype.getAnimationStyleProps = function() { - return DEFAULT_PATH_ANIMATION_PROPS2; - }; - Path3.prototype.isZeroArea = function() { - return false; - }; - Path3.extend = function(defaultProps) { - var Sub = function(_super2) { - __extends2(Sub2, _super2); - function Sub2(opts) { - var _this = _super2.call(this, opts) || this; - defaultProps.init && defaultProps.init.call(_this, opts); - return _this; - } - Sub2.prototype.getDefaultStyle = function() { - return clone6(defaultProps.style); - }; - Sub2.prototype.getDefaultShape = function() { - return clone6(defaultProps.shape); - }; - return Sub2; - }(Path3); - for (var key in defaultProps) { - if (typeof defaultProps[key] === "function") { - Sub.prototype[key] = defaultProps[key]; - } - } - return Sub; - }; - Path3.initDefaultProps = function() { - var pathProto = Path3.prototype; - pathProto.type = "path"; - pathProto.strokeContainThreshold = 5; - pathProto.segmentIgnoreThreshold = 0; - pathProto.subPixelOptimize = false; - pathProto.autoBatch = false; - pathProto.__dirty = REDRAW_BIT2 | STYLE_CHANGED_BIT2 | SHAPE_CHANGED_BIT2; - }(); - return Path3; - }(Displayable2); - var DEFAULT_TSPAN_STYLE2 = defaults2({ - strokeFirst: true, - font: DEFAULT_FONT2, - x: 0, - y: 0, - textAlign: "left", - textBaseline: "top", - miterLimit: 2 - }, DEFAULT_PATH_STYLE2); - var TSpan2 = function(_super) { - __extends2(TSpan3, _super); - function TSpan3() { - return _super !== null && _super.apply(this, arguments) || this; - } - TSpan3.prototype.hasStroke = function() { - var style = this.style; - var stroke = style.stroke; - return stroke != null && stroke !== "none" && style.lineWidth > 0; - }; - TSpan3.prototype.hasFill = function() { - var style = this.style; - var fill = style.fill; - return fill != null && fill !== "none"; - }; - TSpan3.prototype.createStyle = function(obj) { - return createObject2(DEFAULT_TSPAN_STYLE2, obj); - }; - TSpan3.prototype.setBoundingRect = function(rect) { - this._rect = rect; - }; - TSpan3.prototype.getBoundingRect = function() { - var style = this.style; - if (!this._rect) { - var text = style.text; - text != null ? text += "" : text = ""; - var rect = getBoundingRect2(text, style.font, style.textAlign, style.textBaseline); - rect.x += style.x || 0; - rect.y += style.y || 0; - if (this.hasStroke()) { - var w = style.lineWidth; - rect.x -= w / 2; - rect.y -= w / 2; - rect.width += w; - rect.height += w; - } - this._rect = rect; - } - return this._rect; - }; - TSpan3.initDefaultProps = function() { - var tspanProto = TSpan3.prototype; - tspanProto.dirtyRectTolerance = 10; - }(); - return TSpan3; - }(Displayable2); - TSpan2.prototype.type = "tspan"; - var DEFAULT_IMAGE_STYLE2 = defaults2({ - x: 0, - y: 0 - }, DEFAULT_COMMON_STYLE2); - var DEFAULT_IMAGE_ANIMATION_PROPS2 = { - style: defaults2({ - x: true, - y: true, - width: true, - height: true, - sx: true, - sy: true, - sWidth: true, - sHeight: true - }, DEFAULT_COMMON_ANIMATION_PROPS2.style) - }; - function isImageLike3(source) { - return !!(source && typeof source !== "string" && source.width && source.height); - } - var ZRImage2 = function(_super) { - __extends2(ZRImage3, _super); - function ZRImage3() { - return _super !== null && _super.apply(this, arguments) || this; - } - ZRImage3.prototype.createStyle = function(obj) { - return createObject2(DEFAULT_IMAGE_STYLE2, obj); - }; - ZRImage3.prototype._getSize = function(dim) { - var style = this.style; - var size2 = style[dim]; - if (size2 != null) { - return size2; - } - var imageSource = isImageLike3(style.image) ? style.image : this.__image; - if (!imageSource) { - return 0; - } - var otherDim = dim === "width" ? "height" : "width"; - var otherDimSize = style[otherDim]; - if (otherDimSize == null) { - return imageSource[dim]; - } else { - return imageSource[dim] / imageSource[otherDim] * otherDimSize; - } - }; - ZRImage3.prototype.getWidth = function() { - return this._getSize("width"); - }; - ZRImage3.prototype.getHeight = function() { - return this._getSize("height"); - }; - ZRImage3.prototype.getAnimationStyleProps = function() { - return DEFAULT_IMAGE_ANIMATION_PROPS2; - }; - ZRImage3.prototype.getBoundingRect = function() { - var style = this.style; - if (!this._rect) { - this._rect = new BoundingRect2(style.x || 0, style.y || 0, this.getWidth(), this.getHeight()); - } - return this._rect; - }; - return ZRImage3; - }(Displayable2); - ZRImage2.prototype.type = "image"; - function buildPath4(ctx, shape) { - var x = shape.x; - var y = shape.y; - var width = shape.width; - var height = shape.height; - var r = shape.r; - var r1; - var r2; - var r3; - var r4; - if (width < 0) { - x = x + width; - width = -width; - } - if (height < 0) { - y = y + height; - height = -height; - } - if (typeof r === "number") { - r1 = r2 = r3 = r4 = r; - } else if (r instanceof Array) { - if (r.length === 1) { - r1 = r2 = r3 = r4 = r[0]; - } else if (r.length === 2) { - r1 = r3 = r[0]; - r2 = r4 = r[1]; - } else if (r.length === 3) { - r1 = r[0]; - r2 = r4 = r[1]; - r3 = r[2]; - } else { - r1 = r[0]; - r2 = r[1]; - r3 = r[2]; - r4 = r[3]; - } - } else { - r1 = r2 = r3 = r4 = 0; - } - var total; - if (r1 + r2 > width) { - total = r1 + r2; - r1 *= width / total; - r2 *= width / total; - } - if (r3 + r4 > width) { - total = r3 + r4; - r3 *= width / total; - r4 *= width / total; - } - if (r2 + r3 > height) { - total = r2 + r3; - r2 *= height / total; - r3 *= height / total; - } - if (r1 + r4 > height) { - total = r1 + r4; - r1 *= height / total; - r4 *= height / total; - } - ctx.moveTo(x + r1, y); - ctx.lineTo(x + width - r2, y); - r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0); - ctx.lineTo(x + width, y + height - r3); - r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2); - ctx.lineTo(x + r4, y + height); - r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI); - ctx.lineTo(x, y + r1); - r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5); - } - var round$1 = Math.round; - function subPixelOptimizeLine3(outputShape, inputShape, style) { - if (!inputShape) { - return; - } - var x1 = inputShape.x1; - var x2 = inputShape.x2; - var y1 = inputShape.y1; - var y2 = inputShape.y2; - outputShape.x1 = x1; - outputShape.x2 = x2; - outputShape.y1 = y1; - outputShape.y2 = y2; - var lineWidth = style && style.lineWidth; - if (!lineWidth) { - return outputShape; - } - if (round$1(x1 * 2) === round$1(x2 * 2)) { - outputShape.x1 = outputShape.x2 = subPixelOptimize3(x1, lineWidth, true); - } - if (round$1(y1 * 2) === round$1(y2 * 2)) { - outputShape.y1 = outputShape.y2 = subPixelOptimize3(y1, lineWidth, true); - } - return outputShape; - } - function subPixelOptimizeRect3(outputShape, inputShape, style) { - if (!inputShape) { - return; - } - var originX = inputShape.x; - var originY = inputShape.y; - var originWidth = inputShape.width; - var originHeight = inputShape.height; - outputShape.x = originX; - outputShape.y = originY; - outputShape.width = originWidth; - outputShape.height = originHeight; - var lineWidth = style && style.lineWidth; - if (!lineWidth) { - return outputShape; - } - outputShape.x = subPixelOptimize3(originX, lineWidth, true); - outputShape.y = subPixelOptimize3(originY, lineWidth, true); - outputShape.width = Math.max(subPixelOptimize3(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1); - outputShape.height = Math.max(subPixelOptimize3(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1); - return outputShape; - } - function subPixelOptimize3(position3, lineWidth, positiveOrNegative) { - if (!lineWidth) { - return position3; - } - var doubledPosition = round$1(position3 * 2); - return (doubledPosition + round$1(lineWidth)) % 2 === 0 ? doubledPosition / 2 : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2; - } - var RectShape2 = /* @__PURE__ */ function() { - function RectShape3() { - this.x = 0; - this.y = 0; - this.width = 0; - this.height = 0; - } - return RectShape3; - }(); - var subPixelOptimizeOutputShape3 = {}; - var Rect4 = function(_super) { - __extends2(Rect5, _super); - function Rect5(opts) { - return _super.call(this, opts) || this; - } - Rect5.prototype.getDefaultShape = function() { - return new RectShape2(); - }; - Rect5.prototype.buildPath = function(ctx, shape) { - var x; - var y; - var width; - var height; - if (this.subPixelOptimize) { - var optimizedShape = subPixelOptimizeRect3(subPixelOptimizeOutputShape3, shape, this.style); - x = optimizedShape.x; - y = optimizedShape.y; - width = optimizedShape.width; - height = optimizedShape.height; - optimizedShape.r = shape.r; - shape = optimizedShape; - } else { - x = shape.x; - y = shape.y; - width = shape.width; - height = shape.height; - } - if (!shape.r) { - ctx.rect(x, y, width, height); - } else { - buildPath4(ctx, shape); - } - }; - Rect5.prototype.isZeroArea = function() { - return !this.shape.width || !this.shape.height; - }; - return Rect5; - }(Path2); - Rect4.prototype.type = "rect"; - var DEFAULT_RICH_TEXT_COLOR2 = { - fill: "#000" - }; - var DEFAULT_STROKE_LINE_WIDTH2 = 2; - var DEFAULT_TEXT_ANIMATION_PROPS2 = { - style: defaults2({ - fill: true, - stroke: true, - fillOpacity: true, - strokeOpacity: true, - lineWidth: true, - fontSize: true, - lineHeight: true, - width: true, - height: true, - textShadowColor: true, - textShadowBlur: true, - textShadowOffsetX: true, - textShadowOffsetY: true, - backgroundColor: true, - padding: true, - borderColor: true, - borderWidth: true, - borderRadius: true - }, DEFAULT_COMMON_ANIMATION_PROPS2.style) - }; - var ZRText2 = function(_super) { - __extends2(ZRText3, _super); - function ZRText3(opts) { - var _this = _super.call(this) || this; - _this.type = "text"; - _this._children = []; - _this._defaultStyle = DEFAULT_RICH_TEXT_COLOR2; - _this.attr(opts); - return _this; - } - ZRText3.prototype.childrenRef = function() { - return this._children; - }; - ZRText3.prototype.update = function() { - _super.prototype.update.call(this); - if (this.styleChanged()) { - this._updateSubTexts(); - } - for (var i2 = 0; i2 < this._children.length; i2++) { - var child = this._children[i2]; - child.zlevel = this.zlevel; - child.z = this.z; - child.z2 = this.z2; - child.culling = this.culling; - child.cursor = this.cursor; - child.invisible = this.invisible; - } - }; - ZRText3.prototype.updateTransform = function() { - var innerTransformable = this.innerTransformable; - if (innerTransformable) { - innerTransformable.updateTransform(); - if (innerTransformable.transform) { - this.transform = innerTransformable.transform; - } - } else { - _super.prototype.updateTransform.call(this); - } - }; - ZRText3.prototype.getLocalTransform = function(m3) { - var innerTransformable = this.innerTransformable; - return innerTransformable ? innerTransformable.getLocalTransform(m3) : _super.prototype.getLocalTransform.call(this, m3); - }; - ZRText3.prototype.getComputedTransform = function() { - if (this.__hostTarget) { - this.__hostTarget.getComputedTransform(); - this.__hostTarget.updateInnerText(true); - } - return _super.prototype.getComputedTransform.call(this); - }; - ZRText3.prototype._updateSubTexts = function() { - this._childCursor = 0; - normalizeTextStyle2(this.style); - this.style.rich ? this._updateRichTexts() : this._updatePlainTexts(); - this._children.length = this._childCursor; - this.styleUpdated(); - }; - ZRText3.prototype.addSelfToZr = function(zr) { - _super.prototype.addSelfToZr.call(this, zr); - for (var i2 = 0; i2 < this._children.length; i2++) { - this._children[i2].__zr = zr; - } - }; - ZRText3.prototype.removeSelfFromZr = function(zr) { - _super.prototype.removeSelfFromZr.call(this, zr); - for (var i2 = 0; i2 < this._children.length; i2++) { - this._children[i2].__zr = null; - } - }; - ZRText3.prototype.getBoundingRect = function() { - if (this.styleChanged()) { - this._updateSubTexts(); - } - if (!this._rect) { - var tmpRect4 = new BoundingRect2(0, 0, 0, 0); - var children = this._children; - var tmpMat = []; - var rect = null; - for (var i2 = 0; i2 < children.length; i2++) { - var child = children[i2]; - var childRect = child.getBoundingRect(); - var transform2 = child.getLocalTransform(tmpMat); - if (transform2) { - tmpRect4.copy(childRect); - tmpRect4.applyTransform(transform2); - rect = rect || tmpRect4.clone(); - rect.union(tmpRect4); - } else { - rect = rect || childRect.clone(); - rect.union(childRect); - } - } - this._rect = rect || tmpRect4; - } - return this._rect; - }; - ZRText3.prototype.setDefaultTextStyle = function(defaultTextStyle) { - this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR2; - }; - ZRText3.prototype.setTextContent = function(textContent) { - if (true) { - throw new Error("Can't attach text on another text"); - } - }; - ZRText3.prototype._mergeStyle = function(targetStyle, sourceStyle) { - if (!sourceStyle) { - return targetStyle; - } - var sourceRich = sourceStyle.rich; - var targetRich = targetStyle.rich || sourceRich && {}; - extend3(targetStyle, sourceStyle); - if (sourceRich && targetRich) { - this._mergeRich(targetRich, sourceRich); - targetStyle.rich = targetRich; - } else if (targetRich) { - targetStyle.rich = targetRich; - } - return targetStyle; - }; - ZRText3.prototype._mergeRich = function(targetRich, sourceRich) { - var richNames = keys2(sourceRich); - for (var i2 = 0; i2 < richNames.length; i2++) { - var richName = richNames[i2]; - targetRich[richName] = targetRich[richName] || {}; - extend3(targetRich[richName], sourceRich[richName]); - } - }; - ZRText3.prototype.getAnimationStyleProps = function() { - return DEFAULT_TEXT_ANIMATION_PROPS2; - }; - ZRText3.prototype._getOrCreateChild = function(Ctor) { - var child = this._children[this._childCursor]; - if (!child || !(child instanceof Ctor)) { - child = new Ctor(); - } - this._children[this._childCursor++] = child; - child.__zr = this.__zr; - child.parent = this; - return child; - }; - ZRText3.prototype._updatePlainTexts = function() { - var style = this.style; - var textFont = style.font || DEFAULT_FONT2; - var textPadding = style.padding; - var text = getStyleText2(style); - var contentBlock = parsePlainText2(text, style); - var needDrawBg = needDrawBackground2(style); - var bgColorDrawn = !!style.backgroundColor; - var outerHeight = contentBlock.outerHeight; - var outerWidth = contentBlock.outerWidth; - var contentWidth = contentBlock.contentWidth; - var textLines = contentBlock.lines; - var lineHeight = contentBlock.lineHeight; - var defaultStyle = this._defaultStyle; - this.isTruncated = !!contentBlock.isTruncated; - var baseX = style.x || 0; - var baseY = style.y || 0; - var textAlign = style.align || defaultStyle.align || "left"; - var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign || "top"; - var textX = baseX; - var textY = adjustTextY$1(baseY, contentBlock.contentHeight, verticalAlign); - if (needDrawBg || textPadding) { - var boxX = adjustTextX2(baseX, outerWidth, textAlign); - var boxY = adjustTextY$1(baseY, outerHeight, verticalAlign); - needDrawBg && this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight); - } - textY += lineHeight / 2; - if (textPadding) { - textX = getTextXForPadding2(baseX, textAlign, textPadding); - if (verticalAlign === "top") { - textY += textPadding[0]; - } else if (verticalAlign === "bottom") { - textY -= textPadding[2]; - } - } - var defaultLineWidth = 0; - var useDefaultFill = false; - var textFill = getFill2("fill" in style ? style.fill : (useDefaultFill = true, defaultStyle.fill)); - var textStroke = getStroke2("stroke" in style ? style.stroke : !bgColorDrawn && (!defaultStyle.autoStroke || useDefaultFill) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH2, defaultStyle.stroke) : null); - var hasShadow3 = style.textShadowBlur > 0; - var fixedBoundingRect = style.width != null && (style.overflow === "truncate" || style.overflow === "break" || style.overflow === "breakAll"); - var calculatedLineHeight = contentBlock.calculatedLineHeight; - for (var i2 = 0; i2 < textLines.length; i2++) { - var el = this._getOrCreateChild(TSpan2); - var subElStyle = el.createStyle(); - el.useStyle(subElStyle); - subElStyle.text = textLines[i2]; - subElStyle.x = textX; - subElStyle.y = textY; - if (textAlign) { - subElStyle.textAlign = textAlign; - } - subElStyle.textBaseline = "middle"; - subElStyle.opacity = style.opacity; - subElStyle.strokeFirst = true; - if (hasShadow3) { - subElStyle.shadowBlur = style.textShadowBlur || 0; - subElStyle.shadowColor = style.textShadowColor || "transparent"; - subElStyle.shadowOffsetX = style.textShadowOffsetX || 0; - subElStyle.shadowOffsetY = style.textShadowOffsetY || 0; - } - subElStyle.stroke = textStroke; - subElStyle.fill = textFill; - if (textStroke) { - subElStyle.lineWidth = style.lineWidth || defaultLineWidth; - subElStyle.lineDash = style.lineDash; - subElStyle.lineDashOffset = style.lineDashOffset || 0; - } - subElStyle.font = textFont; - setSeparateFont2(subElStyle, style); - textY += lineHeight; - if (fixedBoundingRect) { - el.setBoundingRect(new BoundingRect2(adjustTextX2(subElStyle.x, contentWidth, subElStyle.textAlign), adjustTextY$1(subElStyle.y, calculatedLineHeight, subElStyle.textBaseline), contentWidth, calculatedLineHeight)); - } - } - }; - ZRText3.prototype._updateRichTexts = function() { - var style = this.style; - var text = getStyleText2(style); - var contentBlock = parseRichText2(text, style); - var contentWidth = contentBlock.width; - var outerWidth = contentBlock.outerWidth; - var outerHeight = contentBlock.outerHeight; - var textPadding = style.padding; - var baseX = style.x || 0; - var baseY = style.y || 0; - var defaultStyle = this._defaultStyle; - var textAlign = style.align || defaultStyle.align; - var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign; - this.isTruncated = !!contentBlock.isTruncated; - var boxX = adjustTextX2(baseX, outerWidth, textAlign); - var boxY = adjustTextY$1(baseY, outerHeight, verticalAlign); - var xLeft = boxX; - var lineTop = boxY; - if (textPadding) { - xLeft += textPadding[3]; - lineTop += textPadding[0]; - } - var xRight = xLeft + contentWidth; - if (needDrawBackground2(style)) { - this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight); - } - var bgColorDrawn = !!style.backgroundColor; - for (var i2 = 0; i2 < contentBlock.lines.length; i2++) { - var line = contentBlock.lines[i2]; - var tokens = line.tokens; - var tokenCount = tokens.length; - var lineHeight = line.lineHeight; - var remainedWidth = line.width; - var leftIndex = 0; - var lineXLeft = xLeft; - var lineXRight = xRight; - var rightIndex = tokenCount - 1; - var token = void 0; - while (leftIndex < tokenCount && (token = tokens[leftIndex], !token.align || token.align === "left")) { - this._placeToken(token, style, lineHeight, lineTop, lineXLeft, "left", bgColorDrawn); - remainedWidth -= token.width; - lineXLeft += token.width; - leftIndex++; - } - while (rightIndex >= 0 && (token = tokens[rightIndex], token.align === "right")) { - this._placeToken(token, style, lineHeight, lineTop, lineXRight, "right", bgColorDrawn); - remainedWidth -= token.width; - lineXRight -= token.width; - rightIndex--; - } - lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2; - while (leftIndex <= rightIndex) { - token = tokens[leftIndex]; - this._placeToken(token, style, lineHeight, lineTop, lineXLeft + token.width / 2, "center", bgColorDrawn); - lineXLeft += token.width; - leftIndex++; - } - lineTop += lineHeight; - } - }; - ZRText3.prototype._placeToken = function(token, style, lineHeight, lineTop, x, textAlign, parentBgColorDrawn) { - var tokenStyle = style.rich[token.styleName] || {}; - tokenStyle.text = token.text; - var verticalAlign = token.verticalAlign; - var y = lineTop + lineHeight / 2; - if (verticalAlign === "top") { - y = lineTop + token.height / 2; - } else if (verticalAlign === "bottom") { - y = lineTop + lineHeight - token.height / 2; - } - var needDrawBg = !token.isLineHolder && needDrawBackground2(tokenStyle); - needDrawBg && this._renderBackground(tokenStyle, style, textAlign === "right" ? x - token.width : textAlign === "center" ? x - token.width / 2 : x, y - token.height / 2, token.width, token.height); - var bgColorDrawn = !!tokenStyle.backgroundColor; - var textPadding = token.textPadding; - if (textPadding) { - x = getTextXForPadding2(x, textAlign, textPadding); - y -= token.height / 2 - textPadding[0] - token.innerHeight / 2; - } - var el = this._getOrCreateChild(TSpan2); - var subElStyle = el.createStyle(); - el.useStyle(subElStyle); - var defaultStyle = this._defaultStyle; - var useDefaultFill = false; - var defaultLineWidth = 0; - var textFill = getFill2("fill" in tokenStyle ? tokenStyle.fill : "fill" in style ? style.fill : (useDefaultFill = true, defaultStyle.fill)); - var textStroke = getStroke2("stroke" in tokenStyle ? tokenStyle.stroke : "stroke" in style ? style.stroke : !bgColorDrawn && !parentBgColorDrawn && (!defaultStyle.autoStroke || useDefaultFill) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH2, defaultStyle.stroke) : null); - var hasShadow3 = tokenStyle.textShadowBlur > 0 || style.textShadowBlur > 0; - subElStyle.text = token.text; - subElStyle.x = x; - subElStyle.y = y; - if (hasShadow3) { - subElStyle.shadowBlur = tokenStyle.textShadowBlur || style.textShadowBlur || 0; - subElStyle.shadowColor = tokenStyle.textShadowColor || style.textShadowColor || "transparent"; - subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style.textShadowOffsetX || 0; - subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style.textShadowOffsetY || 0; - } - subElStyle.textAlign = textAlign; - subElStyle.textBaseline = "middle"; - subElStyle.font = token.font || DEFAULT_FONT2; - subElStyle.opacity = retrieve32(tokenStyle.opacity, style.opacity, 1); - setSeparateFont2(subElStyle, tokenStyle); - if (textStroke) { - subElStyle.lineWidth = retrieve32(tokenStyle.lineWidth, style.lineWidth, defaultLineWidth); - subElStyle.lineDash = retrieve22(tokenStyle.lineDash, style.lineDash); - subElStyle.lineDashOffset = style.lineDashOffset || 0; - subElStyle.stroke = textStroke; - } - if (textFill) { - subElStyle.fill = textFill; - } - var textWidth = token.contentWidth; - var textHeight = token.contentHeight; - el.setBoundingRect(new BoundingRect2(adjustTextX2(subElStyle.x, textWidth, subElStyle.textAlign), adjustTextY$1(subElStyle.y, textHeight, subElStyle.textBaseline), textWidth, textHeight)); - }; - ZRText3.prototype._renderBackground = function(style, topStyle, x, y, width, height) { - var textBackgroundColor = style.backgroundColor; - var textBorderWidth = style.borderWidth; - var textBorderColor = style.borderColor; - var isImageBg = textBackgroundColor && textBackgroundColor.image; - var isPlainOrGradientBg = textBackgroundColor && !isImageBg; - var textBorderRadius = style.borderRadius; - var self2 = this; - var rectEl; - var imgEl; - if (isPlainOrGradientBg || style.lineHeight || textBorderWidth && textBorderColor) { - rectEl = this._getOrCreateChild(Rect4); - rectEl.useStyle(rectEl.createStyle()); - rectEl.style.fill = null; - var rectShape = rectEl.shape; - rectShape.x = x; - rectShape.y = y; - rectShape.width = width; - rectShape.height = height; - rectShape.r = textBorderRadius; - rectEl.dirtyShape(); - } - if (isPlainOrGradientBg) { - var rectStyle = rectEl.style; - rectStyle.fill = textBackgroundColor || null; - rectStyle.fillOpacity = retrieve22(style.fillOpacity, 1); - } else if (isImageBg) { - imgEl = this._getOrCreateChild(ZRImage2); - imgEl.onload = function() { - self2.dirtyStyle(); - }; - var imgStyle = imgEl.style; - imgStyle.image = textBackgroundColor.image; - imgStyle.x = x; - imgStyle.y = y; - imgStyle.width = width; - imgStyle.height = height; - } - if (textBorderWidth && textBorderColor) { - var rectStyle = rectEl.style; - rectStyle.lineWidth = textBorderWidth; - rectStyle.stroke = textBorderColor; - rectStyle.strokeOpacity = retrieve22(style.strokeOpacity, 1); - rectStyle.lineDash = style.borderDash; - rectStyle.lineDashOffset = style.borderDashOffset || 0; - rectEl.strokeContainThreshold = 0; - if (rectEl.hasFill() && rectEl.hasStroke()) { - rectStyle.strokeFirst = true; - rectStyle.lineWidth *= 2; - } - } - var commonStyle = (rectEl || imgEl).style; - commonStyle.shadowBlur = style.shadowBlur || 0; - commonStyle.shadowColor = style.shadowColor || "transparent"; - commonStyle.shadowOffsetX = style.shadowOffsetX || 0; - commonStyle.shadowOffsetY = style.shadowOffsetY || 0; - commonStyle.opacity = retrieve32(style.opacity, topStyle.opacity, 1); - }; - ZRText3.makeFont = function(style) { - var font = ""; - if (hasSeparateFont2(style)) { - font = [ - style.fontStyle, - style.fontWeight, - parseFontSize2(style.fontSize), - style.fontFamily || "sans-serif" - ].join(" "); - } - return font && trim3(font) || style.textFont || style.font; - }; - return ZRText3; - }(Displayable2); - var VALID_TEXT_ALIGN2 = { left: true, right: 1, center: 1 }; - var VALID_TEXT_VERTICAL_ALIGN2 = { top: 1, bottom: 1, middle: 1 }; - var FONT_PARTS2 = ["fontStyle", "fontWeight", "fontSize", "fontFamily"]; - function parseFontSize2(fontSize) { - if (typeof fontSize === "string" && (fontSize.indexOf("px") !== -1 || fontSize.indexOf("rem") !== -1 || fontSize.indexOf("em") !== -1)) { - return fontSize; - } else if (!isNaN(+fontSize)) { - return fontSize + "px"; - } else { - return DEFAULT_FONT_SIZE2 + "px"; - } - } - function setSeparateFont2(targetStyle, sourceStyle) { - for (var i2 = 0; i2 < FONT_PARTS2.length; i2++) { - var fontProp = FONT_PARTS2[i2]; - var val = sourceStyle[fontProp]; - if (val != null) { - targetStyle[fontProp] = val; - } - } - } - function hasSeparateFont2(style) { - return style.fontSize != null || style.fontFamily || style.fontWeight; - } - function normalizeTextStyle2(style) { - normalizeStyle2(style); - each17(style.rich, normalizeStyle2); - return style; - } - function normalizeStyle2(style) { - if (style) { - style.font = ZRText2.makeFont(style); - var textAlign = style.align; - textAlign === "middle" && (textAlign = "center"); - style.align = textAlign == null || VALID_TEXT_ALIGN2[textAlign] ? textAlign : "left"; - var verticalAlign = style.verticalAlign; - verticalAlign === "center" && (verticalAlign = "middle"); - style.verticalAlign = verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN2[verticalAlign] ? verticalAlign : "top"; - var textPadding = style.padding; - if (textPadding) { - style.padding = normalizeCssArray3(style.padding); - } - } - } - function getStroke2(stroke, lineWidth) { - return stroke == null || lineWidth <= 0 || stroke === "transparent" || stroke === "none" ? null : stroke.image || stroke.colorStops ? "#000" : stroke; - } - function getFill2(fill) { - return fill == null || fill === "none" ? null : fill.image || fill.colorStops ? "#000" : fill; - } - function getTextXForPadding2(x, textAlign, textPadding) { - return textAlign === "right" ? x - textPadding[1] : textAlign === "center" ? x + textPadding[3] / 2 - textPadding[1] / 2 : x + textPadding[3]; - } - function getStyleText2(style) { - var text = style.text; - text != null && (text += ""); - return text; - } - function needDrawBackground2(style) { - return !!(style.backgroundColor || style.lineHeight || style.borderWidth && style.borderColor); - } - var getECData2 = makeInner2(); - var setCommonECData2 = function(seriesIndex, dataType, dataIdx, el) { - if (el) { - var ecData = getECData2(el); - ecData.dataIndex = dataIdx; - ecData.dataType = dataType; - ecData.seriesIndex = seriesIndex; - ecData.ssrType = "chart"; - if (el.type === "group") { - el.traverse(function(child) { - var childECData = getECData2(child); - childECData.seriesIndex = seriesIndex; - childECData.dataIndex = dataIdx; - childECData.dataType = dataType; - childECData.ssrType = "chart"; - }); - } - } - }; - var _highlightNextDigit2 = 1; - var _highlightKeyMap2 = {}; - var getSavedStates2 = makeInner2(); - var getComponentStates2 = makeInner2(); - var HOVER_STATE_NORMAL2 = 0; - var HOVER_STATE_BLUR2 = 1; - var HOVER_STATE_EMPHASIS2 = 2; - var SPECIAL_STATES2 = ["emphasis", "blur", "select"]; - var DISPLAY_STATES2 = ["normal", "emphasis", "blur", "select"]; - var Z2_EMPHASIS_LIFT2 = 10; - var Z2_SELECT_LIFT2 = 9; - var HIGHLIGHT_ACTION_TYPE2 = "highlight"; - var DOWNPLAY_ACTION_TYPE2 = "downplay"; - var SELECT_ACTION_TYPE2 = "select"; - var UNSELECT_ACTION_TYPE2 = "unselect"; - var TOGGLE_SELECT_ACTION_TYPE2 = "toggleSelect"; - function hasFillOrStroke2(fillOrStroke) { - return fillOrStroke != null && fillOrStroke !== "none"; - } - function doChangeHoverState2(el, stateName, hoverStateEnum) { - if (el.onHoverStateChange && (el.hoverState || 0) !== hoverStateEnum) { - el.onHoverStateChange(stateName); - } - el.hoverState = hoverStateEnum; - } - function singleEnterEmphasis2(el) { - doChangeHoverState2(el, "emphasis", HOVER_STATE_EMPHASIS2); - } - function singleLeaveEmphasis2(el) { - if (el.hoverState === HOVER_STATE_EMPHASIS2) { - doChangeHoverState2(el, "normal", HOVER_STATE_NORMAL2); - } - } - function singleEnterBlur2(el) { - doChangeHoverState2(el, "blur", HOVER_STATE_BLUR2); - } - function singleLeaveBlur2(el) { - if (el.hoverState === HOVER_STATE_BLUR2) { - doChangeHoverState2(el, "normal", HOVER_STATE_NORMAL2); - } - } - function singleEnterSelect2(el) { - el.selected = true; - } - function singleLeaveSelect2(el) { - el.selected = false; - } - function updateElementState2(el, updater, commonParam) { - updater(el, commonParam); - } - function traverseUpdateState2(el, updater, commonParam) { - updateElementState2(el, updater, commonParam); - el.isGroup && el.traverse(function(child) { - updateElementState2(child, updater, commonParam); - }); - } - function setStatesFlag2(el, stateName) { - switch (stateName) { - case "emphasis": - el.hoverState = HOVER_STATE_EMPHASIS2; - break; - case "normal": - el.hoverState = HOVER_STATE_NORMAL2; - break; - case "blur": - el.hoverState = HOVER_STATE_BLUR2; - break; - case "select": - el.selected = true; - } - } - function getFromStateStyle2(el, props, toStateName, defaultValue) { - var style = el.style; - var fromState = {}; - for (var i2 = 0; i2 < props.length; i2++) { - var propName = props[i2]; - var val = style[propName]; - fromState[propName] = val == null ? defaultValue && defaultValue[propName] : val; - } - for (var i2 = 0; i2 < el.animators.length; i2++) { - var animator = el.animators[i2]; - if (animator.__fromStateTransition && animator.__fromStateTransition.indexOf(toStateName) < 0 && animator.targetName === "style") { - animator.saveTo(fromState, props); - } - } - return fromState; - } - function createEmphasisDefaultState2(el, stateName, targetStates, state) { - var hasSelect = targetStates && indexOf2(targetStates, "select") >= 0; - var cloned = false; - if (el instanceof Path2) { - var store = getSavedStates2(el); - var fromFill = hasSelect ? store.selectFill || store.normalFill : store.normalFill; - var fromStroke = hasSelect ? store.selectStroke || store.normalStroke : store.normalStroke; - if (hasFillOrStroke2(fromFill) || hasFillOrStroke2(fromStroke)) { - state = state || {}; - var emphasisStyle = state.style || {}; - if (emphasisStyle.fill === "inherit") { - cloned = true; - state = extend3({}, state); - emphasisStyle = extend3({}, emphasisStyle); - emphasisStyle.fill = fromFill; - } else if (!hasFillOrStroke2(emphasisStyle.fill) && hasFillOrStroke2(fromFill)) { - cloned = true; - state = extend3({}, state); - emphasisStyle = extend3({}, emphasisStyle); - emphasisStyle.fill = liftColor2(fromFill); - } else if (!hasFillOrStroke2(emphasisStyle.stroke) && hasFillOrStroke2(fromStroke)) { - if (!cloned) { - state = extend3({}, state); - emphasisStyle = extend3({}, emphasisStyle); - } - emphasisStyle.stroke = liftColor2(fromStroke); - } - state.style = emphasisStyle; - } - } - if (state) { - if (state.z2 == null) { - if (!cloned) { - state = extend3({}, state); - } - var z2EmphasisLift = el.z2EmphasisLift; - state.z2 = el.z2 + (z2EmphasisLift != null ? z2EmphasisLift : Z2_EMPHASIS_LIFT2); - } - } - return state; - } - function createSelectDefaultState2(el, stateName, state) { - if (state) { - if (state.z2 == null) { - state = extend3({}, state); - var z2SelectLift = el.z2SelectLift; - state.z2 = el.z2 + (z2SelectLift != null ? z2SelectLift : Z2_SELECT_LIFT2); - } - } - return state; - } - function createBlurDefaultState2(el, stateName, state) { - var hasBlur = indexOf2(el.currentStates, stateName) >= 0; - var currentOpacity = el.style.opacity; - var fromState = !hasBlur ? getFromStateStyle2(el, ["opacity"], stateName, { - opacity: 1 - }) : null; - state = state || {}; - var blurStyle = state.style || {}; - if (blurStyle.opacity == null) { - state = extend3({}, state); - blurStyle = extend3({ - // Already being applied 'emphasis'. DON'T mul opacity multiple times. - opacity: hasBlur ? currentOpacity : fromState.opacity * 0.1 - }, blurStyle); - state.style = blurStyle; - } - return state; - } - function elementStateProxy2(stateName, targetStates) { - var state = this.states[stateName]; - if (this.style) { - if (stateName === "emphasis") { - return createEmphasisDefaultState2(this, stateName, targetStates, state); - } else if (stateName === "blur") { - return createBlurDefaultState2(this, stateName, state); - } else if (stateName === "select") { - return createSelectDefaultState2(this, stateName, state); - } - } - return state; - } - function setDefaultStateProxy2(el) { - el.stateProxy = elementStateProxy2; - var textContent = el.getTextContent(); - var textGuide = el.getTextGuideLine(); - if (textContent) { - textContent.stateProxy = elementStateProxy2; - } - if (textGuide) { - textGuide.stateProxy = elementStateProxy2; - } - } - function enterEmphasisWhenMouseOver2(el, e3) { - !shouldSilent2(el, e3) && !el.__highByOuter && traverseUpdateState2(el, singleEnterEmphasis2); - } - function leaveEmphasisWhenMouseOut2(el, e3) { - !shouldSilent2(el, e3) && !el.__highByOuter && traverseUpdateState2(el, singleLeaveEmphasis2); - } - function enterEmphasis2(el, highlightDigit) { - el.__highByOuter |= 1 << (highlightDigit || 0); - traverseUpdateState2(el, singleEnterEmphasis2); - } - function leaveEmphasis2(el, highlightDigit) { - !(el.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdateState2(el, singleLeaveEmphasis2); - } - function enterBlur2(el) { - traverseUpdateState2(el, singleEnterBlur2); - } - function leaveBlur2(el) { - traverseUpdateState2(el, singleLeaveBlur2); - } - function enterSelect2(el) { - traverseUpdateState2(el, singleEnterSelect2); - } - function leaveSelect2(el) { - traverseUpdateState2(el, singleLeaveSelect2); - } - function shouldSilent2(el, e3) { - return el.__highDownSilentOnTouch && e3.zrByTouch; - } - function allLeaveBlur2(api) { - var model = api.getModel(); - var leaveBlurredSeries = []; - var allComponentViews = []; - model.eachComponent(function(componentType, componentModel) { - var componentStates = getComponentStates2(componentModel); - var isSeries3 = componentType === "series"; - var view = isSeries3 ? api.getViewOfSeriesModel(componentModel) : api.getViewOfComponentModel(componentModel); - !isSeries3 && allComponentViews.push(view); - if (componentStates.isBlured) { - view.group.traverse(function(child) { - singleLeaveBlur2(child); - }); - isSeries3 && leaveBlurredSeries.push(componentModel); - } - componentStates.isBlured = false; - }); - each17(allComponentViews, function(view) { - if (view && view.toggleBlurSeries) { - view.toggleBlurSeries(leaveBlurredSeries, false, model); - } - }); - } - function blurSeries2(targetSeriesIndex, focus, blurScope, api) { - var ecModel = api.getModel(); - blurScope = blurScope || "coordinateSystem"; - function leaveBlurOfIndices(data, dataIndices) { - for (var i2 = 0; i2 < dataIndices.length; i2++) { - var itemEl = data.getItemGraphicEl(dataIndices[i2]); - itemEl && leaveBlur2(itemEl); - } - } - if (targetSeriesIndex == null) { - return; - } - if (!focus || focus === "none") { - return; - } - var targetSeriesModel = ecModel.getSeriesByIndex(targetSeriesIndex); - var targetCoordSys = targetSeriesModel.coordinateSystem; - if (targetCoordSys && targetCoordSys.master) { - targetCoordSys = targetCoordSys.master; - } - var blurredSeries = []; - ecModel.eachSeries(function(seriesModel) { - var sameSeries = targetSeriesModel === seriesModel; - var coordSys = seriesModel.coordinateSystem; - if (coordSys && coordSys.master) { - coordSys = coordSys.master; - } - var sameCoordSys = coordSys && targetCoordSys ? coordSys === targetCoordSys : sameSeries; - if (!// Not blur other series if blurScope series - (blurScope === "series" && !sameSeries || blurScope === "coordinateSystem" && !sameCoordSys || focus === "series" && sameSeries)) { - var view = api.getViewOfSeriesModel(seriesModel); - view.group.traverse(function(child) { - if (child.__highByOuter && sameSeries && focus === "self") { - return; - } - singleEnterBlur2(child); - }); - if (isArrayLike2(focus)) { - leaveBlurOfIndices(seriesModel.getData(), focus); - } else if (isObject5(focus)) { - var dataTypes = keys2(focus); - for (var d = 0; d < dataTypes.length; d++) { - leaveBlurOfIndices(seriesModel.getData(dataTypes[d]), focus[dataTypes[d]]); - } - } - blurredSeries.push(seriesModel); - getComponentStates2(seriesModel).isBlured = true; - } - }); - ecModel.eachComponent(function(componentType, componentModel) { - if (componentType === "series") { - return; - } - var view = api.getViewOfComponentModel(componentModel); - if (view && view.toggleBlurSeries) { - view.toggleBlurSeries(blurredSeries, true, ecModel); - } - }); - } - function blurComponent2(componentMainType, componentIndex, api) { - if (componentMainType == null || componentIndex == null) { - return; - } - var componentModel = api.getModel().getComponent(componentMainType, componentIndex); - if (!componentModel) { - return; - } - getComponentStates2(componentModel).isBlured = true; - var view = api.getViewOfComponentModel(componentModel); - if (!view || !view.focusBlurEnabled) { - return; - } - view.group.traverse(function(child) { - singleEnterBlur2(child); - }); - } - function blurSeriesFromHighlightPayload2(seriesModel, payload, api) { - var seriesIndex = seriesModel.seriesIndex; - var data = seriesModel.getData(payload.dataType); - if (!data) { - if (true) { - error3("Unknown dataType " + payload.dataType); - } - return; - } - var dataIndex = queryDataIndex2(data, payload); - dataIndex = (isArray3(dataIndex) ? dataIndex[0] : dataIndex) || 0; - var el = data.getItemGraphicEl(dataIndex); - if (!el) { - var count3 = data.count(); - var current = 0; - while (!el && current < count3) { - el = data.getItemGraphicEl(current++); - } - } - if (el) { - var ecData = getECData2(el); - blurSeries2(seriesIndex, ecData.focus, ecData.blurScope, api); - } else { - var focus_1 = seriesModel.get(["emphasis", "focus"]); - var blurScope = seriesModel.get(["emphasis", "blurScope"]); - if (focus_1 != null) { - blurSeries2(seriesIndex, focus_1, blurScope, api); - } - } - } - function findComponentHighDownDispatchers2(componentMainType, componentIndex, name, api) { - var ret = { - focusSelf: false, - dispatchers: null - }; - if (componentMainType == null || componentMainType === "series" || componentIndex == null || name == null) { - return ret; - } - var componentModel = api.getModel().getComponent(componentMainType, componentIndex); - if (!componentModel) { - return ret; - } - var view = api.getViewOfComponentModel(componentModel); - if (!view || !view.findHighDownDispatchers) { - return ret; - } - var dispatchers = view.findHighDownDispatchers(name); - var focusSelf; - for (var i2 = 0; i2 < dispatchers.length; i2++) { - if (!isHighDownDispatcher2(dispatchers[i2])) { - error3("param should be highDownDispatcher"); - } - if (getECData2(dispatchers[i2]).focus === "self") { - focusSelf = true; - break; - } - } - return { - focusSelf, - dispatchers - }; - } - function handleGlobalMouseOverForHighDown2(dispatcher, e3, api) { - if (!isHighDownDispatcher2(dispatcher)) { - error3("param should be highDownDispatcher"); - } - var ecData = getECData2(dispatcher); - var _a3 = findComponentHighDownDispatchers2(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api), dispatchers = _a3.dispatchers, focusSelf = _a3.focusSelf; - if (dispatchers) { - if (focusSelf) { - blurComponent2(ecData.componentMainType, ecData.componentIndex, api); - } - each17(dispatchers, function(dispatcher2) { - return enterEmphasisWhenMouseOver2(dispatcher2, e3); - }); - } else { - blurSeries2(ecData.seriesIndex, ecData.focus, ecData.blurScope, api); - if (ecData.focus === "self") { - blurComponent2(ecData.componentMainType, ecData.componentIndex, api); - } - enterEmphasisWhenMouseOver2(dispatcher, e3); - } - } - function handleGlobalMouseOutForHighDown2(dispatcher, e3, api) { - if (!isHighDownDispatcher2(dispatcher)) { - error3("param should be highDownDispatcher"); - } - allLeaveBlur2(api); - var ecData = getECData2(dispatcher); - var dispatchers = findComponentHighDownDispatchers2(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api).dispatchers; - if (dispatchers) { - each17(dispatchers, function(dispatcher2) { - return leaveEmphasisWhenMouseOut2(dispatcher2, e3); - }); - } else { - leaveEmphasisWhenMouseOut2(dispatcher, e3); - } - } - function toggleSelectionFromPayload2(seriesModel, payload, api) { - if (!isSelectChangePayload2(payload)) { - return; - } - var dataType = payload.dataType; - var data = seriesModel.getData(dataType); - var dataIndex = queryDataIndex2(data, payload); - if (!isArray3(dataIndex)) { - dataIndex = [dataIndex]; - } - seriesModel[payload.type === TOGGLE_SELECT_ACTION_TYPE2 ? "toggleSelect" : payload.type === SELECT_ACTION_TYPE2 ? "select" : "unselect"](dataIndex, dataType); - } - function updateSeriesElementSelection2(seriesModel) { - var allData = seriesModel.getAllData(); - each17(allData, function(_a3) { - var data = _a3.data, type = _a3.type; - data.eachItemGraphicEl(function(el, idx) { - seriesModel.isSelected(idx, type) ? enterSelect2(el) : leaveSelect2(el); - }); - }); - } - function getAllSelectedIndices2(ecModel) { - var ret = []; - ecModel.eachSeries(function(seriesModel) { - var allData = seriesModel.getAllData(); - each17(allData, function(_a3) { - var data = _a3.data, type = _a3.type; - var dataIndices = seriesModel.getSelectedDataIndices(); - if (dataIndices.length > 0) { - var item = { - dataIndex: dataIndices, - seriesIndex: seriesModel.seriesIndex - }; - if (type != null) { - item.dataType = type; - } - ret.push(item); - } - }); - }); - return ret; - } - function enableHoverEmphasis2(el, focus, blurScope) { - setAsHighDownDispatcher2(el, true); - traverseUpdateState2(el, setDefaultStateProxy2); - enableHoverFocus2(el, focus, blurScope); - } - function disableHoverEmphasis2(el) { - setAsHighDownDispatcher2(el, false); - } - function toggleHoverEmphasis2(el, focus, blurScope, isDisabled) { - isDisabled ? disableHoverEmphasis2(el) : enableHoverEmphasis2(el, focus, blurScope); - } - function enableHoverFocus2(el, focus, blurScope) { - var ecData = getECData2(el); - if (focus != null) { - ecData.focus = focus; - ecData.blurScope = blurScope; - } else if (ecData.focus) { - ecData.focus = null; - } - } - var OTHER_STATES2 = ["emphasis", "blur", "select"]; - var defaultStyleGetterMap2 = { - itemStyle: "getItemStyle", - lineStyle: "getLineStyle", - areaStyle: "getAreaStyle" - }; - function setStatesStylesFromModel2(el, itemModel, styleType, getter) { - styleType = styleType || "itemStyle"; - for (var i2 = 0; i2 < OTHER_STATES2.length; i2++) { - var stateName = OTHER_STATES2[i2]; - var model = itemModel.getModel([stateName, styleType]); - var state = el.ensureState(stateName); - state.style = getter ? getter(model) : model[defaultStyleGetterMap2[styleType]](); - } - } - function setAsHighDownDispatcher2(el, asDispatcher) { - var disable = asDispatcher === false; - var extendedEl = el; - if (el.highDownSilentOnTouch) { - extendedEl.__highDownSilentOnTouch = el.highDownSilentOnTouch; - } - if (!disable || extendedEl.__highDownDispatcher) { - extendedEl.__highByOuter = extendedEl.__highByOuter || 0; - extendedEl.__highDownDispatcher = !disable; - } - } - function isHighDownDispatcher2(el) { - return !!(el && el.__highDownDispatcher); - } - function enableComponentHighDownFeatures2(el, componentModel, componentHighDownName) { - var ecData = getECData2(el); - ecData.componentMainType = componentModel.mainType; - ecData.componentIndex = componentModel.componentIndex; - ecData.componentHighDownName = componentHighDownName; - } - function getHighlightDigit2(highlightKey) { - var highlightDigit = _highlightKeyMap2[highlightKey]; - if (highlightDigit == null && _highlightNextDigit2 <= 32) { - highlightDigit = _highlightKeyMap2[highlightKey] = _highlightNextDigit2++; - } - return highlightDigit; - } - function isSelectChangePayload2(payload) { - var payloadType = payload.type; - return payloadType === SELECT_ACTION_TYPE2 || payloadType === UNSELECT_ACTION_TYPE2 || payloadType === TOGGLE_SELECT_ACTION_TYPE2; - } - function isHighDownPayload2(payload) { - var payloadType = payload.type; - return payloadType === HIGHLIGHT_ACTION_TYPE2 || payloadType === DOWNPLAY_ACTION_TYPE2; - } - function savePathStates2(el) { - var store = getSavedStates2(el); - store.normalFill = el.style.fill; - store.normalStroke = el.style.stroke; - var selectState = el.states.select || {}; - store.selectFill = selectState.style && selectState.style.fill || null; - store.selectStroke = selectState.style && selectState.style.stroke || null; - } - var CMD$2 = PathProxy2.CMD; - var points4 = [[], [], []]; - var mathSqrt$1 = Math.sqrt; - var mathAtan22 = Math.atan2; - function transformPath2(path, m3) { - if (!m3) { - return; - } - var data = path.data; - var len3 = path.len(); - var cmd; - var nPoint; - var i2; - var j; - var k2; - var p; - var M = CMD$2.M; - var C = CMD$2.C; - var L = CMD$2.L; - var R = CMD$2.R; - var A = CMD$2.A; - var Q = CMD$2.Q; - for (i2 = 0, j = 0; i2 < len3; ) { - cmd = data[i2++]; - j = i2; - nPoint = 0; - switch (cmd) { - case M: - nPoint = 1; - break; - case L: - nPoint = 1; - break; - case C: - nPoint = 3; - break; - case Q: - nPoint = 2; - break; - case A: - var x = m3[4]; - var y = m3[5]; - var sx = mathSqrt$1(m3[0] * m3[0] + m3[1] * m3[1]); - var sy = mathSqrt$1(m3[2] * m3[2] + m3[3] * m3[3]); - var angle = mathAtan22(-m3[1] / sy, m3[0] / sx); - data[i2] *= sx; - data[i2++] += x; - data[i2] *= sy; - data[i2++] += y; - data[i2++] *= sx; - data[i2++] *= sy; - data[i2++] += angle; - data[i2++] += angle; - i2 += 2; - j = i2; - break; - case R: - p[0] = data[i2++]; - p[1] = data[i2++]; - applyTransform3(p, p, m3); - data[j++] = p[0]; - data[j++] = p[1]; - p[0] += data[i2++]; - p[1] += data[i2++]; - applyTransform3(p, p, m3); - data[j++] = p[0]; - data[j++] = p[1]; - } - for (k2 = 0; k2 < nPoint; k2++) { - var p_1 = points4[k2]; - p_1[0] = data[i2++]; - p_1[1] = data[i2++]; - applyTransform3(p_1, p_1, m3); - data[j++] = p_1[0]; - data[j++] = p_1[1]; - } - } - path.increaseVersion(); - } - var mathSqrt$2 = Math.sqrt; - var mathSin$2 = Math.sin; - var mathCos$2 = Math.cos; - var PI$1 = Math.PI; - function vMag2(v) { - return Math.sqrt(v[0] * v[0] + v[1] * v[1]); - } - function vRatio2(u, v) { - return (u[0] * v[0] + u[1] * v[1]) / (vMag2(u) * vMag2(v)); - } - function vAngle2(u, v) { - return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio2(u, v)); - } - function processArc2(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) { - var psi = psiDeg * (PI$1 / 180); - var xp = mathCos$2(psi) * (x1 - x2) / 2 + mathSin$2(psi) * (y1 - y2) / 2; - var yp = -1 * mathSin$2(psi) * (x1 - x2) / 2 + mathCos$2(psi) * (y1 - y2) / 2; - var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry); - if (lambda > 1) { - rx *= mathSqrt$2(lambda); - ry *= mathSqrt$2(lambda); - } - var f = (fa === fs ? -1 : 1) * mathSqrt$2((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp))) || 0; - var cxp = f * rx * yp / ry; - var cyp = f * -ry * xp / rx; - var cx = (x1 + x2) / 2 + mathCos$2(psi) * cxp - mathSin$2(psi) * cyp; - var cy = (y1 + y2) / 2 + mathSin$2(psi) * cxp + mathCos$2(psi) * cyp; - var theta = vAngle2([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]); - var u = [(xp - cxp) / rx, (yp - cyp) / ry]; - var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry]; - var dTheta = vAngle2(u, v); - if (vRatio2(u, v) <= -1) { - dTheta = PI$1; - } - if (vRatio2(u, v) >= 1) { - dTheta = 0; - } - if (dTheta < 0) { - var n = Math.round(dTheta / PI$1 * 1e6) / 1e6; - dTheta = PI$1 * 2 + n % 2 * PI$1; - } - path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs); - } - var commandReg2 = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig; - var numberReg3 = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g; - function createPathProxyFromString2(data) { - var path = new PathProxy2(); - if (!data) { - return path; - } - var cpx = 0; - var cpy = 0; - var subpathX = cpx; - var subpathY = cpy; - var prevCmd; - var CMD7 = PathProxy2.CMD; - var cmdList = data.match(commandReg2); - if (!cmdList) { - return path; - } - for (var l = 0; l < cmdList.length; l++) { - var cmdText = cmdList[l]; - var cmdStr = cmdText.charAt(0); - var cmd = void 0; - var p = cmdText.match(numberReg3) || []; - var pLen = p.length; - for (var i2 = 0; i2 < pLen; i2++) { - p[i2] = parseFloat(p[i2]); - } - var off = 0; - while (off < pLen) { - var ctlPtx = void 0; - var ctlPty = void 0; - var rx = void 0; - var ry = void 0; - var psi = void 0; - var fa = void 0; - var fs = void 0; - var x1 = cpx; - var y1 = cpy; - var len3 = void 0; - var pathData = void 0; - switch (cmdStr) { - case "l": - cpx += p[off++]; - cpy += p[off++]; - cmd = CMD7.L; - path.addData(cmd, cpx, cpy); - break; - case "L": - cpx = p[off++]; - cpy = p[off++]; - cmd = CMD7.L; - path.addData(cmd, cpx, cpy); - break; - case "m": - cpx += p[off++]; - cpy += p[off++]; - cmd = CMD7.M; - path.addData(cmd, cpx, cpy); - subpathX = cpx; - subpathY = cpy; - cmdStr = "l"; - break; - case "M": - cpx = p[off++]; - cpy = p[off++]; - cmd = CMD7.M; - path.addData(cmd, cpx, cpy); - subpathX = cpx; - subpathY = cpy; - cmdStr = "L"; - break; - case "h": - cpx += p[off++]; - cmd = CMD7.L; - path.addData(cmd, cpx, cpy); - break; - case "H": - cpx = p[off++]; - cmd = CMD7.L; - path.addData(cmd, cpx, cpy); - break; - case "v": - cpy += p[off++]; - cmd = CMD7.L; - path.addData(cmd, cpx, cpy); - break; - case "V": - cpy = p[off++]; - cmd = CMD7.L; - path.addData(cmd, cpx, cpy); - break; - case "C": - cmd = CMD7.C; - path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]); - cpx = p[off - 2]; - cpy = p[off - 1]; - break; - case "c": - cmd = CMD7.C; - path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy); - cpx += p[off - 2]; - cpy += p[off - 1]; - break; - case "S": - ctlPtx = cpx; - ctlPty = cpy; - len3 = path.len(); - pathData = path.data; - if (prevCmd === CMD7.C) { - ctlPtx += cpx - pathData[len3 - 4]; - ctlPty += cpy - pathData[len3 - 3]; - } - cmd = CMD7.C; - x1 = p[off++]; - y1 = p[off++]; - cpx = p[off++]; - cpy = p[off++]; - path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy); - break; - case "s": - ctlPtx = cpx; - ctlPty = cpy; - len3 = path.len(); - pathData = path.data; - if (prevCmd === CMD7.C) { - ctlPtx += cpx - pathData[len3 - 4]; - ctlPty += cpy - pathData[len3 - 3]; - } - cmd = CMD7.C; - x1 = cpx + p[off++]; - y1 = cpy + p[off++]; - cpx += p[off++]; - cpy += p[off++]; - path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy); - break; - case "Q": - x1 = p[off++]; - y1 = p[off++]; - cpx = p[off++]; - cpy = p[off++]; - cmd = CMD7.Q; - path.addData(cmd, x1, y1, cpx, cpy); - break; - case "q": - x1 = p[off++] + cpx; - y1 = p[off++] + cpy; - cpx += p[off++]; - cpy += p[off++]; - cmd = CMD7.Q; - path.addData(cmd, x1, y1, cpx, cpy); - break; - case "T": - ctlPtx = cpx; - ctlPty = cpy; - len3 = path.len(); - pathData = path.data; - if (prevCmd === CMD7.Q) { - ctlPtx += cpx - pathData[len3 - 4]; - ctlPty += cpy - pathData[len3 - 3]; - } - cpx = p[off++]; - cpy = p[off++]; - cmd = CMD7.Q; - path.addData(cmd, ctlPtx, ctlPty, cpx, cpy); - break; - case "t": - ctlPtx = cpx; - ctlPty = cpy; - len3 = path.len(); - pathData = path.data; - if (prevCmd === CMD7.Q) { - ctlPtx += cpx - pathData[len3 - 4]; - ctlPty += cpy - pathData[len3 - 3]; - } - cpx += p[off++]; - cpy += p[off++]; - cmd = CMD7.Q; - path.addData(cmd, ctlPtx, ctlPty, cpx, cpy); - break; - case "A": - rx = p[off++]; - ry = p[off++]; - psi = p[off++]; - fa = p[off++]; - fs = p[off++]; - x1 = cpx, y1 = cpy; - cpx = p[off++]; - cpy = p[off++]; - cmd = CMD7.A; - processArc2(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path); - break; - case "a": - rx = p[off++]; - ry = p[off++]; - psi = p[off++]; - fa = p[off++]; - fs = p[off++]; - x1 = cpx, y1 = cpy; - cpx += p[off++]; - cpy += p[off++]; - cmd = CMD7.A; - processArc2(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path); - break; - } - } - if (cmdStr === "z" || cmdStr === "Z") { - cmd = CMD7.Z; - path.addData(cmd); - cpx = subpathX; - cpy = subpathY; - } - prevCmd = cmd; - } - path.toStatic(); - return path; - } - var SVGPath2 = function(_super) { - __extends2(SVGPath3, _super); - function SVGPath3() { - return _super !== null && _super.apply(this, arguments) || this; - } - SVGPath3.prototype.applyTransform = function(m3) { - }; - return SVGPath3; - }(Path2); - function isPathProxy2(path) { - return path.setData != null; - } - function createPathOptions2(str, opts) { - var pathProxy = createPathProxyFromString2(str); - var innerOpts = extend3({}, opts); - innerOpts.buildPath = function(path) { - if (isPathProxy2(path)) { - path.setData(pathProxy.data); - var ctx = path.getContext(); - if (ctx) { - path.rebuildPath(ctx, 1); - } - } else { - var ctx = path; - pathProxy.rebuildPath(ctx, 1); - } - }; - innerOpts.applyTransform = function(m3) { - transformPath2(pathProxy, m3); - this.dirtyShape(); - }; - return innerOpts; - } - function createFromString2(str, opts) { - return new SVGPath2(createPathOptions2(str, opts)); - } - function extendFromString2(str, defaultOpts) { - var innerOpts = createPathOptions2(str, defaultOpts); - var Sub = function(_super) { - __extends2(Sub2, _super); - function Sub2(opts) { - var _this = _super.call(this, opts) || this; - _this.applyTransform = innerOpts.applyTransform; - _this.buildPath = innerOpts.buildPath; - return _this; - } - return Sub2; - }(SVGPath2); - return Sub; - } - function mergePath3(pathEls, opts) { - var pathList = []; - var len3 = pathEls.length; - for (var i2 = 0; i2 < len3; i2++) { - var pathEl = pathEls[i2]; - pathList.push(pathEl.getUpdatedPathProxy(true)); - } - var pathBundle = new Path2(opts); - pathBundle.createPathProxy(); - pathBundle.buildPath = function(path) { - if (isPathProxy2(path)) { - path.appendPath(pathList); - var ctx = path.getContext(); - if (ctx) { - path.rebuildPath(ctx, 1); - } - } - }; - return pathBundle; - } - function clonePath2(sourcePath, opts) { - opts = opts || {}; - var path = new Path2(); - if (sourcePath.shape) { - path.setShape(sourcePath.shape); - } - path.setStyle(sourcePath.style); - if (opts.bakeTransform) { - transformPath2(path.path, sourcePath.getComputedTransform()); - } else { - if (opts.toLocal) { - path.setLocalTransform(sourcePath.getComputedTransform()); - } else { - path.copyTransform(sourcePath); - } - } - path.buildPath = sourcePath.buildPath; - path.applyTransform = path.applyTransform; - path.z = sourcePath.z; - path.z2 = sourcePath.z2; - path.zlevel = sourcePath.zlevel; - return path; - } - var CircleShape2 = /* @__PURE__ */ function() { - function CircleShape3() { - this.cx = 0; - this.cy = 0; - this.r = 0; - } - return CircleShape3; - }(); - var Circle2 = function(_super) { - __extends2(Circle3, _super); - function Circle3(opts) { - return _super.call(this, opts) || this; - } - Circle3.prototype.getDefaultShape = function() { - return new CircleShape2(); - }; - Circle3.prototype.buildPath = function(ctx, shape) { - ctx.moveTo(shape.cx + shape.r, shape.cy); - ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2); - }; - return Circle3; - }(Path2); - Circle2.prototype.type = "circle"; - var EllipseShape2 = /* @__PURE__ */ function() { - function EllipseShape3() { - this.cx = 0; - this.cy = 0; - this.rx = 0; - this.ry = 0; - } - return EllipseShape3; - }(); - var Ellipse2 = function(_super) { - __extends2(Ellipse3, _super); - function Ellipse3(opts) { - return _super.call(this, opts) || this; - } - Ellipse3.prototype.getDefaultShape = function() { - return new EllipseShape2(); - }; - Ellipse3.prototype.buildPath = function(ctx, shape) { - var k2 = 0.5522848; - var x = shape.cx; - var y = shape.cy; - var a = shape.rx; - var b = shape.ry; - var ox = a * k2; - var oy = b * k2; - ctx.moveTo(x - a, y); - ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b); - ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y); - ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b); - ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y); - ctx.closePath(); - }; - return Ellipse3; - }(Path2); - Ellipse2.prototype.type = "ellipse"; - var PI$2 = Math.PI; - var PI2$5 = PI$2 * 2; - var mathSin$3 = Math.sin; - var mathCos$3 = Math.cos; - var mathACos2 = Math.acos; - var mathATan22 = Math.atan2; - var mathAbs$1 = Math.abs; - var mathSqrt$3 = Math.sqrt; - var mathMax$3 = Math.max; - var mathMin$3 = Math.min; - var e2 = 1e-4; - function intersect2(x0, y0, x1, y1, x2, y2, x3, y3) { - var dx10 = x1 - x0; - var dy10 = y1 - y0; - var dx32 = x3 - x2; - var dy32 = y3 - y2; - var t = dy32 * dx10 - dx32 * dy10; - if (t * t < e2) { - return; - } - t = (dx32 * (y0 - y2) - dy32 * (x0 - x2)) / t; - return [x0 + t * dx10, y0 + t * dy10]; - } - function computeCornerTangents2(x0, y0, x1, y1, radius, cr, clockwise) { - var x01 = x0 - x1; - var y01 = y0 - y1; - var lo = (clockwise ? cr : -cr) / mathSqrt$3(x01 * x01 + y01 * y01); - var ox = lo * y01; - var oy = -lo * x01; - var x11 = x0 + ox; - var y11 = y0 + oy; - var x10 = x1 + ox; - var y10 = y1 + oy; - var x00 = (x11 + x10) / 2; - var y00 = (y11 + y10) / 2; - var dx = x10 - x11; - var dy = y10 - y11; - var d2 = dx * dx + dy * dy; - var r = radius - cr; - var s = x11 * y10 - x10 * y11; - var d = (dy < 0 ? -1 : 1) * mathSqrt$3(mathMax$3(0, r * r * d2 - s * s)); - var cx0 = (s * dy - dx * d) / d2; - var cy0 = (-s * dx - dy * d) / d2; - var cx1 = (s * dy + dx * d) / d2; - var cy1 = (-s * dx + dy * d) / d2; - var dx0 = cx0 - x00; - var dy0 = cy0 - y00; - var dx1 = cx1 - x00; - var dy1 = cy1 - y00; - if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) { - cx0 = cx1; - cy0 = cy1; - } - return { - cx: cx0, - cy: cy0, - x0: -ox, - y0: -oy, - x1: cx0 * (radius / r - 1), - y1: cy0 * (radius / r - 1) - }; - } - function normalizeCornerRadius2(cr) { - var arr; - if (isArray3(cr)) { - var len3 = cr.length; - if (!len3) { - return cr; - } - if (len3 === 1) { - arr = [cr[0], cr[0], 0, 0]; - } else if (len3 === 2) { - arr = [cr[0], cr[0], cr[1], cr[1]]; - } else if (len3 === 3) { - arr = cr.concat(cr[2]); - } else { - arr = cr; - } - } else { - arr = [cr, cr, cr, cr]; - } - return arr; - } - function buildPath$1(ctx, shape) { - var _a3; - var radius = mathMax$3(shape.r, 0); - var innerRadius = mathMax$3(shape.r0 || 0, 0); - var hasRadius = radius > 0; - var hasInnerRadius = innerRadius > 0; - if (!hasRadius && !hasInnerRadius) { - return; - } - if (!hasRadius) { - radius = innerRadius; - innerRadius = 0; - } - if (innerRadius > radius) { - var tmp = radius; - radius = innerRadius; - innerRadius = tmp; - } - var startAngle = shape.startAngle, endAngle = shape.endAngle; - if (isNaN(startAngle) || isNaN(endAngle)) { - return; - } - var cx = shape.cx, cy = shape.cy; - var clockwise = !!shape.clockwise; - var arc = mathAbs$1(endAngle - startAngle); - var mod = arc > PI2$5 && arc % PI2$5; - mod > e2 && (arc = mod); - if (!(radius > e2)) { - ctx.moveTo(cx, cy); - } else if (arc > PI2$5 - e2) { - ctx.moveTo(cx + radius * mathCos$3(startAngle), cy + radius * mathSin$3(startAngle)); - ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise); - if (innerRadius > e2) { - ctx.moveTo(cx + innerRadius * mathCos$3(endAngle), cy + innerRadius * mathSin$3(endAngle)); - ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise); - } - } else { - var icrStart = void 0; - var icrEnd = void 0; - var ocrStart = void 0; - var ocrEnd = void 0; - var ocrs = void 0; - var ocre = void 0; - var icrs = void 0; - var icre = void 0; - var ocrMax = void 0; - var icrMax = void 0; - var limitedOcrMax = void 0; - var limitedIcrMax = void 0; - var xre = void 0; - var yre = void 0; - var xirs = void 0; - var yirs = void 0; - var xrs = radius * mathCos$3(startAngle); - var yrs = radius * mathSin$3(startAngle); - var xire = innerRadius * mathCos$3(endAngle); - var yire = innerRadius * mathSin$3(endAngle); - var hasArc = arc > e2; - if (hasArc) { - var cornerRadius = shape.cornerRadius; - if (cornerRadius) { - _a3 = normalizeCornerRadius2(cornerRadius), icrStart = _a3[0], icrEnd = _a3[1], ocrStart = _a3[2], ocrEnd = _a3[3]; - } - var halfRd = mathAbs$1(radius - innerRadius) / 2; - ocrs = mathMin$3(halfRd, ocrStart); - ocre = mathMin$3(halfRd, ocrEnd); - icrs = mathMin$3(halfRd, icrStart); - icre = mathMin$3(halfRd, icrEnd); - limitedOcrMax = ocrMax = mathMax$3(ocrs, ocre); - limitedIcrMax = icrMax = mathMax$3(icrs, icre); - if (ocrMax > e2 || icrMax > e2) { - xre = radius * mathCos$3(endAngle); - yre = radius * mathSin$3(endAngle); - xirs = innerRadius * mathCos$3(startAngle); - yirs = innerRadius * mathSin$3(startAngle); - if (arc < PI$2) { - var it_1 = intersect2(xrs, yrs, xirs, yirs, xre, yre, xire, yire); - if (it_1) { - var x0 = xrs - it_1[0]; - var y0 = yrs - it_1[1]; - var x1 = xre - it_1[0]; - var y1 = yre - it_1[1]; - var a = 1 / mathSin$3(mathACos2((x0 * x1 + y0 * y1) / (mathSqrt$3(x0 * x0 + y0 * y0) * mathSqrt$3(x1 * x1 + y1 * y1))) / 2); - var b = mathSqrt$3(it_1[0] * it_1[0] + it_1[1] * it_1[1]); - limitedOcrMax = mathMin$3(ocrMax, (radius - b) / (a + 1)); - limitedIcrMax = mathMin$3(icrMax, (innerRadius - b) / (a - 1)); - } - } - } - } - if (!hasArc) { - ctx.moveTo(cx + xrs, cy + yrs); - } else if (limitedOcrMax > e2) { - var crStart = mathMin$3(ocrStart, limitedOcrMax); - var crEnd = mathMin$3(ocrEnd, limitedOcrMax); - var ct0 = computeCornerTangents2(xirs, yirs, xrs, yrs, radius, crStart, clockwise); - var ct1 = computeCornerTangents2(xre, yre, xire, yire, radius, crEnd, clockwise); - ctx.moveTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0); - if (limitedOcrMax < ocrMax && crStart === crEnd) { - ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedOcrMax, mathATan22(ct0.y0, ct0.x0), mathATan22(ct1.y0, ct1.x0), !clockwise); - } else { - crStart > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crStart, mathATan22(ct0.y0, ct0.x0), mathATan22(ct0.y1, ct0.x1), !clockwise); - ctx.arc(cx, cy, radius, mathATan22(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan22(ct1.cy + ct1.y1, ct1.cx + ct1.x1), !clockwise); - crEnd > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crEnd, mathATan22(ct1.y1, ct1.x1), mathATan22(ct1.y0, ct1.x0), !clockwise); - } - } else { - ctx.moveTo(cx + xrs, cy + yrs); - ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise); - } - if (!(innerRadius > e2) || !hasArc) { - ctx.lineTo(cx + xire, cy + yire); - } else if (limitedIcrMax > e2) { - var crStart = mathMin$3(icrStart, limitedIcrMax); - var crEnd = mathMin$3(icrEnd, limitedIcrMax); - var ct0 = computeCornerTangents2(xire, yire, xre, yre, innerRadius, -crEnd, clockwise); - var ct1 = computeCornerTangents2(xrs, yrs, xirs, yirs, innerRadius, -crStart, clockwise); - ctx.lineTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0); - if (limitedIcrMax < icrMax && crStart === crEnd) { - ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedIcrMax, mathATan22(ct0.y0, ct0.x0), mathATan22(ct1.y0, ct1.x0), !clockwise); - } else { - crEnd > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crEnd, mathATan22(ct0.y0, ct0.x0), mathATan22(ct0.y1, ct0.x1), !clockwise); - ctx.arc(cx, cy, innerRadius, mathATan22(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan22(ct1.cy + ct1.y1, ct1.cx + ct1.x1), clockwise); - crStart > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crStart, mathATan22(ct1.y1, ct1.x1), mathATan22(ct1.y0, ct1.x0), !clockwise); - } - } else { - ctx.lineTo(cx + xire, cy + yire); - ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise); - } - } - ctx.closePath(); - } - var SectorShape2 = /* @__PURE__ */ function() { - function SectorShape3() { - this.cx = 0; - this.cy = 0; - this.r0 = 0; - this.r = 0; - this.startAngle = 0; - this.endAngle = Math.PI * 2; - this.clockwise = true; - this.cornerRadius = 0; - } - return SectorShape3; - }(); - var Sector2 = function(_super) { - __extends2(Sector3, _super); - function Sector3(opts) { - return _super.call(this, opts) || this; - } - Sector3.prototype.getDefaultShape = function() { - return new SectorShape2(); - }; - Sector3.prototype.buildPath = function(ctx, shape) { - buildPath$1(ctx, shape); - }; - Sector3.prototype.isZeroArea = function() { - return this.shape.startAngle === this.shape.endAngle || this.shape.r === this.shape.r0; - }; - return Sector3; - }(Path2); - Sector2.prototype.type = "sector"; - var RingShape2 = /* @__PURE__ */ function() { - function RingShape3() { - this.cx = 0; - this.cy = 0; - this.r = 0; - this.r0 = 0; - } - return RingShape3; - }(); - var Ring2 = function(_super) { - __extends2(Ring3, _super); - function Ring3(opts) { - return _super.call(this, opts) || this; - } - Ring3.prototype.getDefaultShape = function() { - return new RingShape2(); - }; - Ring3.prototype.buildPath = function(ctx, shape) { - var x = shape.cx; - var y = shape.cy; - var PI211 = Math.PI * 2; - ctx.moveTo(x + shape.r, y); - ctx.arc(x, y, shape.r, 0, PI211, false); - ctx.moveTo(x + shape.r0, y); - ctx.arc(x, y, shape.r0, 0, PI211, true); - }; - return Ring3; - }(Path2); - Ring2.prototype.type = "ring"; - function smoothBezier2(points5, smooth, isLoop, constraint) { - var cps = []; - var v = []; - var v13 = []; - var v23 = []; - var prevPoint; - var nextPoint; - var min$12; - var max$12; - if (constraint) { - min$12 = [Infinity, Infinity]; - max$12 = [-Infinity, -Infinity]; - for (var i2 = 0, len3 = points5.length; i2 < len3; i2++) { - min4(min$12, min$12, points5[i2]); - max4(max$12, max$12, points5[i2]); - } - min4(min$12, min$12, constraint[0]); - max4(max$12, max$12, constraint[1]); - } - for (var i2 = 0, len3 = points5.length; i2 < len3; i2++) { - var point = points5[i2]; - if (isLoop) { - prevPoint = points5[i2 ? i2 - 1 : len3 - 1]; - nextPoint = points5[(i2 + 1) % len3]; - } else { - if (i2 === 0 || i2 === len3 - 1) { - cps.push(clone$1(points5[i2])); - continue; - } else { - prevPoint = points5[i2 - 1]; - nextPoint = points5[i2 + 1]; - } - } - sub2(v, nextPoint, prevPoint); - scale4(v, v, smooth); - var d0 = distance2(point, prevPoint); - var d1 = distance2(point, nextPoint); - var sum3 = d0 + d1; - if (sum3 !== 0) { - d0 /= sum3; - d1 /= sum3; - } - scale4(v13, v, -d0); - scale4(v23, v, d1); - var cp0 = add3([], point, v13); - var cp1 = add3([], point, v23); - if (constraint) { - max4(cp0, cp0, min$12); - min4(cp0, cp0, max$12); - max4(cp1, cp1, min$12); - min4(cp1, cp1, max$12); - } - cps.push(cp0); - cps.push(cp1); - } - if (isLoop) { - cps.push(cps.shift()); - } - return cps; - } - function buildPath$2(ctx, shape, closePath) { - var smooth = shape.smooth; - var points5 = shape.points; - if (points5 && points5.length >= 2) { - if (smooth) { - var controlPoints = smoothBezier2(points5, smooth, closePath, shape.smoothConstraint); - ctx.moveTo(points5[0][0], points5[0][1]); - var len3 = points5.length; - for (var i2 = 0; i2 < (closePath ? len3 : len3 - 1); i2++) { - var cp1 = controlPoints[i2 * 2]; - var cp2 = controlPoints[i2 * 2 + 1]; - var p = points5[(i2 + 1) % len3]; - ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]); - } - } else { - ctx.moveTo(points5[0][0], points5[0][1]); - for (var i2 = 1, l = points5.length; i2 < l; i2++) { - ctx.lineTo(points5[i2][0], points5[i2][1]); - } - } - closePath && ctx.closePath(); - } - } - var PolygonShape2 = /* @__PURE__ */ function() { - function PolygonShape3() { - this.points = null; - this.smooth = 0; - this.smoothConstraint = null; - } - return PolygonShape3; - }(); - var Polygon2 = function(_super) { - __extends2(Polygon3, _super); - function Polygon3(opts) { - return _super.call(this, opts) || this; - } - Polygon3.prototype.getDefaultShape = function() { - return new PolygonShape2(); - }; - Polygon3.prototype.buildPath = function(ctx, shape) { - buildPath$2(ctx, shape, true); - }; - return Polygon3; - }(Path2); - Polygon2.prototype.type = "polygon"; - var PolylineShape2 = /* @__PURE__ */ function() { - function PolylineShape3() { - this.points = null; - this.percent = 1; - this.smooth = 0; - this.smoothConstraint = null; - } - return PolylineShape3; - }(); - var Polyline3 = function(_super) { - __extends2(Polyline4, _super); - function Polyline4(opts) { - return _super.call(this, opts) || this; - } - Polyline4.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - Polyline4.prototype.getDefaultShape = function() { - return new PolylineShape2(); - }; - Polyline4.prototype.buildPath = function(ctx, shape) { - buildPath$2(ctx, shape, false); - }; - return Polyline4; - }(Path2); - Polyline3.prototype.type = "polyline"; - var subPixelOptimizeOutputShape$1 = {}; - var LineShape2 = /* @__PURE__ */ function() { - function LineShape3() { - this.x1 = 0; - this.y1 = 0; - this.x2 = 0; - this.y2 = 0; - this.percent = 1; - } - return LineShape3; - }(); - var Line3 = function(_super) { - __extends2(Line4, _super); - function Line4(opts) { - return _super.call(this, opts) || this; - } - Line4.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - Line4.prototype.getDefaultShape = function() { - return new LineShape2(); - }; - Line4.prototype.buildPath = function(ctx, shape) { - var x1; - var y1; - var x2; - var y2; - if (this.subPixelOptimize) { - var optimizedShape = subPixelOptimizeLine3(subPixelOptimizeOutputShape$1, shape, this.style); - x1 = optimizedShape.x1; - y1 = optimizedShape.y1; - x2 = optimizedShape.x2; - y2 = optimizedShape.y2; - } else { - x1 = shape.x1; - y1 = shape.y1; - x2 = shape.x2; - y2 = shape.y2; - } - var percent = shape.percent; - if (percent === 0) { - return; - } - ctx.moveTo(x1, y1); - if (percent < 1) { - x2 = x1 * (1 - percent) + x2 * percent; - y2 = y1 * (1 - percent) + y2 * percent; - } - ctx.lineTo(x2, y2); - }; - Line4.prototype.pointAt = function(p) { - var shape = this.shape; - return [ - shape.x1 * (1 - p) + shape.x2 * p, - shape.y1 * (1 - p) + shape.y2 * p - ]; - }; - return Line4; - }(Path2); - Line3.prototype.type = "line"; - var out2 = []; - var BezierCurveShape2 = /* @__PURE__ */ function() { - function BezierCurveShape3() { - this.x1 = 0; - this.y1 = 0; - this.x2 = 0; - this.y2 = 0; - this.cpx1 = 0; - this.cpy1 = 0; - this.percent = 1; - } - return BezierCurveShape3; - }(); - function someVectorAt2(shape, t, isTangent) { - var cpx2 = shape.cpx2; - var cpy2 = shape.cpy2; - if (cpx2 != null || cpy2 != null) { - return [ - (isTangent ? cubicDerivativeAt2 : cubicAt2)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t), - (isTangent ? cubicDerivativeAt2 : cubicAt2)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t) - ]; - } else { - return [ - (isTangent ? quadraticDerivativeAt2 : quadraticAt3)(shape.x1, shape.cpx1, shape.x2, t), - (isTangent ? quadraticDerivativeAt2 : quadraticAt3)(shape.y1, shape.cpy1, shape.y2, t) - ]; - } - } - var BezierCurve2 = function(_super) { - __extends2(BezierCurve3, _super); - function BezierCurve3(opts) { - return _super.call(this, opts) || this; - } - BezierCurve3.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - BezierCurve3.prototype.getDefaultShape = function() { - return new BezierCurveShape2(); - }; - BezierCurve3.prototype.buildPath = function(ctx, shape) { - var x1 = shape.x1; - var y1 = shape.y1; - var x2 = shape.x2; - var y2 = shape.y2; - var cpx1 = shape.cpx1; - var cpy1 = shape.cpy1; - var cpx2 = shape.cpx2; - var cpy2 = shape.cpy2; - var percent = shape.percent; - if (percent === 0) { - return; - } - ctx.moveTo(x1, y1); - if (cpx2 == null || cpy2 == null) { - if (percent < 1) { - quadraticSubdivide2(x1, cpx1, x2, percent, out2); - cpx1 = out2[1]; - x2 = out2[2]; - quadraticSubdivide2(y1, cpy1, y2, percent, out2); - cpy1 = out2[1]; - y2 = out2[2]; - } - ctx.quadraticCurveTo(cpx1, cpy1, x2, y2); - } else { - if (percent < 1) { - cubicSubdivide2(x1, cpx1, cpx2, x2, percent, out2); - cpx1 = out2[1]; - cpx2 = out2[2]; - x2 = out2[3]; - cubicSubdivide2(y1, cpy1, cpy2, y2, percent, out2); - cpy1 = out2[1]; - cpy2 = out2[2]; - y2 = out2[3]; - } - ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2); - } - }; - BezierCurve3.prototype.pointAt = function(t) { - return someVectorAt2(this.shape, t, false); - }; - BezierCurve3.prototype.tangentAt = function(t) { - var p = someVectorAt2(this.shape, t, true); - return normalize5(p, p); - }; - return BezierCurve3; - }(Path2); - BezierCurve2.prototype.type = "bezier-curve"; - var ArcShape2 = /* @__PURE__ */ function() { - function ArcShape3() { - this.cx = 0; - this.cy = 0; - this.r = 0; - this.startAngle = 0; - this.endAngle = Math.PI * 2; - this.clockwise = true; - } - return ArcShape3; - }(); - var Arc2 = function(_super) { - __extends2(Arc3, _super); - function Arc3(opts) { - return _super.call(this, opts) || this; - } - Arc3.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - Arc3.prototype.getDefaultShape = function() { - return new ArcShape2(); - }; - Arc3.prototype.buildPath = function(ctx, shape) { - var x = shape.cx; - var y = shape.cy; - var r = Math.max(shape.r, 0); - var startAngle = shape.startAngle; - var endAngle = shape.endAngle; - var clockwise = shape.clockwise; - var unitX = Math.cos(startAngle); - var unitY = Math.sin(startAngle); - ctx.moveTo(unitX * r + x, unitY * r + y); - ctx.arc(x, y, r, startAngle, endAngle, !clockwise); - }; - return Arc3; - }(Path2); - Arc2.prototype.type = "arc"; - var CompoundPath2 = function(_super) { - __extends2(CompoundPath3, _super); - function CompoundPath3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "compound"; - return _this; - } - CompoundPath3.prototype._updatePathDirty = function() { - var paths = this.shape.paths; - var dirtyPath = this.shapeChanged(); - for (var i2 = 0; i2 < paths.length; i2++) { - dirtyPath = dirtyPath || paths[i2].shapeChanged(); - } - if (dirtyPath) { - this.dirtyShape(); - } - }; - CompoundPath3.prototype.beforeBrush = function() { - this._updatePathDirty(); - var paths = this.shape.paths || []; - var scale5 = this.getGlobalScale(); - for (var i2 = 0; i2 < paths.length; i2++) { - if (!paths[i2].path) { - paths[i2].createPathProxy(); - } - paths[i2].path.setScale(scale5[0], scale5[1], paths[i2].segmentIgnoreThreshold); - } - }; - CompoundPath3.prototype.buildPath = function(ctx, shape) { - var paths = shape.paths || []; - for (var i2 = 0; i2 < paths.length; i2++) { - paths[i2].buildPath(ctx, paths[i2].shape, true); - } - }; - CompoundPath3.prototype.afterBrush = function() { - var paths = this.shape.paths || []; - for (var i2 = 0; i2 < paths.length; i2++) { - paths[i2].pathUpdated(); - } - }; - CompoundPath3.prototype.getBoundingRect = function() { - this._updatePathDirty.call(this); - return Path2.prototype.getBoundingRect.call(this); - }; - return CompoundPath3; - }(Path2); - var Gradient2 = function() { - function Gradient3(colorStops) { - this.colorStops = colorStops || []; - } - Gradient3.prototype.addColorStop = function(offset3, color2) { - this.colorStops.push({ - offset: offset3, - color: color2 - }); - }; - return Gradient3; - }(); - var LinearGradient2 = function(_super) { - __extends2(LinearGradient3, _super); - function LinearGradient3(x, y, x2, y2, colorStops, globalCoord) { - var _this = _super.call(this, colorStops) || this; - _this.x = x == null ? 0 : x; - _this.y = y == null ? 0 : y; - _this.x2 = x2 == null ? 1 : x2; - _this.y2 = y2 == null ? 0 : y2; - _this.type = "linear"; - _this.global = globalCoord || false; - return _this; - } - return LinearGradient3; - }(Gradient2); - var RadialGradient2 = function(_super) { - __extends2(RadialGradient3, _super); - function RadialGradient3(x, y, r, colorStops, globalCoord) { - var _this = _super.call(this, colorStops) || this; - _this.x = x == null ? 0.5 : x; - _this.y = y == null ? 0.5 : y; - _this.r = r == null ? 0.5 : r; - _this.type = "radial"; - _this.global = globalCoord || false; - return _this; - } - return RadialGradient3; - }(Gradient2); - var extent3 = [0, 0]; - var extent22 = [0, 0]; - var minTv$1 = new Point2(); - var maxTv$1 = new Point2(); - var OrientedBoundingRect2 = function() { - function OrientedBoundingRect3(rect, transform2) { - this._corners = []; - this._axes = []; - this._origin = [0, 0]; - for (var i2 = 0; i2 < 4; i2++) { - this._corners[i2] = new Point2(); - } - for (var i2 = 0; i2 < 2; i2++) { - this._axes[i2] = new Point2(); - } - if (rect) { - this.fromBoundingRect(rect, transform2); - } - } - OrientedBoundingRect3.prototype.fromBoundingRect = function(rect, transform2) { - var corners = this._corners; - var axes = this._axes; - var x = rect.x; - var y = rect.y; - var x2 = x + rect.width; - var y2 = y + rect.height; - corners[0].set(x, y); - corners[1].set(x2, y); - corners[2].set(x2, y2); - corners[3].set(x, y2); - if (transform2) { - for (var i2 = 0; i2 < 4; i2++) { - corners[i2].transform(transform2); - } - } - Point2.sub(axes[0], corners[1], corners[0]); - Point2.sub(axes[1], corners[3], corners[0]); - axes[0].normalize(); - axes[1].normalize(); - for (var i2 = 0; i2 < 2; i2++) { - this._origin[i2] = axes[i2].dot(corners[0]); - } - }; - OrientedBoundingRect3.prototype.intersect = function(other, mtv) { - var overlapped = true; - var noMtv = !mtv; - minTv$1.set(Infinity, Infinity); - maxTv$1.set(0, 0); - if (!this._intersectCheckOneSide(this, other, minTv$1, maxTv$1, noMtv, 1)) { - overlapped = false; - if (noMtv) { - return overlapped; - } - } - if (!this._intersectCheckOneSide(other, this, minTv$1, maxTv$1, noMtv, -1)) { - overlapped = false; - if (noMtv) { - return overlapped; - } - } - if (!noMtv) { - Point2.copy(mtv, overlapped ? minTv$1 : maxTv$1); - } - return overlapped; - }; - OrientedBoundingRect3.prototype._intersectCheckOneSide = function(self2, other, minTv4, maxTv4, noMtv, inverse) { - var overlapped = true; - for (var i2 = 0; i2 < 2; i2++) { - var axis = this._axes[i2]; - this._getProjMinMaxOnAxis(i2, self2._corners, extent3); - this._getProjMinMaxOnAxis(i2, other._corners, extent22); - if (extent3[1] < extent22[0] || extent3[0] > extent22[1]) { - overlapped = false; - if (noMtv) { - return overlapped; - } - var dist0 = Math.abs(extent22[0] - extent3[1]); - var dist1 = Math.abs(extent3[0] - extent22[1]); - if (Math.min(dist0, dist1) > maxTv4.len()) { - if (dist0 < dist1) { - Point2.scale(maxTv4, axis, -dist0 * inverse); - } else { - Point2.scale(maxTv4, axis, dist1 * inverse); - } - } - } else if (minTv4) { - var dist0 = Math.abs(extent22[0] - extent3[1]); - var dist1 = Math.abs(extent3[0] - extent22[1]); - if (Math.min(dist0, dist1) < minTv4.len()) { - if (dist0 < dist1) { - Point2.scale(minTv4, axis, dist0 * inverse); - } else { - Point2.scale(minTv4, axis, -dist1 * inverse); - } - } - } - } - return overlapped; - }; - OrientedBoundingRect3.prototype._getProjMinMaxOnAxis = function(dim, corners, out3) { - var axis = this._axes[dim]; - var origin = this._origin; - var proj = corners[0].dot(axis) + origin[dim]; - var min5 = proj; - var max5 = proj; - for (var i2 = 1; i2 < corners.length; i2++) { - var proj_1 = corners[i2].dot(axis) + origin[dim]; - min5 = Math.min(proj_1, min5); - max5 = Math.max(proj_1, max5); - } - out3[0] = min5; - out3[1] = max5; - }; - return OrientedBoundingRect3; - }(); - var m2 = []; - var IncrementalDisplayable2 = function(_super) { - __extends2(IncrementalDisplayable3, _super); - function IncrementalDisplayable3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.notClear = true; - _this.incremental = true; - _this._displayables = []; - _this._temporaryDisplayables = []; - _this._cursor = 0; - return _this; - } - IncrementalDisplayable3.prototype.traverse = function(cb, context) { - cb.call(context, this); - }; - IncrementalDisplayable3.prototype.useStyle = function() { - this.style = {}; - }; - IncrementalDisplayable3.prototype.getCursor = function() { - return this._cursor; - }; - IncrementalDisplayable3.prototype.innerAfterBrush = function() { - this._cursor = this._displayables.length; - }; - IncrementalDisplayable3.prototype.clearDisplaybles = function() { - this._displayables = []; - this._temporaryDisplayables = []; - this._cursor = 0; - this.markRedraw(); - this.notClear = false; - }; - IncrementalDisplayable3.prototype.clearTemporalDisplayables = function() { - this._temporaryDisplayables = []; - }; - IncrementalDisplayable3.prototype.addDisplayable = function(displayable, notPersistent) { - if (notPersistent) { - this._temporaryDisplayables.push(displayable); - } else { - this._displayables.push(displayable); - } - this.markRedraw(); - }; - IncrementalDisplayable3.prototype.addDisplayables = function(displayables, notPersistent) { - notPersistent = notPersistent || false; - for (var i2 = 0; i2 < displayables.length; i2++) { - this.addDisplayable(displayables[i2], notPersistent); - } - }; - IncrementalDisplayable3.prototype.getDisplayables = function() { - return this._displayables; - }; - IncrementalDisplayable3.prototype.getTemporalDisplayables = function() { - return this._temporaryDisplayables; - }; - IncrementalDisplayable3.prototype.eachPendingDisplayable = function(cb) { - for (var i2 = this._cursor; i2 < this._displayables.length; i2++) { - cb && cb(this._displayables[i2]); - } - for (var i2 = 0; i2 < this._temporaryDisplayables.length; i2++) { - cb && cb(this._temporaryDisplayables[i2]); - } - }; - IncrementalDisplayable3.prototype.update = function() { - this.updateTransform(); - for (var i2 = this._cursor; i2 < this._displayables.length; i2++) { - var displayable = this._displayables[i2]; - displayable.parent = this; - displayable.update(); - displayable.parent = null; - } - for (var i2 = 0; i2 < this._temporaryDisplayables.length; i2++) { - var displayable = this._temporaryDisplayables[i2]; - displayable.parent = this; - displayable.update(); - displayable.parent = null; - } - }; - IncrementalDisplayable3.prototype.getBoundingRect = function() { - if (!this._rect) { - var rect = new BoundingRect2(Infinity, Infinity, -Infinity, -Infinity); - for (var i2 = 0; i2 < this._displayables.length; i2++) { - var displayable = this._displayables[i2]; - var childRect = displayable.getBoundingRect().clone(); - if (displayable.needLocalTransform()) { - childRect.applyTransform(displayable.getLocalTransform(m2)); - } - rect.union(childRect); - } - this._rect = rect; - } - return this._rect; - }; - IncrementalDisplayable3.prototype.contain = function(x, y) { - var localPos = this.transformCoordToLocal(x, y); - var rect = this.getBoundingRect(); - if (rect.contain(localPos[0], localPos[1])) { - for (var i2 = 0; i2 < this._displayables.length; i2++) { - var displayable = this._displayables[i2]; - if (displayable.contain(x, y)) { - return true; - } - } - } - return false; - }; - return IncrementalDisplayable3; - }(Displayable2); - var transitionStore2 = makeInner2(); - function getAnimationConfig2(animationType, animatableModel, dataIndex, extraOpts, extraDelayParams) { - var animationPayload; - if (animatableModel && animatableModel.ecModel) { - var updatePayload = animatableModel.ecModel.getUpdatePayload(); - animationPayload = updatePayload && updatePayload.animation; - } - var animationEnabled = animatableModel && animatableModel.isAnimationEnabled(); - var isUpdate = animationType === "update"; - if (animationEnabled) { - var duration = void 0; - var easing = void 0; - var delay = void 0; - if (extraOpts) { - duration = retrieve22(extraOpts.duration, 200); - easing = retrieve22(extraOpts.easing, "cubicOut"); - delay = 0; - } else { - duration = animatableModel.getShallow(isUpdate ? "animationDurationUpdate" : "animationDuration"); - easing = animatableModel.getShallow(isUpdate ? "animationEasingUpdate" : "animationEasing"); - delay = animatableModel.getShallow(isUpdate ? "animationDelayUpdate" : "animationDelay"); - } - if (animationPayload) { - animationPayload.duration != null && (duration = animationPayload.duration); - animationPayload.easing != null && (easing = animationPayload.easing); - animationPayload.delay != null && (delay = animationPayload.delay); - } - if (isFunction2(delay)) { - delay = delay(dataIndex, extraDelayParams); - } - if (isFunction2(duration)) { - duration = duration(dataIndex); - } - var config2 = { - duration: duration || 0, - delay, - easing - }; - return config2; - } else { - return null; - } - } - function animateOrSetProps2(animationType, el, props, animatableModel, dataIndex, cb, during) { - var isFrom = false; - var removeOpt; - if (isFunction2(dataIndex)) { - during = cb; - cb = dataIndex; - dataIndex = null; - } else if (isObject5(dataIndex)) { - cb = dataIndex.cb; - during = dataIndex.during; - isFrom = dataIndex.isFrom; - removeOpt = dataIndex.removeOpt; - dataIndex = dataIndex.dataIndex; - } - var isRemove = animationType === "leave"; - if (!isRemove) { - el.stopAnimation("leave"); - } - var animationConfig = getAnimationConfig2(animationType, animatableModel, dataIndex, isRemove ? removeOpt || {} : null, animatableModel && animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null); - if (animationConfig && animationConfig.duration > 0) { - var duration = animationConfig.duration; - var animationDelay = animationConfig.delay; - var animationEasing = animationConfig.easing; - var animateConfig = { - duration, - delay: animationDelay || 0, - easing: animationEasing, - done: cb, - force: !!cb || !!during, - // Set to final state in update/init animation. - // So the post processing based on the path shape can be done correctly. - setToFinal: !isRemove, - scope: animationType, - during - }; - isFrom ? el.animateFrom(props, animateConfig) : el.animateTo(props, animateConfig); - } else { - el.stopAnimation(); - !isFrom && el.attr(props); - during && during(1); - cb && cb(); - } - } - function updateProps3(el, props, animatableModel, dataIndex, cb, during) { - animateOrSetProps2("update", el, props, animatableModel, dataIndex, cb, during); - } - function initProps2(el, props, animatableModel, dataIndex, cb, during) { - animateOrSetProps2("enter", el, props, animatableModel, dataIndex, cb, during); - } - function isElementRemoved2(el) { - if (!el.__zr) { - return true; - } - for (var i2 = 0; i2 < el.animators.length; i2++) { - var animator = el.animators[i2]; - if (animator.scope === "leave") { - return true; - } - } - return false; - } - function removeElement2(el, props, animatableModel, dataIndex, cb, during) { - if (isElementRemoved2(el)) { - return; - } - animateOrSetProps2("leave", el, props, animatableModel, dataIndex, cb, during); - } - function fadeOutDisplayable2(el, animatableModel, dataIndex, done) { - el.removeTextContent(); - el.removeTextGuideLine(); - removeElement2(el, { - style: { - opacity: 0 - } - }, animatableModel, dataIndex, done); - } - function removeElementWithFadeOut2(el, animatableModel, dataIndex) { - function doRemove() { - el.parent && el.parent.remove(el); - } - if (!el.isGroup) { - fadeOutDisplayable2(el, animatableModel, dataIndex, doRemove); - } else { - el.traverse(function(disp) { - if (!disp.isGroup) { - fadeOutDisplayable2(disp, animatableModel, dataIndex, doRemove); - } - }); - } - } - function saveOldStyle2(el) { - transitionStore2(el).oldStyle = el.style; - } - function getOldStyle2(el) { - return transitionStore2(el).oldStyle; - } - var mathMax$4 = Math.max; - var mathMin$4 = Math.min; - var _customShapeMap2 = {}; - function extendShape2(opts) { - return Path2.extend(opts); - } - var extendPathFromString2 = extendFromString2; - function extendPath2(pathData, opts) { - return extendPathFromString2(pathData, opts); - } - function registerShape2(name, ShapeClass) { - _customShapeMap2[name] = ShapeClass; - } - function getShapeClass2(name) { - if (_customShapeMap2.hasOwnProperty(name)) { - return _customShapeMap2[name]; - } - } - function makePath2(pathData, opts, rect, layout6) { - var path = createFromString2(pathData, opts); - if (rect) { - if (layout6 === "center") { - rect = centerGraphic2(rect, path.getBoundingRect()); - } - resizePath2(path, rect); - } - return path; - } - function makeImage2(imageUrl, rect, layout6) { - var zrImg = new ZRImage2({ - style: { - image: imageUrl, - x: rect.x, - y: rect.y, - width: rect.width, - height: rect.height - }, - onload: function(img) { - if (layout6 === "center") { - var boundingRect = { - width: img.width, - height: img.height - }; - zrImg.setStyle(centerGraphic2(rect, boundingRect)); - } - } - }); - return zrImg; - } - function centerGraphic2(rect, boundingRect) { - var aspect = boundingRect.width / boundingRect.height; - var width = rect.height * aspect; - var height; - if (width <= rect.width) { - height = rect.height; - } else { - width = rect.width; - height = width / aspect; - } - var cx = rect.x + rect.width / 2; - var cy = rect.y + rect.height / 2; - return { - x: cx - width / 2, - y: cy - height / 2, - width, - height - }; - } - var mergePath$1 = mergePath3; - function resizePath2(path, rect) { - if (!path.applyTransform) { - return; - } - var pathRect = path.getBoundingRect(); - var m3 = pathRect.calculateTransform(rect); - path.applyTransform(m3); - } - function subPixelOptimizeLine$1(shape, lineWidth) { - subPixelOptimizeLine3(shape, shape, { - lineWidth - }); - return shape; - } - function subPixelOptimizeRect$1(param) { - subPixelOptimizeRect3(param.shape, param.shape, param.style); - return param; - } - var subPixelOptimize$1 = subPixelOptimize3; - function getTransform3(target, ancestor) { - var mat = identity2([]); - while (target && target !== ancestor) { - mul$1(mat, target.getLocalTransform(), mat); - target = target.parent; - } - return mat; - } - function applyTransform$1(target, transform2, invert$1) { - if (transform2 && !isArrayLike2(transform2)) { - transform2 = Transformable2.getLocalTransform(transform2); - } - if (invert$1) { - transform2 = invert2([], transform2); - } - return applyTransform3([], target, transform2); - } - function transformDirection2(direction, transform2, invert3) { - var hBase = transform2[4] === 0 || transform2[5] === 0 || transform2[0] === 0 ? 1 : Math.abs(2 * transform2[4] / transform2[0]); - var vBase = transform2[4] === 0 || transform2[5] === 0 || transform2[2] === 0 ? 1 : Math.abs(2 * transform2[4] / transform2[2]); - var vertex = [direction === "left" ? -hBase : direction === "right" ? hBase : 0, direction === "top" ? -vBase : direction === "bottom" ? vBase : 0]; - vertex = applyTransform$1(vertex, transform2, invert3); - return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? "right" : "left" : vertex[1] > 0 ? "bottom" : "top"; - } - function isNotGroup2(el) { - return !el.isGroup; - } - function isPath3(el) { - return el.shape != null; - } - function groupTransition2(g1, g2, animatableModel) { - if (!g1 || !g2) { - return; - } - function getElMap(g) { - var elMap = {}; - g.traverse(function(el) { - if (isNotGroup2(el) && el.anid) { - elMap[el.anid] = el; - } - }); - return elMap; - } - function getAnimatableProps(el) { - var obj = { - x: el.x, - y: el.y, - rotation: el.rotation - }; - if (isPath3(el)) { - obj.shape = extend3({}, el.shape); - } - return obj; - } - var elMap1 = getElMap(g1); - g2.traverse(function(el) { - if (isNotGroup2(el) && el.anid) { - var oldEl = elMap1[el.anid]; - if (oldEl) { - var newProp = getAnimatableProps(el); - el.attr(getAnimatableProps(oldEl)); - updateProps3(el, newProp, animatableModel, getECData2(el).dataIndex); - } - } - }); - } - function clipPointsByRect2(points5, rect) { - return map3(points5, function(point) { - var x = point[0]; - x = mathMax$4(x, rect.x); - x = mathMin$4(x, rect.x + rect.width); - var y = point[1]; - y = mathMax$4(y, rect.y); - y = mathMin$4(y, rect.y + rect.height); - return [x, y]; - }); - } - function clipRectByRect2(targetRect, rect) { - var x = mathMax$4(targetRect.x, rect.x); - var x2 = mathMin$4(targetRect.x + targetRect.width, rect.x + rect.width); - var y = mathMax$4(targetRect.y, rect.y); - var y2 = mathMin$4(targetRect.y + targetRect.height, rect.y + rect.height); - if (x2 >= x && y2 >= y) { - return { - x, - y, - width: x2 - x, - height: y2 - y - }; - } - } - function createIcon2(iconStr, opt, rect) { - var innerOpts = extend3({ - rectHover: true - }, opt); - var style = innerOpts.style = { - strokeNoScale: true - }; - rect = rect || { - x: -1, - y: -1, - width: 2, - height: 2 - }; - if (iconStr) { - return iconStr.indexOf("image://") === 0 ? (style.image = iconStr.slice(8), defaults2(style, rect), new ZRImage2(innerOpts)) : makePath2(iconStr.replace("path://", ""), innerOpts, rect, "center"); - } - } - function linePolygonIntersect2(a1x, a1y, a2x, a2y, points5) { - for (var i2 = 0, p2 = points5[points5.length - 1]; i2 < points5.length; i2++) { - var p = points5[i2]; - if (lineLineIntersect3(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) { - return true; - } - p2 = p; - } - } - function lineLineIntersect3(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) { - var mx = a2x - a1x; - var my = a2y - a1y; - var nx = b2x - b1x; - var ny = b2y - b1y; - var nmCrossProduct = crossProduct2d3(nx, ny, mx, my); - if (nearZero2(nmCrossProduct)) { - return false; - } - var b1a1x = a1x - b1x; - var b1a1y = a1y - b1y; - var q = crossProduct2d3(b1a1x, b1a1y, mx, my) / nmCrossProduct; - if (q < 0 || q > 1) { - return false; - } - var p = crossProduct2d3(b1a1x, b1a1y, nx, ny) / nmCrossProduct; - if (p < 0 || p > 1) { - return false; - } - return true; - } - function crossProduct2d3(x1, y1, x2, y2) { - return x1 * y2 - x2 * y1; - } - function nearZero2(val) { - return val <= 1e-6 && val >= -1e-6; - } - function setTooltipConfig2(opt) { - var itemTooltipOption = opt.itemTooltipOption; - var componentModel = opt.componentModel; - var itemName = opt.itemName; - var itemTooltipOptionObj = isString2(itemTooltipOption) ? { - formatter: itemTooltipOption - } : itemTooltipOption; - var mainType = componentModel.mainType; - var componentIndex = componentModel.componentIndex; - var formatterParams = { - componentType: mainType, - name: itemName, - $vars: ["name"] - }; - formatterParams[mainType + "Index"] = componentIndex; - var formatterParamsExtra = opt.formatterParamsExtra; - if (formatterParamsExtra) { - each17(keys2(formatterParamsExtra), function(key) { - if (!hasOwn2(formatterParams, key)) { - formatterParams[key] = formatterParamsExtra[key]; - formatterParams.$vars.push(key); - } - }); - } - var ecData = getECData2(opt.el); - ecData.componentMainType = mainType; - ecData.componentIndex = componentIndex; - ecData.tooltipConfig = { - name: itemName, - option: defaults2({ - content: itemName, - encodeHTMLContent: true, - formatterParams - }, itemTooltipOptionObj) - }; - } - function traverseElement2(el, cb) { - var stopped; - if (el.isGroup) { - stopped = cb(el); - } - if (!stopped) { - el.traverse(cb); - } - } - function traverseElements2(els, cb) { - if (els) { - if (isArray3(els)) { - for (var i2 = 0; i2 < els.length; i2++) { - traverseElement2(els[i2], cb); - } - } else { - traverseElement2(els, cb); - } - } - } - registerShape2("circle", Circle2); - registerShape2("ellipse", Ellipse2); - registerShape2("sector", Sector2); - registerShape2("ring", Ring2); - registerShape2("polygon", Polygon2); - registerShape2("polyline", Polyline3); - registerShape2("rect", Rect4); - registerShape2("line", Line3); - registerShape2("bezierCurve", BezierCurve2); - registerShape2("arc", Arc2); - var graphic = /* @__PURE__ */ Object.freeze({ - __proto__: null, - updateProps: updateProps3, - initProps: initProps2, - removeElement: removeElement2, - removeElementWithFadeOut: removeElementWithFadeOut2, - isElementRemoved: isElementRemoved2, - extendShape: extendShape2, - extendPath: extendPath2, - registerShape: registerShape2, - getShapeClass: getShapeClass2, - makePath: makePath2, - makeImage: makeImage2, - mergePath: mergePath$1, - resizePath: resizePath2, - subPixelOptimizeLine: subPixelOptimizeLine$1, - subPixelOptimizeRect: subPixelOptimizeRect$1, - subPixelOptimize: subPixelOptimize$1, - getTransform: getTransform3, - applyTransform: applyTransform$1, - transformDirection: transformDirection2, - groupTransition: groupTransition2, - clipPointsByRect: clipPointsByRect2, - clipRectByRect: clipRectByRect2, - createIcon: createIcon2, - linePolygonIntersect: linePolygonIntersect2, - lineLineIntersect: lineLineIntersect3, - setTooltipConfig: setTooltipConfig2, - traverseElements: traverseElements2, - Group: Group5, - Image: ZRImage2, - Text: ZRText2, - Circle: Circle2, - Ellipse: Ellipse2, - Sector: Sector2, - Ring: Ring2, - Polygon: Polygon2, - Polyline: Polyline3, - Rect: Rect4, - Line: Line3, - BezierCurve: BezierCurve2, - Arc: Arc2, - IncrementalDisplayable: IncrementalDisplayable2, - CompoundPath: CompoundPath2, - LinearGradient: LinearGradient2, - RadialGradient: RadialGradient2, - BoundingRect: BoundingRect2, - OrientedBoundingRect: OrientedBoundingRect2, - Point: Point2, - Path: Path2 - }); - var EMPTY_OBJ2 = {}; - function setLabelText2(label, labelTexts) { - for (var i2 = 0; i2 < SPECIAL_STATES2.length; i2++) { - var stateName = SPECIAL_STATES2[i2]; - var text = labelTexts[stateName]; - var state = label.ensureState(stateName); - state.style = state.style || {}; - state.style.text = text; - } - var oldStates = label.currentStates.slice(); - label.clearStates(true); - label.setStyle({ - text: labelTexts.normal - }); - label.useStates(oldStates, true); - } - function getLabelText2(opt, stateModels, interpolatedValue) { - var labelFetcher = opt.labelFetcher; - var labelDataIndex = opt.labelDataIndex; - var labelDimIndex = opt.labelDimIndex; - var normalModel = stateModels.normal; - var baseText; - if (labelFetcher) { - baseText = labelFetcher.getFormattedLabel(labelDataIndex, "normal", null, labelDimIndex, normalModel && normalModel.get("formatter"), interpolatedValue != null ? { - interpolatedValue - } : null); - } - if (baseText == null) { - baseText = isFunction2(opt.defaultText) ? opt.defaultText(labelDataIndex, opt, interpolatedValue) : opt.defaultText; - } - var statesText = { - normal: baseText - }; - for (var i2 = 0; i2 < SPECIAL_STATES2.length; i2++) { - var stateName = SPECIAL_STATES2[i2]; - var stateModel = stateModels[stateName]; - statesText[stateName] = retrieve22(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, stateName, null, labelDimIndex, stateModel && stateModel.get("formatter")) : null, baseText); - } - return statesText; - } - function setLabelStyle2(targetEl, labelStatesModels, opt, stateSpecified) { - opt = opt || EMPTY_OBJ2; - var isSetOnText = targetEl instanceof ZRText2; - var needsCreateText = false; - for (var i2 = 0; i2 < DISPLAY_STATES2.length; i2++) { - var stateModel = labelStatesModels[DISPLAY_STATES2[i2]]; - if (stateModel && stateModel.getShallow("show")) { - needsCreateText = true; - break; - } - } - var textContent = isSetOnText ? targetEl : targetEl.getTextContent(); - if (needsCreateText) { - if (!isSetOnText) { - if (!textContent) { - textContent = new ZRText2(); - targetEl.setTextContent(textContent); - } - if (targetEl.stateProxy) { - textContent.stateProxy = targetEl.stateProxy; - } - } - var labelStatesTexts = getLabelText2(opt, labelStatesModels); - var normalModel = labelStatesModels.normal; - var showNormal = !!normalModel.getShallow("show"); - var normalStyle = createTextStyle3(normalModel, stateSpecified && stateSpecified.normal, opt, false, !isSetOnText); - normalStyle.text = labelStatesTexts.normal; - if (!isSetOnText) { - targetEl.setTextConfig(createTextConfig2(normalModel, opt, false)); - } - for (var i2 = 0; i2 < SPECIAL_STATES2.length; i2++) { - var stateName = SPECIAL_STATES2[i2]; - var stateModel = labelStatesModels[stateName]; - if (stateModel) { - var stateObj = textContent.ensureState(stateName); - var stateShow = !!retrieve22(stateModel.getShallow("show"), showNormal); - if (stateShow !== showNormal) { - stateObj.ignore = !stateShow; - } - stateObj.style = createTextStyle3(stateModel, stateSpecified && stateSpecified[stateName], opt, true, !isSetOnText); - stateObj.style.text = labelStatesTexts[stateName]; - if (!isSetOnText) { - var targetElEmphasisState = targetEl.ensureState(stateName); - targetElEmphasisState.textConfig = createTextConfig2(stateModel, opt, true); - } - } - } - textContent.silent = !!normalModel.getShallow("silent"); - if (textContent.style.x != null) { - normalStyle.x = textContent.style.x; - } - if (textContent.style.y != null) { - normalStyle.y = textContent.style.y; - } - textContent.ignore = !showNormal; - textContent.useStyle(normalStyle); - textContent.dirty(); - if (opt.enableTextSetter) { - labelInner2(textContent).setLabelText = function(interpolatedValue) { - var labelStatesTexts2 = getLabelText2(opt, labelStatesModels, interpolatedValue); - setLabelText2(textContent, labelStatesTexts2); - }; - } - } else if (textContent) { - textContent.ignore = true; - } - targetEl.dirty(); - } - function getLabelStatesModels2(itemModel, labelName) { - labelName = labelName || "label"; - var statesModels = { - normal: itemModel.getModel(labelName) - }; - for (var i2 = 0; i2 < SPECIAL_STATES2.length; i2++) { - var stateName = SPECIAL_STATES2[i2]; - statesModels[stateName] = itemModel.getModel([stateName, labelName]); - } - return statesModels; - } - function createTextStyle3(textStyleModel, specifiedTextStyle, opt, isNotNormal, isAttached) { - var textStyle = {}; - setTextStyleCommon2(textStyle, textStyleModel, opt, isNotNormal, isAttached); - specifiedTextStyle && extend3(textStyle, specifiedTextStyle); - return textStyle; - } - function createTextConfig2(textStyleModel, opt, isNotNormal) { - opt = opt || {}; - var textConfig = {}; - var labelPosition; - var labelRotate = textStyleModel.getShallow("rotate"); - var labelDistance = retrieve22(textStyleModel.getShallow("distance"), isNotNormal ? null : 5); - var labelOffset = textStyleModel.getShallow("offset"); - labelPosition = textStyleModel.getShallow("position") || (isNotNormal ? null : "inside"); - labelPosition === "outside" && (labelPosition = opt.defaultOutsidePosition || "top"); - if (labelPosition != null) { - textConfig.position = labelPosition; - } - if (labelOffset != null) { - textConfig.offset = labelOffset; - } - if (labelRotate != null) { - labelRotate *= Math.PI / 180; - textConfig.rotation = labelRotate; - } - if (labelDistance != null) { - textConfig.distance = labelDistance; - } - textConfig.outsideFill = textStyleModel.get("color") === "inherit" ? opt.inheritColor || null : "auto"; - return textConfig; - } - function setTextStyleCommon2(textStyle, textStyleModel, opt, isNotNormal, isAttached) { - opt = opt || EMPTY_OBJ2; - var ecModel = textStyleModel.ecModel; - var globalTextStyle = ecModel && ecModel.option.textStyle; - var richItemNames = getRichItemNames2(textStyleModel); - var richResult; - if (richItemNames) { - richResult = {}; - for (var name_1 in richItemNames) { - if (richItemNames.hasOwnProperty(name_1)) { - var richTextStyle = textStyleModel.getModel(["rich", name_1]); - setTokenTextStyle2(richResult[name_1] = {}, richTextStyle, globalTextStyle, opt, isNotNormal, isAttached, false, true); - } - } - } - if (richResult) { - textStyle.rich = richResult; - } - var overflow = textStyleModel.get("overflow"); - if (overflow) { - textStyle.overflow = overflow; - } - var margin = textStyleModel.get("minMargin"); - if (margin != null) { - textStyle.margin = margin; - } - setTokenTextStyle2(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, true, false); - } - function getRichItemNames2(textStyleModel) { - var richItemNameMap; - while (textStyleModel && textStyleModel !== textStyleModel.ecModel) { - var rich = (textStyleModel.option || EMPTY_OBJ2).rich; - if (rich) { - richItemNameMap = richItemNameMap || {}; - var richKeys = keys2(rich); - for (var i2 = 0; i2 < richKeys.length; i2++) { - var richKey = richKeys[i2]; - richItemNameMap[richKey] = 1; - } - } - textStyleModel = textStyleModel.parentModel; - } - return richItemNameMap; - } - var TEXT_PROPS_WITH_GLOBAL2 = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY"]; - var TEXT_PROPS_SELF2 = ["align", "lineHeight", "width", "height", "tag", "verticalAlign", "ellipsis"]; - var TEXT_PROPS_BOX2 = ["padding", "borderWidth", "borderRadius", "borderDashOffset", "backgroundColor", "borderColor", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"]; - function setTokenTextStyle2(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, isBlock, inRich) { - globalTextStyle = !isNotNormal && globalTextStyle || EMPTY_OBJ2; - var inheritColor = opt && opt.inheritColor; - var fillColor = textStyleModel.getShallow("color"); - var strokeColor = textStyleModel.getShallow("textBorderColor"); - var opacity = retrieve22(textStyleModel.getShallow("opacity"), globalTextStyle.opacity); - if (fillColor === "inherit" || fillColor === "auto") { - if (true) { - if (fillColor === "auto") { - deprecateReplaceLog2("color: 'auto'", "color: 'inherit'"); - } - } - if (inheritColor) { - fillColor = inheritColor; - } else { - fillColor = null; - } - } - if (strokeColor === "inherit" || strokeColor === "auto") { - if (true) { - if (strokeColor === "auto") { - deprecateReplaceLog2("color: 'auto'", "color: 'inherit'"); - } - } - if (inheritColor) { - strokeColor = inheritColor; - } else { - strokeColor = null; - } - } - if (!isAttached) { - fillColor = fillColor || globalTextStyle.color; - strokeColor = strokeColor || globalTextStyle.textBorderColor; - } - if (fillColor != null) { - textStyle.fill = fillColor; - } - if (strokeColor != null) { - textStyle.stroke = strokeColor; - } - var textBorderWidth = retrieve22(textStyleModel.getShallow("textBorderWidth"), globalTextStyle.textBorderWidth); - if (textBorderWidth != null) { - textStyle.lineWidth = textBorderWidth; - } - var textBorderType = retrieve22(textStyleModel.getShallow("textBorderType"), globalTextStyle.textBorderType); - if (textBorderType != null) { - textStyle.lineDash = textBorderType; - } - var textBorderDashOffset = retrieve22(textStyleModel.getShallow("textBorderDashOffset"), globalTextStyle.textBorderDashOffset); - if (textBorderDashOffset != null) { - textStyle.lineDashOffset = textBorderDashOffset; - } - if (!isNotNormal && opacity == null && !inRich) { - opacity = opt && opt.defaultOpacity; - } - if (opacity != null) { - textStyle.opacity = opacity; - } - if (!isNotNormal && !isAttached) { - if (textStyle.fill == null && opt.inheritColor) { - textStyle.fill = opt.inheritColor; - } - } - for (var i2 = 0; i2 < TEXT_PROPS_WITH_GLOBAL2.length; i2++) { - var key = TEXT_PROPS_WITH_GLOBAL2[i2]; - var val = retrieve22(textStyleModel.getShallow(key), globalTextStyle[key]); - if (val != null) { - textStyle[key] = val; - } - } - for (var i2 = 0; i2 < TEXT_PROPS_SELF2.length; i2++) { - var key = TEXT_PROPS_SELF2[i2]; - var val = textStyleModel.getShallow(key); - if (val != null) { - textStyle[key] = val; - } - } - if (textStyle.verticalAlign == null) { - var baseline = textStyleModel.getShallow("baseline"); - if (baseline != null) { - textStyle.verticalAlign = baseline; - } - } - if (!isBlock || !opt.disableBox) { - for (var i2 = 0; i2 < TEXT_PROPS_BOX2.length; i2++) { - var key = TEXT_PROPS_BOX2[i2]; - var val = textStyleModel.getShallow(key); - if (val != null) { - textStyle[key] = val; - } - } - var borderType = textStyleModel.getShallow("borderType"); - if (borderType != null) { - textStyle.borderDash = borderType; - } - if ((textStyle.backgroundColor === "auto" || textStyle.backgroundColor === "inherit") && inheritColor) { - if (true) { - if (textStyle.backgroundColor === "auto") { - deprecateReplaceLog2("backgroundColor: 'auto'", "backgroundColor: 'inherit'"); - } - } - textStyle.backgroundColor = inheritColor; - } - if ((textStyle.borderColor === "auto" || textStyle.borderColor === "inherit") && inheritColor) { - if (true) { - if (textStyle.borderColor === "auto") { - deprecateReplaceLog2("borderColor: 'auto'", "borderColor: 'inherit'"); - } - } - textStyle.borderColor = inheritColor; - } - } - } - function getFont2(opt, ecModel) { - var gTextStyleModel = ecModel && ecModel.getModel("textStyle"); - return trim3([ - // FIXME in node-canvas fontWeight is before fontStyle - opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow("fontStyle") || "", - opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow("fontWeight") || "", - (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow("fontSize") || 12) + "px", - opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow("fontFamily") || "sans-serif" - ].join(" ")); - } - var labelInner2 = makeInner2(); - function setLabelValueAnimation2(label, labelStatesModels, value, getDefaultText) { - if (!label) { - return; - } - var obj = labelInner2(label); - obj.prevValue = obj.value; - obj.value = value; - var normalLabelModel = labelStatesModels.normal; - obj.valueAnimation = normalLabelModel.get("valueAnimation"); - if (obj.valueAnimation) { - obj.precision = normalLabelModel.get("precision"); - obj.defaultInterpolatedText = getDefaultText; - obj.statesModels = labelStatesModels; - } - } - function animateLabelValue2(textEl, dataIndex, data, animatableModel, labelFetcher) { - var labelInnerStore = labelInner2(textEl); - if (!labelInnerStore.valueAnimation || labelInnerStore.prevValue === labelInnerStore.value) { - return; - } - var defaultInterpolatedText = labelInnerStore.defaultInterpolatedText; - var currValue = retrieve22(labelInnerStore.interpolatedValue, labelInnerStore.prevValue); - var targetValue = labelInnerStore.value; - function during(percent) { - var interpolated = interpolateRawValues2(data, labelInnerStore.precision, currValue, targetValue, percent); - labelInnerStore.interpolatedValue = percent === 1 ? null : interpolated; - var labelText = getLabelText2({ - labelDataIndex: dataIndex, - labelFetcher, - defaultText: defaultInterpolatedText ? defaultInterpolatedText(interpolated) : interpolated + "" - }, labelInnerStore.statesModels, interpolated); - setLabelText2(textEl, labelText); - } - textEl.percent = 0; - (labelInnerStore.prevValue == null ? initProps2 : updateProps3)(textEl, { - // percent is used to prevent animation from being aborted #15916 - percent: 1 - }, animatableModel, dataIndex, null, during); - } - var PATH_COLOR2 = ["textStyle", "color"]; - var textStyleParams2 = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "padding", "lineHeight", "rich", "width", "height", "overflow"]; - var tmpText2 = new ZRText2(); - var TextStyleMixin2 = ( - /** @class */ - function() { - function TextStyleMixin3() { - } - TextStyleMixin3.prototype.getTextColor = function(isEmphasis) { - var ecModel = this.ecModel; - return this.getShallow("color") || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR2) : null); - }; - TextStyleMixin3.prototype.getFont = function() { - return getFont2({ - fontStyle: this.getShallow("fontStyle"), - fontWeight: this.getShallow("fontWeight"), - fontSize: this.getShallow("fontSize"), - fontFamily: this.getShallow("fontFamily") - }, this.ecModel); - }; - TextStyleMixin3.prototype.getTextRect = function(text) { - var style = { - text, - verticalAlign: this.getShallow("verticalAlign") || this.getShallow("baseline") - }; - for (var i2 = 0; i2 < textStyleParams2.length; i2++) { - style[textStyleParams2[i2]] = this.getShallow(textStyleParams2[i2]); - } - tmpText2.useStyle(style); - tmpText2.update(); - return tmpText2.getBoundingRect(); - }; - return TextStyleMixin3; - }() - ); - var LINE_STYLE_KEY_MAP2 = [ - ["lineWidth", "width"], - ["stroke", "color"], - ["opacity"], - ["shadowBlur"], - ["shadowOffsetX"], - ["shadowOffsetY"], - ["shadowColor"], - ["lineDash", "type"], - ["lineDashOffset", "dashOffset"], - ["lineCap", "cap"], - ["lineJoin", "join"], - ["miterLimit"] - // Option decal is in `DecalObject` but style.decal is in `PatternObject`. - // So do not transfer decal directly. - ]; - var getLineStyle2 = makeStyleMapper2(LINE_STYLE_KEY_MAP2); - var LineStyleMixin2 = ( - /** @class */ - function() { - function LineStyleMixin3() { - } - LineStyleMixin3.prototype.getLineStyle = function(excludes) { - return getLineStyle2(this, excludes); - }; - return LineStyleMixin3; - }() - ); - var ITEM_STYLE_KEY_MAP2 = [ - ["fill", "color"], - ["stroke", "borderColor"], - ["lineWidth", "borderWidth"], - ["opacity"], - ["shadowBlur"], - ["shadowOffsetX"], - ["shadowOffsetY"], - ["shadowColor"], - ["lineDash", "borderType"], - ["lineDashOffset", "borderDashOffset"], - ["lineCap", "borderCap"], - ["lineJoin", "borderJoin"], - ["miterLimit", "borderMiterLimit"] - // Option decal is in `DecalObject` but style.decal is in `PatternObject`. - // So do not transfer decal directly. - ]; - var getItemStyle2 = makeStyleMapper2(ITEM_STYLE_KEY_MAP2); - var ItemStyleMixin2 = ( - /** @class */ - function() { - function ItemStyleMixin3() { - } - ItemStyleMixin3.prototype.getItemStyle = function(excludes, includes) { - return getItemStyle2(this, excludes, includes); - }; - return ItemStyleMixin3; - }() - ); - var Model2 = ( - /** @class */ - function() { - function Model3(option, parentModel, ecModel) { - this.parentModel = parentModel; - this.ecModel = ecModel; - this.option = option; - } - Model3.prototype.init = function(option, parentModel, ecModel) { - var rest = []; - for (var _i = 3; _i < arguments.length; _i++) { - rest[_i - 3] = arguments[_i]; - } - }; - Model3.prototype.mergeOption = function(option, ecModel) { - merge2(this.option, option, true); - }; - Model3.prototype.get = function(path, ignoreParent) { - if (path == null) { - return this.option; - } - return this._doGet(this.parsePath(path), !ignoreParent && this.parentModel); - }; - Model3.prototype.getShallow = function(key, ignoreParent) { - var option = this.option; - var val = option == null ? option : option[key]; - if (val == null && !ignoreParent) { - var parentModel = this.parentModel; - if (parentModel) { - val = parentModel.getShallow(key); - } - } - return val; - }; - Model3.prototype.getModel = function(path, parentModel) { - var hasPath = path != null; - var pathFinal = hasPath ? this.parsePath(path) : null; - var obj = hasPath ? this._doGet(pathFinal) : this.option; - parentModel = parentModel || this.parentModel && this.parentModel.getModel(this.resolveParentPath(pathFinal)); - return new Model3(obj, parentModel, this.ecModel); - }; - Model3.prototype.isEmpty = function() { - return this.option == null; - }; - Model3.prototype.restoreData = function() { - }; - Model3.prototype.clone = function() { - var Ctor = this.constructor; - return new Ctor(clone6(this.option)); - }; - Model3.prototype.parsePath = function(path) { - if (typeof path === "string") { - return path.split("."); - } - return path; - }; - Model3.prototype.resolveParentPath = function(path) { - return path; - }; - Model3.prototype.isAnimationEnabled = function() { - if (!env2.node && this.option) { - if (this.option.animation != null) { - return !!this.option.animation; - } else if (this.parentModel) { - return this.parentModel.isAnimationEnabled(); - } - } - }; - Model3.prototype._doGet = function(pathArr, parentModel) { - var obj = this.option; - if (!pathArr) { - return obj; - } - for (var i2 = 0; i2 < pathArr.length; i2++) { - if (!pathArr[i2]) { - continue; - } - obj = obj && typeof obj === "object" ? obj[pathArr[i2]] : null; - if (obj == null) { - break; - } - } - if (obj == null && parentModel) { - obj = parentModel._doGet(this.resolveParentPath(pathArr), parentModel.parentModel); - } - return obj; - }; - return Model3; - }() - ); - enableClassExtend2(Model2); - enableClassCheck2(Model2); - mixin2(Model2, LineStyleMixin2); - mixin2(Model2, ItemStyleMixin2); - mixin2(Model2, AreaStyleMixin2); - mixin2(Model2, TextStyleMixin2); - var base2 = Math.round(Math.random() * 10); - function getUID2(type) { - return [type || "", base2++].join("_"); - } - function enableSubTypeDefaulter2(target) { - var subTypeDefaulters = {}; - target.registerSubTypeDefaulter = function(componentType, defaulter) { - var componentTypeInfo = parseClassType2(componentType); - subTypeDefaulters[componentTypeInfo.main] = defaulter; - }; - target.determineSubType = function(componentType, option) { - var type = option.type; - if (!type) { - var componentTypeMain = parseClassType2(componentType).main; - if (target.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) { - type = subTypeDefaulters[componentTypeMain](option); - } - } - return type; - }; - } - function enableTopologicalTravel2(entity, dependencyGetter) { - entity.topologicalTravel = function(targetNameList, fullNameList, callback, context) { - if (!targetNameList.length) { - return; - } - var result = makeDepndencyGraph(fullNameList); - var graph = result.graph; - var noEntryList = result.noEntryList; - var targetNameSet = {}; - each17(targetNameList, function(name) { - targetNameSet[name] = true; - }); - while (noEntryList.length) { - var currComponentType = noEntryList.pop(); - var currVertex = graph[currComponentType]; - var isInTargetNameSet = !!targetNameSet[currComponentType]; - if (isInTargetNameSet) { - callback.call(context, currComponentType, currVertex.originalDeps.slice()); - delete targetNameSet[currComponentType]; - } - each17(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge); - } - each17(targetNameSet, function() { - var errMsg = ""; - if (true) { - errMsg = makePrintable2("Circular dependency may exists: ", targetNameSet, targetNameList, fullNameList); - } - throw new Error(errMsg); - }); - function removeEdge(succComponentType) { - graph[succComponentType].entryCount--; - if (graph[succComponentType].entryCount === 0) { - noEntryList.push(succComponentType); - } - } - function removeEdgeAndAdd(succComponentType) { - targetNameSet[succComponentType] = true; - removeEdge(succComponentType); - } - }; - function makeDepndencyGraph(fullNameList) { - var graph = {}; - var noEntryList = []; - each17(fullNameList, function(name) { - var thisItem = createDependencyGraphItem(graph, name); - var originalDeps = thisItem.originalDeps = dependencyGetter(name); - var availableDeps = getAvailableDependencies(originalDeps, fullNameList); - thisItem.entryCount = availableDeps.length; - if (thisItem.entryCount === 0) { - noEntryList.push(name); - } - each17(availableDeps, function(dependentName) { - if (indexOf2(thisItem.predecessor, dependentName) < 0) { - thisItem.predecessor.push(dependentName); - } - var thatItem = createDependencyGraphItem(graph, dependentName); - if (indexOf2(thatItem.successor, dependentName) < 0) { - thatItem.successor.push(name); - } - }); - }); - return { - graph, - noEntryList - }; - } - function createDependencyGraphItem(graph, name) { - if (!graph[name]) { - graph[name] = { - predecessor: [], - successor: [] - }; - } - return graph[name]; - } - function getAvailableDependencies(originalDeps, fullNameList) { - var availableDeps = []; - each17(originalDeps, function(dep) { - indexOf2(fullNameList, dep) >= 0 && availableDeps.push(dep); - }); - return availableDeps; - } - } - function inheritDefaultOption2(superOption, subOption) { - return merge2(merge2({}, superOption, true), subOption, true); - } - var langEN = { - time: { - month: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - monthAbbr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - dayOfWeekAbbr: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] - }, - legend: { - selector: { - all: "All", - inverse: "Inv" - } - }, - toolbox: { - brush: { - title: { - rect: "Box Select", - polygon: "Lasso Select", - lineX: "Horizontally Select", - lineY: "Vertically Select", - keep: "Keep Selections", - clear: "Clear Selections" - } - }, - dataView: { - title: "Data View", - lang: ["Data View", "Close", "Refresh"] - }, - dataZoom: { - title: { - zoom: "Zoom", - back: "Zoom Reset" - } - }, - magicType: { - title: { - line: "Switch to Line Chart", - bar: "Switch to Bar Chart", - stack: "Stack", - tiled: "Tile" - } - }, - restore: { - title: "Restore" - }, - saveAsImage: { - title: "Save as Image", - lang: ["Right Click to Save Image"] - } - }, - series: { - typeNames: { - pie: "Pie chart", - bar: "Bar chart", - line: "Line chart", - scatter: "Scatter plot", - effectScatter: "Ripple scatter plot", - radar: "Radar chart", - tree: "Tree", - treemap: "Treemap", - boxplot: "Boxplot", - candlestick: "Candlestick", - k: "K line chart", - heatmap: "Heat map", - map: "Map", - parallel: "Parallel coordinate map", - lines: "Line graph", - graph: "Relationship graph", - sankey: "Sankey diagram", - funnel: "Funnel chart", - gauge: "Gauge", - pictorialBar: "Pictorial bar", - themeRiver: "Theme River Map", - sunburst: "Sunburst", - custom: "Custom chart", - chart: "Chart" - } - }, - aria: { - general: { - withTitle: 'This is a chart about "{title}"', - withoutTitle: "This is a chart" - }, - series: { - single: { - prefix: "", - withName: " with type {seriesType} named {seriesName}.", - withoutName: " with type {seriesType}." - }, - multiple: { - prefix: ". It consists of {seriesCount} series count.", - withName: " The {seriesId} series is a {seriesType} representing {seriesName}.", - withoutName: " The {seriesId} series is a {seriesType}.", - separator: { - middle: "", - end: "" - } - } - }, - data: { - allData: "The data is as follows: ", - partialData: "The first {displayCnt} items are: ", - withName: "the data for {name} is {value}", - withoutName: "{value}", - separator: { - middle: ", ", - end: ". " - } - } - } - }; - var langZH = { - time: { - month: ["\u4E00\u6708", "\u4E8C\u6708", "\u4E09\u6708", "\u56DB\u6708", "\u4E94\u6708", "\u516D\u6708", "\u4E03\u6708", "\u516B\u6708", "\u4E5D\u6708", "\u5341\u6708", "\u5341\u4E00\u6708", "\u5341\u4E8C\u6708"], - monthAbbr: ["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], - dayOfWeek: ["\u661F\u671F\u65E5", "\u661F\u671F\u4E00", "\u661F\u671F\u4E8C", "\u661F\u671F\u4E09", "\u661F\u671F\u56DB", "\u661F\u671F\u4E94", "\u661F\u671F\u516D"], - dayOfWeekAbbr: ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"] - }, - legend: { - selector: { - all: "\u5168\u9009", - inverse: "\u53CD\u9009" - } - }, - toolbox: { - brush: { - title: { - rect: "\u77E9\u5F62\u9009\u62E9", - polygon: "\u5708\u9009", - lineX: "\u6A2A\u5411\u9009\u62E9", - lineY: "\u7EB5\u5411\u9009\u62E9", - keep: "\u4FDD\u6301\u9009\u62E9", - clear: "\u6E05\u9664\u9009\u62E9" - } - }, - dataView: { - title: "\u6570\u636E\u89C6\u56FE", - lang: ["\u6570\u636E\u89C6\u56FE", "\u5173\u95ED", "\u5237\u65B0"] - }, - dataZoom: { - title: { - zoom: "\u533A\u57DF\u7F29\u653E", - back: "\u533A\u57DF\u7F29\u653E\u8FD8\u539F" - } - }, - magicType: { - title: { - line: "\u5207\u6362\u4E3A\u6298\u7EBF\u56FE", - bar: "\u5207\u6362\u4E3A\u67F1\u72B6\u56FE", - stack: "\u5207\u6362\u4E3A\u5806\u53E0", - tiled: "\u5207\u6362\u4E3A\u5E73\u94FA" - } - }, - restore: { - title: "\u8FD8\u539F" - }, - saveAsImage: { - title: "\u4FDD\u5B58\u4E3A\u56FE\u7247", - lang: ["\u53F3\u952E\u53E6\u5B58\u4E3A\u56FE\u7247"] - } - }, - series: { - typeNames: { - pie: "\u997C\u56FE", - bar: "\u67F1\u72B6\u56FE", - line: "\u6298\u7EBF\u56FE", - scatter: "\u6563\u70B9\u56FE", - effectScatter: "\u6D9F\u6F2A\u6563\u70B9\u56FE", - radar: "\u96F7\u8FBE\u56FE", - tree: "\u6811\u56FE", - treemap: "\u77E9\u5F62\u6811\u56FE", - boxplot: "\u7BB1\u578B\u56FE", - candlestick: "K\u7EBF\u56FE", - k: "K\u7EBF\u56FE", - heatmap: "\u70ED\u529B\u56FE", - map: "\u5730\u56FE", - parallel: "\u5E73\u884C\u5750\u6807\u56FE", - lines: "\u7EBF\u56FE", - graph: "\u5173\u7CFB\u56FE", - sankey: "\u6851\u57FA\u56FE", - funnel: "\u6F0F\u6597\u56FE", - gauge: "\u4EEA\u8868\u76D8\u56FE", - pictorialBar: "\u8C61\u5F62\u67F1\u56FE", - themeRiver: "\u4E3B\u9898\u6CB3\u6D41\u56FE", - sunburst: "\u65ED\u65E5\u56FE", - custom: "\u81EA\u5B9A\u4E49\u56FE\u8868", - chart: "\u56FE\u8868" - } - }, - aria: { - general: { - withTitle: "\u8FD9\u662F\u4E00\u4E2A\u5173\u4E8E\u201C{title}\u201D\u7684\u56FE\u8868\u3002", - withoutTitle: "\u8FD9\u662F\u4E00\u4E2A\u56FE\u8868\uFF0C" - }, - series: { - single: { - prefix: "", - withName: "\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\uFF0C\u8868\u793A{seriesName}\u3002", - withoutName: "\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\u3002" - }, - multiple: { - prefix: "\u5B83\u7531{seriesCount}\u4E2A\u56FE\u8868\u7CFB\u5217\u7EC4\u6210\u3002", - withName: "\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A\u8868\u793A{seriesName}\u7684{seriesType}\uFF0C", - withoutName: "\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A{seriesType}\uFF0C", - separator: { - middle: "\uFF1B", - end: "\u3002" - } - } - }, - data: { - allData: "\u5176\u6570\u636E\u662F\u2014\u2014", - partialData: "\u5176\u4E2D\uFF0C\u524D{displayCnt}\u9879\u662F\u2014\u2014", - withName: "{name}\u7684\u6570\u636E\u662F{value}", - withoutName: "{value}", - separator: { - middle: "\uFF0C", - end: "" - } - } - } - }; - var LOCALE_ZH2 = "ZH"; - var LOCALE_EN2 = "EN"; - var DEFAULT_LOCALE2 = LOCALE_EN2; - var localeStorage2 = {}; - var localeModels2 = {}; - var SYSTEM_LANG2 = !env2.domSupported ? DEFAULT_LOCALE2 : function() { - var langStr = ( - /* eslint-disable-next-line */ - (document.documentElement.lang || navigator.language || navigator.browserLanguage || DEFAULT_LOCALE2).toUpperCase() - ); - return langStr.indexOf(LOCALE_ZH2) > -1 ? LOCALE_ZH2 : DEFAULT_LOCALE2; - }(); - function registerLocale2(locale, localeObj) { - locale = locale.toUpperCase(); - localeModels2[locale] = new Model2(localeObj); - localeStorage2[locale] = localeObj; - } - function createLocaleObject2(locale) { - if (isString2(locale)) { - var localeObj = localeStorage2[locale.toUpperCase()] || {}; - if (locale === LOCALE_ZH2 || locale === LOCALE_EN2) { - return clone6(localeObj); - } else { - return merge2(clone6(localeObj), clone6(localeStorage2[DEFAULT_LOCALE2]), false); - } - } else { - return merge2(clone6(locale), clone6(localeStorage2[DEFAULT_LOCALE2]), false); - } - } - function getLocaleModel2(lang) { - return localeModels2[lang]; - } - function getDefaultLocaleModel2() { - return localeModels2[DEFAULT_LOCALE2]; - } - registerLocale2(LOCALE_EN2, langEN); - registerLocale2(LOCALE_ZH2, langZH); - var ONE_SECOND2 = 1e3; - var ONE_MINUTE2 = ONE_SECOND2 * 60; - var ONE_HOUR2 = ONE_MINUTE2 * 60; - var ONE_DAY2 = ONE_HOUR2 * 24; - var ONE_YEAR2 = ONE_DAY2 * 365; - var defaultLeveledFormatter2 = { - year: "{yyyy}", - month: "{MMM}", - day: "{d}", - hour: "{HH}:{mm}", - minute: "{HH}:{mm}", - second: "{HH}:{mm}:{ss}", - millisecond: "{HH}:{mm}:{ss} {SSS}", - none: "{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}" - }; - var fullDayFormatter2 = "{yyyy}-{MM}-{dd}"; - var fullLeveledFormatter2 = { - year: "{yyyy}", - month: "{yyyy}-{MM}", - day: fullDayFormatter2, - hour: fullDayFormatter2 + " " + defaultLeveledFormatter2.hour, - minute: fullDayFormatter2 + " " + defaultLeveledFormatter2.minute, - second: fullDayFormatter2 + " " + defaultLeveledFormatter2.second, - millisecond: defaultLeveledFormatter2.none - }; - var primaryTimeUnits2 = ["year", "month", "day", "hour", "minute", "second", "millisecond"]; - var timeUnits2 = ["year", "half-year", "quarter", "month", "week", "half-week", "day", "half-day", "quarter-day", "hour", "minute", "second", "millisecond"]; - function pad2(str, len3) { - str += ""; - return "0000".substr(0, len3 - str.length) + str; - } - function getPrimaryTimeUnit2(timeUnit) { - switch (timeUnit) { - case "half-year": - case "quarter": - return "month"; - case "week": - case "half-week": - return "day"; - case "half-day": - case "quarter-day": - return "hour"; - default: - return timeUnit; - } - } - function isPrimaryTimeUnit2(timeUnit) { - return timeUnit === getPrimaryTimeUnit2(timeUnit); - } - function getDefaultFormatPrecisionOfInterval2(timeUnit) { - switch (timeUnit) { - case "year": - case "month": - return "day"; - case "millisecond": - return "millisecond"; - default: - return "second"; - } - } - function format2(time2, template, isUTC, lang) { - var date = parseDate2(time2); - var y = date[fullYearGetterName2(isUTC)](); - var M = date[monthGetterName2(isUTC)]() + 1; - var q = Math.floor((M - 1) / 3) + 1; - var d = date[dateGetterName2(isUTC)](); - var e3 = date["get" + (isUTC ? "UTC" : "") + "Day"](); - var H = date[hoursGetterName2(isUTC)](); - var h = (H - 1) % 12 + 1; - var m3 = date[minutesGetterName2(isUTC)](); - var s = date[secondsGetterName2(isUTC)](); - var S = date[millisecondsGetterName2(isUTC)](); - var a = H >= 12 ? "pm" : "am"; - var A = a.toUpperCase(); - var localeModel = lang instanceof Model2 ? lang : getLocaleModel2(lang || SYSTEM_LANG2) || getDefaultLocaleModel2(); - var timeModel = localeModel.getModel("time"); - var month = timeModel.get("month"); - var monthAbbr = timeModel.get("monthAbbr"); - var dayOfWeek = timeModel.get("dayOfWeek"); - var dayOfWeekAbbr = timeModel.get("dayOfWeekAbbr"); - return (template || "").replace(/{a}/g, a + "").replace(/{A}/g, A + "").replace(/{yyyy}/g, y + "").replace(/{yy}/g, pad2(y % 100 + "", 2)).replace(/{Q}/g, q + "").replace(/{MMMM}/g, month[M - 1]).replace(/{MMM}/g, monthAbbr[M - 1]).replace(/{MM}/g, pad2(M, 2)).replace(/{M}/g, M + "").replace(/{dd}/g, pad2(d, 2)).replace(/{d}/g, d + "").replace(/{eeee}/g, dayOfWeek[e3]).replace(/{ee}/g, dayOfWeekAbbr[e3]).replace(/{e}/g, e3 + "").replace(/{HH}/g, pad2(H, 2)).replace(/{H}/g, H + "").replace(/{hh}/g, pad2(h + "", 2)).replace(/{h}/g, h + "").replace(/{mm}/g, pad2(m3, 2)).replace(/{m}/g, m3 + "").replace(/{ss}/g, pad2(s, 2)).replace(/{s}/g, s + "").replace(/{SSS}/g, pad2(S, 3)).replace(/{S}/g, S + ""); - } - function leveledFormat2(tick, idx, formatter, lang, isUTC) { - var template = null; - if (isString2(formatter)) { - template = formatter; - } else if (isFunction2(formatter)) { - template = formatter(tick.value, idx, { - level: tick.level - }); - } else { - var defaults$1 = extend3({}, defaultLeveledFormatter2); - if (tick.level > 0) { - for (var i2 = 0; i2 < primaryTimeUnits2.length; ++i2) { - defaults$1[primaryTimeUnits2[i2]] = "{primary|" + defaults$1[primaryTimeUnits2[i2]] + "}"; - } - } - var mergedFormatter = formatter ? formatter.inherit === false ? formatter : defaults2(formatter, defaults$1) : defaults$1; - var unit = getUnitFromValue2(tick.value, isUTC); - if (mergedFormatter[unit]) { - template = mergedFormatter[unit]; - } else if (mergedFormatter.inherit) { - var targetId = timeUnits2.indexOf(unit); - for (var i2 = targetId - 1; i2 >= 0; --i2) { - if (mergedFormatter[unit]) { - template = mergedFormatter[unit]; - break; - } - } - template = template || defaults$1.none; - } - if (isArray3(template)) { - var levelId = tick.level == null ? 0 : tick.level >= 0 ? tick.level : template.length + tick.level; - levelId = Math.min(levelId, template.length - 1); - template = template[levelId]; - } - } - return format2(new Date(tick.value), template, isUTC, lang); - } - function getUnitFromValue2(value, isUTC) { - var date = parseDate2(value); - var M = date[monthGetterName2(isUTC)]() + 1; - var d = date[dateGetterName2(isUTC)](); - var h = date[hoursGetterName2(isUTC)](); - var m3 = date[minutesGetterName2(isUTC)](); - var s = date[secondsGetterName2(isUTC)](); - var S = date[millisecondsGetterName2(isUTC)](); - var isSecond = S === 0; - var isMinute = isSecond && s === 0; - var isHour = isMinute && m3 === 0; - var isDay = isHour && h === 0; - var isMonth = isDay && d === 1; - var isYear = isMonth && M === 1; - if (isYear) { - return "year"; - } else if (isMonth) { - return "month"; - } else if (isDay) { - return "day"; - } else if (isHour) { - return "hour"; - } else if (isMinute) { - return "minute"; - } else if (isSecond) { - return "second"; - } else { - return "millisecond"; - } - } - function getUnitValue2(value, unit, isUTC) { - var date = isNumber2(value) ? parseDate2(value) : value; - unit = unit || getUnitFromValue2(value, isUTC); - switch (unit) { - case "year": - return date[fullYearGetterName2(isUTC)](); - case "half-year": - return date[monthGetterName2(isUTC)]() >= 6 ? 1 : 0; - case "quarter": - return Math.floor((date[monthGetterName2(isUTC)]() + 1) / 4); - case "month": - return date[monthGetterName2(isUTC)](); - case "day": - return date[dateGetterName2(isUTC)](); - case "half-day": - return date[hoursGetterName2(isUTC)]() / 24; - case "hour": - return date[hoursGetterName2(isUTC)](); - case "minute": - return date[minutesGetterName2(isUTC)](); - case "second": - return date[secondsGetterName2(isUTC)](); - case "millisecond": - return date[millisecondsGetterName2(isUTC)](); - } - } - function fullYearGetterName2(isUTC) { - return isUTC ? "getUTCFullYear" : "getFullYear"; - } - function monthGetterName2(isUTC) { - return isUTC ? "getUTCMonth" : "getMonth"; - } - function dateGetterName2(isUTC) { - return isUTC ? "getUTCDate" : "getDate"; - } - function hoursGetterName2(isUTC) { - return isUTC ? "getUTCHours" : "getHours"; - } - function minutesGetterName2(isUTC) { - return isUTC ? "getUTCMinutes" : "getMinutes"; - } - function secondsGetterName2(isUTC) { - return isUTC ? "getUTCSeconds" : "getSeconds"; - } - function millisecondsGetterName2(isUTC) { - return isUTC ? "getUTCMilliseconds" : "getMilliseconds"; - } - function fullYearSetterName2(isUTC) { - return isUTC ? "setUTCFullYear" : "setFullYear"; - } - function monthSetterName2(isUTC) { - return isUTC ? "setUTCMonth" : "setMonth"; - } - function dateSetterName2(isUTC) { - return isUTC ? "setUTCDate" : "setDate"; - } - function hoursSetterName2(isUTC) { - return isUTC ? "setUTCHours" : "setHours"; - } - function minutesSetterName2(isUTC) { - return isUTC ? "setUTCMinutes" : "setMinutes"; - } - function secondsSetterName2(isUTC) { - return isUTC ? "setUTCSeconds" : "setSeconds"; - } - function millisecondsSetterName2(isUTC) { - return isUTC ? "setUTCMilliseconds" : "setMilliseconds"; - } - function getTextRect2(text, font, align, verticalAlign, padding, rich, truncate, lineHeight) { - var textEl = new ZRText2({ - style: { - text, - font, - align, - verticalAlign, - padding, - rich, - overflow: truncate ? "truncate" : null, - lineHeight - } - }); - return textEl.getBoundingRect(); - } - function addCommas2(x) { - if (!isNumeric2(x)) { - return isString2(x) ? x : "-"; - } - var parts = (x + "").split("."); - return parts[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (parts.length > 1 ? "." + parts[1] : ""); - } - function toCamelCase2(str, upperCaseFirst) { - str = (str || "").toLowerCase().replace(/-(.)/g, function(match, group1) { - return group1.toUpperCase(); - }); - if (upperCaseFirst && str) { - str = str.charAt(0).toUpperCase() + str.slice(1); - } - return str; - } - var normalizeCssArray$1 = normalizeCssArray3; - function makeValueReadable2(value, valueType, useUTC) { - var USER_READABLE_DEFUALT_TIME_PATTERN = "{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}"; - function stringToUserReadable(str) { - return str && trim3(str) ? str : "-"; - } - function isNumberUserReadable(num) { - return !!(num != null && !isNaN(num) && isFinite(num)); - } - var isTypeTime = valueType === "time"; - var isValueDate = value instanceof Date; - if (isTypeTime || isValueDate) { - var date = isTypeTime ? parseDate2(value) : value; - if (!isNaN(+date)) { - return format2(date, USER_READABLE_DEFUALT_TIME_PATTERN, useUTC); - } else if (isValueDate) { - return "-"; - } - } - if (valueType === "ordinal") { - return isStringSafe2(value) ? stringToUserReadable(value) : isNumber2(value) ? isNumberUserReadable(value) ? value + "" : "-" : "-"; - } - var numericResult = numericToNumber2(value); - return isNumberUserReadable(numericResult) ? addCommas2(numericResult) : isStringSafe2(value) ? stringToUserReadable(value) : typeof value === "boolean" ? value + "" : "-"; - } - var TPL_VAR_ALIAS2 = ["a", "b", "c", "d", "e", "f", "g"]; - var wrapVar2 = function(varName, seriesIdx) { - return "{" + varName + (seriesIdx == null ? "" : seriesIdx) + "}"; - }; - function formatTpl2(tpl, paramsList, encode) { - if (!isArray3(paramsList)) { - paramsList = [paramsList]; - } - var seriesLen = paramsList.length; - if (!seriesLen) { - return ""; - } - var $vars = paramsList[0].$vars || []; - for (var i2 = 0; i2 < $vars.length; i2++) { - var alias = TPL_VAR_ALIAS2[i2]; - tpl = tpl.replace(wrapVar2(alias), wrapVar2(alias, 0)); - } - for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) { - for (var k2 = 0; k2 < $vars.length; k2++) { - var val = paramsList[seriesIdx][$vars[k2]]; - tpl = tpl.replace(wrapVar2(TPL_VAR_ALIAS2[k2], seriesIdx), encode ? encodeHTML2(val) : val); - } - } - return tpl; - } - function formatTplSimple2(tpl, param, encode) { - each17(param, function(value, key) { - tpl = tpl.replace("{" + key + "}", encode ? encodeHTML2(value) : value); - }); - return tpl; - } - function getTooltipMarker2(inOpt, extraCssText) { - var opt = isString2(inOpt) ? { - color: inOpt, - extraCssText - } : inOpt || {}; - var color2 = opt.color; - var type = opt.type; - extraCssText = opt.extraCssText; - var renderMode = opt.renderMode || "html"; - if (!color2) { - return ""; - } - if (renderMode === "html") { - return type === "subItem" ? '' : ''; - } else { - var markerId = opt.markerId || "markerX"; - return { - renderMode, - content: "{" + markerId + "|} ", - style: type === "subItem" ? { - width: 4, - height: 4, - borderRadius: 2, - backgroundColor: color2 - } : { - width: 10, - height: 10, - borderRadius: 5, - backgroundColor: color2 - } - }; - } - } - function formatTime2(tpl, value, isUTC) { - if (true) { - deprecateReplaceLog2("echarts.format.formatTime", "echarts.time.format"); - } - if (tpl === "week" || tpl === "month" || tpl === "quarter" || tpl === "half-year" || tpl === "year") { - tpl = "MM-dd\nyyyy"; - } - var date = parseDate2(value); - var getUTC = isUTC ? "getUTC" : "get"; - var y = date[getUTC + "FullYear"](); - var M = date[getUTC + "Month"]() + 1; - var d = date[getUTC + "Date"](); - var h = date[getUTC + "Hours"](); - var m3 = date[getUTC + "Minutes"](); - var s = date[getUTC + "Seconds"](); - var S = date[getUTC + "Milliseconds"](); - tpl = tpl.replace("MM", pad2(M, 2)).replace("M", M).replace("yyyy", y).replace("yy", pad2(y % 100 + "", 2)).replace("dd", pad2(d, 2)).replace("d", d).replace("hh", pad2(h, 2)).replace("h", h).replace("mm", pad2(m3, 2)).replace("m", m3).replace("ss", pad2(s, 2)).replace("s", s).replace("SSS", pad2(S, 3)); - return tpl; - } - function capitalFirst2(str) { - return str ? str.charAt(0).toUpperCase() + str.substr(1) : str; - } - function convertToColorString2(color2, defaultColor) { - defaultColor = defaultColor || "transparent"; - return isString2(color2) ? color2 : isObject5(color2) ? color2.colorStops && (color2.colorStops[0] || {}).color || defaultColor : defaultColor; - } - function windowOpen2(link, target) { - if (target === "_blank" || target === "blank") { - var blank = window.open(); - blank.opener = null; - blank.location.href = link; - } else { - window.open(link, target); - } - } - var each$1 = each17; - var LOCATION_PARAMS2 = ["left", "right", "top", "bottom", "width", "height"]; - var HV_NAMES2 = [["width", "left", "right"], ["height", "top", "bottom"]]; - function boxLayout2(orient, group, gap, maxWidth, maxHeight) { - var x = 0; - var y = 0; - if (maxWidth == null) { - maxWidth = Infinity; - } - if (maxHeight == null) { - maxHeight = Infinity; - } - var currentLineMaxSize = 0; - group.eachChild(function(child, idx) { - var rect = child.getBoundingRect(); - var nextChild = group.childAt(idx + 1); - var nextChildRect = nextChild && nextChild.getBoundingRect(); - var nextX; - var nextY; - if (orient === "horizontal") { - var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0); - nextX = x + moveX; - if (nextX > maxWidth || child.newline) { - x = 0; - nextX = moveX; - y += currentLineMaxSize + gap; - currentLineMaxSize = rect.height; - } else { - currentLineMaxSize = Math.max(currentLineMaxSize, rect.height); - } - } else { - var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0); - nextY = y + moveY; - if (nextY > maxHeight || child.newline) { - x += currentLineMaxSize + gap; - y = 0; - nextY = moveY; - currentLineMaxSize = rect.width; - } else { - currentLineMaxSize = Math.max(currentLineMaxSize, rect.width); - } - } - if (child.newline) { - return; - } - child.x = x; - child.y = y; - child.markRedraw(); - orient === "horizontal" ? x = nextX + gap : y = nextY + gap; - }); - } - var box2 = boxLayout2; - var vbox2 = curry3(boxLayout2, "vertical"); - var hbox2 = curry3(boxLayout2, "horizontal"); - function getAvailableSize2(positionInfo, containerRect, margin) { - var containerWidth = containerRect.width; - var containerHeight = containerRect.height; - var x = parsePercent$1(positionInfo.left, containerWidth); - var y = parsePercent$1(positionInfo.top, containerHeight); - var x2 = parsePercent$1(positionInfo.right, containerWidth); - var y2 = parsePercent$1(positionInfo.bottom, containerHeight); - (isNaN(x) || isNaN(parseFloat(positionInfo.left))) && (x = 0); - (isNaN(x2) || isNaN(parseFloat(positionInfo.right))) && (x2 = containerWidth); - (isNaN(y) || isNaN(parseFloat(positionInfo.top))) && (y = 0); - (isNaN(y2) || isNaN(parseFloat(positionInfo.bottom))) && (y2 = containerHeight); - margin = normalizeCssArray$1(margin || 0); - return { - width: Math.max(x2 - x - margin[1] - margin[3], 0), - height: Math.max(y2 - y - margin[0] - margin[2], 0) - }; - } - function getLayoutRect2(positionInfo, containerRect, margin) { - margin = normalizeCssArray$1(margin || 0); - var containerWidth = containerRect.width; - var containerHeight = containerRect.height; - var left = parsePercent$1(positionInfo.left, containerWidth); - var top = parsePercent$1(positionInfo.top, containerHeight); - var right = parsePercent$1(positionInfo.right, containerWidth); - var bottom = parsePercent$1(positionInfo.bottom, containerHeight); - var width = parsePercent$1(positionInfo.width, containerWidth); - var height = parsePercent$1(positionInfo.height, containerHeight); - var verticalMargin = margin[2] + margin[0]; - var horizontalMargin = margin[1] + margin[3]; - var aspect = positionInfo.aspect; - if (isNaN(width)) { - width = containerWidth - right - horizontalMargin - left; - } - if (isNaN(height)) { - height = containerHeight - bottom - verticalMargin - top; - } - if (aspect != null) { - if (isNaN(width) && isNaN(height)) { - if (aspect > containerWidth / containerHeight) { - width = containerWidth * 0.8; - } else { - height = containerHeight * 0.8; - } - } - if (isNaN(width)) { - width = aspect * height; - } - if (isNaN(height)) { - height = width / aspect; - } - } - if (isNaN(left)) { - left = containerWidth - right - width - horizontalMargin; - } - if (isNaN(top)) { - top = containerHeight - bottom - height - verticalMargin; - } - switch (positionInfo.left || positionInfo.right) { - case "center": - left = containerWidth / 2 - width / 2 - margin[3]; - break; - case "right": - left = containerWidth - width - horizontalMargin; - break; - } - switch (positionInfo.top || positionInfo.bottom) { - case "middle": - case "center": - top = containerHeight / 2 - height / 2 - margin[0]; - break; - case "bottom": - top = containerHeight - height - verticalMargin; - break; - } - left = left || 0; - top = top || 0; - if (isNaN(width)) { - width = containerWidth - horizontalMargin - left - (right || 0); - } - if (isNaN(height)) { - height = containerHeight - verticalMargin - top - (bottom || 0); - } - var rect = new BoundingRect2(left + margin[3], top + margin[0], width, height); - rect.margin = margin; - return rect; - } - function positionElement2(el, positionInfo, containerRect, margin, opt, out3) { - var h = !opt || !opt.hv || opt.hv[0]; - var v = !opt || !opt.hv || opt.hv[1]; - var boundingMode = opt && opt.boundingMode || "all"; - out3 = out3 || el; - out3.x = el.x; - out3.y = el.y; - if (!h && !v) { - return false; - } - var rect; - if (boundingMode === "raw") { - rect = el.type === "group" ? new BoundingRect2(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) : el.getBoundingRect(); - } else { - rect = el.getBoundingRect(); - if (el.needLocalTransform()) { - var transform2 = el.getLocalTransform(); - rect = rect.clone(); - rect.applyTransform(transform2); - } - } - var layoutRect = getLayoutRect2(defaults2({ - width: rect.width, - height: rect.height - }, positionInfo), containerRect, margin); - var dx = h ? layoutRect.x - rect.x : 0; - var dy = v ? layoutRect.y - rect.y : 0; - if (boundingMode === "raw") { - out3.x = dx; - out3.y = dy; - } else { - out3.x += dx; - out3.y += dy; - } - if (out3 === el) { - el.markRedraw(); - } - return true; - } - function sizeCalculable2(option, hvIdx) { - return option[HV_NAMES2[hvIdx][0]] != null || option[HV_NAMES2[hvIdx][1]] != null && option[HV_NAMES2[hvIdx][2]] != null; - } - function fetchLayoutMode2(ins) { - var layoutMode = ins.layoutMode || ins.constructor.layoutMode; - return isObject5(layoutMode) ? layoutMode : layoutMode ? { - type: layoutMode - } : null; - } - function mergeLayoutParam2(targetOption, newOption, opt) { - var ignoreSize = opt && opt.ignoreSize; - !isArray3(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]); - var hResult = merge3(HV_NAMES2[0], 0); - var vResult = merge3(HV_NAMES2[1], 1); - copy4(HV_NAMES2[0], targetOption, hResult); - copy4(HV_NAMES2[1], targetOption, vResult); - function merge3(names, hvIdx) { - var newParams = {}; - var newValueCount = 0; - var merged = {}; - var mergedValueCount = 0; - var enoughParamNumber = 2; - each$1(names, function(name) { - merged[name] = targetOption[name]; - }); - each$1(names, function(name) { - hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]); - hasValue(newParams, name) && newValueCount++; - hasValue(merged, name) && mergedValueCount++; - }); - if (ignoreSize[hvIdx]) { - if (hasValue(newOption, names[1])) { - merged[names[2]] = null; - } else if (hasValue(newOption, names[2])) { - merged[names[1]] = null; - } - return merged; - } - if (mergedValueCount === enoughParamNumber || !newValueCount) { - return merged; - } else if (newValueCount >= enoughParamNumber) { - return newParams; - } else { - for (var i2 = 0; i2 < names.length; i2++) { - var name_1 = names[i2]; - if (!hasProp(newParams, name_1) && hasProp(targetOption, name_1)) { - newParams[name_1] = targetOption[name_1]; - break; - } - } - return newParams; - } - } - function hasProp(obj, name) { - return obj.hasOwnProperty(name); - } - function hasValue(obj, name) { - return obj[name] != null && obj[name] !== "auto"; - } - function copy4(names, target, source) { - each$1(names, function(name) { - target[name] = source[name]; - }); - } - } - function getLayoutParams2(source) { - return copyLayoutParams2({}, source); - } - function copyLayoutParams2(target, source) { - source && target && each$1(LOCATION_PARAMS2, function(name) { - source.hasOwnProperty(name) && (target[name] = source[name]); - }); - return target; - } - var inner23 = makeInner2(); - var ComponentModel2 = ( - /** @class */ - function(_super) { - __extends2(ComponentModel3, _super); - function ComponentModel3(option, parentModel, ecModel) { - var _this = _super.call(this, option, parentModel, ecModel) || this; - _this.uid = getUID2("ec_cpt_model"); - return _this; - } - ComponentModel3.prototype.init = function(option, parentModel, ecModel) { - this.mergeDefaultAndTheme(option, ecModel); - }; - ComponentModel3.prototype.mergeDefaultAndTheme = function(option, ecModel) { - var layoutMode = fetchLayoutMode2(this); - var inputPositionParams = layoutMode ? getLayoutParams2(option) : {}; - var themeModel = ecModel.getTheme(); - merge2(option, themeModel.get(this.mainType)); - merge2(option, this.getDefaultOption()); - if (layoutMode) { - mergeLayoutParam2(option, inputPositionParams, layoutMode); - } - }; - ComponentModel3.prototype.mergeOption = function(option, ecModel) { - merge2(this.option, option, true); - var layoutMode = fetchLayoutMode2(this); - if (layoutMode) { - mergeLayoutParam2(this.option, option, layoutMode); - } - }; - ComponentModel3.prototype.optionUpdated = function(newCptOption, isInit) { - }; - ComponentModel3.prototype.getDefaultOption = function() { - var ctor = this.constructor; - if (!isExtendedClass2(ctor)) { - return ctor.defaultOption; - } - var fields = inner23(this); - if (!fields.defaultOption) { - var optList = []; - var clz = ctor; - while (clz) { - var opt = clz.prototype.defaultOption; - opt && optList.push(opt); - clz = clz.superClass; - } - var defaultOption4 = {}; - for (var i2 = optList.length - 1; i2 >= 0; i2--) { - defaultOption4 = merge2(defaultOption4, optList[i2], true); - } - fields.defaultOption = defaultOption4; - } - return fields.defaultOption; - }; - ComponentModel3.prototype.getReferringComponents = function(mainType, opt) { - var indexKey = mainType + "Index"; - var idKey = mainType + "Id"; - return queryReferringComponents2(this.ecModel, mainType, { - index: this.get(indexKey, true), - id: this.get(idKey, true) - }, opt); - }; - ComponentModel3.prototype.getBoxLayoutParams = function() { - var boxLayoutModel = this; - return { - left: boxLayoutModel.get("left"), - top: boxLayoutModel.get("top"), - right: boxLayoutModel.get("right"), - bottom: boxLayoutModel.get("bottom"), - width: boxLayoutModel.get("width"), - height: boxLayoutModel.get("height") - }; - }; - ComponentModel3.prototype.getZLevelKey = function() { - return ""; - }; - ComponentModel3.prototype.setZLevel = function(zlevel) { - this.option.zlevel = zlevel; - }; - ComponentModel3.protoInitialize = function() { - var proto3 = ComponentModel3.prototype; - proto3.type = "component"; - proto3.id = ""; - proto3.name = ""; - proto3.mainType = ""; - proto3.subType = ""; - proto3.componentIndex = 0; - }(); - return ComponentModel3; - }(Model2) - ); - mountExtend2(ComponentModel2, Model2); - enableClassManagement2(ComponentModel2); - enableSubTypeDefaulter2(ComponentModel2); - enableTopologicalTravel2(ComponentModel2, getDependencies2); - function getDependencies2(componentType) { - var deps = []; - each17(ComponentModel2.getClassesByMainType(componentType), function(clz) { - deps = deps.concat(clz.dependencies || clz.prototype.dependencies || []); - }); - deps = map3(deps, function(type) { - return parseClassType2(type).main; - }); - if (componentType !== "dataset" && indexOf2(deps, "dataset") <= 0) { - deps.unshift("dataset"); - } - return deps; - } - var platform3 = ""; - if (typeof navigator !== "undefined") { - platform3 = navigator.platform || ""; - } - var decalColor2 = "rgba(0, 0, 0, 0.2)"; - var globalDefault = { - darkMode: "auto", - // backgroundColor: 'rgba(0,0,0,0)', - colorBy: "series", - color: ["#5470c6", "#91cc75", "#fac858", "#ee6666", "#73c0de", "#3ba272", "#fc8452", "#9a60b4", "#ea7ccc"], - gradientColor: ["#f6efa6", "#d88273", "#bf444c"], - aria: { - decal: { - decals: [{ - color: decalColor2, - dashArrayX: [1, 0], - dashArrayY: [2, 5], - symbolSize: 1, - rotation: Math.PI / 6 - }, { - color: decalColor2, - symbol: "circle", - dashArrayX: [[8, 8], [0, 8, 8, 0]], - dashArrayY: [6, 0], - symbolSize: 0.8 - }, { - color: decalColor2, - dashArrayX: [1, 0], - dashArrayY: [4, 3], - rotation: -Math.PI / 4 - }, { - color: decalColor2, - dashArrayX: [[6, 6], [0, 6, 6, 0]], - dashArrayY: [6, 0] - }, { - color: decalColor2, - dashArrayX: [[1, 0], [1, 6]], - dashArrayY: [1, 0, 6, 0], - rotation: Math.PI / 4 - }, { - color: decalColor2, - symbol: "triangle", - dashArrayX: [[9, 9], [0, 9, 9, 0]], - dashArrayY: [7, 2], - symbolSize: 0.75 - }] - } - }, - // If xAxis and yAxis declared, grid is created by default. - // grid: {}, - textStyle: { - // color: '#000', - // decoration: 'none', - // PENDING - fontFamily: platform3.match(/^Win/) ? "Microsoft YaHei" : "sans-serif", - // fontFamily: 'Arial, Verdana, sans-serif', - fontSize: 12, - fontStyle: "normal", - fontWeight: "normal" - }, - // http://blogs.adobe.com/webplatform/2014/02/24/using-blend-modes-in-html-canvas/ - // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation - // Default is source-over - blendMode: null, - stateAnimation: { - duration: 300, - easing: "cubicOut" - }, - animation: "auto", - animationDuration: 1e3, - animationDurationUpdate: 500, - animationEasing: "cubicInOut", - animationEasingUpdate: "cubicInOut", - animationThreshold: 2e3, - // Configuration for progressive/incremental rendering - progressiveThreshold: 3e3, - progressive: 400, - // Threshold of if use single hover layer to optimize. - // It is recommended that `hoverLayerThreshold` is equivalent to or less than - // `progressiveThreshold`, otherwise hover will cause restart of progressive, - // which is unexpected. - // see example . - hoverLayerThreshold: 3e3, - // See: module:echarts/scale/Time - useUTC: false - }; - var VISUAL_DIMENSIONS2 = createHashMap2(["tooltip", "label", "itemName", "itemId", "itemGroupId", "itemChildGroupId", "seriesName"]); - var SOURCE_FORMAT_ORIGINAL2 = "original"; - var SOURCE_FORMAT_ARRAY_ROWS2 = "arrayRows"; - var SOURCE_FORMAT_OBJECT_ROWS2 = "objectRows"; - var SOURCE_FORMAT_KEYED_COLUMNS2 = "keyedColumns"; - var SOURCE_FORMAT_TYPED_ARRAY2 = "typedArray"; - var SOURCE_FORMAT_UNKNOWN2 = "unknown"; - var SERIES_LAYOUT_BY_COLUMN2 = "column"; - var SERIES_LAYOUT_BY_ROW2 = "row"; - var BE_ORDINAL2 = { - Must: 1, - Might: 2, - Not: 3 - // Other cases - }; - var innerGlobalModel2 = makeInner2(); - function resetSourceDefaulter2(ecModel) { - innerGlobalModel2(ecModel).datasetMap = createHashMap2(); - } - function makeSeriesEncodeForAxisCoordSys2(coordDimensions, seriesModel, source) { - var encode = {}; - var datasetModel = querySeriesUpstreamDatasetModel2(seriesModel); - if (!datasetModel || !coordDimensions) { - return encode; - } - var encodeItemName = []; - var encodeSeriesName = []; - var ecModel = seriesModel.ecModel; - var datasetMap = innerGlobalModel2(ecModel).datasetMap; - var key = datasetModel.uid + "_" + source.seriesLayoutBy; - var baseCategoryDimIndex; - var categoryWayValueDimStart; - coordDimensions = coordDimensions.slice(); - each17(coordDimensions, function(coordDimInfoLoose, coordDimIdx) { - var coordDimInfo = isObject5(coordDimInfoLoose) ? coordDimInfoLoose : coordDimensions[coordDimIdx] = { - name: coordDimInfoLoose - }; - if (coordDimInfo.type === "ordinal" && baseCategoryDimIndex == null) { - baseCategoryDimIndex = coordDimIdx; - categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimInfo); - } - encode[coordDimInfo.name] = []; - }); - var datasetRecord = datasetMap.get(key) || datasetMap.set(key, { - categoryWayDim: categoryWayValueDimStart, - valueWayDim: 0 - }); - each17(coordDimensions, function(coordDimInfo, coordDimIdx) { - var coordDimName = coordDimInfo.name; - var count3 = getDataDimCountOnCoordDim(coordDimInfo); - if (baseCategoryDimIndex == null) { - var start4 = datasetRecord.valueWayDim; - pushDim(encode[coordDimName], start4, count3); - pushDim(encodeSeriesName, start4, count3); - datasetRecord.valueWayDim += count3; - } else if (baseCategoryDimIndex === coordDimIdx) { - pushDim(encode[coordDimName], 0, count3); - pushDim(encodeItemName, 0, count3); - } else { - var start4 = datasetRecord.categoryWayDim; - pushDim(encode[coordDimName], start4, count3); - pushDim(encodeSeriesName, start4, count3); - datasetRecord.categoryWayDim += count3; - } - }); - function pushDim(dimIdxArr, idxFrom, idxCount) { - for (var i2 = 0; i2 < idxCount; i2++) { - dimIdxArr.push(idxFrom + i2); - } - } - function getDataDimCountOnCoordDim(coordDimInfo) { - var dimsDef = coordDimInfo.dimsDef; - return dimsDef ? dimsDef.length : 1; - } - encodeItemName.length && (encode.itemName = encodeItemName); - encodeSeriesName.length && (encode.seriesName = encodeSeriesName); - return encode; - } - function makeSeriesEncodeForNameBased2(seriesModel, source, dimCount) { - var encode = {}; - var datasetModel = querySeriesUpstreamDatasetModel2(seriesModel); - if (!datasetModel) { - return encode; - } - var sourceFormat = source.sourceFormat; - var dimensionsDefine = source.dimensionsDefine; - var potentialNameDimIndex; - if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS2 || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS2) { - each17(dimensionsDefine, function(dim, idx) { - if ((isObject5(dim) ? dim.name : dim) === "name") { - potentialNameDimIndex = idx; - } - }); - } - var idxResult = function() { - var idxRes0 = {}; - var idxRes1 = {}; - var guessRecords = []; - for (var i2 = 0, len3 = Math.min(5, dimCount); i2 < len3; i2++) { - var guessResult = doGuessOrdinal2(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i2); - guessRecords.push(guessResult); - var isPureNumber = guessResult === BE_ORDINAL2.Not; - if (isPureNumber && idxRes0.v == null && i2 !== potentialNameDimIndex) { - idxRes0.v = i2; - } - if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL2.Not) { - idxRes0.n = i2; - } - if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL2.Not) { - return idxRes0; - } - if (!isPureNumber) { - if (guessResult === BE_ORDINAL2.Might && idxRes1.v == null && i2 !== potentialNameDimIndex) { - idxRes1.v = i2; - } - if (idxRes1.n == null || idxRes1.n === idxRes1.v) { - idxRes1.n = i2; - } - } - } - function fulfilled(idxResult2) { - return idxResult2.v != null && idxResult2.n != null; - } - return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null; - }(); - if (idxResult) { - encode.value = [idxResult.v]; - var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n; - encode.itemName = [nameDimIndex]; - encode.seriesName = [nameDimIndex]; - } - return encode; - } - function querySeriesUpstreamDatasetModel2(seriesModel) { - var thisData = seriesModel.get("data", true); - if (!thisData) { - return queryReferringComponents2(seriesModel.ecModel, "dataset", { - index: seriesModel.get("datasetIndex", true), - id: seriesModel.get("datasetId", true) - }, SINGLE_REFERRING2).models[0]; - } - } - function queryDatasetUpstreamDatasetModels2(datasetModel) { - if (!datasetModel.get("transform", true) && !datasetModel.get("fromTransformResult", true)) { - return []; - } - return queryReferringComponents2(datasetModel.ecModel, "dataset", { - index: datasetModel.get("fromDatasetIndex", true), - id: datasetModel.get("fromDatasetId", true) - }, SINGLE_REFERRING2).models; - } - function guessOrdinal2(source, dimIndex) { - return doGuessOrdinal2(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex); - } - function doGuessOrdinal2(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) { - var result; - var maxLoop = 5; - if (isTypedArray2(data)) { - return BE_ORDINAL2.Not; - } - var dimName; - var dimType; - if (dimensionsDefine) { - var dimDefItem = dimensionsDefine[dimIndex]; - if (isObject5(dimDefItem)) { - dimName = dimDefItem.name; - dimType = dimDefItem.type; - } else if (isString2(dimDefItem)) { - dimName = dimDefItem; - } - } - if (dimType != null) { - return dimType === "ordinal" ? BE_ORDINAL2.Must : BE_ORDINAL2.Not; - } - if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS2) { - var dataArrayRows = data; - if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW2) { - var sample = dataArrayRows[dimIndex]; - for (var i2 = 0; i2 < (sample || []).length && i2 < maxLoop; i2++) { - if ((result = detectValue(sample[startIndex + i2])) != null) { - return result; - } - } - } else { - for (var i2 = 0; i2 < dataArrayRows.length && i2 < maxLoop; i2++) { - var row = dataArrayRows[startIndex + i2]; - if (row && (result = detectValue(row[dimIndex])) != null) { - return result; - } - } - } - } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS2) { - var dataObjectRows = data; - if (!dimName) { - return BE_ORDINAL2.Not; - } - for (var i2 = 0; i2 < dataObjectRows.length && i2 < maxLoop; i2++) { - var item = dataObjectRows[i2]; - if (item && (result = detectValue(item[dimName])) != null) { - return result; - } - } - } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS2) { - var dataKeyedColumns = data; - if (!dimName) { - return BE_ORDINAL2.Not; - } - var sample = dataKeyedColumns[dimName]; - if (!sample || isTypedArray2(sample)) { - return BE_ORDINAL2.Not; - } - for (var i2 = 0; i2 < sample.length && i2 < maxLoop; i2++) { - if ((result = detectValue(sample[i2])) != null) { - return result; - } - } - } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL2) { - var dataOriginal = data; - for (var i2 = 0; i2 < dataOriginal.length && i2 < maxLoop; i2++) { - var item = dataOriginal[i2]; - var val = getDataItemValue2(item); - if (!isArray3(val)) { - return BE_ORDINAL2.Not; - } - if ((result = detectValue(val[dimIndex])) != null) { - return result; - } - } - } - function detectValue(val2) { - var beStr = isString2(val2); - if (val2 != null && Number.isFinite(Number(val2)) && val2 !== "") { - return beStr ? BE_ORDINAL2.Might : BE_ORDINAL2.Not; - } else if (beStr && val2 !== "-") { - return BE_ORDINAL2.Must; - } - } - return BE_ORDINAL2.Not; - } - var internalOptionCreatorMap2 = createHashMap2(); - function registerInternalOptionCreator2(mainType, creator) { - assert2(internalOptionCreatorMap2.get(mainType) == null && creator); - internalOptionCreatorMap2.set(mainType, creator); - } - function concatInternalOptions2(ecModel, mainType, newCmptOptionList) { - var internalOptionCreator = internalOptionCreatorMap2.get(mainType); - if (!internalOptionCreator) { - return newCmptOptionList; - } - var internalOptions = internalOptionCreator(ecModel); - if (!internalOptions) { - return newCmptOptionList; - } - if (true) { - for (var i2 = 0; i2 < internalOptions.length; i2++) { - assert2(isComponentIdInternal2(internalOptions[i2])); - } - } - return newCmptOptionList.concat(internalOptions); - } - var innerColor2 = makeInner2(); - var innerDecal2 = makeInner2(); - var PaletteMixin2 = ( - /** @class */ - function() { - function PaletteMixin3() { - } - PaletteMixin3.prototype.getColorFromPalette = function(name, scope, requestNum) { - var defaultPalette = normalizeToArray2(this.get("color", true)); - var layeredPalette = this.get("colorLayer", true); - return getFromPalette2(this, innerColor2, defaultPalette, layeredPalette, name, scope, requestNum); - }; - PaletteMixin3.prototype.clearColorPalette = function() { - clearPalette2(this, innerColor2); - }; - return PaletteMixin3; - }() - ); - function getDecalFromPalette2(ecModel, name, scope, requestNum) { - var defaultDecals = normalizeToArray2(ecModel.get(["aria", "decal", "decals"])); - return getFromPalette2(ecModel, innerDecal2, defaultDecals, null, name, scope, requestNum); - } - function getNearestPalette2(palettes, requestColorNum) { - var paletteNum = palettes.length; - for (var i2 = 0; i2 < paletteNum; i2++) { - if (palettes[i2].length > requestColorNum) { - return palettes[i2]; - } - } - return palettes[paletteNum - 1]; - } - function getFromPalette2(that, inner24, defaultPalette, layeredPalette, name, scope, requestNum) { - scope = scope || that; - var scopeFields = inner24(scope); - var paletteIdx = scopeFields.paletteIdx || 0; - var paletteNameMap = scopeFields.paletteNameMap = scopeFields.paletteNameMap || {}; - if (paletteNameMap.hasOwnProperty(name)) { - return paletteNameMap[name]; - } - var palette = requestNum == null || !layeredPalette ? defaultPalette : getNearestPalette2(layeredPalette, requestNum); - palette = palette || defaultPalette; - if (!palette || !palette.length) { - return; - } - var pickedPaletteItem = palette[paletteIdx]; - if (name) { - paletteNameMap[name] = pickedPaletteItem; - } - scopeFields.paletteIdx = (paletteIdx + 1) % palette.length; - return pickedPaletteItem; - } - function clearPalette2(that, inner24) { - inner24(that).paletteIdx = 0; - inner24(that).paletteNameMap = {}; - } - var reCreateSeriesIndices2; - var assertSeriesInitialized2; - var initBase2; - var OPTION_INNER_KEY2 = "\0_ec_inner"; - var OPTION_INNER_VALUE2 = 1; - var BUITIN_COMPONENTS_MAP2 = { - grid: "GridComponent", - polar: "PolarComponent", - geo: "GeoComponent", - singleAxis: "SingleAxisComponent", - parallel: "ParallelComponent", - calendar: "CalendarComponent", - graphic: "GraphicComponent", - toolbox: "ToolboxComponent", - tooltip: "TooltipComponent", - axisPointer: "AxisPointerComponent", - brush: "BrushComponent", - title: "TitleComponent", - timeline: "TimelineComponent", - markPoint: "MarkPointComponent", - markLine: "MarkLineComponent", - markArea: "MarkAreaComponent", - legend: "LegendComponent", - dataZoom: "DataZoomComponent", - visualMap: "VisualMapComponent", - // aria: 'AriaComponent', - // dataset: 'DatasetComponent', - // Dependencies - xAxis: "GridComponent", - yAxis: "GridComponent", - angleAxis: "PolarComponent", - radiusAxis: "PolarComponent" - }; - var BUILTIN_CHARTS_MAP2 = { - line: "LineChart", - bar: "BarChart", - pie: "PieChart", - scatter: "ScatterChart", - radar: "RadarChart", - map: "MapChart", - tree: "TreeChart", - treemap: "TreemapChart", - graph: "GraphChart", - gauge: "GaugeChart", - funnel: "FunnelChart", - parallel: "ParallelChart", - sankey: "SankeyChart", - boxplot: "BoxplotChart", - candlestick: "CandlestickChart", - effectScatter: "EffectScatterChart", - lines: "LinesChart", - heatmap: "HeatmapChart", - pictorialBar: "PictorialBarChart", - themeRiver: "ThemeRiverChart", - sunburst: "SunburstChart", - custom: "CustomChart" - }; - var componetsMissingLogPrinted2 = {}; - function checkMissingComponents2(option) { - each17(option, function(componentOption, mainType) { - if (!ComponentModel2.hasClass(mainType)) { - var componentImportName = BUITIN_COMPONENTS_MAP2[mainType]; - if (componentImportName && !componetsMissingLogPrinted2[componentImportName]) { - error3("Component " + mainType + " is used but not imported.\nimport { " + componentImportName + " } from 'echarts/components';\necharts.use([" + componentImportName + "]);"); - componetsMissingLogPrinted2[componentImportName] = true; - } - } - }); - } - var GlobalModel2 = ( - /** @class */ - function(_super) { - __extends2(GlobalModel3, _super); - function GlobalModel3() { - return _super !== null && _super.apply(this, arguments) || this; - } - GlobalModel3.prototype.init = function(option, parentModel, ecModel, theme3, locale, optionManager) { - theme3 = theme3 || {}; - this.option = null; - this._theme = new Model2(theme3); - this._locale = new Model2(locale); - this._optionManager = optionManager; - }; - GlobalModel3.prototype.setOption = function(option, opts, optionPreprocessorFuncs3) { - if (true) { - assert2(option != null, "option is null/undefined"); - assert2(option[OPTION_INNER_KEY2] !== OPTION_INNER_VALUE2, "please use chart.getOption()"); - } - var innerOpt = normalizeSetOptionInput2(opts); - this._optionManager.setOption(option, optionPreprocessorFuncs3, innerOpt); - this._resetOption(null, innerOpt); - }; - GlobalModel3.prototype.resetOption = function(type, opt) { - return this._resetOption(type, normalizeSetOptionInput2(opt)); - }; - GlobalModel3.prototype._resetOption = function(type, opt) { - var optionChanged = false; - var optionManager = this._optionManager; - if (!type || type === "recreate") { - var baseOption = optionManager.mountOption(type === "recreate"); - if (true) { - checkMissingComponents2(baseOption); - } - if (!this.option || type === "recreate") { - initBase2(this, baseOption); - } else { - this.restoreData(); - this._mergeOption(baseOption, opt); - } - optionChanged = true; - } - if (type === "timeline" || type === "media") { - this.restoreData(); - } - if (!type || type === "recreate" || type === "timeline") { - var timelineOption = optionManager.getTimelineOption(this); - if (timelineOption) { - optionChanged = true; - this._mergeOption(timelineOption, opt); - } - } - if (!type || type === "recreate" || type === "media") { - var mediaOptions = optionManager.getMediaOption(this); - if (mediaOptions.length) { - each17(mediaOptions, function(mediaOption) { - optionChanged = true; - this._mergeOption(mediaOption, opt); - }, this); - } - } - return optionChanged; - }; - GlobalModel3.prototype.mergeOption = function(option) { - this._mergeOption(option, null); - }; - GlobalModel3.prototype._mergeOption = function(newOption, opt) { - var option = this.option; - var componentsMap = this._componentsMap; - var componentsCount = this._componentsCount; - var newCmptTypes = []; - var newCmptTypeMap = createHashMap2(); - var replaceMergeMainTypeMap = opt && opt.replaceMergeMainTypeMap; - resetSourceDefaulter2(this); - each17(newOption, function(componentOption, mainType) { - if (componentOption == null) { - return; - } - if (!ComponentModel2.hasClass(mainType)) { - option[mainType] = option[mainType] == null ? clone6(componentOption) : merge2(option[mainType], componentOption, true); - } else if (mainType) { - newCmptTypes.push(mainType); - newCmptTypeMap.set(mainType, true); - } - }); - if (replaceMergeMainTypeMap) { - replaceMergeMainTypeMap.each(function(val, mainTypeInReplaceMerge) { - if (ComponentModel2.hasClass(mainTypeInReplaceMerge) && !newCmptTypeMap.get(mainTypeInReplaceMerge)) { - newCmptTypes.push(mainTypeInReplaceMerge); - newCmptTypeMap.set(mainTypeInReplaceMerge, true); - } - }); - } - ComponentModel2.topologicalTravel(newCmptTypes, ComponentModel2.getAllClassMainTypes(), visitComponent, this); - function visitComponent(mainType) { - var newCmptOptionList = concatInternalOptions2(this, mainType, normalizeToArray2(newOption[mainType])); - var oldCmptList = componentsMap.get(mainType); - var mergeMode = ( - // `!oldCmptList` means init. See the comment in `mappingToExists` - !oldCmptList ? "replaceAll" : replaceMergeMainTypeMap && replaceMergeMainTypeMap.get(mainType) ? "replaceMerge" : "normalMerge" - ); - var mappingResult = mappingToExists2(oldCmptList, newCmptOptionList, mergeMode); - setComponentTypeToKeyInfo2(mappingResult, mainType, ComponentModel2); - option[mainType] = null; - componentsMap.set(mainType, null); - componentsCount.set(mainType, 0); - var optionsByMainType = []; - var cmptsByMainType = []; - var cmptsCountByMainType = 0; - var tooltipExists; - var tooltipWarningLogged; - each17(mappingResult, function(resultItem, index) { - var componentModel = resultItem.existing; - var newCmptOption = resultItem.newOption; - if (!newCmptOption) { - if (componentModel) { - componentModel.mergeOption({}, this); - componentModel.optionUpdated({}, false); - } - } else { - var isSeriesType = mainType === "series"; - var ComponentModelClass = ComponentModel2.getClass( - mainType, - resultItem.keyInfo.subType, - !isSeriesType - // Give a more detailed warn later if series don't exists - ); - if (!ComponentModelClass) { - if (true) { - var subType = resultItem.keyInfo.subType; - var seriesImportName = BUILTIN_CHARTS_MAP2[subType]; - if (!componetsMissingLogPrinted2[subType]) { - componetsMissingLogPrinted2[subType] = true; - if (seriesImportName) { - error3("Series " + subType + " is used but not imported.\nimport { " + seriesImportName + " } from 'echarts/charts';\necharts.use([" + seriesImportName + "]);"); - } else { - error3("Unknown series " + subType); - } - } - } - return; - } - if (mainType === "tooltip") { - if (tooltipExists) { - if (true) { - if (!tooltipWarningLogged) { - warn2("Currently only one tooltip component is allowed."); - tooltipWarningLogged = true; - } - } - return; - } - tooltipExists = true; - } - if (componentModel && componentModel.constructor === ComponentModelClass) { - componentModel.name = resultItem.keyInfo.name; - componentModel.mergeOption(newCmptOption, this); - componentModel.optionUpdated(newCmptOption, false); - } else { - var extraOpt = extend3({ - componentIndex: index - }, resultItem.keyInfo); - componentModel = new ComponentModelClass(newCmptOption, this, this, extraOpt); - extend3(componentModel, extraOpt); - if (resultItem.brandNew) { - componentModel.__requireNewView = true; - } - componentModel.init(newCmptOption, this, this); - componentModel.optionUpdated(null, true); - } - } - if (componentModel) { - optionsByMainType.push(componentModel.option); - cmptsByMainType.push(componentModel); - cmptsCountByMainType++; - } else { - optionsByMainType.push(void 0); - cmptsByMainType.push(void 0); - } - }, this); - option[mainType] = optionsByMainType; - componentsMap.set(mainType, cmptsByMainType); - componentsCount.set(mainType, cmptsCountByMainType); - if (mainType === "series") { - reCreateSeriesIndices2(this); - } - } - if (!this._seriesIndices) { - reCreateSeriesIndices2(this); - } - }; - GlobalModel3.prototype.getOption = function() { - var option = clone6(this.option); - each17(option, function(optInMainType, mainType) { - if (ComponentModel2.hasClass(mainType)) { - var opts = normalizeToArray2(optInMainType); - var realLen = opts.length; - var metNonInner = false; - for (var i2 = realLen - 1; i2 >= 0; i2--) { - if (opts[i2] && !isComponentIdInternal2(opts[i2])) { - metNonInner = true; - } else { - opts[i2] = null; - !metNonInner && realLen--; - } - } - opts.length = realLen; - option[mainType] = opts; - } - }); - delete option[OPTION_INNER_KEY2]; - return option; - }; - GlobalModel3.prototype.getTheme = function() { - return this._theme; - }; - GlobalModel3.prototype.getLocaleModel = function() { - return this._locale; - }; - GlobalModel3.prototype.setUpdatePayload = function(payload) { - this._payload = payload; - }; - GlobalModel3.prototype.getUpdatePayload = function() { - return this._payload; - }; - GlobalModel3.prototype.getComponent = function(mainType, idx) { - var list = this._componentsMap.get(mainType); - if (list) { - var cmpt = list[idx || 0]; - if (cmpt) { - return cmpt; - } else if (idx == null) { - for (var i2 = 0; i2 < list.length; i2++) { - if (list[i2]) { - return list[i2]; - } - } - } - } - }; - GlobalModel3.prototype.queryComponents = function(condition) { - var mainType = condition.mainType; - if (!mainType) { - return []; - } - var index = condition.index; - var id = condition.id; - var name = condition.name; - var cmpts = this._componentsMap.get(mainType); - if (!cmpts || !cmpts.length) { - return []; - } - var result; - if (index != null) { - result = []; - each17(normalizeToArray2(index), function(idx) { - cmpts[idx] && result.push(cmpts[idx]); - }); - } else if (id != null) { - result = queryByIdOrName2("id", id, cmpts); - } else if (name != null) { - result = queryByIdOrName2("name", name, cmpts); - } else { - result = filter2(cmpts, function(cmpt) { - return !!cmpt; - }); - } - return filterBySubType2(result, condition); - }; - GlobalModel3.prototype.findComponents = function(condition) { - var query = condition.query; - var mainType = condition.mainType; - var queryCond = getQueryCond(query); - var result = queryCond ? this.queryComponents(queryCond) : filter2(this._componentsMap.get(mainType), function(cmpt) { - return !!cmpt; - }); - return doFilter(filterBySubType2(result, condition)); - function getQueryCond(q) { - var indexAttr = mainType + "Index"; - var idAttr = mainType + "Id"; - var nameAttr = mainType + "Name"; - return q && (q[indexAttr] != null || q[idAttr] != null || q[nameAttr] != null) ? { - mainType, - // subType will be filtered finally. - index: q[indexAttr], - id: q[idAttr], - name: q[nameAttr] - } : null; - } - function doFilter(res) { - return condition.filter ? filter2(res, condition.filter) : res; - } - }; - GlobalModel3.prototype.eachComponent = function(mainType, cb, context) { - var componentsMap = this._componentsMap; - if (isFunction2(mainType)) { - var ctxForAll_1 = cb; - var cbForAll_1 = mainType; - componentsMap.each(function(cmpts2, componentType) { - for (var i3 = 0; cmpts2 && i3 < cmpts2.length; i3++) { - var cmpt2 = cmpts2[i3]; - cmpt2 && cbForAll_1.call(ctxForAll_1, componentType, cmpt2, cmpt2.componentIndex); - } - }); - } else { - var cmpts = isString2(mainType) ? componentsMap.get(mainType) : isObject5(mainType) ? this.findComponents(mainType) : null; - for (var i2 = 0; cmpts && i2 < cmpts.length; i2++) { - var cmpt = cmpts[i2]; - cmpt && cb.call(context, cmpt, cmpt.componentIndex); - } - } - }; - GlobalModel3.prototype.getSeriesByName = function(name) { - var nameStr = convertOptionIdName2(name, null); - return filter2(this._componentsMap.get("series"), function(oneSeries) { - return !!oneSeries && nameStr != null && oneSeries.name === nameStr; - }); - }; - GlobalModel3.prototype.getSeriesByIndex = function(seriesIndex) { - return this._componentsMap.get("series")[seriesIndex]; - }; - GlobalModel3.prototype.getSeriesByType = function(subType) { - return filter2(this._componentsMap.get("series"), function(oneSeries) { - return !!oneSeries && oneSeries.subType === subType; - }); - }; - GlobalModel3.prototype.getSeries = function() { - return filter2(this._componentsMap.get("series"), function(oneSeries) { - return !!oneSeries; - }); - }; - GlobalModel3.prototype.getSeriesCount = function() { - return this._componentsCount.get("series"); - }; - GlobalModel3.prototype.eachSeries = function(cb, context) { - assertSeriesInitialized2(this); - each17(this._seriesIndices, function(rawSeriesIndex) { - var series = this._componentsMap.get("series")[rawSeriesIndex]; - cb.call(context, series, rawSeriesIndex); - }, this); - }; - GlobalModel3.prototype.eachRawSeries = function(cb, context) { - each17(this._componentsMap.get("series"), function(series) { - series && cb.call(context, series, series.componentIndex); - }); - }; - GlobalModel3.prototype.eachSeriesByType = function(subType, cb, context) { - assertSeriesInitialized2(this); - each17(this._seriesIndices, function(rawSeriesIndex) { - var series = this._componentsMap.get("series")[rawSeriesIndex]; - if (series.subType === subType) { - cb.call(context, series, rawSeriesIndex); - } - }, this); - }; - GlobalModel3.prototype.eachRawSeriesByType = function(subType, cb, context) { - return each17(this.getSeriesByType(subType), cb, context); - }; - GlobalModel3.prototype.isSeriesFiltered = function(seriesModel) { - assertSeriesInitialized2(this); - return this._seriesIndicesMap.get(seriesModel.componentIndex) == null; - }; - GlobalModel3.prototype.getCurrentSeriesIndices = function() { - return (this._seriesIndices || []).slice(); - }; - GlobalModel3.prototype.filterSeries = function(cb, context) { - assertSeriesInitialized2(this); - var newSeriesIndices = []; - each17(this._seriesIndices, function(seriesRawIdx) { - var series = this._componentsMap.get("series")[seriesRawIdx]; - cb.call(context, series, seriesRawIdx) && newSeriesIndices.push(seriesRawIdx); - }, this); - this._seriesIndices = newSeriesIndices; - this._seriesIndicesMap = createHashMap2(newSeriesIndices); - }; - GlobalModel3.prototype.restoreData = function(payload) { - reCreateSeriesIndices2(this); - var componentsMap = this._componentsMap; - var componentTypes = []; - componentsMap.each(function(components, componentType) { - if (ComponentModel2.hasClass(componentType)) { - componentTypes.push(componentType); - } - }); - ComponentModel2.topologicalTravel(componentTypes, ComponentModel2.getAllClassMainTypes(), function(componentType) { - each17(componentsMap.get(componentType), function(component) { - if (component && (componentType !== "series" || !isNotTargetSeries2(component, payload))) { - component.restoreData(); - } - }); - }); - }; - GlobalModel3.internalField = function() { - reCreateSeriesIndices2 = function(ecModel) { - var seriesIndices = ecModel._seriesIndices = []; - each17(ecModel._componentsMap.get("series"), function(series) { - series && seriesIndices.push(series.componentIndex); - }); - ecModel._seriesIndicesMap = createHashMap2(seriesIndices); - }; - assertSeriesInitialized2 = function(ecModel) { - if (true) { - if (!ecModel._seriesIndices) { - throw new Error("Option should contains series."); - } - } - }; - initBase2 = function(ecModel, baseOption) { - ecModel.option = {}; - ecModel.option[OPTION_INNER_KEY2] = OPTION_INNER_VALUE2; - ecModel._componentsMap = createHashMap2({ - series: [] - }); - ecModel._componentsCount = createHashMap2(); - var airaOption = baseOption.aria; - if (isObject5(airaOption) && airaOption.enabled == null) { - airaOption.enabled = true; - } - mergeTheme2(baseOption, ecModel._theme.option); - merge2(baseOption, globalDefault, false); - ecModel._mergeOption(baseOption, null); - }; - }(); - return GlobalModel3; - }(Model2) - ); - function isNotTargetSeries2(seriesModel, payload) { - if (payload) { - var index = payload.seriesIndex; - var id = payload.seriesId; - var name_1 = payload.seriesName; - return index != null && seriesModel.componentIndex !== index || id != null && seriesModel.id !== id || name_1 != null && seriesModel.name !== name_1; - } - } - function mergeTheme2(option, theme3) { - var notMergeColorLayer = option.color && !option.colorLayer; - each17(theme3, function(themeItem, name) { - if (name === "colorLayer" && notMergeColorLayer) { - return; - } - if (!ComponentModel2.hasClass(name)) { - if (typeof themeItem === "object") { - option[name] = !option[name] ? clone6(themeItem) : merge2(option[name], themeItem, false); - } else { - if (option[name] == null) { - option[name] = themeItem; - } - } - } - }); - } - function queryByIdOrName2(attr, idOrName, cmpts) { - if (isArray3(idOrName)) { - var keyMap_1 = createHashMap2(); - each17(idOrName, function(idOrNameItem) { - if (idOrNameItem != null) { - var idName = convertOptionIdName2(idOrNameItem, null); - idName != null && keyMap_1.set(idOrNameItem, true); - } - }); - return filter2(cmpts, function(cmpt) { - return cmpt && keyMap_1.get(cmpt[attr]); - }); - } else { - var idName_1 = convertOptionIdName2(idOrName, null); - return filter2(cmpts, function(cmpt) { - return cmpt && idName_1 != null && cmpt[attr] === idName_1; - }); - } - } - function filterBySubType2(components, condition) { - return condition.hasOwnProperty("subType") ? filter2(components, function(cmpt) { - return cmpt && cmpt.subType === condition.subType; - }) : components; - } - function normalizeSetOptionInput2(opts) { - var replaceMergeMainTypeMap = createHashMap2(); - opts && each17(normalizeToArray2(opts.replaceMerge), function(mainType) { - if (true) { - assert2(ComponentModel2.hasClass(mainType), '"' + mainType + '" is not valid component main type in "replaceMerge"'); - } - replaceMergeMainTypeMap.set(mainType, true); - }); - return { - replaceMergeMainTypeMap - }; - } - mixin2(GlobalModel2, PaletteMixin2); - var availableMethods2 = [ - "getDom", - "getZr", - "getWidth", - "getHeight", - "getDevicePixelRatio", - "dispatchAction", - "isSSR", - "isDisposed", - "on", - "off", - "getDataURL", - "getConnectedDataURL", - // 'getModel', - "getOption", - // 'getViewOfComponentModel', - // 'getViewOfSeriesModel', - "getId", - "updateLabelLayout" - ]; - var ExtensionAPI2 = ( - /** @class */ - /* @__PURE__ */ function() { - function ExtensionAPI3(ecInstance) { - each17(availableMethods2, function(methodName) { - this[methodName] = bind3(ecInstance[methodName], ecInstance); - }, this); - } - return ExtensionAPI3; - }() - ); - var coordinateSystemCreators2 = {}; - var CoordinateSystemManager2 = ( - /** @class */ - function() { - function CoordinateSystemManager3() { - this._coordinateSystems = []; - } - CoordinateSystemManager3.prototype.create = function(ecModel, api) { - var coordinateSystems = []; - each17(coordinateSystemCreators2, function(creator, type) { - var list = creator.create(ecModel, api); - coordinateSystems = coordinateSystems.concat(list || []); - }); - this._coordinateSystems = coordinateSystems; - }; - CoordinateSystemManager3.prototype.update = function(ecModel, api) { - each17(this._coordinateSystems, function(coordSys) { - coordSys.update && coordSys.update(ecModel, api); - }); - }; - CoordinateSystemManager3.prototype.getCoordinateSystems = function() { - return this._coordinateSystems.slice(); - }; - CoordinateSystemManager3.register = function(type, creator) { - coordinateSystemCreators2[type] = creator; - }; - CoordinateSystemManager3.get = function(type) { - return coordinateSystemCreators2[type]; - }; - return CoordinateSystemManager3; - }() - ); - var QUERY_REG2 = /^(min|max)?(.+)$/; - var OptionManager2 = ( - /** @class */ - function() { - function OptionManager3(api) { - this._timelineOptions = []; - this._mediaList = []; - this._currentMediaIndices = []; - this._api = api; - } - OptionManager3.prototype.setOption = function(rawOption, optionPreprocessorFuncs3, opt) { - if (rawOption) { - each17(normalizeToArray2(rawOption.series), function(series) { - series && series.data && isTypedArray2(series.data) && setAsPrimitive2(series.data); - }); - each17(normalizeToArray2(rawOption.dataset), function(dataset) { - dataset && dataset.source && isTypedArray2(dataset.source) && setAsPrimitive2(dataset.source); - }); - } - rawOption = clone6(rawOption); - var optionBackup = this._optionBackup; - var newParsedOption = parseRawOption2(rawOption, optionPreprocessorFuncs3, !optionBackup); - this._newBaseOption = newParsedOption.baseOption; - if (optionBackup) { - if (newParsedOption.timelineOptions.length) { - optionBackup.timelineOptions = newParsedOption.timelineOptions; - } - if (newParsedOption.mediaList.length) { - optionBackup.mediaList = newParsedOption.mediaList; - } - if (newParsedOption.mediaDefault) { - optionBackup.mediaDefault = newParsedOption.mediaDefault; - } - } else { - this._optionBackup = newParsedOption; - } - }; - OptionManager3.prototype.mountOption = function(isRecreate) { - var optionBackup = this._optionBackup; - this._timelineOptions = optionBackup.timelineOptions; - this._mediaList = optionBackup.mediaList; - this._mediaDefault = optionBackup.mediaDefault; - this._currentMediaIndices = []; - return clone6(isRecreate ? optionBackup.baseOption : this._newBaseOption); - }; - OptionManager3.prototype.getTimelineOption = function(ecModel) { - var option; - var timelineOptions = this._timelineOptions; - if (timelineOptions.length) { - var timelineModel = ecModel.getComponent("timeline"); - if (timelineModel) { - option = clone6( - // FIXME:TS as TimelineModel or quivlant interface - timelineOptions[timelineModel.getCurrentIndex()] - ); - } - } - return option; - }; - OptionManager3.prototype.getMediaOption = function(ecModel) { - var ecWidth = this._api.getWidth(); - var ecHeight = this._api.getHeight(); - var mediaList = this._mediaList; - var mediaDefault = this._mediaDefault; - var indices = []; - var result = []; - if (!mediaList.length && !mediaDefault) { - return result; - } - for (var i2 = 0, len3 = mediaList.length; i2 < len3; i2++) { - if (applyMediaQuery2(mediaList[i2].query, ecWidth, ecHeight)) { - indices.push(i2); - } - } - if (!indices.length && mediaDefault) { - indices = [-1]; - } - if (indices.length && !indicesEquals2(indices, this._currentMediaIndices)) { - result = map3(indices, function(index) { - return clone6(index === -1 ? mediaDefault.option : mediaList[index].option); - }); - } - this._currentMediaIndices = indices; - return result; - }; - return OptionManager3; - }() - ); - function parseRawOption2(rawOption, optionPreprocessorFuncs3, isNew) { - var mediaList = []; - var mediaDefault; - var baseOption; - var declaredBaseOption = rawOption.baseOption; - var timelineOnRoot = rawOption.timeline; - var timelineOptionsOnRoot = rawOption.options; - var mediaOnRoot = rawOption.media; - var hasMedia = !!rawOption.media; - var hasTimeline = !!(timelineOptionsOnRoot || timelineOnRoot || declaredBaseOption && declaredBaseOption.timeline); - if (declaredBaseOption) { - baseOption = declaredBaseOption; - if (!baseOption.timeline) { - baseOption.timeline = timelineOnRoot; - } - } else { - if (hasTimeline || hasMedia) { - rawOption.options = rawOption.media = null; - } - baseOption = rawOption; - } - if (hasMedia) { - if (isArray3(mediaOnRoot)) { - each17(mediaOnRoot, function(singleMedia) { - if (true) { - if (singleMedia && !singleMedia.option && isObject5(singleMedia.query) && isObject5(singleMedia.query.option)) { - error3("Illegal media option. Must be like { media: [ { query: {}, option: {} } ] }"); - } - } - if (singleMedia && singleMedia.option) { - if (singleMedia.query) { - mediaList.push(singleMedia); - } else if (!mediaDefault) { - mediaDefault = singleMedia; - } - } - }); - } else { - if (true) { - error3("Illegal media option. Must be an array. Like { media: [ {...}, {...} ] }"); - } - } - } - doPreprocess(baseOption); - each17(timelineOptionsOnRoot, function(option) { - return doPreprocess(option); - }); - each17(mediaList, function(media) { - return doPreprocess(media.option); - }); - function doPreprocess(option) { - each17(optionPreprocessorFuncs3, function(preProcess) { - preProcess(option, isNew); - }); - } - return { - baseOption, - timelineOptions: timelineOptionsOnRoot || [], - mediaDefault, - mediaList - }; - } - function applyMediaQuery2(query, ecWidth, ecHeight) { - var realMap = { - width: ecWidth, - height: ecHeight, - aspectratio: ecWidth / ecHeight - // lower case for convenience. - }; - var applicable = true; - each17(query, function(value, attr) { - var matched = attr.match(QUERY_REG2); - if (!matched || !matched[1] || !matched[2]) { - return; - } - var operator = matched[1]; - var realAttr = matched[2].toLowerCase(); - if (!compare2(realMap[realAttr], value, operator)) { - applicable = false; - } - }); - return applicable; - } - function compare2(real, expect, operator) { - if (operator === "min") { - return real >= expect; - } else if (operator === "max") { - return real <= expect; - } else { - return real === expect; - } - } - function indicesEquals2(indices1, indices2) { - return indices1.join(",") === indices2.join(","); - } - var each$2 = each17; - var isObject$1 = isObject5; - var POSSIBLE_STYLES2 = ["areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine"]; - function compatEC2ItemStyle2(opt) { - var itemStyleOpt = opt && opt.itemStyle; - if (!itemStyleOpt) { - return; - } - for (var i2 = 0, len3 = POSSIBLE_STYLES2.length; i2 < len3; i2++) { - var styleName = POSSIBLE_STYLES2[i2]; - var normalItemStyleOpt = itemStyleOpt.normal; - var emphasisItemStyleOpt = itemStyleOpt.emphasis; - if (normalItemStyleOpt && normalItemStyleOpt[styleName]) { - if (true) { - deprecateReplaceLog2("itemStyle.normal." + styleName, styleName); - } - opt[styleName] = opt[styleName] || {}; - if (!opt[styleName].normal) { - opt[styleName].normal = normalItemStyleOpt[styleName]; - } else { - merge2(opt[styleName].normal, normalItemStyleOpt[styleName]); - } - normalItemStyleOpt[styleName] = null; - } - if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) { - if (true) { - deprecateReplaceLog2("itemStyle.emphasis." + styleName, "emphasis." + styleName); - } - opt[styleName] = opt[styleName] || {}; - if (!opt[styleName].emphasis) { - opt[styleName].emphasis = emphasisItemStyleOpt[styleName]; - } else { - merge2(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]); - } - emphasisItemStyleOpt[styleName] = null; - } - } - } - function convertNormalEmphasis2(opt, optType, useExtend) { - if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) { - var normalOpt = opt[optType].normal; - var emphasisOpt = opt[optType].emphasis; - if (normalOpt) { - if (true) { - deprecateLog2("'normal' hierarchy in " + optType + " has been removed since 4.0. All style properties are configured in " + optType + " directly now."); - } - if (useExtend) { - opt[optType].normal = opt[optType].emphasis = null; - defaults2(opt[optType], normalOpt); - } else { - opt[optType] = normalOpt; - } - } - if (emphasisOpt) { - if (true) { - deprecateLog2(optType + ".emphasis has been changed to emphasis." + optType + " since 4.0"); - } - opt.emphasis = opt.emphasis || {}; - opt.emphasis[optType] = emphasisOpt; - if (emphasisOpt.focus) { - opt.emphasis.focus = emphasisOpt.focus; - } - if (emphasisOpt.blurScope) { - opt.emphasis.blurScope = emphasisOpt.blurScope; - } - } - } - } - function removeEC3NormalStatus2(opt) { - convertNormalEmphasis2(opt, "itemStyle"); - convertNormalEmphasis2(opt, "lineStyle"); - convertNormalEmphasis2(opt, "areaStyle"); - convertNormalEmphasis2(opt, "label"); - convertNormalEmphasis2(opt, "labelLine"); - convertNormalEmphasis2(opt, "upperLabel"); - convertNormalEmphasis2(opt, "edgeLabel"); - } - function compatTextStyle2(opt, propName) { - var labelOptSingle = isObject$1(opt) && opt[propName]; - var textStyle = isObject$1(labelOptSingle) && labelOptSingle.textStyle; - if (textStyle) { - if (true) { - deprecateLog2("textStyle hierarchy in " + propName + " has been removed since 4.0. All textStyle properties are configured in " + propName + " directly now."); - } - for (var i2 = 0, len3 = TEXT_STYLE_OPTIONS2.length; i2 < len3; i2++) { - var textPropName = TEXT_STYLE_OPTIONS2[i2]; - if (textStyle.hasOwnProperty(textPropName)) { - labelOptSingle[textPropName] = textStyle[textPropName]; - } - } - } - } - function compatEC3CommonStyles2(opt) { - if (opt) { - removeEC3NormalStatus2(opt); - compatTextStyle2(opt, "label"); - opt.emphasis && compatTextStyle2(opt.emphasis, "label"); - } - } - function processSeries2(seriesOpt) { - if (!isObject$1(seriesOpt)) { - return; - } - compatEC2ItemStyle2(seriesOpt); - removeEC3NormalStatus2(seriesOpt); - compatTextStyle2(seriesOpt, "label"); - compatTextStyle2(seriesOpt, "upperLabel"); - compatTextStyle2(seriesOpt, "edgeLabel"); - if (seriesOpt.emphasis) { - compatTextStyle2(seriesOpt.emphasis, "label"); - compatTextStyle2(seriesOpt.emphasis, "upperLabel"); - compatTextStyle2(seriesOpt.emphasis, "edgeLabel"); - } - var markPoint = seriesOpt.markPoint; - if (markPoint) { - compatEC2ItemStyle2(markPoint); - compatEC3CommonStyles2(markPoint); - } - var markLine = seriesOpt.markLine; - if (markLine) { - compatEC2ItemStyle2(markLine); - compatEC3CommonStyles2(markLine); - } - var markArea = seriesOpt.markArea; - if (markArea) { - compatEC3CommonStyles2(markArea); - } - var data = seriesOpt.data; - if (seriesOpt.type === "graph") { - data = data || seriesOpt.nodes; - var edgeData = seriesOpt.links || seriesOpt.edges; - if (edgeData && !isTypedArray2(edgeData)) { - for (var i2 = 0; i2 < edgeData.length; i2++) { - compatEC3CommonStyles2(edgeData[i2]); - } - } - each17(seriesOpt.categories, function(opt) { - removeEC3NormalStatus2(opt); - }); - } - if (data && !isTypedArray2(data)) { - for (var i2 = 0; i2 < data.length; i2++) { - compatEC3CommonStyles2(data[i2]); - } - } - markPoint = seriesOpt.markPoint; - if (markPoint && markPoint.data) { - var mpData = markPoint.data; - for (var i2 = 0; i2 < mpData.length; i2++) { - compatEC3CommonStyles2(mpData[i2]); - } - } - markLine = seriesOpt.markLine; - if (markLine && markLine.data) { - var mlData = markLine.data; - for (var i2 = 0; i2 < mlData.length; i2++) { - if (isArray3(mlData[i2])) { - compatEC3CommonStyles2(mlData[i2][0]); - compatEC3CommonStyles2(mlData[i2][1]); - } else { - compatEC3CommonStyles2(mlData[i2]); - } - } - } - if (seriesOpt.type === "gauge") { - compatTextStyle2(seriesOpt, "axisLabel"); - compatTextStyle2(seriesOpt, "title"); - compatTextStyle2(seriesOpt, "detail"); - } else if (seriesOpt.type === "treemap") { - convertNormalEmphasis2(seriesOpt.breadcrumb, "itemStyle"); - each17(seriesOpt.levels, function(opt) { - removeEC3NormalStatus2(opt); - }); - } else if (seriesOpt.type === "tree") { - removeEC3NormalStatus2(seriesOpt.leaves); - } - } - function toArr2(o) { - return isArray3(o) ? o : o ? [o] : []; - } - function toObj2(o) { - return (isArray3(o) ? o[0] : o) || {}; - } - function globalCompatStyle2(option, isTheme) { - each$2(toArr2(option.series), function(seriesOpt) { - isObject$1(seriesOpt) && processSeries2(seriesOpt); - }); - var axes = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar"]; - isTheme && axes.push("valueAxis", "categoryAxis", "logAxis", "timeAxis"); - each$2(axes, function(axisName) { - each$2(toArr2(option[axisName]), function(axisOpt) { - if (axisOpt) { - compatTextStyle2(axisOpt, "axisLabel"); - compatTextStyle2(axisOpt.axisPointer, "label"); - } - }); - }); - each$2(toArr2(option.parallel), function(parallelOpt) { - var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault; - compatTextStyle2(parallelAxisDefault, "axisLabel"); - compatTextStyle2(parallelAxisDefault && parallelAxisDefault.axisPointer, "label"); - }); - each$2(toArr2(option.calendar), function(calendarOpt) { - convertNormalEmphasis2(calendarOpt, "itemStyle"); - compatTextStyle2(calendarOpt, "dayLabel"); - compatTextStyle2(calendarOpt, "monthLabel"); - compatTextStyle2(calendarOpt, "yearLabel"); - }); - each$2(toArr2(option.radar), function(radarOpt) { - compatTextStyle2(radarOpt, "name"); - if (radarOpt.name && radarOpt.axisName == null) { - radarOpt.axisName = radarOpt.name; - delete radarOpt.name; - if (true) { - deprecateLog2("name property in radar component has been changed to axisName"); - } - } - if (radarOpt.nameGap != null && radarOpt.axisNameGap == null) { - radarOpt.axisNameGap = radarOpt.nameGap; - delete radarOpt.nameGap; - if (true) { - deprecateLog2("nameGap property in radar component has been changed to axisNameGap"); - } - } - if (true) { - each$2(radarOpt.indicator, function(indicatorOpt) { - if (indicatorOpt.text) { - deprecateReplaceLog2("text", "name", "radar.indicator"); - } - }); - } - }); - each$2(toArr2(option.geo), function(geoOpt) { - if (isObject$1(geoOpt)) { - compatEC3CommonStyles2(geoOpt); - each$2(toArr2(geoOpt.regions), function(regionObj) { - compatEC3CommonStyles2(regionObj); - }); - } - }); - each$2(toArr2(option.timeline), function(timelineOpt) { - compatEC3CommonStyles2(timelineOpt); - convertNormalEmphasis2(timelineOpt, "label"); - convertNormalEmphasis2(timelineOpt, "itemStyle"); - convertNormalEmphasis2(timelineOpt, "controlStyle", true); - var data = timelineOpt.data; - isArray3(data) && each17(data, function(item) { - if (isObject5(item)) { - convertNormalEmphasis2(item, "label"); - convertNormalEmphasis2(item, "itemStyle"); - } - }); - }); - each$2(toArr2(option.toolbox), function(toolboxOpt) { - convertNormalEmphasis2(toolboxOpt, "iconStyle"); - each$2(toolboxOpt.feature, function(featureOpt) { - convertNormalEmphasis2(featureOpt, "iconStyle"); - }); - }); - compatTextStyle2(toObj2(option.axisPointer), "label"); - compatTextStyle2(toObj2(option.tooltip).axisPointer, "label"); - } - function get2(opt, path) { - var pathArr = path.split(","); - var obj = opt; - for (var i2 = 0; i2 < pathArr.length; i2++) { - obj = obj && obj[pathArr[i2]]; - if (obj == null) { - break; - } - } - return obj; - } - function set$1(opt, path, val, overwrite) { - var pathArr = path.split(","); - var obj = opt; - var key; - var i2 = 0; - for (; i2 < pathArr.length - 1; i2++) { - key = pathArr[i2]; - if (obj[key] == null) { - obj[key] = {}; - } - obj = obj[key]; - } - if (overwrite || obj[pathArr[i2]] == null) { - obj[pathArr[i2]] = val; - } - } - function compatLayoutProperties2(option) { - option && each17(LAYOUT_PROPERTIES2, function(prop) { - if (prop[0] in option && !(prop[1] in option)) { - option[prop[1]] = option[prop[0]]; - } - }); - } - var LAYOUT_PROPERTIES2 = [["x", "left"], ["y", "top"], ["x2", "right"], ["y2", "bottom"]]; - var COMPATITABLE_COMPONENTS2 = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"]; - var BAR_ITEM_STYLE_MAP2 = [["borderRadius", "barBorderRadius"], ["borderColor", "barBorderColor"], ["borderWidth", "barBorderWidth"]]; - function compatBarItemStyle2(option) { - var itemStyle = option && option.itemStyle; - if (itemStyle) { - for (var i2 = 0; i2 < BAR_ITEM_STYLE_MAP2.length; i2++) { - var oldName = BAR_ITEM_STYLE_MAP2[i2][1]; - var newName = BAR_ITEM_STYLE_MAP2[i2][0]; - if (itemStyle[oldName] != null) { - itemStyle[newName] = itemStyle[oldName]; - if (true) { - deprecateReplaceLog2(oldName, newName); - } - } - } - } - } - function compatPieLabel2(option) { - if (!option) { - return; - } - if (option.alignTo === "edge" && option.margin != null && option.edgeDistance == null) { - if (true) { - deprecateReplaceLog2("label.margin", "label.edgeDistance", "pie"); - } - option.edgeDistance = option.margin; - } - } - function compatSunburstState2(option) { - if (!option) { - return; - } - if (option.downplay && !option.blur) { - option.blur = option.downplay; - if (true) { - deprecateReplaceLog2("downplay", "blur", "sunburst"); - } - } - } - function compatGraphFocus2(option) { - if (!option) { - return; - } - if (option.focusNodeAdjacency != null) { - option.emphasis = option.emphasis || {}; - if (option.emphasis.focus == null) { - if (true) { - deprecateReplaceLog2("focusNodeAdjacency", "emphasis: { focus: 'adjacency'}", "graph/sankey"); - } - option.emphasis.focus = "adjacency"; - } - } - } - function traverseTree2(data, cb) { - if (data) { - for (var i2 = 0; i2 < data.length; i2++) { - cb(data[i2]); - data[i2] && traverseTree2(data[i2].children, cb); - } - } - } - function globalBackwardCompat2(option, isTheme) { - globalCompatStyle2(option, isTheme); - option.series = normalizeToArray2(option.series); - each17(option.series, function(seriesOpt) { - if (!isObject5(seriesOpt)) { - return; - } - var seriesType3 = seriesOpt.type; - if (seriesType3 === "line") { - if (seriesOpt.clipOverflow != null) { - seriesOpt.clip = seriesOpt.clipOverflow; - if (true) { - deprecateReplaceLog2("clipOverflow", "clip", "line"); - } - } - } else if (seriesType3 === "pie" || seriesType3 === "gauge") { - if (seriesOpt.clockWise != null) { - seriesOpt.clockwise = seriesOpt.clockWise; - if (true) { - deprecateReplaceLog2("clockWise", "clockwise"); - } - } - compatPieLabel2(seriesOpt.label); - var data = seriesOpt.data; - if (data && !isTypedArray2(data)) { - for (var i2 = 0; i2 < data.length; i2++) { - compatPieLabel2(data[i2]); - } - } - if (seriesOpt.hoverOffset != null) { - seriesOpt.emphasis = seriesOpt.emphasis || {}; - if (seriesOpt.emphasis.scaleSize = null) { - if (true) { - deprecateReplaceLog2("hoverOffset", "emphasis.scaleSize"); - } - seriesOpt.emphasis.scaleSize = seriesOpt.hoverOffset; - } - } - } else if (seriesType3 === "gauge") { - var pointerColor = get2(seriesOpt, "pointer.color"); - pointerColor != null && set$1(seriesOpt, "itemStyle.color", pointerColor); - } else if (seriesType3 === "bar") { - compatBarItemStyle2(seriesOpt); - compatBarItemStyle2(seriesOpt.backgroundStyle); - compatBarItemStyle2(seriesOpt.emphasis); - var data = seriesOpt.data; - if (data && !isTypedArray2(data)) { - for (var i2 = 0; i2 < data.length; i2++) { - if (typeof data[i2] === "object") { - compatBarItemStyle2(data[i2]); - compatBarItemStyle2(data[i2] && data[i2].emphasis); - } - } - } - } else if (seriesType3 === "sunburst") { - var highlightPolicy = seriesOpt.highlightPolicy; - if (highlightPolicy) { - seriesOpt.emphasis = seriesOpt.emphasis || {}; - if (!seriesOpt.emphasis.focus) { - seriesOpt.emphasis.focus = highlightPolicy; - if (true) { - deprecateReplaceLog2("highlightPolicy", "emphasis.focus", "sunburst"); - } - } - } - compatSunburstState2(seriesOpt); - traverseTree2(seriesOpt.data, compatSunburstState2); - } else if (seriesType3 === "graph" || seriesType3 === "sankey") { - compatGraphFocus2(seriesOpt); - } else if (seriesType3 === "map") { - if (seriesOpt.mapType && !seriesOpt.map) { - if (true) { - deprecateReplaceLog2("mapType", "map", "map"); - } - seriesOpt.map = seriesOpt.mapType; - } - if (seriesOpt.mapLocation) { - if (true) { - deprecateLog2("`mapLocation` is not used anymore."); - } - defaults2(seriesOpt, seriesOpt.mapLocation); - } - } - if (seriesOpt.hoverAnimation != null) { - seriesOpt.emphasis = seriesOpt.emphasis || {}; - if (seriesOpt.emphasis && seriesOpt.emphasis.scale == null) { - if (true) { - deprecateReplaceLog2("hoverAnimation", "emphasis.scale"); - } - seriesOpt.emphasis.scale = seriesOpt.hoverAnimation; - } - } - compatLayoutProperties2(seriesOpt); - }); - if (option.dataRange) { - option.visualMap = option.dataRange; - } - each17(COMPATITABLE_COMPONENTS2, function(componentName) { - var options = option[componentName]; - if (options) { - if (!isArray3(options)) { - options = [options]; - } - each17(options, function(option2) { - compatLayoutProperties2(option2); - }); - } - }); - } - function dataStack3(ecModel) { - var stackInfoMap = createHashMap2(); - ecModel.eachSeries(function(seriesModel) { - var stack = seriesModel.get("stack"); - if (stack) { - var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []); - var data = seriesModel.getData(); - var stackInfo = { - // Used for calculate axis extent automatically. - // TODO: Type getCalculationInfo return more specific type? - stackResultDimension: data.getCalculationInfo("stackResultDimension"), - stackedOverDimension: data.getCalculationInfo("stackedOverDimension"), - stackedDimension: data.getCalculationInfo("stackedDimension"), - stackedByDimension: data.getCalculationInfo("stackedByDimension"), - isStackedByIndex: data.getCalculationInfo("isStackedByIndex"), - data, - seriesModel - }; - if (!stackInfo.stackedDimension || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) { - return; - } - stackInfoList.length && data.setCalculationInfo("stackedOnSeries", stackInfoList[stackInfoList.length - 1].seriesModel); - stackInfoList.push(stackInfo); - } - }); - stackInfoMap.each(calculateStack2); - } - function calculateStack2(stackInfoList) { - each17(stackInfoList, function(targetStackInfo, idxInStack) { - var resultVal = []; - var resultNaN = [NaN, NaN]; - var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension]; - var targetData = targetStackInfo.data; - var isStackedByIndex = targetStackInfo.isStackedByIndex; - var stackStrategy = targetStackInfo.seriesModel.get("stackStrategy") || "samesign"; - targetData.modify(dims, function(v0, v13, dataIndex) { - var sum3 = targetData.get(targetStackInfo.stackedDimension, dataIndex); - if (isNaN(sum3)) { - return resultNaN; - } - var byValue; - var stackedDataRawIndex; - if (isStackedByIndex) { - stackedDataRawIndex = targetData.getRawIndex(dataIndex); - } else { - byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex); - } - var stackedOver = NaN; - for (var j = idxInStack - 1; j >= 0; j--) { - var stackInfo = stackInfoList[j]; - if (!isStackedByIndex) { - stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue); - } - if (stackedDataRawIndex >= 0) { - var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex); - if (stackStrategy === "all" || stackStrategy === "positive" && val > 0 || stackStrategy === "negative" && val < 0 || stackStrategy === "samesign" && sum3 >= 0 && val > 0 || stackStrategy === "samesign" && sum3 <= 0 && val < 0) { - sum3 = addSafe2(sum3, val); - stackedOver = val; - break; - } - } - } - resultVal[0] = sum3; - resultVal[1] = stackedOver; - return resultVal; - }); - }); - } - var SourceImpl2 = ( - /** @class */ - /* @__PURE__ */ function() { - function SourceImpl3(fields) { - this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS2 ? {} : []); - this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN2; - this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN2; - this.startIndex = fields.startIndex || 0; - this.dimensionsDetectedCount = fields.dimensionsDetectedCount; - this.metaRawOption = fields.metaRawOption; - var dimensionsDefine = this.dimensionsDefine = fields.dimensionsDefine; - if (dimensionsDefine) { - for (var i2 = 0; i2 < dimensionsDefine.length; i2++) { - var dim = dimensionsDefine[i2]; - if (dim.type == null) { - if (guessOrdinal2(this, i2) === BE_ORDINAL2.Must) { - dim.type = "ordinal"; - } - } - } - } - } - return SourceImpl3; - }() - ); - function isSourceInstance2(val) { - return val instanceof SourceImpl2; - } - function createSource2(sourceData, thisMetaRawOption, sourceFormat) { - sourceFormat = sourceFormat || detectSourceFormat2(sourceData); - var seriesLayoutBy = thisMetaRawOption.seriesLayoutBy; - var determined = determineSourceDimensions2(sourceData, sourceFormat, seriesLayoutBy, thisMetaRawOption.sourceHeader, thisMetaRawOption.dimensions); - var source = new SourceImpl2({ - data: sourceData, - sourceFormat, - seriesLayoutBy, - dimensionsDefine: determined.dimensionsDefine, - startIndex: determined.startIndex, - dimensionsDetectedCount: determined.dimensionsDetectedCount, - metaRawOption: clone6(thisMetaRawOption) - }); - return source; - } - function createSourceFromSeriesDataOption2(data) { - return new SourceImpl2({ - data, - sourceFormat: isTypedArray2(data) ? SOURCE_FORMAT_TYPED_ARRAY2 : SOURCE_FORMAT_ORIGINAL2 - }); - } - function cloneSourceShallow2(source) { - return new SourceImpl2({ - data: source.data, - sourceFormat: source.sourceFormat, - seriesLayoutBy: source.seriesLayoutBy, - dimensionsDefine: clone6(source.dimensionsDefine), - startIndex: source.startIndex, - dimensionsDetectedCount: source.dimensionsDetectedCount - }); - } - function detectSourceFormat2(data) { - var sourceFormat = SOURCE_FORMAT_UNKNOWN2; - if (isTypedArray2(data)) { - sourceFormat = SOURCE_FORMAT_TYPED_ARRAY2; - } else if (isArray3(data)) { - if (data.length === 0) { - sourceFormat = SOURCE_FORMAT_ARRAY_ROWS2; - } - for (var i2 = 0, len3 = data.length; i2 < len3; i2++) { - var item = data[i2]; - if (item == null) { - continue; - } else if (isArray3(item) || isTypedArray2(item)) { - sourceFormat = SOURCE_FORMAT_ARRAY_ROWS2; - break; - } else if (isObject5(item)) { - sourceFormat = SOURCE_FORMAT_OBJECT_ROWS2; - break; - } - } - } else if (isObject5(data)) { - for (var key in data) { - if (hasOwn2(data, key) && isArrayLike2(data[key])) { - sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS2; - break; - } - } - } - return sourceFormat; - } - function determineSourceDimensions2(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) { - var dimensionsDetectedCount; - var startIndex; - if (!data) { - return { - dimensionsDefine: normalizeDimensionsOption2(dimensionsDefine), - startIndex, - dimensionsDetectedCount - }; - } - if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS2) { - var dataArrayRows = data; - if (sourceHeader === "auto" || sourceHeader == null) { - arrayRowsTravelFirst2(function(val) { - if (val != null && val !== "-") { - if (isString2(val)) { - startIndex == null && (startIndex = 1); - } else { - startIndex = 0; - } - } - }, seriesLayoutBy, dataArrayRows, 10); - } else { - startIndex = isNumber2(sourceHeader) ? sourceHeader : sourceHeader ? 1 : 0; - } - if (!dimensionsDefine && startIndex === 1) { - dimensionsDefine = []; - arrayRowsTravelFirst2(function(val, index) { - dimensionsDefine[index] = val != null ? val + "" : ""; - }, seriesLayoutBy, dataArrayRows, Infinity); - } - dimensionsDetectedCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW2 ? dataArrayRows.length : dataArrayRows[0] ? dataArrayRows[0].length : null; - } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS2) { - if (!dimensionsDefine) { - dimensionsDefine = objectRowsCollectDimensions2(data); - } - } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS2) { - if (!dimensionsDefine) { - dimensionsDefine = []; - each17(data, function(colArr, key) { - dimensionsDefine.push(key); - }); - } - } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL2) { - var value0 = getDataItemValue2(data[0]); - dimensionsDetectedCount = isArray3(value0) && value0.length || 1; - } else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY2) { - if (true) { - assert2(!!dimensionsDefine, "dimensions must be given if data is TypedArray."); - } - } - return { - startIndex, - dimensionsDefine: normalizeDimensionsOption2(dimensionsDefine), - dimensionsDetectedCount - }; - } - function objectRowsCollectDimensions2(data) { - var firstIndex = 0; - var obj; - while (firstIndex < data.length && !(obj = data[firstIndex++])) { - } - if (obj) { - return keys2(obj); - } - } - function normalizeDimensionsOption2(dimensionsDefine) { - if (!dimensionsDefine) { - return; - } - var nameMap = createHashMap2(); - return map3(dimensionsDefine, function(rawItem, index) { - rawItem = isObject5(rawItem) ? rawItem : { - name: rawItem - }; - var item = { - name: rawItem.name, - displayName: rawItem.displayName, - type: rawItem.type - }; - if (item.name == null) { - return item; - } - item.name += ""; - if (item.displayName == null) { - item.displayName = item.name; - } - var exist = nameMap.get(item.name); - if (!exist) { - nameMap.set(item.name, { - count: 1 - }); - } else { - item.name += "-" + exist.count++; - } - return item; - }); - } - function arrayRowsTravelFirst2(cb, seriesLayoutBy, data, maxLoop) { - if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW2) { - for (var i2 = 0; i2 < data.length && i2 < maxLoop; i2++) { - cb(data[i2] ? data[i2][0] : null, i2); - } - } else { - var value0 = data[0] || []; - for (var i2 = 0; i2 < value0.length && i2 < maxLoop; i2++) { - cb(value0[i2], i2); - } - } - } - function shouldRetrieveDataByName2(source) { - var sourceFormat = source.sourceFormat; - return sourceFormat === SOURCE_FORMAT_OBJECT_ROWS2 || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS2; - } - var _a2, _b2, _c2; - var providerMethods2; - var mountMethods2; - var DefaultDataProvider2 = ( - /** @class */ - function() { - function DefaultDataProvider3(sourceParam, dimSize) { - var source = !isSourceInstance2(sourceParam) ? createSourceFromSeriesDataOption2(sourceParam) : sourceParam; - this._source = source; - var data = this._data = source.data; - if (source.sourceFormat === SOURCE_FORMAT_TYPED_ARRAY2) { - if (true) { - if (dimSize == null) { - throw new Error("Typed array data must specify dimension size"); - } - } - this._offset = 0; - this._dimSize = dimSize; - this._data = data; - } - mountMethods2(this, data, source); - } - DefaultDataProvider3.prototype.getSource = function() { - return this._source; - }; - DefaultDataProvider3.prototype.count = function() { - return 0; - }; - DefaultDataProvider3.prototype.getItem = function(idx, out3) { - return; - }; - DefaultDataProvider3.prototype.appendData = function(newData) { - }; - DefaultDataProvider3.prototype.clean = function() { - }; - DefaultDataProvider3.protoInitialize = function() { - var proto3 = DefaultDataProvider3.prototype; - proto3.pure = false; - proto3.persistent = true; - }(); - DefaultDataProvider3.internalField = function() { - var _a3; - mountMethods2 = function(provider, data, source) { - var sourceFormat = source.sourceFormat; - var seriesLayoutBy = source.seriesLayoutBy; - var startIndex = source.startIndex; - var dimsDef = source.dimensionsDefine; - var methods = providerMethods2[getMethodMapKey2(sourceFormat, seriesLayoutBy)]; - if (true) { - assert2(methods, "Invalide sourceFormat: " + sourceFormat); - } - extend3(provider, methods); - if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY2) { - provider.getItem = getItemForTypedArray; - provider.count = countForTypedArray; - provider.fillStorage = fillStorageForTypedArray; - } else { - var rawItemGetter = getRawSourceItemGetter2(sourceFormat, seriesLayoutBy); - provider.getItem = bind3(rawItemGetter, null, data, startIndex, dimsDef); - var rawCounter = getRawSourceDataCounter2(sourceFormat, seriesLayoutBy); - provider.count = bind3(rawCounter, null, data, startIndex, dimsDef); - } - }; - var getItemForTypedArray = function(idx, out3) { - idx = idx - this._offset; - out3 = out3 || []; - var data = this._data; - var dimSize = this._dimSize; - var offset3 = dimSize * idx; - for (var i2 = 0; i2 < dimSize; i2++) { - out3[i2] = data[offset3 + i2]; - } - return out3; - }; - var fillStorageForTypedArray = function(start4, end3, storage3, extent4) { - var data = this._data; - var dimSize = this._dimSize; - for (var dim = 0; dim < dimSize; dim++) { - var dimExtent = extent4[dim]; - var min5 = dimExtent[0] == null ? Infinity : dimExtent[0]; - var max5 = dimExtent[1] == null ? -Infinity : dimExtent[1]; - var count3 = end3 - start4; - var arr = storage3[dim]; - for (var i2 = 0; i2 < count3; i2++) { - var val = data[i2 * dimSize + dim]; - arr[start4 + i2] = val; - val < min5 && (min5 = val); - val > max5 && (max5 = val); - } - dimExtent[0] = min5; - dimExtent[1] = max5; - } - }; - var countForTypedArray = function() { - return this._data ? this._data.length / this._dimSize : 0; - }; - providerMethods2 = (_a3 = {}, _a3[SOURCE_FORMAT_ARRAY_ROWS2 + "_" + SERIES_LAYOUT_BY_COLUMN2] = { - pure: true, - appendData: appendDataSimply - }, _a3[SOURCE_FORMAT_ARRAY_ROWS2 + "_" + SERIES_LAYOUT_BY_ROW2] = { - pure: true, - appendData: function() { - throw new Error('Do not support appendData when set seriesLayoutBy: "row".'); - } - }, _a3[SOURCE_FORMAT_OBJECT_ROWS2] = { - pure: true, - appendData: appendDataSimply - }, _a3[SOURCE_FORMAT_KEYED_COLUMNS2] = { - pure: true, - appendData: function(newData) { - var data = this._data; - each17(newData, function(newCol, key) { - var oldCol = data[key] || (data[key] = []); - for (var i2 = 0; i2 < (newCol || []).length; i2++) { - oldCol.push(newCol[i2]); - } - }); - } - }, _a3[SOURCE_FORMAT_ORIGINAL2] = { - appendData: appendDataSimply - }, _a3[SOURCE_FORMAT_TYPED_ARRAY2] = { - persistent: false, - pure: true, - appendData: function(newData) { - if (true) { - assert2(isTypedArray2(newData), "Added data must be TypedArray if data in initialization is TypedArray"); - } - this._data = newData; - }, - // Clean self if data is already used. - clean: function() { - this._offset += this.count(); - this._data = null; - } - }, _a3); - function appendDataSimply(newData) { - for (var i2 = 0; i2 < newData.length; i2++) { - this._data.push(newData[i2]); - } - } - }(); - return DefaultDataProvider3; - }() - ); - var getItemSimply2 = function(rawData, startIndex, dimsDef, idx) { - return rawData[idx]; - }; - var rawSourceItemGetterMap2 = (_a2 = {}, _a2[SOURCE_FORMAT_ARRAY_ROWS2 + "_" + SERIES_LAYOUT_BY_COLUMN2] = function(rawData, startIndex, dimsDef, idx) { - return rawData[idx + startIndex]; - }, _a2[SOURCE_FORMAT_ARRAY_ROWS2 + "_" + SERIES_LAYOUT_BY_ROW2] = function(rawData, startIndex, dimsDef, idx, out3) { - idx += startIndex; - var item = out3 || []; - var data = rawData; - for (var i2 = 0; i2 < data.length; i2++) { - var row = data[i2]; - item[i2] = row ? row[idx] : null; - } - return item; - }, _a2[SOURCE_FORMAT_OBJECT_ROWS2] = getItemSimply2, _a2[SOURCE_FORMAT_KEYED_COLUMNS2] = function(rawData, startIndex, dimsDef, idx, out3) { - var item = out3 || []; - for (var i2 = 0; i2 < dimsDef.length; i2++) { - var dimName = dimsDef[i2].name; - if (true) { - if (dimName == null) { - throw new Error(); - } - } - var col = rawData[dimName]; - item[i2] = col ? col[idx] : null; - } - return item; - }, _a2[SOURCE_FORMAT_ORIGINAL2] = getItemSimply2, _a2); - function getRawSourceItemGetter2(sourceFormat, seriesLayoutBy) { - var method = rawSourceItemGetterMap2[getMethodMapKey2(sourceFormat, seriesLayoutBy)]; - if (true) { - assert2(method, 'Do not support get item on "' + sourceFormat + '", "' + seriesLayoutBy + '".'); - } - return method; - } - var countSimply2 = function(rawData, startIndex, dimsDef) { - return rawData.length; - }; - var rawSourceDataCounterMap2 = (_b2 = {}, _b2[SOURCE_FORMAT_ARRAY_ROWS2 + "_" + SERIES_LAYOUT_BY_COLUMN2] = function(rawData, startIndex, dimsDef) { - return Math.max(0, rawData.length - startIndex); - }, _b2[SOURCE_FORMAT_ARRAY_ROWS2 + "_" + SERIES_LAYOUT_BY_ROW2] = function(rawData, startIndex, dimsDef) { - var row = rawData[0]; - return row ? Math.max(0, row.length - startIndex) : 0; - }, _b2[SOURCE_FORMAT_OBJECT_ROWS2] = countSimply2, _b2[SOURCE_FORMAT_KEYED_COLUMNS2] = function(rawData, startIndex, dimsDef) { - var dimName = dimsDef[0].name; - if (true) { - if (dimName == null) { - throw new Error(); - } - } - var col = rawData[dimName]; - return col ? col.length : 0; - }, _b2[SOURCE_FORMAT_ORIGINAL2] = countSimply2, _b2); - function getRawSourceDataCounter2(sourceFormat, seriesLayoutBy) { - var method = rawSourceDataCounterMap2[getMethodMapKey2(sourceFormat, seriesLayoutBy)]; - if (true) { - assert2(method, 'Do not support count on "' + sourceFormat + '", "' + seriesLayoutBy + '".'); - } - return method; - } - var getRawValueSimply2 = function(dataItem, dimIndex, property) { - return dataItem[dimIndex]; - }; - var rawSourceValueGetterMap2 = (_c2 = {}, _c2[SOURCE_FORMAT_ARRAY_ROWS2] = getRawValueSimply2, _c2[SOURCE_FORMAT_OBJECT_ROWS2] = function(dataItem, dimIndex, property) { - return dataItem[property]; - }, _c2[SOURCE_FORMAT_KEYED_COLUMNS2] = getRawValueSimply2, _c2[SOURCE_FORMAT_ORIGINAL2] = function(dataItem, dimIndex, property) { - var value = getDataItemValue2(dataItem); - return !(value instanceof Array) ? value : value[dimIndex]; - }, _c2[SOURCE_FORMAT_TYPED_ARRAY2] = getRawValueSimply2, _c2); - function getRawSourceValueGetter2(sourceFormat) { - var method = rawSourceValueGetterMap2[sourceFormat]; - if (true) { - assert2(method, 'Do not support get value on "' + sourceFormat + '".'); - } - return method; - } - function getMethodMapKey2(sourceFormat, seriesLayoutBy) { - return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS2 ? sourceFormat + "_" + seriesLayoutBy : sourceFormat; - } - function retrieveRawValue2(data, dataIndex, dim) { - if (!data) { - return; - } - var dataItem = data.getRawDataItem(dataIndex); - if (dataItem == null) { - return; - } - var store = data.getStore(); - var sourceFormat = store.getSource().sourceFormat; - if (dim != null) { - var dimIndex = data.getDimensionIndex(dim); - var property = store.getDimensionProperty(dimIndex); - return getRawSourceValueGetter2(sourceFormat)(dataItem, dimIndex, property); - } else { - var result = dataItem; - if (sourceFormat === SOURCE_FORMAT_ORIGINAL2) { - result = getDataItemValue2(dataItem); - } - return result; - } - } - var DIMENSION_LABEL_REG2 = /\{@(.+?)\}/g; - var DataFormatMixin2 = ( - /** @class */ - function() { - function DataFormatMixin3() { - } - DataFormatMixin3.prototype.getDataParams = function(dataIndex, dataType) { - var data = this.getData(dataType); - var rawValue = this.getRawValue(dataIndex, dataType); - var rawDataIndex = data.getRawIndex(dataIndex); - var name = data.getName(dataIndex); - var itemOpt = data.getRawDataItem(dataIndex); - var style = data.getItemVisual(dataIndex, "style"); - var color2 = style && style[data.getItemVisual(dataIndex, "drawType") || "fill"]; - var borderColor = style && style.stroke; - var mainType = this.mainType; - var isSeries3 = mainType === "series"; - var userOutput = data.userOutput && data.userOutput.get(); - return { - componentType: mainType, - componentSubType: this.subType, - componentIndex: this.componentIndex, - seriesType: isSeries3 ? this.subType : null, - seriesIndex: this.seriesIndex, - seriesId: isSeries3 ? this.id : null, - seriesName: isSeries3 ? this.name : null, - name, - dataIndex: rawDataIndex, - data: itemOpt, - dataType, - value: rawValue, - color: color2, - borderColor, - dimensionNames: userOutput ? userOutput.fullDimensions : null, - encode: userOutput ? userOutput.encode : null, - // Param name list for mapping `a`, `b`, `c`, `d`, `e` - $vars: ["seriesName", "name", "value"] - }; - }; - DataFormatMixin3.prototype.getFormattedLabel = function(dataIndex, status, dataType, labelDimIndex, formatter, extendParams) { - status = status || "normal"; - var data = this.getData(dataType); - var params = this.getDataParams(dataIndex, dataType); - if (extendParams) { - params.value = extendParams.interpolatedValue; - } - if (labelDimIndex != null && isArray3(params.value)) { - params.value = params.value[labelDimIndex]; - } - if (!formatter) { - var itemModel = data.getItemModel(dataIndex); - formatter = itemModel.get(status === "normal" ? ["label", "formatter"] : [status, "label", "formatter"]); - } - if (isFunction2(formatter)) { - params.status = status; - params.dimensionIndex = labelDimIndex; - return formatter(params); - } else if (isString2(formatter)) { - var str = formatTpl2(formatter, params); - return str.replace(DIMENSION_LABEL_REG2, function(origin, dimStr) { - var len3 = dimStr.length; - var dimLoose = dimStr; - if (dimLoose.charAt(0) === "[" && dimLoose.charAt(len3 - 1) === "]") { - dimLoose = +dimLoose.slice(1, len3 - 1); - if (true) { - if (isNaN(dimLoose)) { - error3("Invalide label formatter: @" + dimStr + ", only support @[0], @[1], @[2], ..."); - } - } - } - var val = retrieveRawValue2(data, dataIndex, dimLoose); - if (extendParams && isArray3(extendParams.interpolatedValue)) { - var dimIndex = data.getDimensionIndex(dimLoose); - if (dimIndex >= 0) { - val = extendParams.interpolatedValue[dimIndex]; - } - } - return val != null ? val + "" : ""; - }); - } - }; - DataFormatMixin3.prototype.getRawValue = function(idx, dataType) { - return retrieveRawValue2(this.getData(dataType), idx); - }; - DataFormatMixin3.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - return; - }; - return DataFormatMixin3; - }() - ); - function normalizeTooltipFormatResult2(result) { - var markupText; - var markupFragment; - if (isObject5(result)) { - if (result.type) { - markupFragment = result; - } else { - if (true) { - console.warn("The return type of `formatTooltip` is not supported: " + makePrintable2(result)); - } - } - } else { - markupText = result; - } - return { - text: markupText, - // markers: markers || markersExisting, - frag: markupFragment - }; - } - function createTask2(define2) { - return new Task2(define2); - } - var Task2 = ( - /** @class */ - function() { - function Task3(define2) { - define2 = define2 || {}; - this._reset = define2.reset; - this._plan = define2.plan; - this._count = define2.count; - this._onDirty = define2.onDirty; - this._dirty = true; - } - Task3.prototype.perform = function(performArgs) { - var upTask = this._upstream; - var skip = performArgs && performArgs.skip; - if (this._dirty && upTask) { - var context = this.context; - context.data = context.outputData = upTask.context.outputData; - } - if (this.__pipeline) { - this.__pipeline.currentTask = this; - } - var planResult; - if (this._plan && !skip) { - planResult = this._plan(this.context); - } - var lastModBy = normalizeModBy(this._modBy); - var lastModDataCount = this._modDataCount || 0; - var modBy = normalizeModBy(performArgs && performArgs.modBy); - var modDataCount = performArgs && performArgs.modDataCount || 0; - if (lastModBy !== modBy || lastModDataCount !== modDataCount) { - planResult = "reset"; - } - function normalizeModBy(val) { - !(val >= 1) && (val = 1); - return val; - } - var forceFirstProgress; - if (this._dirty || planResult === "reset") { - this._dirty = false; - forceFirstProgress = this._doReset(skip); - } - this._modBy = modBy; - this._modDataCount = modDataCount; - var step = performArgs && performArgs.step; - if (upTask) { - if (true) { - assert2(upTask._outputDueEnd != null); - } - this._dueEnd = upTask._outputDueEnd; - } else { - if (true) { - assert2(!this._progress || this._count); - } - this._dueEnd = this._count ? this._count(this.context) : Infinity; - } - if (this._progress) { - var start4 = this._dueIndex; - var end3 = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd); - if (!skip && (forceFirstProgress || start4 < end3)) { - var progress = this._progress; - if (isArray3(progress)) { - for (var i2 = 0; i2 < progress.length; i2++) { - this._doProgress(progress[i2], start4, end3, modBy, modDataCount); - } - } else { - this._doProgress(progress, start4, end3, modBy, modDataCount); - } - } - this._dueIndex = end3; - var outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : end3; - if (true) { - assert2(outputDueEnd >= this._outputDueEnd); - } - this._outputDueEnd = outputDueEnd; - } else { - this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd; - } - return this.unfinished(); - }; - Task3.prototype.dirty = function() { - this._dirty = true; - this._onDirty && this._onDirty(this.context); - }; - Task3.prototype._doProgress = function(progress, start4, end3, modBy, modDataCount) { - iterator2.reset(start4, end3, modBy, modDataCount); - this._callingProgress = progress; - this._callingProgress({ - start: start4, - end: end3, - count: end3 - start4, - next: iterator2.next - }, this.context); - }; - Task3.prototype._doReset = function(skip) { - this._dueIndex = this._outputDueEnd = this._dueEnd = 0; - this._settedOutputEnd = null; - var progress; - var forceFirstProgress; - if (!skip && this._reset) { - progress = this._reset(this.context); - if (progress && progress.progress) { - forceFirstProgress = progress.forceFirstProgress; - progress = progress.progress; - } - if (isArray3(progress) && !progress.length) { - progress = null; - } - } - this._progress = progress; - this._modBy = this._modDataCount = null; - var downstream = this._downstream; - downstream && downstream.dirty(); - return forceFirstProgress; - }; - Task3.prototype.unfinished = function() { - return this._progress && this._dueIndex < this._dueEnd; - }; - Task3.prototype.pipe = function(downTask) { - if (true) { - assert2(downTask && !downTask._disposed && downTask !== this); - } - if (this._downstream !== downTask || this._dirty) { - this._downstream = downTask; - downTask._upstream = this; - downTask.dirty(); - } - }; - Task3.prototype.dispose = function() { - if (this._disposed) { - return; - } - this._upstream && (this._upstream._downstream = null); - this._downstream && (this._downstream._upstream = null); - this._dirty = false; - this._disposed = true; - }; - Task3.prototype.getUpstream = function() { - return this._upstream; - }; - Task3.prototype.getDownstream = function() { - return this._downstream; - }; - Task3.prototype.setOutputEnd = function(end3) { - this._outputDueEnd = this._settedOutputEnd = end3; - }; - return Task3; - }() - ); - var iterator2 = /* @__PURE__ */ function() { - var end3; - var current; - var modBy; - var modDataCount; - var winCount; - var it = { - reset: function(s, e3, sStep, sCount) { - current = s; - end3 = e3; - modBy = sStep; - modDataCount = sCount; - winCount = Math.ceil(modDataCount / modBy); - it.next = modBy > 1 && modDataCount > 0 ? modNext : sequentialNext; - } - }; - return it; - function sequentialNext() { - return current < end3 ? current++ : null; - } - function modNext() { - var dataIndex = current % winCount * modBy + Math.ceil(current / winCount); - var result = current >= end3 ? null : dataIndex < modDataCount ? dataIndex : current; - current++; - return result; - } - }(); - function parseDataValue2(value, opt) { - var dimType = opt && opt.type; - if (dimType === "ordinal") { - return value; - } - if (dimType === "time" && !isNumber2(value) && value != null && value !== "-") { - value = +parseDate2(value); - } - return value == null || value === "" ? NaN : Number(value); - } - var valueParserMap2 = createHashMap2({ - "number": function(val) { - return parseFloat(val); - }, - "time": function(val) { - return +parseDate2(val); - }, - "trim": function(val) { - return isString2(val) ? trim3(val) : val; - } - }); - function getRawValueParser2(type) { - return valueParserMap2.get(type); - } - var ORDER_COMPARISON_OP_MAP2 = { - lt: function(lval, rval) { - return lval < rval; - }, - lte: function(lval, rval) { - return lval <= rval; - }, - gt: function(lval, rval) { - return lval > rval; - }, - gte: function(lval, rval) { - return lval >= rval; - } - }; - var FilterOrderComparator2 = ( - /** @class */ - function() { - function FilterOrderComparator3(op, rval) { - if (!isNumber2(rval)) { - var errMsg = ""; - if (true) { - errMsg = 'rvalue of "<", ">", "<=", ">=" can only be number in filter.'; - } - throwError2(errMsg); - } - this._opFn = ORDER_COMPARISON_OP_MAP2[op]; - this._rvalFloat = numericToNumber2(rval); - } - FilterOrderComparator3.prototype.evaluate = function(lval) { - return isNumber2(lval) ? this._opFn(lval, this._rvalFloat) : this._opFn(numericToNumber2(lval), this._rvalFloat); - }; - return FilterOrderComparator3; - }() - ); - var SortOrderComparator2 = ( - /** @class */ - function() { - function SortOrderComparator3(order, incomparable) { - var isDesc = order === "desc"; - this._resultLT = isDesc ? 1 : -1; - if (incomparable == null) { - incomparable = isDesc ? "min" : "max"; - } - this._incomparable = incomparable === "min" ? -Infinity : Infinity; - } - SortOrderComparator3.prototype.evaluate = function(lval, rval) { - var lvalFloat = isNumber2(lval) ? lval : numericToNumber2(lval); - var rvalFloat = isNumber2(rval) ? rval : numericToNumber2(rval); - var lvalNotNumeric = isNaN(lvalFloat); - var rvalNotNumeric = isNaN(rvalFloat); - if (lvalNotNumeric) { - lvalFloat = this._incomparable; - } - if (rvalNotNumeric) { - rvalFloat = this._incomparable; - } - if (lvalNotNumeric && rvalNotNumeric) { - var lvalIsStr = isString2(lval); - var rvalIsStr = isString2(rval); - if (lvalIsStr) { - lvalFloat = rvalIsStr ? lval : 0; - } - if (rvalIsStr) { - rvalFloat = lvalIsStr ? rval : 0; - } - } - return lvalFloat < rvalFloat ? this._resultLT : lvalFloat > rvalFloat ? -this._resultLT : 0; - }; - return SortOrderComparator3; - }() - ); - var FilterEqualityComparator2 = ( - /** @class */ - function() { - function FilterEqualityComparator3(isEq, rval) { - this._rval = rval; - this._isEQ = isEq; - this._rvalTypeof = typeof rval; - this._rvalFloat = numericToNumber2(rval); - } - FilterEqualityComparator3.prototype.evaluate = function(lval) { - var eqResult = lval === this._rval; - if (!eqResult) { - var lvalTypeof = typeof lval; - if (lvalTypeof !== this._rvalTypeof && (lvalTypeof === "number" || this._rvalTypeof === "number")) { - eqResult = numericToNumber2(lval) === this._rvalFloat; - } - } - return this._isEQ ? eqResult : !eqResult; - }; - return FilterEqualityComparator3; - }() - ); - function createFilterComparator2(op, rval) { - return op === "eq" || op === "ne" ? new FilterEqualityComparator2(op === "eq", rval) : hasOwn2(ORDER_COMPARISON_OP_MAP2, op) ? new FilterOrderComparator2(op, rval) : null; - } - var ExternalSource2 = ( - /** @class */ - function() { - function ExternalSource3() { - } - ExternalSource3.prototype.getRawData = function() { - throw new Error("not supported"); - }; - ExternalSource3.prototype.getRawDataItem = function(dataIndex) { - throw new Error("not supported"); - }; - ExternalSource3.prototype.cloneRawData = function() { - return; - }; - ExternalSource3.prototype.getDimensionInfo = function(dim) { - return; - }; - ExternalSource3.prototype.cloneAllDimensionInfo = function() { - return; - }; - ExternalSource3.prototype.count = function() { - return; - }; - ExternalSource3.prototype.retrieveValue = function(dataIndex, dimIndex) { - return; - }; - ExternalSource3.prototype.retrieveValueFromItem = function(dataItem, dimIndex) { - return; - }; - ExternalSource3.prototype.convertValue = function(rawVal, dimInfo) { - return parseDataValue2(rawVal, dimInfo); - }; - return ExternalSource3; - }() - ); - function createExternalSource2(internalSource, externalTransform) { - var extSource = new ExternalSource2(); - var data = internalSource.data; - var sourceFormat = extSource.sourceFormat = internalSource.sourceFormat; - var sourceHeaderCount = internalSource.startIndex; - var errMsg = ""; - if (internalSource.seriesLayoutBy !== SERIES_LAYOUT_BY_COLUMN2) { - if (true) { - errMsg = '`seriesLayoutBy` of upstream dataset can only be "column" in data transform.'; - } - throwError2(errMsg); - } - var dimensions = []; - var dimsByName = {}; - var dimsDef = internalSource.dimensionsDefine; - if (dimsDef) { - each17(dimsDef, function(dimDef, idx) { - var name = dimDef.name; - var dimDefExt = { - index: idx, - name, - displayName: dimDef.displayName - }; - dimensions.push(dimDefExt); - if (name != null) { - var errMsg_1 = ""; - if (hasOwn2(dimsByName, name)) { - if (true) { - errMsg_1 = 'dimension name "' + name + '" duplicated.'; - } - throwError2(errMsg_1); - } - dimsByName[name] = dimDefExt; - } - }); - } else { - for (var i2 = 0; i2 < internalSource.dimensionsDetectedCount || 0; i2++) { - dimensions.push({ - index: i2 - }); - } - } - var rawItemGetter = getRawSourceItemGetter2(sourceFormat, SERIES_LAYOUT_BY_COLUMN2); - if (externalTransform.__isBuiltIn) { - extSource.getRawDataItem = function(dataIndex) { - return rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex); - }; - extSource.getRawData = bind3(getRawData2, null, internalSource); - } - extSource.cloneRawData = bind3(cloneRawData2, null, internalSource); - var rawCounter = getRawSourceDataCounter2(sourceFormat, SERIES_LAYOUT_BY_COLUMN2); - extSource.count = bind3(rawCounter, null, data, sourceHeaderCount, dimensions); - var rawValueGetter = getRawSourceValueGetter2(sourceFormat); - extSource.retrieveValue = function(dataIndex, dimIndex) { - var rawItem = rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex); - return retrieveValueFromItem(rawItem, dimIndex); - }; - var retrieveValueFromItem = extSource.retrieveValueFromItem = function(dataItem, dimIndex) { - if (dataItem == null) { - return; - } - var dimDef = dimensions[dimIndex]; - if (dimDef) { - return rawValueGetter(dataItem, dimIndex, dimDef.name); - } - }; - extSource.getDimensionInfo = bind3(getDimensionInfo2, null, dimensions, dimsByName); - extSource.cloneAllDimensionInfo = bind3(cloneAllDimensionInfo2, null, dimensions); - return extSource; - } - function getRawData2(upstream) { - var sourceFormat = upstream.sourceFormat; - if (!isSupportedSourceFormat2(sourceFormat)) { - var errMsg = ""; - if (true) { - errMsg = "`getRawData` is not supported in source format " + sourceFormat; - } - throwError2(errMsg); - } - return upstream.data; - } - function cloneRawData2(upstream) { - var sourceFormat = upstream.sourceFormat; - var data = upstream.data; - if (!isSupportedSourceFormat2(sourceFormat)) { - var errMsg = ""; - if (true) { - errMsg = "`cloneRawData` is not supported in source format " + sourceFormat; - } - throwError2(errMsg); - } - if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS2) { - var result = []; - for (var i2 = 0, len3 = data.length; i2 < len3; i2++) { - result.push(data[i2].slice()); - } - return result; - } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS2) { - var result = []; - for (var i2 = 0, len3 = data.length; i2 < len3; i2++) { - result.push(extend3({}, data[i2])); - } - return result; - } - } - function getDimensionInfo2(dimensions, dimsByName, dim) { - if (dim == null) { - return; - } - if (isNumber2(dim) || !isNaN(dim) && !hasOwn2(dimsByName, dim)) { - return dimensions[dim]; - } else if (hasOwn2(dimsByName, dim)) { - return dimsByName[dim]; - } - } - function cloneAllDimensionInfo2(dimensions) { - return clone6(dimensions); - } - var externalTransformMap2 = createHashMap2(); - function registerExternalTransform2(externalTransform) { - externalTransform = clone6(externalTransform); - var type = externalTransform.type; - var errMsg = ""; - if (!type) { - if (true) { - errMsg = "Must have a `type` when `registerTransform`."; - } - throwError2(errMsg); - } - var typeParsed = type.split(":"); - if (typeParsed.length !== 2) { - if (true) { - errMsg = 'Name must include namespace like "ns:regression".'; - } - throwError2(errMsg); - } - var isBuiltIn = false; - if (typeParsed[0] === "echarts") { - type = typeParsed[1]; - isBuiltIn = true; - } - externalTransform.__isBuiltIn = isBuiltIn; - externalTransformMap2.set(type, externalTransform); - } - function applyDataTransform2(rawTransOption, sourceList, infoForPrint) { - var pipedTransOption = normalizeToArray2(rawTransOption); - var pipeLen = pipedTransOption.length; - var errMsg = ""; - if (!pipeLen) { - if (true) { - errMsg = "If `transform` declared, it should at least contain one transform."; - } - throwError2(errMsg); - } - for (var i2 = 0, len3 = pipeLen; i2 < len3; i2++) { - var transOption = pipedTransOption[i2]; - sourceList = applySingleDataTransform2(transOption, sourceList, infoForPrint, pipeLen === 1 ? null : i2); - if (i2 !== len3 - 1) { - sourceList.length = Math.max(sourceList.length, 1); - } - } - return sourceList; - } - function applySingleDataTransform2(transOption, upSourceList, infoForPrint, pipeIndex) { - var errMsg = ""; - if (!upSourceList.length) { - if (true) { - errMsg = "Must have at least one upstream dataset."; - } - throwError2(errMsg); - } - if (!isObject5(transOption)) { - if (true) { - errMsg = "transform declaration must be an object rather than " + typeof transOption + "."; - } - throwError2(errMsg); - } - var transType = transOption.type; - var externalTransform = externalTransformMap2.get(transType); - if (!externalTransform) { - if (true) { - errMsg = 'Can not find transform on type "' + transType + '".'; - } - throwError2(errMsg); - } - var extUpSourceList = map3(upSourceList, function(upSource) { - return createExternalSource2(upSource, externalTransform); - }); - var resultList = normalizeToArray2(externalTransform.transform({ - upstream: extUpSourceList[0], - upstreamList: extUpSourceList, - config: clone6(transOption.config) - })); - if (true) { - if (transOption.print) { - var printStrArr = map3(resultList, function(extSource) { - var pipeIndexStr = pipeIndex != null ? " === pipe index: " + pipeIndex : ""; - return ["=== dataset index: " + infoForPrint.datasetIndex + pipeIndexStr + " ===", "- transform result data:", makePrintable2(extSource.data), "- transform result dimensions:", makePrintable2(extSource.dimensions)].join("\n"); - }).join("\n"); - log2(printStrArr); - } - } - return map3(resultList, function(result, resultIndex) { - var errMsg2 = ""; - if (!isObject5(result)) { - if (true) { - errMsg2 = "A transform should not return some empty results."; - } - throwError2(errMsg2); - } - if (!result.data) { - if (true) { - errMsg2 = "Transform result data should be not be null or undefined"; - } - throwError2(errMsg2); - } - var sourceFormat = detectSourceFormat2(result.data); - if (!isSupportedSourceFormat2(sourceFormat)) { - if (true) { - errMsg2 = "Transform result data should be array rows or object rows."; - } - throwError2(errMsg2); - } - var resultMetaRawOption; - var firstUpSource = upSourceList[0]; - if (firstUpSource && resultIndex === 0 && !result.dimensions) { - var startIndex = firstUpSource.startIndex; - if (startIndex) { - result.data = firstUpSource.data.slice(0, startIndex).concat(result.data); - } - resultMetaRawOption = { - seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN2, - sourceHeader: startIndex, - dimensions: firstUpSource.metaRawOption.dimensions - }; - } else { - resultMetaRawOption = { - seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN2, - sourceHeader: 0, - dimensions: result.dimensions - }; - } - return createSource2(result.data, resultMetaRawOption, null); - }); - } - function isSupportedSourceFormat2(sourceFormat) { - return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS2 || sourceFormat === SOURCE_FORMAT_OBJECT_ROWS2; - } - var UNDEFINED2 = "undefined"; - var CtorUint32Array2 = typeof Uint32Array === UNDEFINED2 ? Array : Uint32Array; - var CtorUint16Array2 = typeof Uint16Array === UNDEFINED2 ? Array : Uint16Array; - var CtorInt32Array3 = typeof Int32Array === UNDEFINED2 ? Array : Int32Array; - var CtorFloat64Array2 = typeof Float64Array === UNDEFINED2 ? Array : Float64Array; - var dataCtors2 = { - "float": CtorFloat64Array2, - "int": CtorInt32Array3, - // Ordinal data type can be string or int - "ordinal": Array, - "number": Array, - "time": CtorFloat64Array2 - }; - var defaultDimValueGetters2; - function getIndicesCtor2(rawCount) { - return rawCount > 65535 ? CtorUint32Array2 : CtorUint16Array2; - } - function getInitialExtent2() { - return [Infinity, -Infinity]; - } - function cloneChunk2(originalChunk) { - var Ctor = originalChunk.constructor; - return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk); - } - function prepareStore2(store, dimIdx, dimType, end3, append) { - var DataCtor = dataCtors2[dimType || "float"]; - if (append) { - var oldStore = store[dimIdx]; - var oldLen = oldStore && oldStore.length; - if (!(oldLen === end3)) { - var newStore = new DataCtor(end3); - for (var j = 0; j < oldLen; j++) { - newStore[j] = oldStore[j]; - } - store[dimIdx] = newStore; - } - } else { - store[dimIdx] = new DataCtor(end3); - } - } - var DataStore2 = ( - /** @class */ - function() { - function DataStore3() { - this._chunks = []; - this._rawExtent = []; - this._extent = []; - this._count = 0; - this._rawCount = 0; - this._calcDimNameToIdx = createHashMap2(); - } - DataStore3.prototype.initData = function(provider, inputDimensions, dimValueGetter) { - if (true) { - assert2(isFunction2(provider.getItem) && isFunction2(provider.count), "Invalid data provider."); - } - this._provider = provider; - this._chunks = []; - this._indices = null; - this.getRawIndex = this._getRawIdxIdentity; - var source = provider.getSource(); - var defaultGetter = this.defaultDimValueGetter = defaultDimValueGetters2[source.sourceFormat]; - this._dimValueGetter = dimValueGetter || defaultGetter; - this._rawExtent = []; - var willRetrieveDataByName = shouldRetrieveDataByName2(source); - this._dimensions = map3(inputDimensions, function(dim) { - if (true) { - if (willRetrieveDataByName) { - assert2(dim.property != null); - } - } - return { - // Only pick these two props. Not leak other properties like orderMeta. - type: dim.type, - property: dim.property - }; - }); - this._initDataFromProvider(0, provider.count()); - }; - DataStore3.prototype.getProvider = function() { - return this._provider; - }; - DataStore3.prototype.getSource = function() { - return this._provider.getSource(); - }; - DataStore3.prototype.ensureCalculationDimension = function(dimName, type) { - var calcDimNameToIdx = this._calcDimNameToIdx; - var dimensions = this._dimensions; - var calcDimIdx = calcDimNameToIdx.get(dimName); - if (calcDimIdx != null) { - if (dimensions[calcDimIdx].type === type) { - return calcDimIdx; - } - } else { - calcDimIdx = dimensions.length; - } - dimensions[calcDimIdx] = { - type - }; - calcDimNameToIdx.set(dimName, calcDimIdx); - this._chunks[calcDimIdx] = new dataCtors2[type || "float"](this._rawCount); - this._rawExtent[calcDimIdx] = getInitialExtent2(); - return calcDimIdx; - }; - DataStore3.prototype.collectOrdinalMeta = function(dimIdx, ordinalMeta) { - var chunk = this._chunks[dimIdx]; - var dim = this._dimensions[dimIdx]; - var rawExtents = this._rawExtent; - var offset3 = dim.ordinalOffset || 0; - var len3 = chunk.length; - if (offset3 === 0) { - rawExtents[dimIdx] = getInitialExtent2(); - } - var dimRawExtent = rawExtents[dimIdx]; - for (var i2 = offset3; i2 < len3; i2++) { - var val = chunk[i2] = ordinalMeta.parseAndCollect(chunk[i2]); - if (!isNaN(val)) { - dimRawExtent[0] = Math.min(val, dimRawExtent[0]); - dimRawExtent[1] = Math.max(val, dimRawExtent[1]); - } - } - dim.ordinalMeta = ordinalMeta; - dim.ordinalOffset = len3; - dim.type = "ordinal"; - }; - DataStore3.prototype.getOrdinalMeta = function(dimIdx) { - var dimInfo = this._dimensions[dimIdx]; - var ordinalMeta = dimInfo.ordinalMeta; - return ordinalMeta; - }; - DataStore3.prototype.getDimensionProperty = function(dimIndex) { - var item = this._dimensions[dimIndex]; - return item && item.property; - }; - DataStore3.prototype.appendData = function(data) { - if (true) { - assert2(!this._indices, "appendData can only be called on raw data."); - } - var provider = this._provider; - var start4 = this.count(); - provider.appendData(data); - var end3 = provider.count(); - if (!provider.persistent) { - end3 += start4; - } - if (start4 < end3) { - this._initDataFromProvider(start4, end3, true); - } - return [start4, end3]; - }; - DataStore3.prototype.appendValues = function(values, minFillLen) { - var chunks = this._chunks; - var dimensions = this._dimensions; - var dimLen = dimensions.length; - var rawExtent = this._rawExtent; - var start4 = this.count(); - var end3 = start4 + Math.max(values.length, minFillLen || 0); - for (var i2 = 0; i2 < dimLen; i2++) { - var dim = dimensions[i2]; - prepareStore2(chunks, i2, dim.type, end3, true); - } - var emptyDataItem = []; - for (var idx = start4; idx < end3; idx++) { - var sourceIdx = idx - start4; - for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) { - var dim = dimensions[dimIdx]; - var val = defaultDimValueGetters2.arrayRows.call(this, values[sourceIdx] || emptyDataItem, dim.property, sourceIdx, dimIdx); - chunks[dimIdx][idx] = val; - var dimRawExtent = rawExtent[dimIdx]; - val < dimRawExtent[0] && (dimRawExtent[0] = val); - val > dimRawExtent[1] && (dimRawExtent[1] = val); - } - } - this._rawCount = this._count = end3; - return { - start: start4, - end: end3 - }; - }; - DataStore3.prototype._initDataFromProvider = function(start4, end3, append) { - var provider = this._provider; - var chunks = this._chunks; - var dimensions = this._dimensions; - var dimLen = dimensions.length; - var rawExtent = this._rawExtent; - var dimNames = map3(dimensions, function(dim2) { - return dim2.property; - }); - for (var i2 = 0; i2 < dimLen; i2++) { - var dim = dimensions[i2]; - if (!rawExtent[i2]) { - rawExtent[i2] = getInitialExtent2(); - } - prepareStore2(chunks, i2, dim.type, end3, append); - } - if (provider.fillStorage) { - provider.fillStorage(start4, end3, chunks, rawExtent); - } else { - var dataItem = []; - for (var idx = start4; idx < end3; idx++) { - dataItem = provider.getItem(idx, dataItem); - for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) { - var dimStorage = chunks[dimIdx]; - var val = this._dimValueGetter(dataItem, dimNames[dimIdx], idx, dimIdx); - dimStorage[idx] = val; - var dimRawExtent = rawExtent[dimIdx]; - val < dimRawExtent[0] && (dimRawExtent[0] = val); - val > dimRawExtent[1] && (dimRawExtent[1] = val); - } - } - } - if (!provider.persistent && provider.clean) { - provider.clean(); - } - this._rawCount = this._count = end3; - this._extent = []; - }; - DataStore3.prototype.count = function() { - return this._count; - }; - DataStore3.prototype.get = function(dim, idx) { - if (!(idx >= 0 && idx < this._count)) { - return NaN; - } - var dimStore = this._chunks[dim]; - return dimStore ? dimStore[this.getRawIndex(idx)] : NaN; - }; - DataStore3.prototype.getValues = function(dimensions, idx) { - var values = []; - var dimArr = []; - if (idx == null) { - idx = dimensions; - dimensions = []; - for (var i2 = 0; i2 < this._dimensions.length; i2++) { - dimArr.push(i2); - } - } else { - dimArr = dimensions; - } - for (var i2 = 0, len3 = dimArr.length; i2 < len3; i2++) { - values.push(this.get(dimArr[i2], idx)); - } - return values; - }; - DataStore3.prototype.getByRawIndex = function(dim, rawIdx) { - if (!(rawIdx >= 0 && rawIdx < this._rawCount)) { - return NaN; - } - var dimStore = this._chunks[dim]; - return dimStore ? dimStore[rawIdx] : NaN; - }; - DataStore3.prototype.getSum = function(dim) { - var dimData = this._chunks[dim]; - var sum3 = 0; - if (dimData) { - for (var i2 = 0, len3 = this.count(); i2 < len3; i2++) { - var value = this.get(dim, i2); - if (!isNaN(value)) { - sum3 += value; - } - } - } - return sum3; - }; - DataStore3.prototype.getMedian = function(dim) { - var dimDataArray = []; - this.each([dim], function(val) { - if (!isNaN(val)) { - dimDataArray.push(val); - } - }); - var sortedDimDataArray = dimDataArray.sort(function(a, b) { - return a - b; - }); - var len3 = this.count(); - return len3 === 0 ? 0 : len3 % 2 === 1 ? sortedDimDataArray[(len3 - 1) / 2] : (sortedDimDataArray[len3 / 2] + sortedDimDataArray[len3 / 2 - 1]) / 2; - }; - DataStore3.prototype.indexOfRawIndex = function(rawIndex) { - if (rawIndex >= this._rawCount || rawIndex < 0) { - return -1; - } - if (!this._indices) { - return rawIndex; - } - var indices = this._indices; - var rawDataIndex = indices[rawIndex]; - if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) { - return rawIndex; - } - var left = 0; - var right = this._count - 1; - while (left <= right) { - var mid = (left + right) / 2 | 0; - if (indices[mid] < rawIndex) { - left = mid + 1; - } else if (indices[mid] > rawIndex) { - right = mid - 1; - } else { - return mid; - } - } - return -1; - }; - DataStore3.prototype.indicesOfNearest = function(dim, value, maxDistance) { - var chunks = this._chunks; - var dimData = chunks[dim]; - var nearestIndices = []; - if (!dimData) { - return nearestIndices; - } - if (maxDistance == null) { - maxDistance = Infinity; - } - var minDist = Infinity; - var minDiff = -1; - var nearestIndicesLen = 0; - for (var i2 = 0, len3 = this.count(); i2 < len3; i2++) { - var dataIndex = this.getRawIndex(i2); - var diff = value - dimData[dataIndex]; - var dist4 = Math.abs(diff); - if (dist4 <= maxDistance) { - if (dist4 < minDist || dist4 === minDist && diff >= 0 && minDiff < 0) { - minDist = dist4; - minDiff = diff; - nearestIndicesLen = 0; - } - if (diff === minDiff) { - nearestIndices[nearestIndicesLen++] = i2; - } - } - } - nearestIndices.length = nearestIndicesLen; - return nearestIndices; - }; - DataStore3.prototype.getIndices = function() { - var newIndices; - var indices = this._indices; - if (indices) { - var Ctor = indices.constructor; - var thisCount = this._count; - if (Ctor === Array) { - newIndices = new Ctor(thisCount); - for (var i2 = 0; i2 < thisCount; i2++) { - newIndices[i2] = indices[i2]; - } - } else { - newIndices = new Ctor(indices.buffer, 0, thisCount); - } - } else { - var Ctor = getIndicesCtor2(this._rawCount); - newIndices = new Ctor(this.count()); - for (var i2 = 0; i2 < newIndices.length; i2++) { - newIndices[i2] = i2; - } - } - return newIndices; - }; - DataStore3.prototype.filter = function(dims, cb) { - if (!this._count) { - return this; - } - var newStore = this.clone(); - var count3 = newStore.count(); - var Ctor = getIndicesCtor2(newStore._rawCount); - var newIndices = new Ctor(count3); - var value = []; - var dimSize = dims.length; - var offset3 = 0; - var dim0 = dims[0]; - var chunks = newStore._chunks; - for (var i2 = 0; i2 < count3; i2++) { - var keep = void 0; - var rawIdx = newStore.getRawIndex(i2); - if (dimSize === 0) { - keep = cb(i2); - } else if (dimSize === 1) { - var val = chunks[dim0][rawIdx]; - keep = cb(val, i2); - } else { - var k2 = 0; - for (; k2 < dimSize; k2++) { - value[k2] = chunks[dims[k2]][rawIdx]; - } - value[k2] = i2; - keep = cb.apply(null, value); - } - if (keep) { - newIndices[offset3++] = rawIdx; - } - } - if (offset3 < count3) { - newStore._indices = newIndices; - } - newStore._count = offset3; - newStore._extent = []; - newStore._updateGetRawIdx(); - return newStore; - }; - DataStore3.prototype.selectRange = function(range) { - var newStore = this.clone(); - var len3 = newStore._count; - if (!len3) { - return this; - } - var dims = keys2(range); - var dimSize = dims.length; - if (!dimSize) { - return this; - } - var originalCount = newStore.count(); - var Ctor = getIndicesCtor2(newStore._rawCount); - var newIndices = new Ctor(originalCount); - var offset3 = 0; - var dim0 = dims[0]; - var min5 = range[dim0][0]; - var max5 = range[dim0][1]; - var storeArr = newStore._chunks; - var quickFinished = false; - if (!newStore._indices) { - var idx = 0; - if (dimSize === 1) { - var dimStorage = storeArr[dims[0]]; - for (var i2 = 0; i2 < len3; i2++) { - var val = dimStorage[i2]; - if (val >= min5 && val <= max5 || isNaN(val)) { - newIndices[offset3++] = idx; - } - idx++; - } - quickFinished = true; - } else if (dimSize === 2) { - var dimStorage = storeArr[dims[0]]; - var dimStorage2 = storeArr[dims[1]]; - var min24 = range[dims[1]][0]; - var max24 = range[dims[1]][1]; - for (var i2 = 0; i2 < len3; i2++) { - var val = dimStorage[i2]; - var val2 = dimStorage2[i2]; - if ((val >= min5 && val <= max5 || isNaN(val)) && (val2 >= min24 && val2 <= max24 || isNaN(val2))) { - newIndices[offset3++] = idx; - } - idx++; - } - quickFinished = true; - } - } - if (!quickFinished) { - if (dimSize === 1) { - for (var i2 = 0; i2 < originalCount; i2++) { - var rawIndex = newStore.getRawIndex(i2); - var val = storeArr[dims[0]][rawIndex]; - if (val >= min5 && val <= max5 || isNaN(val)) { - newIndices[offset3++] = rawIndex; - } - } - } else { - for (var i2 = 0; i2 < originalCount; i2++) { - var keep = true; - var rawIndex = newStore.getRawIndex(i2); - for (var k2 = 0; k2 < dimSize; k2++) { - var dimk = dims[k2]; - var val = storeArr[dimk][rawIndex]; - if (val < range[dimk][0] || val > range[dimk][1]) { - keep = false; - } - } - if (keep) { - newIndices[offset3++] = newStore.getRawIndex(i2); - } - } - } - } - if (offset3 < originalCount) { - newStore._indices = newIndices; - } - newStore._count = offset3; - newStore._extent = []; - newStore._updateGetRawIdx(); - return newStore; - }; - DataStore3.prototype.map = function(dims, cb) { - var target = this.clone(dims); - this._updateDims(target, dims, cb); - return target; - }; - DataStore3.prototype.modify = function(dims, cb) { - this._updateDims(this, dims, cb); - }; - DataStore3.prototype._updateDims = function(target, dims, cb) { - var targetChunks = target._chunks; - var tmpRetValue = []; - var dimSize = dims.length; - var dataCount = target.count(); - var values = []; - var rawExtent = target._rawExtent; - for (var i2 = 0; i2 < dims.length; i2++) { - rawExtent[dims[i2]] = getInitialExtent2(); - } - for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) { - var rawIndex = target.getRawIndex(dataIndex); - for (var k2 = 0; k2 < dimSize; k2++) { - values[k2] = targetChunks[dims[k2]][rawIndex]; - } - values[dimSize] = dataIndex; - var retValue = cb && cb.apply(null, values); - if (retValue != null) { - if (typeof retValue !== "object") { - tmpRetValue[0] = retValue; - retValue = tmpRetValue; - } - for (var i2 = 0; i2 < retValue.length; i2++) { - var dim = dims[i2]; - var val = retValue[i2]; - var rawExtentOnDim = rawExtent[dim]; - var dimStore = targetChunks[dim]; - if (dimStore) { - dimStore[rawIndex] = val; - } - if (val < rawExtentOnDim[0]) { - rawExtentOnDim[0] = val; - } - if (val > rawExtentOnDim[1]) { - rawExtentOnDim[1] = val; - } - } - } - } - }; - DataStore3.prototype.lttbDownSample = function(valueDimension, rate) { - var target = this.clone([valueDimension], true); - var targetStorage = target._chunks; - var dimStore = targetStorage[valueDimension]; - var len3 = this.count(); - var sampledIndex = 0; - var frameSize = Math.floor(1 / rate); - var currentRawIndex = this.getRawIndex(0); - var maxArea; - var area; - var nextRawIndex; - var newIndices = new (getIndicesCtor2(this._rawCount))(Math.min((Math.ceil(len3 / frameSize) + 2) * 2, len3)); - newIndices[sampledIndex++] = currentRawIndex; - for (var i2 = 1; i2 < len3 - 1; i2 += frameSize) { - var nextFrameStart = Math.min(i2 + frameSize, len3 - 1); - var nextFrameEnd = Math.min(i2 + frameSize * 2, len3); - var avgX = (nextFrameEnd + nextFrameStart) / 2; - var avgY = 0; - for (var idx = nextFrameStart; idx < nextFrameEnd; idx++) { - var rawIndex = this.getRawIndex(idx); - var y = dimStore[rawIndex]; - if (isNaN(y)) { - continue; - } - avgY += y; - } - avgY /= nextFrameEnd - nextFrameStart; - var frameStart = i2; - var frameEnd = Math.min(i2 + frameSize, len3); - var pointAX = i2 - 1; - var pointAY = dimStore[currentRawIndex]; - maxArea = -1; - nextRawIndex = frameStart; - var firstNaNIndex = -1; - var countNaN = 0; - for (var idx = frameStart; idx < frameEnd; idx++) { - var rawIndex = this.getRawIndex(idx); - var y = dimStore[rawIndex]; - if (isNaN(y)) { - countNaN++; - if (firstNaNIndex < 0) { - firstNaNIndex = rawIndex; - } - continue; - } - area = Math.abs((pointAX - avgX) * (y - pointAY) - (pointAX - idx) * (avgY - pointAY)); - if (area > maxArea) { - maxArea = area; - nextRawIndex = rawIndex; - } - } - if (countNaN > 0 && countNaN < frameEnd - frameStart) { - newIndices[sampledIndex++] = Math.min(firstNaNIndex, nextRawIndex); - nextRawIndex = Math.max(firstNaNIndex, nextRawIndex); - } - newIndices[sampledIndex++] = nextRawIndex; - currentRawIndex = nextRawIndex; - } - newIndices[sampledIndex++] = this.getRawIndex(len3 - 1); - target._count = sampledIndex; - target._indices = newIndices; - target.getRawIndex = this._getRawIdx; - return target; - }; - DataStore3.prototype.minmaxDownSample = function(valueDimension, rate) { - var target = this.clone([valueDimension], true); - var targetStorage = target._chunks; - var frameSize = Math.floor(1 / rate); - var dimStore = targetStorage[valueDimension]; - var len3 = this.count(); - var newIndices = new (getIndicesCtor2(this._rawCount))(Math.ceil(len3 / frameSize) * 2); - var offset3 = 0; - for (var i2 = 0; i2 < len3; i2 += frameSize) { - var minIndex = i2; - var minValue = dimStore[this.getRawIndex(minIndex)]; - var maxIndex = i2; - var maxValue = dimStore[this.getRawIndex(maxIndex)]; - var thisFrameSize = frameSize; - if (i2 + frameSize > len3) { - thisFrameSize = len3 - i2; - } - for (var k2 = 0; k2 < thisFrameSize; k2++) { - var rawIndex = this.getRawIndex(i2 + k2); - var value = dimStore[rawIndex]; - if (value < minValue) { - minValue = value; - minIndex = i2 + k2; - } - if (value > maxValue) { - maxValue = value; - maxIndex = i2 + k2; - } - } - var rawMinIndex = this.getRawIndex(minIndex); - var rawMaxIndex = this.getRawIndex(maxIndex); - if (minIndex < maxIndex) { - newIndices[offset3++] = rawMinIndex; - newIndices[offset3++] = rawMaxIndex; - } else { - newIndices[offset3++] = rawMaxIndex; - newIndices[offset3++] = rawMinIndex; - } - } - target._count = offset3; - target._indices = newIndices; - target._updateGetRawIdx(); - return target; - }; - DataStore3.prototype.downSample = function(dimension, rate, sampleValue, sampleIndex) { - var target = this.clone([dimension], true); - var targetStorage = target._chunks; - var frameValues = []; - var frameSize = Math.floor(1 / rate); - var dimStore = targetStorage[dimension]; - var len3 = this.count(); - var rawExtentOnDim = target._rawExtent[dimension] = getInitialExtent2(); - var newIndices = new (getIndicesCtor2(this._rawCount))(Math.ceil(len3 / frameSize)); - var offset3 = 0; - for (var i2 = 0; i2 < len3; i2 += frameSize) { - if (frameSize > len3 - i2) { - frameSize = len3 - i2; - frameValues.length = frameSize; - } - for (var k2 = 0; k2 < frameSize; k2++) { - var dataIdx = this.getRawIndex(i2 + k2); - frameValues[k2] = dimStore[dataIdx]; - } - var value = sampleValue(frameValues); - var sampleFrameIdx = this.getRawIndex(Math.min(i2 + sampleIndex(frameValues, value) || 0, len3 - 1)); - dimStore[sampleFrameIdx] = value; - if (value < rawExtentOnDim[0]) { - rawExtentOnDim[0] = value; - } - if (value > rawExtentOnDim[1]) { - rawExtentOnDim[1] = value; - } - newIndices[offset3++] = sampleFrameIdx; - } - target._count = offset3; - target._indices = newIndices; - target._updateGetRawIdx(); - return target; - }; - DataStore3.prototype.each = function(dims, cb) { - if (!this._count) { - return; - } - var dimSize = dims.length; - var chunks = this._chunks; - for (var i2 = 0, len3 = this.count(); i2 < len3; i2++) { - var rawIdx = this.getRawIndex(i2); - switch (dimSize) { - case 0: - cb(i2); - break; - case 1: - cb(chunks[dims[0]][rawIdx], i2); - break; - case 2: - cb(chunks[dims[0]][rawIdx], chunks[dims[1]][rawIdx], i2); - break; - default: - var k2 = 0; - var value = []; - for (; k2 < dimSize; k2++) { - value[k2] = chunks[dims[k2]][rawIdx]; - } - value[k2] = i2; - cb.apply(null, value); - } - } - }; - DataStore3.prototype.getDataExtent = function(dim) { - var dimData = this._chunks[dim]; - var initialExtent = getInitialExtent2(); - if (!dimData) { - return initialExtent; - } - var currEnd = this.count(); - var useRaw = !this._indices; - var dimExtent; - if (useRaw) { - return this._rawExtent[dim].slice(); - } - dimExtent = this._extent[dim]; - if (dimExtent) { - return dimExtent.slice(); - } - dimExtent = initialExtent; - var min5 = dimExtent[0]; - var max5 = dimExtent[1]; - for (var i2 = 0; i2 < currEnd; i2++) { - var rawIdx = this.getRawIndex(i2); - var value = dimData[rawIdx]; - value < min5 && (min5 = value); - value > max5 && (max5 = value); - } - dimExtent = [min5, max5]; - this._extent[dim] = dimExtent; - return dimExtent; - }; - DataStore3.prototype.getRawDataItem = function(idx) { - var rawIdx = this.getRawIndex(idx); - if (!this._provider.persistent) { - var val = []; - var chunks = this._chunks; - for (var i2 = 0; i2 < chunks.length; i2++) { - val.push(chunks[i2][rawIdx]); - } - return val; - } else { - return this._provider.getItem(rawIdx); - } - }; - DataStore3.prototype.clone = function(clonedDims, ignoreIndices) { - var target = new DataStore3(); - var chunks = this._chunks; - var clonedDimsMap = clonedDims && reduce2(clonedDims, function(obj, dimIdx) { - obj[dimIdx] = true; - return obj; - }, {}); - if (clonedDimsMap) { - for (var i2 = 0; i2 < chunks.length; i2++) { - target._chunks[i2] = !clonedDimsMap[i2] ? chunks[i2] : cloneChunk2(chunks[i2]); - } - } else { - target._chunks = chunks; - } - this._copyCommonProps(target); - if (!ignoreIndices) { - target._indices = this._cloneIndices(); - } - target._updateGetRawIdx(); - return target; - }; - DataStore3.prototype._copyCommonProps = function(target) { - target._count = this._count; - target._rawCount = this._rawCount; - target._provider = this._provider; - target._dimensions = this._dimensions; - target._extent = clone6(this._extent); - target._rawExtent = clone6(this._rawExtent); - }; - DataStore3.prototype._cloneIndices = function() { - if (this._indices) { - var Ctor = this._indices.constructor; - var indices = void 0; - if (Ctor === Array) { - var thisCount = this._indices.length; - indices = new Ctor(thisCount); - for (var i2 = 0; i2 < thisCount; i2++) { - indices[i2] = this._indices[i2]; - } - } else { - indices = new Ctor(this._indices); - } - return indices; - } - return null; - }; - DataStore3.prototype._getRawIdxIdentity = function(idx) { - return idx; - }; - DataStore3.prototype._getRawIdx = function(idx) { - if (idx < this._count && idx >= 0) { - return this._indices[idx]; - } - return -1; - }; - DataStore3.prototype._updateGetRawIdx = function() { - this.getRawIndex = this._indices ? this._getRawIdx : this._getRawIdxIdentity; - }; - DataStore3.internalField = function() { - function getDimValueSimply(dataItem, property, dataIndex, dimIndex) { - return parseDataValue2(dataItem[dimIndex], this._dimensions[dimIndex]); - } - defaultDimValueGetters2 = { - arrayRows: getDimValueSimply, - objectRows: function(dataItem, property, dataIndex, dimIndex) { - return parseDataValue2(dataItem[property], this._dimensions[dimIndex]); - }, - keyedColumns: getDimValueSimply, - original: function(dataItem, property, dataIndex, dimIndex) { - var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value); - return parseDataValue2(value instanceof Array ? value[dimIndex] : value, this._dimensions[dimIndex]); - }, - typedArray: function(dataItem, property, dataIndex, dimIndex) { - return dataItem[dimIndex]; - } - }; - }(); - return DataStore3; - }() - ); - var SourceManager2 = ( - /** @class */ - function() { - function SourceManager3(sourceHost) { - this._sourceList = []; - this._storeList = []; - this._upstreamSignList = []; - this._versionSignBase = 0; - this._dirty = true; - this._sourceHost = sourceHost; - } - SourceManager3.prototype.dirty = function() { - this._setLocalSource([], []); - this._storeList = []; - this._dirty = true; - }; - SourceManager3.prototype._setLocalSource = function(sourceList, upstreamSignList) { - this._sourceList = sourceList; - this._upstreamSignList = upstreamSignList; - this._versionSignBase++; - if (this._versionSignBase > 9e10) { - this._versionSignBase = 0; - } - }; - SourceManager3.prototype._getVersionSign = function() { - return this._sourceHost.uid + "_" + this._versionSignBase; - }; - SourceManager3.prototype.prepareSource = function() { - if (this._isDirty()) { - this._createSource(); - this._dirty = false; - } - }; - SourceManager3.prototype._createSource = function() { - this._setLocalSource([], []); - var sourceHost = this._sourceHost; - var upSourceMgrList = this._getUpstreamSourceManagers(); - var hasUpstream = !!upSourceMgrList.length; - var resultSourceList; - var upstreamSignList; - if (isSeries2(sourceHost)) { - var seriesModel = sourceHost; - var data = void 0; - var sourceFormat = void 0; - var upSource = void 0; - if (hasUpstream) { - var upSourceMgr = upSourceMgrList[0]; - upSourceMgr.prepareSource(); - upSource = upSourceMgr.getSource(); - data = upSource.data; - sourceFormat = upSource.sourceFormat; - upstreamSignList = [upSourceMgr._getVersionSign()]; - } else { - data = seriesModel.get("data", true); - sourceFormat = isTypedArray2(data) ? SOURCE_FORMAT_TYPED_ARRAY2 : SOURCE_FORMAT_ORIGINAL2; - upstreamSignList = []; - } - var newMetaRawOption = this._getSourceMetaRawOption() || {}; - var upMetaRawOption = upSource && upSource.metaRawOption || {}; - var seriesLayoutBy = retrieve22(newMetaRawOption.seriesLayoutBy, upMetaRawOption.seriesLayoutBy) || null; - var sourceHeader = retrieve22(newMetaRawOption.sourceHeader, upMetaRawOption.sourceHeader); - var dimensions = retrieve22(newMetaRawOption.dimensions, upMetaRawOption.dimensions); - var needsCreateSource = seriesLayoutBy !== upMetaRawOption.seriesLayoutBy || !!sourceHeader !== !!upMetaRawOption.sourceHeader || dimensions; - resultSourceList = needsCreateSource ? [createSource2(data, { - seriesLayoutBy, - sourceHeader, - dimensions - }, sourceFormat)] : []; - } else { - var datasetModel = sourceHost; - if (hasUpstream) { - var result = this._applyTransform(upSourceMgrList); - resultSourceList = result.sourceList; - upstreamSignList = result.upstreamSignList; - } else { - var sourceData = datasetModel.get("source", true); - resultSourceList = [createSource2(sourceData, this._getSourceMetaRawOption(), null)]; - upstreamSignList = []; - } - } - if (true) { - assert2(resultSourceList && upstreamSignList); - } - this._setLocalSource(resultSourceList, upstreamSignList); - }; - SourceManager3.prototype._applyTransform = function(upMgrList) { - var datasetModel = this._sourceHost; - var transformOption = datasetModel.get("transform", true); - var fromTransformResult = datasetModel.get("fromTransformResult", true); - if (true) { - assert2(fromTransformResult != null || transformOption != null); - } - if (fromTransformResult != null) { - var errMsg = ""; - if (upMgrList.length !== 1) { - if (true) { - errMsg = "When using `fromTransformResult`, there should be only one upstream dataset"; - } - doThrow2(errMsg); - } - } - var sourceList; - var upSourceList = []; - var upstreamSignList = []; - each17(upMgrList, function(upMgr) { - upMgr.prepareSource(); - var upSource = upMgr.getSource(fromTransformResult || 0); - var errMsg2 = ""; - if (fromTransformResult != null && !upSource) { - if (true) { - errMsg2 = "Can not retrieve result by `fromTransformResult`: " + fromTransformResult; - } - doThrow2(errMsg2); - } - upSourceList.push(upSource); - upstreamSignList.push(upMgr._getVersionSign()); - }); - if (transformOption) { - sourceList = applyDataTransform2(transformOption, upSourceList, { - datasetIndex: datasetModel.componentIndex - }); - } else if (fromTransformResult != null) { - sourceList = [cloneSourceShallow2(upSourceList[0])]; - } - return { - sourceList, - upstreamSignList - }; - }; - SourceManager3.prototype._isDirty = function() { - if (this._dirty) { - return true; - } - var upSourceMgrList = this._getUpstreamSourceManagers(); - for (var i2 = 0; i2 < upSourceMgrList.length; i2++) { - var upSrcMgr = upSourceMgrList[i2]; - if ( - // Consider the case that there is ancestor diry, call it recursively. - // The performance is probably not an issue because usually the chain is not long. - upSrcMgr._isDirty() || this._upstreamSignList[i2] !== upSrcMgr._getVersionSign() - ) { - return true; - } - } - }; - SourceManager3.prototype.getSource = function(sourceIndex) { - sourceIndex = sourceIndex || 0; - var source = this._sourceList[sourceIndex]; - if (!source) { - var upSourceMgrList = this._getUpstreamSourceManagers(); - return upSourceMgrList[0] && upSourceMgrList[0].getSource(sourceIndex); - } - return source; - }; - SourceManager3.prototype.getSharedDataStore = function(seriesDimRequest) { - if (true) { - assert2(isSeries2(this._sourceHost), "Can only call getDataStore on series source manager."); - } - var schema = seriesDimRequest.makeStoreSchema(); - return this._innerGetDataStore(schema.dimensions, seriesDimRequest.source, schema.hash); - }; - SourceManager3.prototype._innerGetDataStore = function(storeDims, seriesSource, sourceReadKey) { - var sourceIndex = 0; - var storeList = this._storeList; - var cachedStoreMap = storeList[sourceIndex]; - if (!cachedStoreMap) { - cachedStoreMap = storeList[sourceIndex] = {}; - } - var cachedStore = cachedStoreMap[sourceReadKey]; - if (!cachedStore) { - var upSourceMgr = this._getUpstreamSourceManagers()[0]; - if (isSeries2(this._sourceHost) && upSourceMgr) { - cachedStore = upSourceMgr._innerGetDataStore(storeDims, seriesSource, sourceReadKey); - } else { - cachedStore = new DataStore2(); - cachedStore.initData(new DefaultDataProvider2(seriesSource, storeDims.length), storeDims); - } - cachedStoreMap[sourceReadKey] = cachedStore; - } - return cachedStore; - }; - SourceManager3.prototype._getUpstreamSourceManagers = function() { - var sourceHost = this._sourceHost; - if (isSeries2(sourceHost)) { - var datasetModel = querySeriesUpstreamDatasetModel2(sourceHost); - return !datasetModel ? [] : [datasetModel.getSourceManager()]; - } else { - return map3(queryDatasetUpstreamDatasetModels2(sourceHost), function(datasetModel2) { - return datasetModel2.getSourceManager(); - }); - } - }; - SourceManager3.prototype._getSourceMetaRawOption = function() { - var sourceHost = this._sourceHost; - var seriesLayoutBy; - var sourceHeader; - var dimensions; - if (isSeries2(sourceHost)) { - seriesLayoutBy = sourceHost.get("seriesLayoutBy", true); - sourceHeader = sourceHost.get("sourceHeader", true); - dimensions = sourceHost.get("dimensions", true); - } else if (!this._getUpstreamSourceManagers().length) { - var model = sourceHost; - seriesLayoutBy = model.get("seriesLayoutBy", true); - sourceHeader = model.get("sourceHeader", true); - dimensions = model.get("dimensions", true); - } - return { - seriesLayoutBy, - sourceHeader, - dimensions - }; - }; - return SourceManager3; - }() - ); - function disableTransformOptionMerge2(datasetModel) { - var transformOption = datasetModel.option.transform; - transformOption && setAsPrimitive2(datasetModel.option.transform); - } - function isSeries2(sourceHost) { - return sourceHost.mainType === "series"; - } - function doThrow2(errMsg) { - throw new Error(errMsg); - } - var TOOLTIP_LINE_HEIGHT_CSS2 = "line-height:1"; - function getTooltipLineHeight2(textStyle) { - var lineHeight = textStyle.lineHeight; - if (lineHeight == null) { - return TOOLTIP_LINE_HEIGHT_CSS2; - } else { - return "line-height:" + encodeHTML2(lineHeight + "") + "px"; - } - } - function getTooltipTextStyle2(textStyle, renderMode) { - var nameFontColor = textStyle.color || "#6e7079"; - var nameFontSize = textStyle.fontSize || 12; - var nameFontWeight = textStyle.fontWeight || "400"; - var valueFontColor = textStyle.color || "#464646"; - var valueFontSize = textStyle.fontSize || 14; - var valueFontWeight = textStyle.fontWeight || "900"; - if (renderMode === "html") { - return { - // eslint-disable-next-line max-len - nameStyle: "font-size:" + encodeHTML2(nameFontSize + "") + "px;color:" + encodeHTML2(nameFontColor) + ";font-weight:" + encodeHTML2(nameFontWeight + ""), - // eslint-disable-next-line max-len - valueStyle: "font-size:" + encodeHTML2(valueFontSize + "") + "px;color:" + encodeHTML2(valueFontColor) + ";font-weight:" + encodeHTML2(valueFontWeight + "") - }; - } else { - return { - nameStyle: { - fontSize: nameFontSize, - fill: nameFontColor, - fontWeight: nameFontWeight - }, - valueStyle: { - fontSize: valueFontSize, - fill: valueFontColor, - fontWeight: valueFontWeight - } - }; - } - } - var HTML_GAPS2 = [0, 10, 20, 30]; - var RICH_TEXT_GAPS2 = ["", "\n", "\n\n", "\n\n\n"]; - function createTooltipMarkup2(type, option) { - option.type = type; - return option; - } - function isSectionFragment2(frag) { - return frag.type === "section"; - } - function getBuilder2(frag) { - return isSectionFragment2(frag) ? buildSection2 : buildNameValue2; - } - function getBlockGapLevel2(frag) { - if (isSectionFragment2(frag)) { - var gapLevel_1 = 0; - var subBlockLen = frag.blocks.length; - var hasInnerGap_1 = subBlockLen > 1 || subBlockLen > 0 && !frag.noHeader; - each17(frag.blocks, function(subBlock) { - var subGapLevel = getBlockGapLevel2(subBlock); - if (subGapLevel >= gapLevel_1) { - gapLevel_1 = subGapLevel + +(hasInnerGap_1 && // 0 always can not be readable gap level. - (!subGapLevel || isSectionFragment2(subBlock) && !subBlock.noHeader)); - } - }); - return gapLevel_1; - } - return 0; - } - function buildSection2(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) { - var noHeader = fragment.noHeader; - var gaps = getGap2(getBlockGapLevel2(fragment)); - var subMarkupTextList = []; - var subBlocks = fragment.blocks || []; - assert2(!subBlocks || isArray3(subBlocks)); - subBlocks = subBlocks || []; - var orderMode = ctx.orderMode; - if (fragment.sortBlocks && orderMode) { - subBlocks = subBlocks.slice(); - var orderMap = { - valueAsc: "asc", - valueDesc: "desc" - }; - if (hasOwn2(orderMap, orderMode)) { - var comparator_1 = new SortOrderComparator2(orderMap[orderMode], null); - subBlocks.sort(function(a, b) { - return comparator_1.evaluate(a.sortParam, b.sortParam); - }); - } else if (orderMode === "seriesDesc") { - subBlocks.reverse(); - } - } - each17(subBlocks, function(subBlock, idx) { - var valueFormatter = fragment.valueFormatter; - var subMarkupText2 = getBuilder2(subBlock)( - // Inherit valueFormatter - valueFormatter ? extend3(extend3({}, ctx), { - valueFormatter - }) : ctx, - subBlock, - idx > 0 ? gaps.html : 0, - toolTipTextStyle - ); - subMarkupText2 != null && subMarkupTextList.push(subMarkupText2); - }); - var subMarkupText = ctx.renderMode === "richText" ? subMarkupTextList.join(gaps.richText) : wrapBlockHTML2(toolTipTextStyle, subMarkupTextList.join(""), noHeader ? topMarginForOuterGap : gaps.html); - if (noHeader) { - return subMarkupText; - } - var displayableHeader = makeValueReadable2(fragment.header, "ordinal", ctx.useUTC); - var nameStyle = getTooltipTextStyle2(toolTipTextStyle, ctx.renderMode).nameStyle; - var tooltipLineHeight = getTooltipLineHeight2(toolTipTextStyle); - if (ctx.renderMode === "richText") { - return wrapInlineNameRichText2(ctx, displayableHeader, nameStyle) + gaps.richText + subMarkupText; - } else { - return wrapBlockHTML2(toolTipTextStyle, '
' + encodeHTML2(displayableHeader) + "
" + subMarkupText, topMarginForOuterGap); - } - } - function buildNameValue2(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) { - var renderMode = ctx.renderMode; - var noName = fragment.noName; - var noValue = fragment.noValue; - var noMarker = !fragment.markerType; - var name = fragment.name; - var useUTC = ctx.useUTC; - var valueFormatter = fragment.valueFormatter || ctx.valueFormatter || function(value) { - value = isArray3(value) ? value : [value]; - return map3(value, function(val, idx) { - return makeValueReadable2(val, isArray3(valueTypeOption) ? valueTypeOption[idx] : valueTypeOption, useUTC); - }); - }; - if (noName && noValue) { - return; - } - var markerStr = noMarker ? "" : ctx.markupStyleCreator.makeTooltipMarker(fragment.markerType, fragment.markerColor || "#333", renderMode); - var readableName = noName ? "" : makeValueReadable2(name, "ordinal", useUTC); - var valueTypeOption = fragment.valueType; - var readableValueList = noValue ? [] : valueFormatter(fragment.value, fragment.dataIndex); - var valueAlignRight = !noMarker || !noName; - var valueCloseToMarker = !noMarker && noName; - var _a3 = getTooltipTextStyle2(toolTipTextStyle, renderMode), nameStyle = _a3.nameStyle, valueStyle = _a3.valueStyle; - return renderMode === "richText" ? (noMarker ? "" : markerStr) + (noName ? "" : wrapInlineNameRichText2(ctx, readableName, nameStyle)) + (noValue ? "" : wrapInlineValueRichText2(ctx, readableValueList, valueAlignRight, valueCloseToMarker, valueStyle)) : wrapBlockHTML2(toolTipTextStyle, (noMarker ? "" : markerStr) + (noName ? "" : wrapInlineNameHTML2(readableName, !noMarker, nameStyle)) + (noValue ? "" : wrapInlineValueHTML2(readableValueList, valueAlignRight, valueCloseToMarker, valueStyle)), topMarginForOuterGap); - } - function buildTooltipMarkup2(fragment, markupStyleCreator, renderMode, orderMode, useUTC, toolTipTextStyle) { - if (!fragment) { - return; - } - var builder = getBuilder2(fragment); - var ctx = { - useUTC, - renderMode, - orderMode, - markupStyleCreator, - valueFormatter: fragment.valueFormatter - }; - return builder(ctx, fragment, 0, toolTipTextStyle); - } - function getGap2(gapLevel) { - return { - html: HTML_GAPS2[gapLevel], - richText: RICH_TEXT_GAPS2[gapLevel] - }; - } - function wrapBlockHTML2(textStyle, encodedContent, topGap) { - var clearfix = '
'; - var marginCSS = "margin: " + topGap + "px 0 0"; - var tooltipLineHeight = getTooltipLineHeight2(textStyle); - return '
' + encodedContent + clearfix + "
"; - } - function wrapInlineNameHTML2(name, leftHasMarker, style) { - var marginCss = leftHasMarker ? "margin-left:2px" : ""; - return '' + encodeHTML2(name) + ""; - } - function wrapInlineValueHTML2(valueList, alignRight, valueCloseToMarker, style) { - var paddingStr = valueCloseToMarker ? "10px" : "20px"; - var alignCSS = alignRight ? "float:right;margin-left:" + paddingStr : ""; - valueList = isArray3(valueList) ? valueList : [valueList]; - return '' + map3(valueList, function(value) { - return encodeHTML2(value); - }).join("  ") + ""; - } - function wrapInlineNameRichText2(ctx, name, style) { - return ctx.markupStyleCreator.wrapRichTextStyle(name, style); - } - function wrapInlineValueRichText2(ctx, values, alignRight, valueCloseToMarker, style) { - var styles = [style]; - var paddingLeft = valueCloseToMarker ? 10 : 20; - alignRight && styles.push({ - padding: [0, 0, 0, paddingLeft], - align: "right" - }); - return ctx.markupStyleCreator.wrapRichTextStyle(isArray3(values) ? values.join(" ") : values, styles); - } - function retrieveVisualColorForTooltipMarker2(series, dataIndex) { - var style = series.getData().getItemVisual(dataIndex, "style"); - var color2 = style[series.visualDrawType]; - return convertToColorString2(color2); - } - function getPaddingFromTooltipModel2(model, renderMode) { - var padding = model.get("padding"); - return padding != null ? padding : renderMode === "richText" ? [8, 10] : 10; - } - var TooltipMarkupStyleCreator2 = ( - /** @class */ - function() { - function TooltipMarkupStyleCreator3() { - this.richTextStyles = {}; - this._nextStyleNameId = getRandomIdBase2(); - } - TooltipMarkupStyleCreator3.prototype._generateStyleName = function() { - return "__EC_aUTo_" + this._nextStyleNameId++; - }; - TooltipMarkupStyleCreator3.prototype.makeTooltipMarker = function(markerType, colorStr, renderMode) { - var markerId = renderMode === "richText" ? this._generateStyleName() : null; - var marker = getTooltipMarker2({ - color: colorStr, - type: markerType, - renderMode, - markerId - }); - if (isString2(marker)) { - return marker; - } else { - if (true) { - assert2(markerId); - } - this.richTextStyles[markerId] = marker.style; - return marker.content; - } - }; - TooltipMarkupStyleCreator3.prototype.wrapRichTextStyle = function(text, styles) { - var finalStl = {}; - if (isArray3(styles)) { - each17(styles, function(stl) { - return extend3(finalStl, stl); - }); - } else { - extend3(finalStl, styles); - } - var styleName = this._generateStyleName(); - this.richTextStyles[styleName] = finalStl; - return "{" + styleName + "|" + text + "}"; - }; - return TooltipMarkupStyleCreator3; - }() - ); - function defaultSeriesFormatTooltip2(opt) { - var series = opt.series; - var dataIndex = opt.dataIndex; - var multipleSeries = opt.multipleSeries; - var data = series.getData(); - var tooltipDims = data.mapDimensionsAll("defaultedTooltip"); - var tooltipDimLen = tooltipDims.length; - var value = series.getRawValue(dataIndex); - var isValueArr = isArray3(value); - var markerColor = retrieveVisualColorForTooltipMarker2(series, dataIndex); - var inlineValue; - var inlineValueType; - var subBlocks; - var sortParam; - if (tooltipDimLen > 1 || isValueArr && !tooltipDimLen) { - var formatArrResult = formatTooltipArrayValue2(value, series, dataIndex, tooltipDims, markerColor); - inlineValue = formatArrResult.inlineValues; - inlineValueType = formatArrResult.inlineValueTypes; - subBlocks = formatArrResult.blocks; - sortParam = formatArrResult.inlineValues[0]; - } else if (tooltipDimLen) { - var dimInfo = data.getDimensionInfo(tooltipDims[0]); - sortParam = inlineValue = retrieveRawValue2(data, dataIndex, tooltipDims[0]); - inlineValueType = dimInfo.type; - } else { - sortParam = inlineValue = isValueArr ? value[0] : value; - } - var seriesNameSpecified = isNameSpecified2(series); - var seriesName = seriesNameSpecified && series.name || ""; - var itemName = data.getName(dataIndex); - var inlineName = multipleSeries ? seriesName : itemName; - return createTooltipMarkup2("section", { - header: seriesName, - // When series name is not specified, do not show a header line with only '-'. - // This case always happens in tooltip.trigger: 'item'. - noHeader: multipleSeries || !seriesNameSpecified, - sortParam, - blocks: [createTooltipMarkup2("nameValue", { - markerType: "item", - markerColor, - // Do not mix display seriesName and itemName in one tooltip, - // which might confuses users. - name: inlineName, - // name dimension might be auto assigned, where the name might - // be not readable. So we check trim here. - noName: !trim3(inlineName), - value: inlineValue, - valueType: inlineValueType, - dataIndex - })].concat(subBlocks || []) - }); - } - function formatTooltipArrayValue2(value, series, dataIndex, tooltipDims, colorStr) { - var data = series.getData(); - var isValueMultipleLine = reduce2(value, function(isValueMultipleLine2, val, idx) { - var dimItem = data.getDimensionInfo(idx); - return isValueMultipleLine2 = isValueMultipleLine2 || dimItem && dimItem.tooltip !== false && dimItem.displayName != null; - }, false); - var inlineValues = []; - var inlineValueTypes = []; - var blocks = []; - tooltipDims.length ? each17(tooltipDims, function(dim) { - setEachItem(retrieveRawValue2(data, dataIndex, dim), dim); - }) : each17(value, setEachItem); - function setEachItem(val, dim) { - var dimInfo = data.getDimensionInfo(dim); - if (!dimInfo || dimInfo.otherDims.tooltip === false) { - return; - } - if (isValueMultipleLine) { - blocks.push(createTooltipMarkup2("nameValue", { - markerType: "subItem", - markerColor: colorStr, - name: dimInfo.displayName, - value: val, - valueType: dimInfo.type - })); - } else { - inlineValues.push(val); - inlineValueTypes.push(dimInfo.type); - } - } - return { - inlineValues, - inlineValueTypes, - blocks - }; - } - var inner$1 = makeInner2(); - function getSelectionKey2(data, dataIndex) { - return data.getName(dataIndex) || data.getId(dataIndex); - } - var SERIES_UNIVERSAL_TRANSITION_PROP2 = "__universalTransitionEnabled"; - var SeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(SeriesModel3, _super); - function SeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._selectedDataIndicesMap = {}; - return _this; - } - SeriesModel3.prototype.init = function(option, parentModel, ecModel) { - this.seriesIndex = this.componentIndex; - this.dataTask = createTask2({ - count: dataTaskCount2, - reset: dataTaskReset2 - }); - this.dataTask.context = { - model: this - }; - this.mergeDefaultAndTheme(option, ecModel); - var sourceManager = inner$1(this).sourceManager = new SourceManager2(this); - sourceManager.prepareSource(); - var data = this.getInitialData(option, ecModel); - wrapData2(data, this); - this.dataTask.context.data = data; - if (true) { - assert2(data, "getInitialData returned invalid data."); - } - inner$1(this).dataBeforeProcessed = data; - autoSeriesName2(this); - this._initSelectedMapFromData(data); - }; - SeriesModel3.prototype.mergeDefaultAndTheme = function(option, ecModel) { - var layoutMode = fetchLayoutMode2(this); - var inputPositionParams = layoutMode ? getLayoutParams2(option) : {}; - var themeSubType = this.subType; - if (ComponentModel2.hasClass(themeSubType)) { - themeSubType += "Series"; - } - merge2(option, ecModel.getTheme().get(this.subType)); - merge2(option, this.getDefaultOption()); - defaultEmphasis2(option, "label", ["show"]); - this.fillDataTextStyle(option.data); - if (layoutMode) { - mergeLayoutParam2(option, inputPositionParams, layoutMode); - } - }; - SeriesModel3.prototype.mergeOption = function(newSeriesOption, ecModel) { - newSeriesOption = merge2(this.option, newSeriesOption, true); - this.fillDataTextStyle(newSeriesOption.data); - var layoutMode = fetchLayoutMode2(this); - if (layoutMode) { - mergeLayoutParam2(this.option, newSeriesOption, layoutMode); - } - var sourceManager = inner$1(this).sourceManager; - sourceManager.dirty(); - sourceManager.prepareSource(); - var data = this.getInitialData(newSeriesOption, ecModel); - wrapData2(data, this); - this.dataTask.dirty(); - this.dataTask.context.data = data; - inner$1(this).dataBeforeProcessed = data; - autoSeriesName2(this); - this._initSelectedMapFromData(data); - }; - SeriesModel3.prototype.fillDataTextStyle = function(data) { - if (data && !isTypedArray2(data)) { - var props = ["show"]; - for (var i2 = 0; i2 < data.length; i2++) { - if (data[i2] && data[i2].label) { - defaultEmphasis2(data[i2], "label", props); - } - } - } - }; - SeriesModel3.prototype.getInitialData = function(option, ecModel) { - return; - }; - SeriesModel3.prototype.appendData = function(params) { - var data = this.getRawData(); - data.appendData(params.data); - }; - SeriesModel3.prototype.getData = function(dataType) { - var task = getCurrentTask2(this); - if (task) { - var data = task.context.data; - return dataType == null || !data.getLinkedData ? data : data.getLinkedData(dataType); - } else { - return inner$1(this).data; - } - }; - SeriesModel3.prototype.getAllData = function() { - var mainData = this.getData(); - return mainData && mainData.getLinkedDataAll ? mainData.getLinkedDataAll() : [{ - data: mainData - }]; - }; - SeriesModel3.prototype.setData = function(data) { - var task = getCurrentTask2(this); - if (task) { - var context = task.context; - context.outputData = data; - if (task !== this.dataTask) { - context.data = data; - } - } - inner$1(this).data = data; - }; - SeriesModel3.prototype.getEncode = function() { - var encode = this.get("encode", true); - if (encode) { - return createHashMap2(encode); - } - }; - SeriesModel3.prototype.getSourceManager = function() { - return inner$1(this).sourceManager; - }; - SeriesModel3.prototype.getSource = function() { - return this.getSourceManager().getSource(); - }; - SeriesModel3.prototype.getRawData = function() { - return inner$1(this).dataBeforeProcessed; - }; - SeriesModel3.prototype.getColorBy = function() { - var colorBy = this.get("colorBy"); - return colorBy || "series"; - }; - SeriesModel3.prototype.isColorBySeries = function() { - return this.getColorBy() === "series"; - }; - SeriesModel3.prototype.getBaseAxis = function() { - var coordSys = this.coordinateSystem; - return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis(); - }; - SeriesModel3.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - return defaultSeriesFormatTooltip2({ - series: this, - dataIndex, - multipleSeries - }); - }; - SeriesModel3.prototype.isAnimationEnabled = function() { - var ecModel = this.ecModel; - if (env2.node && !(ecModel && ecModel.ssr)) { - return false; - } - var animationEnabled = this.getShallow("animation"); - if (animationEnabled) { - if (this.getData().count() > this.getShallow("animationThreshold")) { - animationEnabled = false; - } - } - return !!animationEnabled; - }; - SeriesModel3.prototype.restoreData = function() { - this.dataTask.dirty(); - }; - SeriesModel3.prototype.getColorFromPalette = function(name, scope, requestColorNum) { - var ecModel = this.ecModel; - var color2 = PaletteMixin2.prototype.getColorFromPalette.call(this, name, scope, requestColorNum); - if (!color2) { - color2 = ecModel.getColorFromPalette(name, scope, requestColorNum); - } - return color2; - }; - SeriesModel3.prototype.coordDimToDataDim = function(coordDim) { - return this.getRawData().mapDimensionsAll(coordDim); - }; - SeriesModel3.prototype.getProgressive = function() { - return this.get("progressive"); - }; - SeriesModel3.prototype.getProgressiveThreshold = function() { - return this.get("progressiveThreshold"); - }; - SeriesModel3.prototype.select = function(innerDataIndices, dataType) { - this._innerSelect(this.getData(dataType), innerDataIndices); - }; - SeriesModel3.prototype.unselect = function(innerDataIndices, dataType) { - var selectedMap = this.option.selectedMap; - if (!selectedMap) { - return; - } - var selectedMode = this.option.selectedMode; - var data = this.getData(dataType); - if (selectedMode === "series" || selectedMap === "all") { - this.option.selectedMap = {}; - this._selectedDataIndicesMap = {}; - return; - } - for (var i2 = 0; i2 < innerDataIndices.length; i2++) { - var dataIndex = innerDataIndices[i2]; - var nameOrId = getSelectionKey2(data, dataIndex); - selectedMap[nameOrId] = false; - this._selectedDataIndicesMap[nameOrId] = -1; - } - }; - SeriesModel3.prototype.toggleSelect = function(innerDataIndices, dataType) { - var tmpArr3 = []; - for (var i2 = 0; i2 < innerDataIndices.length; i2++) { - tmpArr3[0] = innerDataIndices[i2]; - this.isSelected(innerDataIndices[i2], dataType) ? this.unselect(tmpArr3, dataType) : this.select(tmpArr3, dataType); - } - }; - SeriesModel3.prototype.getSelectedDataIndices = function() { - if (this.option.selectedMap === "all") { - return [].slice.call(this.getData().getIndices()); - } - var selectedDataIndicesMap = this._selectedDataIndicesMap; - var nameOrIds = keys2(selectedDataIndicesMap); - var dataIndices = []; - for (var i2 = 0; i2 < nameOrIds.length; i2++) { - var dataIndex = selectedDataIndicesMap[nameOrIds[i2]]; - if (dataIndex >= 0) { - dataIndices.push(dataIndex); - } - } - return dataIndices; - }; - SeriesModel3.prototype.isSelected = function(dataIndex, dataType) { - var selectedMap = this.option.selectedMap; - if (!selectedMap) { - return false; - } - var data = this.getData(dataType); - return (selectedMap === "all" || selectedMap[getSelectionKey2(data, dataIndex)]) && !data.getItemModel(dataIndex).get(["select", "disabled"]); - }; - SeriesModel3.prototype.isUniversalTransitionEnabled = function() { - if (this[SERIES_UNIVERSAL_TRANSITION_PROP2]) { - return true; - } - var universalTransitionOpt = this.option.universalTransition; - if (!universalTransitionOpt) { - return false; - } - if (universalTransitionOpt === true) { - return true; - } - return universalTransitionOpt && universalTransitionOpt.enabled; - }; - SeriesModel3.prototype._innerSelect = function(data, innerDataIndices) { - var _a3, _b3; - var option = this.option; - var selectedMode = option.selectedMode; - var len3 = innerDataIndices.length; - if (!selectedMode || !len3) { - return; - } - if (selectedMode === "series") { - option.selectedMap = "all"; - } else if (selectedMode === "multiple") { - if (!isObject5(option.selectedMap)) { - option.selectedMap = {}; - } - var selectedMap = option.selectedMap; - for (var i2 = 0; i2 < len3; i2++) { - var dataIndex = innerDataIndices[i2]; - var nameOrId = getSelectionKey2(data, dataIndex); - selectedMap[nameOrId] = true; - this._selectedDataIndicesMap[nameOrId] = data.getRawIndex(dataIndex); - } - } else if (selectedMode === "single" || selectedMode === true) { - var lastDataIndex = innerDataIndices[len3 - 1]; - var nameOrId = getSelectionKey2(data, lastDataIndex); - option.selectedMap = (_a3 = {}, _a3[nameOrId] = true, _a3); - this._selectedDataIndicesMap = (_b3 = {}, _b3[nameOrId] = data.getRawIndex(lastDataIndex), _b3); - } - }; - SeriesModel3.prototype._initSelectedMapFromData = function(data) { - if (this.option.selectedMap) { - return; - } - var dataIndices = []; - if (data.hasItemOption) { - data.each(function(idx) { - var rawItem = data.getRawDataItem(idx); - if (rawItem && rawItem.selected) { - dataIndices.push(idx); - } - }); - } - if (dataIndices.length > 0) { - this._innerSelect(data, dataIndices); - } - }; - SeriesModel3.registerClass = function(clz) { - return ComponentModel2.registerClass(clz); - }; - SeriesModel3.protoInitialize = function() { - var proto3 = SeriesModel3.prototype; - proto3.type = "series.__base__"; - proto3.seriesIndex = 0; - proto3.ignoreStyleOnData = false; - proto3.hasSymbolVisual = false; - proto3.defaultSymbol = "circle"; - proto3.visualStyleAccessPath = "itemStyle"; - proto3.visualDrawType = "fill"; - }(); - return SeriesModel3; - }(ComponentModel2) - ); - mixin2(SeriesModel2, DataFormatMixin2); - mixin2(SeriesModel2, PaletteMixin2); - mountExtend2(SeriesModel2, ComponentModel2); - function autoSeriesName2(seriesModel) { - var name = seriesModel.name; - if (!isNameSpecified2(seriesModel)) { - seriesModel.name = getSeriesAutoName2(seriesModel) || name; - } - } - function getSeriesAutoName2(seriesModel) { - var data = seriesModel.getRawData(); - var dataDims = data.mapDimensionsAll("seriesName"); - var nameArr = []; - each17(dataDims, function(dataDim) { - var dimInfo = data.getDimensionInfo(dataDim); - dimInfo.displayName && nameArr.push(dimInfo.displayName); - }); - return nameArr.join(" "); - } - function dataTaskCount2(context) { - return context.model.getRawData().count(); - } - function dataTaskReset2(context) { - var seriesModel = context.model; - seriesModel.setData(seriesModel.getRawData().cloneShallow()); - return dataTaskProgress2; - } - function dataTaskProgress2(param, context) { - if (context.outputData && param.end > context.outputData.count()) { - context.model.getRawData().cloneShallow(context.outputData); - } - } - function wrapData2(data, seriesModel) { - each17(concatArray2(data.CHANGABLE_METHODS, data.DOWNSAMPLE_METHODS), function(methodName) { - data.wrapMethod(methodName, curry3(onDataChange2, seriesModel)); - }); - } - function onDataChange2(seriesModel, newList) { - var task = getCurrentTask2(seriesModel); - if (task) { - task.setOutputEnd((newList || this).count()); - } - return newList; - } - function getCurrentTask2(seriesModel) { - var scheduler = (seriesModel.ecModel || {}).scheduler; - var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid); - if (pipeline) { - var task = pipeline.currentTask; - if (task) { - var agentStubMap = task.agentStubMap; - if (agentStubMap) { - task = agentStubMap.get(seriesModel.uid); - } - } - return task; - } - } - var ComponentView2 = ( - /** @class */ - function() { - function ComponentView3() { - this.group = new Group5(); - this.uid = getUID2("viewComponent"); - } - ComponentView3.prototype.init = function(ecModel, api) { - }; - ComponentView3.prototype.render = function(model, ecModel, api, payload) { - }; - ComponentView3.prototype.dispose = function(ecModel, api) { - }; - ComponentView3.prototype.updateView = function(model, ecModel, api, payload) { - }; - ComponentView3.prototype.updateLayout = function(model, ecModel, api, payload) { - }; - ComponentView3.prototype.updateVisual = function(model, ecModel, api, payload) { - }; - ComponentView3.prototype.toggleBlurSeries = function(seriesModels, isBlur, ecModel) { - }; - ComponentView3.prototype.eachRendered = function(cb) { - var group = this.group; - if (group) { - group.traverse(cb); - } - }; - return ComponentView3; - }() - ); - enableClassExtend2(ComponentView2); - enableClassManagement2(ComponentView2); - function createRenderPlanner2() { - var inner24 = makeInner2(); - return function(seriesModel) { - var fields = inner24(seriesModel); - var pipelineContext = seriesModel.pipelineContext; - var originalLarge = !!fields.large; - var originalProgressive = !!fields.progressiveRender; - var large = fields.large = !!(pipelineContext && pipelineContext.large); - var progressive = fields.progressiveRender = !!(pipelineContext && pipelineContext.progressiveRender); - return !!(originalLarge !== large || originalProgressive !== progressive) && "reset"; - }; - } - var inner$2 = makeInner2(); - var renderPlanner2 = createRenderPlanner2(); - var ChartView2 = ( - /** @class */ - function() { - function ChartView3() { - this.group = new Group5(); - this.uid = getUID2("viewChart"); - this.renderTask = createTask2({ - plan: renderTaskPlan2, - reset: renderTaskReset2 - }); - this.renderTask.context = { - view: this - }; - } - ChartView3.prototype.init = function(ecModel, api) { - }; - ChartView3.prototype.render = function(seriesModel, ecModel, api, payload) { - if (true) { - throw new Error("render method must been implemented"); - } - }; - ChartView3.prototype.highlight = function(seriesModel, ecModel, api, payload) { - var data = seriesModel.getData(payload && payload.dataType); - if (!data) { - if (true) { - error3("Unknown dataType " + payload.dataType); - } - return; - } - toggleHighlight2(data, payload, "emphasis"); - }; - ChartView3.prototype.downplay = function(seriesModel, ecModel, api, payload) { - var data = seriesModel.getData(payload && payload.dataType); - if (!data) { - if (true) { - error3("Unknown dataType " + payload.dataType); - } - return; - } - toggleHighlight2(data, payload, "normal"); - }; - ChartView3.prototype.remove = function(ecModel, api) { - this.group.removeAll(); - }; - ChartView3.prototype.dispose = function(ecModel, api) { - }; - ChartView3.prototype.updateView = function(seriesModel, ecModel, api, payload) { - this.render(seriesModel, ecModel, api, payload); - }; - ChartView3.prototype.updateLayout = function(seriesModel, ecModel, api, payload) { - this.render(seriesModel, ecModel, api, payload); - }; - ChartView3.prototype.updateVisual = function(seriesModel, ecModel, api, payload) { - this.render(seriesModel, ecModel, api, payload); - }; - ChartView3.prototype.eachRendered = function(cb) { - traverseElements2(this.group, cb); - }; - ChartView3.markUpdateMethod = function(payload, methodName) { - inner$2(payload).updateMethod = methodName; - }; - ChartView3.protoInitialize = function() { - var proto3 = ChartView3.prototype; - proto3.type = "chart"; - }(); - return ChartView3; - }() - ); - function elSetState2(el, state, highlightDigit) { - if (el && isHighDownDispatcher2(el)) { - (state === "emphasis" ? enterEmphasis2 : leaveEmphasis2)(el, highlightDigit); - } - } - function toggleHighlight2(data, payload, state) { - var dataIndex = queryDataIndex2(data, payload); - var highlightDigit = payload && payload.highlightKey != null ? getHighlightDigit2(payload.highlightKey) : null; - if (dataIndex != null) { - each17(normalizeToArray2(dataIndex), function(dataIdx) { - elSetState2(data.getItemGraphicEl(dataIdx), state, highlightDigit); - }); - } else { - data.eachItemGraphicEl(function(el) { - elSetState2(el, state, highlightDigit); - }); - } - } - enableClassExtend2(ChartView2, ["dispose"]); - enableClassManagement2(ChartView2); - function renderTaskPlan2(context) { - return renderPlanner2(context.model); - } - function renderTaskReset2(context) { - var seriesModel = context.model; - var ecModel = context.ecModel; - var api = context.api; - var payload = context.payload; - var progressiveRender = seriesModel.pipelineContext.progressiveRender; - var view = context.view; - var updateMethod = payload && inner$2(payload).updateMethod; - var methodName = progressiveRender ? "incrementalPrepareRender" : updateMethod && view[updateMethod] ? updateMethod : "render"; - if (methodName !== "render") { - view[methodName](seriesModel, ecModel, api, payload); - } - return progressMethodMap2[methodName]; - } - var progressMethodMap2 = { - incrementalPrepareRender: { - progress: function(params, context) { - context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload); - } - }, - render: { - // Put view.render in `progress` to support appendData. But in this case - // view.render should not be called in reset, otherwise it will be called - // twise. Use `forceFirstProgress` to make sure that view.render is called - // in any cases. - forceFirstProgress: true, - progress: function(params, context) { - context.view.render(context.model, context.ecModel, context.api, context.payload); - } - } - }; - var ORIGIN_METHOD2 = "\0__throttleOriginMethod"; - var RATE2 = "\0__throttleRate"; - var THROTTLE_TYPE2 = "\0__throttleType"; - function throttle2(fn, delay, debounce2) { - var currCall; - var lastCall = 0; - var lastExec = 0; - var timer = null; - var diff; - var scope; - var args; - var debounceNextCall; - delay = delay || 0; - function exec() { - lastExec = (/* @__PURE__ */ new Date()).getTime(); - timer = null; - fn.apply(scope, args || []); - } - var cb = function() { - var cbArgs = []; - for (var _i = 0; _i < arguments.length; _i++) { - cbArgs[_i] = arguments[_i]; - } - currCall = (/* @__PURE__ */ new Date()).getTime(); - scope = this; - args = cbArgs; - var thisDelay = debounceNextCall || delay; - var thisDebounce = debounceNextCall || debounce2; - debounceNextCall = null; - diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay; - clearTimeout(timer); - if (thisDebounce) { - timer = setTimeout(exec, thisDelay); - } else { - if (diff >= 0) { - exec(); - } else { - timer = setTimeout(exec, -diff); - } - } - lastCall = currCall; - }; - cb.clear = function() { - if (timer) { - clearTimeout(timer); - timer = null; - } - }; - cb.debounceNextCall = function(debounceDelay) { - debounceNextCall = debounceDelay; - }; - return cb; - } - function createOrUpdate2(obj, fnAttr, rate, throttleType) { - var fn = obj[fnAttr]; - if (!fn) { - return; - } - var originFn = fn[ORIGIN_METHOD2] || fn; - var lastThrottleType = fn[THROTTLE_TYPE2]; - var lastRate = fn[RATE2]; - if (lastRate !== rate || lastThrottleType !== throttleType) { - if (rate == null || !throttleType) { - return obj[fnAttr] = originFn; - } - fn = obj[fnAttr] = throttle2(originFn, rate, throttleType === "debounce"); - fn[ORIGIN_METHOD2] = originFn; - fn[THROTTLE_TYPE2] = throttleType; - fn[RATE2] = rate; - } - return fn; - } - function clear3(obj, fnAttr) { - var fn = obj[fnAttr]; - if (fn && fn[ORIGIN_METHOD2]) { - fn.clear && fn.clear(); - obj[fnAttr] = fn[ORIGIN_METHOD2]; - } - } - var inner$3 = makeInner2(); - var defaultStyleMappers2 = { - itemStyle: makeStyleMapper2(ITEM_STYLE_KEY_MAP2, true), - lineStyle: makeStyleMapper2(LINE_STYLE_KEY_MAP2, true) - }; - var defaultColorKey2 = { - lineStyle: "stroke", - itemStyle: "fill" - }; - function getStyleMapper2(seriesModel, stylePath) { - var styleMapper = seriesModel.visualStyleMapper || defaultStyleMappers2[stylePath]; - if (!styleMapper) { - console.warn("Unknown style type '" + stylePath + "'."); - return defaultStyleMappers2.itemStyle; - } - return styleMapper; - } - function getDefaultColorKey2(seriesModel, stylePath) { - var colorKey = seriesModel.visualDrawType || defaultColorKey2[stylePath]; - if (!colorKey) { - console.warn("Unknown style type '" + stylePath + "'."); - return "fill"; - } - return colorKey; - } - var seriesStyleTask2 = { - createOnAllSeries: true, - performRawSeries: true, - reset: function(seriesModel, ecModel) { - var data = seriesModel.getData(); - var stylePath = seriesModel.visualStyleAccessPath || "itemStyle"; - var styleModel = seriesModel.getModel(stylePath); - var getStyle3 = getStyleMapper2(seriesModel, stylePath); - var globalStyle = getStyle3(styleModel); - var decalOption = styleModel.getShallow("decal"); - if (decalOption) { - data.setVisual("decal", decalOption); - decalOption.dirty = true; - } - var colorKey = getDefaultColorKey2(seriesModel, stylePath); - var color2 = globalStyle[colorKey]; - var colorCallback = isFunction2(color2) ? color2 : null; - var hasAutoColor = globalStyle.fill === "auto" || globalStyle.stroke === "auto"; - if (!globalStyle[colorKey] || colorCallback || hasAutoColor) { - var colorPalette3 = seriesModel.getColorFromPalette( - // TODO series count changed. - seriesModel.name, - null, - ecModel.getSeriesCount() - ); - if (!globalStyle[colorKey]) { - globalStyle[colorKey] = colorPalette3; - data.setVisual("colorFromPalette", true); - } - globalStyle.fill = globalStyle.fill === "auto" || isFunction2(globalStyle.fill) ? colorPalette3 : globalStyle.fill; - globalStyle.stroke = globalStyle.stroke === "auto" || isFunction2(globalStyle.stroke) ? colorPalette3 : globalStyle.stroke; - } - data.setVisual("style", globalStyle); - data.setVisual("drawType", colorKey); - if (!ecModel.isSeriesFiltered(seriesModel) && colorCallback) { - data.setVisual("colorFromPalette", false); - return { - dataEach: function(data2, idx) { - var dataParams = seriesModel.getDataParams(idx); - var itemStyle = extend3({}, globalStyle); - itemStyle[colorKey] = colorCallback(dataParams); - data2.setItemVisual(idx, "style", itemStyle); - } - }; - } - } - }; - var sharedModel2 = new Model2(); - var dataStyleTask2 = { - createOnAllSeries: true, - performRawSeries: true, - reset: function(seriesModel, ecModel) { - if (seriesModel.ignoreStyleOnData || ecModel.isSeriesFiltered(seriesModel)) { - return; - } - var data = seriesModel.getData(); - var stylePath = seriesModel.visualStyleAccessPath || "itemStyle"; - var getStyle3 = getStyleMapper2(seriesModel, stylePath); - var colorKey = data.getVisual("drawType"); - return { - dataEach: data.hasItemOption ? function(data2, idx) { - var rawItem = data2.getRawDataItem(idx); - if (rawItem && rawItem[stylePath]) { - sharedModel2.option = rawItem[stylePath]; - var style = getStyle3(sharedModel2); - var existsStyle = data2.ensureUniqueItemVisual(idx, "style"); - extend3(existsStyle, style); - if (sharedModel2.option.decal) { - data2.setItemVisual(idx, "decal", sharedModel2.option.decal); - sharedModel2.option.decal.dirty = true; - } - if (colorKey in style) { - data2.setItemVisual(idx, "colorFromPalette", false); - } - } - } : null - }; - } - }; - var dataColorPaletteTask2 = { - performRawSeries: true, - overallReset: function(ecModel) { - var paletteScopeGroupByType = createHashMap2(); - ecModel.eachSeries(function(seriesModel) { - var colorBy = seriesModel.getColorBy(); - if (seriesModel.isColorBySeries()) { - return; - } - var key = seriesModel.type + "-" + colorBy; - var colorScope = paletteScopeGroupByType.get(key); - if (!colorScope) { - colorScope = {}; - paletteScopeGroupByType.set(key, colorScope); - } - inner$3(seriesModel).scope = colorScope; - }); - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.isColorBySeries() || ecModel.isSeriesFiltered(seriesModel)) { - return; - } - var dataAll = seriesModel.getRawData(); - var idxMap = {}; - var data = seriesModel.getData(); - var colorScope = inner$3(seriesModel).scope; - var stylePath = seriesModel.visualStyleAccessPath || "itemStyle"; - var colorKey = getDefaultColorKey2(seriesModel, stylePath); - data.each(function(idx) { - var rawIdx = data.getRawIndex(idx); - idxMap[rawIdx] = idx; - }); - dataAll.each(function(rawIdx) { - var idx = idxMap[rawIdx]; - var fromPalette = data.getItemVisual(idx, "colorFromPalette"); - if (fromPalette) { - var itemStyle = data.ensureUniqueItemVisual(idx, "style"); - var name_1 = dataAll.getName(rawIdx) || rawIdx + ""; - var dataCount = dataAll.count(); - itemStyle[colorKey] = seriesModel.getColorFromPalette(name_1, colorScope, dataCount); - } - }); - }); - } - }; - var PI$3 = Math.PI; - function defaultLoading2(api, opts) { - opts = opts || {}; - defaults2(opts, { - text: "loading", - textColor: "#000", - fontSize: 12, - fontWeight: "normal", - fontStyle: "normal", - fontFamily: "sans-serif", - maskColor: "rgba(255, 255, 255, 0.8)", - showSpinner: true, - color: "#5470c6", - spinnerRadius: 10, - lineWidth: 5, - zlevel: 0 - }); - var group = new Group5(); - var mask = new Rect4({ - style: { - fill: opts.maskColor - }, - zlevel: opts.zlevel, - z: 1e4 - }); - group.add(mask); - var textContent = new ZRText2({ - style: { - text: opts.text, - fill: opts.textColor, - fontSize: opts.fontSize, - fontWeight: opts.fontWeight, - fontStyle: opts.fontStyle, - fontFamily: opts.fontFamily - }, - zlevel: opts.zlevel, - z: 10001 - }); - var labelRect = new Rect4({ - style: { - fill: "none" - }, - textContent, - textConfig: { - position: "right", - distance: 10 - }, - zlevel: opts.zlevel, - z: 10001 - }); - group.add(labelRect); - var arc; - if (opts.showSpinner) { - arc = new Arc2({ - shape: { - startAngle: -PI$3 / 2, - endAngle: -PI$3 / 2 + 0.1, - r: opts.spinnerRadius - }, - style: { - stroke: opts.color, - lineCap: "round", - lineWidth: opts.lineWidth - }, - zlevel: opts.zlevel, - z: 10001 - }); - arc.animateShape(true).when(1e3, { - endAngle: PI$3 * 3 / 2 - }).start("circularInOut"); - arc.animateShape(true).when(1e3, { - startAngle: PI$3 * 3 / 2 - }).delay(300).start("circularInOut"); - group.add(arc); - } - group.resize = function() { - var textWidth = textContent.getBoundingRect().width; - var r = opts.showSpinner ? opts.spinnerRadius : 0; - var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2 - (opts.showSpinner && textWidth ? 0 : 5 + textWidth / 2) + (opts.showSpinner ? 0 : textWidth / 2) + (textWidth ? 0 : r); - var cy = api.getHeight() / 2; - opts.showSpinner && arc.setShape({ - cx, - cy - }); - labelRect.setShape({ - x: cx - r, - y: cy - r, - width: r * 2, - height: r * 2 - }); - mask.setShape({ - x: 0, - y: 0, - width: api.getWidth(), - height: api.getHeight() - }); - }; - group.resize(); - return group; - } - var Scheduler2 = ( - /** @class */ - function() { - function Scheduler3(ecInstance, api, dataProcessorHandlers, visualHandlers) { - this._stageTaskMap = createHashMap2(); - this.ecInstance = ecInstance; - this.api = api; - dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice(); - visualHandlers = this._visualHandlers = visualHandlers.slice(); - this._allHandlers = dataProcessorHandlers.concat(visualHandlers); - } - Scheduler3.prototype.restoreData = function(ecModel, payload) { - ecModel.restoreData(payload); - this._stageTaskMap.each(function(taskRecord) { - var overallTask = taskRecord.overallTask; - overallTask && overallTask.dirty(); - }); - }; - Scheduler3.prototype.getPerformArgs = function(task, isBlock) { - if (!task.__pipeline) { - return; - } - var pipeline = this._pipelineMap.get(task.__pipeline.id); - var pCtx = pipeline.context; - var incremental = !isBlock && pipeline.progressiveEnabled && (!pCtx || pCtx.progressiveRender) && task.__idxInPipeline > pipeline.blockIndex; - var step = incremental ? pipeline.step : null; - var modDataCount = pCtx && pCtx.modDataCount; - var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null; - return { - step, - modBy, - modDataCount - }; - }; - Scheduler3.prototype.getPipeline = function(pipelineId) { - return this._pipelineMap.get(pipelineId); - }; - Scheduler3.prototype.updateStreamModes = function(seriesModel, view) { - var pipeline = this._pipelineMap.get(seriesModel.uid); - var data = seriesModel.getData(); - var dataLen = data.count(); - var progressiveRender = pipeline.progressiveEnabled && view.incrementalPrepareRender && dataLen >= pipeline.threshold; - var large = seriesModel.get("large") && dataLen >= seriesModel.get("largeThreshold"); - var modDataCount = seriesModel.get("progressiveChunkMode") === "mod" ? dataLen : null; - seriesModel.pipelineContext = pipeline.context = { - progressiveRender, - modDataCount, - large - }; - }; - Scheduler3.prototype.restorePipelines = function(ecModel) { - var scheduler = this; - var pipelineMap = scheduler._pipelineMap = createHashMap2(); - ecModel.eachSeries(function(seriesModel) { - var progressive = seriesModel.getProgressive(); - var pipelineId = seriesModel.uid; - pipelineMap.set(pipelineId, { - id: pipelineId, - head: null, - tail: null, - threshold: seriesModel.getProgressiveThreshold(), - progressiveEnabled: progressive && !(seriesModel.preventIncremental && seriesModel.preventIncremental()), - blockIndex: -1, - step: Math.round(progressive || 700), - count: 0 - }); - scheduler._pipe(seriesModel, seriesModel.dataTask); - }); - }; - Scheduler3.prototype.prepareStageTasks = function() { - var stageTaskMap = this._stageTaskMap; - var ecModel = this.api.getModel(); - var api = this.api; - each17(this._allHandlers, function(handler) { - var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, {}); - var errMsg = ""; - if (true) { - errMsg = '"reset" and "overallReset" must not be both specified.'; - } - assert2(!(handler.reset && handler.overallReset), errMsg); - handler.reset && this._createSeriesStageTask(handler, record, ecModel, api); - handler.overallReset && this._createOverallStageTask(handler, record, ecModel, api); - }, this); - }; - Scheduler3.prototype.prepareView = function(view, model, ecModel, api) { - var renderTask = view.renderTask; - var context = renderTask.context; - context.model = model; - context.ecModel = ecModel; - context.api = api; - renderTask.__block = !view.incrementalPrepareRender; - this._pipe(model, renderTask); - }; - Scheduler3.prototype.performDataProcessorTasks = function(ecModel, payload) { - this._performStageTasks(this._dataProcessorHandlers, ecModel, payload, { - block: true - }); - }; - Scheduler3.prototype.performVisualTasks = function(ecModel, payload, opt) { - this._performStageTasks(this._visualHandlers, ecModel, payload, opt); - }; - Scheduler3.prototype._performStageTasks = function(stageHandlers, ecModel, payload, opt) { - opt = opt || {}; - var unfinished = false; - var scheduler = this; - each17(stageHandlers, function(stageHandler, idx) { - if (opt.visualType && opt.visualType !== stageHandler.visualType) { - return; - } - var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid); - var seriesTaskMap = stageHandlerRecord.seriesTaskMap; - var overallTask = stageHandlerRecord.overallTask; - if (overallTask) { - var overallNeedDirty_1; - var agentStubMap = overallTask.agentStubMap; - agentStubMap.each(function(stub) { - if (needSetDirty(opt, stub)) { - stub.dirty(); - overallNeedDirty_1 = true; - } - }); - overallNeedDirty_1 && overallTask.dirty(); - scheduler.updatePayload(overallTask, payload); - var performArgs_1 = scheduler.getPerformArgs(overallTask, opt.block); - agentStubMap.each(function(stub) { - stub.perform(performArgs_1); - }); - if (overallTask.perform(performArgs_1)) { - unfinished = true; - } - } else if (seriesTaskMap) { - seriesTaskMap.each(function(task, pipelineId) { - if (needSetDirty(opt, task)) { - task.dirty(); - } - var performArgs = scheduler.getPerformArgs(task, opt.block); - performArgs.skip = !stageHandler.performRawSeries && ecModel.isSeriesFiltered(task.context.model); - scheduler.updatePayload(task, payload); - if (task.perform(performArgs)) { - unfinished = true; - } - }); - } - }); - function needSetDirty(opt2, task) { - return opt2.setDirty && (!opt2.dirtyMap || opt2.dirtyMap.get(task.__pipeline.id)); - } - this.unfinished = unfinished || this.unfinished; - }; - Scheduler3.prototype.performSeriesTasks = function(ecModel) { - var unfinished; - ecModel.eachSeries(function(seriesModel) { - unfinished = seriesModel.dataTask.perform() || unfinished; - }); - this.unfinished = unfinished || this.unfinished; - }; - Scheduler3.prototype.plan = function() { - this._pipelineMap.each(function(pipeline) { - var task = pipeline.tail; - do { - if (task.__block) { - pipeline.blockIndex = task.__idxInPipeline; - break; - } - task = task.getUpstream(); - } while (task); - }); - }; - Scheduler3.prototype.updatePayload = function(task, payload) { - payload !== "remain" && (task.context.payload = payload); - }; - Scheduler3.prototype._createSeriesStageTask = function(stageHandler, stageHandlerRecord, ecModel, api) { - var scheduler = this; - var oldSeriesTaskMap = stageHandlerRecord.seriesTaskMap; - var newSeriesTaskMap = stageHandlerRecord.seriesTaskMap = createHashMap2(); - var seriesType3 = stageHandler.seriesType; - var getTargetSeries = stageHandler.getTargetSeries; - if (stageHandler.createOnAllSeries) { - ecModel.eachRawSeries(create5); - } else if (seriesType3) { - ecModel.eachRawSeriesByType(seriesType3, create5); - } else if (getTargetSeries) { - getTargetSeries(ecModel, api).each(create5); - } - function create5(seriesModel) { - var pipelineId = seriesModel.uid; - var task = newSeriesTaskMap.set(pipelineId, oldSeriesTaskMap && oldSeriesTaskMap.get(pipelineId) || createTask2({ - plan: seriesTaskPlan2, - reset: seriesTaskReset2, - count: seriesTaskCount2 - })); - task.context = { - model: seriesModel, - ecModel, - api, - // PENDING: `useClearVisual` not used? - useClearVisual: stageHandler.isVisual && !stageHandler.isLayout, - plan: stageHandler.plan, - reset: stageHandler.reset, - scheduler - }; - scheduler._pipe(seriesModel, task); - } - }; - Scheduler3.prototype._createOverallStageTask = function(stageHandler, stageHandlerRecord, ecModel, api) { - var scheduler = this; - var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask || createTask2({ - reset: overallTaskReset2 - }); - overallTask.context = { - ecModel, - api, - overallReset: stageHandler.overallReset, - scheduler - }; - var oldAgentStubMap = overallTask.agentStubMap; - var newAgentStubMap = overallTask.agentStubMap = createHashMap2(); - var seriesType3 = stageHandler.seriesType; - var getTargetSeries = stageHandler.getTargetSeries; - var overallProgress = true; - var shouldOverallTaskDirty = false; - var errMsg = ""; - if (true) { - errMsg = '"createOnAllSeries" is not supported for "overallReset", because it will block all streams.'; - } - assert2(!stageHandler.createOnAllSeries, errMsg); - if (seriesType3) { - ecModel.eachRawSeriesByType(seriesType3, createStub); - } else if (getTargetSeries) { - getTargetSeries(ecModel, api).each(createStub); - } else { - overallProgress = false; - each17(ecModel.getSeries(), createStub); - } - function createStub(seriesModel) { - var pipelineId = seriesModel.uid; - var stub = newAgentStubMap.set(pipelineId, oldAgentStubMap && oldAgentStubMap.get(pipelineId) || // When the result of `getTargetSeries` changed, the overallTask - // should be set as dirty and re-performed. - (shouldOverallTaskDirty = true, createTask2({ - reset: stubReset2, - onDirty: stubOnDirty2 - }))); - stub.context = { - model: seriesModel, - overallProgress - // FIXME:TS never used, so comment it - // modifyOutputEnd: modifyOutputEnd - }; - stub.agent = overallTask; - stub.__block = overallProgress; - scheduler._pipe(seriesModel, stub); - } - if (shouldOverallTaskDirty) { - overallTask.dirty(); - } - }; - Scheduler3.prototype._pipe = function(seriesModel, task) { - var pipelineId = seriesModel.uid; - var pipeline = this._pipelineMap.get(pipelineId); - !pipeline.head && (pipeline.head = task); - pipeline.tail && pipeline.tail.pipe(task); - pipeline.tail = task; - task.__idxInPipeline = pipeline.count++; - task.__pipeline = pipeline; - }; - Scheduler3.wrapStageHandler = function(stageHandler, visualType) { - if (isFunction2(stageHandler)) { - stageHandler = { - overallReset: stageHandler, - seriesType: detectSeriseType2(stageHandler) - }; - } - stageHandler.uid = getUID2("stageHandler"); - visualType && (stageHandler.visualType = visualType); - return stageHandler; - }; - return Scheduler3; - }() - ); - function overallTaskReset2(context) { - context.overallReset(context.ecModel, context.api, context.payload); - } - function stubReset2(context) { - return context.overallProgress && stubProgress2; - } - function stubProgress2() { - this.agent.dirty(); - this.getDownstream().dirty(); - } - function stubOnDirty2() { - this.agent && this.agent.dirty(); - } - function seriesTaskPlan2(context) { - return context.plan ? context.plan(context.model, context.ecModel, context.api, context.payload) : null; - } - function seriesTaskReset2(context) { - if (context.useClearVisual) { - context.data.clearAllVisual(); - } - var resetDefines = context.resetDefines = normalizeToArray2(context.reset(context.model, context.ecModel, context.api, context.payload)); - return resetDefines.length > 1 ? map3(resetDefines, function(v, idx) { - return makeSeriesTaskProgress2(idx); - }) : singleSeriesTaskProgress2; - } - var singleSeriesTaskProgress2 = makeSeriesTaskProgress2(0); - function makeSeriesTaskProgress2(resetDefineIdx) { - return function(params, context) { - var data = context.data; - var resetDefine = context.resetDefines[resetDefineIdx]; - if (resetDefine && resetDefine.dataEach) { - for (var i2 = params.start; i2 < params.end; i2++) { - resetDefine.dataEach(data, i2); - } - } else if (resetDefine && resetDefine.progress) { - resetDefine.progress(params, data); - } - }; - } - function seriesTaskCount2(context) { - return context.data.count(); - } - function detectSeriseType2(legacyFunc) { - seriesType2 = null; - try { - legacyFunc(ecModelMock2, apiMock2); - } catch (e3) { - } - return seriesType2; - } - var ecModelMock2 = {}; - var apiMock2 = {}; - var seriesType2; - mockMethods2(ecModelMock2, GlobalModel2); - mockMethods2(apiMock2, ExtensionAPI2); - ecModelMock2.eachSeriesByType = ecModelMock2.eachRawSeriesByType = function(type) { - seriesType2 = type; - }; - ecModelMock2.eachComponent = function(cond) { - if (cond.mainType === "series" && cond.subType) { - seriesType2 = cond.subType; - } - }; - function mockMethods2(target, Clz) { - for (var name_1 in Clz.prototype) { - target[name_1] = noop2; - } - } - var colorAll2 = ["#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF"]; - var lightTheme = { - color: colorAll2, - colorLayer: [["#37A2DA", "#ffd85c", "#fd7b5f"], ["#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5"], ["#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF"], colorAll2] - }; - var contrastColor2 = "#B9B8CE"; - var backgroundColor2 = "#100C2A"; - var axisCommon2 = function() { - return { - axisLine: { - lineStyle: { - color: contrastColor2 - } - }, - splitLine: { - lineStyle: { - color: "#484753" - } - }, - splitArea: { - areaStyle: { - color: ["rgba(255,255,255,0.02)", "rgba(255,255,255,0.05)"] - } - }, - minorSplitLine: { - lineStyle: { - color: "#20203B" - } - } - }; - }; - var colorPalette2 = ["#4992ff", "#7cffb2", "#fddd60", "#ff6e76", "#58d9f9", "#05c091", "#ff8a45", "#8d48e3", "#dd79ff"]; - var theme2 = { - darkMode: true, - color: colorPalette2, - backgroundColor: backgroundColor2, - axisPointer: { - lineStyle: { - color: "#817f91" - }, - crossStyle: { - color: "#817f91" - }, - label: { - // TODO Contrast of label backgorundColor - color: "#fff" - } - }, - legend: { - textStyle: { - color: contrastColor2 - }, - pageTextStyle: { - color: contrastColor2 - } - }, - textStyle: { - color: contrastColor2 - }, - title: { - textStyle: { - color: "#EEF1FA" - }, - subtextStyle: { - color: "#B9B8CE" - } - }, - toolbox: { - iconStyle: { - borderColor: contrastColor2 - } - }, - dataZoom: { - borderColor: "#71708A", - textStyle: { - color: contrastColor2 - }, - brushStyle: { - color: "rgba(135,163,206,0.3)" - }, - handleStyle: { - color: "#353450", - borderColor: "#C5CBE3" - }, - moveHandleStyle: { - color: "#B0B6C3", - opacity: 0.3 - }, - fillerColor: "rgba(135,163,206,0.2)", - emphasis: { - handleStyle: { - borderColor: "#91B7F2", - color: "#4D587D" - }, - moveHandleStyle: { - color: "#636D9A", - opacity: 0.7 - } - }, - dataBackground: { - lineStyle: { - color: "#71708A", - width: 1 - }, - areaStyle: { - color: "#71708A" - } - }, - selectedDataBackground: { - lineStyle: { - color: "#87A3CE" - }, - areaStyle: { - color: "#87A3CE" - } - } - }, - visualMap: { - textStyle: { - color: contrastColor2 - } - }, - timeline: { - lineStyle: { - color: contrastColor2 - }, - label: { - color: contrastColor2 - }, - controlStyle: { - color: contrastColor2, - borderColor: contrastColor2 - } - }, - calendar: { - itemStyle: { - color: backgroundColor2 - }, - dayLabel: { - color: contrastColor2 - }, - monthLabel: { - color: contrastColor2 - }, - yearLabel: { - color: contrastColor2 - } - }, - timeAxis: axisCommon2(), - logAxis: axisCommon2(), - valueAxis: axisCommon2(), - categoryAxis: axisCommon2(), - line: { - symbol: "circle" - }, - graph: { - color: colorPalette2 - }, - gauge: { - title: { - color: contrastColor2 - }, - axisLine: { - lineStyle: { - color: [[1, "rgba(207,212,219,0.2)"]] - } - }, - axisLabel: { - color: contrastColor2 - }, - detail: { - color: "#EEF1FA" - } - }, - candlestick: { - itemStyle: { - color: "#f64e56", - color0: "#54ea92", - borderColor: "#f64e56", - borderColor0: "#54ea92" - // borderColor: '#ca2824', - // borderColor0: '#09a443' - } - } - }; - theme2.categoryAxis.splitLine.show = false; - var ECEventProcessor2 = ( - /** @class */ - function() { - function ECEventProcessor3() { - } - ECEventProcessor3.prototype.normalizeQuery = function(query) { - var cptQuery = {}; - var dataQuery = {}; - var otherQuery = {}; - if (isString2(query)) { - var condCptType = parseClassType2(query); - cptQuery.mainType = condCptType.main || null; - cptQuery.subType = condCptType.sub || null; - } else { - var suffixes_1 = ["Index", "Name", "Id"]; - var dataKeys_1 = { - name: 1, - dataIndex: 1, - dataType: 1 - }; - each17(query, function(val, key) { - var reserved = false; - for (var i2 = 0; i2 < suffixes_1.length; i2++) { - var propSuffix = suffixes_1[i2]; - var suffixPos = key.lastIndexOf(propSuffix); - if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) { - var mainType = key.slice(0, suffixPos); - if (mainType !== "data") { - cptQuery.mainType = mainType; - cptQuery[propSuffix.toLowerCase()] = val; - reserved = true; - } - } - } - if (dataKeys_1.hasOwnProperty(key)) { - dataQuery[key] = val; - reserved = true; - } - if (!reserved) { - otherQuery[key] = val; - } - }); - } - return { - cptQuery, - dataQuery, - otherQuery - }; - }; - ECEventProcessor3.prototype.filter = function(eventType, query) { - var eventInfo = this.eventInfo; - if (!eventInfo) { - return true; - } - var targetEl = eventInfo.targetEl; - var packedEvent = eventInfo.packedEvent; - var model = eventInfo.model; - var view = eventInfo.view; - if (!model || !view) { - return true; - } - var cptQuery = query.cptQuery; - var dataQuery = query.dataQuery; - return check(cptQuery, model, "mainType") && check(cptQuery, model, "subType") && check(cptQuery, model, "index", "componentIndex") && check(cptQuery, model, "name") && check(cptQuery, model, "id") && check(dataQuery, packedEvent, "name") && check(dataQuery, packedEvent, "dataIndex") && check(dataQuery, packedEvent, "dataType") && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent)); - function check(query2, host, prop, propOnHost) { - return query2[prop] == null || host[propOnHost || prop] === query2[prop]; - } - }; - ECEventProcessor3.prototype.afterTrigger = function() { - this.eventInfo = null; - }; - return ECEventProcessor3; - }() - ); - var SYMBOL_PROPS_WITH_CB2 = ["symbol", "symbolSize", "symbolRotate", "symbolOffset"]; - var SYMBOL_PROPS2 = SYMBOL_PROPS_WITH_CB2.concat(["symbolKeepAspect"]); - var seriesSymbolTask2 = { - createOnAllSeries: true, - // For legend. - performRawSeries: true, - reset: function(seriesModel, ecModel) { - var data = seriesModel.getData(); - if (seriesModel.legendIcon) { - data.setVisual("legendIcon", seriesModel.legendIcon); - } - if (!seriesModel.hasSymbolVisual) { - return; - } - var symbolOptions = {}; - var symbolOptionsCb = {}; - var hasCallback = false; - for (var i2 = 0; i2 < SYMBOL_PROPS_WITH_CB2.length; i2++) { - var symbolPropName = SYMBOL_PROPS_WITH_CB2[i2]; - var val = seriesModel.get(symbolPropName); - if (isFunction2(val)) { - hasCallback = true; - symbolOptionsCb[symbolPropName] = val; - } else { - symbolOptions[symbolPropName] = val; - } - } - symbolOptions.symbol = symbolOptions.symbol || seriesModel.defaultSymbol; - data.setVisual(extend3({ - legendIcon: seriesModel.legendIcon || symbolOptions.symbol, - symbolKeepAspect: seriesModel.get("symbolKeepAspect") - }, symbolOptions)); - if (ecModel.isSeriesFiltered(seriesModel)) { - return; - } - var symbolPropsCb = keys2(symbolOptionsCb); - function dataEach(data2, idx) { - var rawValue = seriesModel.getRawValue(idx); - var params = seriesModel.getDataParams(idx); - for (var i3 = 0; i3 < symbolPropsCb.length; i3++) { - var symbolPropName2 = symbolPropsCb[i3]; - data2.setItemVisual(idx, symbolPropName2, symbolOptionsCb[symbolPropName2](rawValue, params)); - } - } - return { - dataEach: hasCallback ? dataEach : null - }; - } - }; - var dataSymbolTask2 = { - createOnAllSeries: true, - // For legend. - performRawSeries: true, - reset: function(seriesModel, ecModel) { - if (!seriesModel.hasSymbolVisual) { - return; - } - if (ecModel.isSeriesFiltered(seriesModel)) { - return; - } - var data = seriesModel.getData(); - function dataEach(data2, idx) { - var itemModel = data2.getItemModel(idx); - for (var i2 = 0; i2 < SYMBOL_PROPS2.length; i2++) { - var symbolPropName = SYMBOL_PROPS2[i2]; - var val = itemModel.getShallow(symbolPropName, true); - if (val != null) { - data2.setItemVisual(idx, symbolPropName, val); - } - } - } - return { - dataEach: data.hasItemOption ? dataEach : null - }; - } - }; - function getItemVisualFromData2(data, dataIndex, key) { - switch (key) { - case "color": - var style = data.getItemVisual(dataIndex, "style"); - return style[data.getVisual("drawType")]; - case "opacity": - return data.getItemVisual(dataIndex, "style").opacity; - case "symbol": - case "symbolSize": - case "liftZ": - return data.getItemVisual(dataIndex, key); - default: - if (true) { - console.warn("Unknown visual type " + key); - } - } - } - function getVisualFromData2(data, key) { - switch (key) { - case "color": - var style = data.getVisual("style"); - return style[data.getVisual("drawType")]; - case "opacity": - return data.getVisual("style").opacity; - case "symbol": - case "symbolSize": - case "liftZ": - return data.getVisual(key); - default: - if (true) { - console.warn("Unknown visual type " + key); - } - } - } - function setItemVisualFromData2(data, dataIndex, key, value) { - switch (key) { - case "color": - var style = data.ensureUniqueItemVisual(dataIndex, "style"); - style[data.getVisual("drawType")] = value; - data.setItemVisual(dataIndex, "colorFromPalette", false); - break; - case "opacity": - data.ensureUniqueItemVisual(dataIndex, "style").opacity = value; - break; - case "symbol": - case "symbolSize": - case "liftZ": - data.setItemVisual(dataIndex, key, value); - break; - default: - if (true) { - console.warn("Unknown visual type " + key); - } - } - } - function createLegacyDataSelectAction2(seriesType3, ecRegisterAction) { - function getSeriesIndices(ecModel, payload) { - var seriesIndices = []; - ecModel.eachComponent({ - mainType: "series", - subType: seriesType3, - query: payload - }, function(seriesModel) { - seriesIndices.push(seriesModel.seriesIndex); - }); - return seriesIndices; - } - each17([[seriesType3 + "ToggleSelect", "toggleSelect"], [seriesType3 + "Select", "select"], [seriesType3 + "UnSelect", "unselect"]], function(eventsMap) { - ecRegisterAction(eventsMap[0], function(payload, ecModel, api) { - payload = extend3({}, payload); - if (true) { - deprecateReplaceLog2(payload.type, eventsMap[1]); - } - api.dispatchAction(extend3(payload, { - type: eventsMap[1], - seriesIndex: getSeriesIndices(ecModel, payload) - })); - }); - }); - } - function handleSeriesLegacySelectEvents2(type, eventPostfix, ecIns, ecModel, payload) { - var legacyEventName = type + eventPostfix; - if (!ecIns.isSilent(legacyEventName)) { - if (true) { - deprecateLog2("event " + legacyEventName + " is deprecated."); - } - ecModel.eachComponent({ - mainType: "series", - subType: "pie" - }, function(seriesModel) { - var seriesIndex = seriesModel.seriesIndex; - var selectedMap = seriesModel.option.selectedMap; - var selected = payload.selected; - for (var i2 = 0; i2 < selected.length; i2++) { - if (selected[i2].seriesIndex === seriesIndex) { - var data = seriesModel.getData(); - var dataIndex = queryDataIndex2(data, payload.fromActionPayload); - ecIns.trigger(legacyEventName, { - type: legacyEventName, - seriesId: seriesModel.id, - name: isArray3(dataIndex) ? data.getName(dataIndex[0]) : data.getName(dataIndex), - selected: isString2(selectedMap) ? selectedMap : extend3({}, selectedMap) - }); - } - } - }); - } - } - function handleLegacySelectEvents2(messageCenter, ecIns, api) { - messageCenter.on("selectchanged", function(params) { - var ecModel = api.getModel(); - if (params.isFromClick) { - handleSeriesLegacySelectEvents2("map", "selectchanged", ecIns, ecModel, params); - handleSeriesLegacySelectEvents2("pie", "selectchanged", ecIns, ecModel, params); - } else if (params.fromAction === "select") { - handleSeriesLegacySelectEvents2("map", "selected", ecIns, ecModel, params); - handleSeriesLegacySelectEvents2("pie", "selected", ecIns, ecModel, params); - } else if (params.fromAction === "unselect") { - handleSeriesLegacySelectEvents2("map", "unselected", ecIns, ecModel, params); - handleSeriesLegacySelectEvents2("pie", "unselected", ecIns, ecModel, params); - } - }); - } - function findEventDispatcher2(target, det, returnFirstMatch) { - var found; - while (target) { - if (det(target)) { - found = target; - if (returnFirstMatch) { - break; - } - } - target = target.__hostTarget || target.parent; - } - return found; - } - var wmUniqueIndex2 = Math.round(Math.random() * 9); - var supportDefineProperty2 = typeof Object.defineProperty === "function"; - var WeakMap3 = function() { - function WeakMap4() { - this._id = "__ec_inner_" + wmUniqueIndex2++; - } - WeakMap4.prototype.get = function(key) { - return this._guard(key)[this._id]; - }; - WeakMap4.prototype.set = function(key, value) { - var target = this._guard(key); - if (supportDefineProperty2) { - Object.defineProperty(target, this._id, { - value, - enumerable: false, - configurable: true - }); - } else { - target[this._id] = value; - } - return this; - }; - WeakMap4.prototype["delete"] = function(key) { - if (this.has(key)) { - delete this._guard(key)[this._id]; - return true; - } - return false; - }; - WeakMap4.prototype.has = function(key) { - return !!this._guard(key)[this._id]; - }; - WeakMap4.prototype._guard = function(key) { - if (key !== Object(key)) { - throw TypeError("Value of WeakMap is not a non-null object."); - } - return key; - }; - return WeakMap4; - }(); - var Triangle2 = Path2.extend({ - type: "triangle", - shape: { - cx: 0, - cy: 0, - width: 0, - height: 0 - }, - buildPath: function(path, shape) { - var cx = shape.cx; - var cy = shape.cy; - var width = shape.width / 2; - var height = shape.height / 2; - path.moveTo(cx, cy - height); - path.lineTo(cx + width, cy + height); - path.lineTo(cx - width, cy + height); - path.closePath(); - } - }); - var Diamond2 = Path2.extend({ - type: "diamond", - shape: { - cx: 0, - cy: 0, - width: 0, - height: 0 - }, - buildPath: function(path, shape) { - var cx = shape.cx; - var cy = shape.cy; - var width = shape.width / 2; - var height = shape.height / 2; - path.moveTo(cx, cy - height); - path.lineTo(cx + width, cy); - path.lineTo(cx, cy + height); - path.lineTo(cx - width, cy); - path.closePath(); - } - }); - var Pin2 = Path2.extend({ - type: "pin", - shape: { - // x, y on the cusp - x: 0, - y: 0, - width: 0, - height: 0 - }, - buildPath: function(path, shape) { - var x = shape.x; - var y = shape.y; - var w = shape.width / 5 * 3; - var h = Math.max(w, shape.height); - var r = w / 2; - var dy = r * r / (h - r); - var cy = y - h + r + dy; - var angle = Math.asin(dy / r); - var dx = Math.cos(angle) * r; - var tanX = Math.sin(angle); - var tanY = Math.cos(angle); - var cpLen = r * 0.6; - var cpLen2 = r * 0.7; - path.moveTo(x - dx, cy + dy); - path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle); - path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y); - path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy); - path.closePath(); - } - }); - var Arrow2 = Path2.extend({ - type: "arrow", - shape: { - x: 0, - y: 0, - width: 0, - height: 0 - }, - buildPath: function(ctx, shape) { - var height = shape.height; - var width = shape.width; - var x = shape.x; - var y = shape.y; - var dx = width / 3 * 2; - ctx.moveTo(x, y); - ctx.lineTo(x + dx, y + height); - ctx.lineTo(x, y + height / 4 * 3); - ctx.lineTo(x - dx, y + height); - ctx.lineTo(x, y); - ctx.closePath(); - } - }); - var symbolCtors2 = { - line: Line3, - rect: Rect4, - roundRect: Rect4, - square: Rect4, - circle: Circle2, - diamond: Diamond2, - pin: Pin2, - arrow: Arrow2, - triangle: Triangle2 - }; - var symbolShapeMakers2 = { - line: function(x, y, w, h, shape) { - shape.x1 = x; - shape.y1 = y + h / 2; - shape.x2 = x + w; - shape.y2 = y + h / 2; - }, - rect: function(x, y, w, h, shape) { - shape.x = x; - shape.y = y; - shape.width = w; - shape.height = h; - }, - roundRect: function(x, y, w, h, shape) { - shape.x = x; - shape.y = y; - shape.width = w; - shape.height = h; - shape.r = Math.min(w, h) / 4; - }, - square: function(x, y, w, h, shape) { - var size2 = Math.min(w, h); - shape.x = x; - shape.y = y; - shape.width = size2; - shape.height = size2; - }, - circle: function(x, y, w, h, shape) { - shape.cx = x + w / 2; - shape.cy = y + h / 2; - shape.r = Math.min(w, h) / 2; - }, - diamond: function(x, y, w, h, shape) { - shape.cx = x + w / 2; - shape.cy = y + h / 2; - shape.width = w; - shape.height = h; - }, - pin: function(x, y, w, h, shape) { - shape.x = x + w / 2; - shape.y = y + h / 2; - shape.width = w; - shape.height = h; - }, - arrow: function(x, y, w, h, shape) { - shape.x = x + w / 2; - shape.y = y + h / 2; - shape.width = w; - shape.height = h; - }, - triangle: function(x, y, w, h, shape) { - shape.cx = x + w / 2; - shape.cy = y + h / 2; - shape.width = w; - shape.height = h; - } - }; - var symbolBuildProxies2 = {}; - each17(symbolCtors2, function(Ctor, name) { - symbolBuildProxies2[name] = new Ctor(); - }); - var SymbolClz2 = Path2.extend({ - type: "symbol", - shape: { - symbolType: "", - x: 0, - y: 0, - width: 0, - height: 0 - }, - calculateTextPosition: function(out3, config2, rect) { - var res = calculateTextPosition2(out3, config2, rect); - var shape = this.shape; - if (shape && shape.symbolType === "pin" && config2.position === "inside") { - res.y = rect.y + rect.height * 0.4; - } - return res; - }, - buildPath: function(ctx, shape, inBundle) { - var symbolType = shape.symbolType; - if (symbolType !== "none") { - var proxySymbol = symbolBuildProxies2[symbolType]; - if (!proxySymbol) { - symbolType = "rect"; - proxySymbol = symbolBuildProxies2[symbolType]; - } - symbolShapeMakers2[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape); - proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle); - } - } - }); - function symbolPathSetColor2(color2, innerColor3) { - if (this.type !== "image") { - var symbolStyle = this.style; - if (this.__isEmptyBrush) { - symbolStyle.stroke = color2; - symbolStyle.fill = innerColor3 || "#fff"; - symbolStyle.lineWidth = 2; - } else if (this.shape.symbolType === "line") { - symbolStyle.stroke = color2; - } else { - symbolStyle.fill = color2; - } - this.markRedraw(); - } - } - function createSymbol3(symbolType, x, y, w, h, color2, keepAspect) { - var isEmpty = symbolType.indexOf("empty") === 0; - if (isEmpty) { - symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6); - } - var symbolPath; - if (symbolType.indexOf("image://") === 0) { - symbolPath = makeImage2(symbolType.slice(8), new BoundingRect2(x, y, w, h), keepAspect ? "center" : "cover"); - } else if (symbolType.indexOf("path://") === 0) { - symbolPath = makePath2(symbolType.slice(7), {}, new BoundingRect2(x, y, w, h), keepAspect ? "center" : "cover"); - } else { - symbolPath = new SymbolClz2({ - shape: { - symbolType, - x, - y, - width: w, - height: h - } - }); - } - symbolPath.__isEmptyBrush = isEmpty; - symbolPath.setColor = symbolPathSetColor2; - if (color2) { - symbolPath.setColor(color2); - } - return symbolPath; - } - function normalizeSymbolSize2(symbolSize) { - if (!isArray3(symbolSize)) { - symbolSize = [+symbolSize, +symbolSize]; - } - return [symbolSize[0] || 0, symbolSize[1] || 0]; - } - function normalizeSymbolOffset2(symbolOffset, symbolSize) { - if (symbolOffset == null) { - return; - } - if (!isArray3(symbolOffset)) { - symbolOffset = [symbolOffset, symbolOffset]; - } - return [parsePercent$1(symbolOffset[0], symbolSize[0]) || 0, parsePercent$1(retrieve22(symbolOffset[1], symbolOffset[0]), symbolSize[1]) || 0]; - } - function isSafeNum2(num) { - return isFinite(num); - } - function createLinearGradient2(ctx, obj, rect) { - var x = obj.x == null ? 0 : obj.x; - var x2 = obj.x2 == null ? 1 : obj.x2; - var y = obj.y == null ? 0 : obj.y; - var y2 = obj.y2 == null ? 0 : obj.y2; - if (!obj.global) { - x = x * rect.width + rect.x; - x2 = x2 * rect.width + rect.x; - y = y * rect.height + rect.y; - y2 = y2 * rect.height + rect.y; - } - x = isSafeNum2(x) ? x : 0; - x2 = isSafeNum2(x2) ? x2 : 1; - y = isSafeNum2(y) ? y : 0; - y2 = isSafeNum2(y2) ? y2 : 0; - var canvasGradient = ctx.createLinearGradient(x, y, x2, y2); - return canvasGradient; - } - function createRadialGradient2(ctx, obj, rect) { - var width = rect.width; - var height = rect.height; - var min5 = Math.min(width, height); - var x = obj.x == null ? 0.5 : obj.x; - var y = obj.y == null ? 0.5 : obj.y; - var r = obj.r == null ? 0.5 : obj.r; - if (!obj.global) { - x = x * width + rect.x; - y = y * height + rect.y; - r = r * min5; - } - x = isSafeNum2(x) ? x : 0.5; - y = isSafeNum2(y) ? y : 0.5; - r = r >= 0 && isSafeNum2(r) ? r : 0.5; - var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r); - return canvasGradient; - } - function getCanvasGradient2(ctx, obj, rect) { - var canvasGradient = obj.type === "radial" ? createRadialGradient2(ctx, obj, rect) : createLinearGradient2(ctx, obj, rect); - var colorStops = obj.colorStops; - for (var i2 = 0; i2 < colorStops.length; i2++) { - canvasGradient.addColorStop(colorStops[i2].offset, colorStops[i2].color); - } - return canvasGradient; - } - function isClipPathChanged2(clipPaths, prevClipPaths) { - if (clipPaths === prevClipPaths || !clipPaths && !prevClipPaths) { - return false; - } - if (!clipPaths || !prevClipPaths || clipPaths.length !== prevClipPaths.length) { - return true; - } - for (var i2 = 0; i2 < clipPaths.length; i2++) { - if (clipPaths[i2] !== prevClipPaths[i2]) { - return true; - } - } - return false; - } - function parseInt102(val) { - return parseInt(val, 10); - } - function getSize3(root, whIdx, opts) { - var wh = ["width", "height"][whIdx]; - var cwh = ["clientWidth", "clientHeight"][whIdx]; - var plt = ["paddingLeft", "paddingTop"][whIdx]; - var prb = ["paddingRight", "paddingBottom"][whIdx]; - if (opts[wh] != null && opts[wh] !== "auto") { - return parseFloat(opts[wh]); - } - var stl = document.defaultView.getComputedStyle(root); - return (root[cwh] || parseInt102(stl[wh]) || parseInt102(root.style[wh])) - (parseInt102(stl[plt]) || 0) - (parseInt102(stl[prb]) || 0) | 0; - } - function normalizeLineDash2(lineType, lineWidth) { - if (!lineType || lineType === "solid" || !(lineWidth > 0)) { - return null; - } - return lineType === "dashed" ? [4 * lineWidth, 2 * lineWidth] : lineType === "dotted" ? [lineWidth] : isNumber2(lineType) ? [lineType] : isArray3(lineType) ? lineType : null; - } - function getLineDash2(el) { - var style = el.style; - var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash2(style.lineDash, style.lineWidth); - var lineDashOffset = style.lineDashOffset; - if (lineDash) { - var lineScale_1 = style.strokeNoScale && el.getLineScale ? el.getLineScale() : 1; - if (lineScale_1 && lineScale_1 !== 1) { - lineDash = map3(lineDash, function(rawVal) { - return rawVal / lineScale_1; - }); - lineDashOffset /= lineScale_1; - } - } - return [lineDash, lineDashOffset]; - } - var pathProxyForDraw2 = new PathProxy2(true); - function styleHasStroke2(style) { - var stroke = style.stroke; - return !(stroke == null || stroke === "none" || !(style.lineWidth > 0)); - } - function isValidStrokeFillStyle2(strokeOrFill) { - return typeof strokeOrFill === "string" && strokeOrFill !== "none"; - } - function styleHasFill2(style) { - var fill = style.fill; - return fill != null && fill !== "none"; - } - function doFillPath2(ctx, style) { - if (style.fillOpacity != null && style.fillOpacity !== 1) { - var originalGlobalAlpha = ctx.globalAlpha; - ctx.globalAlpha = style.fillOpacity * style.opacity; - ctx.fill(); - ctx.globalAlpha = originalGlobalAlpha; - } else { - ctx.fill(); - } - } - function doStrokePath2(ctx, style) { - if (style.strokeOpacity != null && style.strokeOpacity !== 1) { - var originalGlobalAlpha = ctx.globalAlpha; - ctx.globalAlpha = style.strokeOpacity * style.opacity; - ctx.stroke(); - ctx.globalAlpha = originalGlobalAlpha; - } else { - ctx.stroke(); - } - } - function createCanvasPattern2(ctx, pattern, el) { - var image = createOrUpdateImage2(pattern.image, pattern.__image, el); - if (isImageReady2(image)) { - var canvasPattern = ctx.createPattern(image, pattern.repeat || "repeat"); - if (typeof DOMMatrix === "function" && canvasPattern && canvasPattern.setTransform) { - var matrix2 = new DOMMatrix(); - matrix2.translateSelf(pattern.x || 0, pattern.y || 0); - matrix2.rotateSelf(0, 0, (pattern.rotation || 0) * RADIAN_TO_DEGREE2); - matrix2.scaleSelf(pattern.scaleX || 1, pattern.scaleY || 1); - canvasPattern.setTransform(matrix2); - } - return canvasPattern; - } - } - function brushPath2(ctx, el, style, inBatch) { - var _a3; - var hasStroke = styleHasStroke2(style); - var hasFill = styleHasFill2(style); - var strokePercent = style.strokePercent; - var strokePart = strokePercent < 1; - var firstDraw = !el.path; - if ((!el.silent || strokePart) && firstDraw) { - el.createPathProxy(); - } - var path = el.path || pathProxyForDraw2; - var dirtyFlag = el.__dirty; - if (!inBatch) { - var fill = style.fill; - var stroke = style.stroke; - var hasFillGradient = hasFill && !!fill.colorStops; - var hasStrokeGradient = hasStroke && !!stroke.colorStops; - var hasFillPattern = hasFill && !!fill.image; - var hasStrokePattern = hasStroke && !!stroke.image; - var fillGradient = void 0; - var strokeGradient = void 0; - var fillPattern = void 0; - var strokePattern = void 0; - var rect = void 0; - if (hasFillGradient || hasStrokeGradient) { - rect = el.getBoundingRect(); - } - if (hasFillGradient) { - fillGradient = dirtyFlag ? getCanvasGradient2(ctx, fill, rect) : el.__canvasFillGradient; - el.__canvasFillGradient = fillGradient; - } - if (hasStrokeGradient) { - strokeGradient = dirtyFlag ? getCanvasGradient2(ctx, stroke, rect) : el.__canvasStrokeGradient; - el.__canvasStrokeGradient = strokeGradient; - } - if (hasFillPattern) { - fillPattern = dirtyFlag || !el.__canvasFillPattern ? createCanvasPattern2(ctx, fill, el) : el.__canvasFillPattern; - el.__canvasFillPattern = fillPattern; - } - if (hasStrokePattern) { - strokePattern = dirtyFlag || !el.__canvasStrokePattern ? createCanvasPattern2(ctx, stroke, el) : el.__canvasStrokePattern; - el.__canvasStrokePattern = fillPattern; - } - if (hasFillGradient) { - ctx.fillStyle = fillGradient; - } else if (hasFillPattern) { - if (fillPattern) { - ctx.fillStyle = fillPattern; - } else { - hasFill = false; - } - } - if (hasStrokeGradient) { - ctx.strokeStyle = strokeGradient; - } else if (hasStrokePattern) { - if (strokePattern) { - ctx.strokeStyle = strokePattern; - } else { - hasStroke = false; - } - } - } - var scale5 = el.getGlobalScale(); - path.setScale(scale5[0], scale5[1], el.segmentIgnoreThreshold); - var lineDash; - var lineDashOffset; - if (ctx.setLineDash && style.lineDash) { - _a3 = getLineDash2(el), lineDash = _a3[0], lineDashOffset = _a3[1]; - } - var needsRebuild = true; - if (firstDraw || dirtyFlag & SHAPE_CHANGED_BIT2) { - path.setDPR(ctx.dpr); - if (strokePart) { - path.setContext(null); - } else { - path.setContext(ctx); - needsRebuild = false; - } - path.reset(); - el.buildPath(path, el.shape, inBatch); - path.toStatic(); - el.pathUpdated(); - } - if (needsRebuild) { - path.rebuildPath(ctx, strokePart ? strokePercent : 1); - } - if (lineDash) { - ctx.setLineDash(lineDash); - ctx.lineDashOffset = lineDashOffset; - } - if (!inBatch) { - if (style.strokeFirst) { - if (hasStroke) { - doStrokePath2(ctx, style); - } - if (hasFill) { - doFillPath2(ctx, style); - } - } else { - if (hasFill) { - doFillPath2(ctx, style); - } - if (hasStroke) { - doStrokePath2(ctx, style); - } - } - } - if (lineDash) { - ctx.setLineDash([]); - } - } - function brushImage2(ctx, el, style) { - var image = el.__image = createOrUpdateImage2(style.image, el.__image, el, el.onload); - if (!image || !isImageReady2(image)) { - return; - } - var x = style.x || 0; - var y = style.y || 0; - var width = el.getWidth(); - var height = el.getHeight(); - var aspect = image.width / image.height; - if (width == null && height != null) { - width = height * aspect; - } else if (height == null && width != null) { - height = width / aspect; - } else if (width == null && height == null) { - width = image.width; - height = image.height; - } - if (style.sWidth && style.sHeight) { - var sx = style.sx || 0; - var sy = style.sy || 0; - ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height); - } else if (style.sx && style.sy) { - var sx = style.sx; - var sy = style.sy; - var sWidth = width - sx; - var sHeight = height - sy; - ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height); - } else { - ctx.drawImage(image, x, y, width, height); - } - } - function brushText2(ctx, el, style) { - var _a3; - var text = style.text; - text != null && (text += ""); - if (text) { - ctx.font = style.font || DEFAULT_FONT2; - ctx.textAlign = style.textAlign; - ctx.textBaseline = style.textBaseline; - var lineDash = void 0; - var lineDashOffset = void 0; - if (ctx.setLineDash && style.lineDash) { - _a3 = getLineDash2(el), lineDash = _a3[0], lineDashOffset = _a3[1]; - } - if (lineDash) { - ctx.setLineDash(lineDash); - ctx.lineDashOffset = lineDashOffset; - } - if (style.strokeFirst) { - if (styleHasStroke2(style)) { - ctx.strokeText(text, style.x, style.y); - } - if (styleHasFill2(style)) { - ctx.fillText(text, style.x, style.y); - } - } else { - if (styleHasFill2(style)) { - ctx.fillText(text, style.x, style.y); - } - if (styleHasStroke2(style)) { - ctx.strokeText(text, style.x, style.y); - } - } - if (lineDash) { - ctx.setLineDash([]); - } - } - } - var SHADOW_NUMBER_PROPS2 = ["shadowBlur", "shadowOffsetX", "shadowOffsetY"]; - var STROKE_PROPS2 = [ - ["lineCap", "butt"], - ["lineJoin", "miter"], - ["miterLimit", 10] - ]; - function bindCommonProps2(ctx, style, prevStyle, forceSetAll, scope) { - var styleChanged = false; - if (!forceSetAll) { - prevStyle = prevStyle || {}; - if (style === prevStyle) { - return false; - } - } - if (forceSetAll || style.opacity !== prevStyle.opacity) { - flushPathDrawn2(ctx, scope); - styleChanged = true; - var opacity = Math.max(Math.min(style.opacity, 1), 0); - ctx.globalAlpha = isNaN(opacity) ? DEFAULT_COMMON_STYLE2.opacity : opacity; - } - if (forceSetAll || style.blend !== prevStyle.blend) { - if (!styleChanged) { - flushPathDrawn2(ctx, scope); - styleChanged = true; - } - ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE2.blend; - } - for (var i2 = 0; i2 < SHADOW_NUMBER_PROPS2.length; i2++) { - var propName = SHADOW_NUMBER_PROPS2[i2]; - if (forceSetAll || style[propName] !== prevStyle[propName]) { - if (!styleChanged) { - flushPathDrawn2(ctx, scope); - styleChanged = true; - } - ctx[propName] = ctx.dpr * (style[propName] || 0); - } - } - if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) { - if (!styleChanged) { - flushPathDrawn2(ctx, scope); - styleChanged = true; - } - ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE2.shadowColor; - } - return styleChanged; - } - function bindPathAndTextCommonStyle2(ctx, el, prevEl, forceSetAll, scope) { - var style = getStyle2(el, scope.inHover); - var prevStyle = forceSetAll ? null : prevEl && getStyle2(prevEl, scope.inHover) || {}; - if (style === prevStyle) { - return false; - } - var styleChanged = bindCommonProps2(ctx, style, prevStyle, forceSetAll, scope); - if (forceSetAll || style.fill !== prevStyle.fill) { - if (!styleChanged) { - flushPathDrawn2(ctx, scope); - styleChanged = true; - } - isValidStrokeFillStyle2(style.fill) && (ctx.fillStyle = style.fill); - } - if (forceSetAll || style.stroke !== prevStyle.stroke) { - if (!styleChanged) { - flushPathDrawn2(ctx, scope); - styleChanged = true; - } - isValidStrokeFillStyle2(style.stroke) && (ctx.strokeStyle = style.stroke); - } - if (forceSetAll || style.opacity !== prevStyle.opacity) { - if (!styleChanged) { - flushPathDrawn2(ctx, scope); - styleChanged = true; - } - ctx.globalAlpha = style.opacity == null ? 1 : style.opacity; - } - if (el.hasStroke()) { - var lineWidth = style.lineWidth; - var newLineWidth = lineWidth / (style.strokeNoScale && el.getLineScale ? el.getLineScale() : 1); - if (ctx.lineWidth !== newLineWidth) { - if (!styleChanged) { - flushPathDrawn2(ctx, scope); - styleChanged = true; - } - ctx.lineWidth = newLineWidth; - } - } - for (var i2 = 0; i2 < STROKE_PROPS2.length; i2++) { - var prop = STROKE_PROPS2[i2]; - var propName = prop[0]; - if (forceSetAll || style[propName] !== prevStyle[propName]) { - if (!styleChanged) { - flushPathDrawn2(ctx, scope); - styleChanged = true; - } - ctx[propName] = style[propName] || prop[1]; - } - } - return styleChanged; - } - function bindImageStyle2(ctx, el, prevEl, forceSetAll, scope) { - return bindCommonProps2(ctx, getStyle2(el, scope.inHover), prevEl && getStyle2(prevEl, scope.inHover), forceSetAll, scope); - } - function setContextTransform2(ctx, el) { - var m3 = el.transform; - var dpr3 = ctx.dpr || 1; - if (m3) { - ctx.setTransform(dpr3 * m3[0], dpr3 * m3[1], dpr3 * m3[2], dpr3 * m3[3], dpr3 * m3[4], dpr3 * m3[5]); - } else { - ctx.setTransform(dpr3, 0, 0, dpr3, 0, 0); - } - } - function updateClipStatus2(clipPaths, ctx, scope) { - var allClipped = false; - for (var i2 = 0; i2 < clipPaths.length; i2++) { - var clipPath = clipPaths[i2]; - allClipped = allClipped || clipPath.isZeroArea(); - setContextTransform2(ctx, clipPath); - ctx.beginPath(); - clipPath.buildPath(ctx, clipPath.shape); - ctx.clip(); - } - scope.allClipped = allClipped; - } - function isTransformChanged2(m0, m1) { - if (m0 && m1) { - return m0[0] !== m1[0] || m0[1] !== m1[1] || m0[2] !== m1[2] || m0[3] !== m1[3] || m0[4] !== m1[4] || m0[5] !== m1[5]; - } else if (!m0 && !m1) { - return false; - } - return true; - } - var DRAW_TYPE_PATH2 = 1; - var DRAW_TYPE_IMAGE2 = 2; - var DRAW_TYPE_TEXT2 = 3; - var DRAW_TYPE_INCREMENTAL2 = 4; - function canPathBatch2(style) { - var hasFill = styleHasFill2(style); - var hasStroke = styleHasStroke2(style); - return !(style.lineDash || !(+hasFill ^ +hasStroke) || hasFill && typeof style.fill !== "string" || hasStroke && typeof style.stroke !== "string" || style.strokePercent < 1 || style.strokeOpacity < 1 || style.fillOpacity < 1); - } - function flushPathDrawn2(ctx, scope) { - scope.batchFill && ctx.fill(); - scope.batchStroke && ctx.stroke(); - scope.batchFill = ""; - scope.batchStroke = ""; - } - function getStyle2(el, inHover) { - return inHover ? el.__hoverStyle || el.style : el.style; - } - function brushSingle2(ctx, el) { - brush3(ctx, el, { inHover: false, viewWidth: 0, viewHeight: 0 }, true); - } - function brush3(ctx, el, scope, isLast) { - var m3 = el.transform; - if (!el.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) { - el.__dirty &= ~REDRAW_BIT2; - el.__isRendered = false; - return; - } - var clipPaths = el.__clipPaths; - var prevElClipPaths = scope.prevElClipPaths; - var forceSetTransform = false; - var forceSetStyle = false; - if (!prevElClipPaths || isClipPathChanged2(clipPaths, prevElClipPaths)) { - if (prevElClipPaths && prevElClipPaths.length) { - flushPathDrawn2(ctx, scope); - ctx.restore(); - forceSetStyle = forceSetTransform = true; - scope.prevElClipPaths = null; - scope.allClipped = false; - scope.prevEl = null; - } - if (clipPaths && clipPaths.length) { - flushPathDrawn2(ctx, scope); - ctx.save(); - updateClipStatus2(clipPaths, ctx, scope); - forceSetTransform = true; - } - scope.prevElClipPaths = clipPaths; - } - if (scope.allClipped) { - el.__isRendered = false; - return; - } - el.beforeBrush && el.beforeBrush(); - el.innerBeforeBrush(); - var prevEl = scope.prevEl; - if (!prevEl) { - forceSetStyle = forceSetTransform = true; - } - var canBatchPath = el instanceof Path2 && el.autoBatch && canPathBatch2(el.style); - if (forceSetTransform || isTransformChanged2(m3, prevEl.transform)) { - flushPathDrawn2(ctx, scope); - setContextTransform2(ctx, el); - } else if (!canBatchPath) { - flushPathDrawn2(ctx, scope); - } - var style = getStyle2(el, scope.inHover); - if (el instanceof Path2) { - if (scope.lastDrawType !== DRAW_TYPE_PATH2) { - forceSetStyle = true; - scope.lastDrawType = DRAW_TYPE_PATH2; - } - bindPathAndTextCommonStyle2(ctx, el, prevEl, forceSetStyle, scope); - if (!canBatchPath || !scope.batchFill && !scope.batchStroke) { - ctx.beginPath(); - } - brushPath2(ctx, el, style, canBatchPath); - if (canBatchPath) { - scope.batchFill = style.fill || ""; - scope.batchStroke = style.stroke || ""; - } - } else { - if (el instanceof TSpan2) { - if (scope.lastDrawType !== DRAW_TYPE_TEXT2) { - forceSetStyle = true; - scope.lastDrawType = DRAW_TYPE_TEXT2; - } - bindPathAndTextCommonStyle2(ctx, el, prevEl, forceSetStyle, scope); - brushText2(ctx, el, style); - } else if (el instanceof ZRImage2) { - if (scope.lastDrawType !== DRAW_TYPE_IMAGE2) { - forceSetStyle = true; - scope.lastDrawType = DRAW_TYPE_IMAGE2; - } - bindImageStyle2(ctx, el, prevEl, forceSetStyle, scope); - brushImage2(ctx, el, style); - } else if (el.getTemporalDisplayables) { - if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL2) { - forceSetStyle = true; - scope.lastDrawType = DRAW_TYPE_INCREMENTAL2; - } - brushIncremental2(ctx, el, scope); - } - } - if (canBatchPath && isLast) { - flushPathDrawn2(ctx, scope); - } - el.innerAfterBrush(); - el.afterBrush && el.afterBrush(); - scope.prevEl = el; - el.__dirty = 0; - el.__isRendered = true; - } - function brushIncremental2(ctx, el, scope) { - var displayables = el.getDisplayables(); - var temporalDisplayables = el.getTemporalDisplayables(); - ctx.save(); - var innerScope = { - prevElClipPaths: null, - prevEl: null, - allClipped: false, - viewWidth: scope.viewWidth, - viewHeight: scope.viewHeight, - inHover: scope.inHover - }; - var i2; - var len3; - for (i2 = el.getCursor(), len3 = displayables.length; i2 < len3; i2++) { - var displayable = displayables[i2]; - displayable.beforeBrush && displayable.beforeBrush(); - displayable.innerBeforeBrush(); - brush3(ctx, displayable, innerScope, i2 === len3 - 1); - displayable.innerAfterBrush(); - displayable.afterBrush && displayable.afterBrush(); - innerScope.prevEl = displayable; - } - for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) { - var displayable = temporalDisplayables[i_1]; - displayable.beforeBrush && displayable.beforeBrush(); - displayable.innerBeforeBrush(); - brush3(ctx, displayable, innerScope, i_1 === len_1 - 1); - displayable.innerAfterBrush(); - displayable.afterBrush && displayable.afterBrush(); - innerScope.prevEl = displayable; - } - el.clearTemporalDisplayables(); - el.notClear = true; - ctx.restore(); - } - var decalMap2 = new WeakMap3(); - var decalCache2 = new LRU2(100); - var decalKeys2 = ["symbol", "symbolSize", "symbolKeepAspect", "color", "backgroundColor", "dashArrayX", "dashArrayY", "maxTileWidth", "maxTileHeight"]; - function createOrUpdatePatternFromDecal2(decalObject, api) { - if (decalObject === "none") { - return null; - } - var dpr3 = api.getDevicePixelRatio(); - var zr = api.getZr(); - var isSVG = zr.painter.type === "svg"; - if (decalObject.dirty) { - decalMap2["delete"](decalObject); - } - var oldPattern = decalMap2.get(decalObject); - if (oldPattern) { - return oldPattern; - } - var decalOpt = defaults2(decalObject, { - symbol: "rect", - symbolSize: 1, - symbolKeepAspect: true, - color: "rgba(0, 0, 0, 0.2)", - backgroundColor: null, - dashArrayX: 5, - dashArrayY: 5, - rotation: 0, - maxTileWidth: 512, - maxTileHeight: 512 - }); - if (decalOpt.backgroundColor === "none") { - decalOpt.backgroundColor = null; - } - var pattern = { - repeat: "repeat" - }; - setPatternnSource(pattern); - pattern.rotation = decalOpt.rotation; - pattern.scaleX = pattern.scaleY = isSVG ? 1 : 1 / dpr3; - decalMap2.set(decalObject, pattern); - decalObject.dirty = false; - return pattern; - function setPatternnSource(pattern2) { - var keys3 = [dpr3]; - var isValidKey = true; - for (var i2 = 0; i2 < decalKeys2.length; ++i2) { - var value = decalOpt[decalKeys2[i2]]; - if (value != null && !isArray3(value) && !isString2(value) && !isNumber2(value) && typeof value !== "boolean") { - isValidKey = false; - break; - } - keys3.push(value); - } - var cacheKey; - if (isValidKey) { - cacheKey = keys3.join(",") + (isSVG ? "-svg" : ""); - var cache2 = decalCache2.get(cacheKey); - if (cache2) { - isSVG ? pattern2.svgElement = cache2 : pattern2.image = cache2; - } - } - var dashArrayX = normalizeDashArrayX2(decalOpt.dashArrayX); - var dashArrayY = normalizeDashArrayY2(decalOpt.dashArrayY); - var symbolArray = normalizeSymbolArray2(decalOpt.symbol); - var lineBlockLengthsX = getLineBlockLengthX2(dashArrayX); - var lineBlockLengthY = getLineBlockLengthY2(dashArrayY); - var canvas = !isSVG && platformApi2.createCanvas(); - var svgRoot = isSVG && { - tag: "g", - attrs: {}, - key: "dcl", - children: [] - }; - var pSize = getPatternSize(); - var ctx; - if (canvas) { - canvas.width = pSize.width * dpr3; - canvas.height = pSize.height * dpr3; - ctx = canvas.getContext("2d"); - } - brushDecal(); - if (isValidKey) { - decalCache2.put(cacheKey, canvas || svgRoot); - } - pattern2.image = canvas; - pattern2.svgElement = svgRoot; - pattern2.svgWidth = pSize.width; - pattern2.svgHeight = pSize.height; - function getPatternSize() { - var width = 1; - for (var i3 = 0, xlen = lineBlockLengthsX.length; i3 < xlen; ++i3) { - width = getLeastCommonMultiple2(width, lineBlockLengthsX[i3]); - } - var symbolRepeats = 1; - for (var i3 = 0, xlen = symbolArray.length; i3 < xlen; ++i3) { - symbolRepeats = getLeastCommonMultiple2(symbolRepeats, symbolArray[i3].length); - } - width *= symbolRepeats; - var height = lineBlockLengthY * lineBlockLengthsX.length * symbolArray.length; - if (true) { - var warn3 = function(attrName) { - console.warn("Calculated decal size is greater than " + attrName + " due to decal option settings so " + attrName + " is used for the decal size. Please consider changing the decal option to make a smaller decal or set " + attrName + " to be larger to avoid incontinuity."); - }; - if (width > decalOpt.maxTileWidth) { - warn3("maxTileWidth"); - } - if (height > decalOpt.maxTileHeight) { - warn3("maxTileHeight"); - } - } - return { - width: Math.max(1, Math.min(width, decalOpt.maxTileWidth)), - height: Math.max(1, Math.min(height, decalOpt.maxTileHeight)) - }; - } - function brushDecal() { - if (ctx) { - ctx.clearRect(0, 0, canvas.width, canvas.height); - if (decalOpt.backgroundColor) { - ctx.fillStyle = decalOpt.backgroundColor; - ctx.fillRect(0, 0, canvas.width, canvas.height); - } - } - var ySum = 0; - for (var i3 = 0; i3 < dashArrayY.length; ++i3) { - ySum += dashArrayY[i3]; - } - if (ySum <= 0) { - return; - } - var y = -lineBlockLengthY; - var yId = 0; - var yIdTotal = 0; - var xId0 = 0; - while (y < pSize.height) { - if (yId % 2 === 0) { - var symbolYId = yIdTotal / 2 % symbolArray.length; - var x = 0; - var xId1 = 0; - var xId1Total = 0; - while (x < pSize.width * 2) { - var xSum = 0; - for (var i3 = 0; i3 < dashArrayX[xId0].length; ++i3) { - xSum += dashArrayX[xId0][i3]; - } - if (xSum <= 0) { - break; - } - if (xId1 % 2 === 0) { - var size2 = (1 - decalOpt.symbolSize) * 0.5; - var left = x + dashArrayX[xId0][xId1] * size2; - var top_1 = y + dashArrayY[yId] * size2; - var width = dashArrayX[xId0][xId1] * decalOpt.symbolSize; - var height = dashArrayY[yId] * decalOpt.symbolSize; - var symbolXId = xId1Total / 2 % symbolArray[symbolYId].length; - brushSymbol(left, top_1, width, height, symbolArray[symbolYId][symbolXId]); - } - x += dashArrayX[xId0][xId1]; - ++xId1Total; - ++xId1; - if (xId1 === dashArrayX[xId0].length) { - xId1 = 0; - } - } - ++xId0; - if (xId0 === dashArrayX.length) { - xId0 = 0; - } - } - y += dashArrayY[yId]; - ++yIdTotal; - ++yId; - if (yId === dashArrayY.length) { - yId = 0; - } - } - function brushSymbol(x2, y2, width2, height2, symbolType) { - var scale5 = isSVG ? 1 : dpr3; - var symbol = createSymbol3(symbolType, x2 * scale5, y2 * scale5, width2 * scale5, height2 * scale5, decalOpt.color, decalOpt.symbolKeepAspect); - if (isSVG) { - var symbolVNode = zr.painter.renderOneToVNode(symbol); - if (symbolVNode) { - svgRoot.children.push(symbolVNode); - } - } else { - brushSingle2(ctx, symbol); - } - } - } - } - } - function normalizeSymbolArray2(symbol) { - if (!symbol || symbol.length === 0) { - return [["rect"]]; - } - if (isString2(symbol)) { - return [[symbol]]; - } - var isAllString = true; - for (var i2 = 0; i2 < symbol.length; ++i2) { - if (!isString2(symbol[i2])) { - isAllString = false; - break; - } - } - if (isAllString) { - return normalizeSymbolArray2([symbol]); - } - var result = []; - for (var i2 = 0; i2 < symbol.length; ++i2) { - if (isString2(symbol[i2])) { - result.push([symbol[i2]]); - } else { - result.push(symbol[i2]); - } - } - return result; - } - function normalizeDashArrayX2(dash) { - if (!dash || dash.length === 0) { - return [[0, 0]]; - } - if (isNumber2(dash)) { - var dashValue = Math.ceil(dash); - return [[dashValue, dashValue]]; - } - var isAllNumber = true; - for (var i2 = 0; i2 < dash.length; ++i2) { - if (!isNumber2(dash[i2])) { - isAllNumber = false; - break; - } - } - if (isAllNumber) { - return normalizeDashArrayX2([dash]); - } - var result = []; - for (var i2 = 0; i2 < dash.length; ++i2) { - if (isNumber2(dash[i2])) { - var dashValue = Math.ceil(dash[i2]); - result.push([dashValue, dashValue]); - } else { - var dashValue = map3(dash[i2], function(n) { - return Math.ceil(n); - }); - if (dashValue.length % 2 === 1) { - result.push(dashValue.concat(dashValue)); - } else { - result.push(dashValue); - } - } - } - return result; - } - function normalizeDashArrayY2(dash) { - if (!dash || typeof dash === "object" && dash.length === 0) { - return [0, 0]; - } - if (isNumber2(dash)) { - var dashValue_1 = Math.ceil(dash); - return [dashValue_1, dashValue_1]; - } - var dashValue = map3(dash, function(n) { - return Math.ceil(n); - }); - return dash.length % 2 ? dashValue.concat(dashValue) : dashValue; - } - function getLineBlockLengthX2(dash) { - return map3(dash, function(line) { - return getLineBlockLengthY2(line); - }); - } - function getLineBlockLengthY2(dash) { - var blockLength = 0; - for (var i2 = 0; i2 < dash.length; ++i2) { - blockLength += dash[i2]; - } - if (dash.length % 2 === 1) { - return blockLength * 2; - } - return blockLength; - } - function decalVisual2(ecModel, api) { - ecModel.eachRawSeries(function(seriesModel) { - if (ecModel.isSeriesFiltered(seriesModel)) { - return; - } - var data = seriesModel.getData(); - if (data.hasItemVisual()) { - data.each(function(idx) { - var decal2 = data.getItemVisual(idx, "decal"); - if (decal2) { - var itemStyle = data.ensureUniqueItemVisual(idx, "style"); - itemStyle.decal = createOrUpdatePatternFromDecal2(decal2, api); - } - }); - } - var decal = data.getVisual("decal"); - if (decal) { - var style = data.getVisual("style"); - style.decal = createOrUpdatePatternFromDecal2(decal, api); - } - }); - } - var lifecycle2 = new Eventful2(); - var implsStore2 = {}; - function registerImpl2(name, impl) { - if (true) { - if (implsStore2[name]) { - error3("Already has an implementation of " + name + "."); - } - } - implsStore2[name] = impl; - } - function getImpl2(name) { - if (true) { - if (!implsStore2[name]) { - error3("Implementation of " + name + " doesn't exists."); - } - } - return implsStore2[name]; - } - var version$1 = "5.6.0"; - var dependencies2 = { - zrender: "5.6.1" - }; - var TEST_FRAME_REMAIN_TIME2 = 1; - var PRIORITY_PROCESSOR_SERIES_FILTER2 = 800; - var PRIORITY_PROCESSOR_DATASTACK2 = 900; - var PRIORITY_PROCESSOR_FILTER2 = 1e3; - var PRIORITY_PROCESSOR_DEFAULT2 = 2e3; - var PRIORITY_PROCESSOR_STATISTIC2 = 5e3; - var PRIORITY_VISUAL_LAYOUT2 = 1e3; - var PRIORITY_VISUAL_PROGRESSIVE_LAYOUT2 = 1100; - var PRIORITY_VISUAL_GLOBAL2 = 2e3; - var PRIORITY_VISUAL_CHART2 = 3e3; - var PRIORITY_VISUAL_COMPONENT2 = 4e3; - var PRIORITY_VISUAL_CHART_DATA_CUSTOM2 = 4500; - var PRIORITY_VISUAL_POST_CHART_LAYOUT2 = 4600; - var PRIORITY_VISUAL_BRUSH2 = 5e3; - var PRIORITY_VISUAL_ARIA2 = 6e3; - var PRIORITY_VISUAL_DECAL2 = 7e3; - var PRIORITY2 = { - PROCESSOR: { - FILTER: PRIORITY_PROCESSOR_FILTER2, - SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER2, - STATISTIC: PRIORITY_PROCESSOR_STATISTIC2 - }, - VISUAL: { - LAYOUT: PRIORITY_VISUAL_LAYOUT2, - PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT2, - GLOBAL: PRIORITY_VISUAL_GLOBAL2, - CHART: PRIORITY_VISUAL_CHART2, - POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT2, - COMPONENT: PRIORITY_VISUAL_COMPONENT2, - BRUSH: PRIORITY_VISUAL_BRUSH2, - CHART_ITEM: PRIORITY_VISUAL_CHART_DATA_CUSTOM2, - ARIA: PRIORITY_VISUAL_ARIA2, - DECAL: PRIORITY_VISUAL_DECAL2 - } - }; - var IN_MAIN_PROCESS_KEY2 = "__flagInMainProcess"; - var PENDING_UPDATE2 = "__pendingUpdate"; - var STATUS_NEEDS_UPDATE_KEY2 = "__needsUpdateStatus"; - var ACTION_REG2 = /^[a-zA-Z0-9_]+$/; - var CONNECT_STATUS_KEY2 = "__connectUpdateStatus"; - var CONNECT_STATUS_PENDING2 = 0; - var CONNECT_STATUS_UPDATING2 = 1; - var CONNECT_STATUS_UPDATED2 = 2; - function createRegisterEventWithLowercaseECharts2(method) { - return function() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - if (this.isDisposed()) { - disposedWarning2(this.id); - return; - } - return toLowercaseNameAndCallEventful2(this, method, args); - }; - } - function createRegisterEventWithLowercaseMessageCenter2(method) { - return function() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return toLowercaseNameAndCallEventful2(this, method, args); - }; - } - function toLowercaseNameAndCallEventful2(host, method, args) { - args[0] = args[0] && args[0].toLowerCase(); - return Eventful2.prototype[method].apply(host, args); - } - var MessageCenter2 = ( - /** @class */ - function(_super) { - __extends2(MessageCenter3, _super); - function MessageCenter3() { - return _super !== null && _super.apply(this, arguments) || this; - } - return MessageCenter3; - }(Eventful2) - ); - var messageCenterProto2 = MessageCenter2.prototype; - messageCenterProto2.on = createRegisterEventWithLowercaseMessageCenter2("on"); - messageCenterProto2.off = createRegisterEventWithLowercaseMessageCenter2("off"); - var prepare2; - var prepareView2; - var updateDirectly2; - var updateMethods2; - var doConvertPixel2; - var updateStreamModes2; - var doDispatchAction2; - var flushPendingActions2; - var triggerUpdatedEvent2; - var bindRenderedEvent2; - var bindMouseEvent2; - var render2; - var renderComponents2; - var renderSeries2; - var createExtensionAPI2; - var enableConnect2; - var markStatusToUpdate2; - var applyChangedStates2; - var ECharts2 = ( - /** @class */ - function(_super) { - __extends2(ECharts3, _super); - function ECharts3(dom, theme3, opts) { - var _this = _super.call(this, new ECEventProcessor2()) || this; - _this._chartsViews = []; - _this._chartsMap = {}; - _this._componentsViews = []; - _this._componentsMap = {}; - _this._pendingActions = []; - opts = opts || {}; - if (isString2(theme3)) { - theme3 = themeStorage2[theme3]; - } - _this._dom = dom; - var defaultRenderer = "canvas"; - var defaultCoarsePointer = "auto"; - var defaultUseDirtyRect = false; - if (true) { - var root = ( - /* eslint-disable-next-line */ - env2.hasGlobalWindow ? window : global - ); - if (root) { - defaultRenderer = retrieve22(root.__ECHARTS__DEFAULT__RENDERER__, defaultRenderer); - defaultCoarsePointer = retrieve22(root.__ECHARTS__DEFAULT__COARSE_POINTER, defaultCoarsePointer); - defaultUseDirtyRect = retrieve22(root.__ECHARTS__DEFAULT__USE_DIRTY_RECT__, defaultUseDirtyRect); - } - } - if (opts.ssr) { - registerSSRDataGetter2(function(el) { - var ecData = getECData2(el); - var dataIndex = ecData.dataIndex; - if (dataIndex == null) { - return; - } - var hashMap = createHashMap2(); - hashMap.set("series_index", ecData.seriesIndex); - hashMap.set("data_index", dataIndex); - ecData.ssrType && hashMap.set("ssr_type", ecData.ssrType); - return hashMap; - }); - } - var zr = _this._zr = init4(dom, { - renderer: opts.renderer || defaultRenderer, - devicePixelRatio: opts.devicePixelRatio, - width: opts.width, - height: opts.height, - ssr: opts.ssr, - useDirtyRect: retrieve22(opts.useDirtyRect, defaultUseDirtyRect), - useCoarsePointer: retrieve22(opts.useCoarsePointer, defaultCoarsePointer), - pointerSize: opts.pointerSize - }); - _this._ssr = opts.ssr; - _this._throttledZrFlush = throttle2(bind3(zr.flush, zr), 17); - theme3 = clone6(theme3); - theme3 && globalBackwardCompat2(theme3, true); - _this._theme = theme3; - _this._locale = createLocaleObject2(opts.locale || SYSTEM_LANG2); - _this._coordSysMgr = new CoordinateSystemManager2(); - var api = _this._api = createExtensionAPI2(_this); - function prioritySortFunc(a, b) { - return a.__prio - b.__prio; - } - sort4(visualFuncs2, prioritySortFunc); - sort4(dataProcessorFuncs2, prioritySortFunc); - _this._scheduler = new Scheduler2(_this, api, dataProcessorFuncs2, visualFuncs2); - _this._messageCenter = new MessageCenter2(); - _this._initEvents(); - _this.resize = bind3(_this.resize, _this); - zr.animation.on("frame", _this._onframe, _this); - bindRenderedEvent2(zr, _this); - bindMouseEvent2(zr, _this); - setAsPrimitive2(_this); - return _this; - } - ECharts3.prototype._onframe = function() { - if (this._disposed) { - return; - } - applyChangedStates2(this); - var scheduler = this._scheduler; - if (this[PENDING_UPDATE2]) { - var silent = this[PENDING_UPDATE2].silent; - this[IN_MAIN_PROCESS_KEY2] = true; - try { - prepare2(this); - updateMethods2.update.call(this, null, this[PENDING_UPDATE2].updateParams); - } catch (e3) { - this[IN_MAIN_PROCESS_KEY2] = false; - this[PENDING_UPDATE2] = null; - throw e3; - } - this._zr.flush(); - this[IN_MAIN_PROCESS_KEY2] = false; - this[PENDING_UPDATE2] = null; - flushPendingActions2.call(this, silent); - triggerUpdatedEvent2.call(this, silent); - } else if (scheduler.unfinished) { - var remainTime = TEST_FRAME_REMAIN_TIME2; - var ecModel = this._model; - var api = this._api; - scheduler.unfinished = false; - do { - var startTime = +/* @__PURE__ */ new Date(); - scheduler.performSeriesTasks(ecModel); - scheduler.performDataProcessorTasks(ecModel); - updateStreamModes2(this, ecModel); - scheduler.performVisualTasks(ecModel); - renderSeries2(this, this._model, api, "remain", {}); - remainTime -= +/* @__PURE__ */ new Date() - startTime; - } while (remainTime > 0 && scheduler.unfinished); - if (!scheduler.unfinished) { - this._zr.flush(); - } - } - }; - ECharts3.prototype.getDom = function() { - return this._dom; - }; - ECharts3.prototype.getId = function() { - return this.id; - }; - ECharts3.prototype.getZr = function() { - return this._zr; - }; - ECharts3.prototype.isSSR = function() { - return this._ssr; - }; - ECharts3.prototype.setOption = function(option, notMerge, lazyUpdate) { - if (this[IN_MAIN_PROCESS_KEY2]) { - if (true) { - error3("`setOption` should not be called during main process."); - } - return; - } - if (this._disposed) { - disposedWarning2(this.id); - return; - } - var silent; - var replaceMerge; - var transitionOpt; - if (isObject5(notMerge)) { - lazyUpdate = notMerge.lazyUpdate; - silent = notMerge.silent; - replaceMerge = notMerge.replaceMerge; - transitionOpt = notMerge.transition; - notMerge = notMerge.notMerge; - } - this[IN_MAIN_PROCESS_KEY2] = true; - if (!this._model || notMerge) { - var optionManager = new OptionManager2(this._api); - var theme3 = this._theme; - var ecModel = this._model = new GlobalModel2(); - ecModel.scheduler = this._scheduler; - ecModel.ssr = this._ssr; - ecModel.init(null, null, null, theme3, this._locale, optionManager); - } - this._model.setOption(option, { - replaceMerge - }, optionPreprocessorFuncs2); - var updateParams = { - seriesTransition: transitionOpt, - optionChanged: true - }; - if (lazyUpdate) { - this[PENDING_UPDATE2] = { - silent, - updateParams - }; - this[IN_MAIN_PROCESS_KEY2] = false; - this.getZr().wakeUp(); - } else { - try { - prepare2(this); - updateMethods2.update.call(this, null, updateParams); - } catch (e3) { - this[PENDING_UPDATE2] = null; - this[IN_MAIN_PROCESS_KEY2] = false; - throw e3; - } - if (!this._ssr) { - this._zr.flush(); - } - this[PENDING_UPDATE2] = null; - this[IN_MAIN_PROCESS_KEY2] = false; - flushPendingActions2.call(this, silent); - triggerUpdatedEvent2.call(this, silent); - } - }; - ECharts3.prototype.setTheme = function() { - deprecateLog2("ECharts#setTheme() is DEPRECATED in ECharts 3.0"); - }; - ECharts3.prototype.getModel = function() { - return this._model; - }; - ECharts3.prototype.getOption = function() { - return this._model && this._model.getOption(); - }; - ECharts3.prototype.getWidth = function() { - return this._zr.getWidth(); - }; - ECharts3.prototype.getHeight = function() { - return this._zr.getHeight(); - }; - ECharts3.prototype.getDevicePixelRatio = function() { - return this._zr.painter.dpr || env2.hasGlobalWindow && window.devicePixelRatio || 1; - }; - ECharts3.prototype.getRenderedCanvas = function(opts) { - if (true) { - deprecateReplaceLog2("getRenderedCanvas", "renderToCanvas"); - } - return this.renderToCanvas(opts); - }; - ECharts3.prototype.renderToCanvas = function(opts) { - opts = opts || {}; - var painter = this._zr.painter; - if (true) { - if (painter.type !== "canvas") { - throw new Error("renderToCanvas can only be used in the canvas renderer."); - } - } - return painter.getRenderedCanvas({ - backgroundColor: opts.backgroundColor || this._model.get("backgroundColor"), - pixelRatio: opts.pixelRatio || this.getDevicePixelRatio() - }); - }; - ECharts3.prototype.renderToSVGString = function(opts) { - opts = opts || {}; - var painter = this._zr.painter; - if (true) { - if (painter.type !== "svg") { - throw new Error("renderToSVGString can only be used in the svg renderer."); - } - } - return painter.renderToString({ - useViewBox: opts.useViewBox - }); - }; - ECharts3.prototype.getSvgDataURL = function() { - if (!env2.svgSupported) { - return; - } - var zr = this._zr; - var list = zr.storage.getDisplayList(); - each17(list, function(el) { - el.stopAnimation(null, true); - }); - return zr.painter.toDataURL(); - }; - ECharts3.prototype.getDataURL = function(opts) { - if (this._disposed) { - disposedWarning2(this.id); - return; - } - opts = opts || {}; - var excludeComponents = opts.excludeComponents; - var ecModel = this._model; - var excludesComponentViews = []; - var self2 = this; - each17(excludeComponents, function(componentType) { - ecModel.eachComponent({ - mainType: componentType - }, function(component) { - var view = self2._componentsMap[component.__viewId]; - if (!view.group.ignore) { - excludesComponentViews.push(view); - view.group.ignore = true; - } - }); - }); - var url = this._zr.painter.getType() === "svg" ? this.getSvgDataURL() : this.renderToCanvas(opts).toDataURL("image/" + (opts && opts.type || "png")); - each17(excludesComponentViews, function(view) { - view.group.ignore = false; - }); - return url; - }; - ECharts3.prototype.getConnectedDataURL = function(opts) { - if (this._disposed) { - disposedWarning2(this.id); - return; - } - var isSvg = opts.type === "svg"; - var groupId = this.group; - var mathMin13 = Math.min; - var mathMax13 = Math.max; - var MAX_NUMBER = Infinity; - if (connectedGroups2[groupId]) { - var left_1 = MAX_NUMBER; - var top_1 = MAX_NUMBER; - var right_1 = -MAX_NUMBER; - var bottom_1 = -MAX_NUMBER; - var canvasList_1 = []; - var dpr_1 = opts && opts.pixelRatio || this.getDevicePixelRatio(); - each17(instances$1, function(chart, id) { - if (chart.group === groupId) { - var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.renderToCanvas(clone6(opts)); - var boundingRect = chart.getDom().getBoundingClientRect(); - left_1 = mathMin13(boundingRect.left, left_1); - top_1 = mathMin13(boundingRect.top, top_1); - right_1 = mathMax13(boundingRect.right, right_1); - bottom_1 = mathMax13(boundingRect.bottom, bottom_1); - canvasList_1.push({ - dom: canvas, - left: boundingRect.left, - top: boundingRect.top - }); - } - }); - left_1 *= dpr_1; - top_1 *= dpr_1; - right_1 *= dpr_1; - bottom_1 *= dpr_1; - var width = right_1 - left_1; - var height = bottom_1 - top_1; - var targetCanvas = platformApi2.createCanvas(); - var zr_1 = init4(targetCanvas, { - renderer: isSvg ? "svg" : "canvas" - }); - zr_1.resize({ - width, - height - }); - if (isSvg) { - var content_1 = ""; - each17(canvasList_1, function(item) { - var x = item.left - left_1; - var y = item.top - top_1; - content_1 += '' + item.dom + ""; - }); - zr_1.painter.getSvgRoot().innerHTML = content_1; - if (opts.connectedBackgroundColor) { - zr_1.painter.setBackgroundColor(opts.connectedBackgroundColor); - } - zr_1.refreshImmediately(); - return zr_1.painter.toDataURL(); - } else { - if (opts.connectedBackgroundColor) { - zr_1.add(new Rect4({ - shape: { - x: 0, - y: 0, - width, - height - }, - style: { - fill: opts.connectedBackgroundColor - } - })); - } - each17(canvasList_1, function(item) { - var img = new ZRImage2({ - style: { - x: item.left * dpr_1 - left_1, - y: item.top * dpr_1 - top_1, - image: item.dom - } - }); - zr_1.add(img); - }); - zr_1.refreshImmediately(); - return targetCanvas.toDataURL("image/" + (opts && opts.type || "png")); - } - } else { - return this.getDataURL(opts); - } - }; - ECharts3.prototype.convertToPixel = function(finder, value) { - return doConvertPixel2(this, "convertToPixel", finder, value); - }; - ECharts3.prototype.convertFromPixel = function(finder, value) { - return doConvertPixel2(this, "convertFromPixel", finder, value); - }; - ECharts3.prototype.containPixel = function(finder, value) { - if (this._disposed) { - disposedWarning2(this.id); - return; - } - var ecModel = this._model; - var result; - var findResult = parseFinder3(ecModel, finder); - each17(findResult, function(models, key) { - key.indexOf("Models") >= 0 && each17(models, function(model) { - var coordSys = model.coordinateSystem; - if (coordSys && coordSys.containPoint) { - result = result || !!coordSys.containPoint(value); - } else if (key === "seriesModels") { - var view = this._chartsMap[model.__viewId]; - if (view && view.containPoint) { - result = result || view.containPoint(value, model); - } else { - if (true) { - warn2(key + ": " + (view ? "The found component do not support containPoint." : "No view mapping to the found component.")); - } - } - } else { - if (true) { - warn2(key + ": containPoint is not supported"); - } - } - }, this); - }, this); - return !!result; - }; - ECharts3.prototype.getVisual = function(finder, visualType) { - var ecModel = this._model; - var parsedFinder = parseFinder3(ecModel, finder, { - defaultMainType: "series" - }); - var seriesModel = parsedFinder.seriesModel; - if (true) { - if (!seriesModel) { - warn2("There is no specified series model"); - } - } - var data = seriesModel.getData(); - var dataIndexInside = parsedFinder.hasOwnProperty("dataIndexInside") ? parsedFinder.dataIndexInside : parsedFinder.hasOwnProperty("dataIndex") ? data.indexOfRawIndex(parsedFinder.dataIndex) : null; - return dataIndexInside != null ? getItemVisualFromData2(data, dataIndexInside, visualType) : getVisualFromData2(data, visualType); - }; - ECharts3.prototype.getViewOfComponentModel = function(componentModel) { - return this._componentsMap[componentModel.__viewId]; - }; - ECharts3.prototype.getViewOfSeriesModel = function(seriesModel) { - return this._chartsMap[seriesModel.__viewId]; - }; - ECharts3.prototype._initEvents = function() { - var _this = this; - each17(MOUSE_EVENT_NAMES2, function(eveName) { - var handler = function(e3) { - var ecModel = _this.getModel(); - var el = e3.target; - var params; - var isGlobalOut = eveName === "globalout"; - if (isGlobalOut) { - params = {}; - } else { - el && findEventDispatcher2(el, function(parent) { - var ecData = getECData2(parent); - if (ecData && ecData.dataIndex != null) { - var dataModel = ecData.dataModel || ecModel.getSeriesByIndex(ecData.seriesIndex); - params = dataModel && dataModel.getDataParams(ecData.dataIndex, ecData.dataType, el) || {}; - return true; - } else if (ecData.eventData) { - params = extend3({}, ecData.eventData); - return true; - } - }, true); - } - if (params) { - var componentType = params.componentType; - var componentIndex = params.componentIndex; - if (componentType === "markLine" || componentType === "markPoint" || componentType === "markArea") { - componentType = "series"; - componentIndex = params.seriesIndex; - } - var model = componentType && componentIndex != null && ecModel.getComponent(componentType, componentIndex); - var view = model && _this[model.mainType === "series" ? "_chartsMap" : "_componentsMap"][model.__viewId]; - if (true) { - if (!isGlobalOut && !(model && view)) { - warn2("model or view can not be found by params"); - } - } - params.event = e3; - params.type = eveName; - _this._$eventProcessor.eventInfo = { - targetEl: el, - packedEvent: params, - model, - view - }; - _this.trigger(eveName, params); - } - }; - handler.zrEventfulCallAtLast = true; - _this._zr.on(eveName, handler, _this); - }); - each17(eventActionMap2, function(actionType, eventType) { - _this._messageCenter.on(eventType, function(event) { - this.trigger(eventType, event); - }, _this); - }); - each17(["selectchanged"], function(eventType) { - _this._messageCenter.on(eventType, function(event) { - this.trigger(eventType, event); - }, _this); - }); - handleLegacySelectEvents2(this._messageCenter, this, this._api); - }; - ECharts3.prototype.isDisposed = function() { - return this._disposed; - }; - ECharts3.prototype.clear = function() { - if (this._disposed) { - disposedWarning2(this.id); - return; - } - this.setOption({ - series: [] - }, true); - }; - ECharts3.prototype.dispose = function() { - if (this._disposed) { - disposedWarning2(this.id); - return; - } - this._disposed = true; - var dom = this.getDom(); - if (dom) { - setAttribute2(this.getDom(), DOM_ATTRIBUTE_KEY2, ""); - } - var chart = this; - var api = chart._api; - var ecModel = chart._model; - each17(chart._componentsViews, function(component) { - component.dispose(ecModel, api); - }); - each17(chart._chartsViews, function(chart2) { - chart2.dispose(ecModel, api); - }); - chart._zr.dispose(); - chart._dom = chart._model = chart._chartsMap = chart._componentsMap = chart._chartsViews = chart._componentsViews = chart._scheduler = chart._api = chart._zr = chart._throttledZrFlush = chart._theme = chart._coordSysMgr = chart._messageCenter = null; - delete instances$1[chart.id]; - }; - ECharts3.prototype.resize = function(opts) { - if (this[IN_MAIN_PROCESS_KEY2]) { - if (true) { - error3("`resize` should not be called during main process."); - } - return; - } - if (this._disposed) { - disposedWarning2(this.id); - return; - } - this._zr.resize(opts); - var ecModel = this._model; - this._loadingFX && this._loadingFX.resize(); - if (!ecModel) { - return; - } - var needPrepare = ecModel.resetOption("media"); - var silent = opts && opts.silent; - if (this[PENDING_UPDATE2]) { - if (silent == null) { - silent = this[PENDING_UPDATE2].silent; - } - needPrepare = true; - this[PENDING_UPDATE2] = null; - } - this[IN_MAIN_PROCESS_KEY2] = true; - try { - needPrepare && prepare2(this); - updateMethods2.update.call(this, { - type: "resize", - animation: extend3({ - // Disable animation - duration: 0 - }, opts && opts.animation) - }); - } catch (e3) { - this[IN_MAIN_PROCESS_KEY2] = false; - throw e3; - } - this[IN_MAIN_PROCESS_KEY2] = false; - flushPendingActions2.call(this, silent); - triggerUpdatedEvent2.call(this, silent); - }; - ECharts3.prototype.showLoading = function(name, cfg) { - if (this._disposed) { - disposedWarning2(this.id); - return; - } - if (isObject5(name)) { - cfg = name; - name = ""; - } - name = name || "default"; - this.hideLoading(); - if (!loadingEffects2[name]) { - if (true) { - warn2("Loading effects " + name + " not exists."); - } - return; - } - var el = loadingEffects2[name](this._api, cfg); - var zr = this._zr; - this._loadingFX = el; - zr.add(el); - }; - ECharts3.prototype.hideLoading = function() { - if (this._disposed) { - disposedWarning2(this.id); - return; - } - this._loadingFX && this._zr.remove(this._loadingFX); - this._loadingFX = null; - }; - ECharts3.prototype.makeActionFromEvent = function(eventObj) { - var payload = extend3({}, eventObj); - payload.type = eventActionMap2[eventObj.type]; - return payload; - }; - ECharts3.prototype.dispatchAction = function(payload, opt) { - if (this._disposed) { - disposedWarning2(this.id); - return; - } - if (!isObject5(opt)) { - opt = { - silent: !!opt - }; - } - if (!actions2[payload.type]) { - return; - } - if (!this._model) { - return; - } - if (this[IN_MAIN_PROCESS_KEY2]) { - this._pendingActions.push(payload); - return; - } - var silent = opt.silent; - doDispatchAction2.call(this, payload, silent); - var flush = opt.flush; - if (flush) { - this._zr.flush(); - } else if (flush !== false && env2.browser.weChat) { - this._throttledZrFlush(); - } - flushPendingActions2.call(this, silent); - triggerUpdatedEvent2.call(this, silent); - }; - ECharts3.prototype.updateLabelLayout = function() { - lifecycle2.trigger("series:layoutlabels", this._model, this._api, { - // Not adding series labels. - // TODO - updatedSeries: [] - }); - }; - ECharts3.prototype.appendData = function(params) { - if (this._disposed) { - disposedWarning2(this.id); - return; - } - var seriesIndex = params.seriesIndex; - var ecModel = this.getModel(); - var seriesModel = ecModel.getSeriesByIndex(seriesIndex); - if (true) { - assert2(params.data && seriesModel); - } - seriesModel.appendData(params); - this._scheduler.unfinished = true; - this.getZr().wakeUp(); - }; - ECharts3.internalField = function() { - prepare2 = function(ecIns) { - var scheduler = ecIns._scheduler; - scheduler.restorePipelines(ecIns._model); - scheduler.prepareStageTasks(); - prepareView2(ecIns, true); - prepareView2(ecIns, false); - scheduler.plan(); - }; - prepareView2 = function(ecIns, isComponent) { - var ecModel = ecIns._model; - var scheduler = ecIns._scheduler; - var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews; - var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap; - var zr = ecIns._zr; - var api = ecIns._api; - for (var i2 = 0; i2 < viewList.length; i2++) { - viewList[i2].__alive = false; - } - isComponent ? ecModel.eachComponent(function(componentType, model) { - componentType !== "series" && doPrepare(model); - }) : ecModel.eachSeries(doPrepare); - function doPrepare(model) { - var requireNewView = model.__requireNewView; - model.__requireNewView = false; - var viewId = "_ec_" + model.id + "_" + model.type; - var view2 = !requireNewView && viewMap[viewId]; - if (!view2) { - var classType = parseClassType2(model.type); - var Clazz = isComponent ? ComponentView2.getClass(classType.main, classType.sub) : ( - // FIXME:TS - // (ChartView as ChartViewConstructor).getClass('series', classType.sub) - // For backward compat, still support a chart type declared as only subType - // like "liquidfill", but recommend "series.liquidfill" - // But need a base class to make a type series. - ChartView2.getClass(classType.sub) - ); - if (true) { - assert2(Clazz, classType.sub + " does not exist."); - } - view2 = new Clazz(); - view2.init(ecModel, api); - viewMap[viewId] = view2; - viewList.push(view2); - zr.add(view2.group); - } - model.__viewId = view2.__id = viewId; - view2.__alive = true; - view2.__model = model; - view2.group.__ecComponentInfo = { - mainType: model.mainType, - index: model.componentIndex - }; - !isComponent && scheduler.prepareView(view2, model, ecModel, api); - } - for (var i2 = 0; i2 < viewList.length; ) { - var view = viewList[i2]; - if (!view.__alive) { - !isComponent && view.renderTask.dispose(); - zr.remove(view.group); - view.dispose(ecModel, api); - viewList.splice(i2, 1); - if (viewMap[view.__id] === view) { - delete viewMap[view.__id]; - } - view.__id = view.group.__ecComponentInfo = null; - } else { - i2++; - } - } - }; - updateDirectly2 = function(ecIns, method, payload, mainType, subType) { - var ecModel = ecIns._model; - ecModel.setUpdatePayload(payload); - if (!mainType) { - each17([].concat(ecIns._componentsViews).concat(ecIns._chartsViews), callView); - return; - } - var query = {}; - query[mainType + "Id"] = payload[mainType + "Id"]; - query[mainType + "Index"] = payload[mainType + "Index"]; - query[mainType + "Name"] = payload[mainType + "Name"]; - var condition = { - mainType, - query - }; - subType && (condition.subType = subType); - var excludeSeriesId = payload.excludeSeriesId; - var excludeSeriesIdMap; - if (excludeSeriesId != null) { - excludeSeriesIdMap = createHashMap2(); - each17(normalizeToArray2(excludeSeriesId), function(id) { - var modelId = convertOptionIdName2(id, null); - if (modelId != null) { - excludeSeriesIdMap.set(modelId, true); - } - }); - } - ecModel && ecModel.eachComponent(condition, function(model) { - var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null; - if (isExcluded) { - return; - } - if (isHighDownPayload2(payload)) { - if (model instanceof SeriesModel2) { - if (payload.type === HIGHLIGHT_ACTION_TYPE2 && !payload.notBlur && !model.get(["emphasis", "disabled"])) { - blurSeriesFromHighlightPayload2(model, payload, ecIns._api); - } - } else { - var _a3 = findComponentHighDownDispatchers2(model.mainType, model.componentIndex, payload.name, ecIns._api), focusSelf = _a3.focusSelf, dispatchers = _a3.dispatchers; - if (payload.type === HIGHLIGHT_ACTION_TYPE2 && focusSelf && !payload.notBlur) { - blurComponent2(model.mainType, model.componentIndex, ecIns._api); - } - if (dispatchers) { - each17(dispatchers, function(dispatcher) { - payload.type === HIGHLIGHT_ACTION_TYPE2 ? enterEmphasis2(dispatcher) : leaveEmphasis2(dispatcher); - }); - } - } - } else if (isSelectChangePayload2(payload)) { - if (model instanceof SeriesModel2) { - toggleSelectionFromPayload2(model, payload, ecIns._api); - updateSeriesElementSelection2(model); - markStatusToUpdate2(ecIns); - } - } - }, ecIns); - ecModel && ecModel.eachComponent(condition, function(model) { - var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null; - if (isExcluded) { - return; - } - callView(ecIns[mainType === "series" ? "_chartsMap" : "_componentsMap"][model.__viewId]); - }, ecIns); - function callView(view) { - view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload); - } - }; - updateMethods2 = { - prepareAndUpdate: function(payload) { - prepare2(this); - updateMethods2.update.call(this, payload, { - // Needs to mark option changed if newOption is given. - // It's from MagicType. - // TODO If use a separate flag optionChanged in payload? - optionChanged: payload.newOption != null - }); - }, - update: function(payload, updateParams) { - var ecModel = this._model; - var api = this._api; - var zr = this._zr; - var coordSysMgr = this._coordSysMgr; - var scheduler = this._scheduler; - if (!ecModel) { - return; - } - ecModel.setUpdatePayload(payload); - scheduler.restoreData(ecModel, payload); - scheduler.performSeriesTasks(ecModel); - coordSysMgr.create(ecModel, api); - scheduler.performDataProcessorTasks(ecModel, payload); - updateStreamModes2(this, ecModel); - coordSysMgr.update(ecModel, api); - clearColorPalette(ecModel); - scheduler.performVisualTasks(ecModel, payload); - render2(this, ecModel, api, payload, updateParams); - var backgroundColor3 = ecModel.get("backgroundColor") || "transparent"; - var darkMode = ecModel.get("darkMode"); - zr.setBackgroundColor(backgroundColor3); - if (darkMode != null && darkMode !== "auto") { - zr.setDarkMode(darkMode); - } - lifecycle2.trigger("afterupdate", ecModel, api); - }, - updateTransform: function(payload) { - var _this = this; - var ecModel = this._model; - var api = this._api; - if (!ecModel) { - return; - } - ecModel.setUpdatePayload(payload); - var componentDirtyList = []; - ecModel.eachComponent(function(componentType, componentModel) { - if (componentType === "series") { - return; - } - var componentView = _this.getViewOfComponentModel(componentModel); - if (componentView && componentView.__alive) { - if (componentView.updateTransform) { - var result = componentView.updateTransform(componentModel, ecModel, api, payload); - result && result.update && componentDirtyList.push(componentView); - } else { - componentDirtyList.push(componentView); - } - } - }); - var seriesDirtyMap = createHashMap2(); - ecModel.eachSeries(function(seriesModel) { - var chartView = _this._chartsMap[seriesModel.__viewId]; - if (chartView.updateTransform) { - var result = chartView.updateTransform(seriesModel, ecModel, api, payload); - result && result.update && seriesDirtyMap.set(seriesModel.uid, 1); - } else { - seriesDirtyMap.set(seriesModel.uid, 1); - } - }); - clearColorPalette(ecModel); - this._scheduler.performVisualTasks(ecModel, payload, { - setDirty: true, - dirtyMap: seriesDirtyMap - }); - renderSeries2(this, ecModel, api, payload, {}, seriesDirtyMap); - lifecycle2.trigger("afterupdate", ecModel, api); - }, - updateView: function(payload) { - var ecModel = this._model; - if (!ecModel) { - return; - } - ecModel.setUpdatePayload(payload); - ChartView2.markUpdateMethod(payload, "updateView"); - clearColorPalette(ecModel); - this._scheduler.performVisualTasks(ecModel, payload, { - setDirty: true - }); - render2(this, ecModel, this._api, payload, {}); - lifecycle2.trigger("afterupdate", ecModel, this._api); - }, - updateVisual: function(payload) { - var _this = this; - var ecModel = this._model; - if (!ecModel) { - return; - } - ecModel.setUpdatePayload(payload); - ecModel.eachSeries(function(seriesModel) { - seriesModel.getData().clearAllVisual(); - }); - ChartView2.markUpdateMethod(payload, "updateVisual"); - clearColorPalette(ecModel); - this._scheduler.performVisualTasks(ecModel, payload, { - visualType: "visual", - setDirty: true - }); - ecModel.eachComponent(function(componentType, componentModel) { - if (componentType !== "series") { - var componentView = _this.getViewOfComponentModel(componentModel); - componentView && componentView.__alive && componentView.updateVisual(componentModel, ecModel, _this._api, payload); - } - }); - ecModel.eachSeries(function(seriesModel) { - var chartView = _this._chartsMap[seriesModel.__viewId]; - chartView.updateVisual(seriesModel, ecModel, _this._api, payload); - }); - lifecycle2.trigger("afterupdate", ecModel, this._api); - }, - updateLayout: function(payload) { - updateMethods2.update.call(this, payload); - } - }; - doConvertPixel2 = function(ecIns, methodName, finder, value) { - if (ecIns._disposed) { - disposedWarning2(ecIns.id); - return; - } - var ecModel = ecIns._model; - var coordSysList = ecIns._coordSysMgr.getCoordinateSystems(); - var result; - var parsedFinder = parseFinder3(ecModel, finder); - for (var i2 = 0; i2 < coordSysList.length; i2++) { - var coordSys = coordSysList[i2]; - if (coordSys[methodName] && (result = coordSys[methodName](ecModel, parsedFinder, value)) != null) { - return result; - } - } - if (true) { - warn2("No coordinate system that supports " + methodName + " found by the given finder."); - } - }; - updateStreamModes2 = function(ecIns, ecModel) { - var chartsMap = ecIns._chartsMap; - var scheduler = ecIns._scheduler; - ecModel.eachSeries(function(seriesModel) { - scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]); - }); - }; - doDispatchAction2 = function(payload, silent) { - var _this = this; - var ecModel = this.getModel(); - var payloadType = payload.type; - var escapeConnect = payload.escapeConnect; - var actionWrap = actions2[payloadType]; - var actionInfo4 = actionWrap.actionInfo; - var cptTypeTmp = (actionInfo4.update || "update").split(":"); - var updateMethod = cptTypeTmp.pop(); - var cptType = cptTypeTmp[0] != null && parseClassType2(cptTypeTmp[0]); - this[IN_MAIN_PROCESS_KEY2] = true; - var payloads = [payload]; - var batched = false; - if (payload.batch) { - batched = true; - payloads = map3(payload.batch, function(item) { - item = defaults2(extend3({}, item), payload); - item.batch = null; - return item; - }); - } - var eventObjBatch = []; - var eventObj; - var isSelectChange = isSelectChangePayload2(payload); - var isHighDown = isHighDownPayload2(payload); - if (isHighDown) { - allLeaveBlur2(this._api); - } - each17(payloads, function(batchItem) { - eventObj = actionWrap.action(batchItem, _this._model, _this._api); - eventObj = eventObj || extend3({}, batchItem); - eventObj.type = actionInfo4.event || eventObj.type; - eventObjBatch.push(eventObj); - if (isHighDown) { - var _a3 = preParseFinder2(payload), queryOptionMap = _a3.queryOptionMap, mainTypeSpecified = _a3.mainTypeSpecified; - var componentMainType = mainTypeSpecified ? queryOptionMap.keys()[0] : "series"; - updateDirectly2(_this, updateMethod, batchItem, componentMainType); - markStatusToUpdate2(_this); - } else if (isSelectChange) { - updateDirectly2(_this, updateMethod, batchItem, "series"); - markStatusToUpdate2(_this); - } else if (cptType) { - updateDirectly2(_this, updateMethod, batchItem, cptType.main, cptType.sub); - } - }); - if (updateMethod !== "none" && !isHighDown && !isSelectChange && !cptType) { - try { - if (this[PENDING_UPDATE2]) { - prepare2(this); - updateMethods2.update.call(this, payload); - this[PENDING_UPDATE2] = null; - } else { - updateMethods2[updateMethod].call(this, payload); - } - } catch (e3) { - this[IN_MAIN_PROCESS_KEY2] = false; - throw e3; - } - } - if (batched) { - eventObj = { - type: actionInfo4.event || payloadType, - escapeConnect, - batch: eventObjBatch - }; - } else { - eventObj = eventObjBatch[0]; - } - this[IN_MAIN_PROCESS_KEY2] = false; - if (!silent) { - var messageCenter = this._messageCenter; - messageCenter.trigger(eventObj.type, eventObj); - if (isSelectChange) { - var newObj = { - type: "selectchanged", - escapeConnect, - selected: getAllSelectedIndices2(ecModel), - isFromClick: payload.isFromClick || false, - fromAction: payload.type, - fromActionPayload: payload - }; - messageCenter.trigger(newObj.type, newObj); - } - } - }; - flushPendingActions2 = function(silent) { - var pendingActions = this._pendingActions; - while (pendingActions.length) { - var payload = pendingActions.shift(); - doDispatchAction2.call(this, payload, silent); - } - }; - triggerUpdatedEvent2 = function(silent) { - !silent && this.trigger("updated"); - }; - bindRenderedEvent2 = function(zr, ecIns) { - zr.on("rendered", function(params) { - ecIns.trigger("rendered", params); - if ( - // Although zr is dirty if initial animation is not finished - // and this checking is called on frame, we also check - // animation finished for robustness. - zr.animation.isFinished() && !ecIns[PENDING_UPDATE2] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length - ) { - ecIns.trigger("finished"); - } - }); - }; - bindMouseEvent2 = function(zr, ecIns) { - zr.on("mouseover", function(e3) { - var el = e3.target; - var dispatcher = findEventDispatcher2(el, isHighDownDispatcher2); - if (dispatcher) { - handleGlobalMouseOverForHighDown2(dispatcher, e3, ecIns._api); - markStatusToUpdate2(ecIns); - } - }).on("mouseout", function(e3) { - var el = e3.target; - var dispatcher = findEventDispatcher2(el, isHighDownDispatcher2); - if (dispatcher) { - handleGlobalMouseOutForHighDown2(dispatcher, e3, ecIns._api); - markStatusToUpdate2(ecIns); - } - }).on("click", function(e3) { - var el = e3.target; - var dispatcher = findEventDispatcher2(el, function(target) { - return getECData2(target).dataIndex != null; - }, true); - if (dispatcher) { - var actionType = dispatcher.selected ? "unselect" : "select"; - var ecData = getECData2(dispatcher); - ecIns._api.dispatchAction({ - type: actionType, - dataType: ecData.dataType, - dataIndexInside: ecData.dataIndex, - seriesIndex: ecData.seriesIndex, - isFromClick: true - }); - } - }); - }; - function clearColorPalette(ecModel) { - ecModel.clearColorPalette(); - ecModel.eachSeries(function(seriesModel) { - seriesModel.clearColorPalette(); - }); - } - function allocateZlevels(ecModel) { - var componentZLevels = []; - var seriesZLevels = []; - var hasSeparateZLevel = false; - ecModel.eachComponent(function(componentType, componentModel) { - var zlevel = componentModel.get("zlevel") || 0; - var z = componentModel.get("z") || 0; - var zlevelKey = componentModel.getZLevelKey(); - hasSeparateZLevel = hasSeparateZLevel || !!zlevelKey; - (componentType === "series" ? seriesZLevels : componentZLevels).push({ - zlevel, - z, - idx: componentModel.componentIndex, - type: componentType, - key: zlevelKey - }); - }); - if (hasSeparateZLevel) { - var zLevels = componentZLevels.concat(seriesZLevels); - var lastSeriesZLevel_1; - var lastSeriesKey_1; - sort4(zLevels, function(a, b) { - if (a.zlevel === b.zlevel) { - return a.z - b.z; - } - return a.zlevel - b.zlevel; - }); - each17(zLevels, function(item) { - var componentModel = ecModel.getComponent(item.type, item.idx); - var zlevel = item.zlevel; - var key = item.key; - if (lastSeriesZLevel_1 != null) { - zlevel = Math.max(lastSeriesZLevel_1, zlevel); - } - if (key) { - if (zlevel === lastSeriesZLevel_1 && key !== lastSeriesKey_1) { - zlevel++; - } - lastSeriesKey_1 = key; - } else if (lastSeriesKey_1) { - if (zlevel === lastSeriesZLevel_1) { - zlevel++; - } - lastSeriesKey_1 = ""; - } - lastSeriesZLevel_1 = zlevel; - componentModel.setZLevel(zlevel); - }); - } - } - render2 = function(ecIns, ecModel, api, payload, updateParams) { - allocateZlevels(ecModel); - renderComponents2(ecIns, ecModel, api, payload, updateParams); - each17(ecIns._chartsViews, function(chart) { - chart.__alive = false; - }); - renderSeries2(ecIns, ecModel, api, payload, updateParams); - each17(ecIns._chartsViews, function(chart) { - if (!chart.__alive) { - chart.remove(ecModel, api); - } - }); - }; - renderComponents2 = function(ecIns, ecModel, api, payload, updateParams, dirtyList) { - each17(dirtyList || ecIns._componentsViews, function(componentView) { - var componentModel = componentView.__model; - clearStates(componentModel, componentView); - componentView.render(componentModel, ecModel, api, payload); - updateZ4(componentModel, componentView); - updateStates(componentModel, componentView); - }); - }; - renderSeries2 = function(ecIns, ecModel, api, payload, updateParams, dirtyMap) { - var scheduler = ecIns._scheduler; - updateParams = extend3(updateParams || {}, { - updatedSeries: ecModel.getSeries() - }); - lifecycle2.trigger("series:beforeupdate", ecModel, api, updateParams); - var unfinished = false; - ecModel.eachSeries(function(seriesModel) { - var chartView = ecIns._chartsMap[seriesModel.__viewId]; - chartView.__alive = true; - var renderTask = chartView.renderTask; - scheduler.updatePayload(renderTask, payload); - clearStates(seriesModel, chartView); - if (dirtyMap && dirtyMap.get(seriesModel.uid)) { - renderTask.dirty(); - } - if (renderTask.perform(scheduler.getPerformArgs(renderTask))) { - unfinished = true; - } - chartView.group.silent = !!seriesModel.get("silent"); - updateBlend(seriesModel, chartView); - updateSeriesElementSelection2(seriesModel); - }); - scheduler.unfinished = unfinished || scheduler.unfinished; - lifecycle2.trigger("series:layoutlabels", ecModel, api, updateParams); - lifecycle2.trigger("series:transition", ecModel, api, updateParams); - ecModel.eachSeries(function(seriesModel) { - var chartView = ecIns._chartsMap[seriesModel.__viewId]; - updateZ4(seriesModel, chartView); - updateStates(seriesModel, chartView); - }); - updateHoverLayerStatus(ecIns, ecModel); - lifecycle2.trigger("series:afterupdate", ecModel, api, updateParams); - }; - markStatusToUpdate2 = function(ecIns) { - ecIns[STATUS_NEEDS_UPDATE_KEY2] = true; - ecIns.getZr().wakeUp(); - }; - applyChangedStates2 = function(ecIns) { - if (!ecIns[STATUS_NEEDS_UPDATE_KEY2]) { - return; - } - ecIns.getZr().storage.traverse(function(el) { - if (isElementRemoved2(el)) { - return; - } - applyElementStates(el); - }); - ecIns[STATUS_NEEDS_UPDATE_KEY2] = false; - }; - function applyElementStates(el) { - var newStates = []; - var oldStates = el.currentStates; - for (var i2 = 0; i2 < oldStates.length; i2++) { - var stateName = oldStates[i2]; - if (!(stateName === "emphasis" || stateName === "blur" || stateName === "select")) { - newStates.push(stateName); - } - } - if (el.selected && el.states.select) { - newStates.push("select"); - } - if (el.hoverState === HOVER_STATE_EMPHASIS2 && el.states.emphasis) { - newStates.push("emphasis"); - } else if (el.hoverState === HOVER_STATE_BLUR2 && el.states.blur) { - newStates.push("blur"); - } - el.useStates(newStates); - } - function updateHoverLayerStatus(ecIns, ecModel) { - var zr = ecIns._zr; - var storage3 = zr.storage; - var elCount = 0; - storage3.traverse(function(el) { - if (!el.isGroup) { - elCount++; - } - }); - if (elCount > ecModel.get("hoverLayerThreshold") && !env2.node && !env2.worker) { - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.preventUsingHoverLayer) { - return; - } - var chartView = ecIns._chartsMap[seriesModel.__viewId]; - if (chartView.__alive) { - chartView.eachRendered(function(el) { - if (el.states.emphasis) { - el.states.emphasis.hoverLayer = true; - } - }); - } - }); - } - } - function updateBlend(seriesModel, chartView) { - var blendMode = seriesModel.get("blendMode") || null; - chartView.eachRendered(function(el) { - if (!el.isGroup) { - el.style.blend = blendMode; - } - }); - } - function updateZ4(model, view) { - if (model.preventAutoZ) { - return; - } - var z = model.get("z") || 0; - var zlevel = model.get("zlevel") || 0; - view.eachRendered(function(el) { - doUpdateZ(el, z, zlevel, -Infinity); - return true; - }); - } - function doUpdateZ(el, z, zlevel, maxZ2) { - var label = el.getTextContent(); - var labelLine = el.getTextGuideLine(); - var isGroup = el.isGroup; - if (isGroup) { - var children = el.childrenRef(); - for (var i2 = 0; i2 < children.length; i2++) { - maxZ2 = Math.max(doUpdateZ(children[i2], z, zlevel, maxZ2), maxZ2); - } - } else { - el.z = z; - el.zlevel = zlevel; - maxZ2 = Math.max(el.z2, maxZ2); - } - if (label) { - label.z = z; - label.zlevel = zlevel; - isFinite(maxZ2) && (label.z2 = maxZ2 + 2); - } - if (labelLine) { - var textGuideLineConfig = el.textGuideLineConfig; - labelLine.z = z; - labelLine.zlevel = zlevel; - isFinite(maxZ2) && (labelLine.z2 = maxZ2 + (textGuideLineConfig && textGuideLineConfig.showAbove ? 1 : -1)); - } - return maxZ2; - } - function clearStates(model, view) { - view.eachRendered(function(el) { - if (isElementRemoved2(el)) { - return; - } - var textContent = el.getTextContent(); - var textGuide = el.getTextGuideLine(); - if (el.stateTransition) { - el.stateTransition = null; - } - if (textContent && textContent.stateTransition) { - textContent.stateTransition = null; - } - if (textGuide && textGuide.stateTransition) { - textGuide.stateTransition = null; - } - if (el.hasState()) { - el.prevStates = el.currentStates; - el.clearStates(); - } else if (el.prevStates) { - el.prevStates = null; - } - }); - } - function updateStates(model, view) { - var stateAnimationModel = model.getModel("stateAnimation"); - var enableAnimation = model.isAnimationEnabled(); - var duration = stateAnimationModel.get("duration"); - var stateTransition = duration > 0 ? { - duration, - delay: stateAnimationModel.get("delay"), - easing: stateAnimationModel.get("easing") - // additive: stateAnimationModel.get('additive') - } : null; - view.eachRendered(function(el) { - if (el.states && el.states.emphasis) { - if (isElementRemoved2(el)) { - return; - } - if (el instanceof Path2) { - savePathStates2(el); - } - if (el.__dirty) { - var prevStates = el.prevStates; - if (prevStates) { - el.useStates(prevStates); - } - } - if (enableAnimation) { - el.stateTransition = stateTransition; - var textContent = el.getTextContent(); - var textGuide = el.getTextGuideLine(); - if (textContent) { - textContent.stateTransition = stateTransition; - } - if (textGuide) { - textGuide.stateTransition = stateTransition; - } - } - if (el.__dirty) { - applyElementStates(el); - } - } - }); - } - createExtensionAPI2 = function(ecIns) { - return new /** @class */ - (function(_super2) { - __extends2(class_1, _super2); - function class_1() { - return _super2 !== null && _super2.apply(this, arguments) || this; - } - class_1.prototype.getCoordinateSystems = function() { - return ecIns._coordSysMgr.getCoordinateSystems(); - }; - class_1.prototype.getComponentByElement = function(el) { - while (el) { - var modelInfo = el.__ecComponentInfo; - if (modelInfo != null) { - return ecIns._model.getComponent(modelInfo.mainType, modelInfo.index); - } - el = el.parent; - } - }; - class_1.prototype.enterEmphasis = function(el, highlightDigit) { - enterEmphasis2(el, highlightDigit); - markStatusToUpdate2(ecIns); - }; - class_1.prototype.leaveEmphasis = function(el, highlightDigit) { - leaveEmphasis2(el, highlightDigit); - markStatusToUpdate2(ecIns); - }; - class_1.prototype.enterBlur = function(el) { - enterBlur2(el); - markStatusToUpdate2(ecIns); - }; - class_1.prototype.leaveBlur = function(el) { - leaveBlur2(el); - markStatusToUpdate2(ecIns); - }; - class_1.prototype.enterSelect = function(el) { - enterSelect2(el); - markStatusToUpdate2(ecIns); - }; - class_1.prototype.leaveSelect = function(el) { - leaveSelect2(el); - markStatusToUpdate2(ecIns); - }; - class_1.prototype.getModel = function() { - return ecIns.getModel(); - }; - class_1.prototype.getViewOfComponentModel = function(componentModel) { - return ecIns.getViewOfComponentModel(componentModel); - }; - class_1.prototype.getViewOfSeriesModel = function(seriesModel) { - return ecIns.getViewOfSeriesModel(seriesModel); - }; - return class_1; - }(ExtensionAPI2))(ecIns); - }; - enableConnect2 = function(chart) { - function updateConnectedChartsStatus(charts, status) { - for (var i2 = 0; i2 < charts.length; i2++) { - var otherChart = charts[i2]; - otherChart[CONNECT_STATUS_KEY2] = status; - } - } - each17(eventActionMap2, function(actionType, eventType) { - chart._messageCenter.on(eventType, function(event) { - if (connectedGroups2[chart.group] && chart[CONNECT_STATUS_KEY2] !== CONNECT_STATUS_PENDING2) { - if (event && event.escapeConnect) { - return; - } - var action_1 = chart.makeActionFromEvent(event); - var otherCharts_1 = []; - each17(instances$1, function(otherChart) { - if (otherChart !== chart && otherChart.group === chart.group) { - otherCharts_1.push(otherChart); - } - }); - updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_PENDING2); - each17(otherCharts_1, function(otherChart) { - if (otherChart[CONNECT_STATUS_KEY2] !== CONNECT_STATUS_UPDATING2) { - otherChart.dispatchAction(action_1); - } - }); - updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_UPDATED2); - } - }); - }); - }; - }(); - return ECharts3; - }(Eventful2) - ); - var echartsProto2 = ECharts2.prototype; - echartsProto2.on = createRegisterEventWithLowercaseECharts2("on"); - echartsProto2.off = createRegisterEventWithLowercaseECharts2("off"); - echartsProto2.one = function(eventName, cb, ctx) { - var self2 = this; - deprecateLog2("ECharts#one is deprecated."); - function wrapped() { - var args2 = []; - for (var _i = 0; _i < arguments.length; _i++) { - args2[_i] = arguments[_i]; - } - cb && cb.apply && cb.apply(this, args2); - self2.off(eventName, wrapped); - } - this.on.call(this, eventName, wrapped, ctx); - }; - var MOUSE_EVENT_NAMES2 = ["click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout", "contextmenu"]; - function disposedWarning2(id) { - if (true) { - warn2("Instance " + id + " has been disposed"); - } - } - var actions2 = {}; - var eventActionMap2 = {}; - var dataProcessorFuncs2 = []; - var optionPreprocessorFuncs2 = []; - var visualFuncs2 = []; - var themeStorage2 = {}; - var loadingEffects2 = {}; - var instances$1 = {}; - var connectedGroups2 = {}; - var idBase2 = +/* @__PURE__ */ new Date() - 0; - var groupIdBase2 = +/* @__PURE__ */ new Date() - 0; - var DOM_ATTRIBUTE_KEY2 = "_echarts_instance_"; - function init$1(dom, theme3, opts) { - var isClient = !(opts && opts.ssr); - if (isClient) { - if (true) { - if (!dom) { - throw new Error("Initialize failed: invalid dom."); - } - } - var existInstance = getInstanceByDom2(dom); - if (existInstance) { - if (true) { - warn2("There is a chart instance already initialized on the dom."); - } - return existInstance; - } - if (true) { - if (isDom2(dom) && dom.nodeName.toUpperCase() !== "CANVAS" && (!dom.clientWidth && (!opts || opts.width == null) || !dom.clientHeight && (!opts || opts.height == null))) { - warn2("Can't get DOM width or height. Please check dom.clientWidth and dom.clientHeight. They should not be 0.For example, you may need to call this in the callback of window.onload."); - } - } - } - var chart = new ECharts2(dom, theme3, opts); - chart.id = "ec_" + idBase2++; - instances$1[chart.id] = chart; - isClient && setAttribute2(dom, DOM_ATTRIBUTE_KEY2, chart.id); - enableConnect2(chart); - lifecycle2.trigger("afterinit", chart); - return chart; - } - function connect2(groupId) { - if (isArray3(groupId)) { - var charts = groupId; - groupId = null; - each17(charts, function(chart) { - if (chart.group != null) { - groupId = chart.group; - } - }); - groupId = groupId || "g_" + groupIdBase2++; - each17(charts, function(chart) { - chart.group = groupId; - }); - } - connectedGroups2[groupId] = true; - return groupId; - } - function disconnect2(groupId) { - connectedGroups2[groupId] = false; - } - var disConnect2 = disconnect2; - function dispose$1(chart) { - if (isString2(chart)) { - chart = instances$1[chart]; - } else if (!(chart instanceof ECharts2)) { - chart = getInstanceByDom2(chart); - } - if (chart instanceof ECharts2 && !chart.isDisposed()) { - chart.dispose(); - } - } - function getInstanceByDom2(dom) { - return instances$1[getAttribute3(dom, DOM_ATTRIBUTE_KEY2)]; - } - function getInstanceById2(key) { - return instances$1[key]; - } - function registerTheme2(name, theme3) { - themeStorage2[name] = theme3; - } - function registerPreprocessor2(preprocessorFunc) { - if (indexOf2(optionPreprocessorFuncs2, preprocessorFunc) < 0) { - optionPreprocessorFuncs2.push(preprocessorFunc); - } - } - function registerProcessor2(priority, processor) { - normalizeRegister2(dataProcessorFuncs2, priority, processor, PRIORITY_PROCESSOR_DEFAULT2); - } - function registerPostInit2(postInitFunc) { - registerUpdateLifecycle2("afterinit", postInitFunc); - } - function registerPostUpdate2(postUpdateFunc) { - registerUpdateLifecycle2("afterupdate", postUpdateFunc); - } - function registerUpdateLifecycle2(name, cb) { - lifecycle2.on(name, cb); - } - function registerAction2(actionInfo4, eventName, action) { - if (isFunction2(eventName)) { - action = eventName; - eventName = ""; - } - var actionType = isObject5(actionInfo4) ? actionInfo4.type : [actionInfo4, actionInfo4 = { - event: eventName - }][0]; - actionInfo4.event = (actionInfo4.event || actionType).toLowerCase(); - eventName = actionInfo4.event; - if (eventActionMap2[eventName]) { - return; - } - assert2(ACTION_REG2.test(actionType) && ACTION_REG2.test(eventName)); - if (!actions2[actionType]) { - actions2[actionType] = { - action, - actionInfo: actionInfo4 - }; - } - eventActionMap2[eventName] = actionType; - } - function registerCoordinateSystem2(type, coordSysCreator) { - CoordinateSystemManager2.register(type, coordSysCreator); - } - function getCoordinateSystemDimensions2(type) { - var coordSysCreator = CoordinateSystemManager2.get(type); - if (coordSysCreator) { - return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice(); - } - } - function registerLayout2(priority, layoutTask) { - normalizeRegister2(visualFuncs2, priority, layoutTask, PRIORITY_VISUAL_LAYOUT2, "layout"); - } - function registerVisual2(priority, visualTask) { - normalizeRegister2(visualFuncs2, priority, visualTask, PRIORITY_VISUAL_CHART2, "visual"); - } - var registeredTasks2 = []; - function normalizeRegister2(targetList, priority, fn, defaultPriority, visualType) { - if (isFunction2(priority) || isObject5(priority)) { - fn = priority; - priority = defaultPriority; - } - if (true) { - if (isNaN(priority) || priority == null) { - throw new Error("Illegal priority"); - } - each17(targetList, function(wrap) { - assert2(wrap.__raw !== fn); - }); - } - if (indexOf2(registeredTasks2, fn) >= 0) { - return; - } - registeredTasks2.push(fn); - var stageHandler = Scheduler2.wrapStageHandler(fn, visualType); - stageHandler.__prio = priority; - stageHandler.__raw = fn; - targetList.push(stageHandler); - } - function registerLoading2(name, loadingFx) { - loadingEffects2[name] = loadingFx; - } - function setCanvasCreator2(creator) { - if (true) { - deprecateLog2("setCanvasCreator is deprecated. Use setPlatformAPI({ createCanvas }) instead."); - } - setPlatformAPI2({ - createCanvas: creator - }); - } - function registerMap3(mapName, geoJson, specialAreas) { - var registerMap4 = getImpl2("registerMap"); - registerMap4 && registerMap4(mapName, geoJson, specialAreas); - } - function getMap2(mapName) { - var getMap3 = getImpl2("getMap"); - return getMap3 && getMap3(mapName); - } - var registerTransform2 = registerExternalTransform2; - registerVisual2(PRIORITY_VISUAL_GLOBAL2, seriesStyleTask2); - registerVisual2(PRIORITY_VISUAL_CHART_DATA_CUSTOM2, dataStyleTask2); - registerVisual2(PRIORITY_VISUAL_CHART_DATA_CUSTOM2, dataColorPaletteTask2); - registerVisual2(PRIORITY_VISUAL_GLOBAL2, seriesSymbolTask2); - registerVisual2(PRIORITY_VISUAL_CHART_DATA_CUSTOM2, dataSymbolTask2); - registerVisual2(PRIORITY_VISUAL_DECAL2, decalVisual2); - registerPreprocessor2(globalBackwardCompat2); - registerProcessor2(PRIORITY_PROCESSOR_DATASTACK2, dataStack3); - registerLoading2("default", defaultLoading2); - registerAction2({ - type: HIGHLIGHT_ACTION_TYPE2, - event: HIGHLIGHT_ACTION_TYPE2, - update: HIGHLIGHT_ACTION_TYPE2 - }, noop2); - registerAction2({ - type: DOWNPLAY_ACTION_TYPE2, - event: DOWNPLAY_ACTION_TYPE2, - update: DOWNPLAY_ACTION_TYPE2 - }, noop2); - registerAction2({ - type: SELECT_ACTION_TYPE2, - event: SELECT_ACTION_TYPE2, - update: SELECT_ACTION_TYPE2 - }, noop2); - registerAction2({ - type: UNSELECT_ACTION_TYPE2, - event: UNSELECT_ACTION_TYPE2, - update: UNSELECT_ACTION_TYPE2 - }, noop2); - registerAction2({ - type: TOGGLE_SELECT_ACTION_TYPE2, - event: TOGGLE_SELECT_ACTION_TYPE2, - update: TOGGLE_SELECT_ACTION_TYPE2 - }, noop2); - registerTheme2("light", lightTheme); - registerTheme2("dark", theme2); - var dataTool2 = {}; - var extensions2 = []; - var extensionRegisters2 = { - registerPreprocessor: registerPreprocessor2, - registerProcessor: registerProcessor2, - registerPostInit: registerPostInit2, - registerPostUpdate: registerPostUpdate2, - registerUpdateLifecycle: registerUpdateLifecycle2, - registerAction: registerAction2, - registerCoordinateSystem: registerCoordinateSystem2, - registerLayout: registerLayout2, - registerVisual: registerVisual2, - registerTransform: registerTransform2, - registerLoading: registerLoading2, - registerMap: registerMap3, - registerImpl: registerImpl2, - PRIORITY: PRIORITY2, - ComponentModel: ComponentModel2, - ComponentView: ComponentView2, - SeriesModel: SeriesModel2, - ChartView: ChartView2, - // TODO Use ComponentModel and SeriesModel instead of Constructor - registerComponentModel: function(ComponentModelClass) { - ComponentModel2.registerClass(ComponentModelClass); - }, - registerComponentView: function(ComponentViewClass) { - ComponentView2.registerClass(ComponentViewClass); - }, - registerSeriesModel: function(SeriesModelClass) { - SeriesModel2.registerClass(SeriesModelClass); - }, - registerChartView: function(ChartViewClass) { - ChartView2.registerClass(ChartViewClass); - }, - registerSubTypeDefaulter: function(componentType, defaulter) { - ComponentModel2.registerSubTypeDefaulter(componentType, defaulter); - }, - registerPainter: function(painterType, PainterCtor) { - registerPainter2(painterType, PainterCtor); - } - }; - function use2(ext) { - if (isArray3(ext)) { - each17(ext, function(singleExt) { - use2(singleExt); - }); - return; - } - if (indexOf2(extensions2, ext) >= 0) { - return; - } - extensions2.push(ext); - if (isFunction2(ext)) { - ext = { - install: ext - }; - } - ext.install(extensionRegisters2); - } - function dataIndexMapValueLength2(valNumOrArrLengthMoreThan2) { - return valNumOrArrLengthMoreThan2 == null ? 0 : valNumOrArrLengthMoreThan2.length || 1; - } - function defaultKeyGetter2(item) { - return item; - } - var DataDiffer2 = ( - /** @class */ - function() { - function DataDiffer3(oldArr, newArr, oldKeyGetter, newKeyGetter, context, diffMode) { - this._old = oldArr; - this._new = newArr; - this._oldKeyGetter = oldKeyGetter || defaultKeyGetter2; - this._newKeyGetter = newKeyGetter || defaultKeyGetter2; - this.context = context; - this._diffModeMultiple = diffMode === "multiple"; - } - DataDiffer3.prototype.add = function(func) { - this._add = func; - return this; - }; - DataDiffer3.prototype.update = function(func) { - this._update = func; - return this; - }; - DataDiffer3.prototype.updateManyToOne = function(func) { - this._updateManyToOne = func; - return this; - }; - DataDiffer3.prototype.updateOneToMany = function(func) { - this._updateOneToMany = func; - return this; - }; - DataDiffer3.prototype.updateManyToMany = function(func) { - this._updateManyToMany = func; - return this; - }; - DataDiffer3.prototype.remove = function(func) { - this._remove = func; - return this; - }; - DataDiffer3.prototype.execute = function() { - this[this._diffModeMultiple ? "_executeMultiple" : "_executeOneToOne"](); - }; - DataDiffer3.prototype._executeOneToOne = function() { - var oldArr = this._old; - var newArr = this._new; - var newDataIndexMap = {}; - var oldDataKeyArr = new Array(oldArr.length); - var newDataKeyArr = new Array(newArr.length); - this._initIndexMap(oldArr, null, oldDataKeyArr, "_oldKeyGetter"); - this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, "_newKeyGetter"); - for (var i2 = 0; i2 < oldArr.length; i2++) { - var oldKey = oldDataKeyArr[i2]; - var newIdxMapVal = newDataIndexMap[oldKey]; - var newIdxMapValLen = dataIndexMapValueLength2(newIdxMapVal); - if (newIdxMapValLen > 1) { - var newIdx = newIdxMapVal.shift(); - if (newIdxMapVal.length === 1) { - newDataIndexMap[oldKey] = newIdxMapVal[0]; - } - this._update && this._update(newIdx, i2); - } else if (newIdxMapValLen === 1) { - newDataIndexMap[oldKey] = null; - this._update && this._update(newIdxMapVal, i2); - } else { - this._remove && this._remove(i2); - } - } - this._performRestAdd(newDataKeyArr, newDataIndexMap); - }; - DataDiffer3.prototype._executeMultiple = function() { - var oldArr = this._old; - var newArr = this._new; - var oldDataIndexMap = {}; - var newDataIndexMap = {}; - var oldDataKeyArr = []; - var newDataKeyArr = []; - this._initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, "_oldKeyGetter"); - this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, "_newKeyGetter"); - for (var i2 = 0; i2 < oldDataKeyArr.length; i2++) { - var oldKey = oldDataKeyArr[i2]; - var oldIdxMapVal = oldDataIndexMap[oldKey]; - var newIdxMapVal = newDataIndexMap[oldKey]; - var oldIdxMapValLen = dataIndexMapValueLength2(oldIdxMapVal); - var newIdxMapValLen = dataIndexMapValueLength2(newIdxMapVal); - if (oldIdxMapValLen > 1 && newIdxMapValLen === 1) { - this._updateManyToOne && this._updateManyToOne(newIdxMapVal, oldIdxMapVal); - newDataIndexMap[oldKey] = null; - } else if (oldIdxMapValLen === 1 && newIdxMapValLen > 1) { - this._updateOneToMany && this._updateOneToMany(newIdxMapVal, oldIdxMapVal); - newDataIndexMap[oldKey] = null; - } else if (oldIdxMapValLen === 1 && newIdxMapValLen === 1) { - this._update && this._update(newIdxMapVal, oldIdxMapVal); - newDataIndexMap[oldKey] = null; - } else if (oldIdxMapValLen > 1 && newIdxMapValLen > 1) { - this._updateManyToMany && this._updateManyToMany(newIdxMapVal, oldIdxMapVal); - newDataIndexMap[oldKey] = null; - } else if (oldIdxMapValLen > 1) { - for (var i_1 = 0; i_1 < oldIdxMapValLen; i_1++) { - this._remove && this._remove(oldIdxMapVal[i_1]); - } - } else { - this._remove && this._remove(oldIdxMapVal); - } - } - this._performRestAdd(newDataKeyArr, newDataIndexMap); - }; - DataDiffer3.prototype._performRestAdd = function(newDataKeyArr, newDataIndexMap) { - for (var i2 = 0; i2 < newDataKeyArr.length; i2++) { - var newKey = newDataKeyArr[i2]; - var newIdxMapVal = newDataIndexMap[newKey]; - var idxMapValLen = dataIndexMapValueLength2(newIdxMapVal); - if (idxMapValLen > 1) { - for (var j = 0; j < idxMapValLen; j++) { - this._add && this._add(newIdxMapVal[j]); - } - } else if (idxMapValLen === 1) { - this._add && this._add(newIdxMapVal); - } - newDataIndexMap[newKey] = null; - } - }; - DataDiffer3.prototype._initIndexMap = function(arr, map4, keyArr, keyGetterName) { - var cbModeMultiple = this._diffModeMultiple; - for (var i2 = 0; i2 < arr.length; i2++) { - var key = "_ec_" + this[keyGetterName](arr[i2], i2); - if (!cbModeMultiple) { - keyArr[i2] = key; - } - if (!map4) { - continue; - } - var idxMapVal = map4[key]; - var idxMapValLen = dataIndexMapValueLength2(idxMapVal); - if (idxMapValLen === 0) { - map4[key] = i2; - if (cbModeMultiple) { - keyArr.push(key); - } - } else if (idxMapValLen === 1) { - map4[key] = [idxMapVal, i2]; - } else { - idxMapVal.push(i2); - } - } - }; - return DataDiffer3; - }() - ); - var DimensionUserOuput2 = ( - /** @class */ - function() { - function DimensionUserOuput3(encode, dimRequest) { - this._encode = encode; - this._schema = dimRequest; - } - DimensionUserOuput3.prototype.get = function() { - return { - // Do not generate full dimension name until fist used. - fullDimensions: this._getFullDimensionNames(), - encode: this._encode - }; - }; - DimensionUserOuput3.prototype._getFullDimensionNames = function() { - if (!this._cachedDimNames) { - this._cachedDimNames = this._schema ? this._schema.makeOutputDimensionNames() : []; - } - return this._cachedDimNames; - }; - return DimensionUserOuput3; - }() - ); - function summarizeDimensions2(data, schema) { - var summary = {}; - var encode = summary.encode = {}; - var notExtraCoordDimMap = createHashMap2(); - var defaultedLabel = []; - var defaultedTooltip = []; - var userOutputEncode = {}; - each17(data.dimensions, function(dimName) { - var dimItem = data.getDimensionInfo(dimName); - var coordDim = dimItem.coordDim; - if (coordDim) { - if (true) { - assert2(VISUAL_DIMENSIONS2.get(coordDim) == null); - } - var coordDimIndex = dimItem.coordDimIndex; - getOrCreateEncodeArr2(encode, coordDim)[coordDimIndex] = dimName; - if (!dimItem.isExtraCoord) { - notExtraCoordDimMap.set(coordDim, 1); - if (mayLabelDimType2(dimItem.type)) { - defaultedLabel[0] = dimName; - } - getOrCreateEncodeArr2(userOutputEncode, coordDim)[coordDimIndex] = data.getDimensionIndex(dimItem.name); - } - if (dimItem.defaultTooltip) { - defaultedTooltip.push(dimName); - } - } - VISUAL_DIMENSIONS2.each(function(v, otherDim) { - var encodeArr = getOrCreateEncodeArr2(encode, otherDim); - var dimIndex = dimItem.otherDims[otherDim]; - if (dimIndex != null && dimIndex !== false) { - encodeArr[dimIndex] = dimItem.name; - } - }); - }); - var dataDimsOnCoord = []; - var encodeFirstDimNotExtra = {}; - notExtraCoordDimMap.each(function(v, coordDim) { - var dimArr = encode[coordDim]; - encodeFirstDimNotExtra[coordDim] = dimArr[0]; - dataDimsOnCoord = dataDimsOnCoord.concat(dimArr); - }); - summary.dataDimsOnCoord = dataDimsOnCoord; - summary.dataDimIndicesOnCoord = map3(dataDimsOnCoord, function(dimName) { - return data.getDimensionInfo(dimName).storeDimIndex; - }); - summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra; - var encodeLabel = encode.label; - if (encodeLabel && encodeLabel.length) { - defaultedLabel = encodeLabel.slice(); - } - var encodeTooltip = encode.tooltip; - if (encodeTooltip && encodeTooltip.length) { - defaultedTooltip = encodeTooltip.slice(); - } else if (!defaultedTooltip.length) { - defaultedTooltip = defaultedLabel.slice(); - } - encode.defaultedLabel = defaultedLabel; - encode.defaultedTooltip = defaultedTooltip; - summary.userOutput = new DimensionUserOuput2(userOutputEncode, schema); - return summary; - } - function getOrCreateEncodeArr2(encode, dim) { - if (!encode.hasOwnProperty(dim)) { - encode[dim] = []; - } - return encode[dim]; - } - function getDimensionTypeByAxis2(axisType) { - return axisType === "category" ? "ordinal" : axisType === "time" ? "time" : "float"; - } - function mayLabelDimType2(dimType) { - return !(dimType === "ordinal" || dimType === "time"); - } - var SeriesDimensionDefine2 = ( - /** @class */ - /* @__PURE__ */ function() { - function SeriesDimensionDefine3(opt) { - this.otherDims = {}; - if (opt != null) { - extend3(this, opt); - } - } - return SeriesDimensionDefine3; - }() - ); - var inner$4 = makeInner2(); - var dimTypeShort2 = { - float: "f", - int: "i", - ordinal: "o", - number: "n", - time: "t" - }; - var SeriesDataSchema2 = ( - /** @class */ - function() { - function SeriesDataSchema3(opt) { - this.dimensions = opt.dimensions; - this._dimOmitted = opt.dimensionOmitted; - this.source = opt.source; - this._fullDimCount = opt.fullDimensionCount; - this._updateDimOmitted(opt.dimensionOmitted); - } - SeriesDataSchema3.prototype.isDimensionOmitted = function() { - return this._dimOmitted; - }; - SeriesDataSchema3.prototype._updateDimOmitted = function(dimensionOmitted) { - this._dimOmitted = dimensionOmitted; - if (!dimensionOmitted) { - return; - } - if (!this._dimNameMap) { - this._dimNameMap = ensureSourceDimNameMap2(this.source); - } - }; - SeriesDataSchema3.prototype.getSourceDimensionIndex = function(dimName) { - return retrieve22(this._dimNameMap.get(dimName), -1); - }; - SeriesDataSchema3.prototype.getSourceDimension = function(dimIndex) { - var dimensionsDefine = this.source.dimensionsDefine; - if (dimensionsDefine) { - return dimensionsDefine[dimIndex]; - } - }; - SeriesDataSchema3.prototype.makeStoreSchema = function() { - var dimCount = this._fullDimCount; - var willRetrieveDataByName = shouldRetrieveDataByName2(this.source); - var makeHashStrict = !shouldOmitUnusedDimensions2(dimCount); - var dimHash = ""; - var dims = []; - for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < dimCount; fullDimIdx++) { - var property = void 0; - var type = void 0; - var ordinalMeta = void 0; - var seriesDimDef = this.dimensions[seriesDimIdx]; - if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) { - property = willRetrieveDataByName ? seriesDimDef.name : null; - type = seriesDimDef.type; - ordinalMeta = seriesDimDef.ordinalMeta; - seriesDimIdx++; - } else { - var sourceDimDef = this.getSourceDimension(fullDimIdx); - if (sourceDimDef) { - property = willRetrieveDataByName ? sourceDimDef.name : null; - type = sourceDimDef.type; - } - } - dims.push({ - property, - type, - ordinalMeta - }); - if (willRetrieveDataByName && property != null && (!seriesDimDef || !seriesDimDef.isCalculationCoord)) { - dimHash += makeHashStrict ? property.replace(/\`/g, "`1").replace(/\$/g, "`2") : property; - } - dimHash += "$"; - dimHash += dimTypeShort2[type] || "f"; - if (ordinalMeta) { - dimHash += ordinalMeta.uid; - } - dimHash += "$"; - } - var source = this.source; - var hash = [source.seriesLayoutBy, source.startIndex, dimHash].join("$$"); - return { - dimensions: dims, - hash - }; - }; - SeriesDataSchema3.prototype.makeOutputDimensionNames = function() { - var result = []; - for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < this._fullDimCount; fullDimIdx++) { - var name_1 = void 0; - var seriesDimDef = this.dimensions[seriesDimIdx]; - if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) { - if (!seriesDimDef.isCalculationCoord) { - name_1 = seriesDimDef.name; - } - seriesDimIdx++; - } else { - var sourceDimDef = this.getSourceDimension(fullDimIdx); - if (sourceDimDef) { - name_1 = sourceDimDef.name; - } - } - result.push(name_1); - } - return result; - }; - SeriesDataSchema3.prototype.appendCalculationDimension = function(dimDef) { - this.dimensions.push(dimDef); - dimDef.isCalculationCoord = true; - this._fullDimCount++; - this._updateDimOmitted(true); - }; - return SeriesDataSchema3; - }() - ); - function isSeriesDataSchema2(schema) { - return schema instanceof SeriesDataSchema2; - } - function createDimNameMap2(dimsDef) { - var dataDimNameMap = createHashMap2(); - for (var i2 = 0; i2 < (dimsDef || []).length; i2++) { - var dimDefItemRaw = dimsDef[i2]; - var userDimName = isObject5(dimDefItemRaw) ? dimDefItemRaw.name : dimDefItemRaw; - if (userDimName != null && dataDimNameMap.get(userDimName) == null) { - dataDimNameMap.set(userDimName, i2); - } - } - return dataDimNameMap; - } - function ensureSourceDimNameMap2(source) { - var innerSource = inner$4(source); - return innerSource.dimNameMap || (innerSource.dimNameMap = createDimNameMap2(source.dimensionsDefine)); - } - function shouldOmitUnusedDimensions2(dimCount) { - return dimCount > 30; - } - var isObject$2 = isObject5; - var map$1 = map3; - var CtorInt32Array$1 = typeof Int32Array === "undefined" ? Array : Int32Array; - var ID_PREFIX2 = "e\0\0"; - var INDEX_NOT_FOUND2 = -1; - var TRANSFERABLE_PROPERTIES2 = ["hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_dimSummary", "userOutput", "_rawData", "_dimValueGetter", "_nameDimIdx", "_idDimIdx", "_nameRepeatCount"]; - var CLONE_PROPERTIES2 = ["_approximateExtent"]; - var prepareInvertedIndex2; - var getId2; - var getIdNameFromStore2; - var normalizeDimensions2; - var transferProperties2; - var cloneListForMapAndSample2; - var makeIdFromName2; - var SeriesData2 = ( - /** @class */ - function() { - function SeriesData3(dimensionsInput, hostModel) { - this.type = "list"; - this._dimOmitted = false; - this._nameList = []; - this._idList = []; - this._visual = {}; - this._layout = {}; - this._itemVisuals = []; - this._itemLayouts = []; - this._graphicEls = []; - this._approximateExtent = {}; - this._calculationInfo = {}; - this.hasItemOption = false; - this.TRANSFERABLE_METHODS = ["cloneShallow", "downSample", "minmaxDownSample", "lttbDownSample", "map"]; - this.CHANGABLE_METHODS = ["filterSelf", "selectRange"]; - this.DOWNSAMPLE_METHODS = ["downSample", "minmaxDownSample", "lttbDownSample"]; - var dimensions; - var assignStoreDimIdx = false; - if (isSeriesDataSchema2(dimensionsInput)) { - dimensions = dimensionsInput.dimensions; - this._dimOmitted = dimensionsInput.isDimensionOmitted(); - this._schema = dimensionsInput; - } else { - assignStoreDimIdx = true; - dimensions = dimensionsInput; - } - dimensions = dimensions || ["x", "y"]; - var dimensionInfos = {}; - var dimensionNames = []; - var invertedIndicesMap = {}; - var needsHasOwn = false; - var emptyObj = {}; - for (var i2 = 0; i2 < dimensions.length; i2++) { - var dimInfoInput = dimensions[i2]; - var dimensionInfo = isString2(dimInfoInput) ? new SeriesDimensionDefine2({ - name: dimInfoInput - }) : !(dimInfoInput instanceof SeriesDimensionDefine2) ? new SeriesDimensionDefine2(dimInfoInput) : dimInfoInput; - var dimensionName = dimensionInfo.name; - dimensionInfo.type = dimensionInfo.type || "float"; - if (!dimensionInfo.coordDim) { - dimensionInfo.coordDim = dimensionName; - dimensionInfo.coordDimIndex = 0; - } - var otherDims = dimensionInfo.otherDims = dimensionInfo.otherDims || {}; - dimensionNames.push(dimensionName); - dimensionInfos[dimensionName] = dimensionInfo; - if (emptyObj[dimensionName] != null) { - needsHasOwn = true; - } - if (dimensionInfo.createInvertedIndices) { - invertedIndicesMap[dimensionName] = []; - } - if (otherDims.itemName === 0) { - this._nameDimIdx = i2; - } - if (otherDims.itemId === 0) { - this._idDimIdx = i2; - } - if (true) { - assert2(assignStoreDimIdx || dimensionInfo.storeDimIndex >= 0); - } - if (assignStoreDimIdx) { - dimensionInfo.storeDimIndex = i2; - } - } - this.dimensions = dimensionNames; - this._dimInfos = dimensionInfos; - this._initGetDimensionInfo(needsHasOwn); - this.hostModel = hostModel; - this._invertedIndicesMap = invertedIndicesMap; - if (this._dimOmitted) { - var dimIdxToName_1 = this._dimIdxToName = createHashMap2(); - each17(dimensionNames, function(dimName) { - dimIdxToName_1.set(dimensionInfos[dimName].storeDimIndex, dimName); - }); - } - } - SeriesData3.prototype.getDimension = function(dim) { - var dimIdx = this._recognizeDimIndex(dim); - if (dimIdx == null) { - return dim; - } - dimIdx = dim; - if (!this._dimOmitted) { - return this.dimensions[dimIdx]; - } - var dimName = this._dimIdxToName.get(dimIdx); - if (dimName != null) { - return dimName; - } - var sourceDimDef = this._schema.getSourceDimension(dimIdx); - if (sourceDimDef) { - return sourceDimDef.name; - } - }; - SeriesData3.prototype.getDimensionIndex = function(dim) { - var dimIdx = this._recognizeDimIndex(dim); - if (dimIdx != null) { - return dimIdx; - } - if (dim == null) { - return -1; - } - var dimInfo = this._getDimInfo(dim); - return dimInfo ? dimInfo.storeDimIndex : this._dimOmitted ? this._schema.getSourceDimensionIndex(dim) : -1; - }; - SeriesData3.prototype._recognizeDimIndex = function(dim) { - if (isNumber2(dim) || dim != null && !isNaN(dim) && !this._getDimInfo(dim) && (!this._dimOmitted || this._schema.getSourceDimensionIndex(dim) < 0)) { - return +dim; - } - }; - SeriesData3.prototype._getStoreDimIndex = function(dim) { - var dimIdx = this.getDimensionIndex(dim); - if (true) { - if (dimIdx == null) { - throw new Error("Unknown dimension " + dim); - } - } - return dimIdx; - }; - SeriesData3.prototype.getDimensionInfo = function(dim) { - return this._getDimInfo(this.getDimension(dim)); - }; - SeriesData3.prototype._initGetDimensionInfo = function(needsHasOwn) { - var dimensionInfos = this._dimInfos; - this._getDimInfo = needsHasOwn ? function(dimName) { - return dimensionInfos.hasOwnProperty(dimName) ? dimensionInfos[dimName] : void 0; - } : function(dimName) { - return dimensionInfos[dimName]; - }; - }; - SeriesData3.prototype.getDimensionsOnCoord = function() { - return this._dimSummary.dataDimsOnCoord.slice(); - }; - SeriesData3.prototype.mapDimension = function(coordDim, idx) { - var dimensionsSummary = this._dimSummary; - if (idx == null) { - return dimensionsSummary.encodeFirstDimNotExtra[coordDim]; - } - var dims = dimensionsSummary.encode[coordDim]; - return dims ? dims[idx] : null; - }; - SeriesData3.prototype.mapDimensionsAll = function(coordDim) { - var dimensionsSummary = this._dimSummary; - var dims = dimensionsSummary.encode[coordDim]; - return (dims || []).slice(); - }; - SeriesData3.prototype.getStore = function() { - return this._store; - }; - SeriesData3.prototype.initData = function(data, nameList, dimValueGetter) { - var _this = this; - var store; - if (data instanceof DataStore2) { - store = data; - } - if (!store) { - var dimensions = this.dimensions; - var provider = isSourceInstance2(data) || isArrayLike2(data) ? new DefaultDataProvider2(data, dimensions.length) : data; - store = new DataStore2(); - var dimensionInfos = map$1(dimensions, function(dimName) { - return { - type: _this._dimInfos[dimName].type, - property: dimName - }; - }); - store.initData(provider, dimensionInfos, dimValueGetter); - } - this._store = store; - this._nameList = (nameList || []).slice(); - this._idList = []; - this._nameRepeatCount = {}; - this._doInit(0, store.count()); - this._dimSummary = summarizeDimensions2(this, this._schema); - this.userOutput = this._dimSummary.userOutput; - }; - SeriesData3.prototype.appendData = function(data) { - var range = this._store.appendData(data); - this._doInit(range[0], range[1]); - }; - SeriesData3.prototype.appendValues = function(values, names) { - var _a3 = this._store.appendValues(values, names && names.length), start4 = _a3.start, end3 = _a3.end; - var shouldMakeIdFromName = this._shouldMakeIdFromName(); - this._updateOrdinalMeta(); - if (names) { - for (var idx = start4; idx < end3; idx++) { - var sourceIdx = idx - start4; - this._nameList[idx] = names[sourceIdx]; - if (shouldMakeIdFromName) { - makeIdFromName2(this, idx); - } - } - } - }; - SeriesData3.prototype._updateOrdinalMeta = function() { - var store = this._store; - var dimensions = this.dimensions; - for (var i2 = 0; i2 < dimensions.length; i2++) { - var dimInfo = this._dimInfos[dimensions[i2]]; - if (dimInfo.ordinalMeta) { - store.collectOrdinalMeta(dimInfo.storeDimIndex, dimInfo.ordinalMeta); - } - } - }; - SeriesData3.prototype._shouldMakeIdFromName = function() { - var provider = this._store.getProvider(); - return this._idDimIdx == null && provider.getSource().sourceFormat !== SOURCE_FORMAT_TYPED_ARRAY2 && !provider.fillStorage; - }; - SeriesData3.prototype._doInit = function(start4, end3) { - if (start4 >= end3) { - return; - } - var store = this._store; - var provider = store.getProvider(); - this._updateOrdinalMeta(); - var nameList = this._nameList; - var idList = this._idList; - var sourceFormat = provider.getSource().sourceFormat; - var isFormatOriginal = sourceFormat === SOURCE_FORMAT_ORIGINAL2; - if (isFormatOriginal && !provider.pure) { - var sharedDataItem = []; - for (var idx = start4; idx < end3; idx++) { - var dataItem = provider.getItem(idx, sharedDataItem); - if (!this.hasItemOption && isDataItemOption2(dataItem)) { - this.hasItemOption = true; - } - if (dataItem) { - var itemName = dataItem.name; - if (nameList[idx] == null && itemName != null) { - nameList[idx] = convertOptionIdName2(itemName, null); - } - var itemId = dataItem.id; - if (idList[idx] == null && itemId != null) { - idList[idx] = convertOptionIdName2(itemId, null); - } - } - } - } - if (this._shouldMakeIdFromName()) { - for (var idx = start4; idx < end3; idx++) { - makeIdFromName2(this, idx); - } - } - prepareInvertedIndex2(this); - }; - SeriesData3.prototype.getApproximateExtent = function(dim) { - return this._approximateExtent[dim] || this._store.getDataExtent(this._getStoreDimIndex(dim)); - }; - SeriesData3.prototype.setApproximateExtent = function(extent4, dim) { - dim = this.getDimension(dim); - this._approximateExtent[dim] = extent4.slice(); - }; - SeriesData3.prototype.getCalculationInfo = function(key) { - return this._calculationInfo[key]; - }; - SeriesData3.prototype.setCalculationInfo = function(key, value) { - isObject$2(key) ? extend3(this._calculationInfo, key) : this._calculationInfo[key] = value; - }; - SeriesData3.prototype.getName = function(idx) { - var rawIndex = this.getRawIndex(idx); - var name = this._nameList[rawIndex]; - if (name == null && this._nameDimIdx != null) { - name = getIdNameFromStore2(this, this._nameDimIdx, rawIndex); - } - if (name == null) { - name = ""; - } - return name; - }; - SeriesData3.prototype._getCategory = function(dimIdx, idx) { - var ordinal = this._store.get(dimIdx, idx); - var ordinalMeta = this._store.getOrdinalMeta(dimIdx); - if (ordinalMeta) { - return ordinalMeta.categories[ordinal]; - } - return ordinal; - }; - SeriesData3.prototype.getId = function(idx) { - return getId2(this, this.getRawIndex(idx)); - }; - SeriesData3.prototype.count = function() { - return this._store.count(); - }; - SeriesData3.prototype.get = function(dim, idx) { - var store = this._store; - var dimInfo = this._dimInfos[dim]; - if (dimInfo) { - return store.get(dimInfo.storeDimIndex, idx); - } - }; - SeriesData3.prototype.getByRawIndex = function(dim, rawIdx) { - var store = this._store; - var dimInfo = this._dimInfos[dim]; - if (dimInfo) { - return store.getByRawIndex(dimInfo.storeDimIndex, rawIdx); - } - }; - SeriesData3.prototype.getIndices = function() { - return this._store.getIndices(); - }; - SeriesData3.prototype.getDataExtent = function(dim) { - return this._store.getDataExtent(this._getStoreDimIndex(dim)); - }; - SeriesData3.prototype.getSum = function(dim) { - return this._store.getSum(this._getStoreDimIndex(dim)); - }; - SeriesData3.prototype.getMedian = function(dim) { - return this._store.getMedian(this._getStoreDimIndex(dim)); - }; - SeriesData3.prototype.getValues = function(dimensions, idx) { - var _this = this; - var store = this._store; - return isArray3(dimensions) ? store.getValues(map$1(dimensions, function(dim) { - return _this._getStoreDimIndex(dim); - }), idx) : store.getValues(dimensions); - }; - SeriesData3.prototype.hasValue = function(idx) { - var dataDimIndicesOnCoord = this._dimSummary.dataDimIndicesOnCoord; - for (var i2 = 0, len3 = dataDimIndicesOnCoord.length; i2 < len3; i2++) { - if (isNaN(this._store.get(dataDimIndicesOnCoord[i2], idx))) { - return false; - } - } - return true; - }; - SeriesData3.prototype.indexOfName = function(name) { - for (var i2 = 0, len3 = this._store.count(); i2 < len3; i2++) { - if (this.getName(i2) === name) { - return i2; - } - } - return -1; - }; - SeriesData3.prototype.getRawIndex = function(idx) { - return this._store.getRawIndex(idx); - }; - SeriesData3.prototype.indexOfRawIndex = function(rawIndex) { - return this._store.indexOfRawIndex(rawIndex); - }; - SeriesData3.prototype.rawIndexOf = function(dim, value) { - var invertedIndices = dim && this._invertedIndicesMap[dim]; - if (true) { - if (!invertedIndices) { - throw new Error("Do not supported yet"); - } - } - var rawIndex = invertedIndices && invertedIndices[value]; - if (rawIndex == null || isNaN(rawIndex)) { - return INDEX_NOT_FOUND2; - } - return rawIndex; - }; - SeriesData3.prototype.indicesOfNearest = function(dim, value, maxDistance) { - return this._store.indicesOfNearest(this._getStoreDimIndex(dim), value, maxDistance); - }; - SeriesData3.prototype.each = function(dims, cb, ctx) { - if (isFunction2(dims)) { - ctx = cb; - cb = dims; - dims = []; - } - var fCtx = ctx || this; - var dimIndices = map$1(normalizeDimensions2(dims), this._getStoreDimIndex, this); - this._store.each(dimIndices, fCtx ? bind3(cb, fCtx) : cb); - }; - SeriesData3.prototype.filterSelf = function(dims, cb, ctx) { - if (isFunction2(dims)) { - ctx = cb; - cb = dims; - dims = []; - } - var fCtx = ctx || this; - var dimIndices = map$1(normalizeDimensions2(dims), this._getStoreDimIndex, this); - this._store = this._store.filter(dimIndices, fCtx ? bind3(cb, fCtx) : cb); - return this; - }; - SeriesData3.prototype.selectRange = function(range) { - var _this = this; - var innerRange = {}; - var dims = keys2(range); - each17(dims, function(dim) { - var dimIdx = _this._getStoreDimIndex(dim); - innerRange[dimIdx] = range[dim]; - }); - this._store = this._store.selectRange(innerRange); - return this; - }; - SeriesData3.prototype.mapArray = function(dims, cb, ctx) { - if (isFunction2(dims)) { - ctx = cb; - cb = dims; - dims = []; - } - ctx = ctx || this; - var result = []; - this.each(dims, function() { - result.push(cb && cb.apply(this, arguments)); - }, ctx); - return result; - }; - SeriesData3.prototype.map = function(dims, cb, ctx, ctxCompat) { - var fCtx = ctx || ctxCompat || this; - var dimIndices = map$1(normalizeDimensions2(dims), this._getStoreDimIndex, this); - var list = cloneListForMapAndSample2(this); - list._store = this._store.map(dimIndices, fCtx ? bind3(cb, fCtx) : cb); - return list; - }; - SeriesData3.prototype.modify = function(dims, cb, ctx, ctxCompat) { - var _this = this; - var fCtx = ctx || ctxCompat || this; - if (true) { - each17(normalizeDimensions2(dims), function(dim) { - var dimInfo = _this.getDimensionInfo(dim); - if (!dimInfo.isCalculationCoord) { - console.error("Danger: only stack dimension can be modified"); - } - }); - } - var dimIndices = map$1(normalizeDimensions2(dims), this._getStoreDimIndex, this); - this._store.modify(dimIndices, fCtx ? bind3(cb, fCtx) : cb); - }; - SeriesData3.prototype.downSample = function(dimension, rate, sampleValue, sampleIndex) { - var list = cloneListForMapAndSample2(this); - list._store = this._store.downSample(this._getStoreDimIndex(dimension), rate, sampleValue, sampleIndex); - return list; - }; - SeriesData3.prototype.minmaxDownSample = function(valueDimension, rate) { - var list = cloneListForMapAndSample2(this); - list._store = this._store.minmaxDownSample(this._getStoreDimIndex(valueDimension), rate); - return list; - }; - SeriesData3.prototype.lttbDownSample = function(valueDimension, rate) { - var list = cloneListForMapAndSample2(this); - list._store = this._store.lttbDownSample(this._getStoreDimIndex(valueDimension), rate); - return list; - }; - SeriesData3.prototype.getRawDataItem = function(idx) { - return this._store.getRawDataItem(idx); - }; - SeriesData3.prototype.getItemModel = function(idx) { - var hostModel = this.hostModel; - var dataItem = this.getRawDataItem(idx); - return new Model2(dataItem, hostModel, hostModel && hostModel.ecModel); - }; - SeriesData3.prototype.diff = function(otherList) { - var thisList = this; - return new DataDiffer2(otherList ? otherList.getStore().getIndices() : [], this.getStore().getIndices(), function(idx) { - return getId2(otherList, idx); - }, function(idx) { - return getId2(thisList, idx); - }); - }; - SeriesData3.prototype.getVisual = function(key) { - var visual = this._visual; - return visual && visual[key]; - }; - SeriesData3.prototype.setVisual = function(kvObj, val) { - this._visual = this._visual || {}; - if (isObject$2(kvObj)) { - extend3(this._visual, kvObj); - } else { - this._visual[kvObj] = val; - } - }; - SeriesData3.prototype.getItemVisual = function(idx, key) { - var itemVisual = this._itemVisuals[idx]; - var val = itemVisual && itemVisual[key]; - if (val == null) { - return this.getVisual(key); - } - return val; - }; - SeriesData3.prototype.hasItemVisual = function() { - return this._itemVisuals.length > 0; - }; - SeriesData3.prototype.ensureUniqueItemVisual = function(idx, key) { - var itemVisuals = this._itemVisuals; - var itemVisual = itemVisuals[idx]; - if (!itemVisual) { - itemVisual = itemVisuals[idx] = {}; - } - var val = itemVisual[key]; - if (val == null) { - val = this.getVisual(key); - if (isArray3(val)) { - val = val.slice(); - } else if (isObject$2(val)) { - val = extend3({}, val); - } - itemVisual[key] = val; - } - return val; - }; - SeriesData3.prototype.setItemVisual = function(idx, key, value) { - var itemVisual = this._itemVisuals[idx] || {}; - this._itemVisuals[idx] = itemVisual; - if (isObject$2(key)) { - extend3(itemVisual, key); - } else { - itemVisual[key] = value; - } - }; - SeriesData3.prototype.clearAllVisual = function() { - this._visual = {}; - this._itemVisuals = []; - }; - SeriesData3.prototype.setLayout = function(key, val) { - isObject$2(key) ? extend3(this._layout, key) : this._layout[key] = val; - }; - SeriesData3.prototype.getLayout = function(key) { - return this._layout[key]; - }; - SeriesData3.prototype.getItemLayout = function(idx) { - return this._itemLayouts[idx]; - }; - SeriesData3.prototype.setItemLayout = function(idx, layout6, merge3) { - this._itemLayouts[idx] = merge3 ? extend3(this._itemLayouts[idx] || {}, layout6) : layout6; - }; - SeriesData3.prototype.clearItemLayouts = function() { - this._itemLayouts.length = 0; - }; - SeriesData3.prototype.setItemGraphicEl = function(idx, el) { - var seriesIndex = this.hostModel && this.hostModel.seriesIndex; - setCommonECData2(seriesIndex, this.dataType, idx, el); - this._graphicEls[idx] = el; - }; - SeriesData3.prototype.getItemGraphicEl = function(idx) { - return this._graphicEls[idx]; - }; - SeriesData3.prototype.eachItemGraphicEl = function(cb, context) { - each17(this._graphicEls, function(el, idx) { - if (el) { - cb && cb.call(context, el, idx); - } - }); - }; - SeriesData3.prototype.cloneShallow = function(list) { - if (!list) { - list = new SeriesData3(this._schema ? this._schema : map$1(this.dimensions, this._getDimInfo, this), this.hostModel); - } - transferProperties2(list, this); - list._store = this._store; - return list; - }; - SeriesData3.prototype.wrapMethod = function(methodName, injectFunction) { - var originalMethod = this[methodName]; - if (!isFunction2(originalMethod)) { - return; - } - this.__wrappedMethods = this.__wrappedMethods || []; - this.__wrappedMethods.push(methodName); - this[methodName] = function() { - var res = originalMethod.apply(this, arguments); - return injectFunction.apply(this, [res].concat(slice2(arguments))); - }; - }; - SeriesData3.internalField = function() { - prepareInvertedIndex2 = function(data) { - var invertedIndicesMap = data._invertedIndicesMap; - each17(invertedIndicesMap, function(invertedIndices, dim) { - var dimInfo = data._dimInfos[dim]; - var ordinalMeta = dimInfo.ordinalMeta; - var store = data._store; - if (ordinalMeta) { - invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array$1(ordinalMeta.categories.length); - for (var i2 = 0; i2 < invertedIndices.length; i2++) { - invertedIndices[i2] = INDEX_NOT_FOUND2; - } - for (var i2 = 0; i2 < store.count(); i2++) { - invertedIndices[store.get(dimInfo.storeDimIndex, i2)] = i2; - } - } - }); - }; - getIdNameFromStore2 = function(data, dimIdx, idx) { - return convertOptionIdName2(data._getCategory(dimIdx, idx), null); - }; - getId2 = function(data, rawIndex) { - var id = data._idList[rawIndex]; - if (id == null && data._idDimIdx != null) { - id = getIdNameFromStore2(data, data._idDimIdx, rawIndex); - } - if (id == null) { - id = ID_PREFIX2 + rawIndex; - } - return id; - }; - normalizeDimensions2 = function(dimensions) { - if (!isArray3(dimensions)) { - dimensions = dimensions != null ? [dimensions] : []; - } - return dimensions; - }; - cloneListForMapAndSample2 = function(original) { - var list = new SeriesData3(original._schema ? original._schema : map$1(original.dimensions, original._getDimInfo, original), original.hostModel); - transferProperties2(list, original); - return list; - }; - transferProperties2 = function(target, source) { - each17(TRANSFERABLE_PROPERTIES2.concat(source.__wrappedMethods || []), function(propName) { - if (source.hasOwnProperty(propName)) { - target[propName] = source[propName]; - } - }); - target.__wrappedMethods = source.__wrappedMethods; - each17(CLONE_PROPERTIES2, function(propName) { - target[propName] = clone6(source[propName]); - }); - target._calculationInfo = extend3({}, source._calculationInfo); - }; - makeIdFromName2 = function(data, idx) { - var nameList = data._nameList; - var idList = data._idList; - var nameDimIdx = data._nameDimIdx; - var idDimIdx = data._idDimIdx; - var name = nameList[idx]; - var id = idList[idx]; - if (name == null && nameDimIdx != null) { - nameList[idx] = name = getIdNameFromStore2(data, nameDimIdx, idx); - } - if (id == null && idDimIdx != null) { - idList[idx] = id = getIdNameFromStore2(data, idDimIdx, idx); - } - if (id == null && name != null) { - var nameRepeatCount = data._nameRepeatCount; - var nmCnt = nameRepeatCount[name] = (nameRepeatCount[name] || 0) + 1; - id = name; - if (nmCnt > 1) { - id += "__ec__" + nmCnt; - } - idList[idx] = id; - } - }; - }(); - return SeriesData3; - }() - ); - function createDimensions2(source, opt) { - return prepareSeriesDataSchema2(source, opt).dimensions; - } - function prepareSeriesDataSchema2(source, opt) { - if (!isSourceInstance2(source)) { - source = createSourceFromSeriesDataOption2(source); - } - opt = opt || {}; - var sysDims = opt.coordDimensions || []; - var dimsDef = opt.dimensionsDefine || source.dimensionsDefine || []; - var coordDimNameMap = createHashMap2(); - var resultList = []; - var dimCount = getDimCount2(source, sysDims, dimsDef, opt.dimensionsCount); - var omitUnusedDimensions = opt.canOmitUnusedDimensions && shouldOmitUnusedDimensions2(dimCount); - var isUsingSourceDimensionsDef = dimsDef === source.dimensionsDefine; - var dataDimNameMap = isUsingSourceDimensionsDef ? ensureSourceDimNameMap2(source) : createDimNameMap2(dimsDef); - var encodeDef = opt.encodeDefine; - if (!encodeDef && opt.encodeDefaulter) { - encodeDef = opt.encodeDefaulter(source, dimCount); - } - var encodeDefMap = createHashMap2(encodeDef); - var indicesMap = new CtorInt32Array3(dimCount); - for (var i2 = 0; i2 < indicesMap.length; i2++) { - indicesMap[i2] = -1; - } - function getResultItem(dimIdx) { - var idx = indicesMap[dimIdx]; - if (idx < 0) { - var dimDefItemRaw = dimsDef[dimIdx]; - var dimDefItem = isObject5(dimDefItemRaw) ? dimDefItemRaw : { - name: dimDefItemRaw - }; - var resultItem2 = new SeriesDimensionDefine2(); - var userDimName = dimDefItem.name; - if (userDimName != null && dataDimNameMap.get(userDimName) != null) { - resultItem2.name = resultItem2.displayName = userDimName; - } - dimDefItem.type != null && (resultItem2.type = dimDefItem.type); - dimDefItem.displayName != null && (resultItem2.displayName = dimDefItem.displayName); - var newIdx = resultList.length; - indicesMap[dimIdx] = newIdx; - resultItem2.storeDimIndex = dimIdx; - resultList.push(resultItem2); - return resultItem2; - } - return resultList[idx]; - } - if (!omitUnusedDimensions) { - for (var i2 = 0; i2 < dimCount; i2++) { - getResultItem(i2); - } - } - encodeDefMap.each(function(dataDimsRaw, coordDim2) { - var dataDims = normalizeToArray2(dataDimsRaw).slice(); - if (dataDims.length === 1 && !isString2(dataDims[0]) && dataDims[0] < 0) { - encodeDefMap.set(coordDim2, false); - return; - } - var validDataDims = encodeDefMap.set(coordDim2, []); - each17(dataDims, function(resultDimIdxOrName, idx) { - var resultDimIdx2 = isString2(resultDimIdxOrName) ? dataDimNameMap.get(resultDimIdxOrName) : resultDimIdxOrName; - if (resultDimIdx2 != null && resultDimIdx2 < dimCount) { - validDataDims[idx] = resultDimIdx2; - applyDim(getResultItem(resultDimIdx2), coordDim2, idx); - } - }); - }); - var availDimIdx = 0; - each17(sysDims, function(sysDimItemRaw) { - var coordDim2; - var sysDimItemDimsDef; - var sysDimItemOtherDims; - var sysDimItem; - if (isString2(sysDimItemRaw)) { - coordDim2 = sysDimItemRaw; - sysDimItem = {}; - } else { - sysDimItem = sysDimItemRaw; - coordDim2 = sysDimItem.name; - var ordinalMeta = sysDimItem.ordinalMeta; - sysDimItem.ordinalMeta = null; - sysDimItem = extend3({}, sysDimItem); - sysDimItem.ordinalMeta = ordinalMeta; - sysDimItemDimsDef = sysDimItem.dimsDef; - sysDimItemOtherDims = sysDimItem.otherDims; - sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null; - } - var dataDims = encodeDefMap.get(coordDim2); - if (dataDims === false) { - return; - } - dataDims = normalizeToArray2(dataDims); - if (!dataDims.length) { - for (var i3 = 0; i3 < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i3++) { - while (availDimIdx < dimCount && getResultItem(availDimIdx).coordDim != null) { - availDimIdx++; - } - availDimIdx < dimCount && dataDims.push(availDimIdx++); - } - } - each17(dataDims, function(resultDimIdx2, coordDimIndex) { - var resultItem2 = getResultItem(resultDimIdx2); - if (isUsingSourceDimensionsDef && sysDimItem.type != null) { - resultItem2.type = sysDimItem.type; - } - applyDim(defaults2(resultItem2, sysDimItem), coordDim2, coordDimIndex); - if (resultItem2.name == null && sysDimItemDimsDef) { - var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex]; - !isObject5(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = { - name: sysDimItemDimsDefItem - }); - resultItem2.name = resultItem2.displayName = sysDimItemDimsDefItem.name; - resultItem2.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip; - } - sysDimItemOtherDims && defaults2(resultItem2.otherDims, sysDimItemOtherDims); - }); - }); - function applyDim(resultItem2, coordDim2, coordDimIndex) { - if (VISUAL_DIMENSIONS2.get(coordDim2) != null) { - resultItem2.otherDims[coordDim2] = coordDimIndex; - } else { - resultItem2.coordDim = coordDim2; - resultItem2.coordDimIndex = coordDimIndex; - coordDimNameMap.set(coordDim2, true); - } - } - var generateCoord = opt.generateCoord; - var generateCoordCount = opt.generateCoordCount; - var fromZero = generateCoordCount != null; - generateCoordCount = generateCoord ? generateCoordCount || 1 : 0; - var extra = generateCoord || "value"; - function ifNoNameFillWithCoordName(resultItem2) { - if (resultItem2.name == null) { - resultItem2.name = resultItem2.coordDim; - } - } - if (!omitUnusedDimensions) { - for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) { - var resultItem = getResultItem(resultDimIdx); - var coordDim = resultItem.coordDim; - if (coordDim == null) { - resultItem.coordDim = genCoordDimName2(extra, coordDimNameMap, fromZero); - resultItem.coordDimIndex = 0; - if (!generateCoord || generateCoordCount <= 0) { - resultItem.isExtraCoord = true; - } - generateCoordCount--; - } - ifNoNameFillWithCoordName(resultItem); - if (resultItem.type == null && (guessOrdinal2(source, resultDimIdx) === BE_ORDINAL2.Must || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) { - resultItem.type = "ordinal"; - } - } - } else { - each17(resultList, function(resultItem2) { - ifNoNameFillWithCoordName(resultItem2); - }); - resultList.sort(function(item0, item1) { - return item0.storeDimIndex - item1.storeDimIndex; - }); - } - removeDuplication2(resultList); - return new SeriesDataSchema2({ - source, - dimensions: resultList, - fullDimensionCount: dimCount, - dimensionOmitted: omitUnusedDimensions - }); - } - function removeDuplication2(result) { - var duplicationMap = createHashMap2(); - for (var i2 = 0; i2 < result.length; i2++) { - var dim = result[i2]; - var dimOriginalName = dim.name; - var count3 = duplicationMap.get(dimOriginalName) || 0; - if (count3 > 0) { - dim.name = dimOriginalName + (count3 - 1); - } - count3++; - duplicationMap.set(dimOriginalName, count3); - } - } - function getDimCount2(source, sysDims, dimsDef, optDimCount) { - var dimCount = Math.max(source.dimensionsDetectedCount || 1, sysDims.length, dimsDef.length, optDimCount || 0); - each17(sysDims, function(sysDimItem) { - var sysDimItemDimsDef; - if (isObject5(sysDimItem) && (sysDimItemDimsDef = sysDimItem.dimsDef)) { - dimCount = Math.max(dimCount, sysDimItemDimsDef.length); - } - }); - return dimCount; - } - function genCoordDimName2(name, map4, fromZero) { - if (fromZero || map4.hasKey(name)) { - var i2 = 0; - while (map4.hasKey(name + i2)) { - i2++; - } - name += i2; - } - map4.set(name, true); - return name; - } - var CoordSysInfo2 = ( - /** @class */ - /* @__PURE__ */ function() { - function CoordSysInfo3(coordSysName) { - this.coordSysDims = []; - this.axisMap = createHashMap2(); - this.categoryAxisMap = createHashMap2(); - this.coordSysName = coordSysName; - } - return CoordSysInfo3; - }() - ); - function getCoordSysInfoBySeries2(seriesModel) { - var coordSysName = seriesModel.get("coordinateSystem"); - var result = new CoordSysInfo2(coordSysName); - var fetch3 = fetchers2[coordSysName]; - if (fetch3) { - fetch3(seriesModel, result, result.axisMap, result.categoryAxisMap); - return result; - } - } - var fetchers2 = { - cartesian2d: function(seriesModel, result, axisMap, categoryAxisMap) { - var xAxisModel = seriesModel.getReferringComponents("xAxis", SINGLE_REFERRING2).models[0]; - var yAxisModel = seriesModel.getReferringComponents("yAxis", SINGLE_REFERRING2).models[0]; - if (true) { - if (!xAxisModel) { - throw new Error('xAxis "' + retrieve4(seriesModel.get("xAxisIndex"), seriesModel.get("xAxisId"), 0) + '" not found'); - } - if (!yAxisModel) { - throw new Error('yAxis "' + retrieve4(seriesModel.get("xAxisIndex"), seriesModel.get("yAxisId"), 0) + '" not found'); - } - } - result.coordSysDims = ["x", "y"]; - axisMap.set("x", xAxisModel); - axisMap.set("y", yAxisModel); - if (isCategory2(xAxisModel)) { - categoryAxisMap.set("x", xAxisModel); - result.firstCategoryDimIndex = 0; - } - if (isCategory2(yAxisModel)) { - categoryAxisMap.set("y", yAxisModel); - result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1); - } - }, - singleAxis: function(seriesModel, result, axisMap, categoryAxisMap) { - var singleAxisModel = seriesModel.getReferringComponents("singleAxis", SINGLE_REFERRING2).models[0]; - if (true) { - if (!singleAxisModel) { - throw new Error("singleAxis should be specified."); - } - } - result.coordSysDims = ["single"]; - axisMap.set("single", singleAxisModel); - if (isCategory2(singleAxisModel)) { - categoryAxisMap.set("single", singleAxisModel); - result.firstCategoryDimIndex = 0; - } - }, - polar: function(seriesModel, result, axisMap, categoryAxisMap) { - var polarModel = seriesModel.getReferringComponents("polar", SINGLE_REFERRING2).models[0]; - var radiusAxisModel = polarModel.findAxisModel("radiusAxis"); - var angleAxisModel = polarModel.findAxisModel("angleAxis"); - if (true) { - if (!angleAxisModel) { - throw new Error("angleAxis option not found"); - } - if (!radiusAxisModel) { - throw new Error("radiusAxis option not found"); - } - } - result.coordSysDims = ["radius", "angle"]; - axisMap.set("radius", radiusAxisModel); - axisMap.set("angle", angleAxisModel); - if (isCategory2(radiusAxisModel)) { - categoryAxisMap.set("radius", radiusAxisModel); - result.firstCategoryDimIndex = 0; - } - if (isCategory2(angleAxisModel)) { - categoryAxisMap.set("angle", angleAxisModel); - result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1); - } - }, - geo: function(seriesModel, result, axisMap, categoryAxisMap) { - result.coordSysDims = ["lng", "lat"]; - }, - parallel: function(seriesModel, result, axisMap, categoryAxisMap) { - var ecModel = seriesModel.ecModel; - var parallelModel = ecModel.getComponent("parallel", seriesModel.get("parallelIndex")); - var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice(); - each17(parallelModel.parallelAxisIndex, function(axisIndex, index) { - var axisModel = ecModel.getComponent("parallelAxis", axisIndex); - var axisDim = coordSysDims[index]; - axisMap.set(axisDim, axisModel); - if (isCategory2(axisModel)) { - categoryAxisMap.set(axisDim, axisModel); - if (result.firstCategoryDimIndex == null) { - result.firstCategoryDimIndex = index; - } - } - }); - } - }; - function isCategory2(axisModel) { - return axisModel.get("type") === "category"; - } - function enableDataStack2(seriesModel, dimensionsInput, opt) { - opt = opt || {}; - var byIndex = opt.byIndex; - var stackedCoordDimension = opt.stackedCoordDimension; - var dimensionDefineList; - var schema; - var store; - if (isLegacyDimensionsInput2(dimensionsInput)) { - dimensionDefineList = dimensionsInput; - } else { - schema = dimensionsInput.schema; - dimensionDefineList = schema.dimensions; - store = dimensionsInput.store; - } - var mayStack = !!(seriesModel && seriesModel.get("stack")); - var stackedByDimInfo; - var stackedDimInfo; - var stackResultDimension; - var stackedOverDimension; - each17(dimensionDefineList, function(dimensionInfo, index) { - if (isString2(dimensionInfo)) { - dimensionDefineList[index] = dimensionInfo = { - name: dimensionInfo - }; - } - if (mayStack && !dimensionInfo.isExtraCoord) { - if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) { - stackedByDimInfo = dimensionInfo; - } - if (!stackedDimInfo && dimensionInfo.type !== "ordinal" && dimensionInfo.type !== "time" && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) { - stackedDimInfo = dimensionInfo; - } - } - }); - if (stackedDimInfo && !byIndex && !stackedByDimInfo) { - byIndex = true; - } - if (stackedDimInfo) { - stackResultDimension = "__\0ecstackresult_" + seriesModel.id; - stackedOverDimension = "__\0ecstackedover_" + seriesModel.id; - if (stackedByDimInfo) { - stackedByDimInfo.createInvertedIndices = true; - } - var stackedDimCoordDim_1 = stackedDimInfo.coordDim; - var stackedDimType = stackedDimInfo.type; - var stackedDimCoordIndex_1 = 0; - each17(dimensionDefineList, function(dimensionInfo) { - if (dimensionInfo.coordDim === stackedDimCoordDim_1) { - stackedDimCoordIndex_1++; - } - }); - var stackedOverDimensionDefine = { - name: stackResultDimension, - coordDim: stackedDimCoordDim_1, - coordDimIndex: stackedDimCoordIndex_1, - type: stackedDimType, - isExtraCoord: true, - isCalculationCoord: true, - storeDimIndex: dimensionDefineList.length - }; - var stackResultDimensionDefine = { - name: stackedOverDimension, - // This dimension contains stack base (generally, 0), so do not set it as - // `stackedDimCoordDim` to avoid extent calculation, consider log scale. - coordDim: stackedOverDimension, - coordDimIndex: stackedDimCoordIndex_1 + 1, - type: stackedDimType, - isExtraCoord: true, - isCalculationCoord: true, - storeDimIndex: dimensionDefineList.length + 1 - }; - if (schema) { - if (store) { - stackedOverDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackedOverDimension, stackedDimType); - stackResultDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackResultDimension, stackedDimType); - } - schema.appendCalculationDimension(stackedOverDimensionDefine); - schema.appendCalculationDimension(stackResultDimensionDefine); - } else { - dimensionDefineList.push(stackedOverDimensionDefine); - dimensionDefineList.push(stackResultDimensionDefine); - } - } - return { - stackedDimension: stackedDimInfo && stackedDimInfo.name, - stackedByDimension: stackedByDimInfo && stackedByDimInfo.name, - isStackedByIndex: byIndex, - stackedOverDimension, - stackResultDimension - }; - } - function isLegacyDimensionsInput2(dimensionsInput) { - return !isSeriesDataSchema2(dimensionsInput.schema); - } - function isDimensionStacked2(data, stackedDim) { - return !!stackedDim && stackedDim === data.getCalculationInfo("stackedDimension"); - } - function getStackedDimension2(data, targetDim) { - return isDimensionStacked2(data, targetDim) ? data.getCalculationInfo("stackResultDimension") : targetDim; - } - function getCoordSysDimDefs2(seriesModel, coordSysInfo) { - var coordSysName = seriesModel.get("coordinateSystem"); - var registeredCoordSys = CoordinateSystemManager2.get(coordSysName); - var coordSysDimDefs; - if (coordSysInfo && coordSysInfo.coordSysDims) { - coordSysDimDefs = map3(coordSysInfo.coordSysDims, function(dim) { - var dimInfo = { - name: dim - }; - var axisModel = coordSysInfo.axisMap.get(dim); - if (axisModel) { - var axisType = axisModel.get("type"); - dimInfo.type = getDimensionTypeByAxis2(axisType); - } - return dimInfo; - }); - } - if (!coordSysDimDefs) { - coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ["x", "y"]; - } - return coordSysDimDefs; - } - function injectOrdinalMeta2(dimInfoList, createInvertedIndices, coordSysInfo) { - var firstCategoryDimIndex; - var hasNameEncode; - coordSysInfo && each17(dimInfoList, function(dimInfo, dimIndex) { - var coordDim = dimInfo.coordDim; - var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim); - if (categoryAxisModel) { - if (firstCategoryDimIndex == null) { - firstCategoryDimIndex = dimIndex; - } - dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta(); - if (createInvertedIndices) { - dimInfo.createInvertedIndices = true; - } - } - if (dimInfo.otherDims.itemName != null) { - hasNameEncode = true; - } - }); - if (!hasNameEncode && firstCategoryDimIndex != null) { - dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0; - } - return firstCategoryDimIndex; - } - function createSeriesData2(sourceRaw, seriesModel, opt) { - opt = opt || {}; - var sourceManager = seriesModel.getSourceManager(); - var source; - var isOriginalSource = false; - if (sourceRaw) { - isOriginalSource = true; - source = createSourceFromSeriesDataOption2(sourceRaw); - } else { - source = sourceManager.getSource(); - isOriginalSource = source.sourceFormat === SOURCE_FORMAT_ORIGINAL2; - } - var coordSysInfo = getCoordSysInfoBySeries2(seriesModel); - var coordSysDimDefs = getCoordSysDimDefs2(seriesModel, coordSysInfo); - var useEncodeDefaulter = opt.useEncodeDefaulter; - var encodeDefaulter = isFunction2(useEncodeDefaulter) ? useEncodeDefaulter : useEncodeDefaulter ? curry3(makeSeriesEncodeForAxisCoordSys2, coordSysDimDefs, seriesModel) : null; - var createDimensionOptions = { - coordDimensions: coordSysDimDefs, - generateCoord: opt.generateCoord, - encodeDefine: seriesModel.getEncode(), - encodeDefaulter, - canOmitUnusedDimensions: !isOriginalSource - }; - var schema = prepareSeriesDataSchema2(source, createDimensionOptions); - var firstCategoryDimIndex = injectOrdinalMeta2(schema.dimensions, opt.createInvertedIndices, coordSysInfo); - var store = !isOriginalSource ? sourceManager.getSharedDataStore(schema) : null; - var stackCalculationInfo = enableDataStack2(seriesModel, { - schema, - store - }); - var data = new SeriesData2(schema, seriesModel); - data.setCalculationInfo(stackCalculationInfo); - var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData2(source) ? function(itemOpt, dimName, dataIndex, dimIndex) { - return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex); - } : null; - data.hasItemOption = false; - data.initData( - // Try to reuse the data store in sourceManager if using dataset. - isOriginalSource ? source : store, - null, - dimValueGetter - ); - return data; - } - function isNeedCompleteOrdinalData2(source) { - if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL2) { - var sampleItem = firstDataNotNull2(source.data || []); - return !isArray3(getDataItemValue2(sampleItem)); - } - } - function firstDataNotNull2(arr) { - var i2 = 0; - while (i2 < arr.length && arr[i2] == null) { - i2++; - } - return arr[i2]; - } - var Scale2 = ( - /** @class */ - function() { - function Scale3(setting) { - this._setting = setting || {}; - this._extent = [Infinity, -Infinity]; - } - Scale3.prototype.getSetting = function(name) { - return this._setting[name]; - }; - Scale3.prototype.unionExtent = function(other) { - var extent4 = this._extent; - other[0] < extent4[0] && (extent4[0] = other[0]); - other[1] > extent4[1] && (extent4[1] = other[1]); - }; - Scale3.prototype.unionExtentFromData = function(data, dim) { - this.unionExtent(data.getApproximateExtent(dim)); - }; - Scale3.prototype.getExtent = function() { - return this._extent.slice(); - }; - Scale3.prototype.setExtent = function(start4, end3) { - var thisExtent = this._extent; - if (!isNaN(start4)) { - thisExtent[0] = start4; - } - if (!isNaN(end3)) { - thisExtent[1] = end3; - } - }; - Scale3.prototype.isInExtentRange = function(value) { - return this._extent[0] <= value && this._extent[1] >= value; - }; - Scale3.prototype.isBlank = function() { - return this._isBlank; - }; - Scale3.prototype.setBlank = function(isBlank) { - this._isBlank = isBlank; - }; - return Scale3; - }() - ); - enableClassManagement2(Scale2); - var uidBase2 = 0; - var OrdinalMeta2 = ( - /** @class */ - function() { - function OrdinalMeta3(opt) { - this.categories = opt.categories || []; - this._needCollect = opt.needCollect; - this._deduplication = opt.deduplication; - this.uid = ++uidBase2; - } - OrdinalMeta3.createByAxisModel = function(axisModel) { - var option = axisModel.option; - var data = option.data; - var categories = data && map3(data, getName2); - return new OrdinalMeta3({ - categories, - needCollect: !categories, - // deduplication is default in axis. - deduplication: option.dedplication !== false - }); - }; - OrdinalMeta3.prototype.getOrdinal = function(category) { - return this._getOrCreateMap().get(category); - }; - OrdinalMeta3.prototype.parseAndCollect = function(category) { - var index; - var needCollect = this._needCollect; - if (!isString2(category) && !needCollect) { - return category; - } - if (needCollect && !this._deduplication) { - index = this.categories.length; - this.categories[index] = category; - return index; - } - var map4 = this._getOrCreateMap(); - index = map4.get(category); - if (index == null) { - if (needCollect) { - index = this.categories.length; - this.categories[index] = category; - map4.set(category, index); - } else { - index = NaN; - } - } - return index; - }; - OrdinalMeta3.prototype._getOrCreateMap = function() { - return this._map || (this._map = createHashMap2(this.categories)); - }; - return OrdinalMeta3; - }() - ); - function getName2(obj) { - if (isObject5(obj) && obj.value != null) { - return obj.value; - } else { - return obj + ""; - } - } - function isValueNice2(val) { - var exp10 = Math.pow(10, quantityExponent2(Math.abs(val))); - var f = Math.abs(val / exp10); - return f === 0 || f === 1 || f === 2 || f === 3 || f === 5; - } - function isIntervalOrLogScale2(scale5) { - return scale5.type === "interval" || scale5.type === "log"; - } - function intervalScaleNiceTicks2(extent4, splitNumber, minInterval, maxInterval) { - var result = {}; - var span = extent4[1] - extent4[0]; - var interval = result.interval = nice2(span / splitNumber, true); - if (minInterval != null && interval < minInterval) { - interval = result.interval = minInterval; - } - if (maxInterval != null && interval > maxInterval) { - interval = result.interval = maxInterval; - } - var precision = result.intervalPrecision = getIntervalPrecision2(interval); - var niceTickExtent = result.niceTickExtent = [round8(Math.ceil(extent4[0] / interval) * interval, precision), round8(Math.floor(extent4[1] / interval) * interval, precision)]; - fixExtent2(niceTickExtent, extent4); - return result; - } - function increaseInterval2(interval) { - var exp10 = Math.pow(10, quantityExponent2(interval)); - var f = interval / exp10; - if (!f) { - f = 1; - } else if (f === 2) { - f = 3; - } else if (f === 3) { - f = 5; - } else { - f *= 2; - } - return round8(f * exp10); - } - function getIntervalPrecision2(interval) { - return getPrecision2(interval) + 2; - } - function clamp3(niceTickExtent, idx, extent4) { - niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent4[1]), extent4[0]); - } - function fixExtent2(niceTickExtent, extent4) { - !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent4[0]); - !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent4[1]); - clamp3(niceTickExtent, 0, extent4); - clamp3(niceTickExtent, 1, extent4); - if (niceTickExtent[0] > niceTickExtent[1]) { - niceTickExtent[0] = niceTickExtent[1]; - } - } - function contain$1(val, extent4) { - return val >= extent4[0] && val <= extent4[1]; - } - function normalize$1(val, extent4) { - if (extent4[1] === extent4[0]) { - return 0.5; - } - return (val - extent4[0]) / (extent4[1] - extent4[0]); - } - function scale$2(val, extent4) { - return val * (extent4[1] - extent4[0]) + extent4[0]; - } - var OrdinalScale2 = ( - /** @class */ - function(_super) { - __extends2(OrdinalScale3, _super); - function OrdinalScale3(setting) { - var _this = _super.call(this, setting) || this; - _this.type = "ordinal"; - var ordinalMeta = _this.getSetting("ordinalMeta"); - if (!ordinalMeta) { - ordinalMeta = new OrdinalMeta2({}); - } - if (isArray3(ordinalMeta)) { - ordinalMeta = new OrdinalMeta2({ - categories: map3(ordinalMeta, function(item) { - return isObject5(item) ? item.value : item; - }) - }); - } - _this._ordinalMeta = ordinalMeta; - _this._extent = _this.getSetting("extent") || [0, ordinalMeta.categories.length - 1]; - return _this; - } - OrdinalScale3.prototype.parse = function(val) { - if (val == null) { - return NaN; - } - return isString2(val) ? this._ordinalMeta.getOrdinal(val) : Math.round(val); - }; - OrdinalScale3.prototype.contain = function(rank) { - rank = this.parse(rank); - return contain$1(rank, this._extent) && this._ordinalMeta.categories[rank] != null; - }; - OrdinalScale3.prototype.normalize = function(val) { - val = this._getTickNumber(this.parse(val)); - return normalize$1(val, this._extent); - }; - OrdinalScale3.prototype.scale = function(val) { - val = Math.round(scale$2(val, this._extent)); - return this.getRawOrdinalNumber(val); - }; - OrdinalScale3.prototype.getTicks = function() { - var ticks = []; - var extent4 = this._extent; - var rank = extent4[0]; - while (rank <= extent4[1]) { - ticks.push({ - value: rank - }); - rank++; - } - return ticks; - }; - OrdinalScale3.prototype.getMinorTicks = function(splitNumber) { - return; - }; - OrdinalScale3.prototype.setSortInfo = function(info) { - if (info == null) { - this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null; - return; - } - var infoOrdinalNumbers = info.ordinalNumbers; - var ordinalsByTick = this._ordinalNumbersByTick = []; - var ticksByOrdinal = this._ticksByOrdinalNumber = []; - var tickNum = 0; - var allCategoryLen = this._ordinalMeta.categories.length; - for (var len3 = Math.min(allCategoryLen, infoOrdinalNumbers.length); tickNum < len3; ++tickNum) { - var ordinalNumber = infoOrdinalNumbers[tickNum]; - ordinalsByTick[tickNum] = ordinalNumber; - ticksByOrdinal[ordinalNumber] = tickNum; - } - var unusedOrdinal = 0; - for (; tickNum < allCategoryLen; ++tickNum) { - while (ticksByOrdinal[unusedOrdinal] != null) { - unusedOrdinal++; - } - ordinalsByTick.push(unusedOrdinal); - ticksByOrdinal[unusedOrdinal] = tickNum; - } - }; - OrdinalScale3.prototype._getTickNumber = function(ordinal) { - var ticksByOrdinalNumber = this._ticksByOrdinalNumber; - return ticksByOrdinalNumber && ordinal >= 0 && ordinal < ticksByOrdinalNumber.length ? ticksByOrdinalNumber[ordinal] : ordinal; - }; - OrdinalScale3.prototype.getRawOrdinalNumber = function(tickNumber) { - var ordinalNumbersByTick = this._ordinalNumbersByTick; - return ordinalNumbersByTick && tickNumber >= 0 && tickNumber < ordinalNumbersByTick.length ? ordinalNumbersByTick[tickNumber] : tickNumber; - }; - OrdinalScale3.prototype.getLabel = function(tick) { - if (!this.isBlank()) { - var ordinalNumber = this.getRawOrdinalNumber(tick.value); - var cateogry = this._ordinalMeta.categories[ordinalNumber]; - return cateogry == null ? "" : cateogry + ""; - } - }; - OrdinalScale3.prototype.count = function() { - return this._extent[1] - this._extent[0] + 1; - }; - OrdinalScale3.prototype.unionExtentFromData = function(data, dim) { - this.unionExtent(data.getApproximateExtent(dim)); - }; - OrdinalScale3.prototype.isInExtentRange = function(value) { - value = this._getTickNumber(value); - return this._extent[0] <= value && this._extent[1] >= value; - }; - OrdinalScale3.prototype.getOrdinalMeta = function() { - return this._ordinalMeta; - }; - OrdinalScale3.prototype.calcNiceTicks = function() { - }; - OrdinalScale3.prototype.calcNiceExtent = function() { - }; - OrdinalScale3.type = "ordinal"; - return OrdinalScale3; - }(Scale2) - ); - Scale2.registerClass(OrdinalScale2); - var roundNumber2 = round8; - var IntervalScale2 = ( - /** @class */ - function(_super) { - __extends2(IntervalScale3, _super); - function IntervalScale3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "interval"; - _this._interval = 0; - _this._intervalPrecision = 2; - return _this; - } - IntervalScale3.prototype.parse = function(val) { - return val; - }; - IntervalScale3.prototype.contain = function(val) { - return contain$1(val, this._extent); - }; - IntervalScale3.prototype.normalize = function(val) { - return normalize$1(val, this._extent); - }; - IntervalScale3.prototype.scale = function(val) { - return scale$2(val, this._extent); - }; - IntervalScale3.prototype.setExtent = function(start4, end3) { - var thisExtent = this._extent; - if (!isNaN(start4)) { - thisExtent[0] = parseFloat(start4); - } - if (!isNaN(end3)) { - thisExtent[1] = parseFloat(end3); - } - }; - IntervalScale3.prototype.unionExtent = function(other) { - var extent4 = this._extent; - other[0] < extent4[0] && (extent4[0] = other[0]); - other[1] > extent4[1] && (extent4[1] = other[1]); - this.setExtent(extent4[0], extent4[1]); - }; - IntervalScale3.prototype.getInterval = function() { - return this._interval; - }; - IntervalScale3.prototype.setInterval = function(interval) { - this._interval = interval; - this._niceExtent = this._extent.slice(); - this._intervalPrecision = getIntervalPrecision2(interval); - }; - IntervalScale3.prototype.getTicks = function(expandToNicedExtent) { - var interval = this._interval; - var extent4 = this._extent; - var niceTickExtent = this._niceExtent; - var intervalPrecision = this._intervalPrecision; - var ticks = []; - if (!interval) { - return ticks; - } - var safeLimit = 1e4; - if (extent4[0] < niceTickExtent[0]) { - if (expandToNicedExtent) { - ticks.push({ - value: roundNumber2(niceTickExtent[0] - interval, intervalPrecision) - }); - } else { - ticks.push({ - value: extent4[0] - }); - } - } - var tick = niceTickExtent[0]; - while (tick <= niceTickExtent[1]) { - ticks.push({ - value: tick - }); - tick = roundNumber2(tick + interval, intervalPrecision); - if (tick === ticks[ticks.length - 1].value) { - break; - } - if (ticks.length > safeLimit) { - return []; - } - } - var lastNiceTick = ticks.length ? ticks[ticks.length - 1].value : niceTickExtent[1]; - if (extent4[1] > lastNiceTick) { - if (expandToNicedExtent) { - ticks.push({ - value: roundNumber2(lastNiceTick + interval, intervalPrecision) - }); - } else { - ticks.push({ - value: extent4[1] - }); - } - } - return ticks; - }; - IntervalScale3.prototype.getMinorTicks = function(splitNumber) { - var ticks = this.getTicks(true); - var minorTicks = []; - var extent4 = this.getExtent(); - for (var i2 = 1; i2 < ticks.length; i2++) { - var nextTick = ticks[i2]; - var prevTick = ticks[i2 - 1]; - var count3 = 0; - var minorTicksGroup = []; - var interval = nextTick.value - prevTick.value; - var minorInterval = interval / splitNumber; - while (count3 < splitNumber - 1) { - var minorTick = roundNumber2(prevTick.value + (count3 + 1) * minorInterval); - if (minorTick > extent4[0] && minorTick < extent4[1]) { - minorTicksGroup.push(minorTick); - } - count3++; - } - minorTicks.push(minorTicksGroup); - } - return minorTicks; - }; - IntervalScale3.prototype.getLabel = function(data, opt) { - if (data == null) { - return ""; - } - var precision = opt && opt.precision; - if (precision == null) { - precision = getPrecision2(data.value) || 0; - } else if (precision === "auto") { - precision = this._intervalPrecision; - } - var dataNum = roundNumber2(data.value, precision, true); - return addCommas2(dataNum); - }; - IntervalScale3.prototype.calcNiceTicks = function(splitNumber, minInterval, maxInterval) { - splitNumber = splitNumber || 5; - var extent4 = this._extent; - var span = extent4[1] - extent4[0]; - if (!isFinite(span)) { - return; - } - if (span < 0) { - span = -span; - extent4.reverse(); - } - var result = intervalScaleNiceTicks2(extent4, splitNumber, minInterval, maxInterval); - this._intervalPrecision = result.intervalPrecision; - this._interval = result.interval; - this._niceExtent = result.niceTickExtent; - }; - IntervalScale3.prototype.calcNiceExtent = function(opt) { - var extent4 = this._extent; - if (extent4[0] === extent4[1]) { - if (extent4[0] !== 0) { - var expandSize = Math.abs(extent4[0]); - if (!opt.fixMax) { - extent4[1] += expandSize / 2; - extent4[0] -= expandSize / 2; - } else { - extent4[0] -= expandSize / 2; - } - } else { - extent4[1] = 1; - } - } - var span = extent4[1] - extent4[0]; - if (!isFinite(span)) { - extent4[0] = 0; - extent4[1] = 1; - } - this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); - var interval = this._interval; - if (!opt.fixMin) { - extent4[0] = roundNumber2(Math.floor(extent4[0] / interval) * interval); - } - if (!opt.fixMax) { - extent4[1] = roundNumber2(Math.ceil(extent4[1] / interval) * interval); - } - }; - IntervalScale3.prototype.setNiceExtent = function(min5, max5) { - this._niceExtent = [min5, max5]; - }; - IntervalScale3.type = "interval"; - return IntervalScale3; - }(Scale2) - ); - Scale2.registerClass(IntervalScale2); - var supportFloat32Array2 = typeof Float32Array !== "undefined"; - var Float32ArrayCtor2 = !supportFloat32Array2 ? Array : Float32Array; - function createFloat32Array2(arg) { - if (isArray3(arg)) { - return supportFloat32Array2 ? new Float32Array(arg) : arg; - } - return new Float32ArrayCtor2(arg); - } - var STACK_PREFIX2 = "__ec_stack_"; - function getSeriesStackId3(seriesModel) { - return seriesModel.get("stack") || STACK_PREFIX2 + seriesModel.seriesIndex; - } - function getAxisKey3(axis) { - return axis.dim + axis.index; - } - function getLayoutOnAxis2(opt) { - var params = []; - var baseAxis = opt.axis; - var axisKey = "axis0"; - if (baseAxis.type !== "category") { - return; - } - var bandWidth = baseAxis.getBandWidth(); - for (var i2 = 0; i2 < opt.count || 0; i2++) { - params.push(defaults2({ - bandWidth, - axisKey, - stackId: STACK_PREFIX2 + i2 - }, opt)); - } - var widthAndOffsets = doCalBarWidthAndOffset2(params); - var result = []; - for (var i2 = 0; i2 < opt.count; i2++) { - var item = widthAndOffsets[axisKey][STACK_PREFIX2 + i2]; - item.offsetCenter = item.offset + item.width / 2; - result.push(item); - } - return result; - } - function prepareLayoutBarSeries2(seriesType3, ecModel) { - var seriesModels = []; - ecModel.eachSeriesByType(seriesType3, function(seriesModel) { - if (isOnCartesian2(seriesModel)) { - seriesModels.push(seriesModel); - } - }); - return seriesModels; - } - function getValueAxesMinGaps2(barSeries) { - var axisValues = {}; - each17(barSeries, function(seriesModel) { - var cartesian = seriesModel.coordinateSystem; - var baseAxis = cartesian.getBaseAxis(); - if (baseAxis.type !== "time" && baseAxis.type !== "value") { - return; - } - var data = seriesModel.getData(); - var key2 = baseAxis.dim + "_" + baseAxis.index; - var dimIdx = data.getDimensionIndex(data.mapDimension(baseAxis.dim)); - var store = data.getStore(); - for (var i2 = 0, cnt = store.count(); i2 < cnt; ++i2) { - var value = store.get(dimIdx, i2); - if (!axisValues[key2]) { - axisValues[key2] = [value]; - } else { - axisValues[key2].push(value); - } - } - }); - var axisMinGaps = {}; - for (var key in axisValues) { - if (axisValues.hasOwnProperty(key)) { - var valuesInAxis = axisValues[key]; - if (valuesInAxis) { - valuesInAxis.sort(function(a, b) { - return a - b; - }); - var min5 = null; - for (var j = 1; j < valuesInAxis.length; ++j) { - var delta = valuesInAxis[j] - valuesInAxis[j - 1]; - if (delta > 0) { - min5 = min5 === null ? delta : Math.min(min5, delta); - } - } - axisMinGaps[key] = min5; - } - } - } - return axisMinGaps; - } - function makeColumnLayout2(barSeries) { - var axisMinGaps = getValueAxesMinGaps2(barSeries); - var seriesInfoList = []; - each17(barSeries, function(seriesModel) { - var cartesian = seriesModel.coordinateSystem; - var baseAxis = cartesian.getBaseAxis(); - var axisExtent = baseAxis.getExtent(); - var bandWidth; - if (baseAxis.type === "category") { - bandWidth = baseAxis.getBandWidth(); - } else if (baseAxis.type === "value" || baseAxis.type === "time") { - var key = baseAxis.dim + "_" + baseAxis.index; - var minGap = axisMinGaps[key]; - var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]); - var scale5 = baseAxis.scale.getExtent(); - var scaleSpan = Math.abs(scale5[1] - scale5[0]); - bandWidth = minGap ? extentSpan / scaleSpan * minGap : extentSpan; - } else { - var data = seriesModel.getData(); - bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count(); - } - var barWidth = parsePercent$1(seriesModel.get("barWidth"), bandWidth); - var barMaxWidth = parsePercent$1(seriesModel.get("barMaxWidth"), bandWidth); - var barMinWidth = parsePercent$1( - // barMinWidth by default is 0.5 / 1 in cartesian. Because in value axis, - // the auto-calculated bar width might be less than 0.5 / 1. - seriesModel.get("barMinWidth") || (isInLargeMode2(seriesModel) ? 0.5 : 1), - bandWidth - ); - var barGap = seriesModel.get("barGap"); - var barCategoryGap = seriesModel.get("barCategoryGap"); - seriesInfoList.push({ - bandWidth, - barWidth, - barMaxWidth, - barMinWidth, - barGap, - barCategoryGap, - axisKey: getAxisKey3(baseAxis), - stackId: getSeriesStackId3(seriesModel) - }); - }); - return doCalBarWidthAndOffset2(seriesInfoList); - } - function doCalBarWidthAndOffset2(seriesInfoList) { - var columnsMap = {}; - each17(seriesInfoList, function(seriesInfo, idx) { - var axisKey = seriesInfo.axisKey; - var bandWidth = seriesInfo.bandWidth; - var columnsOnAxis = columnsMap[axisKey] || { - bandWidth, - remainedWidth: bandWidth, - autoWidthCount: 0, - categoryGap: null, - gap: "20%", - stacks: {} - }; - var stacks = columnsOnAxis.stacks; - columnsMap[axisKey] = columnsOnAxis; - var stackId = seriesInfo.stackId; - if (!stacks[stackId]) { - columnsOnAxis.autoWidthCount++; - } - stacks[stackId] = stacks[stackId] || { - width: 0, - maxWidth: 0 - }; - var barWidth = seriesInfo.barWidth; - if (barWidth && !stacks[stackId].width) { - stacks[stackId].width = barWidth; - barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth); - columnsOnAxis.remainedWidth -= barWidth; - } - var barMaxWidth = seriesInfo.barMaxWidth; - barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth); - var barMinWidth = seriesInfo.barMinWidth; - barMinWidth && (stacks[stackId].minWidth = barMinWidth); - var barGap = seriesInfo.barGap; - barGap != null && (columnsOnAxis.gap = barGap); - var barCategoryGap = seriesInfo.barCategoryGap; - barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap); - }); - var result = {}; - each17(columnsMap, function(columnsOnAxis, coordSysName) { - result[coordSysName] = {}; - var stacks = columnsOnAxis.stacks; - var bandWidth = columnsOnAxis.bandWidth; - var categoryGapPercent = columnsOnAxis.categoryGap; - if (categoryGapPercent == null) { - var columnCount = keys2(stacks).length; - categoryGapPercent = Math.max(35 - columnCount * 4, 15) + "%"; - } - var categoryGap = parsePercent$1(categoryGapPercent, bandWidth); - var barGapPercent = parsePercent$1(columnsOnAxis.gap, 1); - var remainedWidth = columnsOnAxis.remainedWidth; - var autoWidthCount = columnsOnAxis.autoWidthCount; - var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); - autoWidth = Math.max(autoWidth, 0); - each17(stacks, function(column) { - var maxWidth = column.maxWidth; - var minWidth = column.minWidth; - if (!column.width) { - var finalWidth = autoWidth; - if (maxWidth && maxWidth < finalWidth) { - finalWidth = Math.min(maxWidth, remainedWidth); - } - if (minWidth && minWidth > finalWidth) { - finalWidth = minWidth; - } - if (finalWidth !== autoWidth) { - column.width = finalWidth; - remainedWidth -= finalWidth + barGapPercent * finalWidth; - autoWidthCount--; - } - } else { - var finalWidth = column.width; - if (maxWidth) { - finalWidth = Math.min(finalWidth, maxWidth); - } - if (minWidth) { - finalWidth = Math.max(finalWidth, minWidth); - } - column.width = finalWidth; - remainedWidth -= finalWidth + barGapPercent * finalWidth; - autoWidthCount--; - } - }); - autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); - autoWidth = Math.max(autoWidth, 0); - var widthSum = 0; - var lastColumn; - each17(stacks, function(column, idx) { - if (!column.width) { - column.width = autoWidth; - } - lastColumn = column; - widthSum += column.width * (1 + barGapPercent); - }); - if (lastColumn) { - widthSum -= lastColumn.width * barGapPercent; - } - var offset3 = -widthSum / 2; - each17(stacks, function(column, stackId) { - result[coordSysName][stackId] = result[coordSysName][stackId] || { - bandWidth, - offset: offset3, - width: column.width - }; - offset3 += column.width * (1 + barGapPercent); - }); - }); - return result; - } - function retrieveColumnLayout2(barWidthAndOffset, axis, seriesModel) { - if (barWidthAndOffset && axis) { - var result = barWidthAndOffset[getAxisKey3(axis)]; - if (result != null && seriesModel != null) { - return result[getSeriesStackId3(seriesModel)]; - } - return result; - } - } - function layout5(seriesType3, ecModel) { - var seriesModels = prepareLayoutBarSeries2(seriesType3, ecModel); - var barWidthAndOffset = makeColumnLayout2(seriesModels); - each17(seriesModels, function(seriesModel) { - var data = seriesModel.getData(); - var cartesian = seriesModel.coordinateSystem; - var baseAxis = cartesian.getBaseAxis(); - var stackId = getSeriesStackId3(seriesModel); - var columnLayoutInfo = barWidthAndOffset[getAxisKey3(baseAxis)][stackId]; - var columnOffset = columnLayoutInfo.offset; - var columnWidth = columnLayoutInfo.width; - data.setLayout({ - bandWidth: columnLayoutInfo.bandWidth, - offset: columnOffset, - size: columnWidth - }); - }); - } - function createProgressiveLayout2(seriesType3) { - return { - seriesType: seriesType3, - plan: createRenderPlanner2(), - reset: function(seriesModel) { - if (!isOnCartesian2(seriesModel)) { - return; - } - var data = seriesModel.getData(); - var cartesian = seriesModel.coordinateSystem; - var baseAxis = cartesian.getBaseAxis(); - var valueAxis3 = cartesian.getOtherAxis(baseAxis); - var valueDimIdx = data.getDimensionIndex(data.mapDimension(valueAxis3.dim)); - var baseDimIdx = data.getDimensionIndex(data.mapDimension(baseAxis.dim)); - var drawBackground = seriesModel.get("showBackground", true); - var valueDim = data.mapDimension(valueAxis3.dim); - var stackResultDim = data.getCalculationInfo("stackResultDimension"); - var stacked = isDimensionStacked2(data, valueDim) && !!data.getCalculationInfo("stackedOnSeries"); - var isValueAxisH = valueAxis3.isHorizontal(); - var valueAxisStart = getValueAxisStart2(baseAxis, valueAxis3); - var isLarge = isInLargeMode2(seriesModel); - var barMinHeight = seriesModel.get("barMinHeight") || 0; - var stackedDimIdx = stackResultDim && data.getDimensionIndex(stackResultDim); - var columnWidth = data.getLayout("size"); - var columnOffset = data.getLayout("offset"); - return { - progress: function(params, data2) { - var count3 = params.count; - var largePoints = isLarge && createFloat32Array2(count3 * 3); - var largeBackgroundPoints = isLarge && drawBackground && createFloat32Array2(count3 * 3); - var largeDataIndices = isLarge && createFloat32Array2(count3); - var coordLayout = cartesian.master.getRect(); - var bgSize = isValueAxisH ? coordLayout.width : coordLayout.height; - var dataIndex; - var store = data2.getStore(); - var idxOffset = 0; - while ((dataIndex = params.next()) != null) { - var value = store.get(stacked ? stackedDimIdx : valueDimIdx, dataIndex); - var baseValue = store.get(baseDimIdx, dataIndex); - var baseCoord = valueAxisStart; - var stackStartValue = void 0; - if (stacked) { - stackStartValue = +value - store.get(valueDimIdx, dataIndex); - } - var x = void 0; - var y = void 0; - var width = void 0; - var height = void 0; - if (isValueAxisH) { - var coord = cartesian.dataToPoint([value, baseValue]); - if (stacked) { - var startCoord = cartesian.dataToPoint([stackStartValue, baseValue]); - baseCoord = startCoord[0]; - } - x = baseCoord; - y = coord[1] + columnOffset; - width = coord[0] - baseCoord; - height = columnWidth; - if (Math.abs(width) < barMinHeight) { - width = (width < 0 ? -1 : 1) * barMinHeight; - } - } else { - var coord = cartesian.dataToPoint([baseValue, value]); - if (stacked) { - var startCoord = cartesian.dataToPoint([baseValue, stackStartValue]); - baseCoord = startCoord[1]; - } - x = coord[0] + columnOffset; - y = baseCoord; - width = columnWidth; - height = coord[1] - baseCoord; - if (Math.abs(height) < barMinHeight) { - height = (height <= 0 ? -1 : 1) * barMinHeight; - } - } - if (!isLarge) { - data2.setItemLayout(dataIndex, { - x, - y, - width, - height - }); - } else { - largePoints[idxOffset] = x; - largePoints[idxOffset + 1] = y; - largePoints[idxOffset + 2] = isValueAxisH ? width : height; - if (largeBackgroundPoints) { - largeBackgroundPoints[idxOffset] = isValueAxisH ? coordLayout.x : x; - largeBackgroundPoints[idxOffset + 1] = isValueAxisH ? y : coordLayout.y; - largeBackgroundPoints[idxOffset + 2] = bgSize; - } - largeDataIndices[dataIndex] = dataIndex; - } - idxOffset += 3; - } - if (isLarge) { - data2.setLayout({ - largePoints, - largeDataIndices, - largeBackgroundPoints, - valueAxisHorizontal: isValueAxisH - }); - } - } - }; - } - }; - } - function isOnCartesian2(seriesModel) { - return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === "cartesian2d"; - } - function isInLargeMode2(seriesModel) { - return seriesModel.pipelineContext && seriesModel.pipelineContext.large; - } - function getValueAxisStart2(baseAxis, valueAxis3) { - var startValue = valueAxis3.model.get("startValue"); - if (!startValue) { - startValue = 0; - } - return valueAxis3.toGlobalCoord(valueAxis3.dataToCoord(valueAxis3.type === "log" ? startValue > 0 ? startValue : 1 : startValue)); - } - var bisect2 = function(a, x, lo, hi) { - while (lo < hi) { - var mid = lo + hi >>> 1; - if (a[mid][1] < x) { - lo = mid + 1; - } else { - hi = mid; - } - } - return lo; - }; - var TimeScale2 = ( - /** @class */ - function(_super) { - __extends2(TimeScale3, _super); - function TimeScale3(settings) { - var _this = _super.call(this, settings) || this; - _this.type = "time"; - return _this; - } - TimeScale3.prototype.getLabel = function(tick) { - var useUTC = this.getSetting("useUTC"); - return format2(tick.value, fullLeveledFormatter2[getDefaultFormatPrecisionOfInterval2(getPrimaryTimeUnit2(this._minLevelUnit))] || fullLeveledFormatter2.second, useUTC, this.getSetting("locale")); - }; - TimeScale3.prototype.getFormattedLabel = function(tick, idx, labelFormatter) { - var isUTC = this.getSetting("useUTC"); - var lang = this.getSetting("locale"); - return leveledFormat2(tick, idx, labelFormatter, lang, isUTC); - }; - TimeScale3.prototype.getTicks = function() { - var interval = this._interval; - var extent4 = this._extent; - var ticks = []; - if (!interval) { - return ticks; - } - ticks.push({ - value: extent4[0], - level: 0 - }); - var useUTC = this.getSetting("useUTC"); - var innerTicks = getIntervalTicks2(this._minLevelUnit, this._approxInterval, useUTC, extent4); - ticks = ticks.concat(innerTicks); - ticks.push({ - value: extent4[1], - level: 0 - }); - return ticks; - }; - TimeScale3.prototype.calcNiceExtent = function(opt) { - var extent4 = this._extent; - if (extent4[0] === extent4[1]) { - extent4[0] -= ONE_DAY2; - extent4[1] += ONE_DAY2; - } - if (extent4[1] === -Infinity && extent4[0] === Infinity) { - var d = /* @__PURE__ */ new Date(); - extent4[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate()); - extent4[0] = extent4[1] - ONE_DAY2; - } - this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); - }; - TimeScale3.prototype.calcNiceTicks = function(approxTickNum, minInterval, maxInterval) { - approxTickNum = approxTickNum || 10; - var extent4 = this._extent; - var span = extent4[1] - extent4[0]; - this._approxInterval = span / approxTickNum; - if (minInterval != null && this._approxInterval < minInterval) { - this._approxInterval = minInterval; - } - if (maxInterval != null && this._approxInterval > maxInterval) { - this._approxInterval = maxInterval; - } - var scaleIntervalsLen = scaleIntervals2.length; - var idx = Math.min(bisect2(scaleIntervals2, this._approxInterval, 0, scaleIntervalsLen), scaleIntervalsLen - 1); - this._interval = scaleIntervals2[idx][1]; - this._minLevelUnit = scaleIntervals2[Math.max(idx - 1, 0)][0]; - }; - TimeScale3.prototype.parse = function(val) { - return isNumber2(val) ? val : +parseDate2(val); - }; - TimeScale3.prototype.contain = function(val) { - return contain$1(this.parse(val), this._extent); - }; - TimeScale3.prototype.normalize = function(val) { - return normalize$1(this.parse(val), this._extent); - }; - TimeScale3.prototype.scale = function(val) { - return scale$2(val, this._extent); - }; - TimeScale3.type = "time"; - return TimeScale3; - }(IntervalScale2) - ); - var scaleIntervals2 = [ - // Format interval - ["second", ONE_SECOND2], - ["minute", ONE_MINUTE2], - ["hour", ONE_HOUR2], - ["quarter-day", ONE_HOUR2 * 6], - ["half-day", ONE_HOUR2 * 12], - ["day", ONE_DAY2 * 1.2], - ["half-week", ONE_DAY2 * 3.5], - ["week", ONE_DAY2 * 7], - ["month", ONE_DAY2 * 31], - ["quarter", ONE_DAY2 * 95], - ["half-year", ONE_YEAR2 / 2], - ["year", ONE_YEAR2] - // 1Y - ]; - function isUnitValueSame2(unit, valueA, valueB, isUTC) { - var dateA = parseDate2(valueA); - var dateB = parseDate2(valueB); - var isSame = function(unit2) { - return getUnitValue2(dateA, unit2, isUTC) === getUnitValue2(dateB, unit2, isUTC); - }; - var isSameYear = function() { - return isSame("year"); - }; - var isSameMonth = function() { - return isSameYear() && isSame("month"); - }; - var isSameDay = function() { - return isSameMonth() && isSame("day"); - }; - var isSameHour = function() { - return isSameDay() && isSame("hour"); - }; - var isSameMinute = function() { - return isSameHour() && isSame("minute"); - }; - var isSameSecond = function() { - return isSameMinute() && isSame("second"); - }; - var isSameMilliSecond = function() { - return isSameSecond() && isSame("millisecond"); - }; - switch (unit) { - case "year": - return isSameYear(); - case "month": - return isSameMonth(); - case "day": - return isSameDay(); - case "hour": - return isSameHour(); - case "minute": - return isSameMinute(); - case "second": - return isSameSecond(); - case "millisecond": - return isSameMilliSecond(); - } - } - function getDateInterval2(approxInterval, daysInMonth) { - approxInterval /= ONE_DAY2; - return approxInterval > 16 ? 16 : approxInterval > 7.5 ? 7 : approxInterval > 3.5 ? 4 : approxInterval > 1.5 ? 2 : 1; - } - function getMonthInterval2(approxInterval) { - var APPROX_ONE_MONTH = 30 * ONE_DAY2; - approxInterval /= APPROX_ONE_MONTH; - return approxInterval > 6 ? 6 : approxInterval > 3 ? 3 : approxInterval > 2 ? 2 : 1; - } - function getHourInterval2(approxInterval) { - approxInterval /= ONE_HOUR2; - return approxInterval > 12 ? 12 : approxInterval > 6 ? 6 : approxInterval > 3.5 ? 4 : approxInterval > 2 ? 2 : 1; - } - function getMinutesAndSecondsInterval2(approxInterval, isMinutes) { - approxInterval /= isMinutes ? ONE_MINUTE2 : ONE_SECOND2; - return approxInterval > 30 ? 30 : approxInterval > 20 ? 20 : approxInterval > 15 ? 15 : approxInterval > 10 ? 10 : approxInterval > 5 ? 5 : approxInterval > 2 ? 2 : 1; - } - function getMillisecondsInterval2(approxInterval) { - return nice2(approxInterval, true); - } - function getFirstTimestampOfUnit2(date, unitName, isUTC) { - var outDate = new Date(date); - switch (getPrimaryTimeUnit2(unitName)) { - case "year": - case "month": - outDate[monthSetterName2(isUTC)](0); - case "day": - outDate[dateSetterName2(isUTC)](1); - case "hour": - outDate[hoursSetterName2(isUTC)](0); - case "minute": - outDate[minutesSetterName2(isUTC)](0); - case "second": - outDate[secondsSetterName2(isUTC)](0); - outDate[millisecondsSetterName2(isUTC)](0); - } - return outDate.getTime(); - } - function getIntervalTicks2(bottomUnitName, approxInterval, isUTC, extent4) { - var safeLimit = 1e4; - var unitNames = timeUnits2; - var iter = 0; - function addTicksInSpan(interval, minTimestamp, maxTimestamp, getMethodName, setMethodName, isDate, out3) { - var date = new Date(minTimestamp); - var dateTime = minTimestamp; - var d = date[getMethodName](); - while (dateTime < maxTimestamp && dateTime <= extent4[1]) { - out3.push({ - value: dateTime - }); - d += interval; - date[setMethodName](d); - dateTime = date.getTime(); - } - out3.push({ - value: dateTime, - notAdd: true - }); - } - function addLevelTicks(unitName, lastLevelTicks, levelTicks2) { - var newAddedTicks = []; - var isFirstLevel = !lastLevelTicks.length; - if (isUnitValueSame2(getPrimaryTimeUnit2(unitName), extent4[0], extent4[1], isUTC)) { - return; - } - if (isFirstLevel) { - lastLevelTicks = [{ - // TODO Optimize. Not include so may ticks. - value: getFirstTimestampOfUnit2(new Date(extent4[0]), unitName, isUTC) - }, { - value: extent4[1] - }]; - } - for (var i3 = 0; i3 < lastLevelTicks.length - 1; i3++) { - var startTick = lastLevelTicks[i3].value; - var endTick = lastLevelTicks[i3 + 1].value; - if (startTick === endTick) { - continue; - } - var interval = void 0; - var getterName = void 0; - var setterName = void 0; - var isDate = false; - switch (unitName) { - case "year": - interval = Math.max(1, Math.round(approxInterval / ONE_DAY2 / 365)); - getterName = fullYearGetterName2(isUTC); - setterName = fullYearSetterName2(isUTC); - break; - case "half-year": - case "quarter": - case "month": - interval = getMonthInterval2(approxInterval); - getterName = monthGetterName2(isUTC); - setterName = monthSetterName2(isUTC); - break; - case "week": - case "half-week": - case "day": - interval = getDateInterval2(approxInterval); - getterName = dateGetterName2(isUTC); - setterName = dateSetterName2(isUTC); - isDate = true; - break; - case "half-day": - case "quarter-day": - case "hour": - interval = getHourInterval2(approxInterval); - getterName = hoursGetterName2(isUTC); - setterName = hoursSetterName2(isUTC); - break; - case "minute": - interval = getMinutesAndSecondsInterval2(approxInterval, true); - getterName = minutesGetterName2(isUTC); - setterName = minutesSetterName2(isUTC); - break; - case "second": - interval = getMinutesAndSecondsInterval2(approxInterval, false); - getterName = secondsGetterName2(isUTC); - setterName = secondsSetterName2(isUTC); - break; - case "millisecond": - interval = getMillisecondsInterval2(approxInterval); - getterName = millisecondsGetterName2(isUTC); - setterName = millisecondsSetterName2(isUTC); - break; - } - addTicksInSpan(interval, startTick, endTick, getterName, setterName, isDate, newAddedTicks); - if (unitName === "year" && levelTicks2.length > 1 && i3 === 0) { - levelTicks2.unshift({ - value: levelTicks2[0].value - interval - }); - } - } - for (var i3 = 0; i3 < newAddedTicks.length; i3++) { - levelTicks2.push(newAddedTicks[i3]); - } - return newAddedTicks; - } - var levelsTicks = []; - var currentLevelTicks = []; - var tickCount = 0; - var lastLevelTickCount = 0; - for (var i2 = 0; i2 < unitNames.length && iter++ < safeLimit; ++i2) { - var primaryTimeUnit = getPrimaryTimeUnit2(unitNames[i2]); - if (!isPrimaryTimeUnit2(unitNames[i2])) { - continue; - } - addLevelTicks(unitNames[i2], levelsTicks[levelsTicks.length - 1] || [], currentLevelTicks); - var nextPrimaryTimeUnit = unitNames[i2 + 1] ? getPrimaryTimeUnit2(unitNames[i2 + 1]) : null; - if (primaryTimeUnit !== nextPrimaryTimeUnit) { - if (currentLevelTicks.length) { - lastLevelTickCount = tickCount; - currentLevelTicks.sort(function(a, b) { - return a.value - b.value; - }); - var levelTicksRemoveDuplicated = []; - for (var i_1 = 0; i_1 < currentLevelTicks.length; ++i_1) { - var tickValue = currentLevelTicks[i_1].value; - if (i_1 === 0 || currentLevelTicks[i_1 - 1].value !== tickValue) { - levelTicksRemoveDuplicated.push(currentLevelTicks[i_1]); - if (tickValue >= extent4[0] && tickValue <= extent4[1]) { - tickCount++; - } - } - } - var targetTickNum = (extent4[1] - extent4[0]) / approxInterval; - if (tickCount > targetTickNum * 1.5 && lastLevelTickCount > targetTickNum / 1.5) { - break; - } - levelsTicks.push(levelTicksRemoveDuplicated); - if (tickCount > targetTickNum || bottomUnitName === unitNames[i2]) { - break; - } - } - currentLevelTicks = []; - } - } - if (true) { - if (iter >= safeLimit) { - warn2("Exceed safe limit."); - } - } - var levelsTicksInExtent = filter2(map3(levelsTicks, function(levelTicks2) { - return filter2(levelTicks2, function(tick) { - return tick.value >= extent4[0] && tick.value <= extent4[1] && !tick.notAdd; - }); - }), function(levelTicks2) { - return levelTicks2.length > 0; - }); - var ticks = []; - var maxLevel = levelsTicksInExtent.length - 1; - for (var i2 = 0; i2 < levelsTicksInExtent.length; ++i2) { - var levelTicks = levelsTicksInExtent[i2]; - for (var k2 = 0; k2 < levelTicks.length; ++k2) { - ticks.push({ - value: levelTicks[k2].value, - level: maxLevel - i2 - }); - } - } - ticks.sort(function(a, b) { - return a.value - b.value; - }); - var result = []; - for (var i2 = 0; i2 < ticks.length; ++i2) { - if (i2 === 0 || ticks[i2].value !== ticks[i2 - 1].value) { - result.push(ticks[i2]); - } - } - return result; - } - Scale2.registerClass(TimeScale2); - var scaleProto2 = Scale2.prototype; - var intervalScaleProto2 = IntervalScale2.prototype; - var roundingErrorFix2 = round8; - var mathFloor3 = Math.floor; - var mathCeil3 = Math.ceil; - var mathPow$1 = Math.pow; - var mathLog3 = Math.log; - var LogScale2 = ( - /** @class */ - function(_super) { - __extends2(LogScale3, _super); - function LogScale3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "log"; - _this.base = 10; - _this._originalScale = new IntervalScale2(); - _this._interval = 0; - return _this; - } - LogScale3.prototype.getTicks = function(expandToNicedExtent) { - var originalScale = this._originalScale; - var extent4 = this._extent; - var originalExtent = originalScale.getExtent(); - var ticks = intervalScaleProto2.getTicks.call(this, expandToNicedExtent); - return map3(ticks, function(tick) { - var val = tick.value; - var powVal = round8(mathPow$1(this.base, val)); - powVal = val === extent4[0] && this._fixMin ? fixRoundingError2(powVal, originalExtent[0]) : powVal; - powVal = val === extent4[1] && this._fixMax ? fixRoundingError2(powVal, originalExtent[1]) : powVal; - return { - value: powVal - }; - }, this); - }; - LogScale3.prototype.setExtent = function(start4, end3) { - var base3 = mathLog3(this.base); - start4 = mathLog3(Math.max(0, start4)) / base3; - end3 = mathLog3(Math.max(0, end3)) / base3; - intervalScaleProto2.setExtent.call(this, start4, end3); - }; - LogScale3.prototype.getExtent = function() { - var base3 = this.base; - var extent4 = scaleProto2.getExtent.call(this); - extent4[0] = mathPow$1(base3, extent4[0]); - extent4[1] = mathPow$1(base3, extent4[1]); - var originalScale = this._originalScale; - var originalExtent = originalScale.getExtent(); - this._fixMin && (extent4[0] = fixRoundingError2(extent4[0], originalExtent[0])); - this._fixMax && (extent4[1] = fixRoundingError2(extent4[1], originalExtent[1])); - return extent4; - }; - LogScale3.prototype.unionExtent = function(extent4) { - this._originalScale.unionExtent(extent4); - var base3 = this.base; - extent4[0] = mathLog3(extent4[0]) / mathLog3(base3); - extent4[1] = mathLog3(extent4[1]) / mathLog3(base3); - scaleProto2.unionExtent.call(this, extent4); - }; - LogScale3.prototype.unionExtentFromData = function(data, dim) { - this.unionExtent(data.getApproximateExtent(dim)); - }; - LogScale3.prototype.calcNiceTicks = function(approxTickNum) { - approxTickNum = approxTickNum || 10; - var extent4 = this._extent; - var span = extent4[1] - extent4[0]; - if (span === Infinity || span <= 0) { - return; - } - var interval = quantity2(span); - var err = approxTickNum / span * interval; - if (err <= 0.5) { - interval *= 10; - } - while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) { - interval *= 10; - } - var niceExtent = [round8(mathCeil3(extent4[0] / interval) * interval), round8(mathFloor3(extent4[1] / interval) * interval)]; - this._interval = interval; - this._niceExtent = niceExtent; - }; - LogScale3.prototype.calcNiceExtent = function(opt) { - intervalScaleProto2.calcNiceExtent.call(this, opt); - this._fixMin = opt.fixMin; - this._fixMax = opt.fixMax; - }; - LogScale3.prototype.parse = function(val) { - return val; - }; - LogScale3.prototype.contain = function(val) { - val = mathLog3(val) / mathLog3(this.base); - return contain$1(val, this._extent); - }; - LogScale3.prototype.normalize = function(val) { - val = mathLog3(val) / mathLog3(this.base); - return normalize$1(val, this._extent); - }; - LogScale3.prototype.scale = function(val) { - val = scale$2(val, this._extent); - return mathPow$1(this.base, val); - }; - LogScale3.type = "log"; - return LogScale3; - }(Scale2) - ); - var proto2 = LogScale2.prototype; - proto2.getMinorTicks = intervalScaleProto2.getMinorTicks; - proto2.getLabel = intervalScaleProto2.getLabel; - function fixRoundingError2(val, originalVal) { - return roundingErrorFix2(val, getPrecision2(originalVal)); - } - Scale2.registerClass(LogScale2); - var ScaleRawExtentInfo2 = ( - /** @class */ - function() { - function ScaleRawExtentInfo3(scale5, model, originalExtent) { - this._prepareParams(scale5, model, originalExtent); - } - ScaleRawExtentInfo3.prototype._prepareParams = function(scale5, model, dataExtent) { - if (dataExtent[1] < dataExtent[0]) { - dataExtent = [NaN, NaN]; - } - this._dataMin = dataExtent[0]; - this._dataMax = dataExtent[1]; - var isOrdinal = this._isOrdinal = scale5.type === "ordinal"; - this._needCrossZero = scale5.type === "interval" && model.getNeedCrossZero && model.getNeedCrossZero(); - var axisMinValue = model.get("min", true); - if (axisMinValue == null) { - axisMinValue = model.get("startValue", true); - } - var modelMinRaw = this._modelMinRaw = axisMinValue; - if (isFunction2(modelMinRaw)) { - this._modelMinNum = parseAxisModelMinMax2(scale5, modelMinRaw({ - min: dataExtent[0], - max: dataExtent[1] - })); - } else if (modelMinRaw !== "dataMin") { - this._modelMinNum = parseAxisModelMinMax2(scale5, modelMinRaw); - } - var modelMaxRaw = this._modelMaxRaw = model.get("max", true); - if (isFunction2(modelMaxRaw)) { - this._modelMaxNum = parseAxisModelMinMax2(scale5, modelMaxRaw({ - min: dataExtent[0], - max: dataExtent[1] - })); - } else if (modelMaxRaw !== "dataMax") { - this._modelMaxNum = parseAxisModelMinMax2(scale5, modelMaxRaw); - } - if (isOrdinal) { - this._axisDataLen = model.getCategories().length; - } else { - var boundaryGap = model.get("boundaryGap"); - var boundaryGapArr = isArray3(boundaryGap) ? boundaryGap : [boundaryGap || 0, boundaryGap || 0]; - if (typeof boundaryGapArr[0] === "boolean" || typeof boundaryGapArr[1] === "boolean") { - if (true) { - console.warn('Boolean type for boundaryGap is only allowed for ordinal axis. Please use string in percentage instead, e.g., "20%". Currently, boundaryGap is set to be 0.'); - } - this._boundaryGapInner = [0, 0]; - } else { - this._boundaryGapInner = [parsePercent3(boundaryGapArr[0], 1), parsePercent3(boundaryGapArr[1], 1)]; - } - } - }; - ScaleRawExtentInfo3.prototype.calculate = function() { - var isOrdinal = this._isOrdinal; - var dataMin = this._dataMin; - var dataMax = this._dataMax; - var axisDataLen = this._axisDataLen; - var boundaryGapInner = this._boundaryGapInner; - var span = !isOrdinal ? dataMax - dataMin || Math.abs(dataMin) : null; - var min5 = this._modelMinRaw === "dataMin" ? dataMin : this._modelMinNum; - var max5 = this._modelMaxRaw === "dataMax" ? dataMax : this._modelMaxNum; - var minFixed = min5 != null; - var maxFixed = max5 != null; - if (min5 == null) { - min5 = isOrdinal ? axisDataLen ? 0 : NaN : dataMin - boundaryGapInner[0] * span; - } - if (max5 == null) { - max5 = isOrdinal ? axisDataLen ? axisDataLen - 1 : NaN : dataMax + boundaryGapInner[1] * span; - } - (min5 == null || !isFinite(min5)) && (min5 = NaN); - (max5 == null || !isFinite(max5)) && (max5 = NaN); - var isBlank = eqNaN2(min5) || eqNaN2(max5) || isOrdinal && !axisDataLen; - if (this._needCrossZero) { - if (min5 > 0 && max5 > 0 && !minFixed) { - min5 = 0; - } - if (min5 < 0 && max5 < 0 && !maxFixed) { - max5 = 0; - } - } - var determinedMin = this._determinedMin; - var determinedMax = this._determinedMax; - if (determinedMin != null) { - min5 = determinedMin; - minFixed = true; - } - if (determinedMax != null) { - max5 = determinedMax; - maxFixed = true; - } - return { - min: min5, - max: max5, - minFixed, - maxFixed, - isBlank - }; - }; - ScaleRawExtentInfo3.prototype.modifyDataMinMax = function(minMaxName, val) { - if (true) { - assert2(!this.frozen); - } - this[DATA_MIN_MAX_ATTR2[minMaxName]] = val; - }; - ScaleRawExtentInfo3.prototype.setDeterminedMinMax = function(minMaxName, val) { - var attr = DETERMINED_MIN_MAX_ATTR2[minMaxName]; - if (true) { - assert2(!this.frozen && this[attr] == null); - } - this[attr] = val; - }; - ScaleRawExtentInfo3.prototype.freeze = function() { - this.frozen = true; - }; - return ScaleRawExtentInfo3; - }() - ); - var DETERMINED_MIN_MAX_ATTR2 = { - min: "_determinedMin", - max: "_determinedMax" - }; - var DATA_MIN_MAX_ATTR2 = { - min: "_dataMin", - max: "_dataMax" - }; - function ensureScaleRawExtentInfo2(scale5, model, originalExtent) { - var rawExtentInfo = scale5.rawExtentInfo; - if (rawExtentInfo) { - return rawExtentInfo; - } - rawExtentInfo = new ScaleRawExtentInfo2(scale5, model, originalExtent); - scale5.rawExtentInfo = rawExtentInfo; - return rawExtentInfo; - } - function parseAxisModelMinMax2(scale5, minMax) { - return minMax == null ? null : eqNaN2(minMax) ? NaN : scale5.parse(minMax); - } - function getScaleExtent2(scale5, model) { - var scaleType = scale5.type; - var rawExtentResult = ensureScaleRawExtentInfo2(scale5, model, scale5.getExtent()).calculate(); - scale5.setBlank(rawExtentResult.isBlank); - var min5 = rawExtentResult.min; - var max5 = rawExtentResult.max; - var ecModel = model.ecModel; - if (ecModel && scaleType === "time") { - var barSeriesModels = prepareLayoutBarSeries2("bar", ecModel); - var isBaseAxisAndHasBarSeries_1 = false; - each17(barSeriesModels, function(seriesModel) { - isBaseAxisAndHasBarSeries_1 = isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis; - }); - if (isBaseAxisAndHasBarSeries_1) { - var barWidthAndOffset = makeColumnLayout2(barSeriesModels); - var adjustedScale = adjustScaleForOverflow2(min5, max5, model, barWidthAndOffset); - min5 = adjustedScale.min; - max5 = adjustedScale.max; - } - } - return { - extent: [min5, max5], - // "fix" means "fixed", the value should not be - // changed in the subsequent steps. - fixMin: rawExtentResult.minFixed, - fixMax: rawExtentResult.maxFixed - }; - } - function adjustScaleForOverflow2(min5, max5, model, barWidthAndOffset) { - var axisExtent = model.axis.getExtent(); - var axisLength = Math.abs(axisExtent[1] - axisExtent[0]); - var barsOnCurrentAxis = retrieveColumnLayout2(barWidthAndOffset, model.axis); - if (barsOnCurrentAxis === void 0) { - return { - min: min5, - max: max5 - }; - } - var minOverflow = Infinity; - each17(barsOnCurrentAxis, function(item) { - minOverflow = Math.min(item.offset, minOverflow); - }); - var maxOverflow = -Infinity; - each17(barsOnCurrentAxis, function(item) { - maxOverflow = Math.max(item.offset + item.width, maxOverflow); - }); - minOverflow = Math.abs(minOverflow); - maxOverflow = Math.abs(maxOverflow); - var totalOverFlow = minOverflow + maxOverflow; - var oldRange = max5 - min5; - var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength; - var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange; - max5 += overflowBuffer * (maxOverflow / totalOverFlow); - min5 -= overflowBuffer * (minOverflow / totalOverFlow); - return { - min: min5, - max: max5 - }; - } - function niceScaleExtent2(scale5, inModel) { - var model = inModel; - var extentInfo = getScaleExtent2(scale5, model); - var extent4 = extentInfo.extent; - var splitNumber = model.get("splitNumber"); - if (scale5 instanceof LogScale2) { - scale5.base = model.get("logBase"); - } - var scaleType = scale5.type; - var interval = model.get("interval"); - var isIntervalOrTime = scaleType === "interval" || scaleType === "time"; - scale5.setExtent(extent4[0], extent4[1]); - scale5.calcNiceExtent({ - splitNumber, - fixMin: extentInfo.fixMin, - fixMax: extentInfo.fixMax, - minInterval: isIntervalOrTime ? model.get("minInterval") : null, - maxInterval: isIntervalOrTime ? model.get("maxInterval") : null - }); - if (interval != null) { - scale5.setInterval && scale5.setInterval(interval); - } - } - function createScaleByModel3(model, axisType) { - axisType = axisType || model.get("type"); - if (axisType) { - switch (axisType) { - case "category": - return new OrdinalScale2({ - ordinalMeta: model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(), - extent: [Infinity, -Infinity] - }); - case "time": - return new TimeScale2({ - locale: model.ecModel.getLocaleModel(), - useUTC: model.ecModel.get("useUTC") - }); - default: - return new (Scale2.getClass(axisType) || IntervalScale2)(); - } - } - } - function ifAxisCrossZero2(axis) { - var dataExtent = axis.scale.getExtent(); - var min5 = dataExtent[0]; - var max5 = dataExtent[1]; - return !(min5 > 0 && max5 > 0 || min5 < 0 && max5 < 0); - } - function makeLabelFormatter2(axis) { - var labelFormatter = axis.getLabelModel().get("formatter"); - var categoryTickStart = axis.type === "category" ? axis.scale.getExtent()[0] : null; - if (axis.scale.type === "time") { - return /* @__PURE__ */ function(tpl) { - return function(tick, idx) { - return axis.scale.getFormattedLabel(tick, idx, tpl); - }; - }(labelFormatter); - } else if (isString2(labelFormatter)) { - return /* @__PURE__ */ function(tpl) { - return function(tick) { - var label = axis.scale.getLabel(tick); - var text = tpl.replace("{value}", label != null ? label : ""); - return text; - }; - }(labelFormatter); - } else if (isFunction2(labelFormatter)) { - return /* @__PURE__ */ function(cb) { - return function(tick, idx) { - if (categoryTickStart != null) { - idx = tick.value - categoryTickStart; - } - return cb(getAxisRawValue2(axis, tick), idx, tick.level != null ? { - level: tick.level - } : null); - }; - }(labelFormatter); - } else { - return function(tick) { - return axis.scale.getLabel(tick); - }; - } - } - function getAxisRawValue2(axis, tick) { - return axis.type === "category" ? axis.scale.getLabel(tick) : tick.value; - } - function estimateLabelUnionRect2(axis) { - var axisModel = axis.model; - var scale5 = axis.scale; - if (!axisModel.get(["axisLabel", "show"]) || scale5.isBlank()) { - return; - } - var realNumberScaleTicks; - var tickCount; - var categoryScaleExtent = scale5.getExtent(); - if (scale5 instanceof OrdinalScale2) { - tickCount = scale5.count(); - } else { - realNumberScaleTicks = scale5.getTicks(); - tickCount = realNumberScaleTicks.length; - } - var axisLabelModel = axis.getLabelModel(); - var labelFormatter = makeLabelFormatter2(axis); - var rect; - var step = 1; - if (tickCount > 40) { - step = Math.ceil(tickCount / 40); - } - for (var i2 = 0; i2 < tickCount; i2 += step) { - var tick = realNumberScaleTicks ? realNumberScaleTicks[i2] : { - value: categoryScaleExtent[0] + i2 - }; - var label = labelFormatter(tick, i2); - var unrotatedSingleRect = axisLabelModel.getTextRect(label); - var singleRect = rotateTextRect2(unrotatedSingleRect, axisLabelModel.get("rotate") || 0); - rect ? rect.union(singleRect) : rect = singleRect; - } - return rect; - } - function rotateTextRect2(textRect, rotate3) { - var rotateRadians = rotate3 * Math.PI / 180; - var beforeWidth = textRect.width; - var beforeHeight = textRect.height; - var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians)) + Math.abs(beforeHeight * Math.sin(rotateRadians)); - var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians)) + Math.abs(beforeHeight * Math.cos(rotateRadians)); - var rotatedRect = new BoundingRect2(textRect.x, textRect.y, afterWidth, afterHeight); - return rotatedRect; - } - function getOptionCategoryInterval2(model) { - var interval = model.get("interval"); - return interval == null ? "auto" : interval; - } - function shouldShowAllLabels2(axis) { - return axis.type === "category" && getOptionCategoryInterval2(axis.getLabelModel()) === 0; - } - function getDataDimensionsOnAxis2(data, axisDim) { - var dataDimMap = {}; - each17(data.mapDimensionsAll(axisDim), function(dataDim) { - dataDimMap[getStackedDimension2(data, dataDim)] = true; - }); - return keys2(dataDimMap); - } - function unionAxisExtentFromData2(dataExtent, data, axisDim) { - if (data) { - each17(getDataDimensionsOnAxis2(data, axisDim), function(dim) { - var seriesExtent = data.getApproximateExtent(dim); - seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]); - seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]); - }); - } - } - var AxisModelCommonMixin2 = ( - /** @class */ - function() { - function AxisModelCommonMixin3() { - } - AxisModelCommonMixin3.prototype.getNeedCrossZero = function() { - var option = this.option; - return !option.scale; - }; - AxisModelCommonMixin3.prototype.getCoordSysModel = function() { - return; - }; - return AxisModelCommonMixin3; - }() - ); - function createList4(seriesModel) { - return createSeriesData2(null, seriesModel); - } - var dataStack$1 = { - isDimensionStacked: isDimensionStacked2, - enableDataStack: enableDataStack2, - getStackedDimension: getStackedDimension2 - }; - function createScale2(dataExtent, option) { - var axisModel = option; - if (!(option instanceof Model2)) { - axisModel = new Model2(option); - } - var scale5 = createScaleByModel3(axisModel); - scale5.setExtent(dataExtent[0], dataExtent[1]); - niceScaleExtent2(scale5, axisModel); - return scale5; - } - function mixinAxisModelCommonMethods2(Model3) { - mixin2(Model3, AxisModelCommonMixin2); - } - function createTextStyle$1(textStyleModel, opts) { - opts = opts || {}; - return createTextStyle3(textStyleModel, null, null, opts.state !== "normal"); - } - var helper = /* @__PURE__ */ Object.freeze({ - __proto__: null, - createList: createList4, - getLayoutRect: getLayoutRect2, - dataStack: dataStack$1, - createScale: createScale2, - mixinAxisModelCommonMethods: mixinAxisModelCommonMethods2, - getECData: getECData2, - createTextStyle: createTextStyle$1, - createDimensions: createDimensions2, - createSymbol: createSymbol3, - enableHoverEmphasis: enableHoverEmphasis2 - }); - var EPSILON$4 = 1e-8; - function isAroundEqual$1(a, b) { - return Math.abs(a - b) < EPSILON$4; - } - function contain$2(points5, x, y) { - var w = 0; - var p = points5[0]; - if (!p) { - return false; - } - for (var i2 = 1; i2 < points5.length; i2++) { - var p2 = points5[i2]; - w += windingLine2(p[0], p[1], p2[0], p2[1], x, y); - p = p2; - } - var p0 = points5[0]; - if (!isAroundEqual$1(p[0], p0[0]) || !isAroundEqual$1(p[1], p0[1])) { - w += windingLine2(p[0], p[1], p0[0], p0[1], x, y); - } - return w !== 0; - } - var TMP_TRANSFORM2 = []; - function transformPoints2(points5, transform2) { - for (var p = 0; p < points5.length; p++) { - applyTransform3(points5[p], points5[p], transform2); - } - } - function updateBBoxFromPoints2(points5, min$12, max$12, projection) { - for (var i2 = 0; i2 < points5.length; i2++) { - var p = points5[i2]; - if (projection) { - p = projection.project(p); - } - if (p && isFinite(p[0]) && isFinite(p[1])) { - min4(min$12, min$12, p); - max4(max$12, max$12, p); - } - } - } - function centroid3(points5) { - var signedArea = 0; - var cx = 0; - var cy = 0; - var len3 = points5.length; - var x0 = points5[len3 - 1][0]; - var y0 = points5[len3 - 1][1]; - for (var i2 = 0; i2 < len3; i2++) { - var x1 = points5[i2][0]; - var y1 = points5[i2][1]; - var a = x0 * y1 - x1 * y0; - signedArea += a; - cx += (x0 + x1) * a; - cy += (y0 + y1) * a; - x0 = x1; - y0 = y1; - } - return signedArea ? [cx / signedArea / 3, cy / signedArea / 3, signedArea] : [points5[0][0] || 0, points5[0][1] || 0]; - } - var Region2 = ( - /** @class */ - function() { - function Region3(name) { - this.name = name; - } - Region3.prototype.setCenter = function(center4) { - this._center = center4; - }; - Region3.prototype.getCenter = function() { - var center4 = this._center; - if (!center4) { - center4 = this._center = this.calcCenter(); - } - return center4; - }; - return Region3; - }() - ); - var GeoJSONPolygonGeometry2 = ( - /** @class */ - /* @__PURE__ */ function() { - function GeoJSONPolygonGeometry3(exterior, interiors) { - this.type = "polygon"; - this.exterior = exterior; - this.interiors = interiors; - } - return GeoJSONPolygonGeometry3; - }() - ); - var GeoJSONLineStringGeometry2 = ( - /** @class */ - /* @__PURE__ */ function() { - function GeoJSONLineStringGeometry3(points5) { - this.type = "linestring"; - this.points = points5; - } - return GeoJSONLineStringGeometry3; - }() - ); - var GeoJSONRegion2 = ( - /** @class */ - function(_super) { - __extends2(GeoJSONRegion3, _super); - function GeoJSONRegion3(name, geometries, cp) { - var _this = _super.call(this, name) || this; - _this.type = "geoJSON"; - _this.geometries = geometries; - _this._center = cp && [cp[0], cp[1]]; - return _this; - } - GeoJSONRegion3.prototype.calcCenter = function() { - var geometries = this.geometries; - var largestGeo; - var largestGeoSize = 0; - for (var i2 = 0; i2 < geometries.length; i2++) { - var geo = geometries[i2]; - var exterior = geo.exterior; - var size2 = exterior && exterior.length; - if (size2 > largestGeoSize) { - largestGeo = geo; - largestGeoSize = size2; - } - } - if (largestGeo) { - return centroid3(largestGeo.exterior); - } - var rect = this.getBoundingRect(); - return [rect.x + rect.width / 2, rect.y + rect.height / 2]; - }; - GeoJSONRegion3.prototype.getBoundingRect = function(projection) { - var rect = this._rect; - if (rect && !projection) { - return rect; - } - var min5 = [Infinity, Infinity]; - var max5 = [-Infinity, -Infinity]; - var geometries = this.geometries; - each17(geometries, function(geo) { - if (geo.type === "polygon") { - updateBBoxFromPoints2(geo.exterior, min5, max5, projection); - } else { - each17(geo.points, function(points5) { - updateBBoxFromPoints2(points5, min5, max5, projection); - }); - } - }); - if (!(isFinite(min5[0]) && isFinite(min5[1]) && isFinite(max5[0]) && isFinite(max5[1]))) { - min5[0] = min5[1] = max5[0] = max5[1] = 0; - } - rect = new BoundingRect2(min5[0], min5[1], max5[0] - min5[0], max5[1] - min5[1]); - if (!projection) { - this._rect = rect; - } - return rect; - }; - GeoJSONRegion3.prototype.contain = function(coord) { - var rect = this.getBoundingRect(); - var geometries = this.geometries; - if (!rect.contain(coord[0], coord[1])) { - return false; - } - loopGeo: - for (var i2 = 0, len3 = geometries.length; i2 < len3; i2++) { - var geo = geometries[i2]; - if (geo.type !== "polygon") { - continue; - } - var exterior = geo.exterior; - var interiors = geo.interiors; - if (contain$2(exterior, coord[0], coord[1])) { - for (var k2 = 0; k2 < (interiors ? interiors.length : 0); k2++) { - if (contain$2(interiors[k2], coord[0], coord[1])) { - continue loopGeo; - } - } - return true; - } - } - return false; - }; - GeoJSONRegion3.prototype.transformTo = function(x, y, width, height) { - var rect = this.getBoundingRect(); - var aspect = rect.width / rect.height; - if (!width) { - width = aspect * height; - } else if (!height) { - height = width / aspect; - } - var target = new BoundingRect2(x, y, width, height); - var transform2 = rect.calculateTransform(target); - var geometries = this.geometries; - for (var i2 = 0; i2 < geometries.length; i2++) { - var geo = geometries[i2]; - if (geo.type === "polygon") { - transformPoints2(geo.exterior, transform2); - each17(geo.interiors, function(interior) { - transformPoints2(interior, transform2); - }); - } else { - each17(geo.points, function(points5) { - transformPoints2(points5, transform2); - }); - } - } - rect = this._rect; - rect.copy(target); - this._center = [rect.x + rect.width / 2, rect.y + rect.height / 2]; - }; - GeoJSONRegion3.prototype.cloneShallow = function(name) { - name == null && (name = this.name); - var newRegion = new GeoJSONRegion3(name, this.geometries, this._center); - newRegion._rect = this._rect; - newRegion.transformTo = null; - return newRegion; - }; - return GeoJSONRegion3; - }(Region2) - ); - var GeoSVGRegion2 = ( - /** @class */ - function(_super) { - __extends2(GeoSVGRegion3, _super); - function GeoSVGRegion3(name, elOnlyForCalculate) { - var _this = _super.call(this, name) || this; - _this.type = "geoSVG"; - _this._elOnlyForCalculate = elOnlyForCalculate; - return _this; - } - GeoSVGRegion3.prototype.calcCenter = function() { - var el = this._elOnlyForCalculate; - var rect = el.getBoundingRect(); - var center4 = [rect.x + rect.width / 2, rect.y + rect.height / 2]; - var mat = identity2(TMP_TRANSFORM2); - var target = el; - while (target && !target.isGeoSVGGraphicRoot) { - mul$1(mat, target.getLocalTransform(), mat); - target = target.parent; - } - invert2(mat, mat); - applyTransform3(center4, center4, mat); - return center4; - }; - return GeoSVGRegion3; - }(Region2) - ); - function decode2(json) { - if (!json.UTF8Encoding) { - return json; - } - var jsonCompressed = json; - var encodeScale = jsonCompressed.UTF8Scale; - if (encodeScale == null) { - encodeScale = 1024; - } - var features3 = jsonCompressed.features; - each17(features3, function(feature) { - var geometry = feature.geometry; - var encodeOffsets = geometry.encodeOffsets; - var coordinates = geometry.coordinates; - if (!encodeOffsets) { - return; - } - switch (geometry.type) { - case "LineString": - geometry.coordinates = decodeRing2(coordinates, encodeOffsets, encodeScale); - break; - case "Polygon": - decodeRings2(coordinates, encodeOffsets, encodeScale); - break; - case "MultiLineString": - decodeRings2(coordinates, encodeOffsets, encodeScale); - break; - case "MultiPolygon": - each17(coordinates, function(rings, idx) { - return decodeRings2(rings, encodeOffsets[idx], encodeScale); - }); - } - }); - jsonCompressed.UTF8Encoding = false; - return jsonCompressed; - } - function decodeRings2(rings, encodeOffsets, encodeScale) { - for (var c = 0; c < rings.length; c++) { - rings[c] = decodeRing2(rings[c], encodeOffsets[c], encodeScale); - } - } - function decodeRing2(coordinate, encodeOffsets, encodeScale) { - var result = []; - var prevX = encodeOffsets[0]; - var prevY = encodeOffsets[1]; - for (var i2 = 0; i2 < coordinate.length; i2 += 2) { - var x = coordinate.charCodeAt(i2) - 64; - var y = coordinate.charCodeAt(i2 + 1) - 64; - x = x >> 1 ^ -(x & 1); - y = y >> 1 ^ -(y & 1); - x += prevX; - y += prevY; - prevX = x; - prevY = y; - result.push([x / encodeScale, y / encodeScale]); - } - return result; - } - function parseGeoJSON2(geoJson, nameProperty) { - geoJson = decode2(geoJson); - return map3(filter2(geoJson.features, function(featureObj) { - return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0; - }), function(featureObj) { - var properties = featureObj.properties; - var geo = featureObj.geometry; - var geometries = []; - switch (geo.type) { - case "Polygon": - var coordinates = geo.coordinates; - geometries.push(new GeoJSONPolygonGeometry2(coordinates[0], coordinates.slice(1))); - break; - case "MultiPolygon": - each17(geo.coordinates, function(item) { - if (item[0]) { - geometries.push(new GeoJSONPolygonGeometry2(item[0], item.slice(1))); - } - }); - break; - case "LineString": - geometries.push(new GeoJSONLineStringGeometry2([geo.coordinates])); - break; - case "MultiLineString": - geometries.push(new GeoJSONLineStringGeometry2(geo.coordinates)); - } - var region = new GeoJSONRegion2(properties[nameProperty || "name"], geometries, properties.cp); - region.properties = properties; - return region; - }); - } - var number = /* @__PURE__ */ Object.freeze({ - __proto__: null, - linearMap: linearMap4, - round: round8, - asc: asc4, - getPrecision: getPrecision2, - getPrecisionSafe: getPrecisionSafe2, - getPixelPrecision: getPixelPrecision2, - getPercentWithPrecision: getPercentWithPrecision2, - MAX_SAFE_INTEGER: MAX_SAFE_INTEGER2, - remRadian: remRadian2, - isRadianAroundZero: isRadianAroundZero2, - parseDate: parseDate2, - quantity: quantity2, - quantityExponent: quantityExponent2, - nice: nice2, - quantile: quantile2, - reformIntervals: reformIntervals2, - isNumeric: isNumeric2, - numericToNumber: numericToNumber2 - }); - var time = /* @__PURE__ */ Object.freeze({ - __proto__: null, - parse: parseDate2, - format: format2 - }); - var graphic$1 = /* @__PURE__ */ Object.freeze({ - __proto__: null, - extendShape: extendShape2, - extendPath: extendPath2, - makePath: makePath2, - makeImage: makeImage2, - mergePath: mergePath$1, - resizePath: resizePath2, - createIcon: createIcon2, - updateProps: updateProps3, - initProps: initProps2, - getTransform: getTransform3, - clipPointsByRect: clipPointsByRect2, - clipRectByRect: clipRectByRect2, - registerShape: registerShape2, - getShapeClass: getShapeClass2, - Group: Group5, - Image: ZRImage2, - Text: ZRText2, - Circle: Circle2, - Ellipse: Ellipse2, - Sector: Sector2, - Ring: Ring2, - Polygon: Polygon2, - Polyline: Polyline3, - Rect: Rect4, - Line: Line3, - BezierCurve: BezierCurve2, - Arc: Arc2, - IncrementalDisplayable: IncrementalDisplayable2, - CompoundPath: CompoundPath2, - LinearGradient: LinearGradient2, - RadialGradient: RadialGradient2, - BoundingRect: BoundingRect2 - }); - var format$1 = /* @__PURE__ */ Object.freeze({ - __proto__: null, - addCommas: addCommas2, - toCamelCase: toCamelCase2, - normalizeCssArray: normalizeCssArray$1, - encodeHTML: encodeHTML2, - formatTpl: formatTpl2, - getTooltipMarker: getTooltipMarker2, - formatTime: formatTime2, - capitalFirst: capitalFirst2, - truncateText: truncateText3, - getTextRect: getTextRect2 - }); - var util$1 = /* @__PURE__ */ Object.freeze({ - __proto__: null, - map: map3, - each: each17, - indexOf: indexOf2, - inherits: inherits2, - reduce: reduce2, - filter: filter2, - bind: bind3, - curry: curry3, - isArray: isArray3, - isString: isString2, - isObject: isObject5, - isFunction: isFunction2, - extend: extend3, - defaults: defaults2, - clone: clone6, - merge: merge2 - }); - var inner$5 = makeInner2(); - function tickValuesToNumbers2(axis, values) { - var nums = map3(values, function(val) { - return axis.scale.parse(val); - }); - if (axis.type === "time" && nums.length > 0) { - nums.sort(); - nums.unshift(nums[0]); - nums.push(nums[nums.length - 1]); - } - return nums; - } - function createAxisLabels2(axis) { - var custom = axis.getLabelModel().get("customValues"); - if (custom) { - var labelFormatter_1 = makeLabelFormatter2(axis); - var extent_1 = axis.scale.getExtent(); - var tickNumbers = tickValuesToNumbers2(axis, custom); - var ticks = filter2(tickNumbers, function(val) { - return val >= extent_1[0] && val <= extent_1[1]; - }); - return { - labels: map3(ticks, function(numval) { - var tick = { - value: numval - }; - return { - formattedLabel: labelFormatter_1(tick), - rawLabel: axis.scale.getLabel(tick), - tickValue: numval - }; - }) - }; - } - return axis.type === "category" ? makeCategoryLabels2(axis) : makeRealNumberLabels2(axis); - } - function createAxisTicks2(axis, tickModel) { - var custom = axis.getTickModel().get("customValues"); - if (custom) { - var extent_2 = axis.scale.getExtent(); - var tickNumbers = tickValuesToNumbers2(axis, custom); - return { - ticks: filter2(tickNumbers, function(val) { - return val >= extent_2[0] && val <= extent_2[1]; - }) - }; - } - return axis.type === "category" ? makeCategoryTicks2(axis, tickModel) : { - ticks: map3(axis.scale.getTicks(), function(tick) { - return tick.value; - }) - }; - } - function makeCategoryLabels2(axis) { - var labelModel = axis.getLabelModel(); - var result = makeCategoryLabelsActually2(axis, labelModel); - return !labelModel.get("show") || axis.scale.isBlank() ? { - labels: [], - labelCategoryInterval: result.labelCategoryInterval - } : result; - } - function makeCategoryLabelsActually2(axis, labelModel) { - var labelsCache = getListCache2(axis, "labels"); - var optionLabelInterval = getOptionCategoryInterval2(labelModel); - var result = listCacheGet2(labelsCache, optionLabelInterval); - if (result) { - return result; - } - var labels; - var numericLabelInterval; - if (isFunction2(optionLabelInterval)) { - labels = makeLabelsByCustomizedCategoryInterval2(axis, optionLabelInterval); - } else { - numericLabelInterval = optionLabelInterval === "auto" ? makeAutoCategoryInterval2(axis) : optionLabelInterval; - labels = makeLabelsByNumericCategoryInterval2(axis, numericLabelInterval); - } - return listCacheSet2(labelsCache, optionLabelInterval, { - labels, - labelCategoryInterval: numericLabelInterval - }); - } - function makeCategoryTicks2(axis, tickModel) { - var ticksCache = getListCache2(axis, "ticks"); - var optionTickInterval = getOptionCategoryInterval2(tickModel); - var result = listCacheGet2(ticksCache, optionTickInterval); - if (result) { - return result; - } - var ticks; - var tickCategoryInterval; - if (!tickModel.get("show") || axis.scale.isBlank()) { - ticks = []; - } - if (isFunction2(optionTickInterval)) { - ticks = makeLabelsByCustomizedCategoryInterval2(axis, optionTickInterval, true); - } else if (optionTickInterval === "auto") { - var labelsResult = makeCategoryLabelsActually2(axis, axis.getLabelModel()); - tickCategoryInterval = labelsResult.labelCategoryInterval; - ticks = map3(labelsResult.labels, function(labelItem) { - return labelItem.tickValue; - }); - } else { - tickCategoryInterval = optionTickInterval; - ticks = makeLabelsByNumericCategoryInterval2(axis, tickCategoryInterval, true); - } - return listCacheSet2(ticksCache, optionTickInterval, { - ticks, - tickCategoryInterval - }); - } - function makeRealNumberLabels2(axis) { - var ticks = axis.scale.getTicks(); - var labelFormatter = makeLabelFormatter2(axis); - return { - labels: map3(ticks, function(tick, idx) { - return { - level: tick.level, - formattedLabel: labelFormatter(tick, idx), - rawLabel: axis.scale.getLabel(tick), - tickValue: tick.value - }; - }) - }; - } - function getListCache2(axis, prop) { - return inner$5(axis)[prop] || (inner$5(axis)[prop] = []); - } - function listCacheGet2(cache2, key) { - for (var i2 = 0; i2 < cache2.length; i2++) { - if (cache2[i2].key === key) { - return cache2[i2].value; - } - } - } - function listCacheSet2(cache2, key, value) { - cache2.push({ - key, - value - }); - return value; - } - function makeAutoCategoryInterval2(axis) { - var result = inner$5(axis).autoInterval; - return result != null ? result : inner$5(axis).autoInterval = axis.calculateCategoryInterval(); - } - function calculateCategoryInterval2(axis) { - var params = fetchAutoCategoryIntervalCalculationParams2(axis); - var labelFormatter = makeLabelFormatter2(axis); - var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI; - var ordinalScale = axis.scale; - var ordinalExtent = ordinalScale.getExtent(); - var tickCount = ordinalScale.count(); - if (ordinalExtent[1] - ordinalExtent[0] < 1) { - return 0; - } - var step = 1; - if (tickCount > 40) { - step = Math.max(1, Math.floor(tickCount / 40)); - } - var tickValue = ordinalExtent[0]; - var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue); - var unitW = Math.abs(unitSpan * Math.cos(rotation)); - var unitH = Math.abs(unitSpan * Math.sin(rotation)); - var maxW = 0; - var maxH = 0; - for (; tickValue <= ordinalExtent[1]; tickValue += step) { - var width = 0; - var height = 0; - var rect = getBoundingRect2(labelFormatter({ - value: tickValue - }), params.font, "center", "top"); - width = rect.width * 1.3; - height = rect.height * 1.3; - maxW = Math.max(maxW, width, 7); - maxH = Math.max(maxH, height, 7); - } - var dw = maxW / unitW; - var dh = maxH / unitH; - isNaN(dw) && (dw = Infinity); - isNaN(dh) && (dh = Infinity); - var interval = Math.max(0, Math.floor(Math.min(dw, dh))); - var cache2 = inner$5(axis.model); - var axisExtent = axis.getExtent(); - var lastAutoInterval = cache2.lastAutoInterval; - var lastTickCount = cache2.lastTickCount; - if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 && lastAutoInterval > interval && cache2.axisExtent0 === axisExtent[0] && cache2.axisExtent1 === axisExtent[1]) { - interval = lastAutoInterval; - } else { - cache2.lastTickCount = tickCount; - cache2.lastAutoInterval = interval; - cache2.axisExtent0 = axisExtent[0]; - cache2.axisExtent1 = axisExtent[1]; - } - return interval; - } - function fetchAutoCategoryIntervalCalculationParams2(axis) { - var labelModel = axis.getLabelModel(); - return { - axisRotate: axis.getRotate ? axis.getRotate() : axis.isHorizontal && !axis.isHorizontal() ? 90 : 0, - labelRotate: labelModel.get("rotate") || 0, - font: labelModel.getFont() - }; - } - function makeLabelsByNumericCategoryInterval2(axis, categoryInterval, onlyTick) { - var labelFormatter = makeLabelFormatter2(axis); - var ordinalScale = axis.scale; - var ordinalExtent = ordinalScale.getExtent(); - var labelModel = axis.getLabelModel(); - var result = []; - var step = Math.max((categoryInterval || 0) + 1, 1); - var startTick = ordinalExtent[0]; - var tickCount = ordinalScale.count(); - if (startTick !== 0 && step > 1 && tickCount / step > 2) { - startTick = Math.round(Math.ceil(startTick / step) * step); - } - var showAllLabel = shouldShowAllLabels2(axis); - var includeMinLabel = labelModel.get("showMinLabel") || showAllLabel; - var includeMaxLabel = labelModel.get("showMaxLabel") || showAllLabel; - if (includeMinLabel && startTick !== ordinalExtent[0]) { - addItem(ordinalExtent[0]); - } - var tickValue = startTick; - for (; tickValue <= ordinalExtent[1]; tickValue += step) { - addItem(tickValue); - } - if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) { - addItem(ordinalExtent[1]); - } - function addItem(tickValue2) { - var tickObj = { - value: tickValue2 - }; - result.push(onlyTick ? tickValue2 : { - formattedLabel: labelFormatter(tickObj), - rawLabel: ordinalScale.getLabel(tickObj), - tickValue: tickValue2 - }); - } - return result; - } - function makeLabelsByCustomizedCategoryInterval2(axis, categoryInterval, onlyTick) { - var ordinalScale = axis.scale; - var labelFormatter = makeLabelFormatter2(axis); - var result = []; - each17(ordinalScale.getTicks(), function(tick) { - var rawLabel = ordinalScale.getLabel(tick); - var tickValue = tick.value; - if (categoryInterval(tick.value, rawLabel)) { - result.push(onlyTick ? tickValue : { - formattedLabel: labelFormatter(tick), - rawLabel, - tickValue - }); - } - }); - return result; - } - var NORMALIZED_EXTENT2 = [0, 1]; - var Axis2 = ( - /** @class */ - function() { - function Axis3(dim, scale5, extent4) { - this.onBand = false; - this.inverse = false; - this.dim = dim; - this.scale = scale5; - this._extent = extent4 || [0, 0]; - } - Axis3.prototype.contain = function(coord) { - var extent4 = this._extent; - var min5 = Math.min(extent4[0], extent4[1]); - var max5 = Math.max(extent4[0], extent4[1]); - return coord >= min5 && coord <= max5; - }; - Axis3.prototype.containData = function(data) { - return this.scale.contain(data); - }; - Axis3.prototype.getExtent = function() { - return this._extent.slice(); - }; - Axis3.prototype.getPixelPrecision = function(dataExtent) { - return getPixelPrecision2(dataExtent || this.scale.getExtent(), this._extent); - }; - Axis3.prototype.setExtent = function(start4, end3) { - var extent4 = this._extent; - extent4[0] = start4; - extent4[1] = end3; - }; - Axis3.prototype.dataToCoord = function(data, clamp4) { - var extent4 = this._extent; - var scale5 = this.scale; - data = scale5.normalize(data); - if (this.onBand && scale5.type === "ordinal") { - extent4 = extent4.slice(); - fixExtentWithBands2(extent4, scale5.count()); - } - return linearMap4(data, NORMALIZED_EXTENT2, extent4, clamp4); - }; - Axis3.prototype.coordToData = function(coord, clamp4) { - var extent4 = this._extent; - var scale5 = this.scale; - if (this.onBand && scale5.type === "ordinal") { - extent4 = extent4.slice(); - fixExtentWithBands2(extent4, scale5.count()); - } - var t = linearMap4(coord, extent4, NORMALIZED_EXTENT2, clamp4); - return this.scale.scale(t); - }; - Axis3.prototype.pointToData = function(point, clamp4) { - return; - }; - Axis3.prototype.getTicksCoords = function(opt) { - opt = opt || {}; - var tickModel = opt.tickModel || this.getTickModel(); - var result = createAxisTicks2(this, tickModel); - var ticks = result.ticks; - var ticksCoords = map3(ticks, function(tickVal) { - return { - coord: this.dataToCoord(this.scale.type === "ordinal" ? this.scale.getRawOrdinalNumber(tickVal) : tickVal), - tickValue: tickVal - }; - }, this); - var alignWithLabel = tickModel.get("alignWithLabel"); - fixOnBandTicksCoords2(this, ticksCoords, alignWithLabel, opt.clamp); - return ticksCoords; - }; - Axis3.prototype.getMinorTicksCoords = function() { - if (this.scale.type === "ordinal") { - return []; - } - var minorTickModel = this.model.getModel("minorTick"); - var splitNumber = minorTickModel.get("splitNumber"); - if (!(splitNumber > 0 && splitNumber < 100)) { - splitNumber = 5; - } - var minorTicks = this.scale.getMinorTicks(splitNumber); - var minorTicksCoords = map3(minorTicks, function(minorTicksGroup) { - return map3(minorTicksGroup, function(minorTick) { - return { - coord: this.dataToCoord(minorTick), - tickValue: minorTick - }; - }, this); - }, this); - return minorTicksCoords; - }; - Axis3.prototype.getViewLabels = function() { - return createAxisLabels2(this).labels; - }; - Axis3.prototype.getLabelModel = function() { - return this.model.getModel("axisLabel"); - }; - Axis3.prototype.getTickModel = function() { - return this.model.getModel("axisTick"); - }; - Axis3.prototype.getBandWidth = function() { - var axisExtent = this._extent; - var dataExtent = this.scale.getExtent(); - var len3 = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0); - len3 === 0 && (len3 = 1); - var size2 = Math.abs(axisExtent[1] - axisExtent[0]); - return Math.abs(size2) / len3; - }; - Axis3.prototype.calculateCategoryInterval = function() { - return calculateCategoryInterval2(this); - }; - return Axis3; - }() - ); - function fixExtentWithBands2(extent4, nTick) { - var size2 = extent4[1] - extent4[0]; - var len3 = nTick; - var margin = size2 / len3 / 2; - extent4[0] += margin; - extent4[1] -= margin; - } - function fixOnBandTicksCoords2(axis, ticksCoords, alignWithLabel, clamp4) { - var ticksLen = ticksCoords.length; - if (!axis.onBand || alignWithLabel || !ticksLen) { - return; - } - var axisExtent = axis.getExtent(); - var last; - var diffSize; - if (ticksLen === 1) { - ticksCoords[0].coord = axisExtent[0]; - last = ticksCoords[1] = { - coord: axisExtent[1], - tickValue: ticksCoords[0].tickValue - }; - } else { - var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue; - var shift_1 = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen; - each17(ticksCoords, function(ticksItem) { - ticksItem.coord -= shift_1 / 2; - }); - var dataExtent = axis.scale.getExtent(); - diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue; - last = { - coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize, - tickValue: dataExtent[1] + 1 - }; - ticksCoords.push(last); - } - var inverse = axisExtent[0] > axisExtent[1]; - if (littleThan3(ticksCoords[0].coord, axisExtent[0])) { - clamp4 ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift(); - } - if (clamp4 && littleThan3(axisExtent[0], ticksCoords[0].coord)) { - ticksCoords.unshift({ - coord: axisExtent[0] - }); - } - if (littleThan3(axisExtent[1], last.coord)) { - clamp4 ? last.coord = axisExtent[1] : ticksCoords.pop(); - } - if (clamp4 && littleThan3(last.coord, axisExtent[1])) { - ticksCoords.push({ - coord: axisExtent[1] - }); - } - function littleThan3(a, b) { - a = round8(a); - b = round8(b); - return inverse ? a > b : a < b; - } - } - function extendComponentModel2(proto3) { - var Model3 = ComponentModel2.extend(proto3); - ComponentModel2.registerClass(Model3); - return Model3; - } - function extendComponentView2(proto3) { - var View4 = ComponentView2.extend(proto3); - ComponentView2.registerClass(View4); - return View4; - } - function extendSeriesModel2(proto3) { - var Model3 = SeriesModel2.extend(proto3); - SeriesModel2.registerClass(Model3); - return Model3; - } - function extendChartView2(proto3) { - var View4 = ChartView2.extend(proto3); - ChartView2.registerClass(View4); - return View4; - } - var PI2$6 = Math.PI * 2; - var CMD$3 = PathProxy2.CMD; - var DEFAULT_SEARCH_SPACE2 = ["top", "right", "bottom", "left"]; - function getCandidateAnchor2(pos, distance3, rect, outPt, outDir) { - var width = rect.width; - var height = rect.height; - switch (pos) { - case "top": - outPt.set(rect.x + width / 2, rect.y - distance3); - outDir.set(0, -1); - break; - case "bottom": - outPt.set(rect.x + width / 2, rect.y + height + distance3); - outDir.set(0, 1); - break; - case "left": - outPt.set(rect.x - distance3, rect.y + height / 2); - outDir.set(-1, 0); - break; - case "right": - outPt.set(rect.x + width + distance3, rect.y + height / 2); - outDir.set(1, 0); - break; - } - } - function projectPointToArc2(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out3) { - x -= cx; - y -= cy; - var d = Math.sqrt(x * x + y * y); - x /= d; - y /= d; - var ox = x * r + cx; - var oy = y * r + cy; - if (Math.abs(startAngle - endAngle) % PI2$6 < 1e-4) { - out3[0] = ox; - out3[1] = oy; - return d - r; - } - if (anticlockwise) { - var tmp = startAngle; - startAngle = normalizeRadian2(endAngle); - endAngle = normalizeRadian2(tmp); - } else { - startAngle = normalizeRadian2(startAngle); - endAngle = normalizeRadian2(endAngle); - } - if (startAngle > endAngle) { - endAngle += PI2$6; - } - var angle = Math.atan2(y, x); - if (angle < 0) { - angle += PI2$6; - } - if (angle >= startAngle && angle <= endAngle || angle + PI2$6 >= startAngle && angle + PI2$6 <= endAngle) { - out3[0] = ox; - out3[1] = oy; - return d - r; - } - var x1 = r * Math.cos(startAngle) + cx; - var y1 = r * Math.sin(startAngle) + cy; - var x2 = r * Math.cos(endAngle) + cx; - var y2 = r * Math.sin(endAngle) + cy; - var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y); - var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y); - if (d1 < d2) { - out3[0] = x1; - out3[1] = y1; - return Math.sqrt(d1); - } else { - out3[0] = x2; - out3[1] = y2; - return Math.sqrt(d2); - } - } - function projectPointToLine2(x1, y1, x2, y2, x, y, out3, limitToEnds) { - var dx = x - x1; - var dy = y - y1; - var dx1 = x2 - x1; - var dy1 = y2 - y1; - var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1); - dx1 /= lineLen; - dy1 /= lineLen; - var projectedLen = dx * dx1 + dy * dy1; - var t = projectedLen / lineLen; - if (limitToEnds) { - t = Math.min(Math.max(t, 0), 1); - } - t *= lineLen; - var ox = out3[0] = x1 + t * dx1; - var oy = out3[1] = y1 + t * dy1; - return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y)); - } - function projectPointToRect2(x1, y1, width, height, x, y, out3) { - if (width < 0) { - x1 = x1 + width; - width = -width; - } - if (height < 0) { - y1 = y1 + height; - height = -height; - } - var x2 = x1 + width; - var y2 = y1 + height; - var ox = out3[0] = Math.min(Math.max(x, x1), x2); - var oy = out3[1] = Math.min(Math.max(y, y1), y2); - return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y)); - } - var tmpPt2 = []; - function nearestPointOnRect2(pt, rect, out3) { - var dist4 = projectPointToRect2(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt2); - out3.set(tmpPt2[0], tmpPt2[1]); - return dist4; - } - function nearestPointOnPath2(pt, path, out3) { - var xi = 0; - var yi = 0; - var x0 = 0; - var y0 = 0; - var x1; - var y1; - var minDist = Infinity; - var data = path.data; - var x = pt.x; - var y = pt.y; - for (var i2 = 0; i2 < data.length; ) { - var cmd = data[i2++]; - if (i2 === 1) { - xi = data[i2]; - yi = data[i2 + 1]; - x0 = xi; - y0 = yi; - } - var d = minDist; - switch (cmd) { - case CMD$3.M: - x0 = data[i2++]; - y0 = data[i2++]; - xi = x0; - yi = y0; - break; - case CMD$3.L: - d = projectPointToLine2(xi, yi, data[i2], data[i2 + 1], x, y, tmpPt2, true); - xi = data[i2++]; - yi = data[i2++]; - break; - case CMD$3.C: - d = cubicProjectPoint2(xi, yi, data[i2++], data[i2++], data[i2++], data[i2++], data[i2], data[i2 + 1], x, y, tmpPt2); - xi = data[i2++]; - yi = data[i2++]; - break; - case CMD$3.Q: - d = quadraticProjectPoint2(xi, yi, data[i2++], data[i2++], data[i2], data[i2 + 1], x, y, tmpPt2); - xi = data[i2++]; - yi = data[i2++]; - break; - case CMD$3.A: - var cx = data[i2++]; - var cy = data[i2++]; - var rx = data[i2++]; - var ry = data[i2++]; - var theta = data[i2++]; - var dTheta = data[i2++]; - i2 += 1; - var anticlockwise = !!(1 - data[i2++]); - x1 = Math.cos(theta) * rx + cx; - y1 = Math.sin(theta) * ry + cy; - if (i2 <= 1) { - x0 = x1; - y0 = y1; - } - var _x = (x - cx) * ry / rx + cx; - d = projectPointToArc2(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y, tmpPt2); - xi = Math.cos(theta + dTheta) * rx + cx; - yi = Math.sin(theta + dTheta) * ry + cy; - break; - case CMD$3.R: - x0 = xi = data[i2++]; - y0 = yi = data[i2++]; - var width = data[i2++]; - var height = data[i2++]; - d = projectPointToRect2(x0, y0, width, height, x, y, tmpPt2); - break; - case CMD$3.Z: - d = projectPointToLine2(xi, yi, x0, y0, x, y, tmpPt2, true); - xi = x0; - yi = y0; - break; - } - if (d < minDist) { - minDist = d; - out3.set(tmpPt2[0], tmpPt2[1]); - } - } - return minDist; - } - var pt02 = new Point2(); - var pt12 = new Point2(); - var pt22 = new Point2(); - var dir3 = new Point2(); - var dir22 = new Point2(); - function updateLabelLinePoints2(target, labelLineModel) { - if (!target) { - return; - } - var labelLine = target.getTextGuideLine(); - var label = target.getTextContent(); - if (!(label && labelLine)) { - return; - } - var labelGuideConfig = target.textGuideLineConfig || {}; - var points5 = [[0, 0], [0, 0], [0, 0]]; - var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE2; - var labelRect = label.getBoundingRect().clone(); - labelRect.applyTransform(label.getComputedTransform()); - var minDist = Infinity; - var anchorPoint = labelGuideConfig.anchor; - var targetTransform = target.getComputedTransform(); - var targetInversedTransform = targetTransform && invert2([], targetTransform); - var len3 = labelLineModel.get("length2") || 0; - if (anchorPoint) { - pt22.copy(anchorPoint); - } - for (var i2 = 0; i2 < searchSpace.length; i2++) { - var candidate = searchSpace[i2]; - getCandidateAnchor2(candidate, 0, labelRect, pt02, dir3); - Point2.scaleAndAdd(pt12, pt02, dir3, len3); - pt12.transform(targetInversedTransform); - var boundingRect = target.getBoundingRect(); - var dist4 = anchorPoint ? anchorPoint.distance(pt12) : target instanceof Path2 ? nearestPointOnPath2(pt12, target.path, pt22) : nearestPointOnRect2(pt12, boundingRect, pt22); - if (dist4 < minDist) { - minDist = dist4; - pt12.transform(targetTransform); - pt22.transform(targetTransform); - pt22.toArray(points5[0]); - pt12.toArray(points5[1]); - pt02.toArray(points5[2]); - } - } - limitTurnAngle2(points5, labelLineModel.get("minTurnAngle")); - labelLine.setShape({ - points: points5 - }); - } - var tmpArr2 = []; - var tmpProjPoint2 = new Point2(); - function limitTurnAngle2(linePoints, minTurnAngle) { - if (!(minTurnAngle <= 180 && minTurnAngle > 0)) { - return; - } - minTurnAngle = minTurnAngle / 180 * Math.PI; - pt02.fromArray(linePoints[0]); - pt12.fromArray(linePoints[1]); - pt22.fromArray(linePoints[2]); - Point2.sub(dir3, pt02, pt12); - Point2.sub(dir22, pt22, pt12); - var len1 = dir3.len(); - var len22 = dir22.len(); - if (len1 < 1e-3 || len22 < 1e-3) { - return; - } - dir3.scale(1 / len1); - dir22.scale(1 / len22); - var angleCos = dir3.dot(dir22); - var minTurnAngleCos = Math.cos(minTurnAngle); - if (minTurnAngleCos < angleCos) { - var d = projectPointToLine2(pt12.x, pt12.y, pt22.x, pt22.y, pt02.x, pt02.y, tmpArr2, false); - tmpProjPoint2.fromArray(tmpArr2); - tmpProjPoint2.scaleAndAdd(dir22, d / Math.tan(Math.PI - minTurnAngle)); - var t = pt22.x !== pt12.x ? (tmpProjPoint2.x - pt12.x) / (pt22.x - pt12.x) : (tmpProjPoint2.y - pt12.y) / (pt22.y - pt12.y); - if (isNaN(t)) { - return; - } - if (t < 0) { - Point2.copy(tmpProjPoint2, pt12); - } else if (t > 1) { - Point2.copy(tmpProjPoint2, pt22); - } - tmpProjPoint2.toArray(linePoints[1]); - } - } - function limitSurfaceAngle2(linePoints, surfaceNormal, maxSurfaceAngle) { - if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) { - return; - } - maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI; - pt02.fromArray(linePoints[0]); - pt12.fromArray(linePoints[1]); - pt22.fromArray(linePoints[2]); - Point2.sub(dir3, pt12, pt02); - Point2.sub(dir22, pt22, pt12); - var len1 = dir3.len(); - var len22 = dir22.len(); - if (len1 < 1e-3 || len22 < 1e-3) { - return; - } - dir3.scale(1 / len1); - dir22.scale(1 / len22); - var angleCos = dir3.dot(surfaceNormal); - var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle); - if (angleCos < maxSurfaceAngleCos) { - var d = projectPointToLine2(pt12.x, pt12.y, pt22.x, pt22.y, pt02.x, pt02.y, tmpArr2, false); - tmpProjPoint2.fromArray(tmpArr2); - var HALF_PI = Math.PI / 2; - var angle2 = Math.acos(dir22.dot(surfaceNormal)); - var newAngle = HALF_PI + angle2 - maxSurfaceAngle; - if (newAngle >= HALF_PI) { - Point2.copy(tmpProjPoint2, pt22); - } else { - tmpProjPoint2.scaleAndAdd(dir22, d / Math.tan(Math.PI / 2 - newAngle)); - var t = pt22.x !== pt12.x ? (tmpProjPoint2.x - pt12.x) / (pt22.x - pt12.x) : (tmpProjPoint2.y - pt12.y) / (pt22.y - pt12.y); - if (isNaN(t)) { - return; - } - if (t < 0) { - Point2.copy(tmpProjPoint2, pt12); - } else if (t > 1) { - Point2.copy(tmpProjPoint2, pt22); - } - } - tmpProjPoint2.toArray(linePoints[1]); - } - } - function setLabelLineState2(labelLine, ignore, stateName, stateModel) { - var isNormal = stateName === "normal"; - var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName); - stateObj.ignore = ignore; - var smooth = stateModel.get("smooth"); - if (smooth && smooth === true) { - smooth = 0.3; - } - stateObj.shape = stateObj.shape || {}; - if (smooth > 0) { - stateObj.shape.smooth = smooth; - } - var styleObj = stateModel.getModel("lineStyle").getLineStyle(); - isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj; - } - function buildLabelLinePath2(path, shape) { - var smooth = shape.smooth; - var points5 = shape.points; - if (!points5) { - return; - } - path.moveTo(points5[0][0], points5[0][1]); - if (smooth > 0 && points5.length >= 3) { - var len1 = dist3(points5[0], points5[1]); - var len22 = dist3(points5[1], points5[2]); - if (!len1 || !len22) { - path.lineTo(points5[1][0], points5[1][1]); - path.lineTo(points5[2][0], points5[2][1]); - return; - } - var moveLen = Math.min(len1, len22) * smooth; - var midPoint0 = lerp3([], points5[1], points5[0], moveLen / len1); - var midPoint2 = lerp3([], points5[1], points5[2], moveLen / len22); - var midPoint1 = lerp3([], midPoint0, midPoint2, 0.5); - path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]); - path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points5[2][0], points5[2][1]); - } else { - for (var i2 = 1; i2 < points5.length; i2++) { - path.lineTo(points5[i2][0], points5[i2][1]); - } - } - } - function setLabelLineStyle2(targetEl, statesModels, defaultStyle) { - var labelLine = targetEl.getTextGuideLine(); - var label = targetEl.getTextContent(); - if (!label) { - if (labelLine) { - targetEl.removeTextGuideLine(); - } - return; - } - var normalModel = statesModels.normal; - var showNormal = normalModel.get("show"); - var labelIgnoreNormal = label.ignore; - for (var i2 = 0; i2 < DISPLAY_STATES2.length; i2++) { - var stateName = DISPLAY_STATES2[i2]; - var stateModel = statesModels[stateName]; - var isNormal = stateName === "normal"; - if (stateModel) { - var stateShow = stateModel.get("show"); - var isLabelIgnored = isNormal ? labelIgnoreNormal : retrieve22(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal); - if (isLabelIgnored || !retrieve22(stateShow, showNormal)) { - var stateObj = isNormal ? labelLine : labelLine && labelLine.states[stateName]; - if (stateObj) { - stateObj.ignore = true; - } - if (!!labelLine) { - setLabelLineState2(labelLine, true, stateName, stateModel); - } - continue; - } - if (!labelLine) { - labelLine = new Polyline3(); - targetEl.setTextGuideLine(labelLine); - if (!isNormal && (labelIgnoreNormal || !showNormal)) { - setLabelLineState2(labelLine, true, "normal", statesModels.normal); - } - if (targetEl.stateProxy) { - labelLine.stateProxy = targetEl.stateProxy; - } - } - setLabelLineState2(labelLine, false, stateName, stateModel); - } - } - if (labelLine) { - defaults2(labelLine.style, defaultStyle); - labelLine.style.fill = null; - var showAbove = normalModel.get("showAbove"); - var labelLineConfig = targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {}; - labelLineConfig.showAbove = showAbove || false; - labelLine.buildPath = buildLabelLinePath2; - } - } - function getLabelLineStatesModels2(itemModel, labelLineName) { - labelLineName = labelLineName || "labelLine"; - var statesModels = { - normal: itemModel.getModel(labelLineName) - }; - for (var i2 = 0; i2 < SPECIAL_STATES2.length; i2++) { - var stateName = SPECIAL_STATES2[i2]; - statesModels[stateName] = itemModel.getModel([stateName, labelLineName]); - } - return statesModels; - } - function prepareLayoutList2(input) { - var list = []; - for (var i2 = 0; i2 < input.length; i2++) { - var rawItem = input[i2]; - if (rawItem.defaultAttr.ignore) { - continue; - } - var label = rawItem.label; - var transform2 = label.getComputedTransform(); - var localRect = label.getBoundingRect(); - var isAxisAligned = !transform2 || transform2[1] < 1e-5 && transform2[2] < 1e-5; - var minMargin = label.style.margin || 0; - var globalRect = localRect.clone(); - globalRect.applyTransform(transform2); - globalRect.x -= minMargin / 2; - globalRect.y -= minMargin / 2; - globalRect.width += minMargin; - globalRect.height += minMargin; - var obb = isAxisAligned ? new OrientedBoundingRect2(localRect, transform2) : null; - list.push({ - label, - labelLine: rawItem.labelLine, - rect: globalRect, - localRect, - obb, - priority: rawItem.priority, - defaultAttr: rawItem.defaultAttr, - layoutOption: rawItem.computedLayoutOption, - axisAligned: isAxisAligned, - transform: transform2 - }); - } - return list; - } - function shiftLayout2(list, xyDim, sizeDim, minBound, maxBound, balanceShift) { - var len3 = list.length; - if (len3 < 2) { - return; - } - list.sort(function(a, b) { - return a.rect[xyDim] - b.rect[xyDim]; - }); - var lastPos = 0; - var delta; - var adjusted = false; - var totalShifts = 0; - for (var i2 = 0; i2 < len3; i2++) { - var item = list[i2]; - var rect = item.rect; - delta = rect[xyDim] - lastPos; - if (delta < 0) { - rect[xyDim] -= delta; - item.label[xyDim] -= delta; - adjusted = true; - } - var shift3 = Math.max(-delta, 0); - totalShifts += shift3; - lastPos = rect[xyDim] + rect[sizeDim]; - } - if (totalShifts > 0 && balanceShift) { - shiftList(-totalShifts / len3, 0, len3); - } - var first = list[0]; - var last = list[len3 - 1]; - var minGap; - var maxGap; - updateMinMaxGap(); - minGap < 0 && squeezeGaps(-minGap, 0.8); - maxGap < 0 && squeezeGaps(maxGap, 0.8); - updateMinMaxGap(); - takeBoundsGap(minGap, maxGap, 1); - takeBoundsGap(maxGap, minGap, -1); - updateMinMaxGap(); - if (minGap < 0) { - squeezeWhenBailout(-minGap); - } - if (maxGap < 0) { - squeezeWhenBailout(maxGap); - } - function updateMinMaxGap() { - minGap = first.rect[xyDim] - minBound; - maxGap = maxBound - last.rect[xyDim] - last.rect[sizeDim]; - } - function takeBoundsGap(gapThisBound, gapOtherBound, moveDir) { - if (gapThisBound < 0) { - var moveFromMaxGap = Math.min(gapOtherBound, -gapThisBound); - if (moveFromMaxGap > 0) { - shiftList(moveFromMaxGap * moveDir, 0, len3); - var remained = moveFromMaxGap + gapThisBound; - if (remained < 0) { - squeezeGaps(-remained * moveDir, 1); - } - } else { - squeezeGaps(-gapThisBound * moveDir, 1); - } - } - } - function shiftList(delta2, start4, end3) { - if (delta2 !== 0) { - adjusted = true; - } - for (var i3 = start4; i3 < end3; i3++) { - var item2 = list[i3]; - var rect2 = item2.rect; - rect2[xyDim] += delta2; - item2.label[xyDim] += delta2; - } - } - function squeezeGaps(delta2, maxSqeezePercent) { - var gaps = []; - var totalGaps = 0; - for (var i3 = 1; i3 < len3; i3++) { - var prevItemRect = list[i3 - 1].rect; - var gap = Math.max(list[i3].rect[xyDim] - prevItemRect[xyDim] - prevItemRect[sizeDim], 0); - gaps.push(gap); - totalGaps += gap; - } - if (!totalGaps) { - return; - } - var squeezePercent = Math.min(Math.abs(delta2) / totalGaps, maxSqeezePercent); - if (delta2 > 0) { - for (var i3 = 0; i3 < len3 - 1; i3++) { - var movement = gaps[i3] * squeezePercent; - shiftList(movement, 0, i3 + 1); - } - } else { - for (var i3 = len3 - 1; i3 > 0; i3--) { - var movement = gaps[i3 - 1] * squeezePercent; - shiftList(-movement, i3, len3); - } - } - } - function squeezeWhenBailout(delta2) { - var dir4 = delta2 < 0 ? -1 : 1; - delta2 = Math.abs(delta2); - var moveForEachLabel = Math.ceil(delta2 / (len3 - 1)); - for (var i3 = 0; i3 < len3 - 1; i3++) { - if (dir4 > 0) { - shiftList(moveForEachLabel, 0, i3 + 1); - } else { - shiftList(-moveForEachLabel, len3 - i3 - 1, len3); - } - delta2 -= moveForEachLabel; - if (delta2 <= 0) { - return; - } - } - } - return adjusted; - } - function shiftLayoutOnX2(list, leftBound, rightBound, balanceShift) { - return shiftLayout2(list, "x", "width", leftBound, rightBound, balanceShift); - } - function shiftLayoutOnY2(list, topBound, bottomBound, balanceShift) { - return shiftLayout2(list, "y", "height", topBound, bottomBound, balanceShift); - } - function hideOverlap2(labelList) { - var displayedLabels = []; - labelList.sort(function(a, b) { - return b.priority - a.priority; - }); - var globalRect = new BoundingRect2(0, 0, 0, 0); - function hideEl(el) { - if (!el.ignore) { - var emphasisState = el.ensureState("emphasis"); - if (emphasisState.ignore == null) { - emphasisState.ignore = false; - } - } - el.ignore = true; - } - for (var i2 = 0; i2 < labelList.length; i2++) { - var labelItem = labelList[i2]; - var isAxisAligned = labelItem.axisAligned; - var localRect = labelItem.localRect; - var transform2 = labelItem.transform; - var label = labelItem.label; - var labelLine = labelItem.labelLine; - globalRect.copy(labelItem.rect); - globalRect.width -= 0.1; - globalRect.height -= 0.1; - globalRect.x += 0.05; - globalRect.y += 0.05; - var obb = labelItem.obb; - var overlapped = false; - for (var j = 0; j < displayedLabels.length; j++) { - var existsTextCfg = displayedLabels[j]; - if (!globalRect.intersect(existsTextCfg.rect)) { - continue; - } - if (isAxisAligned && existsTextCfg.axisAligned) { - overlapped = true; - break; - } - if (!existsTextCfg.obb) { - existsTextCfg.obb = new OrientedBoundingRect2(existsTextCfg.localRect, existsTextCfg.transform); - } - if (!obb) { - obb = new OrientedBoundingRect2(localRect, transform2); - } - if (obb.intersect(existsTextCfg.obb)) { - overlapped = true; - break; - } - } - if (overlapped) { - hideEl(label); - labelLine && hideEl(labelLine); - } else { - label.attr("ignore", labelItem.defaultAttr.ignore); - labelLine && labelLine.attr("ignore", labelItem.defaultAttr.labelGuideIgnore); - displayedLabels.push(labelItem); - } - } - } - function cloneArr2(points5) { - if (points5) { - var newPoints = []; - for (var i2 = 0; i2 < points5.length; i2++) { - newPoints.push(points5[i2].slice()); - } - return newPoints; - } - } - function prepareLayoutCallbackParams2(labelItem, hostEl) { - var label = labelItem.label; - var labelLine = hostEl && hostEl.getTextGuideLine(); - return { - dataIndex: labelItem.dataIndex, - dataType: labelItem.dataType, - seriesIndex: labelItem.seriesModel.seriesIndex, - text: labelItem.label.style.text, - rect: labelItem.hostRect, - labelRect: labelItem.rect, - // x: labelAttr.x, - // y: labelAttr.y, - align: label.style.align, - verticalAlign: label.style.verticalAlign, - labelLinePoints: cloneArr2(labelLine && labelLine.shape.points) - }; - } - var LABEL_OPTION_TO_STYLE_KEYS2 = ["align", "verticalAlign", "width", "height", "fontSize"]; - var dummyTransformable2 = new Transformable2(); - var labelLayoutInnerStore2 = makeInner2(); - var labelLineAnimationStore2 = makeInner2(); - function extendWithKeys2(target, source, keys3) { - for (var i2 = 0; i2 < keys3.length; i2++) { - var key = keys3[i2]; - if (source[key] != null) { - target[key] = source[key]; - } - } - } - var LABEL_LAYOUT_PROPS2 = ["x", "y", "rotation"]; - var LabelManager2 = ( - /** @class */ - function() { - function LabelManager3() { - this._labelList = []; - this._chartViewList = []; - } - LabelManager3.prototype.clearLabels = function() { - this._labelList = []; - this._chartViewList = []; - }; - LabelManager3.prototype._addLabel = function(dataIndex, dataType, seriesModel, label, layoutOption) { - var labelStyle = label.style; - var hostEl = label.__hostTarget; - var textConfig = hostEl.textConfig || {}; - var labelTransform = label.getComputedTransform(); - var labelRect = label.getBoundingRect().plain(); - BoundingRect2.applyTransform(labelRect, labelRect, labelTransform); - if (labelTransform) { - dummyTransformable2.setLocalTransform(labelTransform); - } else { - dummyTransformable2.x = dummyTransformable2.y = dummyTransformable2.rotation = dummyTransformable2.originX = dummyTransformable2.originY = 0; - dummyTransformable2.scaleX = dummyTransformable2.scaleY = 1; - } - dummyTransformable2.rotation = normalizeRadian2(dummyTransformable2.rotation); - var host = label.__hostTarget; - var hostRect; - if (host) { - hostRect = host.getBoundingRect().plain(); - var transform2 = host.getComputedTransform(); - BoundingRect2.applyTransform(hostRect, hostRect, transform2); - } - var labelGuide = hostRect && host.getTextGuideLine(); - this._labelList.push({ - label, - labelLine: labelGuide, - seriesModel, - dataIndex, - dataType, - layoutOption, - computedLayoutOption: null, - rect: labelRect, - hostRect, - // Label with lower priority will be hidden when overlapped - // Use rect size as default priority - priority: hostRect ? hostRect.width * hostRect.height : 0, - // Save default label attributes. - // For restore if developers want get back to default value in callback. - defaultAttr: { - ignore: label.ignore, - labelGuideIgnore: labelGuide && labelGuide.ignore, - x: dummyTransformable2.x, - y: dummyTransformable2.y, - scaleX: dummyTransformable2.scaleX, - scaleY: dummyTransformable2.scaleY, - rotation: dummyTransformable2.rotation, - style: { - x: labelStyle.x, - y: labelStyle.y, - align: labelStyle.align, - verticalAlign: labelStyle.verticalAlign, - width: labelStyle.width, - height: labelStyle.height, - fontSize: labelStyle.fontSize - }, - cursor: label.cursor, - attachedPos: textConfig.position, - attachedRot: textConfig.rotation - } - }); - }; - LabelManager3.prototype.addLabelsOfSeries = function(chartView) { - var _this = this; - this._chartViewList.push(chartView); - var seriesModel = chartView.__model; - var layoutOption = seriesModel.get("labelLayout"); - if (!(isFunction2(layoutOption) || keys2(layoutOption).length)) { - return; - } - chartView.group.traverse(function(child) { - if (child.ignore) { - return true; - } - var textEl = child.getTextContent(); - var ecData = getECData2(child); - if (textEl && !textEl.disableLabelLayout) { - _this._addLabel(ecData.dataIndex, ecData.dataType, seriesModel, textEl, layoutOption); - } - }); - }; - LabelManager3.prototype.updateLayoutConfig = function(api) { - var width = api.getWidth(); - var height = api.getHeight(); - function createDragHandler(el, labelLineModel) { - return function() { - updateLabelLinePoints2(el, labelLineModel); - }; - } - for (var i2 = 0; i2 < this._labelList.length; i2++) { - var labelItem = this._labelList[i2]; - var label = labelItem.label; - var hostEl = label.__hostTarget; - var defaultLabelAttr = labelItem.defaultAttr; - var layoutOption = void 0; - if (isFunction2(labelItem.layoutOption)) { - layoutOption = labelItem.layoutOption(prepareLayoutCallbackParams2(labelItem, hostEl)); - } else { - layoutOption = labelItem.layoutOption; - } - layoutOption = layoutOption || {}; - labelItem.computedLayoutOption = layoutOption; - var degreeToRadian = Math.PI / 180; - if (hostEl) { - hostEl.setTextConfig({ - // Force to set local false. - local: false, - // Ignore position and rotation config on the host el if x or y is changed. - position: layoutOption.x != null || layoutOption.y != null ? null : defaultLabelAttr.attachedPos, - // Ignore rotation config on the host el if rotation is changed. - rotation: layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.attachedRot, - offset: [layoutOption.dx || 0, layoutOption.dy || 0] - }); - } - var needsUpdateLabelLine = false; - if (layoutOption.x != null) { - label.x = parsePercent$1(layoutOption.x, width); - label.setStyle("x", 0); - needsUpdateLabelLine = true; - } else { - label.x = defaultLabelAttr.x; - label.setStyle("x", defaultLabelAttr.style.x); - } - if (layoutOption.y != null) { - label.y = parsePercent$1(layoutOption.y, height); - label.setStyle("y", 0); - needsUpdateLabelLine = true; - } else { - label.y = defaultLabelAttr.y; - label.setStyle("y", defaultLabelAttr.style.y); - } - if (layoutOption.labelLinePoints) { - var guideLine = hostEl.getTextGuideLine(); - if (guideLine) { - guideLine.setShape({ - points: layoutOption.labelLinePoints - }); - needsUpdateLabelLine = false; - } - } - var labelLayoutStore = labelLayoutInnerStore2(label); - labelLayoutStore.needsUpdateLabelLine = needsUpdateLabelLine; - label.rotation = layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.rotation; - label.scaleX = defaultLabelAttr.scaleX; - label.scaleY = defaultLabelAttr.scaleY; - for (var k2 = 0; k2 < LABEL_OPTION_TO_STYLE_KEYS2.length; k2++) { - var key = LABEL_OPTION_TO_STYLE_KEYS2[k2]; - label.setStyle(key, layoutOption[key] != null ? layoutOption[key] : defaultLabelAttr.style[key]); - } - if (layoutOption.draggable) { - label.draggable = true; - label.cursor = "move"; - if (hostEl) { - var hostModel = labelItem.seriesModel; - if (labelItem.dataIndex != null) { - var data = labelItem.seriesModel.getData(labelItem.dataType); - hostModel = data.getItemModel(labelItem.dataIndex); - } - label.on("drag", createDragHandler(hostEl, hostModel.getModel("labelLine"))); - } - } else { - label.off("drag"); - label.cursor = defaultLabelAttr.cursor; - } - } - }; - LabelManager3.prototype.layout = function(api) { - var width = api.getWidth(); - var height = api.getHeight(); - var labelList = prepareLayoutList2(this._labelList); - var labelsNeedsAdjustOnX = filter2(labelList, function(item) { - return item.layoutOption.moveOverlap === "shiftX"; - }); - var labelsNeedsAdjustOnY = filter2(labelList, function(item) { - return item.layoutOption.moveOverlap === "shiftY"; - }); - shiftLayoutOnX2(labelsNeedsAdjustOnX, 0, width); - shiftLayoutOnY2(labelsNeedsAdjustOnY, 0, height); - var labelsNeedsHideOverlap = filter2(labelList, function(item) { - return item.layoutOption.hideOverlap; - }); - hideOverlap2(labelsNeedsHideOverlap); - }; - LabelManager3.prototype.processLabelsOverall = function() { - var _this = this; - each17(this._chartViewList, function(chartView) { - var seriesModel = chartView.__model; - var ignoreLabelLineUpdate = chartView.ignoreLabelLineUpdate; - var animationEnabled = seriesModel.isAnimationEnabled(); - chartView.group.traverse(function(child) { - if (child.ignore && !child.forceLabelAnimation) { - return true; - } - var needsUpdateLabelLine = !ignoreLabelLineUpdate; - var label = child.getTextContent(); - if (!needsUpdateLabelLine && label) { - needsUpdateLabelLine = labelLayoutInnerStore2(label).needsUpdateLabelLine; - } - if (needsUpdateLabelLine) { - _this._updateLabelLine(child, seriesModel); - } - if (animationEnabled) { - _this._animateLabels(child, seriesModel); - } - }); - }); - }; - LabelManager3.prototype._updateLabelLine = function(el, seriesModel) { - var textEl = el.getTextContent(); - var ecData = getECData2(el); - var dataIndex = ecData.dataIndex; - if (textEl && dataIndex != null) { - var data = seriesModel.getData(ecData.dataType); - var itemModel = data.getItemModel(dataIndex); - var defaultStyle = {}; - var visualStyle = data.getItemVisual(dataIndex, "style"); - if (visualStyle) { - var visualType = data.getVisual("drawType"); - defaultStyle.stroke = visualStyle[visualType]; - } - var labelLineModel = itemModel.getModel("labelLine"); - setLabelLineStyle2(el, getLabelLineStatesModels2(itemModel), defaultStyle); - updateLabelLinePoints2(el, labelLineModel); - } - }; - LabelManager3.prototype._animateLabels = function(el, seriesModel) { - var textEl = el.getTextContent(); - var guideLine = el.getTextGuideLine(); - if (textEl && (el.forceLabelAnimation || !textEl.ignore && !textEl.invisible && !el.disableLabelAnimation && !isElementRemoved2(el))) { - var layoutStore = labelLayoutInnerStore2(textEl); - var oldLayout = layoutStore.oldLayout; - var ecData = getECData2(el); - var dataIndex = ecData.dataIndex; - var newProps = { - x: textEl.x, - y: textEl.y, - rotation: textEl.rotation - }; - var data = seriesModel.getData(ecData.dataType); - if (!oldLayout) { - textEl.attr(newProps); - if (!labelInner2(textEl).valueAnimation) { - var oldOpacity = retrieve22(textEl.style.opacity, 1); - textEl.style.opacity = 0; - initProps2(textEl, { - style: { - opacity: oldOpacity - } - }, seriesModel, dataIndex); - } - } else { - textEl.attr(oldLayout); - var prevStates = el.prevStates; - if (prevStates) { - if (indexOf2(prevStates, "select") >= 0) { - textEl.attr(layoutStore.oldLayoutSelect); - } - if (indexOf2(prevStates, "emphasis") >= 0) { - textEl.attr(layoutStore.oldLayoutEmphasis); - } - } - updateProps3(textEl, newProps, seriesModel, dataIndex); - } - layoutStore.oldLayout = newProps; - if (textEl.states.select) { - var layoutSelect = layoutStore.oldLayoutSelect = {}; - extendWithKeys2(layoutSelect, newProps, LABEL_LAYOUT_PROPS2); - extendWithKeys2(layoutSelect, textEl.states.select, LABEL_LAYOUT_PROPS2); - } - if (textEl.states.emphasis) { - var layoutEmphasis = layoutStore.oldLayoutEmphasis = {}; - extendWithKeys2(layoutEmphasis, newProps, LABEL_LAYOUT_PROPS2); - extendWithKeys2(layoutEmphasis, textEl.states.emphasis, LABEL_LAYOUT_PROPS2); - } - animateLabelValue2(textEl, dataIndex, data, seriesModel, seriesModel); - } - if (guideLine && !guideLine.ignore && !guideLine.invisible) { - var layoutStore = labelLineAnimationStore2(guideLine); - var oldLayout = layoutStore.oldLayout; - var newLayout = { - points: guideLine.shape.points - }; - if (!oldLayout) { - guideLine.setShape(newLayout); - guideLine.style.strokePercent = 0; - initProps2(guideLine, { - style: { - strokePercent: 1 - } - }, seriesModel); - } else { - guideLine.attr({ - shape: oldLayout - }); - updateProps3(guideLine, { - shape: newLayout - }, seriesModel); - } - layoutStore.oldLayout = newLayout; - } - }; - return LabelManager3; - }() - ); - var getLabelManager2 = makeInner2(); - function installLabelLayout2(registers) { - registers.registerUpdateLifecycle("series:beforeupdate", function(ecModel, api, params) { - var labelManager = getLabelManager2(api).labelManager; - if (!labelManager) { - labelManager = getLabelManager2(api).labelManager = new LabelManager2(); - } - labelManager.clearLabels(); - }); - registers.registerUpdateLifecycle("series:layoutlabels", function(ecModel, api, params) { - var labelManager = getLabelManager2(api).labelManager; - params.updatedSeries.forEach(function(series) { - labelManager.addLabelsOfSeries(api.getViewOfSeriesModel(series)); - }); - labelManager.updateLayoutConfig(api); - labelManager.layout(api); - labelManager.processLabelsOverall(); - }); - } - var mathSin$4 = Math.sin; - var mathCos$4 = Math.cos; - var PI$4 = Math.PI; - var PI2$7 = Math.PI * 2; - var degree2 = 180 / PI$4; - var SVGPathRebuilder2 = function() { - function SVGPathRebuilder3() { - } - SVGPathRebuilder3.prototype.reset = function(precision) { - this._start = true; - this._d = []; - this._str = ""; - this._p = Math.pow(10, precision || 4); - }; - SVGPathRebuilder3.prototype.moveTo = function(x, y) { - this._add("M", x, y); - }; - SVGPathRebuilder3.prototype.lineTo = function(x, y) { - this._add("L", x, y); - }; - SVGPathRebuilder3.prototype.bezierCurveTo = function(x, y, x2, y2, x3, y3) { - this._add("C", x, y, x2, y2, x3, y3); - }; - SVGPathRebuilder3.prototype.quadraticCurveTo = function(x, y, x2, y2) { - this._add("Q", x, y, x2, y2); - }; - SVGPathRebuilder3.prototype.arc = function(cx, cy, r, startAngle, endAngle, anticlockwise) { - this.ellipse(cx, cy, r, r, 0, startAngle, endAngle, anticlockwise); - }; - SVGPathRebuilder3.prototype.ellipse = function(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise) { - var dTheta = endAngle - startAngle; - var clockwise = !anticlockwise; - var dThetaPositive = Math.abs(dTheta); - var isCircle = isAroundZero$1(dThetaPositive - PI2$7) || (clockwise ? dTheta >= PI2$7 : -dTheta >= PI2$7); - var unifiedTheta = dTheta > 0 ? dTheta % PI2$7 : dTheta % PI2$7 + PI2$7; - var large = false; - if (isCircle) { - large = true; - } else if (isAroundZero$1(dThetaPositive)) { - large = false; - } else { - large = unifiedTheta >= PI$4 === !!clockwise; - } - var x0 = cx + rx * mathCos$4(startAngle); - var y0 = cy + ry * mathSin$4(startAngle); - if (this._start) { - this._add("M", x0, y0); - } - var xRot = Math.round(psi * degree2); - if (isCircle) { - var p = 1 / this._p; - var dTheta_1 = (clockwise ? 1 : -1) * (PI2$7 - p); - this._add("A", rx, ry, xRot, 1, +clockwise, cx + rx * mathCos$4(startAngle + dTheta_1), cy + ry * mathSin$4(startAngle + dTheta_1)); - if (p > 0.01) { - this._add("A", rx, ry, xRot, 0, +clockwise, x0, y0); - } - } else { - var x = cx + rx * mathCos$4(endAngle); - var y = cy + ry * mathSin$4(endAngle); - this._add("A", rx, ry, xRot, +large, +clockwise, x, y); - } - }; - SVGPathRebuilder3.prototype.rect = function(x, y, w, h) { - this._add("M", x, y); - this._add("l", w, 0); - this._add("l", 0, h); - this._add("l", -w, 0); - this._add("Z"); - }; - SVGPathRebuilder3.prototype.closePath = function() { - if (this._d.length > 0) { - this._add("Z"); - } - }; - SVGPathRebuilder3.prototype._add = function(cmd, a, b, c, d, e3, f, g, h) { - var vals = []; - var p = this._p; - for (var i2 = 1; i2 < arguments.length; i2++) { - var val = arguments[i2]; - if (isNaN(val)) { - this._invalid = true; - return; - } - vals.push(Math.round(val * p) / p); - } - this._d.push(cmd + vals.join(" ")); - this._start = cmd === "Z"; - }; - SVGPathRebuilder3.prototype.generateStr = function() { - this._str = this._invalid ? "" : this._d.join(""); - this._d = []; - }; - SVGPathRebuilder3.prototype.getStr = function() { - return this._str; - }; - return SVGPathRebuilder3; - }(); - var NONE2 = "none"; - var mathRound$1 = Math.round; - function pathHasFill2(style) { - var fill = style.fill; - return fill != null && fill !== NONE2; - } - function pathHasStroke2(style) { - var stroke = style.stroke; - return stroke != null && stroke !== NONE2; - } - var strokeProps2 = ["lineCap", "miterLimit", "lineJoin"]; - var svgStrokeProps2 = map3(strokeProps2, function(prop) { - return "stroke-" + prop.toLowerCase(); - }); - function mapStyleToAttrs2(updateAttr3, style, el, forceUpdate) { - var opacity = style.opacity == null ? 1 : style.opacity; - if (el instanceof ZRImage2) { - updateAttr3("opacity", opacity); - return; - } - if (pathHasFill2(style)) { - var fill = normalizeColor2(style.fill); - updateAttr3("fill", fill.color); - var fillOpacity = style.fillOpacity != null ? style.fillOpacity * fill.opacity * opacity : fill.opacity * opacity; - if (forceUpdate || fillOpacity < 1) { - updateAttr3("fill-opacity", fillOpacity); - } - } else { - updateAttr3("fill", NONE2); - } - if (pathHasStroke2(style)) { - var stroke = normalizeColor2(style.stroke); - updateAttr3("stroke", stroke.color); - var strokeScale = style.strokeNoScale ? el.getLineScale() : 1; - var strokeWidth = strokeScale ? (style.lineWidth || 0) / strokeScale : 0; - var strokeOpacity = style.strokeOpacity != null ? style.strokeOpacity * stroke.opacity * opacity : stroke.opacity * opacity; - var strokeFirst = style.strokeFirst; - if (forceUpdate || strokeWidth !== 1) { - updateAttr3("stroke-width", strokeWidth); - } - if (forceUpdate || strokeFirst) { - updateAttr3("paint-order", strokeFirst ? "stroke" : "fill"); - } - if (forceUpdate || strokeOpacity < 1) { - updateAttr3("stroke-opacity", strokeOpacity); - } - if (style.lineDash) { - var _a3 = getLineDash2(el), lineDash = _a3[0], lineDashOffset = _a3[1]; - if (lineDash) { - lineDashOffset = mathRound$1(lineDashOffset || 0); - updateAttr3("stroke-dasharray", lineDash.join(",")); - if (lineDashOffset || forceUpdate) { - updateAttr3("stroke-dashoffset", lineDashOffset); - } - } - } else if (forceUpdate) { - updateAttr3("stroke-dasharray", NONE2); - } - for (var i2 = 0; i2 < strokeProps2.length; i2++) { - var propName = strokeProps2[i2]; - if (forceUpdate || style[propName] !== DEFAULT_PATH_STYLE2[propName]) { - var val = style[propName] || DEFAULT_PATH_STYLE2[propName]; - val && updateAttr3(svgStrokeProps2[i2], val); - } - } - } else if (forceUpdate) { - updateAttr3("stroke", NONE2); - } - } - var SVGNS2 = "http://www.w3.org/2000/svg"; - var XLINKNS2 = "http://www.w3.org/1999/xlink"; - var XMLNS2 = "http://www.w3.org/2000/xmlns/"; - var XML_NAMESPACE2 = "http://www.w3.org/XML/1998/namespace"; - var META_DATA_PREFIX2 = "ecmeta_"; - function createElement2(name) { - return document.createElementNS(SVGNS2, name); - } - function createVNode2(tag, key, attrs, children, text) { - return { - tag, - attrs: attrs || {}, - children, - text, - key - }; - } - function createElementOpen2(name, attrs) { - var attrsStr = []; - if (attrs) { - for (var key in attrs) { - var val = attrs[key]; - var part = key; - if (val === false) { - continue; - } else if (val !== true && val != null) { - part += '="' + val + '"'; - } - attrsStr.push(part); - } - } - return "<" + name + " " + attrsStr.join(" ") + ">"; - } - function createElementClose2(name) { - return ""; - } - function vNodeToString2(el, opts) { - opts = opts || {}; - var S = opts.newline ? "\n" : ""; - function convertElToString(el2) { - var children = el2.children, tag = el2.tag, attrs = el2.attrs, text = el2.text; - return createElementOpen2(tag, attrs) + (tag !== "style" ? encodeHTML2(text) : text || "") + (children ? "" + S + map3(children, function(child) { - return convertElToString(child); - }).join(S) + S : "") + createElementClose2(tag); - } - return convertElToString(el); - } - function getCssString2(selectorNodes, animationNodes, opts) { - opts = opts || {}; - var S = opts.newline ? "\n" : ""; - var bracketBegin = " {" + S; - var bracketEnd = S + "}"; - var selectors = map3(keys2(selectorNodes), function(className) { - return className + bracketBegin + map3(keys2(selectorNodes[className]), function(attrName) { - return attrName + ":" + selectorNodes[className][attrName] + ";"; - }).join(S) + bracketEnd; - }).join(S); - var animations = map3(keys2(animationNodes), function(animationName) { - return "@keyframes " + animationName + bracketBegin + map3(keys2(animationNodes[animationName]), function(percent) { - return percent + bracketBegin + map3(keys2(animationNodes[animationName][percent]), function(attrName) { - var val = animationNodes[animationName][percent][attrName]; - if (attrName === "d") { - val = 'path("' + val + '")'; - } - return attrName + ":" + val + ";"; - }).join(S) + bracketEnd; - }).join(S) + bracketEnd; - }).join(S); - if (!selectors && !animations) { - return ""; - } - return [""].join(S); - } - function createBrushScope2(zrId) { - return { - zrId, - shadowCache: {}, - patternCache: {}, - gradientCache: {}, - clipPathCache: {}, - defs: {}, - cssNodes: {}, - cssAnims: {}, - cssStyleCache: {}, - cssAnimIdx: 0, - shadowIdx: 0, - gradientIdx: 0, - patternIdx: 0, - clipPathIdx: 0 - }; - } - function createSVGVNode2(width, height, children, useViewBox) { - return createVNode2("svg", "root", { - "width": width, - "height": height, - "xmlns": SVGNS2, - "xmlns:xlink": XLINKNS2, - "version": "1.1", - "baseProfile": "full", - "viewBox": useViewBox ? "0 0 " + width + " " + height : false - }, children); - } - var cssClassIdx2 = 0; - function getClassId2() { - return cssClassIdx2++; - } - var EASING_MAP2 = { - cubicIn: "0.32,0,0.67,0", - cubicOut: "0.33,1,0.68,1", - cubicInOut: "0.65,0,0.35,1", - quadraticIn: "0.11,0,0.5,0", - quadraticOut: "0.5,1,0.89,1", - quadraticInOut: "0.45,0,0.55,1", - quarticIn: "0.5,0,0.75,0", - quarticOut: "0.25,1,0.5,1", - quarticInOut: "0.76,0,0.24,1", - quinticIn: "0.64,0,0.78,0", - quinticOut: "0.22,1,0.36,1", - quinticInOut: "0.83,0,0.17,1", - sinusoidalIn: "0.12,0,0.39,0", - sinusoidalOut: "0.61,1,0.88,1", - sinusoidalInOut: "0.37,0,0.63,1", - exponentialIn: "0.7,0,0.84,0", - exponentialOut: "0.16,1,0.3,1", - exponentialInOut: "0.87,0,0.13,1", - circularIn: "0.55,0,1,0.45", - circularOut: "0,0.55,0.45,1", - circularInOut: "0.85,0,0.15,1" - }; - var transformOriginKey2 = "transform-origin"; - function buildPathString2(el, kfShape, path) { - var shape = extend3({}, el.shape); - extend3(shape, kfShape); - el.buildPath(path, shape); - var svgPathBuilder = new SVGPathRebuilder2(); - svgPathBuilder.reset(getPathPrecision2(el)); - path.rebuildPath(svgPathBuilder, 1); - svgPathBuilder.generateStr(); - return svgPathBuilder.getStr(); - } - function setTransformOrigin2(target, transform2) { - var originX = transform2.originX, originY = transform2.originY; - if (originX || originY) { - target[transformOriginKey2] = originX + "px " + originY + "px"; - } - } - var ANIMATE_STYLE_MAP2 = { - fill: "fill", - opacity: "opacity", - lineWidth: "stroke-width", - lineDashOffset: "stroke-dashoffset" - }; - function addAnimation2(cssAnim, scope) { - var animationName = scope.zrId + "-ani-" + scope.cssAnimIdx++; - scope.cssAnims[animationName] = cssAnim; - return animationName; - } - function createCompoundPathCSSAnimation2(el, attrs, scope) { - var paths = el.shape.paths; - var composedAnim = {}; - var cssAnimationCfg; - var cssAnimationName; - each17(paths, function(path) { - var subScope = createBrushScope2(scope.zrId); - subScope.animation = true; - createCSSAnimation2(path, {}, subScope, true); - var cssAnims = subScope.cssAnims; - var cssNodes = subScope.cssNodes; - var animNames = keys2(cssAnims); - var len3 = animNames.length; - if (!len3) { - return; - } - cssAnimationName = animNames[len3 - 1]; - var lastAnim = cssAnims[cssAnimationName]; - for (var percent in lastAnim) { - var kf = lastAnim[percent]; - composedAnim[percent] = composedAnim[percent] || { d: "" }; - composedAnim[percent].d += kf.d || ""; - } - for (var className in cssNodes) { - var val = cssNodes[className].animation; - if (val.indexOf(cssAnimationName) >= 0) { - cssAnimationCfg = val; - } - } - }); - if (!cssAnimationCfg) { - return; - } - attrs.d = false; - var animationName = addAnimation2(composedAnim, scope); - return cssAnimationCfg.replace(cssAnimationName, animationName); - } - function getEasingFunc2(easing) { - return isString2(easing) ? EASING_MAP2[easing] ? "cubic-bezier(" + EASING_MAP2[easing] + ")" : createCubicEasingFunc2(easing) ? easing : "" : ""; - } - function createCSSAnimation2(el, attrs, scope, onlyShape) { - var animators = el.animators; - var len3 = animators.length; - var cssAnimations = []; - if (el instanceof CompoundPath2) { - var animationCfg = createCompoundPathCSSAnimation2(el, attrs, scope); - if (animationCfg) { - cssAnimations.push(animationCfg); - } else if (!len3) { - return; - } - } else if (!len3) { - return; - } - var groupAnimators = {}; - for (var i2 = 0; i2 < len3; i2++) { - var animator = animators[i2]; - var cfgArr = [animator.getMaxTime() / 1e3 + "s"]; - var easing = getEasingFunc2(animator.getClip().easing); - var delay = animator.getDelay(); - if (easing) { - cfgArr.push(easing); - } else { - cfgArr.push("linear"); - } - if (delay) { - cfgArr.push(delay / 1e3 + "s"); - } - if (animator.getLoop()) { - cfgArr.push("infinite"); - } - var cfg = cfgArr.join(" "); - groupAnimators[cfg] = groupAnimators[cfg] || [cfg, []]; - groupAnimators[cfg][1].push(animator); - } - function createSingleCSSAnimation(groupAnimator) { - var animators2 = groupAnimator[1]; - var len4 = animators2.length; - var transformKfs = {}; - var shapeKfs = {}; - var finalKfs = {}; - var animationTimingFunctionAttrName = "animation-timing-function"; - function saveAnimatorTrackToCssKfs(animator3, cssKfs, toCssAttrName) { - var tracks = animator3.getTracks(); - var maxTime = animator3.getMaxTime(); - for (var k2 = 0; k2 < tracks.length; k2++) { - var track = tracks[k2]; - if (track.needsAnimate()) { - var kfs = track.keyframes; - var attrName = track.propName; - toCssAttrName && (attrName = toCssAttrName(attrName)); - if (attrName) { - for (var i4 = 0; i4 < kfs.length; i4++) { - var kf = kfs[i4]; - var percent2 = Math.round(kf.time / maxTime * 100) + "%"; - var kfEasing = getEasingFunc2(kf.easing); - var rawValue = kf.rawValue; - if (isString2(rawValue) || isNumber2(rawValue)) { - cssKfs[percent2] = cssKfs[percent2] || {}; - cssKfs[percent2][attrName] = kf.rawValue; - if (kfEasing) { - cssKfs[percent2][animationTimingFunctionAttrName] = kfEasing; - } - } - } - } - } - } - } - for (var i3 = 0; i3 < len4; i3++) { - var animator2 = animators2[i3]; - var targetProp = animator2.targetName; - if (!targetProp) { - !onlyShape && saveAnimatorTrackToCssKfs(animator2, transformKfs); - } else if (targetProp === "shape") { - saveAnimatorTrackToCssKfs(animator2, shapeKfs); - } - } - for (var percent in transformKfs) { - var transform2 = {}; - copyTransform2(transform2, el); - extend3(transform2, transformKfs[percent]); - var str = getSRTTransformString2(transform2); - var timingFunction = transformKfs[percent][animationTimingFunctionAttrName]; - finalKfs[percent] = str ? { - transform: str - } : {}; - setTransformOrigin2(finalKfs[percent], transform2); - if (timingFunction) { - finalKfs[percent][animationTimingFunctionAttrName] = timingFunction; - } - } - var path; - var canAnimateShape = true; - for (var percent in shapeKfs) { - finalKfs[percent] = finalKfs[percent] || {}; - var isFirst = !path; - var timingFunction = shapeKfs[percent][animationTimingFunctionAttrName]; - if (isFirst) { - path = new PathProxy2(); - } - var len_1 = path.len(); - path.reset(); - finalKfs[percent].d = buildPathString2(el, shapeKfs[percent], path); - var newLen = path.len(); - if (!isFirst && len_1 !== newLen) { - canAnimateShape = false; - break; - } - if (timingFunction) { - finalKfs[percent][animationTimingFunctionAttrName] = timingFunction; - } - } - if (!canAnimateShape) { - for (var percent in finalKfs) { - delete finalKfs[percent].d; - } - } - if (!onlyShape) { - for (var i3 = 0; i3 < len4; i3++) { - var animator2 = animators2[i3]; - var targetProp = animator2.targetName; - if (targetProp === "style") { - saveAnimatorTrackToCssKfs(animator2, finalKfs, function(propName) { - return ANIMATE_STYLE_MAP2[propName]; - }); - } - } - } - var percents = keys2(finalKfs); - var allTransformOriginSame = true; - var transformOrigin; - for (var i3 = 1; i3 < percents.length; i3++) { - var p0 = percents[i3 - 1]; - var p1 = percents[i3]; - if (finalKfs[p0][transformOriginKey2] !== finalKfs[p1][transformOriginKey2]) { - allTransformOriginSame = false; - break; - } - transformOrigin = finalKfs[p0][transformOriginKey2]; - } - if (allTransformOriginSame && transformOrigin) { - for (var percent in finalKfs) { - if (finalKfs[percent][transformOriginKey2]) { - delete finalKfs[percent][transformOriginKey2]; - } - } - attrs[transformOriginKey2] = transformOrigin; - } - if (filter2(percents, function(percent2) { - return keys2(finalKfs[percent2]).length > 0; - }).length) { - var animationName = addAnimation2(finalKfs, scope); - return animationName + " " + groupAnimator[0] + " both"; - } - } - for (var key in groupAnimators) { - var animationCfg = createSingleCSSAnimation(groupAnimators[key]); - if (animationCfg) { - cssAnimations.push(animationCfg); - } - } - if (cssAnimations.length) { - var className = scope.zrId + "-cls-" + getClassId2(); - scope.cssNodes["." + className] = { - animation: cssAnimations.join(",") - }; - attrs["class"] = className; - } - } - function createCSSEmphasis2(el, attrs, scope) { - if (!el.ignore) { - if (el.isSilent()) { - var style = { - "pointer-events": "none" - }; - setClassAttribute2(style, attrs, scope, true); - } else { - var emphasisStyle = el.states.emphasis && el.states.emphasis.style ? el.states.emphasis.style : {}; - var fill = emphasisStyle.fill; - if (!fill) { - var normalFill = el.style && el.style.fill; - var selectFill = el.states.select && el.states.select.style && el.states.select.style.fill; - var fromFill = el.currentStates.indexOf("select") >= 0 ? selectFill || normalFill : normalFill; - if (fromFill) { - fill = liftColor2(fromFill); - } - } - var lineWidth = emphasisStyle.lineWidth; - if (lineWidth) { - var scaleX = !emphasisStyle.strokeNoScale && el.transform ? el.transform[0] : 1; - lineWidth = lineWidth / scaleX; - } - var style = { - cursor: "pointer" - }; - if (fill) { - style.fill = fill; - } - if (emphasisStyle.stroke) { - style.stroke = emphasisStyle.stroke; - } - if (lineWidth) { - style["stroke-width"] = lineWidth; - } - setClassAttribute2(style, attrs, scope, true); - } - } - } - function setClassAttribute2(style, attrs, scope, withHover) { - var styleKey = JSON.stringify(style); - var className = scope.cssStyleCache[styleKey]; - if (!className) { - className = scope.zrId + "-cls-" + getClassId2(); - scope.cssStyleCache[styleKey] = className; - scope.cssNodes["." + className + (withHover ? ":hover" : "")] = style; - } - attrs["class"] = attrs["class"] ? attrs["class"] + " " + className : className; - } - var round$2 = Math.round; - function isImageLike$1(val) { - return val && isString2(val.src); - } - function isCanvasLike2(val) { - return val && isFunction2(val.toDataURL); - } - function setStyleAttrs2(attrs, style, el, scope) { - mapStyleToAttrs2(function(key, val) { - var isFillStroke = key === "fill" || key === "stroke"; - if (isFillStroke && isGradient2(val)) { - setGradient2(style, attrs, key, scope); - } else if (isFillStroke && isPattern2(val)) { - setPattern2(el, attrs, key, scope); - } else { - attrs[key] = val; - } - if (isFillStroke && scope.ssr && val === "none") { - attrs["pointer-events"] = "visible"; - } - }, style, el, false); - setShadow2(el, attrs, scope); - } - function setMetaData2(attrs, el) { - var metaData = getElementSSRData2(el); - if (metaData) { - metaData.each(function(val, key) { - val != null && (attrs[(META_DATA_PREFIX2 + key).toLowerCase()] = val + ""); - }); - if (el.isSilent()) { - attrs[META_DATA_PREFIX2 + "silent"] = "true"; - } - } - } - function noRotateScale2(m3) { - return isAroundZero$1(m3[0] - 1) && isAroundZero$1(m3[1]) && isAroundZero$1(m3[2]) && isAroundZero$1(m3[3] - 1); - } - function noTranslate2(m3) { - return isAroundZero$1(m3[4]) && isAroundZero$1(m3[5]); - } - function setTransform2(attrs, m3, compress) { - if (m3 && !(noTranslate2(m3) && noRotateScale2(m3))) { - var mul4 = compress ? 10 : 1e4; - attrs.transform = noRotateScale2(m3) ? "translate(" + round$2(m3[4] * mul4) / mul4 + " " + round$2(m3[5] * mul4) / mul4 + ")" : getMatrixStr2(m3); - } - } - function convertPolyShape2(shape, attrs, mul4) { - var points5 = shape.points; - var strArr = []; - for (var i2 = 0; i2 < points5.length; i2++) { - strArr.push(round$2(points5[i2][0] * mul4) / mul4); - strArr.push(round$2(points5[i2][1] * mul4) / mul4); - } - attrs.points = strArr.join(" "); - } - function validatePolyShape2(shape) { - return !shape.smooth; - } - function createAttrsConvert2(desc) { - var normalizedDesc = map3(desc, function(item) { - return typeof item === "string" ? [item, item] : item; - }); - return function(shape, attrs, mul4) { - for (var i2 = 0; i2 < normalizedDesc.length; i2++) { - var item = normalizedDesc[i2]; - var val = shape[item[0]]; - if (val != null) { - attrs[item[1]] = round$2(val * mul4) / mul4; - } - } - }; - } - var builtinShapesDef2 = { - circle: [createAttrsConvert2(["cx", "cy", "r"])], - polyline: [convertPolyShape2, validatePolyShape2], - polygon: [convertPolyShape2, validatePolyShape2] - }; - function hasShapeAnimation2(el) { - var animators = el.animators; - for (var i2 = 0; i2 < animators.length; i2++) { - if (animators[i2].targetName === "shape") { - return true; - } - } - return false; - } - function brushSVGPath2(el, scope) { - var style = el.style; - var shape = el.shape; - var builtinShpDef = builtinShapesDef2[el.type]; - var attrs = {}; - var needsAnimate = scope.animation; - var svgElType = "path"; - var strokePercent = el.style.strokePercent; - var precision = scope.compress && getPathPrecision2(el) || 4; - if (builtinShpDef && !scope.willUpdate && !(builtinShpDef[1] && !builtinShpDef[1](shape)) && !(needsAnimate && hasShapeAnimation2(el)) && !(strokePercent < 1)) { - svgElType = el.type; - var mul4 = Math.pow(10, precision); - builtinShpDef[0](shape, attrs, mul4); - } else { - var needBuildPath = !el.path || el.shapeChanged(); - if (!el.path) { - el.createPathProxy(); - } - var path = el.path; - if (needBuildPath) { - path.beginPath(); - el.buildPath(path, el.shape); - el.pathUpdated(); - } - var pathVersion = path.getVersion(); - var elExt = el; - var svgPathBuilder = elExt.__svgPathBuilder; - if (elExt.__svgPathVersion !== pathVersion || !svgPathBuilder || strokePercent !== elExt.__svgPathStrokePercent) { - if (!svgPathBuilder) { - svgPathBuilder = elExt.__svgPathBuilder = new SVGPathRebuilder2(); - } - svgPathBuilder.reset(precision); - path.rebuildPath(svgPathBuilder, strokePercent); - svgPathBuilder.generateStr(); - elExt.__svgPathVersion = pathVersion; - elExt.__svgPathStrokePercent = strokePercent; - } - attrs.d = svgPathBuilder.getStr(); - } - setTransform2(attrs, el.transform); - setStyleAttrs2(attrs, style, el, scope); - setMetaData2(attrs, el); - scope.animation && createCSSAnimation2(el, attrs, scope); - scope.emphasis && createCSSEmphasis2(el, attrs, scope); - return createVNode2(svgElType, el.id + "", attrs); - } - function brushSVGImage2(el, scope) { - var style = el.style; - var image = style.image; - if (image && !isString2(image)) { - if (isImageLike$1(image)) { - image = image.src; - } else if (isCanvasLike2(image)) { - image = image.toDataURL(); - } - } - if (!image) { - return; - } - var x = style.x || 0; - var y = style.y || 0; - var dw = style.width; - var dh = style.height; - var attrs = { - href: image, - width: dw, - height: dh - }; - if (x) { - attrs.x = x; - } - if (y) { - attrs.y = y; - } - setTransform2(attrs, el.transform); - setStyleAttrs2(attrs, style, el, scope); - setMetaData2(attrs, el); - scope.animation && createCSSAnimation2(el, attrs, scope); - return createVNode2("image", el.id + "", attrs); - } - function brushSVGTSpan2(el, scope) { - var style = el.style; - var text = style.text; - text != null && (text += ""); - if (!text || isNaN(style.x) || isNaN(style.y)) { - return; - } - var font = style.font || DEFAULT_FONT2; - var x = style.x || 0; - var y = adjustTextY3(style.y || 0, getLineHeight2(font), style.textBaseline); - var textAlign = TEXT_ALIGN_TO_ANCHOR2[style.textAlign] || style.textAlign; - var attrs = { - "dominant-baseline": "central", - "text-anchor": textAlign - }; - if (hasSeparateFont2(style)) { - var separatedFontStr = ""; - var fontStyle = style.fontStyle; - var fontSize = parseFontSize2(style.fontSize); - if (!parseFloat(fontSize)) { - return; - } - var fontFamily = style.fontFamily || DEFAULT_FONT_FAMILY2; - var fontWeight = style.fontWeight; - separatedFontStr += "font-size:" + fontSize + ";font-family:" + fontFamily + ";"; - if (fontStyle && fontStyle !== "normal") { - separatedFontStr += "font-style:" + fontStyle + ";"; - } - if (fontWeight && fontWeight !== "normal") { - separatedFontStr += "font-weight:" + fontWeight + ";"; - } - attrs.style = separatedFontStr; - } else { - attrs.style = "font: " + font; - } - if (text.match(/\s/)) { - attrs["xml:space"] = "preserve"; - } - if (x) { - attrs.x = x; - } - if (y) { - attrs.y = y; - } - setTransform2(attrs, el.transform); - setStyleAttrs2(attrs, style, el, scope); - setMetaData2(attrs, el); - scope.animation && createCSSAnimation2(el, attrs, scope); - return createVNode2("text", el.id + "", attrs, void 0, text); - } - function brush$1(el, scope) { - if (el instanceof Path2) { - return brushSVGPath2(el, scope); - } else if (el instanceof ZRImage2) { - return brushSVGImage2(el, scope); - } else if (el instanceof TSpan2) { - return brushSVGTSpan2(el, scope); - } - } - function setShadow2(el, attrs, scope) { - var style = el.style; - if (hasShadow2(style)) { - var shadowKey = getShadowKey2(el); - var shadowCache = scope.shadowCache; - var shadowId = shadowCache[shadowKey]; - if (!shadowId) { - var globalScale = el.getGlobalScale(); - var scaleX = globalScale[0]; - var scaleY = globalScale[1]; - if (!scaleX || !scaleY) { - return; - } - var offsetX = style.shadowOffsetX || 0; - var offsetY = style.shadowOffsetY || 0; - var blur_1 = style.shadowBlur; - var _a3 = normalizeColor2(style.shadowColor), opacity = _a3.opacity, color2 = _a3.color; - var stdDx = blur_1 / 2 / scaleX; - var stdDy = blur_1 / 2 / scaleY; - var stdDeviation = stdDx + " " + stdDy; - shadowId = scope.zrId + "-s" + scope.shadowIdx++; - scope.defs[shadowId] = createVNode2("filter", shadowId, { - "id": shadowId, - "x": "-100%", - "y": "-100%", - "width": "300%", - "height": "300%" - }, [ - createVNode2("feDropShadow", "", { - "dx": offsetX / scaleX, - "dy": offsetY / scaleY, - "stdDeviation": stdDeviation, - "flood-color": color2, - "flood-opacity": opacity - }) - ]); - shadowCache[shadowKey] = shadowId; - } - attrs.filter = getIdURL2(shadowId); - } - } - function setGradient2(style, attrs, target, scope) { - var val = style[target]; - var gradientTag; - var gradientAttrs = { - "gradientUnits": val.global ? "userSpaceOnUse" : "objectBoundingBox" - }; - if (isLinearGradient2(val)) { - gradientTag = "linearGradient"; - gradientAttrs.x1 = val.x; - gradientAttrs.y1 = val.y; - gradientAttrs.x2 = val.x2; - gradientAttrs.y2 = val.y2; - } else if (isRadialGradient2(val)) { - gradientTag = "radialGradient"; - gradientAttrs.cx = retrieve22(val.x, 0.5); - gradientAttrs.cy = retrieve22(val.y, 0.5); - gradientAttrs.r = retrieve22(val.r, 0.5); - } else { - if (true) { - logError2("Illegal gradient type."); - } - return; - } - var colors = val.colorStops; - var colorStops = []; - for (var i2 = 0, len3 = colors.length; i2 < len3; ++i2) { - var offset3 = round42(colors[i2].offset) * 100 + "%"; - var stopColor = colors[i2].color; - var _a3 = normalizeColor2(stopColor), color2 = _a3.color, opacity = _a3.opacity; - var stopsAttrs = { - "offset": offset3 - }; - stopsAttrs["stop-color"] = color2; - if (opacity < 1) { - stopsAttrs["stop-opacity"] = opacity; - } - colorStops.push(createVNode2("stop", i2 + "", stopsAttrs)); - } - var gradientVNode = createVNode2(gradientTag, "", gradientAttrs, colorStops); - var gradientKey = vNodeToString2(gradientVNode); - var gradientCache = scope.gradientCache; - var gradientId = gradientCache[gradientKey]; - if (!gradientId) { - gradientId = scope.zrId + "-g" + scope.gradientIdx++; - gradientCache[gradientKey] = gradientId; - gradientAttrs.id = gradientId; - scope.defs[gradientId] = createVNode2(gradientTag, gradientId, gradientAttrs, colorStops); - } - attrs[target] = getIdURL2(gradientId); - } - function setPattern2(el, attrs, target, scope) { - var val = el.style[target]; - var boundingRect = el.getBoundingRect(); - var patternAttrs = {}; - var repeat = val.repeat; - var noRepeat = repeat === "no-repeat"; - var repeatX = repeat === "repeat-x"; - var repeatY = repeat === "repeat-y"; - var child; - if (isImagePattern2(val)) { - var imageWidth_1 = val.imageWidth; - var imageHeight_1 = val.imageHeight; - var imageSrc = void 0; - var patternImage = val.image; - if (isString2(patternImage)) { - imageSrc = patternImage; - } else if (isImageLike$1(patternImage)) { - imageSrc = patternImage.src; - } else if (isCanvasLike2(patternImage)) { - imageSrc = patternImage.toDataURL(); - } - if (typeof Image === "undefined") { - var errMsg = "Image width/height must been given explictly in svg-ssr renderer."; - assert2(imageWidth_1, errMsg); - assert2(imageHeight_1, errMsg); - } else if (imageWidth_1 == null || imageHeight_1 == null) { - var setSizeToVNode_1 = function(vNode, img) { - if (vNode) { - var svgEl = vNode.elm; - var width = imageWidth_1 || img.width; - var height = imageHeight_1 || img.height; - if (vNode.tag === "pattern") { - if (repeatX) { - height = 1; - width /= boundingRect.width; - } else if (repeatY) { - width = 1; - height /= boundingRect.height; - } - } - vNode.attrs.width = width; - vNode.attrs.height = height; - if (svgEl) { - svgEl.setAttribute("width", width); - svgEl.setAttribute("height", height); - } - } - }; - var createdImage = createOrUpdateImage2(imageSrc, null, el, function(img) { - noRepeat || setSizeToVNode_1(patternVNode, img); - setSizeToVNode_1(child, img); - }); - if (createdImage && createdImage.width && createdImage.height) { - imageWidth_1 = imageWidth_1 || createdImage.width; - imageHeight_1 = imageHeight_1 || createdImage.height; - } - } - child = createVNode2("image", "img", { - href: imageSrc, - width: imageWidth_1, - height: imageHeight_1 - }); - patternAttrs.width = imageWidth_1; - patternAttrs.height = imageHeight_1; - } else if (val.svgElement) { - child = clone6(val.svgElement); - patternAttrs.width = val.svgWidth; - patternAttrs.height = val.svgHeight; - } - if (!child) { - return; - } - var patternWidth; - var patternHeight; - if (noRepeat) { - patternWidth = patternHeight = 1; - } else if (repeatX) { - patternHeight = 1; - patternWidth = patternAttrs.width / boundingRect.width; - } else if (repeatY) { - patternWidth = 1; - patternHeight = patternAttrs.height / boundingRect.height; - } else { - patternAttrs.patternUnits = "userSpaceOnUse"; - } - if (patternWidth != null && !isNaN(patternWidth)) { - patternAttrs.width = patternWidth; - } - if (patternHeight != null && !isNaN(patternHeight)) { - patternAttrs.height = patternHeight; - } - var patternTransform = getSRTTransformString2(val); - patternTransform && (patternAttrs.patternTransform = patternTransform); - var patternVNode = createVNode2("pattern", "", patternAttrs, [child]); - var patternKey = vNodeToString2(patternVNode); - var patternCache = scope.patternCache; - var patternId = patternCache[patternKey]; - if (!patternId) { - patternId = scope.zrId + "-p" + scope.patternIdx++; - patternCache[patternKey] = patternId; - patternAttrs.id = patternId; - patternVNode = scope.defs[patternId] = createVNode2("pattern", patternId, patternAttrs, [child]); - } - attrs[target] = getIdURL2(patternId); - } - function setClipPath2(clipPath, attrs, scope) { - var clipPathCache = scope.clipPathCache, defs = scope.defs; - var clipPathId = clipPathCache[clipPath.id]; - if (!clipPathId) { - clipPathId = scope.zrId + "-c" + scope.clipPathIdx++; - var clipPathAttrs = { - id: clipPathId - }; - clipPathCache[clipPath.id] = clipPathId; - defs[clipPathId] = createVNode2("clipPath", clipPathId, clipPathAttrs, [brushSVGPath2(clipPath, scope)]); - } - attrs["clip-path"] = getIdURL2(clipPathId); - } - function createTextNode2(text) { - return document.createTextNode(text); - } - function insertBefore2(parentNode3, newNode, referenceNode) { - parentNode3.insertBefore(newNode, referenceNode); - } - function removeChild2(node, child) { - node.removeChild(child); - } - function appendChild2(node, child) { - node.appendChild(child); - } - function parentNode2(node) { - return node.parentNode; - } - function nextSibling2(node) { - return node.nextSibling; - } - function setTextContent2(node, text) { - node.textContent = text; - } - var colonChar2 = 58; - var xChar2 = 120; - var emptyNode2 = createVNode2("", ""); - function isUndef2(s) { - return s === void 0; - } - function isDef2(s) { - return s !== void 0; - } - function createKeyToOldIdx2(children, beginIdx, endIdx) { - var map4 = {}; - for (var i2 = beginIdx; i2 <= endIdx; ++i2) { - var key = children[i2].key; - if (key !== void 0) { - if (true) { - if (map4[key] != null) { - console.error("Duplicate key " + key); - } - } - map4[key] = i2; - } - } - return map4; - } - function sameVnode2(vnode1, vnode2) { - var isSameKey = vnode1.key === vnode2.key; - var isSameTag = vnode1.tag === vnode2.tag; - return isSameTag && isSameKey; - } - function createElm2(vnode) { - var i2; - var children = vnode.children; - var tag = vnode.tag; - if (isDef2(tag)) { - var elm = vnode.elm = createElement2(tag); - updateAttrs2(emptyNode2, vnode); - if (isArray3(children)) { - for (i2 = 0; i2 < children.length; ++i2) { - var ch = children[i2]; - if (ch != null) { - appendChild2(elm, createElm2(ch)); - } - } - } else if (isDef2(vnode.text) && !isObject5(vnode.text)) { - appendChild2(elm, createTextNode2(vnode.text)); - } - } else { - vnode.elm = createTextNode2(vnode.text); - } - return vnode.elm; - } - function addVnodes2(parentElm, before, vnodes, startIdx, endIdx) { - for (; startIdx <= endIdx; ++startIdx) { - var ch = vnodes[startIdx]; - if (ch != null) { - insertBefore2(parentElm, createElm2(ch), before); - } - } - } - function removeVnodes2(parentElm, vnodes, startIdx, endIdx) { - for (; startIdx <= endIdx; ++startIdx) { - var ch = vnodes[startIdx]; - if (ch != null) { - if (isDef2(ch.tag)) { - var parent_1 = parentNode2(ch.elm); - removeChild2(parent_1, ch.elm); - } else { - removeChild2(parentElm, ch.elm); - } - } - } - } - function updateAttrs2(oldVnode, vnode) { - var key; - var elm = vnode.elm; - var oldAttrs = oldVnode && oldVnode.attrs || {}; - var attrs = vnode.attrs || {}; - if (oldAttrs === attrs) { - return; - } - for (key in attrs) { - var cur = attrs[key]; - var old = oldAttrs[key]; - if (old !== cur) { - if (cur === true) { - elm.setAttribute(key, ""); - } else if (cur === false) { - elm.removeAttribute(key); - } else { - if (key === "style") { - elm.style.cssText = cur; - } else if (key.charCodeAt(0) !== xChar2) { - elm.setAttribute(key, cur); - } else if (key === "xmlns:xlink" || key === "xmlns") { - elm.setAttributeNS(XMLNS2, key, cur); - } else if (key.charCodeAt(3) === colonChar2) { - elm.setAttributeNS(XML_NAMESPACE2, key, cur); - } else if (key.charCodeAt(5) === colonChar2) { - elm.setAttributeNS(XLINKNS2, key, cur); - } else { - elm.setAttribute(key, cur); - } - } - } - } - for (key in oldAttrs) { - if (!(key in attrs)) { - elm.removeAttribute(key); - } - } - } - function updateChildren2(parentElm, oldCh, newCh) { - var oldStartIdx = 0; - var newStartIdx = 0; - var oldEndIdx = oldCh.length - 1; - var oldStartVnode = oldCh[0]; - var oldEndVnode = oldCh[oldEndIdx]; - var newEndIdx = newCh.length - 1; - var newStartVnode = newCh[0]; - var newEndVnode = newCh[newEndIdx]; - var oldKeyToIdx; - var idxInOld; - var elmToMove; - var before; - while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) { - if (oldStartVnode == null) { - oldStartVnode = oldCh[++oldStartIdx]; - } else if (oldEndVnode == null) { - oldEndVnode = oldCh[--oldEndIdx]; - } else if (newStartVnode == null) { - newStartVnode = newCh[++newStartIdx]; - } else if (newEndVnode == null) { - newEndVnode = newCh[--newEndIdx]; - } else if (sameVnode2(oldStartVnode, newStartVnode)) { - patchVnode2(oldStartVnode, newStartVnode); - oldStartVnode = oldCh[++oldStartIdx]; - newStartVnode = newCh[++newStartIdx]; - } else if (sameVnode2(oldEndVnode, newEndVnode)) { - patchVnode2(oldEndVnode, newEndVnode); - oldEndVnode = oldCh[--oldEndIdx]; - newEndVnode = newCh[--newEndIdx]; - } else if (sameVnode2(oldStartVnode, newEndVnode)) { - patchVnode2(oldStartVnode, newEndVnode); - insertBefore2(parentElm, oldStartVnode.elm, nextSibling2(oldEndVnode.elm)); - oldStartVnode = oldCh[++oldStartIdx]; - newEndVnode = newCh[--newEndIdx]; - } else if (sameVnode2(oldEndVnode, newStartVnode)) { - patchVnode2(oldEndVnode, newStartVnode); - insertBefore2(parentElm, oldEndVnode.elm, oldStartVnode.elm); - oldEndVnode = oldCh[--oldEndIdx]; - newStartVnode = newCh[++newStartIdx]; - } else { - if (isUndef2(oldKeyToIdx)) { - oldKeyToIdx = createKeyToOldIdx2(oldCh, oldStartIdx, oldEndIdx); - } - idxInOld = oldKeyToIdx[newStartVnode.key]; - if (isUndef2(idxInOld)) { - insertBefore2(parentElm, createElm2(newStartVnode), oldStartVnode.elm); - } else { - elmToMove = oldCh[idxInOld]; - if (elmToMove.tag !== newStartVnode.tag) { - insertBefore2(parentElm, createElm2(newStartVnode), oldStartVnode.elm); - } else { - patchVnode2(elmToMove, newStartVnode); - oldCh[idxInOld] = void 0; - insertBefore2(parentElm, elmToMove.elm, oldStartVnode.elm); - } - } - newStartVnode = newCh[++newStartIdx]; - } - } - if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) { - if (oldStartIdx > oldEndIdx) { - before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm; - addVnodes2(parentElm, before, newCh, newStartIdx, newEndIdx); - } else { - removeVnodes2(parentElm, oldCh, oldStartIdx, oldEndIdx); - } - } - } - function patchVnode2(oldVnode, vnode) { - var elm = vnode.elm = oldVnode.elm; - var oldCh = oldVnode.children; - var ch = vnode.children; - if (oldVnode === vnode) { - return; - } - updateAttrs2(oldVnode, vnode); - if (isUndef2(vnode.text)) { - if (isDef2(oldCh) && isDef2(ch)) { - if (oldCh !== ch) { - updateChildren2(elm, oldCh, ch); - } - } else if (isDef2(ch)) { - if (isDef2(oldVnode.text)) { - setTextContent2(elm, ""); - } - addVnodes2(elm, null, ch, 0, ch.length - 1); - } else if (isDef2(oldCh)) { - removeVnodes2(elm, oldCh, 0, oldCh.length - 1); - } else if (isDef2(oldVnode.text)) { - setTextContent2(elm, ""); - } - } else if (oldVnode.text !== vnode.text) { - if (isDef2(oldCh)) { - removeVnodes2(elm, oldCh, 0, oldCh.length - 1); - } - setTextContent2(elm, vnode.text); - } - } - function patch2(oldVnode, vnode) { - if (sameVnode2(oldVnode, vnode)) { - patchVnode2(oldVnode, vnode); - } else { - var elm = oldVnode.elm; - var parent_2 = parentNode2(elm); - createElm2(vnode); - if (parent_2 !== null) { - insertBefore2(parent_2, vnode.elm, nextSibling2(elm)); - removeVnodes2(parent_2, [oldVnode], 0, 0); - } - } - return vnode; - } - var svgId2 = 0; - var SVGPainter2 = function() { - function SVGPainter3(root, storage3, opts) { - this.type = "svg"; - this.refreshHover = createMethodNotSupport2("refreshHover"); - this.configLayer = createMethodNotSupport2("configLayer"); - this.storage = storage3; - this._opts = opts = extend3({}, opts); - this.root = root; - this._id = "zr" + svgId2++; - this._oldVNode = createSVGVNode2(opts.width, opts.height); - if (root && !opts.ssr) { - var viewport = this._viewport = document.createElement("div"); - viewport.style.cssText = "position:relative;overflow:hidden"; - var svgDom = this._svgDom = this._oldVNode.elm = createElement2("svg"); - updateAttrs2(null, this._oldVNode); - viewport.appendChild(svgDom); - root.appendChild(viewport); - } - this.resize(opts.width, opts.height); - } - SVGPainter3.prototype.getType = function() { - return this.type; - }; - SVGPainter3.prototype.getViewportRoot = function() { - return this._viewport; - }; - SVGPainter3.prototype.getViewportRootOffset = function() { - var viewportRoot = this.getViewportRoot(); - if (viewportRoot) { - return { - offsetLeft: viewportRoot.offsetLeft || 0, - offsetTop: viewportRoot.offsetTop || 0 - }; - } - }; - SVGPainter3.prototype.getSvgDom = function() { - return this._svgDom; - }; - SVGPainter3.prototype.refresh = function() { - if (this.root) { - var vnode = this.renderToVNode({ - willUpdate: true - }); - vnode.attrs.style = "position:absolute;left:0;top:0;user-select:none"; - patch2(this._oldVNode, vnode); - this._oldVNode = vnode; - } - }; - SVGPainter3.prototype.renderOneToVNode = function(el) { - return brush$1(el, createBrushScope2(this._id)); - }; - SVGPainter3.prototype.renderToVNode = function(opts) { - opts = opts || {}; - var list = this.storage.getDisplayList(true); - var width = this._width; - var height = this._height; - var scope = createBrushScope2(this._id); - scope.animation = opts.animation; - scope.willUpdate = opts.willUpdate; - scope.compress = opts.compress; - scope.emphasis = opts.emphasis; - scope.ssr = this._opts.ssr; - var children = []; - var bgVNode = this._bgVNode = createBackgroundVNode2(width, height, this._backgroundColor, scope); - bgVNode && children.push(bgVNode); - var mainVNode = !opts.compress ? this._mainVNode = createVNode2("g", "main", {}, []) : null; - this._paintList(list, scope, mainVNode ? mainVNode.children : children); - mainVNode && children.push(mainVNode); - var defs = map3(keys2(scope.defs), function(id) { - return scope.defs[id]; - }); - if (defs.length) { - children.push(createVNode2("defs", "defs", {}, defs)); - } - if (opts.animation) { - var animationCssStr = getCssString2(scope.cssNodes, scope.cssAnims, { newline: true }); - if (animationCssStr) { - var styleNode = createVNode2("style", "stl", {}, [], animationCssStr); - children.push(styleNode); - } - } - return createSVGVNode2(width, height, children, opts.useViewBox); - }; - SVGPainter3.prototype.renderToString = function(opts) { - opts = opts || {}; - return vNodeToString2(this.renderToVNode({ - animation: retrieve22(opts.cssAnimation, true), - emphasis: retrieve22(opts.cssEmphasis, true), - willUpdate: false, - compress: true, - useViewBox: retrieve22(opts.useViewBox, true) - }), { newline: true }); - }; - SVGPainter3.prototype.setBackgroundColor = function(backgroundColor3) { - this._backgroundColor = backgroundColor3; - }; - SVGPainter3.prototype.getSvgRoot = function() { - return this._mainVNode && this._mainVNode.elm; - }; - SVGPainter3.prototype._paintList = function(list, scope, out3) { - var listLen = list.length; - var clipPathsGroupsStack = []; - var clipPathsGroupsStackDepth = 0; - var currentClipPathGroup; - var prevClipPaths; - var clipGroupNodeIdx = 0; - for (var i2 = 0; i2 < listLen; i2++) { - var displayable = list[i2]; - if (!displayable.invisible) { - var clipPaths = displayable.__clipPaths; - var len3 = clipPaths && clipPaths.length || 0; - var prevLen = prevClipPaths && prevClipPaths.length || 0; - var lca = void 0; - for (lca = Math.max(len3 - 1, prevLen - 1); lca >= 0; lca--) { - if (clipPaths && prevClipPaths && clipPaths[lca] === prevClipPaths[lca]) { - break; - } - } - for (var i_1 = prevLen - 1; i_1 > lca; i_1--) { - clipPathsGroupsStackDepth--; - currentClipPathGroup = clipPathsGroupsStack[clipPathsGroupsStackDepth - 1]; - } - for (var i_2 = lca + 1; i_2 < len3; i_2++) { - var groupAttrs = {}; - setClipPath2(clipPaths[i_2], groupAttrs, scope); - var g = createVNode2("g", "clip-g-" + clipGroupNodeIdx++, groupAttrs, []); - (currentClipPathGroup ? currentClipPathGroup.children : out3).push(g); - clipPathsGroupsStack[clipPathsGroupsStackDepth++] = g; - currentClipPathGroup = g; - } - prevClipPaths = clipPaths; - var ret = brush$1(displayable, scope); - if (ret) { - (currentClipPathGroup ? currentClipPathGroup.children : out3).push(ret); - } - } - } - }; - SVGPainter3.prototype.resize = function(width, height) { - var opts = this._opts; - var root = this.root; - var viewport = this._viewport; - width != null && (opts.width = width); - height != null && (opts.height = height); - if (root && viewport) { - viewport.style.display = "none"; - width = getSize3(root, 0, opts); - height = getSize3(root, 1, opts); - viewport.style.display = ""; - } - if (this._width !== width || this._height !== height) { - this._width = width; - this._height = height; - if (viewport) { - var viewportStyle = viewport.style; - viewportStyle.width = width + "px"; - viewportStyle.height = height + "px"; - } - if (!isPattern2(this._backgroundColor)) { - var svgDom = this._svgDom; - if (svgDom) { - svgDom.setAttribute("width", width); - svgDom.setAttribute("height", height); - } - var bgEl = this._bgVNode && this._bgVNode.elm; - if (bgEl) { - bgEl.setAttribute("width", width); - bgEl.setAttribute("height", height); - } - } else { - this.refresh(); - } - } - }; - SVGPainter3.prototype.getWidth = function() { - return this._width; - }; - SVGPainter3.prototype.getHeight = function() { - return this._height; - }; - SVGPainter3.prototype.dispose = function() { - if (this.root) { - this.root.innerHTML = ""; - } - this._svgDom = this._viewport = this.storage = this._oldVNode = this._bgVNode = this._mainVNode = null; - }; - SVGPainter3.prototype.clear = function() { - if (this._svgDom) { - this._svgDom.innerHTML = null; - } - this._oldVNode = null; - }; - SVGPainter3.prototype.toDataURL = function(base64) { - var str = this.renderToString(); - var prefix = "data:image/svg+xml;"; - if (base64) { - str = encodeBase642(str); - return str && prefix + "base64," + str; - } - return prefix + "charset=UTF-8," + encodeURIComponent(str); - }; - return SVGPainter3; - }(); - function createMethodNotSupport2(method) { - return function() { - if (true) { - logError2('In SVG mode painter not support method "' + method + '"'); - } - }; - } - function createBackgroundVNode2(width, height, backgroundColor3, scope) { - var bgVNode; - if (backgroundColor3 && backgroundColor3 !== "none") { - bgVNode = createVNode2("rect", "bg", { - width, - height, - x: "0", - y: "0" - }); - if (isGradient2(backgroundColor3)) { - setGradient2({ fill: backgroundColor3 }, bgVNode.attrs, "fill", scope); - } else if (isPattern2(backgroundColor3)) { - setPattern2({ - style: { - fill: backgroundColor3 - }, - dirty: noop2, - getBoundingRect: function() { - return { width, height }; - } - }, bgVNode.attrs, "fill", scope); - } else { - var _a3 = normalizeColor2(backgroundColor3), color2 = _a3.color, opacity = _a3.opacity; - bgVNode.attrs.fill = color2; - opacity < 1 && (bgVNode.attrs["fill-opacity"] = opacity); - } - } - return bgVNode; - } - function install56(registers) { - registers.registerPainter("svg", SVGPainter2); - } - function createDom2(id, painter, dpr3) { - var newDom = platformApi2.createCanvas(); - var width = painter.getWidth(); - var height = painter.getHeight(); - var newDomStyle = newDom.style; - if (newDomStyle) { - newDomStyle.position = "absolute"; - newDomStyle.left = "0"; - newDomStyle.top = "0"; - newDomStyle.width = width + "px"; - newDomStyle.height = height + "px"; - newDom.setAttribute("data-zr-dom-id", id); - } - newDom.width = width * dpr3; - newDom.height = height * dpr3; - return newDom; - } - var Layer2 = function(_super) { - __extends2(Layer3, _super); - function Layer3(id, painter, dpr3) { - var _this = _super.call(this) || this; - _this.motionBlur = false; - _this.lastFrameAlpha = 0.7; - _this.dpr = 1; - _this.virtual = false; - _this.config = {}; - _this.incremental = false; - _this.zlevel = 0; - _this.maxRepaintRectCount = 5; - _this.__dirty = true; - _this.__firstTimePaint = true; - _this.__used = false; - _this.__drawIndex = 0; - _this.__startIndex = 0; - _this.__endIndex = 0; - _this.__prevStartIndex = null; - _this.__prevEndIndex = null; - var dom; - dpr3 = dpr3 || devicePixelRatio2; - if (typeof id === "string") { - dom = createDom2(id, painter, dpr3); - } else if (isObject5(id)) { - dom = id; - id = dom.id; - } - _this.id = id; - _this.dom = dom; - var domStyle = dom.style; - if (domStyle) { - disableUserSelect2(dom); - dom.onselectstart = function() { - return false; - }; - domStyle.padding = "0"; - domStyle.margin = "0"; - domStyle.borderWidth = "0"; - } - _this.painter = painter; - _this.dpr = dpr3; - return _this; - } - Layer3.prototype.getElementCount = function() { - return this.__endIndex - this.__startIndex; - }; - Layer3.prototype.afterBrush = function() { - this.__prevStartIndex = this.__startIndex; - this.__prevEndIndex = this.__endIndex; - }; - Layer3.prototype.initContext = function() { - this.ctx = this.dom.getContext("2d"); - this.ctx.dpr = this.dpr; - }; - Layer3.prototype.setUnpainted = function() { - this.__firstTimePaint = true; - }; - Layer3.prototype.createBackBuffer = function() { - var dpr3 = this.dpr; - this.domBack = createDom2("back-" + this.id, this.painter, dpr3); - this.ctxBack = this.domBack.getContext("2d"); - if (dpr3 !== 1) { - this.ctxBack.scale(dpr3, dpr3); - } - }; - Layer3.prototype.createRepaintRects = function(displayList, prevList, viewWidth, viewHeight) { - if (this.__firstTimePaint) { - this.__firstTimePaint = false; - return null; - } - var mergedRepaintRects = []; - var maxRepaintRectCount = this.maxRepaintRectCount; - var full = false; - var pendingRect = new BoundingRect2(0, 0, 0, 0); - function addRectToMergePool(rect) { - if (!rect.isFinite() || rect.isZero()) { - return; - } - if (mergedRepaintRects.length === 0) { - var boundingRect = new BoundingRect2(0, 0, 0, 0); - boundingRect.copy(rect); - mergedRepaintRects.push(boundingRect); - } else { - var isMerged = false; - var minDeltaArea = Infinity; - var bestRectToMergeIdx = 0; - for (var i3 = 0; i3 < mergedRepaintRects.length; ++i3) { - var mergedRect = mergedRepaintRects[i3]; - if (mergedRect.intersect(rect)) { - var pendingRect_1 = new BoundingRect2(0, 0, 0, 0); - pendingRect_1.copy(mergedRect); - pendingRect_1.union(rect); - mergedRepaintRects[i3] = pendingRect_1; - isMerged = true; - break; - } else if (full) { - pendingRect.copy(rect); - pendingRect.union(mergedRect); - var aArea = rect.width * rect.height; - var bArea = mergedRect.width * mergedRect.height; - var pendingArea = pendingRect.width * pendingRect.height; - var deltaArea = pendingArea - aArea - bArea; - if (deltaArea < minDeltaArea) { - minDeltaArea = deltaArea; - bestRectToMergeIdx = i3; - } - } - } - if (full) { - mergedRepaintRects[bestRectToMergeIdx].union(rect); - isMerged = true; - } - if (!isMerged) { - var boundingRect = new BoundingRect2(0, 0, 0, 0); - boundingRect.copy(rect); - mergedRepaintRects.push(boundingRect); - } - if (!full) { - full = mergedRepaintRects.length >= maxRepaintRectCount; - } - } - } - for (var i2 = this.__startIndex; i2 < this.__endIndex; ++i2) { - var el = displayList[i2]; - if (el) { - var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true); - var prevRect = el.__isRendered && (el.__dirty & REDRAW_BIT2 || !shouldPaint) ? el.getPrevPaintRect() : null; - if (prevRect) { - addRectToMergePool(prevRect); - } - var curRect = shouldPaint && (el.__dirty & REDRAW_BIT2 || !el.__isRendered) ? el.getPaintRect() : null; - if (curRect) { - addRectToMergePool(curRect); - } - } - } - for (var i2 = this.__prevStartIndex; i2 < this.__prevEndIndex; ++i2) { - var el = prevList[i2]; - var shouldPaint = el && el.shouldBePainted(viewWidth, viewHeight, true, true); - if (el && (!shouldPaint || !el.__zr) && el.__isRendered) { - var prevRect = el.getPrevPaintRect(); - if (prevRect) { - addRectToMergePool(prevRect); - } - } - } - var hasIntersections; - do { - hasIntersections = false; - for (var i2 = 0; i2 < mergedRepaintRects.length; ) { - if (mergedRepaintRects[i2].isZero()) { - mergedRepaintRects.splice(i2, 1); - continue; - } - for (var j = i2 + 1; j < mergedRepaintRects.length; ) { - if (mergedRepaintRects[i2].intersect(mergedRepaintRects[j])) { - hasIntersections = true; - mergedRepaintRects[i2].union(mergedRepaintRects[j]); - mergedRepaintRects.splice(j, 1); - } else { - j++; - } - } - i2++; - } - } while (hasIntersections); - this._paintRects = mergedRepaintRects; - return mergedRepaintRects; - }; - Layer3.prototype.debugGetPaintRects = function() { - return (this._paintRects || []).slice(); - }; - Layer3.prototype.resize = function(width, height) { - var dpr3 = this.dpr; - var dom = this.dom; - var domStyle = dom.style; - var domBack = this.domBack; - if (domStyle) { - domStyle.width = width + "px"; - domStyle.height = height + "px"; - } - dom.width = width * dpr3; - dom.height = height * dpr3; - if (domBack) { - domBack.width = width * dpr3; - domBack.height = height * dpr3; - if (dpr3 !== 1) { - this.ctxBack.scale(dpr3, dpr3); - } - } - }; - Layer3.prototype.clear = function(clearAll, clearColor, repaintRects) { - var dom = this.dom; - var ctx = this.ctx; - var width = dom.width; - var height = dom.height; - clearColor = clearColor || this.clearColor; - var haveMotionBLur = this.motionBlur && !clearAll; - var lastFrameAlpha = this.lastFrameAlpha; - var dpr3 = this.dpr; - var self2 = this; - if (haveMotionBLur) { - if (!this.domBack) { - this.createBackBuffer(); - } - this.ctxBack.globalCompositeOperation = "copy"; - this.ctxBack.drawImage(dom, 0, 0, width / dpr3, height / dpr3); - } - var domBack = this.domBack; - function doClear(x, y, width2, height2) { - ctx.clearRect(x, y, width2, height2); - if (clearColor && clearColor !== "transparent") { - var clearColorGradientOrPattern = void 0; - if (isGradientObject2(clearColor)) { - var shouldCache = clearColor.global || clearColor.__width === width2 && clearColor.__height === height2; - clearColorGradientOrPattern = shouldCache && clearColor.__canvasGradient || getCanvasGradient2(ctx, clearColor, { - x: 0, - y: 0, - width: width2, - height: height2 - }); - clearColor.__canvasGradient = clearColorGradientOrPattern; - clearColor.__width = width2; - clearColor.__height = height2; - } else if (isImagePatternObject2(clearColor)) { - clearColor.scaleX = clearColor.scaleX || dpr3; - clearColor.scaleY = clearColor.scaleY || dpr3; - clearColorGradientOrPattern = createCanvasPattern2(ctx, clearColor, { - dirty: function() { - self2.setUnpainted(); - self2.painter.refresh(); - } - }); - } - ctx.save(); - ctx.fillStyle = clearColorGradientOrPattern || clearColor; - ctx.fillRect(x, y, width2, height2); - ctx.restore(); - } - if (haveMotionBLur) { - ctx.save(); - ctx.globalAlpha = lastFrameAlpha; - ctx.drawImage(domBack, x, y, width2, height2); - ctx.restore(); - } - } - if (!repaintRects || haveMotionBLur) { - doClear(0, 0, width, height); - } else if (repaintRects.length) { - each17(repaintRects, function(rect) { - doClear(rect.x * dpr3, rect.y * dpr3, rect.width * dpr3, rect.height * dpr3); - }); - } - }; - return Layer3; - }(Eventful2); - var HOVER_LAYER_ZLEVEL2 = 1e5; - var CANVAS_ZLEVEL2 = 314159; - var EL_AFTER_INCREMENTAL_INC2 = 0.01; - var INCREMENTAL_INC2 = 1e-3; - function isLayerValid2(layer) { - if (!layer) { - return false; - } - if (layer.__builtin__) { - return true; - } - if (typeof layer.resize !== "function" || typeof layer.refresh !== "function") { - return false; - } - return true; - } - function createRoot2(width, height) { - var domRoot = document.createElement("div"); - domRoot.style.cssText = [ - "position:relative", - "width:" + width + "px", - "height:" + height + "px", - "padding:0", - "margin:0", - "border-width:0" - ].join(";") + ";"; - return domRoot; - } - var CanvasPainter2 = function() { - function CanvasPainter3(root, storage3, opts, id) { - this.type = "canvas"; - this._zlevelList = []; - this._prevDisplayList = []; - this._layers = {}; - this._layerConfig = {}; - this._needsManuallyCompositing = false; - this.type = "canvas"; - var singleCanvas = !root.nodeName || root.nodeName.toUpperCase() === "CANVAS"; - this._opts = opts = extend3({}, opts || {}); - this.dpr = opts.devicePixelRatio || devicePixelRatio2; - this._singleCanvas = singleCanvas; - this.root = root; - var rootStyle = root.style; - if (rootStyle) { - disableUserSelect2(root); - root.innerHTML = ""; - } - this.storage = storage3; - var zlevelList = this._zlevelList; - this._prevDisplayList = []; - var layers = this._layers; - if (!singleCanvas) { - this._width = getSize3(root, 0, opts); - this._height = getSize3(root, 1, opts); - var domRoot = this._domRoot = createRoot2(this._width, this._height); - root.appendChild(domRoot); - } else { - var rootCanvas = root; - var width = rootCanvas.width; - var height = rootCanvas.height; - if (opts.width != null) { - width = opts.width; - } - if (opts.height != null) { - height = opts.height; - } - this.dpr = opts.devicePixelRatio || 1; - rootCanvas.width = width * this.dpr; - rootCanvas.height = height * this.dpr; - this._width = width; - this._height = height; - var mainLayer = new Layer2(rootCanvas, this, this.dpr); - mainLayer.__builtin__ = true; - mainLayer.initContext(); - layers[CANVAS_ZLEVEL2] = mainLayer; - mainLayer.zlevel = CANVAS_ZLEVEL2; - zlevelList.push(CANVAS_ZLEVEL2); - this._domRoot = root; - } - } - CanvasPainter3.prototype.getType = function() { - return "canvas"; - }; - CanvasPainter3.prototype.isSingleCanvas = function() { - return this._singleCanvas; - }; - CanvasPainter3.prototype.getViewportRoot = function() { - return this._domRoot; - }; - CanvasPainter3.prototype.getViewportRootOffset = function() { - var viewportRoot = this.getViewportRoot(); - if (viewportRoot) { - return { - offsetLeft: viewportRoot.offsetLeft || 0, - offsetTop: viewportRoot.offsetTop || 0 - }; - } - }; - CanvasPainter3.prototype.refresh = function(paintAll) { - var list = this.storage.getDisplayList(true); - var prevList = this._prevDisplayList; - var zlevelList = this._zlevelList; - this._redrawId = Math.random(); - this._paintList(list, prevList, paintAll, this._redrawId); - for (var i2 = 0; i2 < zlevelList.length; i2++) { - var z = zlevelList[i2]; - var layer = this._layers[z]; - if (!layer.__builtin__ && layer.refresh) { - var clearColor = i2 === 0 ? this._backgroundColor : null; - layer.refresh(clearColor); - } - } - if (this._opts.useDirtyRect) { - this._prevDisplayList = list.slice(); - } - return this; - }; - CanvasPainter3.prototype.refreshHover = function() { - this._paintHoverList(this.storage.getDisplayList(false)); - }; - CanvasPainter3.prototype._paintHoverList = function(list) { - var len3 = list.length; - var hoverLayer = this._hoverlayer; - hoverLayer && hoverLayer.clear(); - if (!len3) { - return; - } - var scope = { - inHover: true, - viewWidth: this._width, - viewHeight: this._height - }; - var ctx; - for (var i2 = 0; i2 < len3; i2++) { - var el = list[i2]; - if (el.__inHover) { - if (!hoverLayer) { - hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL2); - } - if (!ctx) { - ctx = hoverLayer.ctx; - ctx.save(); - } - brush3(ctx, el, scope, i2 === len3 - 1); - } - } - if (ctx) { - ctx.restore(); - } - }; - CanvasPainter3.prototype.getHoverLayer = function() { - return this.getLayer(HOVER_LAYER_ZLEVEL2); - }; - CanvasPainter3.prototype.paintOne = function(ctx, el) { - brushSingle2(ctx, el); - }; - CanvasPainter3.prototype._paintList = function(list, prevList, paintAll, redrawId) { - if (this._redrawId !== redrawId) { - return; - } - paintAll = paintAll || false; - this._updateLayerStatus(list); - var _a3 = this._doPaintList(list, prevList, paintAll), finished = _a3.finished, needsRefreshHover = _a3.needsRefreshHover; - if (this._needsManuallyCompositing) { - this._compositeManually(); - } - if (needsRefreshHover) { - this._paintHoverList(list); - } - if (!finished) { - var self_1 = this; - requestAnimationFrame$1(function() { - self_1._paintList(list, prevList, paintAll, redrawId); - }); - } else { - this.eachLayer(function(layer) { - layer.afterBrush && layer.afterBrush(); - }); - } - }; - CanvasPainter3.prototype._compositeManually = function() { - var ctx = this.getLayer(CANVAS_ZLEVEL2).ctx; - var width = this._domRoot.width; - var height = this._domRoot.height; - ctx.clearRect(0, 0, width, height); - this.eachBuiltinLayer(function(layer) { - if (layer.virtual) { - ctx.drawImage(layer.dom, 0, 0, width, height); - } - }); - }; - CanvasPainter3.prototype._doPaintList = function(list, prevList, paintAll) { - var _this = this; - var layerList = []; - var useDirtyRect = this._opts.useDirtyRect; - for (var zi = 0; zi < this._zlevelList.length; zi++) { - var zlevel = this._zlevelList[zi]; - var layer = this._layers[zlevel]; - if (layer.__builtin__ && layer !== this._hoverlayer && (layer.__dirty || paintAll)) { - layerList.push(layer); - } - } - var finished = true; - var needsRefreshHover = false; - var _loop_1 = function(k3) { - var layer2 = layerList[k3]; - var ctx = layer2.ctx; - var repaintRects = useDirtyRect && layer2.createRepaintRects(list, prevList, this_1._width, this_1._height); - var start4 = paintAll ? layer2.__startIndex : layer2.__drawIndex; - var useTimer = !paintAll && layer2.incremental && Date.now; - var startTime = useTimer && Date.now(); - var clearColor = layer2.zlevel === this_1._zlevelList[0] ? this_1._backgroundColor : null; - if (layer2.__startIndex === layer2.__endIndex) { - layer2.clear(false, clearColor, repaintRects); - } else if (start4 === layer2.__startIndex) { - var firstEl = list[start4]; - if (!firstEl.incremental || !firstEl.notClear || paintAll) { - layer2.clear(false, clearColor, repaintRects); - } - } - if (start4 === -1) { - console.error("For some unknown reason. drawIndex is -1"); - start4 = layer2.__startIndex; - } - var i2; - var repaint = function(repaintRect) { - var scope = { - inHover: false, - allClipped: false, - prevEl: null, - viewWidth: _this._width, - viewHeight: _this._height - }; - for (i2 = start4; i2 < layer2.__endIndex; i2++) { - var el = list[i2]; - if (el.__inHover) { - needsRefreshHover = true; - } - _this._doPaintEl(el, layer2, useDirtyRect, repaintRect, scope, i2 === layer2.__endIndex - 1); - if (useTimer) { - var dTime = Date.now() - startTime; - if (dTime > 15) { - break; - } - } - } - if (scope.prevElClipPaths) { - ctx.restore(); - } - }; - if (repaintRects) { - if (repaintRects.length === 0) { - i2 = layer2.__endIndex; - } else { - var dpr3 = this_1.dpr; - for (var r = 0; r < repaintRects.length; ++r) { - var rect = repaintRects[r]; - ctx.save(); - ctx.beginPath(); - ctx.rect(rect.x * dpr3, rect.y * dpr3, rect.width * dpr3, rect.height * dpr3); - ctx.clip(); - repaint(rect); - ctx.restore(); - } - } - } else { - ctx.save(); - repaint(); - ctx.restore(); - } - layer2.__drawIndex = i2; - if (layer2.__drawIndex < layer2.__endIndex) { - finished = false; - } - }; - var this_1 = this; - for (var k2 = 0; k2 < layerList.length; k2++) { - _loop_1(k2); - } - if (env2.wxa) { - each17(this._layers, function(layer2) { - if (layer2 && layer2.ctx && layer2.ctx.draw) { - layer2.ctx.draw(); - } - }); - } - return { - finished, - needsRefreshHover - }; - }; - CanvasPainter3.prototype._doPaintEl = function(el, currentLayer, useDirtyRect, repaintRect, scope, isLast) { - var ctx = currentLayer.ctx; - if (useDirtyRect) { - var paintRect = el.getPaintRect(); - if (!repaintRect || paintRect && paintRect.intersect(repaintRect)) { - brush3(ctx, el, scope, isLast); - el.setPrevPaintRect(paintRect); - } - } else { - brush3(ctx, el, scope, isLast); - } - }; - CanvasPainter3.prototype.getLayer = function(zlevel, virtual) { - if (this._singleCanvas && !this._needsManuallyCompositing) { - zlevel = CANVAS_ZLEVEL2; - } - var layer = this._layers[zlevel]; - if (!layer) { - layer = new Layer2("zr_" + zlevel, this, this.dpr); - layer.zlevel = zlevel; - layer.__builtin__ = true; - if (this._layerConfig[zlevel]) { - merge2(layer, this._layerConfig[zlevel], true); - } else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC2]) { - merge2(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC2], true); - } - if (virtual) { - layer.virtual = virtual; - } - this.insertLayer(zlevel, layer); - layer.initContext(); - } - return layer; - }; - CanvasPainter3.prototype.insertLayer = function(zlevel, layer) { - var layersMap = this._layers; - var zlevelList = this._zlevelList; - var len3 = zlevelList.length; - var domRoot = this._domRoot; - var prevLayer = null; - var i2 = -1; - if (layersMap[zlevel]) { - if (true) { - logError2("ZLevel " + zlevel + " has been used already"); - } - return; - } - if (!isLayerValid2(layer)) { - if (true) { - logError2("Layer of zlevel " + zlevel + " is not valid"); - } - return; - } - if (len3 > 0 && zlevel > zlevelList[0]) { - for (i2 = 0; i2 < len3 - 1; i2++) { - if (zlevelList[i2] < zlevel && zlevelList[i2 + 1] > zlevel) { - break; - } - } - prevLayer = layersMap[zlevelList[i2]]; - } - zlevelList.splice(i2 + 1, 0, zlevel); - layersMap[zlevel] = layer; - if (!layer.virtual) { - if (prevLayer) { - var prevDom = prevLayer.dom; - if (prevDom.nextSibling) { - domRoot.insertBefore(layer.dom, prevDom.nextSibling); - } else { - domRoot.appendChild(layer.dom); - } - } else { - if (domRoot.firstChild) { - domRoot.insertBefore(layer.dom, domRoot.firstChild); - } else { - domRoot.appendChild(layer.dom); - } - } - } - layer.painter || (layer.painter = this); - }; - CanvasPainter3.prototype.eachLayer = function(cb, context) { - var zlevelList = this._zlevelList; - for (var i2 = 0; i2 < zlevelList.length; i2++) { - var z = zlevelList[i2]; - cb.call(context, this._layers[z], z); - } - }; - CanvasPainter3.prototype.eachBuiltinLayer = function(cb, context) { - var zlevelList = this._zlevelList; - for (var i2 = 0; i2 < zlevelList.length; i2++) { - var z = zlevelList[i2]; - var layer = this._layers[z]; - if (layer.__builtin__) { - cb.call(context, layer, z); - } - } - }; - CanvasPainter3.prototype.eachOtherLayer = function(cb, context) { - var zlevelList = this._zlevelList; - for (var i2 = 0; i2 < zlevelList.length; i2++) { - var z = zlevelList[i2]; - var layer = this._layers[z]; - if (!layer.__builtin__) { - cb.call(context, layer, z); - } - } - }; - CanvasPainter3.prototype.getLayers = function() { - return this._layers; - }; - CanvasPainter3.prototype._updateLayerStatus = function(list) { - this.eachBuiltinLayer(function(layer2, z) { - layer2.__dirty = layer2.__used = false; - }); - function updatePrevLayer(idx) { - if (prevLayer) { - if (prevLayer.__endIndex !== idx) { - prevLayer.__dirty = true; - } - prevLayer.__endIndex = idx; - } - } - if (this._singleCanvas) { - for (var i_1 = 1; i_1 < list.length; i_1++) { - var el = list[i_1]; - if (el.zlevel !== list[i_1 - 1].zlevel || el.incremental) { - this._needsManuallyCompositing = true; - break; - } - } - } - var prevLayer = null; - var incrementalLayerCount = 0; - var prevZlevel; - var i2; - for (i2 = 0; i2 < list.length; i2++) { - var el = list[i2]; - var zlevel = el.zlevel; - var layer = void 0; - if (prevZlevel !== zlevel) { - prevZlevel = zlevel; - incrementalLayerCount = 0; - } - if (el.incremental) { - layer = this.getLayer(zlevel + INCREMENTAL_INC2, this._needsManuallyCompositing); - layer.incremental = true; - incrementalLayerCount = 1; - } else { - layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC2 : 0), this._needsManuallyCompositing); - } - if (!layer.__builtin__) { - logError2("ZLevel " + zlevel + " has been used by unkown layer " + layer.id); - } - if (layer !== prevLayer) { - layer.__used = true; - if (layer.__startIndex !== i2) { - layer.__dirty = true; - } - layer.__startIndex = i2; - if (!layer.incremental) { - layer.__drawIndex = i2; - } else { - layer.__drawIndex = -1; - } - updatePrevLayer(i2); - prevLayer = layer; - } - if (el.__dirty & REDRAW_BIT2 && !el.__inHover) { - layer.__dirty = true; - if (layer.incremental && layer.__drawIndex < 0) { - layer.__drawIndex = i2; - } - } - } - updatePrevLayer(i2); - this.eachBuiltinLayer(function(layer2, z) { - if (!layer2.__used && layer2.getElementCount() > 0) { - layer2.__dirty = true; - layer2.__startIndex = layer2.__endIndex = layer2.__drawIndex = 0; - } - if (layer2.__dirty && layer2.__drawIndex < 0) { - layer2.__drawIndex = layer2.__startIndex; - } - }); - }; - CanvasPainter3.prototype.clear = function() { - this.eachBuiltinLayer(this._clearLayer); - return this; - }; - CanvasPainter3.prototype._clearLayer = function(layer) { - layer.clear(); - }; - CanvasPainter3.prototype.setBackgroundColor = function(backgroundColor3) { - this._backgroundColor = backgroundColor3; - each17(this._layers, function(layer) { - layer.setUnpainted(); - }); - }; - CanvasPainter3.prototype.configLayer = function(zlevel, config2) { - if (config2) { - var layerConfig = this._layerConfig; - if (!layerConfig[zlevel]) { - layerConfig[zlevel] = config2; - } else { - merge2(layerConfig[zlevel], config2, true); - } - for (var i2 = 0; i2 < this._zlevelList.length; i2++) { - var _zlevel = this._zlevelList[i2]; - if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC2) { - var layer = this._layers[_zlevel]; - merge2(layer, layerConfig[zlevel], true); - } - } - } - }; - CanvasPainter3.prototype.delLayer = function(zlevel) { - var layers = this._layers; - var zlevelList = this._zlevelList; - var layer = layers[zlevel]; - if (!layer) { - return; - } - layer.dom.parentNode.removeChild(layer.dom); - delete layers[zlevel]; - zlevelList.splice(indexOf2(zlevelList, zlevel), 1); - }; - CanvasPainter3.prototype.resize = function(width, height) { - if (!this._domRoot.style) { - if (width == null || height == null) { - return; - } - this._width = width; - this._height = height; - this.getLayer(CANVAS_ZLEVEL2).resize(width, height); - } else { - var domRoot = this._domRoot; - domRoot.style.display = "none"; - var opts = this._opts; - var root = this.root; - width != null && (opts.width = width); - height != null && (opts.height = height); - width = getSize3(root, 0, opts); - height = getSize3(root, 1, opts); - domRoot.style.display = ""; - if (this._width !== width || height !== this._height) { - domRoot.style.width = width + "px"; - domRoot.style.height = height + "px"; - for (var id in this._layers) { - if (this._layers.hasOwnProperty(id)) { - this._layers[id].resize(width, height); - } - } - this.refresh(true); - } - this._width = width; - this._height = height; - } - return this; - }; - CanvasPainter3.prototype.clearLayer = function(zlevel) { - var layer = this._layers[zlevel]; - if (layer) { - layer.clear(); - } - }; - CanvasPainter3.prototype.dispose = function() { - this.root.innerHTML = ""; - this.root = this.storage = this._domRoot = this._layers = null; - }; - CanvasPainter3.prototype.getRenderedCanvas = function(opts) { - opts = opts || {}; - if (this._singleCanvas && !this._compositeManually) { - return this._layers[CANVAS_ZLEVEL2].dom; - } - var imageLayer = new Layer2("image", this, opts.pixelRatio || this.dpr); - imageLayer.initContext(); - imageLayer.clear(false, opts.backgroundColor || this._backgroundColor); - var ctx = imageLayer.ctx; - if (opts.pixelRatio <= this.dpr) { - this.refresh(); - var width_1 = imageLayer.dom.width; - var height_1 = imageLayer.dom.height; - this.eachLayer(function(layer) { - if (layer.__builtin__) { - ctx.drawImage(layer.dom, 0, 0, width_1, height_1); - } else if (layer.renderToCanvas) { - ctx.save(); - layer.renderToCanvas(ctx); - ctx.restore(); - } - }); - } else { - var scope = { - inHover: false, - viewWidth: this._width, - viewHeight: this._height - }; - var displayList = this.storage.getDisplayList(true); - for (var i2 = 0, len3 = displayList.length; i2 < len3; i2++) { - var el = displayList[i2]; - brush3(ctx, el, scope, i2 === len3 - 1); - } - } - return imageLayer.dom; - }; - CanvasPainter3.prototype.getWidth = function() { - return this._width; - }; - CanvasPainter3.prototype.getHeight = function() { - return this._height; - }; - return CanvasPainter3; - }(); - function install$1(registers) { - registers.registerPainter("canvas", CanvasPainter2); - } - var LineSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(LineSeriesModel3, _super); - function LineSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = LineSeriesModel3.type; - _this.hasSymbolVisual = true; - return _this; - } - LineSeriesModel3.prototype.getInitialData = function(option) { - if (true) { - var coordSys = option.coordinateSystem; - if (coordSys !== "polar" && coordSys !== "cartesian2d") { - throw new Error("Line not support coordinateSystem besides cartesian and polar"); - } - } - return createSeriesData2(null, this, { - useEncodeDefaulter: true - }); - }; - LineSeriesModel3.prototype.getLegendIcon = function(opt) { - var group = new Group5(); - var line = createSymbol3("line", 0, opt.itemHeight / 2, opt.itemWidth, 0, opt.lineStyle.stroke, false); - group.add(line); - line.setStyle(opt.lineStyle); - var visualType = this.getData().getVisual("symbol"); - var visualRotate = this.getData().getVisual("symbolRotate"); - var symbolType = visualType === "none" ? "circle" : visualType; - var size2 = opt.itemHeight * 0.8; - var symbol = createSymbol3(symbolType, (opt.itemWidth - size2) / 2, (opt.itemHeight - size2) / 2, size2, size2, opt.itemStyle.fill); - group.add(symbol); - symbol.setStyle(opt.itemStyle); - var symbolRotate = opt.iconRotate === "inherit" ? visualRotate : opt.iconRotate || 0; - symbol.rotation = symbolRotate * Math.PI / 180; - symbol.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]); - if (symbolType.indexOf("empty") > -1) { - symbol.style.stroke = symbol.style.fill; - symbol.style.fill = "#fff"; - symbol.style.lineWidth = 2; - } - return group; - }; - LineSeriesModel3.type = "series.line"; - LineSeriesModel3.dependencies = ["grid", "polar"]; - LineSeriesModel3.defaultOption = { - // zlevel: 0, - z: 3, - coordinateSystem: "cartesian2d", - legendHoverLink: true, - clip: true, - label: { - position: "top" - }, - // itemStyle: { - // }, - endLabel: { - show: false, - valueAnimation: true, - distance: 8 - }, - lineStyle: { - width: 2, - type: "solid" - }, - emphasis: { - scale: true - }, - // areaStyle: { - // origin of areaStyle. Valid values: - // `'auto'/null/undefined`: from axisLine to data - // `'start'`: from min to data - // `'end'`: from data to max - // origin: 'auto' - // }, - // false, 'start', 'end', 'middle' - step: false, - // Disabled if step is true - smooth: false, - smoothMonotone: null, - symbol: "emptyCircle", - symbolSize: 4, - symbolRotate: null, - showSymbol: true, - // `false`: follow the label interval strategy. - // `true`: show all symbols. - // `'auto'`: If possible, show all symbols, otherwise - // follow the label interval strategy. - showAllSymbol: "auto", - // Whether to connect break point. - connectNulls: false, - // Sampling for large data. Can be: 'average', 'max', 'min', 'sum', 'lttb'. - sampling: "none", - animationEasing: "linear", - // Disable progressive - progressive: 0, - hoverLayerThreshold: Infinity, - universalTransition: { - divideShape: "clone" - }, - triggerLineEvent: false - }; - return LineSeriesModel3; - }(SeriesModel2) - ); - function getDefaultLabel2(data, dataIndex) { - var labelDims = data.mapDimensionsAll("defaultedLabel"); - var len3 = labelDims.length; - if (len3 === 1) { - var rawVal = retrieveRawValue2(data, dataIndex, labelDims[0]); - return rawVal != null ? rawVal + "" : null; - } else if (len3) { - var vals = []; - for (var i2 = 0; i2 < labelDims.length; i2++) { - vals.push(retrieveRawValue2(data, dataIndex, labelDims[i2])); - } - return vals.join(" "); - } - } - function getDefaultInterpolatedLabel2(data, interpolatedValue) { - var labelDims = data.mapDimensionsAll("defaultedLabel"); - if (!isArray3(interpolatedValue)) { - return interpolatedValue + ""; - } - var vals = []; - for (var i2 = 0; i2 < labelDims.length; i2++) { - var dimIndex = data.getDimensionIndex(labelDims[i2]); - if (dimIndex >= 0) { - vals.push(interpolatedValue[dimIndex]); - } - } - return vals.join(" "); - } - var Symbol3 = ( - /** @class */ - function(_super) { - __extends2(Symbol4, _super); - function Symbol4(data, idx, seriesScope, opts) { - var _this = _super.call(this) || this; - _this.updateData(data, idx, seriesScope, opts); - return _this; - } - Symbol4.prototype._createSymbol = function(symbolType, data, idx, symbolSize, keepAspect) { - this.removeAll(); - var symbolPath = createSymbol3(symbolType, -1, -1, 2, 2, null, keepAspect); - symbolPath.attr({ - z2: 100, - culling: true, - scaleX: symbolSize[0] / 2, - scaleY: symbolSize[1] / 2 - }); - symbolPath.drift = driftSymbol2; - this._symbolType = symbolType; - this.add(symbolPath); - }; - Symbol4.prototype.stopSymbolAnimation = function(toLastFrame) { - this.childAt(0).stopAnimation(null, toLastFrame); - }; - Symbol4.prototype.getSymbolType = function() { - return this._symbolType; - }; - Symbol4.prototype.getSymbolPath = function() { - return this.childAt(0); - }; - Symbol4.prototype.highlight = function() { - enterEmphasis2(this.childAt(0)); - }; - Symbol4.prototype.downplay = function() { - leaveEmphasis2(this.childAt(0)); - }; - Symbol4.prototype.setZ = function(zlevel, z) { - var symbolPath = this.childAt(0); - symbolPath.zlevel = zlevel; - symbolPath.z = z; - }; - Symbol4.prototype.setDraggable = function(draggable, hasCursorOption) { - var symbolPath = this.childAt(0); - symbolPath.draggable = draggable; - symbolPath.cursor = !hasCursorOption && draggable ? "move" : symbolPath.cursor; - }; - Symbol4.prototype.updateData = function(data, idx, seriesScope, opts) { - this.silent = false; - var symbolType = data.getItemVisual(idx, "symbol") || "circle"; - var seriesModel = data.hostModel; - var symbolSize = Symbol4.getSymbolSize(data, idx); - var isInit = symbolType !== this._symbolType; - var disableAnimation = opts && opts.disableAnimation; - if (isInit) { - var keepAspect = data.getItemVisual(idx, "symbolKeepAspect"); - this._createSymbol(symbolType, data, idx, symbolSize, keepAspect); - } else { - var symbolPath = this.childAt(0); - symbolPath.silent = false; - var target = { - scaleX: symbolSize[0] / 2, - scaleY: symbolSize[1] / 2 - }; - disableAnimation ? symbolPath.attr(target) : updateProps3(symbolPath, target, seriesModel, idx); - saveOldStyle2(symbolPath); - } - this._updateCommon(data, idx, symbolSize, seriesScope, opts); - if (isInit) { - var symbolPath = this.childAt(0); - if (!disableAnimation) { - var target = { - scaleX: this._sizeX, - scaleY: this._sizeY, - style: { - // Always fadeIn. Because it has fadeOut animation when symbol is removed.. - opacity: symbolPath.style.opacity - } - }; - symbolPath.scaleX = symbolPath.scaleY = 0; - symbolPath.style.opacity = 0; - initProps2(symbolPath, target, seriesModel, idx); - } - } - if (disableAnimation) { - this.childAt(0).stopAnimation("leave"); - } - }; - Symbol4.prototype._updateCommon = function(data, idx, symbolSize, seriesScope, opts) { - var symbolPath = this.childAt(0); - var seriesModel = data.hostModel; - var emphasisItemStyle; - var blurItemStyle; - var selectItemStyle; - var focus; - var blurScope; - var emphasisDisabled; - var labelStatesModels; - var hoverScale; - var cursorStyle; - if (seriesScope) { - emphasisItemStyle = seriesScope.emphasisItemStyle; - blurItemStyle = seriesScope.blurItemStyle; - selectItemStyle = seriesScope.selectItemStyle; - focus = seriesScope.focus; - blurScope = seriesScope.blurScope; - labelStatesModels = seriesScope.labelStatesModels; - hoverScale = seriesScope.hoverScale; - cursorStyle = seriesScope.cursorStyle; - emphasisDisabled = seriesScope.emphasisDisabled; - } - if (!seriesScope || data.hasItemOption) { - var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx); - var emphasisModel = itemModel.getModel("emphasis"); - emphasisItemStyle = emphasisModel.getModel("itemStyle").getItemStyle(); - selectItemStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle(); - blurItemStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle(); - focus = emphasisModel.get("focus"); - blurScope = emphasisModel.get("blurScope"); - emphasisDisabled = emphasisModel.get("disabled"); - labelStatesModels = getLabelStatesModels2(itemModel); - hoverScale = emphasisModel.getShallow("scale"); - cursorStyle = itemModel.getShallow("cursor"); - } - var symbolRotate = data.getItemVisual(idx, "symbolRotate"); - symbolPath.attr("rotation", (symbolRotate || 0) * Math.PI / 180 || 0); - var symbolOffset = normalizeSymbolOffset2(data.getItemVisual(idx, "symbolOffset"), symbolSize); - if (symbolOffset) { - symbolPath.x = symbolOffset[0]; - symbolPath.y = symbolOffset[1]; - } - cursorStyle && symbolPath.attr("cursor", cursorStyle); - var symbolStyle = data.getItemVisual(idx, "style"); - var visualColor = symbolStyle.fill; - if (symbolPath instanceof ZRImage2) { - var pathStyle = symbolPath.style; - symbolPath.useStyle(extend3({ - // TODO other properties like x, y ? - image: pathStyle.image, - x: pathStyle.x, - y: pathStyle.y, - width: pathStyle.width, - height: pathStyle.height - }, symbolStyle)); - } else { - if (symbolPath.__isEmptyBrush) { - symbolPath.useStyle(extend3({}, symbolStyle)); - } else { - symbolPath.useStyle(symbolStyle); - } - symbolPath.style.decal = null; - symbolPath.setColor(visualColor, opts && opts.symbolInnerColor); - symbolPath.style.strokeNoScale = true; - } - var liftZ = data.getItemVisual(idx, "liftZ"); - var z2Origin = this._z2; - if (liftZ != null) { - if (z2Origin == null) { - this._z2 = symbolPath.z2; - symbolPath.z2 += liftZ; - } - } else if (z2Origin != null) { - symbolPath.z2 = z2Origin; - this._z2 = null; - } - var useNameLabel = opts && opts.useNameLabel; - setLabelStyle2(symbolPath, labelStatesModels, { - labelFetcher: seriesModel, - labelDataIndex: idx, - defaultText: getLabelDefaultText, - inheritColor: visualColor, - defaultOpacity: symbolStyle.opacity - }); - function getLabelDefaultText(idx2) { - return useNameLabel ? data.getName(idx2) : getDefaultLabel2(data, idx2); - } - this._sizeX = symbolSize[0] / 2; - this._sizeY = symbolSize[1] / 2; - var emphasisState = symbolPath.ensureState("emphasis"); - emphasisState.style = emphasisItemStyle; - symbolPath.ensureState("select").style = selectItemStyle; - symbolPath.ensureState("blur").style = blurItemStyle; - var scaleRatio = hoverScale == null || hoverScale === true ? Math.max(1.1, 3 / this._sizeY) : isFinite(hoverScale) && hoverScale > 0 ? +hoverScale : 1; - emphasisState.scaleX = this._sizeX * scaleRatio; - emphasisState.scaleY = this._sizeY * scaleRatio; - this.setSymbolScale(1); - toggleHoverEmphasis2(this, focus, blurScope, emphasisDisabled); - }; - Symbol4.prototype.setSymbolScale = function(scale5) { - this.scaleX = this.scaleY = scale5; - }; - Symbol4.prototype.fadeOut = function(cb, seriesModel, opt) { - var symbolPath = this.childAt(0); - var dataIndex = getECData2(this).dataIndex; - var animationOpt = opt && opt.animation; - this.silent = symbolPath.silent = true; - if (opt && opt.fadeLabel) { - var textContent = symbolPath.getTextContent(); - if (textContent) { - removeElement2(textContent, { - style: { - opacity: 0 - } - }, seriesModel, { - dataIndex, - removeOpt: animationOpt, - cb: function() { - symbolPath.removeTextContent(); - } - }); - } - } else { - symbolPath.removeTextContent(); - } - removeElement2(symbolPath, { - style: { - opacity: 0 - }, - scaleX: 0, - scaleY: 0 - }, seriesModel, { - dataIndex, - cb, - removeOpt: animationOpt - }); - }; - Symbol4.getSymbolSize = function(data, idx) { - return normalizeSymbolSize2(data.getItemVisual(idx, "symbolSize")); - }; - return Symbol4; - }(Group5) - ); - function driftSymbol2(dx, dy) { - this.parent.drift(dx, dy); - } - function symbolNeedsDraw3(data, point, idx, opt) { - return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, "symbol") !== "none"; - } - function normalizeUpdateOpt2(opt) { - if (opt != null && !isObject5(opt)) { - opt = { - isIgnore: opt - }; - } - return opt || {}; - } - function makeSeriesScope4(data) { - var seriesModel = data.hostModel; - var emphasisModel = seriesModel.getModel("emphasis"); - return { - emphasisItemStyle: emphasisModel.getModel("itemStyle").getItemStyle(), - blurItemStyle: seriesModel.getModel(["blur", "itemStyle"]).getItemStyle(), - selectItemStyle: seriesModel.getModel(["select", "itemStyle"]).getItemStyle(), - focus: emphasisModel.get("focus"), - blurScope: emphasisModel.get("blurScope"), - emphasisDisabled: emphasisModel.get("disabled"), - hoverScale: emphasisModel.get("scale"), - labelStatesModels: getLabelStatesModels2(seriesModel), - cursorStyle: seriesModel.get("cursor") - }; - } - var SymbolDraw2 = ( - /** @class */ - function() { - function SymbolDraw3(SymbolCtor) { - this.group = new Group5(); - this._SymbolCtor = SymbolCtor || Symbol3; - } - SymbolDraw3.prototype.updateData = function(data, opt) { - this._progressiveEls = null; - opt = normalizeUpdateOpt2(opt); - var group = this.group; - var seriesModel = data.hostModel; - var oldData = this._data; - var SymbolCtor = this._SymbolCtor; - var disableAnimation = opt.disableAnimation; - var seriesScope = makeSeriesScope4(data); - var symbolUpdateOpt = { - disableAnimation - }; - var getSymbolPoint = opt.getSymbolPoint || function(idx) { - return data.getItemLayout(idx); - }; - if (!oldData) { - group.removeAll(); - } - data.diff(oldData).add(function(newIdx) { - var point = getSymbolPoint(newIdx); - if (symbolNeedsDraw3(data, point, newIdx, opt)) { - var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt); - symbolEl.setPosition(point); - data.setItemGraphicEl(newIdx, symbolEl); - group.add(symbolEl); - } - }).update(function(newIdx, oldIdx) { - var symbolEl = oldData.getItemGraphicEl(oldIdx); - var point = getSymbolPoint(newIdx); - if (!symbolNeedsDraw3(data, point, newIdx, opt)) { - group.remove(symbolEl); - return; - } - var newSymbolType = data.getItemVisual(newIdx, "symbol") || "circle"; - var oldSymbolType = symbolEl && symbolEl.getSymbolType && symbolEl.getSymbolType(); - if (!symbolEl || oldSymbolType && oldSymbolType !== newSymbolType) { - group.remove(symbolEl); - symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt); - symbolEl.setPosition(point); - } else { - symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt); - var target = { - x: point[0], - y: point[1] - }; - disableAnimation ? symbolEl.attr(target) : updateProps3(symbolEl, target, seriesModel); - } - group.add(symbolEl); - data.setItemGraphicEl(newIdx, symbolEl); - }).remove(function(oldIdx) { - var el = oldData.getItemGraphicEl(oldIdx); - el && el.fadeOut(function() { - group.remove(el); - }, seriesModel); - }).execute(); - this._getSymbolPoint = getSymbolPoint; - this._data = data; - }; - SymbolDraw3.prototype.updateLayout = function() { - var _this = this; - var data = this._data; - if (data) { - data.eachItemGraphicEl(function(el, idx) { - var point = _this._getSymbolPoint(idx); - el.setPosition(point); - el.markRedraw(); - }); - } - }; - SymbolDraw3.prototype.incrementalPrepareUpdate = function(data) { - this._seriesScope = makeSeriesScope4(data); - this._data = null; - this.group.removeAll(); - }; - SymbolDraw3.prototype.incrementalUpdate = function(taskParams, data, opt) { - this._progressiveEls = []; - opt = normalizeUpdateOpt2(opt); - function updateIncrementalAndHover(el2) { - if (!el2.isGroup) { - el2.incremental = true; - el2.ensureState("emphasis").hoverLayer = true; - } - } - for (var idx = taskParams.start; idx < taskParams.end; idx++) { - var point = data.getItemLayout(idx); - if (symbolNeedsDraw3(data, point, idx, opt)) { - var el = new this._SymbolCtor(data, idx, this._seriesScope); - el.traverse(updateIncrementalAndHover); - el.setPosition(point); - this.group.add(el); - data.setItemGraphicEl(idx, el); - this._progressiveEls.push(el); - } - } - }; - SymbolDraw3.prototype.eachRendered = function(cb) { - traverseElements2(this._progressiveEls || this.group, cb); - }; - SymbolDraw3.prototype.remove = function(enableAnimation) { - var group = this.group; - var data = this._data; - if (data && enableAnimation) { - data.eachItemGraphicEl(function(el) { - el.fadeOut(function() { - group.remove(el); - }, data.hostModel); - }); - } else { - group.removeAll(); - } - }; - return SymbolDraw3; - }() - ); - function prepareDataCoordInfo2(coordSys, data, valueOrigin) { - var baseAxis = coordSys.getBaseAxis(); - var valueAxis3 = coordSys.getOtherAxis(baseAxis); - var valueStart = getValueStart2(valueAxis3, valueOrigin); - var baseAxisDim = baseAxis.dim; - var valueAxisDim = valueAxis3.dim; - var valueDim = data.mapDimension(valueAxisDim); - var baseDim = data.mapDimension(baseAxisDim); - var baseDataOffset = valueAxisDim === "x" || valueAxisDim === "radius" ? 1 : 0; - var dims = map3(coordSys.dimensions, function(coordDim) { - return data.mapDimension(coordDim); - }); - var stacked = false; - var stackResultDim = data.getCalculationInfo("stackResultDimension"); - if (isDimensionStacked2( - data, - dims[0] - /* , dims[1] */ - )) { - stacked = true; - dims[0] = stackResultDim; - } - if (isDimensionStacked2( - data, - dims[1] - /* , dims[0] */ - )) { - stacked = true; - dims[1] = stackResultDim; - } - return { - dataDimsForPoint: dims, - valueStart, - valueAxisDim, - baseAxisDim, - stacked: !!stacked, - valueDim, - baseDim, - baseDataOffset, - stackedOverDimension: data.getCalculationInfo("stackedOverDimension") - }; - } - function getValueStart2(valueAxis3, valueOrigin) { - var valueStart = 0; - var extent4 = valueAxis3.scale.getExtent(); - if (valueOrigin === "start") { - valueStart = extent4[0]; - } else if (valueOrigin === "end") { - valueStart = extent4[1]; - } else if (isNumber2(valueOrigin) && !isNaN(valueOrigin)) { - valueStart = valueOrigin; - } else { - if (extent4[0] > 0) { - valueStart = extent4[0]; - } else if (extent4[1] < 0) { - valueStart = extent4[1]; - } - } - return valueStart; - } - function getStackedOnPoint2(dataCoordInfo, coordSys, data, idx) { - var value = NaN; - if (dataCoordInfo.stacked) { - value = data.get(data.getCalculationInfo("stackedOverDimension"), idx); - } - if (isNaN(value)) { - value = dataCoordInfo.valueStart; - } - var baseDataOffset = dataCoordInfo.baseDataOffset; - var stackedData = []; - stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx); - stackedData[1 - baseDataOffset] = value; - return coordSys.dataToPoint(stackedData); - } - function diffData2(oldData, newData) { - var diffResult = []; - newData.diff(oldData).add(function(idx) { - diffResult.push({ - cmd: "+", - idx - }); - }).update(function(newIdx, oldIdx) { - diffResult.push({ - cmd: "=", - idx: oldIdx, - idx1: newIdx - }); - }).remove(function(idx) { - diffResult.push({ - cmd: "-", - idx - }); - }).execute(); - return diffResult; - } - function lineAnimationDiff2(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) { - var diff = diffData2(oldData, newData); - var currPoints = []; - var nextPoints = []; - var currStackedPoints = []; - var nextStackedPoints = []; - var status = []; - var sortedIndices = []; - var rawIndices = []; - var newDataOldCoordInfo = prepareDataCoordInfo2(oldCoordSys, newData, oldValueOrigin); - var oldPoints = oldData.getLayout("points") || []; - var newPoints = newData.getLayout("points") || []; - for (var i2 = 0; i2 < diff.length; i2++) { - var diffItem = diff[i2]; - var pointAdded = true; - var oldIdx2 = void 0; - var newIdx2 = void 0; - switch (diffItem.cmd) { - case "=": - oldIdx2 = diffItem.idx * 2; - newIdx2 = diffItem.idx1 * 2; - var currentX = oldPoints[oldIdx2]; - var currentY = oldPoints[oldIdx2 + 1]; - var nextX = newPoints[newIdx2]; - var nextY = newPoints[newIdx2 + 1]; - if (isNaN(currentX) || isNaN(currentY)) { - currentX = nextX; - currentY = nextY; - } - currPoints.push(currentX, currentY); - nextPoints.push(nextX, nextY); - currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]); - nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]); - rawIndices.push(newData.getRawIndex(diffItem.idx1)); - break; - case "+": - var newIdx = diffItem.idx; - var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint; - var oldPt = oldCoordSys.dataToPoint([newData.get(newDataDimsForPoint[0], newIdx), newData.get(newDataDimsForPoint[1], newIdx)]); - newIdx2 = newIdx * 2; - currPoints.push(oldPt[0], oldPt[1]); - nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1]); - var stackedOnPoint = getStackedOnPoint2(newDataOldCoordInfo, oldCoordSys, newData, newIdx); - currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1]); - nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]); - rawIndices.push(newData.getRawIndex(newIdx)); - break; - case "-": - pointAdded = false; - } - if (pointAdded) { - status.push(diffItem); - sortedIndices.push(sortedIndices.length); - } - } - sortedIndices.sort(function(a, b) { - return rawIndices[a] - rawIndices[b]; - }); - var len3 = currPoints.length; - var sortedCurrPoints = createFloat32Array2(len3); - var sortedNextPoints = createFloat32Array2(len3); - var sortedCurrStackedPoints = createFloat32Array2(len3); - var sortedNextStackedPoints = createFloat32Array2(len3); - var sortedStatus = []; - for (var i2 = 0; i2 < sortedIndices.length; i2++) { - var idx = sortedIndices[i2]; - var i22 = i2 * 2; - var idx2 = idx * 2; - sortedCurrPoints[i22] = currPoints[idx2]; - sortedCurrPoints[i22 + 1] = currPoints[idx2 + 1]; - sortedNextPoints[i22] = nextPoints[idx2]; - sortedNextPoints[i22 + 1] = nextPoints[idx2 + 1]; - sortedCurrStackedPoints[i22] = currStackedPoints[idx2]; - sortedCurrStackedPoints[i22 + 1] = currStackedPoints[idx2 + 1]; - sortedNextStackedPoints[i22] = nextStackedPoints[idx2]; - sortedNextStackedPoints[i22 + 1] = nextStackedPoints[idx2 + 1]; - sortedStatus[i2] = status[idx]; - } - return { - current: sortedCurrPoints, - next: sortedNextPoints, - stackedOnCurrent: sortedCurrStackedPoints, - stackedOnNext: sortedNextStackedPoints, - status: sortedStatus - }; - } - var mathMin$5 = Math.min; - var mathMax$5 = Math.max; - function isPointNull3(x, y) { - return isNaN(x) || isNaN(y); - } - function drawSegment2(ctx, points5, start4, segLen, allLen, dir4, smooth, smoothMonotone, connectNulls) { - var prevX; - var prevY; - var cpx0; - var cpy0; - var cpx1; - var cpy1; - var idx = start4; - var k2 = 0; - for (; k2 < segLen; k2++) { - var x = points5[idx * 2]; - var y = points5[idx * 2 + 1]; - if (idx >= allLen || idx < 0) { - break; - } - if (isPointNull3(x, y)) { - if (connectNulls) { - idx += dir4; - continue; - } - break; - } - if (idx === start4) { - ctx[dir4 > 0 ? "moveTo" : "lineTo"](x, y); - cpx0 = x; - cpy0 = y; - } else { - var dx = x - prevX; - var dy = y - prevY; - if (dx * dx + dy * dy < 0.5) { - idx += dir4; - continue; - } - if (smooth > 0) { - var nextIdx = idx + dir4; - var nextX = points5[nextIdx * 2]; - var nextY = points5[nextIdx * 2 + 1]; - while (nextX === x && nextY === y && k2 < segLen) { - k2++; - nextIdx += dir4; - idx += dir4; - nextX = points5[nextIdx * 2]; - nextY = points5[nextIdx * 2 + 1]; - x = points5[idx * 2]; - y = points5[idx * 2 + 1]; - dx = x - prevX; - dy = y - prevY; - } - var tmpK = k2 + 1; - if (connectNulls) { - while (isPointNull3(nextX, nextY) && tmpK < segLen) { - tmpK++; - nextIdx += dir4; - nextX = points5[nextIdx * 2]; - nextY = points5[nextIdx * 2 + 1]; - } - } - var ratioNextSeg = 0.5; - var vx = 0; - var vy = 0; - var nextCpx0 = void 0; - var nextCpy0 = void 0; - if (tmpK >= segLen || isPointNull3(nextX, nextY)) { - cpx1 = x; - cpy1 = y; - } else { - vx = nextX - prevX; - vy = nextY - prevY; - var dx0 = x - prevX; - var dx1 = nextX - x; - var dy0 = y - prevY; - var dy1 = nextY - y; - var lenPrevSeg = void 0; - var lenNextSeg = void 0; - if (smoothMonotone === "x") { - lenPrevSeg = Math.abs(dx0); - lenNextSeg = Math.abs(dx1); - var dir_1 = vx > 0 ? 1 : -1; - cpx1 = x - dir_1 * lenPrevSeg * smooth; - cpy1 = y; - nextCpx0 = x + dir_1 * lenNextSeg * smooth; - nextCpy0 = y; - } else if (smoothMonotone === "y") { - lenPrevSeg = Math.abs(dy0); - lenNextSeg = Math.abs(dy1); - var dir_2 = vy > 0 ? 1 : -1; - cpx1 = x; - cpy1 = y - dir_2 * lenPrevSeg * smooth; - nextCpx0 = x; - nextCpy0 = y + dir_2 * lenNextSeg * smooth; - } else { - lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0); - lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1); - ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg); - cpx1 = x - vx * smooth * (1 - ratioNextSeg); - cpy1 = y - vy * smooth * (1 - ratioNextSeg); - nextCpx0 = x + vx * smooth * ratioNextSeg; - nextCpy0 = y + vy * smooth * ratioNextSeg; - nextCpx0 = mathMin$5(nextCpx0, mathMax$5(nextX, x)); - nextCpy0 = mathMin$5(nextCpy0, mathMax$5(nextY, y)); - nextCpx0 = mathMax$5(nextCpx0, mathMin$5(nextX, x)); - nextCpy0 = mathMax$5(nextCpy0, mathMin$5(nextY, y)); - vx = nextCpx0 - x; - vy = nextCpy0 - y; - cpx1 = x - vx * lenPrevSeg / lenNextSeg; - cpy1 = y - vy * lenPrevSeg / lenNextSeg; - cpx1 = mathMin$5(cpx1, mathMax$5(prevX, x)); - cpy1 = mathMin$5(cpy1, mathMax$5(prevY, y)); - cpx1 = mathMax$5(cpx1, mathMin$5(prevX, x)); - cpy1 = mathMax$5(cpy1, mathMin$5(prevY, y)); - vx = x - cpx1; - vy = y - cpy1; - nextCpx0 = x + vx * lenNextSeg / lenPrevSeg; - nextCpy0 = y + vy * lenNextSeg / lenPrevSeg; - } - } - ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x, y); - cpx0 = nextCpx0; - cpy0 = nextCpy0; - } else { - ctx.lineTo(x, y); - } - } - prevX = x; - prevY = y; - idx += dir4; - } - return k2; - } - var ECPolylineShape2 = ( - /** @class */ - /* @__PURE__ */ function() { - function ECPolylineShape3() { - this.smooth = 0; - this.smoothConstraint = true; - } - return ECPolylineShape3; - }() - ); - var ECPolyline2 = ( - /** @class */ - function(_super) { - __extends2(ECPolyline3, _super); - function ECPolyline3(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "ec-polyline"; - return _this; - } - ECPolyline3.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - ECPolyline3.prototype.getDefaultShape = function() { - return new ECPolylineShape2(); - }; - ECPolyline3.prototype.buildPath = function(ctx, shape) { - var points5 = shape.points; - var i2 = 0; - var len3 = points5.length / 2; - if (shape.connectNulls) { - for (; len3 > 0; len3--) { - if (!isPointNull3(points5[len3 * 2 - 2], points5[len3 * 2 - 1])) { - break; - } - } - for (; i2 < len3; i2++) { - if (!isPointNull3(points5[i2 * 2], points5[i2 * 2 + 1])) { - break; - } - } - } - while (i2 < len3) { - i2 += drawSegment2(ctx, points5, i2, len3, len3, 1, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1; - } - }; - ECPolyline3.prototype.getPointOn = function(xOrY, dim) { - if (!this.path) { - this.createPathProxy(); - this.buildPath(this.path, this.shape); - } - var path = this.path; - var data = path.data; - var CMD7 = PathProxy2.CMD; - var x0; - var y0; - var isDimX = dim === "x"; - var roots3 = []; - for (var i2 = 0; i2 < data.length; ) { - var cmd = data[i2++]; - var x = void 0; - var y = void 0; - var x2 = void 0; - var y2 = void 0; - var x3 = void 0; - var y3 = void 0; - var t = void 0; - switch (cmd) { - case CMD7.M: - x0 = data[i2++]; - y0 = data[i2++]; - break; - case CMD7.L: - x = data[i2++]; - y = data[i2++]; - t = isDimX ? (xOrY - x0) / (x - x0) : (xOrY - y0) / (y - y0); - if (t <= 1 && t >= 0) { - var val = isDimX ? (y - y0) * t + y0 : (x - x0) * t + x0; - return isDimX ? [xOrY, val] : [val, xOrY]; - } - x0 = x; - y0 = y; - break; - case CMD7.C: - x = data[i2++]; - y = data[i2++]; - x2 = data[i2++]; - y2 = data[i2++]; - x3 = data[i2++]; - y3 = data[i2++]; - var nRoot = isDimX ? cubicRootAt2(x0, x, x2, x3, xOrY, roots3) : cubicRootAt2(y0, y, y2, y3, xOrY, roots3); - if (nRoot > 0) { - for (var i_1 = 0; i_1 < nRoot; i_1++) { - var t_1 = roots3[i_1]; - if (t_1 <= 1 && t_1 >= 0) { - var val = isDimX ? cubicAt2(y0, y, y2, y3, t_1) : cubicAt2(x0, x, x2, x3, t_1); - return isDimX ? [xOrY, val] : [val, xOrY]; - } - } - } - x0 = x3; - y0 = y3; - break; - } - } - }; - return ECPolyline3; - }(Path2) - ); - var ECPolygonShape2 = ( - /** @class */ - function(_super) { - __extends2(ECPolygonShape3, _super); - function ECPolygonShape3() { - return _super !== null && _super.apply(this, arguments) || this; - } - return ECPolygonShape3; - }(ECPolylineShape2) - ); - var ECPolygon2 = ( - /** @class */ - function(_super) { - __extends2(ECPolygon3, _super); - function ECPolygon3(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "ec-polygon"; - return _this; - } - ECPolygon3.prototype.getDefaultShape = function() { - return new ECPolygonShape2(); - }; - ECPolygon3.prototype.buildPath = function(ctx, shape) { - var points5 = shape.points; - var stackedOnPoints = shape.stackedOnPoints; - var i2 = 0; - var len3 = points5.length / 2; - var smoothMonotone = shape.smoothMonotone; - if (shape.connectNulls) { - for (; len3 > 0; len3--) { - if (!isPointNull3(points5[len3 * 2 - 2], points5[len3 * 2 - 1])) { - break; - } - } - for (; i2 < len3; i2++) { - if (!isPointNull3(points5[i2 * 2], points5[i2 * 2 + 1])) { - break; - } - } - } - while (i2 < len3) { - var k2 = drawSegment2(ctx, points5, i2, len3, len3, 1, shape.smooth, smoothMonotone, shape.connectNulls); - drawSegment2(ctx, stackedOnPoints, i2 + k2 - 1, k2, len3, -1, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls); - i2 += k2 + 1; - ctx.closePath(); - } - }; - return ECPolygon3; - }(Path2) - ); - function createGridClipPath2(cartesian, hasAnimation, seriesModel, done, during) { - var rect = cartesian.getArea(); - var x = rect.x; - var y = rect.y; - var width = rect.width; - var height = rect.height; - var lineWidth = seriesModel.get(["lineStyle", "width"]) || 0; - x -= lineWidth / 2; - y -= lineWidth / 2; - width += lineWidth; - height += lineWidth; - width = Math.ceil(width); - if (x !== Math.floor(x)) { - x = Math.floor(x); - width++; - } - var clipPath = new Rect4({ - shape: { - x, - y, - width, - height - } - }); - if (hasAnimation) { - var baseAxis = cartesian.getBaseAxis(); - var isHorizontal = baseAxis.isHorizontal(); - var isAxisInversed = baseAxis.inverse; - if (isHorizontal) { - if (isAxisInversed) { - clipPath.shape.x += width; - } - clipPath.shape.width = 0; - } else { - if (!isAxisInversed) { - clipPath.shape.y += height; - } - clipPath.shape.height = 0; - } - var duringCb = isFunction2(during) ? function(percent) { - during(percent, clipPath); - } : null; - initProps2(clipPath, { - shape: { - width, - height, - x, - y - } - }, seriesModel, null, done, duringCb); - } - return clipPath; - } - function createPolarClipPath2(polar, hasAnimation, seriesModel) { - var sectorArea = polar.getArea(); - var r0 = round8(sectorArea.r0, 1); - var r = round8(sectorArea.r, 1); - var clipPath = new Sector2({ - shape: { - cx: round8(polar.cx, 1), - cy: round8(polar.cy, 1), - r0, - r, - startAngle: sectorArea.startAngle, - endAngle: sectorArea.endAngle, - clockwise: sectorArea.clockwise - } - }); - if (hasAnimation) { - var isRadial = polar.getBaseAxis().dim === "angle"; - if (isRadial) { - clipPath.shape.endAngle = sectorArea.startAngle; - } else { - clipPath.shape.r = r0; - } - initProps2(clipPath, { - shape: { - endAngle: sectorArea.endAngle, - r - } - }, seriesModel); - } - return clipPath; - } - function createClipPath2(coordSys, hasAnimation, seriesModel, done, during) { - if (!coordSys) { - return null; - } else if (coordSys.type === "polar") { - return createPolarClipPath2(coordSys, hasAnimation, seriesModel); - } else if (coordSys.type === "cartesian2d") { - return createGridClipPath2(coordSys, hasAnimation, seriesModel, done, during); - } - return null; - } - function isCoordinateSystemType2(coordSys, type) { - return coordSys.type === type; - } - function isPointsSame2(points1, points22) { - if (points1.length !== points22.length) { - return; - } - for (var i2 = 0; i2 < points1.length; i2++) { - if (points1[i2] !== points22[i2]) { - return; - } - } - return true; - } - function bboxFromPoints2(points5) { - var minX = Infinity; - var minY = Infinity; - var maxX = -Infinity; - var maxY = -Infinity; - for (var i2 = 0; i2 < points5.length; ) { - var x = points5[i2++]; - var y = points5[i2++]; - if (!isNaN(x)) { - minX = Math.min(x, minX); - maxX = Math.max(x, maxX); - } - if (!isNaN(y)) { - minY = Math.min(y, minY); - maxY = Math.max(y, maxY); - } - } - return [[minX, minY], [maxX, maxY]]; - } - function getBoundingDiff2(points1, points22) { - var _a3 = bboxFromPoints2(points1), min1 = _a3[0], max1 = _a3[1]; - var _b3 = bboxFromPoints2(points22), min24 = _b3[0], max24 = _b3[1]; - return Math.max(Math.abs(min1[0] - min24[0]), Math.abs(min1[1] - min24[1]), Math.abs(max1[0] - max24[0]), Math.abs(max1[1] - max24[1])); - } - function getSmooth2(smooth) { - return isNumber2(smooth) ? smooth : smooth ? 0.5 : 0; - } - function getStackedOnPoints2(coordSys, data, dataCoordInfo) { - if (!dataCoordInfo.valueDim) { - return []; - } - var len3 = data.count(); - var points5 = createFloat32Array2(len3 * 2); - for (var idx = 0; idx < len3; idx++) { - var pt = getStackedOnPoint2(dataCoordInfo, coordSys, data, idx); - points5[idx * 2] = pt[0]; - points5[idx * 2 + 1] = pt[1]; - } - return points5; - } - function turnPointsIntoStep2(points5, basePoints, coordSys, stepTurnAt, connectNulls) { - var baseAxis = coordSys.getBaseAxis(); - var baseIndex = baseAxis.dim === "x" || baseAxis.dim === "radius" ? 0 : 1; - var stepPoints = []; - var i2 = 0; - var stepPt = []; - var pt = []; - var nextPt = []; - var filteredPoints = []; - if (connectNulls) { - for (i2 = 0; i2 < points5.length; i2 += 2) { - var reference = basePoints || points5; - if (!isNaN(reference[i2]) && !isNaN(reference[i2 + 1])) { - filteredPoints.push(points5[i2], points5[i2 + 1]); - } - } - points5 = filteredPoints; - } - for (i2 = 0; i2 < points5.length - 2; i2 += 2) { - nextPt[0] = points5[i2 + 2]; - nextPt[1] = points5[i2 + 3]; - pt[0] = points5[i2]; - pt[1] = points5[i2 + 1]; - stepPoints.push(pt[0], pt[1]); - switch (stepTurnAt) { - case "end": - stepPt[baseIndex] = nextPt[baseIndex]; - stepPt[1 - baseIndex] = pt[1 - baseIndex]; - stepPoints.push(stepPt[0], stepPt[1]); - break; - case "middle": - var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2; - var stepPt2 = []; - stepPt[baseIndex] = stepPt2[baseIndex] = middle; - stepPt[1 - baseIndex] = pt[1 - baseIndex]; - stepPt2[1 - baseIndex] = nextPt[1 - baseIndex]; - stepPoints.push(stepPt[0], stepPt[1]); - stepPoints.push(stepPt2[0], stepPt2[1]); - break; - default: - stepPt[baseIndex] = pt[baseIndex]; - stepPt[1 - baseIndex] = nextPt[1 - baseIndex]; - stepPoints.push(stepPt[0], stepPt[1]); - } - } - stepPoints.push(points5[i2++], points5[i2++]); - return stepPoints; - } - function clipColorStops2(colorStops, maxSize) { - var newColorStops = []; - var len3 = colorStops.length; - var prevOutOfRangeColorStop; - var prevInRangeColorStop; - function lerpStop(stop0, stop1, clippedCoord) { - var coord0 = stop0.coord; - var p = (clippedCoord - coord0) / (stop1.coord - coord0); - var color2 = lerp$1(p, [stop0.color, stop1.color]); - return { - coord: clippedCoord, - color: color2 - }; - } - for (var i2 = 0; i2 < len3; i2++) { - var stop_1 = colorStops[i2]; - var coord = stop_1.coord; - if (coord < 0) { - prevOutOfRangeColorStop = stop_1; - } else if (coord > maxSize) { - if (prevInRangeColorStop) { - newColorStops.push(lerpStop(prevInRangeColorStop, stop_1, maxSize)); - } else if (prevOutOfRangeColorStop) { - newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0), lerpStop(prevOutOfRangeColorStop, stop_1, maxSize)); - } - break; - } else { - if (prevOutOfRangeColorStop) { - newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0)); - prevOutOfRangeColorStop = null; - } - newColorStops.push(stop_1); - prevInRangeColorStop = stop_1; - } - } - return newColorStops; - } - function getVisualGradient2(data, coordSys, api) { - var visualMetaList = data.getVisual("visualMeta"); - if (!visualMetaList || !visualMetaList.length || !data.count()) { - return; - } - if (coordSys.type !== "cartesian2d") { - if (true) { - console.warn("Visual map on line style is only supported on cartesian2d."); - } - return; - } - var coordDim; - var visualMeta; - for (var i2 = visualMetaList.length - 1; i2 >= 0; i2--) { - var dimInfo = data.getDimensionInfo(visualMetaList[i2].dimension); - coordDim = dimInfo && dimInfo.coordDim; - if (coordDim === "x" || coordDim === "y") { - visualMeta = visualMetaList[i2]; - break; - } - } - if (!visualMeta) { - if (true) { - console.warn("Visual map on line style only support x or y dimension."); - } - return; - } - var axis = coordSys.getAxis(coordDim); - var colorStops = map3(visualMeta.stops, function(stop3) { - return { - coord: axis.toGlobalCoord(axis.dataToCoord(stop3.value)), - color: stop3.color - }; - }); - var stopLen = colorStops.length; - var outerColors = visualMeta.outerColors.slice(); - if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) { - colorStops.reverse(); - outerColors.reverse(); - } - var colorStopsInRange = clipColorStops2(colorStops, coordDim === "x" ? api.getWidth() : api.getHeight()); - var inRangeStopLen = colorStopsInRange.length; - if (!inRangeStopLen && stopLen) { - return colorStops[0].coord < 0 ? outerColors[1] ? outerColors[1] : colorStops[stopLen - 1].color : outerColors[0] ? outerColors[0] : colorStops[0].color; - } - var tinyExtent = 10; - var minCoord = colorStopsInRange[0].coord - tinyExtent; - var maxCoord = colorStopsInRange[inRangeStopLen - 1].coord + tinyExtent; - var coordSpan = maxCoord - minCoord; - if (coordSpan < 1e-3) { - return "transparent"; - } - each17(colorStopsInRange, function(stop3) { - stop3.offset = (stop3.coord - minCoord) / coordSpan; - }); - colorStopsInRange.push({ - // NOTE: inRangeStopLen may still be 0 if stoplen is zero. - offset: inRangeStopLen ? colorStopsInRange[inRangeStopLen - 1].offset : 0.5, - color: outerColors[1] || "transparent" - }); - colorStopsInRange.unshift({ - offset: inRangeStopLen ? colorStopsInRange[0].offset : 0.5, - color: outerColors[0] || "transparent" - }); - var gradient = new LinearGradient2(0, 0, 0, 0, colorStopsInRange, true); - gradient[coordDim] = minCoord; - gradient[coordDim + "2"] = maxCoord; - return gradient; - } - function getIsIgnoreFunc2(seriesModel, data, coordSys) { - var showAllSymbol = seriesModel.get("showAllSymbol"); - var isAuto = showAllSymbol === "auto"; - if (showAllSymbol && !isAuto) { - return; - } - var categoryAxis3 = coordSys.getAxesByScale("ordinal")[0]; - if (!categoryAxis3) { - return; - } - if (isAuto && canShowAllSymbolForCategory2(categoryAxis3, data)) { - return; - } - var categoryDataDim = data.mapDimension(categoryAxis3.dim); - var labelMap = {}; - each17(categoryAxis3.getViewLabels(), function(labelItem) { - var ordinalNumber = categoryAxis3.scale.getRawOrdinalNumber(labelItem.tickValue); - labelMap[ordinalNumber] = 1; - }); - return function(dataIndex) { - return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex)); - }; - } - function canShowAllSymbolForCategory2(categoryAxis3, data) { - var axisExtent = categoryAxis3.getExtent(); - var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis3.scale.count(); - isNaN(availSize) && (availSize = 0); - var dataLen = data.count(); - var step = Math.max(1, Math.round(dataLen / 5)); - for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) { - if (Symbol3.getSymbolSize( - data, - dataIndex - // Only for cartesian, where `isHorizontal` exists. - )[categoryAxis3.isHorizontal() ? 1 : 0] * 1.5 > availSize) { - return false; - } - } - return true; - } - function isPointNull$1(x, y) { - return isNaN(x) || isNaN(y); - } - function getLastIndexNotNull2(points5) { - var len3 = points5.length / 2; - for (; len3 > 0; len3--) { - if (!isPointNull$1(points5[len3 * 2 - 2], points5[len3 * 2 - 1])) { - break; - } - } - return len3 - 1; - } - function getPointAtIndex2(points5, idx) { - return [points5[idx * 2], points5[idx * 2 + 1]]; - } - function getIndexRange2(points5, xOrY, dim) { - var len3 = points5.length / 2; - var dimIdx = dim === "x" ? 0 : 1; - var a; - var b; - var prevIndex = 0; - var nextIndex = -1; - for (var i2 = 0; i2 < len3; i2++) { - b = points5[i2 * 2 + dimIdx]; - if (isNaN(b) || isNaN(points5[i2 * 2 + 1 - dimIdx])) { - continue; - } - if (i2 === 0) { - a = b; - continue; - } - if (a <= xOrY && b >= xOrY || a >= xOrY && b <= xOrY) { - nextIndex = i2; - break; - } - prevIndex = i2; - a = b; - } - return { - range: [prevIndex, nextIndex], - t: (xOrY - a) / (b - a) - }; - } - function anyStateShowEndLabel2(seriesModel) { - if (seriesModel.get(["endLabel", "show"])) { - return true; - } - for (var i2 = 0; i2 < SPECIAL_STATES2.length; i2++) { - if (seriesModel.get([SPECIAL_STATES2[i2], "endLabel", "show"])) { - return true; - } - } - return false; - } - function createLineClipPath2(lineView, coordSys, hasAnimation, seriesModel) { - if (isCoordinateSystemType2(coordSys, "cartesian2d")) { - var endLabelModel_1 = seriesModel.getModel("endLabel"); - var valueAnimation_1 = endLabelModel_1.get("valueAnimation"); - var data_1 = seriesModel.getData(); - var labelAnimationRecord_1 = { - lastFrameIndex: 0 - }; - var during = anyStateShowEndLabel2(seriesModel) ? function(percent, clipRect) { - lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys); - } : null; - var isHorizontal = coordSys.getBaseAxis().isHorizontal(); - var clipPath = createGridClipPath2(coordSys, hasAnimation, seriesModel, function() { - var endLabel = lineView._endLabel; - if (endLabel && hasAnimation) { - if (labelAnimationRecord_1.originalX != null) { - endLabel.attr({ - x: labelAnimationRecord_1.originalX, - y: labelAnimationRecord_1.originalY - }); - } - } - }, during); - if (!seriesModel.get("clip", true)) { - var rectShape = clipPath.shape; - var expandSize = Math.max(rectShape.width, rectShape.height); - if (isHorizontal) { - rectShape.y -= expandSize; - rectShape.height += expandSize * 2; - } else { - rectShape.x -= expandSize; - rectShape.width += expandSize * 2; - } - } - if (during) { - during(1, clipPath); - } - return clipPath; - } else { - if (true) { - if (seriesModel.get(["endLabel", "show"])) { - console.warn("endLabel is not supported for lines in polar systems."); - } - } - return createPolarClipPath2(coordSys, hasAnimation, seriesModel); - } - } - function getEndLabelStateSpecified2(endLabelModel, coordSys) { - var baseAxis = coordSys.getBaseAxis(); - var isHorizontal = baseAxis.isHorizontal(); - var isBaseInversed = baseAxis.inverse; - var align = isHorizontal ? isBaseInversed ? "right" : "left" : "center"; - var verticalAlign = isHorizontal ? "middle" : isBaseInversed ? "top" : "bottom"; - return { - normal: { - align: endLabelModel.get("align") || align, - verticalAlign: endLabelModel.get("verticalAlign") || verticalAlign - } - }; - } - var LineView2 = ( - /** @class */ - function(_super) { - __extends2(LineView3, _super); - function LineView3() { - return _super !== null && _super.apply(this, arguments) || this; - } - LineView3.prototype.init = function() { - var lineGroup = new Group5(); - var symbolDraw = new SymbolDraw2(); - this.group.add(symbolDraw.group); - this._symbolDraw = symbolDraw; - this._lineGroup = lineGroup; - this._changePolyState = bind3(this._changePolyState, this); - }; - LineView3.prototype.render = function(seriesModel, ecModel, api) { - var coordSys = seriesModel.coordinateSystem; - var group = this.group; - var data = seriesModel.getData(); - var lineStyleModel = seriesModel.getModel("lineStyle"); - var areaStyleModel = seriesModel.getModel("areaStyle"); - var points5 = data.getLayout("points") || []; - var isCoordSysPolar = coordSys.type === "polar"; - var prevCoordSys = this._coordSys; - var symbolDraw = this._symbolDraw; - var polyline = this._polyline; - var polygon = this._polygon; - var lineGroup = this._lineGroup; - var hasAnimation = !ecModel.ssr && seriesModel.get("animation"); - var isAreaChart = !areaStyleModel.isEmpty(); - var valueOrigin = areaStyleModel.get("origin"); - var dataCoordInfo = prepareDataCoordInfo2(coordSys, data, valueOrigin); - var stackedOnPoints = isAreaChart && getStackedOnPoints2(coordSys, data, dataCoordInfo); - var showSymbol = seriesModel.get("showSymbol"); - var connectNulls = seriesModel.get("connectNulls"); - var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc2(seriesModel, data, coordSys); - var oldData = this._data; - oldData && oldData.eachItemGraphicEl(function(el, idx) { - if (el.__temp) { - group.remove(el); - oldData.setItemGraphicEl(idx, null); - } - }); - if (!showSymbol) { - symbolDraw.remove(); - } - group.add(lineGroup); - var step = !isCoordSysPolar ? seriesModel.get("step") : false; - var clipShapeForSymbol; - if (coordSys && coordSys.getArea && seriesModel.get("clip", true)) { - clipShapeForSymbol = coordSys.getArea(); - if (clipShapeForSymbol.width != null) { - clipShapeForSymbol.x -= 0.1; - clipShapeForSymbol.y -= 0.1; - clipShapeForSymbol.width += 0.2; - clipShapeForSymbol.height += 0.2; - } else if (clipShapeForSymbol.r0) { - clipShapeForSymbol.r0 -= 0.5; - clipShapeForSymbol.r += 0.5; - } - } - this._clipShapeForSymbol = clipShapeForSymbol; - var visualColor = getVisualGradient2(data, coordSys, api) || data.getVisual("style")[data.getVisual("drawType")]; - if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) { - showSymbol && symbolDraw.updateData(data, { - isIgnore: isIgnoreFunc, - clipShape: clipShapeForSymbol, - disableAnimation: true, - getSymbolPoint: function(idx) { - return [points5[idx * 2], points5[idx * 2 + 1]]; - } - }); - hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol); - if (step) { - if (stackedOnPoints) { - stackedOnPoints = turnPointsIntoStep2(stackedOnPoints, points5, coordSys, step, connectNulls); - } - points5 = turnPointsIntoStep2(points5, null, coordSys, step, connectNulls); - } - polyline = this._newPolyline(points5); - if (isAreaChart) { - polygon = this._newPolygon(points5, stackedOnPoints); - } else if (polygon) { - lineGroup.remove(polygon); - polygon = this._polygon = null; - } - if (!isCoordSysPolar) { - this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString2(visualColor)); - } - lineGroup.setClipPath(createLineClipPath2(this, coordSys, true, seriesModel)); - } else { - if (isAreaChart && !polygon) { - polygon = this._newPolygon(points5, stackedOnPoints); - } else if (polygon && !isAreaChart) { - lineGroup.remove(polygon); - polygon = this._polygon = null; - } - if (!isCoordSysPolar) { - this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString2(visualColor)); - } - var oldClipPath = lineGroup.getClipPath(); - if (oldClipPath) { - var newClipPath = createLineClipPath2(this, coordSys, false, seriesModel); - initProps2(oldClipPath, { - shape: newClipPath.shape - }, seriesModel); - } else { - lineGroup.setClipPath(createLineClipPath2(this, coordSys, true, seriesModel)); - } - showSymbol && symbolDraw.updateData(data, { - isIgnore: isIgnoreFunc, - clipShape: clipShapeForSymbol, - disableAnimation: true, - getSymbolPoint: function(idx) { - return [points5[idx * 2], points5[idx * 2 + 1]]; - } - }); - if (!isPointsSame2(this._stackedOnPoints, stackedOnPoints) || !isPointsSame2(this._points, points5)) { - if (hasAnimation) { - this._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls); - } else { - if (step) { - if (stackedOnPoints) { - stackedOnPoints = turnPointsIntoStep2(stackedOnPoints, points5, coordSys, step, connectNulls); - } - points5 = turnPointsIntoStep2(points5, null, coordSys, step, connectNulls); - } - polyline.setShape({ - points: points5 - }); - polygon && polygon.setShape({ - points: points5, - stackedOnPoints - }); - } - } - } - var emphasisModel = seriesModel.getModel("emphasis"); - var focus = emphasisModel.get("focus"); - var blurScope = emphasisModel.get("blurScope"); - var emphasisDisabled = emphasisModel.get("disabled"); - polyline.useStyle(defaults2( - // Use color in lineStyle first - lineStyleModel.getLineStyle(), - { - fill: "none", - stroke: visualColor, - lineJoin: "bevel" - } - )); - setStatesStylesFromModel2(polyline, seriesModel, "lineStyle"); - if (polyline.style.lineWidth > 0 && seriesModel.get(["emphasis", "lineStyle", "width"]) === "bolder") { - var emphasisLineStyle = polyline.getState("emphasis").style; - emphasisLineStyle.lineWidth = +polyline.style.lineWidth + 1; - } - getECData2(polyline).seriesIndex = seriesModel.seriesIndex; - toggleHoverEmphasis2(polyline, focus, blurScope, emphasisDisabled); - var smooth = getSmooth2(seriesModel.get("smooth")); - var smoothMonotone = seriesModel.get("smoothMonotone"); - polyline.setShape({ - smooth, - smoothMonotone, - connectNulls - }); - if (polygon) { - var stackedOnSeries = data.getCalculationInfo("stackedOnSeries"); - var stackedOnSmooth = 0; - polygon.useStyle(defaults2(areaStyleModel.getAreaStyle(), { - fill: visualColor, - opacity: 0.7, - lineJoin: "bevel", - decal: data.getVisual("style").decal - })); - if (stackedOnSeries) { - stackedOnSmooth = getSmooth2(stackedOnSeries.get("smooth")); - } - polygon.setShape({ - smooth, - stackedOnSmooth, - smoothMonotone, - connectNulls - }); - setStatesStylesFromModel2(polygon, seriesModel, "areaStyle"); - getECData2(polygon).seriesIndex = seriesModel.seriesIndex; - toggleHoverEmphasis2(polygon, focus, blurScope, emphasisDisabled); - } - var changePolyState = this._changePolyState; - data.eachItemGraphicEl(function(el) { - el && (el.onHoverStateChange = changePolyState); - }); - this._polyline.onHoverStateChange = changePolyState; - this._data = data; - this._coordSys = coordSys; - this._stackedOnPoints = stackedOnPoints; - this._points = points5; - this._step = step; - this._valueOrigin = valueOrigin; - if (seriesModel.get("triggerLineEvent")) { - this.packEventData(seriesModel, polyline); - polygon && this.packEventData(seriesModel, polygon); - } - }; - LineView3.prototype.packEventData = function(seriesModel, el) { - getECData2(el).eventData = { - componentType: "series", - componentSubType: "line", - componentIndex: seriesModel.componentIndex, - seriesIndex: seriesModel.seriesIndex, - seriesName: seriesModel.name, - seriesType: "line" - }; - }; - LineView3.prototype.highlight = function(seriesModel, ecModel, api, payload) { - var data = seriesModel.getData(); - var dataIndex = queryDataIndex2(data, payload); - this._changePolyState("emphasis"); - if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) { - var points5 = data.getLayout("points"); - var symbol = data.getItemGraphicEl(dataIndex); - if (!symbol) { - var x = points5[dataIndex * 2]; - var y = points5[dataIndex * 2 + 1]; - if (isNaN(x) || isNaN(y)) { - return; - } - if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) { - return; - } - var zlevel = seriesModel.get("zlevel") || 0; - var z = seriesModel.get("z") || 0; - symbol = new Symbol3(data, dataIndex); - symbol.x = x; - symbol.y = y; - symbol.setZ(zlevel, z); - var symbolLabel = symbol.getSymbolPath().getTextContent(); - if (symbolLabel) { - symbolLabel.zlevel = zlevel; - symbolLabel.z = z; - symbolLabel.z2 = this._polyline.z2 + 1; - } - symbol.__temp = true; - data.setItemGraphicEl(dataIndex, symbol); - symbol.stopSymbolAnimation(true); - this.group.add(symbol); - } - symbol.highlight(); - } else { - ChartView2.prototype.highlight.call(this, seriesModel, ecModel, api, payload); - } - }; - LineView3.prototype.downplay = function(seriesModel, ecModel, api, payload) { - var data = seriesModel.getData(); - var dataIndex = queryDataIndex2(data, payload); - this._changePolyState("normal"); - if (dataIndex != null && dataIndex >= 0) { - var symbol = data.getItemGraphicEl(dataIndex); - if (symbol) { - if (symbol.__temp) { - data.setItemGraphicEl(dataIndex, null); - this.group.remove(symbol); - } else { - symbol.downplay(); - } - } - } else { - ChartView2.prototype.downplay.call(this, seriesModel, ecModel, api, payload); - } - }; - LineView3.prototype._changePolyState = function(toState) { - var polygon = this._polygon; - setStatesFlag2(this._polyline, toState); - polygon && setStatesFlag2(polygon, toState); - }; - LineView3.prototype._newPolyline = function(points5) { - var polyline = this._polyline; - if (polyline) { - this._lineGroup.remove(polyline); - } - polyline = new ECPolyline2({ - shape: { - points: points5 - }, - segmentIgnoreThreshold: 2, - z2: 10 - }); - this._lineGroup.add(polyline); - this._polyline = polyline; - return polyline; - }; - LineView3.prototype._newPolygon = function(points5, stackedOnPoints) { - var polygon = this._polygon; - if (polygon) { - this._lineGroup.remove(polygon); - } - polygon = new ECPolygon2({ - shape: { - points: points5, - stackedOnPoints - }, - segmentIgnoreThreshold: 2 - }); - this._lineGroup.add(polygon); - this._polygon = polygon; - return polygon; - }; - LineView3.prototype._initSymbolLabelAnimation = function(data, coordSys, clipShape) { - var isHorizontalOrRadial; - var isCoordSysPolar; - var baseAxis = coordSys.getBaseAxis(); - var isAxisInverse = baseAxis.inverse; - if (coordSys.type === "cartesian2d") { - isHorizontalOrRadial = baseAxis.isHorizontal(); - isCoordSysPolar = false; - } else if (coordSys.type === "polar") { - isHorizontalOrRadial = baseAxis.dim === "angle"; - isCoordSysPolar = true; - } - var seriesModel = data.hostModel; - var seriesDuration = seriesModel.get("animationDuration"); - if (isFunction2(seriesDuration)) { - seriesDuration = seriesDuration(null); - } - var seriesDelay = seriesModel.get("animationDelay") || 0; - var seriesDelayValue = isFunction2(seriesDelay) ? seriesDelay(null) : seriesDelay; - data.eachItemGraphicEl(function(symbol, idx) { - var el = symbol; - if (el) { - var point = [symbol.x, symbol.y]; - var start4 = void 0; - var end3 = void 0; - var current = void 0; - if (clipShape) { - if (isCoordSysPolar) { - var polarClip = clipShape; - var coord = coordSys.pointToCoord(point); - if (isHorizontalOrRadial) { - start4 = polarClip.startAngle; - end3 = polarClip.endAngle; - current = -coord[1] / 180 * Math.PI; - } else { - start4 = polarClip.r0; - end3 = polarClip.r; - current = coord[0]; - } - } else { - var gridClip = clipShape; - if (isHorizontalOrRadial) { - start4 = gridClip.x; - end3 = gridClip.x + gridClip.width; - current = symbol.x; - } else { - start4 = gridClip.y + gridClip.height; - end3 = gridClip.y; - current = symbol.y; - } - } - } - var ratio = end3 === start4 ? 0 : (current - start4) / (end3 - start4); - if (isAxisInverse) { - ratio = 1 - ratio; - } - var delay = isFunction2(seriesDelay) ? seriesDelay(idx) : seriesDuration * ratio + seriesDelayValue; - var symbolPath = el.getSymbolPath(); - var text = symbolPath.getTextContent(); - el.attr({ - scaleX: 0, - scaleY: 0 - }); - el.animateTo({ - scaleX: 1, - scaleY: 1 - }, { - duration: 200, - setToFinal: true, - delay - }); - if (text) { - text.animateFrom({ - style: { - opacity: 0 - } - }, { - duration: 300, - delay - }); - } - symbolPath.disableLabelAnimation = true; - } - }); - }; - LineView3.prototype._initOrUpdateEndLabel = function(seriesModel, coordSys, inheritColor) { - var endLabelModel = seriesModel.getModel("endLabel"); - if (anyStateShowEndLabel2(seriesModel)) { - var data_2 = seriesModel.getData(); - var polyline = this._polyline; - var points5 = data_2.getLayout("points"); - if (!points5) { - polyline.removeTextContent(); - this._endLabel = null; - return; - } - var endLabel = this._endLabel; - if (!endLabel) { - endLabel = this._endLabel = new ZRText2({ - z2: 200 - // should be higher than item symbol - }); - endLabel.ignoreClip = true; - polyline.setTextContent(this._endLabel); - polyline.disableLabelAnimation = true; - } - var dataIndex = getLastIndexNotNull2(points5); - if (dataIndex >= 0) { - setLabelStyle2(polyline, getLabelStatesModels2(seriesModel, "endLabel"), { - inheritColor, - labelFetcher: seriesModel, - labelDataIndex: dataIndex, - defaultText: function(dataIndex2, opt, interpolatedValue) { - return interpolatedValue != null ? getDefaultInterpolatedLabel2(data_2, interpolatedValue) : getDefaultLabel2(data_2, dataIndex2); - }, - enableTextSetter: true - }, getEndLabelStateSpecified2(endLabelModel, coordSys)); - polyline.textConfig.position = null; - } - } else if (this._endLabel) { - this._polyline.removeTextContent(); - this._endLabel = null; - } - }; - LineView3.prototype._endLabelOnDuring = function(percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) { - var endLabel = this._endLabel; - var polyline = this._polyline; - if (endLabel) { - if (percent < 1 && animationRecord.originalX == null) { - animationRecord.originalX = endLabel.x; - animationRecord.originalY = endLabel.y; - } - var points5 = data.getLayout("points"); - var seriesModel = data.hostModel; - var connectNulls = seriesModel.get("connectNulls"); - var precision = endLabelModel.get("precision"); - var distance3 = endLabelModel.get("distance") || 0; - var baseAxis = coordSys.getBaseAxis(); - var isHorizontal = baseAxis.isHorizontal(); - var isBaseInversed = baseAxis.inverse; - var clipShape = clipRect.shape; - var xOrY = isBaseInversed ? isHorizontal ? clipShape.x : clipShape.y + clipShape.height : isHorizontal ? clipShape.x + clipShape.width : clipShape.y; - var distanceX = (isHorizontal ? distance3 : 0) * (isBaseInversed ? -1 : 1); - var distanceY = (isHorizontal ? 0 : -distance3) * (isBaseInversed ? -1 : 1); - var dim = isHorizontal ? "x" : "y"; - var dataIndexRange = getIndexRange2(points5, xOrY, dim); - var indices = dataIndexRange.range; - var diff = indices[1] - indices[0]; - var value = void 0; - if (diff >= 1) { - if (diff > 1 && !connectNulls) { - var pt = getPointAtIndex2(points5, indices[0]); - endLabel.attr({ - x: pt[0] + distanceX, - y: pt[1] + distanceY - }); - valueAnimation && (value = seriesModel.getRawValue(indices[0])); - } else { - var pt = polyline.getPointOn(xOrY, dim); - pt && endLabel.attr({ - x: pt[0] + distanceX, - y: pt[1] + distanceY - }); - var startValue = seriesModel.getRawValue(indices[0]); - var endValue = seriesModel.getRawValue(indices[1]); - valueAnimation && (value = interpolateRawValues2(data, precision, startValue, endValue, dataIndexRange.t)); - } - animationRecord.lastFrameIndex = indices[0]; - } else { - var idx = percent === 1 || animationRecord.lastFrameIndex > 0 ? indices[0] : 0; - var pt = getPointAtIndex2(points5, idx); - valueAnimation && (value = seriesModel.getRawValue(idx)); - endLabel.attr({ - x: pt[0] + distanceX, - y: pt[1] + distanceY - }); - } - if (valueAnimation) { - var inner24 = labelInner2(endLabel); - if (typeof inner24.setLabelText === "function") { - inner24.setLabelText(value); - } - } - } - }; - LineView3.prototype._doUpdateAnimation = function(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls) { - var polyline = this._polyline; - var polygon = this._polygon; - var seriesModel = data.hostModel; - var diff = lineAnimationDiff2(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin); - var current = diff.current; - var stackedOnCurrent = diff.stackedOnCurrent; - var next = diff.next; - var stackedOnNext = diff.stackedOnNext; - if (step) { - stackedOnCurrent = turnPointsIntoStep2(diff.stackedOnCurrent, diff.current, coordSys, step, connectNulls); - current = turnPointsIntoStep2(diff.current, null, coordSys, step, connectNulls); - stackedOnNext = turnPointsIntoStep2(diff.stackedOnNext, diff.next, coordSys, step, connectNulls); - next = turnPointsIntoStep2(diff.next, null, coordSys, step, connectNulls); - } - if (getBoundingDiff2(current, next) > 3e3 || polygon && getBoundingDiff2(stackedOnCurrent, stackedOnNext) > 3e3) { - polyline.stopAnimation(); - polyline.setShape({ - points: next - }); - if (polygon) { - polygon.stopAnimation(); - polygon.setShape({ - points: next, - stackedOnPoints: stackedOnNext - }); - } - return; - } - polyline.shape.__points = diff.current; - polyline.shape.points = current; - var target = { - shape: { - points: next - } - }; - if (diff.current !== current) { - target.shape.__points = diff.next; - } - polyline.stopAnimation(); - updateProps3(polyline, target, seriesModel); - if (polygon) { - polygon.setShape({ - // Reuse the points with polyline. - points: current, - stackedOnPoints: stackedOnCurrent - }); - polygon.stopAnimation(); - updateProps3(polygon, { - shape: { - stackedOnPoints: stackedOnNext - } - }, seriesModel); - if (polyline.shape.points !== polygon.shape.points) { - polygon.shape.points = polyline.shape.points; - } - } - var updatedDataInfo = []; - var diffStatus = diff.status; - for (var i2 = 0; i2 < diffStatus.length; i2++) { - var cmd = diffStatus[i2].cmd; - if (cmd === "=") { - var el = data.getItemGraphicEl(diffStatus[i2].idx1); - if (el) { - updatedDataInfo.push({ - el, - ptIdx: i2 - // Index of points - }); - } - } - } - if (polyline.animators && polyline.animators.length) { - polyline.animators[0].during(function() { - polygon && polygon.dirtyShape(); - var points5 = polyline.shape.__points; - for (var i3 = 0; i3 < updatedDataInfo.length; i3++) { - var el2 = updatedDataInfo[i3].el; - var offset3 = updatedDataInfo[i3].ptIdx * 2; - el2.x = points5[offset3]; - el2.y = points5[offset3 + 1]; - el2.markRedraw(); - } - }); - } - }; - LineView3.prototype.remove = function(ecModel) { - var group = this.group; - var oldData = this._data; - this._lineGroup.removeAll(); - this._symbolDraw.remove(true); - oldData && oldData.eachItemGraphicEl(function(el, idx) { - if (el.__temp) { - group.remove(el); - oldData.setItemGraphicEl(idx, null); - } - }); - this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._endLabel = this._data = null; - }; - LineView3.type = "line"; - return LineView3; - }(ChartView2) - ); - function pointsLayout2(seriesType3, forceStoreInTypedArray) { - return { - seriesType: seriesType3, - plan: createRenderPlanner2(), - reset: function(seriesModel) { - var data = seriesModel.getData(); - var coordSys = seriesModel.coordinateSystem; - var pipelineContext = seriesModel.pipelineContext; - var useTypedArray = forceStoreInTypedArray || pipelineContext.large; - if (!coordSys) { - return; - } - var dims = map3(coordSys.dimensions, function(dim) { - return data.mapDimension(dim); - }).slice(0, 2); - var dimLen = dims.length; - var stackResultDim = data.getCalculationInfo("stackResultDimension"); - if (isDimensionStacked2(data, dims[0])) { - dims[0] = stackResultDim; - } - if (isDimensionStacked2(data, dims[1])) { - dims[1] = stackResultDim; - } - var store = data.getStore(); - var dimIdx0 = data.getDimensionIndex(dims[0]); - var dimIdx1 = data.getDimensionIndex(dims[1]); - return dimLen && { - progress: function(params, data2) { - var segCount = params.end - params.start; - var points5 = useTypedArray && createFloat32Array2(segCount * dimLen); - var tmpIn = []; - var tmpOut = []; - for (var i2 = params.start, offset3 = 0; i2 < params.end; i2++) { - var point = void 0; - if (dimLen === 1) { - var x = store.get(dimIdx0, i2); - point = coordSys.dataToPoint(x, null, tmpOut); - } else { - tmpIn[0] = store.get(dimIdx0, i2); - tmpIn[1] = store.get(dimIdx1, i2); - point = coordSys.dataToPoint(tmpIn, null, tmpOut); - } - if (useTypedArray) { - points5[offset3++] = point[0]; - points5[offset3++] = point[1]; - } else { - data2.setItemLayout(i2, point.slice()); - } - } - useTypedArray && data2.setLayout("points", points5); - } - }; - } - }; - } - var samplers2 = { - average: function(frame) { - var sum3 = 0; - var count3 = 0; - for (var i2 = 0; i2 < frame.length; i2++) { - if (!isNaN(frame[i2])) { - sum3 += frame[i2]; - count3++; - } - } - return count3 === 0 ? NaN : sum3 / count3; - }, - sum: function(frame) { - var sum3 = 0; - for (var i2 = 0; i2 < frame.length; i2++) { - sum3 += frame[i2] || 0; - } - return sum3; - }, - max: function(frame) { - var max5 = -Infinity; - for (var i2 = 0; i2 < frame.length; i2++) { - frame[i2] > max5 && (max5 = frame[i2]); - } - return isFinite(max5) ? max5 : NaN; - }, - min: function(frame) { - var min5 = Infinity; - for (var i2 = 0; i2 < frame.length; i2++) { - frame[i2] < min5 && (min5 = frame[i2]); - } - return isFinite(min5) ? min5 : NaN; - }, - // TODO - // Median - nearest: function(frame) { - return frame[0]; - } - }; - var indexSampler2 = function(frame) { - return Math.round(frame.length / 2); - }; - function dataSample2(seriesType3) { - return { - seriesType: seriesType3, - // FIXME:TS never used, so comment it - // modifyOutputEnd: true, - reset: function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var sampling = seriesModel.get("sampling"); - var coordSys = seriesModel.coordinateSystem; - var count3 = data.count(); - if (count3 > 10 && coordSys.type === "cartesian2d" && sampling) { - var baseAxis = coordSys.getBaseAxis(); - var valueAxis3 = coordSys.getOtherAxis(baseAxis); - var extent4 = baseAxis.getExtent(); - var dpr3 = api.getDevicePixelRatio(); - var size2 = Math.abs(extent4[1] - extent4[0]) * (dpr3 || 1); - var rate = Math.round(count3 / size2); - if (isFinite(rate) && rate > 1) { - if (sampling === "lttb") { - seriesModel.setData(data.lttbDownSample(data.mapDimension(valueAxis3.dim), 1 / rate)); - } else if (sampling === "minmax") { - seriesModel.setData(data.minmaxDownSample(data.mapDimension(valueAxis3.dim), 1 / rate)); - } - var sampler = void 0; - if (isString2(sampling)) { - sampler = samplers2[sampling]; - } else if (isFunction2(sampling)) { - sampler = sampling; - } - if (sampler) { - seriesModel.setData(data.downSample(data.mapDimension(valueAxis3.dim), 1 / rate, sampler, indexSampler2)); - } - } - } - } - }; - } - function install$2(registers) { - registers.registerChartView(LineView2); - registers.registerSeriesModel(LineSeriesModel2); - registers.registerLayout(pointsLayout2("line", true)); - registers.registerVisual({ - seriesType: "line", - reset: function(seriesModel) { - var data = seriesModel.getData(); - var lineStyle = seriesModel.getModel("lineStyle").getLineStyle(); - if (lineStyle && !lineStyle.stroke) { - lineStyle.stroke = data.getVisual("style").fill; - } - data.setVisual("legendLineStyle", lineStyle); - } - }); - registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample2("line")); - } - var BaseBarSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(BaseBarSeriesModel3, _super); - function BaseBarSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = BaseBarSeriesModel3.type; - return _this; - } - BaseBarSeriesModel3.prototype.getInitialData = function(option, ecModel) { - return createSeriesData2(null, this, { - useEncodeDefaulter: true - }); - }; - BaseBarSeriesModel3.prototype.getMarkerPosition = function(value, dims, startingAtTick) { - var coordSys = this.coordinateSystem; - if (coordSys && coordSys.clampData) { - var clampData_1 = coordSys.clampData(value); - var pt_1 = coordSys.dataToPoint(clampData_1); - if (startingAtTick) { - each17(coordSys.getAxes(), function(axis, idx) { - if (axis.type === "category" && dims != null) { - var tickCoords = axis.getTicksCoords(); - var alignTicksWithLabel = axis.getTickModel().get("alignWithLabel"); - var targetTickId = clampData_1[idx]; - var isEnd = dims[idx] === "x1" || dims[idx] === "y1"; - if (isEnd && !alignTicksWithLabel) { - targetTickId += 1; - } - if (tickCoords.length < 2) { - return; - } else if (tickCoords.length === 2) { - pt_1[idx] = axis.toGlobalCoord(axis.getExtent()[isEnd ? 1 : 0]); - return; - } - var leftCoord = void 0; - var coord = void 0; - var stepTickValue = 1; - for (var i2 = 0; i2 < tickCoords.length; i2++) { - var tickCoord = tickCoords[i2].coord; - var tickValue = i2 === tickCoords.length - 1 ? tickCoords[i2 - 1].tickValue + stepTickValue : tickCoords[i2].tickValue; - if (tickValue === targetTickId) { - coord = tickCoord; - break; - } else if (tickValue < targetTickId) { - leftCoord = tickCoord; - } else if (leftCoord != null && tickValue > targetTickId) { - coord = (tickCoord + leftCoord) / 2; - break; - } - if (i2 === 1) { - stepTickValue = tickValue - tickCoords[0].tickValue; - } - } - if (coord == null) { - if (!leftCoord) { - coord = tickCoords[0].coord; - } else if (leftCoord) { - coord = tickCoords[tickCoords.length - 1].coord; - } - } - pt_1[idx] = axis.toGlobalCoord(coord); - } - }); - } else { - var data = this.getData(); - var offset3 = data.getLayout("offset"); - var size2 = data.getLayout("size"); - var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1; - pt_1[offsetIndex] += offset3 + size2 / 2; - } - return pt_1; - } - return [NaN, NaN]; - }; - BaseBarSeriesModel3.type = "series.__base_bar__"; - BaseBarSeriesModel3.defaultOption = { - // zlevel: 0, - z: 2, - coordinateSystem: "cartesian2d", - legendHoverLink: true, - // stack: null - // Cartesian coordinate system - // xAxisIndex: 0, - // yAxisIndex: 0, - barMinHeight: 0, - barMinAngle: 0, - // cursor: null, - large: false, - largeThreshold: 400, - progressive: 3e3, - progressiveChunkMode: "mod" - }; - return BaseBarSeriesModel3; - }(SeriesModel2) - ); - SeriesModel2.registerClass(BaseBarSeriesModel2); - var BarSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(BarSeriesModel3, _super); - function BarSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = BarSeriesModel3.type; - return _this; - } - BarSeriesModel3.prototype.getInitialData = function() { - return createSeriesData2(null, this, { - useEncodeDefaulter: true, - createInvertedIndices: !!this.get("realtimeSort", true) || null - }); - }; - BarSeriesModel3.prototype.getProgressive = function() { - return this.get("large") ? this.get("progressive") : false; - }; - BarSeriesModel3.prototype.getProgressiveThreshold = function() { - var progressiveThreshold = this.get("progressiveThreshold"); - var largeThreshold = this.get("largeThreshold"); - if (largeThreshold > progressiveThreshold) { - progressiveThreshold = largeThreshold; - } - return progressiveThreshold; - }; - BarSeriesModel3.prototype.brushSelector = function(dataIndex, data, selectors) { - return selectors.rect(data.getItemLayout(dataIndex)); - }; - BarSeriesModel3.type = "series.bar"; - BarSeriesModel3.dependencies = ["grid", "polar"]; - BarSeriesModel3.defaultOption = inheritDefaultOption2(BaseBarSeriesModel2.defaultOption, { - // If clipped - // Only available on cartesian2d - clip: true, - roundCap: false, - showBackground: false, - backgroundStyle: { - color: "rgba(180, 180, 180, 0.2)", - borderColor: null, - borderWidth: 0, - borderType: "solid", - borderRadius: 0, - shadowBlur: 0, - shadowColor: null, - shadowOffsetX: 0, - shadowOffsetY: 0, - opacity: 1 - }, - select: { - itemStyle: { - borderColor: "#212121" - } - }, - realtimeSort: false - }); - return BarSeriesModel3; - }(BaseBarSeriesModel2) - ); - var SausageShape2 = ( - /** @class */ - /* @__PURE__ */ function() { - function SausageShape3() { - this.cx = 0; - this.cy = 0; - this.r0 = 0; - this.r = 0; - this.startAngle = 0; - this.endAngle = Math.PI * 2; - this.clockwise = true; - } - return SausageShape3; - }() - ); - var SausagePath2 = ( - /** @class */ - function(_super) { - __extends2(SausagePath3, _super); - function SausagePath3(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "sausage"; - return _this; - } - SausagePath3.prototype.getDefaultShape = function() { - return new SausageShape2(); - }; - SausagePath3.prototype.buildPath = function(ctx, shape) { - var cx = shape.cx; - var cy = shape.cy; - var r0 = Math.max(shape.r0 || 0, 0); - var r = Math.max(shape.r, 0); - var dr = (r - r0) * 0.5; - var rCenter = r0 + dr; - var startAngle = shape.startAngle; - var endAngle = shape.endAngle; - var clockwise = shape.clockwise; - var PI211 = Math.PI * 2; - var lessThanCircle = clockwise ? endAngle - startAngle < PI211 : startAngle - endAngle < PI211; - if (!lessThanCircle) { - startAngle = endAngle - (clockwise ? PI211 : -PI211); - } - var unitStartX = Math.cos(startAngle); - var unitStartY = Math.sin(startAngle); - var unitEndX = Math.cos(endAngle); - var unitEndY = Math.sin(endAngle); - if (lessThanCircle) { - ctx.moveTo(unitStartX * r0 + cx, unitStartY * r0 + cy); - ctx.arc(unitStartX * rCenter + cx, unitStartY * rCenter + cy, dr, -Math.PI + startAngle, startAngle, !clockwise); - } else { - ctx.moveTo(unitStartX * r + cx, unitStartY * r + cy); - } - ctx.arc(cx, cy, r, startAngle, endAngle, !clockwise); - ctx.arc(unitEndX * rCenter + cx, unitEndY * rCenter + cy, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise); - if (r0 !== 0) { - ctx.arc(cx, cy, r0, endAngle, startAngle, clockwise); - } - }; - return SausagePath3; - }(Path2) - ); - function createSectorCalculateTextPosition2(positionMapping, opts) { - opts = opts || {}; - var isRoundCap = opts.isRoundCap; - return function(out3, opts2, boundingRect) { - var textPosition = opts2.position; - if (!textPosition || textPosition instanceof Array) { - return calculateTextPosition2(out3, opts2, boundingRect); - } - var mappedSectorPosition = positionMapping(textPosition); - var distance3 = opts2.distance != null ? opts2.distance : 5; - var sector = this.shape; - var cx = sector.cx; - var cy = sector.cy; - var r = sector.r; - var r0 = sector.r0; - var middleR = (r + r0) / 2; - var startAngle = sector.startAngle; - var endAngle = sector.endAngle; - var middleAngle = (startAngle + endAngle) / 2; - var extraDist = isRoundCap ? Math.abs(r - r0) / 2 : 0; - var mathCos7 = Math.cos; - var mathSin7 = Math.sin; - var x = cx + r * mathCos7(startAngle); - var y = cy + r * mathSin7(startAngle); - var textAlign = "left"; - var textVerticalAlign = "top"; - switch (mappedSectorPosition) { - case "startArc": - x = cx + (r0 - distance3) * mathCos7(middleAngle); - y = cy + (r0 - distance3) * mathSin7(middleAngle); - textAlign = "center"; - textVerticalAlign = "top"; - break; - case "insideStartArc": - x = cx + (r0 + distance3) * mathCos7(middleAngle); - y = cy + (r0 + distance3) * mathSin7(middleAngle); - textAlign = "center"; - textVerticalAlign = "bottom"; - break; - case "startAngle": - x = cx + middleR * mathCos7(startAngle) + adjustAngleDistanceX2(startAngle, distance3 + extraDist, false); - y = cy + middleR * mathSin7(startAngle) + adjustAngleDistanceY2(startAngle, distance3 + extraDist, false); - textAlign = "right"; - textVerticalAlign = "middle"; - break; - case "insideStartAngle": - x = cx + middleR * mathCos7(startAngle) + adjustAngleDistanceX2(startAngle, -distance3 + extraDist, false); - y = cy + middleR * mathSin7(startAngle) + adjustAngleDistanceY2(startAngle, -distance3 + extraDist, false); - textAlign = "left"; - textVerticalAlign = "middle"; - break; - case "middle": - x = cx + middleR * mathCos7(middleAngle); - y = cy + middleR * mathSin7(middleAngle); - textAlign = "center"; - textVerticalAlign = "middle"; - break; - case "endArc": - x = cx + (r + distance3) * mathCos7(middleAngle); - y = cy + (r + distance3) * mathSin7(middleAngle); - textAlign = "center"; - textVerticalAlign = "bottom"; - break; - case "insideEndArc": - x = cx + (r - distance3) * mathCos7(middleAngle); - y = cy + (r - distance3) * mathSin7(middleAngle); - textAlign = "center"; - textVerticalAlign = "top"; - break; - case "endAngle": - x = cx + middleR * mathCos7(endAngle) + adjustAngleDistanceX2(endAngle, distance3 + extraDist, true); - y = cy + middleR * mathSin7(endAngle) + adjustAngleDistanceY2(endAngle, distance3 + extraDist, true); - textAlign = "left"; - textVerticalAlign = "middle"; - break; - case "insideEndAngle": - x = cx + middleR * mathCos7(endAngle) + adjustAngleDistanceX2(endAngle, -distance3 + extraDist, true); - y = cy + middleR * mathSin7(endAngle) + adjustAngleDistanceY2(endAngle, -distance3 + extraDist, true); - textAlign = "right"; - textVerticalAlign = "middle"; - break; - default: - return calculateTextPosition2(out3, opts2, boundingRect); - } - out3 = out3 || {}; - out3.x = x; - out3.y = y; - out3.align = textAlign; - out3.verticalAlign = textVerticalAlign; - return out3; - }; - } - function setSectorTextRotation2(sector, textPosition, positionMapping, rotateType) { - if (isNumber2(rotateType)) { - sector.setTextConfig({ - rotation: rotateType - }); - return; - } else if (isArray3(textPosition)) { - sector.setTextConfig({ - rotation: 0 - }); - return; - } - var shape = sector.shape; - var startAngle = shape.clockwise ? shape.startAngle : shape.endAngle; - var endAngle = shape.clockwise ? shape.endAngle : shape.startAngle; - var middleAngle = (startAngle + endAngle) / 2; - var anchorAngle; - var mappedSectorPosition = positionMapping(textPosition); - switch (mappedSectorPosition) { - case "startArc": - case "insideStartArc": - case "middle": - case "insideEndArc": - case "endArc": - anchorAngle = middleAngle; - break; - case "startAngle": - case "insideStartAngle": - anchorAngle = startAngle; - break; - case "endAngle": - case "insideEndAngle": - anchorAngle = endAngle; - break; - default: - sector.setTextConfig({ - rotation: 0 - }); - return; - } - var rotate3 = Math.PI * 1.5 - anchorAngle; - if (mappedSectorPosition === "middle" && rotate3 > Math.PI / 2 && rotate3 < Math.PI * 1.5) { - rotate3 -= Math.PI; - } - sector.setTextConfig({ - rotation: rotate3 - }); - } - function adjustAngleDistanceX2(angle, distance3, isEnd) { - return distance3 * Math.sin(angle) * (isEnd ? -1 : 1); - } - function adjustAngleDistanceY2(angle, distance3, isEnd) { - return distance3 * Math.cos(angle) * (isEnd ? 1 : -1); - } - function getSectorCornerRadius2(model, shape, zeroIfNull) { - var cornerRadius = model.get("borderRadius"); - if (cornerRadius == null) { - return zeroIfNull ? { - cornerRadius: 0 - } : null; - } - if (!isArray3(cornerRadius)) { - cornerRadius = [cornerRadius, cornerRadius, cornerRadius, cornerRadius]; - } - var dr = Math.abs(shape.r || 0 - shape.r0 || 0); - return { - cornerRadius: map3(cornerRadius, function(cr) { - return parsePercent3(cr, dr); - }) - }; - } - var mathMax$6 = Math.max; - var mathMin$6 = Math.min; - function getClipArea2(coord, data) { - var coordSysClipArea = coord.getArea && coord.getArea(); - if (isCoordinateSystemType2(coord, "cartesian2d")) { - var baseAxis = coord.getBaseAxis(); - if (baseAxis.type !== "category" || !baseAxis.onBand) { - var expandWidth = data.getLayout("bandWidth"); - if (baseAxis.isHorizontal()) { - coordSysClipArea.x -= expandWidth; - coordSysClipArea.width += expandWidth * 2; - } else { - coordSysClipArea.y -= expandWidth; - coordSysClipArea.height += expandWidth * 2; - } - } - } - return coordSysClipArea; - } - var BarView2 = ( - /** @class */ - function(_super) { - __extends2(BarView3, _super); - function BarView3() { - var _this = _super.call(this) || this; - _this.type = BarView3.type; - _this._isFirstFrame = true; - return _this; - } - BarView3.prototype.render = function(seriesModel, ecModel, api, payload) { - this._model = seriesModel; - this._removeOnRenderedListener(api); - this._updateDrawMode(seriesModel); - var coordinateSystemType = seriesModel.get("coordinateSystem"); - if (coordinateSystemType === "cartesian2d" || coordinateSystemType === "polar") { - this._progressiveEls = null; - this._isLargeDraw ? this._renderLarge(seriesModel, ecModel, api) : this._renderNormal(seriesModel, ecModel, api, payload); - } else if (true) { - warn2("Only cartesian2d and polar supported for bar."); - } - }; - BarView3.prototype.incrementalPrepareRender = function(seriesModel) { - this._clear(); - this._updateDrawMode(seriesModel); - this._updateLargeClip(seriesModel); - }; - BarView3.prototype.incrementalRender = function(params, seriesModel) { - this._progressiveEls = []; - this._incrementalRenderLarge(params, seriesModel); - }; - BarView3.prototype.eachRendered = function(cb) { - traverseElements2(this._progressiveEls || this.group, cb); - }; - BarView3.prototype._updateDrawMode = function(seriesModel) { - var isLargeDraw = seriesModel.pipelineContext.large; - if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) { - this._isLargeDraw = isLargeDraw; - this._clear(); - } - }; - BarView3.prototype._renderNormal = function(seriesModel, ecModel, api, payload) { - var group = this.group; - var data = seriesModel.getData(); - var oldData = this._data; - var coord = seriesModel.coordinateSystem; - var baseAxis = coord.getBaseAxis(); - var isHorizontalOrRadial; - if (coord.type === "cartesian2d") { - isHorizontalOrRadial = baseAxis.isHorizontal(); - } else if (coord.type === "polar") { - isHorizontalOrRadial = baseAxis.dim === "angle"; - } - var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null; - var realtimeSortCfg = shouldRealtimeSort2(seriesModel, coord); - if (realtimeSortCfg) { - this._enableRealtimeSort(realtimeSortCfg, data, api); - } - var needsClip = seriesModel.get("clip", true) || realtimeSortCfg; - var coordSysClipArea = getClipArea2(coord, data); - group.removeClipPath(); - var roundCap = seriesModel.get("roundCap", true); - var drawBackground = seriesModel.get("showBackground", true); - var backgroundModel = seriesModel.getModel("backgroundStyle"); - var barBorderRadius = backgroundModel.get("borderRadius") || 0; - var bgEls = []; - var oldBgEls = this._backgroundEls; - var isInitSort = payload && payload.isInitSort; - var isChangeOrder = payload && payload.type === "changeAxisOrder"; - function createBackground(dataIndex) { - var bgLayout = getLayout2[coord.type](data, dataIndex); - var bgEl = createBackgroundEl2(coord, isHorizontalOrRadial, bgLayout); - bgEl.useStyle(backgroundModel.getItemStyle()); - if (coord.type === "cartesian2d") { - bgEl.setShape("r", barBorderRadius); - } else { - bgEl.setShape("cornerRadius", barBorderRadius); - } - bgEls[dataIndex] = bgEl; - return bgEl; - } - data.diff(oldData).add(function(dataIndex) { - var itemModel = data.getItemModel(dataIndex); - var layout6 = getLayout2[coord.type](data, dataIndex, itemModel); - if (drawBackground) { - createBackground(dataIndex); - } - if (!data.hasValue(dataIndex) || !isValidLayout2[coord.type](layout6)) { - return; - } - var isClipped = false; - if (needsClip) { - isClipped = clip2[coord.type](coordSysClipArea, layout6); - } - var el = elementCreator2[coord.type](seriesModel, data, dataIndex, layout6, isHorizontalOrRadial, animationModel, baseAxis.model, false, roundCap); - if (realtimeSortCfg) { - el.forceLabelAnimation = true; - } - updateStyle2(el, data, dataIndex, itemModel, layout6, seriesModel, isHorizontalOrRadial, coord.type === "polar"); - if (isInitSort) { - el.attr({ - shape: layout6 - }); - } else if (realtimeSortCfg) { - updateRealtimeAnimation2(realtimeSortCfg, animationModel, el, layout6, dataIndex, isHorizontalOrRadial, false, false); - } else { - initProps2(el, { - shape: layout6 - }, seriesModel, dataIndex); - } - data.setItemGraphicEl(dataIndex, el); - group.add(el); - el.ignore = isClipped; - }).update(function(newIndex, oldIndex) { - var itemModel = data.getItemModel(newIndex); - var layout6 = getLayout2[coord.type](data, newIndex, itemModel); - if (drawBackground) { - var bgEl = void 0; - if (oldBgEls.length === 0) { - bgEl = createBackground(oldIndex); - } else { - bgEl = oldBgEls[oldIndex]; - bgEl.useStyle(backgroundModel.getItemStyle()); - if (coord.type === "cartesian2d") { - bgEl.setShape("r", barBorderRadius); - } else { - bgEl.setShape("cornerRadius", barBorderRadius); - } - bgEls[newIndex] = bgEl; - } - var bgLayout = getLayout2[coord.type](data, newIndex); - var shape = createBackgroundShape2(isHorizontalOrRadial, bgLayout, coord); - updateProps3(bgEl, { - shape - }, animationModel, newIndex); - } - var el = oldData.getItemGraphicEl(oldIndex); - if (!data.hasValue(newIndex) || !isValidLayout2[coord.type](layout6)) { - group.remove(el); - return; - } - var isClipped = false; - if (needsClip) { - isClipped = clip2[coord.type](coordSysClipArea, layout6); - if (isClipped) { - group.remove(el); - } - } - if (!el) { - el = elementCreator2[coord.type](seriesModel, data, newIndex, layout6, isHorizontalOrRadial, animationModel, baseAxis.model, !!el, roundCap); - } else { - saveOldStyle2(el); - } - if (realtimeSortCfg) { - el.forceLabelAnimation = true; - } - if (isChangeOrder) { - var textEl = el.getTextContent(); - if (textEl) { - var labelInnerStore = labelInner2(textEl); - if (labelInnerStore.prevValue != null) { - labelInnerStore.prevValue = labelInnerStore.value; - } - } - } else { - updateStyle2(el, data, newIndex, itemModel, layout6, seriesModel, isHorizontalOrRadial, coord.type === "polar"); - } - if (isInitSort) { - el.attr({ - shape: layout6 - }); - } else if (realtimeSortCfg) { - updateRealtimeAnimation2(realtimeSortCfg, animationModel, el, layout6, newIndex, isHorizontalOrRadial, true, isChangeOrder); - } else { - updateProps3(el, { - shape: layout6 - }, seriesModel, newIndex, null); - } - data.setItemGraphicEl(newIndex, el); - el.ignore = isClipped; - group.add(el); - }).remove(function(dataIndex) { - var el = oldData.getItemGraphicEl(dataIndex); - el && removeElementWithFadeOut2(el, seriesModel, dataIndex); - }).execute(); - var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group5()); - bgGroup.removeAll(); - for (var i2 = 0; i2 < bgEls.length; ++i2) { - bgGroup.add(bgEls[i2]); - } - group.add(bgGroup); - this._backgroundEls = bgEls; - this._data = data; - }; - BarView3.prototype._renderLarge = function(seriesModel, ecModel, api) { - this._clear(); - createLarge3(seriesModel, this.group); - this._updateLargeClip(seriesModel); - }; - BarView3.prototype._incrementalRenderLarge = function(params, seriesModel) { - this._removeBackground(); - createLarge3(seriesModel, this.group, this._progressiveEls, true); - }; - BarView3.prototype._updateLargeClip = function(seriesModel) { - var clipPath = seriesModel.get("clip", true) && createClipPath2(seriesModel.coordinateSystem, false, seriesModel); - var group = this.group; - if (clipPath) { - group.setClipPath(clipPath); - } else { - group.removeClipPath(); - } - }; - BarView3.prototype._enableRealtimeSort = function(realtimeSortCfg, data, api) { - var _this = this; - if (!data.count()) { - return; - } - var baseAxis = realtimeSortCfg.baseAxis; - if (this._isFirstFrame) { - this._dispatchInitSort(data, realtimeSortCfg, api); - this._isFirstFrame = false; - } else { - var orderMapping_1 = function(idx) { - var el = data.getItemGraphicEl(idx); - var shape = el && el.shape; - return shape && // The result should be consistent with the initial sort by data value. - // Do not support the case that both positive and negative exist. - Math.abs(baseAxis.isHorizontal() ? shape.height : shape.width) || 0; - }; - this._onRendered = function() { - _this._updateSortWithinSameData(data, orderMapping_1, baseAxis, api); - }; - api.getZr().on("rendered", this._onRendered); - } - }; - BarView3.prototype._dataSort = function(data, baseAxis, orderMapping) { - var info = []; - data.each(data.mapDimension(baseAxis.dim), function(ordinalNumber, dataIdx) { - var mappedValue = orderMapping(dataIdx); - mappedValue = mappedValue == null ? NaN : mappedValue; - info.push({ - dataIndex: dataIdx, - mappedValue, - ordinalNumber - }); - }); - info.sort(function(a, b) { - return b.mappedValue - a.mappedValue; - }); - return { - ordinalNumbers: map3(info, function(item) { - return item.ordinalNumber; - }) - }; - }; - BarView3.prototype._isOrderChangedWithinSameData = function(data, orderMapping, baseAxis) { - var scale5 = baseAxis.scale; - var ordinalDataDim = data.mapDimension(baseAxis.dim); - var lastValue = Number.MAX_VALUE; - for (var tickNum = 0, len3 = scale5.getOrdinalMeta().categories.length; tickNum < len3; ++tickNum) { - var rawIdx = data.rawIndexOf(ordinalDataDim, scale5.getRawOrdinalNumber(tickNum)); - var value = rawIdx < 0 ? Number.MIN_VALUE : orderMapping(data.indexOfRawIndex(rawIdx)); - if (value > lastValue) { - return true; - } - lastValue = value; - } - return false; - }; - BarView3.prototype._isOrderDifferentInView = function(orderInfo, baseAxis) { - var scale5 = baseAxis.scale; - var extent4 = scale5.getExtent(); - var tickNum = Math.max(0, extent4[0]); - var tickMax = Math.min(extent4[1], scale5.getOrdinalMeta().categories.length - 1); - for (; tickNum <= tickMax; ++tickNum) { - if (orderInfo.ordinalNumbers[tickNum] !== scale5.getRawOrdinalNumber(tickNum)) { - return true; - } - } - }; - BarView3.prototype._updateSortWithinSameData = function(data, orderMapping, baseAxis, api) { - if (!this._isOrderChangedWithinSameData(data, orderMapping, baseAxis)) { - return; - } - var sortInfo = this._dataSort(data, baseAxis, orderMapping); - if (this._isOrderDifferentInView(sortInfo, baseAxis)) { - this._removeOnRenderedListener(api); - api.dispatchAction({ - type: "changeAxisOrder", - componentType: baseAxis.dim + "Axis", - axisId: baseAxis.index, - sortInfo - }); - } - }; - BarView3.prototype._dispatchInitSort = function(data, realtimeSortCfg, api) { - var baseAxis = realtimeSortCfg.baseAxis; - var sortResult = this._dataSort(data, baseAxis, function(dataIdx) { - return data.get(data.mapDimension(realtimeSortCfg.otherAxis.dim), dataIdx); - }); - api.dispatchAction({ - type: "changeAxisOrder", - componentType: baseAxis.dim + "Axis", - isInitSort: true, - axisId: baseAxis.index, - sortInfo: sortResult - }); - }; - BarView3.prototype.remove = function(ecModel, api) { - this._clear(this._model); - this._removeOnRenderedListener(api); - }; - BarView3.prototype.dispose = function(ecModel, api) { - this._removeOnRenderedListener(api); - }; - BarView3.prototype._removeOnRenderedListener = function(api) { - if (this._onRendered) { - api.getZr().off("rendered", this._onRendered); - this._onRendered = null; - } - }; - BarView3.prototype._clear = function(model) { - var group = this.group; - var data = this._data; - if (model && model.isAnimationEnabled() && data && !this._isLargeDraw) { - this._removeBackground(); - this._backgroundEls = []; - data.eachItemGraphicEl(function(el) { - removeElementWithFadeOut2(el, model, getECData2(el).dataIndex); - }); - } else { - group.removeAll(); - } - this._data = null; - this._isFirstFrame = true; - }; - BarView3.prototype._removeBackground = function() { - this.group.remove(this._backgroundGroup); - this._backgroundGroup = null; - }; - BarView3.type = "bar"; - return BarView3; - }(ChartView2) - ); - var clip2 = { - cartesian2d: function(coordSysBoundingRect, layout6) { - var signWidth = layout6.width < 0 ? -1 : 1; - var signHeight = layout6.height < 0 ? -1 : 1; - if (signWidth < 0) { - layout6.x += layout6.width; - layout6.width = -layout6.width; - } - if (signHeight < 0) { - layout6.y += layout6.height; - layout6.height = -layout6.height; - } - var coordSysX2 = coordSysBoundingRect.x + coordSysBoundingRect.width; - var coordSysY2 = coordSysBoundingRect.y + coordSysBoundingRect.height; - var x = mathMax$6(layout6.x, coordSysBoundingRect.x); - var x2 = mathMin$6(layout6.x + layout6.width, coordSysX2); - var y = mathMax$6(layout6.y, coordSysBoundingRect.y); - var y2 = mathMin$6(layout6.y + layout6.height, coordSysY2); - var xClipped = x2 < x; - var yClipped = y2 < y; - layout6.x = xClipped && x > coordSysX2 ? x2 : x; - layout6.y = yClipped && y > coordSysY2 ? y2 : y; - layout6.width = xClipped ? 0 : x2 - x; - layout6.height = yClipped ? 0 : y2 - y; - if (signWidth < 0) { - layout6.x += layout6.width; - layout6.width = -layout6.width; - } - if (signHeight < 0) { - layout6.y += layout6.height; - layout6.height = -layout6.height; - } - return xClipped || yClipped; - }, - polar: function(coordSysClipArea, layout6) { - var signR = layout6.r0 <= layout6.r ? 1 : -1; - if (signR < 0) { - var tmp = layout6.r; - layout6.r = layout6.r0; - layout6.r0 = tmp; - } - var r = mathMin$6(layout6.r, coordSysClipArea.r); - var r0 = mathMax$6(layout6.r0, coordSysClipArea.r0); - layout6.r = r; - layout6.r0 = r0; - var clipped = r - r0 < 0; - if (signR < 0) { - var tmp = layout6.r; - layout6.r = layout6.r0; - layout6.r0 = tmp; - } - return clipped; - } - }; - var elementCreator2 = { - cartesian2d: function(seriesModel, data, newIndex, layout6, isHorizontal, animationModel, axisModel, isUpdate, roundCap) { - var rect = new Rect4({ - shape: extend3({}, layout6), - z2: 1 - }); - rect.__dataIndex = newIndex; - rect.name = "item"; - if (animationModel) { - var rectShape = rect.shape; - var animateProperty = isHorizontal ? "height" : "width"; - rectShape[animateProperty] = 0; - } - return rect; - }, - polar: function(seriesModel, data, newIndex, layout6, isRadial, animationModel, axisModel, isUpdate, roundCap) { - var ShapeClass = !isRadial && roundCap ? SausagePath2 : Sector2; - var sector = new ShapeClass({ - shape: layout6, - z2: 1 - }); - sector.name = "item"; - var positionMap = createPolarPositionMapping2(isRadial); - sector.calculateTextPosition = createSectorCalculateTextPosition2(positionMap, { - isRoundCap: ShapeClass === SausagePath2 - }); - if (animationModel) { - var sectorShape = sector.shape; - var animateProperty = isRadial ? "r" : "endAngle"; - var animateTarget = {}; - sectorShape[animateProperty] = isRadial ? layout6.r0 : layout6.startAngle; - animateTarget[animateProperty] = layout6[animateProperty]; - (isUpdate ? updateProps3 : initProps2)(sector, { - shape: animateTarget - // __value: typeof dataValue === 'string' ? parseInt(dataValue, 10) : dataValue - }, animationModel); - } - return sector; - } - }; - function shouldRealtimeSort2(seriesModel, coordSys) { - var realtimeSortOption = seriesModel.get("realtimeSort", true); - var baseAxis = coordSys.getBaseAxis(); - if (true) { - if (realtimeSortOption) { - if (baseAxis.type !== "category") { - warn2("`realtimeSort` will not work because this bar series is not based on a category axis."); - } - if (coordSys.type !== "cartesian2d") { - warn2("`realtimeSort` will not work because this bar series is not on cartesian2d."); - } - } - } - if (realtimeSortOption && baseAxis.type === "category" && coordSys.type === "cartesian2d") { - return { - baseAxis, - otherAxis: coordSys.getOtherAxis(baseAxis) - }; - } - } - function updateRealtimeAnimation2(realtimeSortCfg, seriesAnimationModel, el, layout6, newIndex, isHorizontal, isUpdate, isChangeOrder) { - var seriesTarget; - var axisTarget; - if (isHorizontal) { - axisTarget = { - x: layout6.x, - width: layout6.width - }; - seriesTarget = { - y: layout6.y, - height: layout6.height - }; - } else { - axisTarget = { - y: layout6.y, - height: layout6.height - }; - seriesTarget = { - x: layout6.x, - width: layout6.width - }; - } - if (!isChangeOrder) { - (isUpdate ? updateProps3 : initProps2)(el, { - shape: seriesTarget - }, seriesAnimationModel, newIndex, null); - } - var axisAnimationModel = seriesAnimationModel ? realtimeSortCfg.baseAxis.model : null; - (isUpdate ? updateProps3 : initProps2)(el, { - shape: axisTarget - }, axisAnimationModel, newIndex); - } - function checkPropertiesNotValid2(obj, props) { - for (var i2 = 0; i2 < props.length; i2++) { - if (!isFinite(obj[props[i2]])) { - return true; - } - } - return false; - } - var rectPropties2 = ["x", "y", "width", "height"]; - var polarPropties2 = ["cx", "cy", "r", "startAngle", "endAngle"]; - var isValidLayout2 = { - cartesian2d: function(layout6) { - return !checkPropertiesNotValid2(layout6, rectPropties2); - }, - polar: function(layout6) { - return !checkPropertiesNotValid2(layout6, polarPropties2); - } - }; - var getLayout2 = { - // itemModel is only used to get borderWidth, which is not needed - // when calculating bar background layout. - cartesian2d: function(data, dataIndex, itemModel) { - var layout6 = data.getItemLayout(dataIndex); - var fixedLineWidth = itemModel ? getLineWidth2(itemModel, layout6) : 0; - var signX = layout6.width > 0 ? 1 : -1; - var signY = layout6.height > 0 ? 1 : -1; - return { - x: layout6.x + signX * fixedLineWidth / 2, - y: layout6.y + signY * fixedLineWidth / 2, - width: layout6.width - signX * fixedLineWidth, - height: layout6.height - signY * fixedLineWidth - }; - }, - polar: function(data, dataIndex, itemModel) { - var layout6 = data.getItemLayout(dataIndex); - return { - cx: layout6.cx, - cy: layout6.cy, - r0: layout6.r0, - r: layout6.r, - startAngle: layout6.startAngle, - endAngle: layout6.endAngle, - clockwise: layout6.clockwise - }; - } - }; - function isZeroOnPolar2(layout6) { - return layout6.startAngle != null && layout6.endAngle != null && layout6.startAngle === layout6.endAngle; - } - function createPolarPositionMapping2(isRadial) { - return /* @__PURE__ */ function(isRadial2) { - var arcOrAngle = isRadial2 ? "Arc" : "Angle"; - return function(position3) { - switch (position3) { - case "start": - case "insideStart": - case "end": - case "insideEnd": - return position3 + arcOrAngle; - default: - return position3; - } - }; - }(isRadial); - } - function updateStyle2(el, data, dataIndex, itemModel, layout6, seriesModel, isHorizontalOrRadial, isPolar) { - var style = data.getItemVisual(dataIndex, "style"); - if (!isPolar) { - var borderRadius = itemModel.get(["itemStyle", "borderRadius"]) || 0; - el.setShape("r", borderRadius); - } else if (!seriesModel.get("roundCap")) { - var sectorShape = el.shape; - var cornerRadius = getSectorCornerRadius2(itemModel.getModel("itemStyle"), sectorShape, true); - extend3(sectorShape, cornerRadius); - el.setShape(sectorShape); - } - el.useStyle(style); - var cursorStyle = itemModel.getShallow("cursor"); - cursorStyle && el.attr("cursor", cursorStyle); - var labelPositionOutside = isPolar ? isHorizontalOrRadial ? layout6.r >= layout6.r0 ? "endArc" : "startArc" : layout6.endAngle >= layout6.startAngle ? "endAngle" : "startAngle" : isHorizontalOrRadial ? layout6.height >= 0 ? "bottom" : "top" : layout6.width >= 0 ? "right" : "left"; - var labelStatesModels = getLabelStatesModels2(itemModel); - setLabelStyle2(el, labelStatesModels, { - labelFetcher: seriesModel, - labelDataIndex: dataIndex, - defaultText: getDefaultLabel2(seriesModel.getData(), dataIndex), - inheritColor: style.fill, - defaultOpacity: style.opacity, - defaultOutsidePosition: labelPositionOutside - }); - var label = el.getTextContent(); - if (isPolar && label) { - var position3 = itemModel.get(["label", "position"]); - el.textConfig.inside = position3 === "middle" ? true : null; - setSectorTextRotation2(el, position3 === "outside" ? labelPositionOutside : position3, createPolarPositionMapping2(isHorizontalOrRadial), itemModel.get(["label", "rotate"])); - } - setLabelValueAnimation2(label, labelStatesModels, seriesModel.getRawValue(dataIndex), function(value) { - return getDefaultInterpolatedLabel2(data, value); - }); - var emphasisModel = itemModel.getModel(["emphasis"]); - toggleHoverEmphasis2(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - setStatesStylesFromModel2(el, itemModel); - if (isZeroOnPolar2(layout6)) { - el.style.fill = "none"; - el.style.stroke = "none"; - each17(el.states, function(state) { - if (state.style) { - state.style.fill = state.style.stroke = "none"; - } - }); - } - } - function getLineWidth2(itemModel, rawLayout) { - var borderColor = itemModel.get(["itemStyle", "borderColor"]); - if (!borderColor || borderColor === "none") { - return 0; - } - var lineWidth = itemModel.get(["itemStyle", "borderWidth"]) || 0; - var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width); - var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height); - return Math.min(lineWidth, width, height); - } - var LagePathShape2 = ( - /** @class */ - /* @__PURE__ */ function() { - function LagePathShape3() { - } - return LagePathShape3; - }() - ); - var LargePath2 = ( - /** @class */ - function(_super) { - __extends2(LargePath3, _super); - function LargePath3(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "largeBar"; - return _this; - } - LargePath3.prototype.getDefaultShape = function() { - return new LagePathShape2(); - }; - LargePath3.prototype.buildPath = function(ctx, shape) { - var points5 = shape.points; - var baseDimIdx = this.baseDimIdx; - var valueDimIdx = 1 - this.baseDimIdx; - var startPoint = []; - var size2 = []; - var barWidth = this.barWidth; - for (var i2 = 0; i2 < points5.length; i2 += 3) { - size2[baseDimIdx] = barWidth; - size2[valueDimIdx] = points5[i2 + 2]; - startPoint[baseDimIdx] = points5[i2 + baseDimIdx]; - startPoint[valueDimIdx] = points5[i2 + valueDimIdx]; - ctx.rect(startPoint[0], startPoint[1], size2[0], size2[1]); - } - }; - return LargePath3; - }(Path2) - ); - function createLarge3(seriesModel, group, progressiveEls, incremental) { - var data = seriesModel.getData(); - var baseDimIdx = data.getLayout("valueAxisHorizontal") ? 1 : 0; - var largeDataIndices = data.getLayout("largeDataIndices"); - var barWidth = data.getLayout("size"); - var backgroundModel = seriesModel.getModel("backgroundStyle"); - var bgPoints = data.getLayout("largeBackgroundPoints"); - if (bgPoints) { - var bgEl = new LargePath2({ - shape: { - points: bgPoints - }, - incremental: !!incremental, - silent: true, - z2: 0 - }); - bgEl.baseDimIdx = baseDimIdx; - bgEl.largeDataIndices = largeDataIndices; - bgEl.barWidth = barWidth; - bgEl.useStyle(backgroundModel.getItemStyle()); - group.add(bgEl); - progressiveEls && progressiveEls.push(bgEl); - } - var el = new LargePath2({ - shape: { - points: data.getLayout("largePoints") - }, - incremental: !!incremental, - ignoreCoarsePointer: true, - z2: 1 - }); - el.baseDimIdx = baseDimIdx; - el.largeDataIndices = largeDataIndices; - el.barWidth = barWidth; - group.add(el); - el.useStyle(data.getVisual("style")); - el.style.stroke = null; - getECData2(el).seriesIndex = seriesModel.seriesIndex; - if (!seriesModel.get("silent")) { - el.on("mousedown", largePathUpdateDataIndex2); - el.on("mousemove", largePathUpdateDataIndex2); - } - progressiveEls && progressiveEls.push(el); - } - var largePathUpdateDataIndex2 = throttle2(function(event) { - var largePath = this; - var dataIndex = largePathFindDataIndex2(largePath, event.offsetX, event.offsetY); - getECData2(largePath).dataIndex = dataIndex >= 0 ? dataIndex : null; - }, 30, false); - function largePathFindDataIndex2(largePath, x, y) { - var baseDimIdx = largePath.baseDimIdx; - var valueDimIdx = 1 - baseDimIdx; - var points5 = largePath.shape.points; - var largeDataIndices = largePath.largeDataIndices; - var startPoint = []; - var size2 = []; - var barWidth = largePath.barWidth; - for (var i2 = 0, len3 = points5.length / 3; i2 < len3; i2++) { - var ii = i2 * 3; - size2[baseDimIdx] = barWidth; - size2[valueDimIdx] = points5[ii + 2]; - startPoint[baseDimIdx] = points5[ii + baseDimIdx]; - startPoint[valueDimIdx] = points5[ii + valueDimIdx]; - if (size2[valueDimIdx] < 0) { - startPoint[valueDimIdx] += size2[valueDimIdx]; - size2[valueDimIdx] = -size2[valueDimIdx]; - } - if (x >= startPoint[0] && x <= startPoint[0] + size2[0] && y >= startPoint[1] && y <= startPoint[1] + size2[1]) { - return largeDataIndices[i2]; - } - } - return -1; - } - function createBackgroundShape2(isHorizontalOrRadial, layout6, coord) { - if (isCoordinateSystemType2(coord, "cartesian2d")) { - var rectShape = layout6; - var coordLayout = coord.getArea(); - return { - x: isHorizontalOrRadial ? rectShape.x : coordLayout.x, - y: isHorizontalOrRadial ? coordLayout.y : rectShape.y, - width: isHorizontalOrRadial ? rectShape.width : coordLayout.width, - height: isHorizontalOrRadial ? coordLayout.height : rectShape.height - }; - } else { - var coordLayout = coord.getArea(); - var sectorShape = layout6; - return { - cx: coordLayout.cx, - cy: coordLayout.cy, - r0: isHorizontalOrRadial ? coordLayout.r0 : sectorShape.r0, - r: isHorizontalOrRadial ? coordLayout.r : sectorShape.r, - startAngle: isHorizontalOrRadial ? sectorShape.startAngle : 0, - endAngle: isHorizontalOrRadial ? sectorShape.endAngle : Math.PI * 2 - }; - } - } - function createBackgroundEl2(coord, isHorizontalOrRadial, layout6) { - var ElementClz = coord.type === "polar" ? Sector2 : Rect4; - return new ElementClz({ - shape: createBackgroundShape2(isHorizontalOrRadial, layout6, coord), - silent: true, - z2: 0 - }); - } - function install$3(registers) { - registers.registerChartView(BarView2); - registers.registerSeriesModel(BarSeriesModel2); - registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, curry3(layout5, "bar")); - registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout2("bar")); - registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample2("bar")); - registers.registerAction({ - type: "changeAxisOrder", - event: "changeAxisOrder", - update: "update" - }, function(payload, ecModel) { - var componentType = payload.componentType || "series"; - ecModel.eachComponent({ - mainType: componentType, - query: payload - }, function(componentModel) { - if (payload.sortInfo) { - componentModel.axis.setCategorySortInfo(payload.sortInfo); - } - }); - }); - } - var PI2$8 = Math.PI * 2; - var RADIAN4 = Math.PI / 180; - function getViewRect7(seriesModel, api) { - return getLayoutRect2(seriesModel.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }); - } - function getBasicPieLayout2(seriesModel, api) { - var viewRect3 = getViewRect7(seriesModel, api); - var center4 = seriesModel.get("center"); - var radius = seriesModel.get("radius"); - if (!isArray3(radius)) { - radius = [0, radius]; - } - var width = parsePercent$1(viewRect3.width, api.getWidth()); - var height = parsePercent$1(viewRect3.height, api.getHeight()); - var size2 = Math.min(width, height); - var r0 = parsePercent$1(radius[0], size2 / 2); - var r = parsePercent$1(radius[1], size2 / 2); - var cx; - var cy; - var coordSys = seriesModel.coordinateSystem; - if (coordSys) { - var point = coordSys.dataToPoint(center4); - cx = point[0] || 0; - cy = point[1] || 0; - } else { - if (!isArray3(center4)) { - center4 = [center4, center4]; - } - cx = parsePercent$1(center4[0], width) + viewRect3.x; - cy = parsePercent$1(center4[1], height) + viewRect3.y; - } - return { - cx, - cy, - r0, - r - }; - } - function pieLayout2(seriesType3, ecModel, api) { - ecModel.eachSeriesByType(seriesType3, function(seriesModel) { - var data = seriesModel.getData(); - var valueDim = data.mapDimension("value"); - var viewRect3 = getViewRect7(seriesModel, api); - var _a3 = getBasicPieLayout2(seriesModel, api), cx = _a3.cx, cy = _a3.cy, r = _a3.r, r0 = _a3.r0; - var startAngle = -seriesModel.get("startAngle") * RADIAN4; - var endAngle = seriesModel.get("endAngle"); - var padAngle = seriesModel.get("padAngle") * RADIAN4; - endAngle = endAngle === "auto" ? startAngle - PI2$8 : -endAngle * RADIAN4; - var minAngle = seriesModel.get("minAngle") * RADIAN4; - var minAndPadAngle = minAngle + padAngle; - var validDataCount = 0; - data.each(valueDim, function(value) { - !isNaN(value) && validDataCount++; - }); - var sum3 = data.getSum(valueDim); - var unitRadian = Math.PI / (sum3 || validDataCount) * 2; - var clockwise = seriesModel.get("clockwise"); - var roseType = seriesModel.get("roseType"); - var stillShowZeroSum = seriesModel.get("stillShowZeroSum"); - var extent4 = data.getDataExtent(valueDim); - extent4[0] = 0; - var dir4 = clockwise ? 1 : -1; - var angles = [startAngle, endAngle]; - var halfPadAngle = dir4 * padAngle / 2; - normalizeArcAngles2(angles, !clockwise); - startAngle = angles[0], endAngle = angles[1]; - var layoutData = getSeriesLayoutData2(seriesModel); - layoutData.startAngle = startAngle; - layoutData.endAngle = endAngle; - layoutData.clockwise = clockwise; - var angleRange = Math.abs(endAngle - startAngle); - var restAngle = angleRange; - var valueSumLargerThanMinAngle = 0; - var currentAngle = startAngle; - data.setLayout({ - viewRect: viewRect3, - r - }); - data.each(valueDim, function(value, idx) { - var angle; - if (isNaN(value)) { - data.setItemLayout(idx, { - angle: NaN, - startAngle: NaN, - endAngle: NaN, - clockwise, - cx, - cy, - r0, - r: roseType ? NaN : r - }); - return; - } - if (roseType !== "area") { - angle = sum3 === 0 && stillShowZeroSum ? unitRadian : value * unitRadian; - } else { - angle = angleRange / validDataCount; - } - if (angle < minAndPadAngle) { - angle = minAndPadAngle; - restAngle -= minAndPadAngle; - } else { - valueSumLargerThanMinAngle += value; - } - var endAngle2 = currentAngle + dir4 * angle; - var actualStartAngle = 0; - var actualEndAngle = 0; - if (padAngle > angle) { - actualStartAngle = currentAngle + dir4 * angle / 2; - actualEndAngle = actualStartAngle; - } else { - actualStartAngle = currentAngle + halfPadAngle; - actualEndAngle = endAngle2 - halfPadAngle; - } - data.setItemLayout(idx, { - angle, - startAngle: actualStartAngle, - endAngle: actualEndAngle, - clockwise, - cx, - cy, - r0, - r: roseType ? linearMap4(value, extent4, [r0, r]) : r - }); - currentAngle = endAngle2; - }); - if (restAngle < PI2$8 && validDataCount) { - if (restAngle <= 1e-3) { - var angle_1 = angleRange / validDataCount; - data.each(valueDim, function(value, idx) { - if (!isNaN(value)) { - var layout_1 = data.getItemLayout(idx); - layout_1.angle = angle_1; - var actualStartAngle = 0; - var actualEndAngle = 0; - if (angle_1 < padAngle) { - actualStartAngle = startAngle + dir4 * (idx + 1 / 2) * angle_1; - actualEndAngle = actualStartAngle; - } else { - actualStartAngle = startAngle + dir4 * idx * angle_1 + halfPadAngle; - actualEndAngle = startAngle + dir4 * (idx + 1) * angle_1 - halfPadAngle; - } - layout_1.startAngle = actualStartAngle; - layout_1.endAngle = actualEndAngle; - } - }); - } else { - unitRadian = restAngle / valueSumLargerThanMinAngle; - currentAngle = startAngle; - data.each(valueDim, function(value, idx) { - if (!isNaN(value)) { - var layout_2 = data.getItemLayout(idx); - var angle = layout_2.angle === minAndPadAngle ? minAndPadAngle : value * unitRadian; - var actualStartAngle = 0; - var actualEndAngle = 0; - if (angle < padAngle) { - actualStartAngle = currentAngle + dir4 * angle / 2; - actualEndAngle = actualStartAngle; - } else { - actualStartAngle = currentAngle + halfPadAngle; - actualEndAngle = currentAngle + dir4 * angle - halfPadAngle; - } - layout_2.startAngle = actualStartAngle; - layout_2.endAngle = actualEndAngle; - currentAngle += dir4 * angle; - } - }); - } - } - }); - } - var getSeriesLayoutData2 = makeInner2(); - function dataFilter3(seriesType3) { - return { - seriesType: seriesType3, - reset: function(seriesModel, ecModel) { - var legendModels = ecModel.findComponents({ - mainType: "legend" - }); - if (!legendModels || !legendModels.length) { - return; - } - var data = seriesModel.getData(); - data.filterSelf(function(idx) { - var name = data.getName(idx); - for (var i2 = 0; i2 < legendModels.length; i2++) { - if (!legendModels[i2].isSelected(name)) { - return false; - } - } - return true; - }); - } - }; - } - var RADIAN$1 = Math.PI / 180; - function adjustSingleSide2(list, cx, cy, r, dir4, viewWidth, viewHeight, viewLeft, viewTop, farthestX) { - if (list.length < 2) { - return; - } - function recalculateXOnSemiToAlignOnEllipseCurve(semi) { - var rB = semi.rB; - var rB2 = rB * rB; - for (var i3 = 0; i3 < semi.list.length; i3++) { - var item = semi.list[i3]; - var dy = Math.abs(item.label.y - cy); - var rA = r + item.len; - var rA2 = rA * rA; - var dx2 = Math.sqrt(Math.abs((1 - dy * dy / rB2) * rA2)); - var newX = cx + (dx2 + item.len2) * dir4; - var deltaX = newX - item.label.x; - var newTargetWidth = item.targetTextWidth - deltaX * dir4; - constrainTextWidth2(item, newTargetWidth, true); - item.label.x = newX; - } - } - function recalculateX(items) { - var topSemi = { - list: [], - maxY: 0 - }; - var bottomSemi = { - list: [], - maxY: 0 - }; - for (var i3 = 0; i3 < items.length; i3++) { - if (items[i3].labelAlignTo !== "none") { - continue; - } - var item = items[i3]; - var semi = item.label.y > cy ? bottomSemi : topSemi; - var dy = Math.abs(item.label.y - cy); - if (dy >= semi.maxY) { - var dx2 = item.label.x - cx - item.len2 * dir4; - var rA = r + item.len; - var rB = Math.abs(dx2) < rA ? Math.sqrt(dy * dy / (1 - dx2 * dx2 / rA / rA)) : rA; - semi.rB = rB; - semi.maxY = dy; - } - semi.list.push(item); - } - recalculateXOnSemiToAlignOnEllipseCurve(topSemi); - recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi); - } - var len3 = list.length; - for (var i2 = 0; i2 < len3; i2++) { - if (list[i2].position === "outer" && list[i2].labelAlignTo === "labelLine") { - var dx = list[i2].label.x - farthestX; - list[i2].linePoints[1][0] += dx; - list[i2].label.x = farthestX; - } - } - if (shiftLayoutOnY2(list, viewTop, viewTop + viewHeight)) { - recalculateX(list); - } - } - function avoidOverlap2(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) { - var leftList = []; - var rightList = []; - var leftmostX = Number.MAX_VALUE; - var rightmostX = -Number.MAX_VALUE; - for (var i2 = 0; i2 < labelLayoutList.length; i2++) { - var label = labelLayoutList[i2].label; - if (isPositionCenter2(labelLayoutList[i2])) { - continue; - } - if (label.x < cx) { - leftmostX = Math.min(leftmostX, label.x); - leftList.push(labelLayoutList[i2]); - } else { - rightmostX = Math.max(rightmostX, label.x); - rightList.push(labelLayoutList[i2]); - } - } - for (var i2 = 0; i2 < labelLayoutList.length; i2++) { - var layout6 = labelLayoutList[i2]; - if (!isPositionCenter2(layout6) && layout6.linePoints) { - if (layout6.labelStyleWidth != null) { - continue; - } - var label = layout6.label; - var linePoints = layout6.linePoints; - var targetTextWidth = void 0; - if (layout6.labelAlignTo === "edge") { - if (label.x < cx) { - targetTextWidth = linePoints[2][0] - layout6.labelDistance - viewLeft - layout6.edgeDistance; - } else { - targetTextWidth = viewLeft + viewWidth - layout6.edgeDistance - linePoints[2][0] - layout6.labelDistance; - } - } else if (layout6.labelAlignTo === "labelLine") { - if (label.x < cx) { - targetTextWidth = leftmostX - viewLeft - layout6.bleedMargin; - } else { - targetTextWidth = viewLeft + viewWidth - rightmostX - layout6.bleedMargin; - } - } else { - if (label.x < cx) { - targetTextWidth = label.x - viewLeft - layout6.bleedMargin; - } else { - targetTextWidth = viewLeft + viewWidth - label.x - layout6.bleedMargin; - } - } - layout6.targetTextWidth = targetTextWidth; - constrainTextWidth2(layout6, targetTextWidth); - } - } - adjustSingleSide2(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX); - adjustSingleSide2(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX); - for (var i2 = 0; i2 < labelLayoutList.length; i2++) { - var layout6 = labelLayoutList[i2]; - if (!isPositionCenter2(layout6) && layout6.linePoints) { - var label = layout6.label; - var linePoints = layout6.linePoints; - var isAlignToEdge = layout6.labelAlignTo === "edge"; - var padding = label.style.padding; - var paddingH = padding ? padding[1] + padding[3] : 0; - var extraPaddingH = label.style.backgroundColor ? 0 : paddingH; - var realTextWidth = layout6.rect.width + extraPaddingH; - var dist4 = linePoints[1][0] - linePoints[2][0]; - if (isAlignToEdge) { - if (label.x < cx) { - linePoints[2][0] = viewLeft + layout6.edgeDistance + realTextWidth + layout6.labelDistance; - } else { - linePoints[2][0] = viewLeft + viewWidth - layout6.edgeDistance - realTextWidth - layout6.labelDistance; - } - } else { - if (label.x < cx) { - linePoints[2][0] = label.x + layout6.labelDistance; - } else { - linePoints[2][0] = label.x - layout6.labelDistance; - } - linePoints[1][0] = linePoints[2][0] + dist4; - } - linePoints[1][1] = linePoints[2][1] = label.y; - } - } - } - function constrainTextWidth2(layout6, availableWidth, forceRecalculate) { - if (forceRecalculate === void 0) { - forceRecalculate = false; - } - if (layout6.labelStyleWidth != null) { - return; - } - var label = layout6.label; - var style = label.style; - var textRect = layout6.rect; - var bgColor = style.backgroundColor; - var padding = style.padding; - var paddingH = padding ? padding[1] + padding[3] : 0; - var overflow = style.overflow; - var oldOuterWidth = textRect.width + (bgColor ? 0 : paddingH); - if (availableWidth < oldOuterWidth || forceRecalculate) { - var oldHeight = textRect.height; - if (overflow && overflow.match("break")) { - label.setStyle("backgroundColor", null); - label.setStyle("width", availableWidth - paddingH); - var innerRect = label.getBoundingRect(); - label.setStyle("width", Math.ceil(innerRect.width)); - label.setStyle("backgroundColor", bgColor); - } else { - var availableInnerWidth = availableWidth - paddingH; - var newWidth = availableWidth < oldOuterWidth ? availableInnerWidth : ( - // Current available width is enough, but the text may have - // already been wrapped with a smaller available width. - forceRecalculate ? availableInnerWidth > layout6.unconstrainedWidth ? null : availableInnerWidth : null - ); - label.setStyle("width", newWidth); - } - var newRect = label.getBoundingRect(); - textRect.width = newRect.width; - var margin = (label.style.margin || 0) + 2.1; - textRect.height = newRect.height + margin; - textRect.y -= (textRect.height - oldHeight) / 2; - } - } - function isPositionCenter2(sectorShape) { - return sectorShape.position === "center"; - } - function pieLabelLayout2(seriesModel) { - var data = seriesModel.getData(); - var labelLayoutList = []; - var cx; - var cy; - var hasLabelRotate = false; - var minShowLabelRadian = (seriesModel.get("minShowLabelAngle") || 0) * RADIAN$1; - var viewRect3 = data.getLayout("viewRect"); - var r = data.getLayout("r"); - var viewWidth = viewRect3.width; - var viewLeft = viewRect3.x; - var viewTop = viewRect3.y; - var viewHeight = viewRect3.height; - function setNotShow(el) { - el.ignore = true; - } - function isLabelShown(label2) { - if (!label2.ignore) { - return true; - } - for (var key in label2.states) { - if (label2.states[key].ignore === false) { - return true; - } - } - return false; - } - data.each(function(idx) { - var sector = data.getItemGraphicEl(idx); - var sectorShape = sector.shape; - var label2 = sector.getTextContent(); - var labelLine2 = sector.getTextGuideLine(); - var itemModel = data.getItemModel(idx); - var labelModel = itemModel.getModel("label"); - var labelPosition = labelModel.get("position") || itemModel.get(["emphasis", "label", "position"]); - var labelDistance = labelModel.get("distanceToLabelLine"); - var labelAlignTo = labelModel.get("alignTo"); - var edgeDistance = parsePercent$1(labelModel.get("edgeDistance"), viewWidth); - var bleedMargin = labelModel.get("bleedMargin"); - var labelLineModel = itemModel.getModel("labelLine"); - var labelLineLen = labelLineModel.get("length"); - labelLineLen = parsePercent$1(labelLineLen, viewWidth); - var labelLineLen2 = labelLineModel.get("length2"); - labelLineLen2 = parsePercent$1(labelLineLen2, viewWidth); - if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) { - each17(label2.states, setNotShow); - label2.ignore = true; - if (labelLine2) { - each17(labelLine2.states, setNotShow); - labelLine2.ignore = true; - } - return; - } - if (!isLabelShown(label2)) { - return; - } - var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2; - var nx = Math.cos(midAngle); - var ny = Math.sin(midAngle); - var textX; - var textY; - var linePoints2; - var textAlign; - cx = sectorShape.cx; - cy = sectorShape.cy; - var isLabelInside = labelPosition === "inside" || labelPosition === "inner"; - if (labelPosition === "center") { - textX = sectorShape.cx; - textY = sectorShape.cy; - textAlign = "center"; - } else { - var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx; - var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy; - textX = x1 + nx * 3; - textY = y1 + ny * 3; - if (!isLabelInside) { - var x2 = x1 + nx * (labelLineLen + r - sectorShape.r); - var y2 = y1 + ny * (labelLineLen + r - sectorShape.r); - var x3 = x2 + (nx < 0 ? -1 : 1) * labelLineLen2; - var y3 = y2; - if (labelAlignTo === "edge") { - textX = nx < 0 ? viewLeft + edgeDistance : viewLeft + viewWidth - edgeDistance; - } else { - textX = x3 + (nx < 0 ? -labelDistance : labelDistance); - } - textY = y3; - linePoints2 = [[x1, y1], [x2, y2], [x3, y3]]; - } - textAlign = isLabelInside ? "center" : labelAlignTo === "edge" ? nx > 0 ? "right" : "left" : nx > 0 ? "left" : "right"; - } - var PI12 = Math.PI; - var labelRotate = 0; - var rotate3 = labelModel.get("rotate"); - if (isNumber2(rotate3)) { - labelRotate = rotate3 * (PI12 / 180); - } else if (labelPosition === "center") { - labelRotate = 0; - } else if (rotate3 === "radial" || rotate3 === true) { - var radialAngle = nx < 0 ? -midAngle + PI12 : -midAngle; - labelRotate = radialAngle; - } else if (rotate3 === "tangential" && labelPosition !== "outside" && labelPosition !== "outer") { - var rad = Math.atan2(nx, ny); - if (rad < 0) { - rad = PI12 * 2 + rad; - } - var isDown = ny > 0; - if (isDown) { - rad = PI12 + rad; - } - labelRotate = rad - PI12; - } - hasLabelRotate = !!labelRotate; - label2.x = textX; - label2.y = textY; - label2.rotation = labelRotate; - label2.setStyle({ - verticalAlign: "middle" - }); - if (!isLabelInside) { - var textRect = label2.getBoundingRect().clone(); - textRect.applyTransform(label2.getComputedTransform()); - var margin = (label2.style.margin || 0) + 2.1; - textRect.y -= margin / 2; - textRect.height += margin; - labelLayoutList.push({ - label: label2, - labelLine: labelLine2, - position: labelPosition, - len: labelLineLen, - len2: labelLineLen2, - minTurnAngle: labelLineModel.get("minTurnAngle"), - maxSurfaceAngle: labelLineModel.get("maxSurfaceAngle"), - surfaceNormal: new Point2(nx, ny), - linePoints: linePoints2, - textAlign, - labelDistance, - labelAlignTo, - edgeDistance, - bleedMargin, - rect: textRect, - unconstrainedWidth: textRect.width, - labelStyleWidth: label2.style.width - }); - } else { - label2.setStyle({ - align: textAlign - }); - var selectState2 = label2.states.select; - if (selectState2) { - selectState2.x += label2.x; - selectState2.y += label2.y; - } - } - sector.setTextConfig({ - inside: isLabelInside - }); - }); - if (!hasLabelRotate && seriesModel.get("avoidLabelOverlap")) { - avoidOverlap2(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop); - } - for (var i2 = 0; i2 < labelLayoutList.length; i2++) { - var layout6 = labelLayoutList[i2]; - var label = layout6.label; - var labelLine = layout6.labelLine; - var notShowLabel = isNaN(label.x) || isNaN(label.y); - if (label) { - label.setStyle({ - align: layout6.textAlign - }); - if (notShowLabel) { - each17(label.states, setNotShow); - label.ignore = true; - } - var selectState = label.states.select; - if (selectState) { - selectState.x += label.x; - selectState.y += label.y; - } - } - if (labelLine) { - var linePoints = layout6.linePoints; - if (notShowLabel || !linePoints) { - each17(labelLine.states, setNotShow); - labelLine.ignore = true; - } else { - limitTurnAngle2(linePoints, layout6.minTurnAngle); - limitSurfaceAngle2(linePoints, layout6.surfaceNormal, layout6.maxSurfaceAngle); - labelLine.setShape({ - points: linePoints - }); - label.__hostTarget.textGuideLineConfig = { - anchor: new Point2(linePoints[0][0], linePoints[0][1]) - }; - } - } - } - } - var PiePiece2 = ( - /** @class */ - function(_super) { - __extends2(PiePiece3, _super); - function PiePiece3(data, idx, startAngle) { - var _this = _super.call(this) || this; - _this.z2 = 2; - var text = new ZRText2(); - _this.setTextContent(text); - _this.updateData(data, idx, startAngle, true); - return _this; - } - PiePiece3.prototype.updateData = function(data, idx, startAngle, firstCreate) { - var sector = this; - var seriesModel = data.hostModel; - var itemModel = data.getItemModel(idx); - var emphasisModel = itemModel.getModel("emphasis"); - var layout6 = data.getItemLayout(idx); - var sectorShape = extend3(getSectorCornerRadius2(itemModel.getModel("itemStyle"), layout6, true), layout6); - if (isNaN(sectorShape.startAngle)) { - sector.setShape(sectorShape); - return; - } - if (firstCreate) { - sector.setShape(sectorShape); - var animationType = seriesModel.getShallow("animationType"); - if (seriesModel.ecModel.ssr) { - initProps2(sector, { - scaleX: 0, - scaleY: 0 - }, seriesModel, { - dataIndex: idx, - isFrom: true - }); - sector.originX = sectorShape.cx; - sector.originY = sectorShape.cy; - } else if (animationType === "scale") { - sector.shape.r = layout6.r0; - initProps2(sector, { - shape: { - r: layout6.r - } - }, seriesModel, idx); - } else { - if (startAngle != null) { - sector.setShape({ - startAngle, - endAngle: startAngle - }); - initProps2(sector, { - shape: { - startAngle: layout6.startAngle, - endAngle: layout6.endAngle - } - }, seriesModel, idx); - } else { - sector.shape.endAngle = layout6.startAngle; - updateProps3(sector, { - shape: { - endAngle: layout6.endAngle - } - }, seriesModel, idx); - } - } - } else { - saveOldStyle2(sector); - updateProps3(sector, { - shape: sectorShape - }, seriesModel, idx); - } - sector.useStyle(data.getItemVisual(idx, "style")); - setStatesStylesFromModel2(sector, itemModel); - var midAngle = (layout6.startAngle + layout6.endAngle) / 2; - var offset3 = seriesModel.get("selectedOffset"); - var dx = Math.cos(midAngle) * offset3; - var dy = Math.sin(midAngle) * offset3; - var cursorStyle = itemModel.getShallow("cursor"); - cursorStyle && sector.attr("cursor", cursorStyle); - this._updateLabel(seriesModel, data, idx); - sector.ensureState("emphasis").shape = extend3({ - r: layout6.r + (emphasisModel.get("scale") ? emphasisModel.get("scaleSize") || 0 : 0) - }, getSectorCornerRadius2(emphasisModel.getModel("itemStyle"), layout6)); - extend3(sector.ensureState("select"), { - x: dx, - y: dy, - shape: getSectorCornerRadius2(itemModel.getModel(["select", "itemStyle"]), layout6) - }); - extend3(sector.ensureState("blur"), { - shape: getSectorCornerRadius2(itemModel.getModel(["blur", "itemStyle"]), layout6) - }); - var labelLine = sector.getTextGuideLine(); - var labelText = sector.getTextContent(); - labelLine && extend3(labelLine.ensureState("select"), { - x: dx, - y: dy - }); - extend3(labelText.ensureState("select"), { - x: dx, - y: dy - }); - toggleHoverEmphasis2(this, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - }; - PiePiece3.prototype._updateLabel = function(seriesModel, data, idx) { - var sector = this; - var itemModel = data.getItemModel(idx); - var labelLineModel = itemModel.getModel("labelLine"); - var style = data.getItemVisual(idx, "style"); - var visualColor = style && style.fill; - var visualOpacity = style && style.opacity; - setLabelStyle2(sector, getLabelStatesModels2(itemModel), { - labelFetcher: data.hostModel, - labelDataIndex: idx, - inheritColor: visualColor, - defaultOpacity: visualOpacity, - defaultText: seriesModel.getFormattedLabel(idx, "normal") || data.getName(idx) - }); - var labelText = sector.getTextContent(); - sector.setTextConfig({ - // reset position, rotation - position: null, - rotation: null - }); - labelText.attr({ - z2: 10 - }); - var labelPosition = seriesModel.get(["label", "position"]); - if (labelPosition !== "outside" && labelPosition !== "outer") { - sector.removeTextGuideLine(); - } else { - var polyline = this.getTextGuideLine(); - if (!polyline) { - polyline = new Polyline3(); - this.setTextGuideLine(polyline); - } - setLabelLineStyle2(this, getLabelLineStatesModels2(itemModel), { - stroke: visualColor, - opacity: retrieve32(labelLineModel.get(["lineStyle", "opacity"]), visualOpacity, 1) - }); - } - }; - return PiePiece3; - }(Sector2) - ); - var PieView2 = ( - /** @class */ - function(_super) { - __extends2(PieView3, _super); - function PieView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ignoreLabelLineUpdate = true; - return _this; - } - PieView3.prototype.render = function(seriesModel, ecModel, api, payload) { - var data = seriesModel.getData(); - var oldData = this._data; - var group = this.group; - var startAngle; - if (!oldData && data.count() > 0) { - var shape = data.getItemLayout(0); - for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) { - shape = data.getItemLayout(s); - } - if (shape) { - startAngle = shape.startAngle; - } - } - if (this._emptyCircleSector) { - group.remove(this._emptyCircleSector); - } - if (data.count() === 0 && seriesModel.get("showEmptyCircle")) { - var layoutData = getSeriesLayoutData2(seriesModel); - var sector = new Sector2({ - shape: extend3(getBasicPieLayout2(seriesModel, api), layoutData) - }); - sector.useStyle(seriesModel.getModel("emptyCircleStyle").getItemStyle()); - this._emptyCircleSector = sector; - group.add(sector); - } - data.diff(oldData).add(function(idx) { - var piePiece = new PiePiece2(data, idx, startAngle); - data.setItemGraphicEl(idx, piePiece); - group.add(piePiece); - }).update(function(newIdx, oldIdx) { - var piePiece = oldData.getItemGraphicEl(oldIdx); - piePiece.updateData(data, newIdx, startAngle); - piePiece.off("click"); - group.add(piePiece); - data.setItemGraphicEl(newIdx, piePiece); - }).remove(function(idx) { - var piePiece = oldData.getItemGraphicEl(idx); - removeElementWithFadeOut2(piePiece, seriesModel, idx); - }).execute(); - pieLabelLayout2(seriesModel); - if (seriesModel.get("animationTypeUpdate") !== "expansion") { - this._data = data; - } - }; - PieView3.prototype.dispose = function() { - }; - PieView3.prototype.containPoint = function(point, seriesModel) { - var data = seriesModel.getData(); - var itemLayout = data.getItemLayout(0); - if (itemLayout) { - var dx = point[0] - itemLayout.cx; - var dy = point[1] - itemLayout.cy; - var radius = Math.sqrt(dx * dx + dy * dy); - return radius <= itemLayout.r && radius >= itemLayout.r0; - } - }; - PieView3.type = "pie"; - return PieView3; - }(ChartView2) - ); - function createSeriesDataSimply2(seriesModel, opt, nameList) { - opt = isArray3(opt) && { - coordDimensions: opt - } || extend3({ - encodeDefine: seriesModel.getEncode() - }, opt); - var source = seriesModel.getSource(); - var dimensions = prepareSeriesDataSchema2(source, opt).dimensions; - var list = new SeriesData2(dimensions, seriesModel); - list.initData(source, nameList); - return list; - } - var LegendVisualProvider2 = ( - /** @class */ - function() { - function LegendVisualProvider3(getDataWithEncodedVisual, getRawData3) { - this._getDataWithEncodedVisual = getDataWithEncodedVisual; - this._getRawData = getRawData3; - } - LegendVisualProvider3.prototype.getAllNames = function() { - var rawData = this._getRawData(); - return rawData.mapArray(rawData.getName); - }; - LegendVisualProvider3.prototype.containName = function(name) { - var rawData = this._getRawData(); - return rawData.indexOfName(name) >= 0; - }; - LegendVisualProvider3.prototype.indexOfName = function(name) { - var dataWithEncodedVisual = this._getDataWithEncodedVisual(); - return dataWithEncodedVisual.indexOfName(name); - }; - LegendVisualProvider3.prototype.getItemVisual = function(dataIndex, key) { - var dataWithEncodedVisual = this._getDataWithEncodedVisual(); - return dataWithEncodedVisual.getItemVisual(dataIndex, key); - }; - return LegendVisualProvider3; - }() - ); - var innerData2 = makeInner2(); - var PieSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(PieSeriesModel3, _super); - function PieSeriesModel3() { - return _super !== null && _super.apply(this, arguments) || this; - } - PieSeriesModel3.prototype.init = function(option) { - _super.prototype.init.apply(this, arguments); - this.legendVisualProvider = new LegendVisualProvider2(bind3(this.getData, this), bind3(this.getRawData, this)); - this._defaultLabelLine(option); - }; - PieSeriesModel3.prototype.mergeOption = function() { - _super.prototype.mergeOption.apply(this, arguments); - }; - PieSeriesModel3.prototype.getInitialData = function() { - return createSeriesDataSimply2(this, { - coordDimensions: ["value"], - encodeDefaulter: curry3(makeSeriesEncodeForNameBased2, this) - }); - }; - PieSeriesModel3.prototype.getDataParams = function(dataIndex) { - var data = this.getData(); - var dataInner = innerData2(data); - var seats = dataInner.seats; - if (!seats) { - var valueList_1 = []; - data.each(data.mapDimension("value"), function(value) { - valueList_1.push(value); - }); - seats = dataInner.seats = getPercentSeats2(valueList_1, data.hostModel.get("percentPrecision")); - } - var params = _super.prototype.getDataParams.call(this, dataIndex); - params.percent = seats[dataIndex] || 0; - params.$vars.push("percent"); - return params; - }; - PieSeriesModel3.prototype._defaultLabelLine = function(option) { - defaultEmphasis2(option, "labelLine", ["show"]); - var labelLineNormalOpt = option.labelLine; - var labelLineEmphasisOpt = option.emphasis.labelLine; - labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show; - labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show; - }; - PieSeriesModel3.type = "series.pie"; - PieSeriesModel3.defaultOption = { - // zlevel: 0, - z: 2, - legendHoverLink: true, - colorBy: "data", - // 默认全局居中 - center: ["50%", "50%"], - radius: [0, "75%"], - // 默认顺时针 - clockwise: true, - startAngle: 90, - endAngle: "auto", - padAngle: 0, - // 最小角度改为0 - minAngle: 0, - // If the angle of a sector less than `minShowLabelAngle`, - // the label will not be displayed. - minShowLabelAngle: 0, - // 选中时扇区偏移量 - selectedOffset: 10, - // 选择模式,默认关闭,可选single,multiple - // selectedMode: false, - // 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积) - // roseType: null, - percentPrecision: 2, - // If still show when all data zero. - stillShowZeroSum: true, - // cursor: null, - left: 0, - top: 0, - right: 0, - bottom: 0, - width: null, - height: null, - label: { - // color: 'inherit', - // If rotate around circle - rotate: 0, - show: true, - overflow: "truncate", - // 'outer', 'inside', 'center' - position: "outer", - // 'none', 'labelLine', 'edge'. Works only when position is 'outer' - alignTo: "none", - // Closest distance between label and chart edge. - // Works only position is 'outer' and alignTo is 'edge'. - edgeDistance: "25%", - // Works only position is 'outer' and alignTo is not 'edge'. - bleedMargin: 10, - // Distance between text and label line. - distanceToLabelLine: 5 - // formatter: 标签文本格式器,同 tooltip.formatter,不支持异步回调 - // 默认使用全局文本样式,详见 textStyle - // distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数 - }, - // Enabled when label.normal.position is 'outer' - labelLine: { - show: true, - // 引导线两段中的第一段长度 - length: 15, - // 引导线两段中的第二段长度 - length2: 15, - smooth: false, - minTurnAngle: 90, - maxSurfaceAngle: 90, - lineStyle: { - // color: 各异, - width: 1, - type: "solid" - } - }, - itemStyle: { - borderWidth: 1, - borderJoin: "round" - }, - showEmptyCircle: true, - emptyCircleStyle: { - color: "lightgray", - opacity: 1 - }, - labelLayout: { - // Hide the overlapped label. - hideOverlap: true - }, - emphasis: { - scale: true, - scaleSize: 5 - }, - // If use strategy to avoid label overlapping - avoidLabelOverlap: true, - // Animation type. Valid values: expansion, scale - animationType: "expansion", - animationDuration: 1e3, - // Animation type when update. Valid values: transition, expansion - animationTypeUpdate: "transition", - animationEasingUpdate: "cubicInOut", - animationDurationUpdate: 500, - animationEasing: "cubicInOut" - }; - return PieSeriesModel3; - }(SeriesModel2) - ); - function negativeDataFilter2(seriesType3) { - return { - seriesType: seriesType3, - reset: function(seriesModel, ecModel) { - var data = seriesModel.getData(); - data.filterSelf(function(idx) { - var valueDim = data.mapDimension("value"); - var curValue = data.get(valueDim, idx); - if (isNumber2(curValue) && !isNaN(curValue) && curValue < 0) { - return false; - } - return true; - }); - } - }; - } - function install$4(registers) { - registers.registerChartView(PieView2); - registers.registerSeriesModel(PieSeriesModel2); - createLegacyDataSelectAction2("pie", registers.registerAction); - registers.registerLayout(curry3(pieLayout2, "pie")); - registers.registerProcessor(dataFilter3("pie")); - registers.registerProcessor(negativeDataFilter2("pie")); - } - var ScatterSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(ScatterSeriesModel3, _super); - function ScatterSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ScatterSeriesModel3.type; - _this.hasSymbolVisual = true; - return _this; - } - ScatterSeriesModel3.prototype.getInitialData = function(option, ecModel) { - return createSeriesData2(null, this, { - useEncodeDefaulter: true - }); - }; - ScatterSeriesModel3.prototype.getProgressive = function() { - var progressive = this.option.progressive; - if (progressive == null) { - return this.option.large ? 5e3 : this.get("progressive"); - } - return progressive; - }; - ScatterSeriesModel3.prototype.getProgressiveThreshold = function() { - var progressiveThreshold = this.option.progressiveThreshold; - if (progressiveThreshold == null) { - return this.option.large ? 1e4 : this.get("progressiveThreshold"); - } - return progressiveThreshold; - }; - ScatterSeriesModel3.prototype.brushSelector = function(dataIndex, data, selectors) { - return selectors.point(data.getItemLayout(dataIndex)); - }; - ScatterSeriesModel3.prototype.getZLevelKey = function() { - return this.getData().count() > this.getProgressiveThreshold() ? this.id : ""; - }; - ScatterSeriesModel3.type = "series.scatter"; - ScatterSeriesModel3.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"]; - ScatterSeriesModel3.defaultOption = { - coordinateSystem: "cartesian2d", - // zlevel: 0, - z: 2, - legendHoverLink: true, - symbolSize: 10, - // symbolRotate: null, // 图形旋转控制 - large: false, - // Available when large is true - largeThreshold: 2e3, - // cursor: null, - itemStyle: { - opacity: 0.8 - // color: 各异 - }, - emphasis: { - scale: true - }, - // If clip the overflow graphics - // Works on cartesian / polar series - clip: true, - select: { - itemStyle: { - borderColor: "#212121" - } - }, - universalTransition: { - divideShape: "clone" - } - // progressive: null - }; - return ScatterSeriesModel3; - }(SeriesModel2) - ); - var BOOST_SIZE_THRESHOLD2 = 4; - var LargeSymbolPathShape2 = ( - /** @class */ - /* @__PURE__ */ function() { - function LargeSymbolPathShape3() { - } - return LargeSymbolPathShape3; - }() - ); - var LargeSymbolPath2 = ( - /** @class */ - function(_super) { - __extends2(LargeSymbolPath3, _super); - function LargeSymbolPath3(opts) { - var _this = _super.call(this, opts) || this; - _this._off = 0; - _this.hoverDataIdx = -1; - return _this; - } - LargeSymbolPath3.prototype.getDefaultShape = function() { - return new LargeSymbolPathShape2(); - }; - LargeSymbolPath3.prototype.reset = function() { - this.notClear = false; - this._off = 0; - }; - LargeSymbolPath3.prototype.buildPath = function(path, shape) { - var points5 = shape.points; - var size2 = shape.size; - var symbolProxy = this.symbolProxy; - var symbolProxyShape = symbolProxy.shape; - var ctx = path.getContext ? path.getContext() : path; - var canBoost = ctx && size2[0] < BOOST_SIZE_THRESHOLD2; - var softClipShape = this.softClipShape; - var i2; - if (canBoost) { - this._ctx = ctx; - return; - } - this._ctx = null; - for (i2 = this._off; i2 < points5.length; ) { - var x = points5[i2++]; - var y = points5[i2++]; - if (isNaN(x) || isNaN(y)) { - continue; - } - if (softClipShape && !softClipShape.contain(x, y)) { - continue; - } - symbolProxyShape.x = x - size2[0] / 2; - symbolProxyShape.y = y - size2[1] / 2; - symbolProxyShape.width = size2[0]; - symbolProxyShape.height = size2[1]; - symbolProxy.buildPath(path, symbolProxyShape, true); - } - if (this.incremental) { - this._off = i2; - this.notClear = true; - } - }; - LargeSymbolPath3.prototype.afterBrush = function() { - var shape = this.shape; - var points5 = shape.points; - var size2 = shape.size; - var ctx = this._ctx; - var softClipShape = this.softClipShape; - var i2; - if (!ctx) { - return; - } - for (i2 = this._off; i2 < points5.length; ) { - var x = points5[i2++]; - var y = points5[i2++]; - if (isNaN(x) || isNaN(y)) { - continue; - } - if (softClipShape && !softClipShape.contain(x, y)) { - continue; - } - ctx.fillRect(x - size2[0] / 2, y - size2[1] / 2, size2[0], size2[1]); - } - if (this.incremental) { - this._off = i2; - this.notClear = true; - } - }; - LargeSymbolPath3.prototype.findDataIndex = function(x, y) { - var shape = this.shape; - var points5 = shape.points; - var size2 = shape.size; - var w = Math.max(size2[0], 4); - var h = Math.max(size2[1], 4); - for (var idx = points5.length / 2 - 1; idx >= 0; idx--) { - var i2 = idx * 2; - var x0 = points5[i2] - w / 2; - var y0 = points5[i2 + 1] - h / 2; - if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) { - return idx; - } - } - return -1; - }; - LargeSymbolPath3.prototype.contain = function(x, y) { - var localPos = this.transformCoordToLocal(x, y); - var rect = this.getBoundingRect(); - x = localPos[0]; - y = localPos[1]; - if (rect.contain(x, y)) { - var dataIdx = this.hoverDataIdx = this.findDataIndex(x, y); - return dataIdx >= 0; - } - this.hoverDataIdx = -1; - return false; - }; - LargeSymbolPath3.prototype.getBoundingRect = function() { - var rect = this._rect; - if (!rect) { - var shape = this.shape; - var points5 = shape.points; - var size2 = shape.size; - var w = size2[0]; - var h = size2[1]; - var minX = Infinity; - var minY = Infinity; - var maxX = -Infinity; - var maxY = -Infinity; - for (var i2 = 0; i2 < points5.length; ) { - var x = points5[i2++]; - var y = points5[i2++]; - minX = Math.min(x, minX); - maxX = Math.max(x, maxX); - minY = Math.min(y, minY); - maxY = Math.max(y, maxY); - } - rect = this._rect = new BoundingRect2(minX - w / 2, minY - h / 2, maxX - minX + w, maxY - minY + h); - } - return rect; - }; - return LargeSymbolPath3; - }(Path2) - ); - var LargeSymbolDraw2 = ( - /** @class */ - function() { - function LargeSymbolDraw3() { - this.group = new Group5(); - } - LargeSymbolDraw3.prototype.updateData = function(data, opt) { - this._clear(); - var symbolEl = this._create(); - symbolEl.setShape({ - points: data.getLayout("points") - }); - this._setCommon(symbolEl, data, opt); - }; - LargeSymbolDraw3.prototype.updateLayout = function(data) { - var points5 = data.getLayout("points"); - this.group.eachChild(function(child) { - if (child.startIndex != null) { - var len3 = (child.endIndex - child.startIndex) * 2; - var byteOffset = child.startIndex * 4 * 2; - points5 = new Float32Array(points5.buffer, byteOffset, len3); - } - child.setShape("points", points5); - child.reset(); - }); - }; - LargeSymbolDraw3.prototype.incrementalPrepareUpdate = function(data) { - this._clear(); - }; - LargeSymbolDraw3.prototype.incrementalUpdate = function(taskParams, data, opt) { - var lastAdded = this._newAdded[0]; - var points5 = data.getLayout("points"); - var oldPoints = lastAdded && lastAdded.shape.points; - if (oldPoints && oldPoints.length < 2e4) { - var oldLen = oldPoints.length; - var newPoints = new Float32Array(oldLen + points5.length); - newPoints.set(oldPoints); - newPoints.set(points5, oldLen); - lastAdded.endIndex = taskParams.end; - lastAdded.setShape({ - points: newPoints - }); - } else { - this._newAdded = []; - var symbolEl = this._create(); - symbolEl.startIndex = taskParams.start; - symbolEl.endIndex = taskParams.end; - symbolEl.incremental = true; - symbolEl.setShape({ - points: points5 - }); - this._setCommon(symbolEl, data, opt); - } - }; - LargeSymbolDraw3.prototype.eachRendered = function(cb) { - this._newAdded[0] && cb(this._newAdded[0]); - }; - LargeSymbolDraw3.prototype._create = function() { - var symbolEl = new LargeSymbolPath2({ - cursor: "default" - }); - symbolEl.ignoreCoarsePointer = true; - this.group.add(symbolEl); - this._newAdded.push(symbolEl); - return symbolEl; - }; - LargeSymbolDraw3.prototype._setCommon = function(symbolEl, data, opt) { - var hostModel = data.hostModel; - opt = opt || {}; - var size2 = data.getVisual("symbolSize"); - symbolEl.setShape("size", size2 instanceof Array ? size2 : [size2, size2]); - symbolEl.softClipShape = opt.clipShape || null; - symbolEl.symbolProxy = createSymbol3(data.getVisual("symbol"), 0, 0, 0, 0); - symbolEl.setColor = symbolEl.symbolProxy.setColor; - var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD2; - symbolEl.useStyle( - // Draw shadow when doing fillRect is extremely slow. - hostModel.getModel("itemStyle").getItemStyle(extrudeShadow ? ["color", "shadowBlur", "shadowColor"] : ["color"]) - ); - var globalStyle = data.getVisual("style"); - var visualColor = globalStyle && globalStyle.fill; - if (visualColor) { - symbolEl.setColor(visualColor); - } - var ecData = getECData2(symbolEl); - ecData.seriesIndex = hostModel.seriesIndex; - symbolEl.on("mousemove", function(e3) { - ecData.dataIndex = null; - var dataIndex = symbolEl.hoverDataIdx; - if (dataIndex >= 0) { - ecData.dataIndex = dataIndex + (symbolEl.startIndex || 0); - } - }); - }; - LargeSymbolDraw3.prototype.remove = function() { - this._clear(); - }; - LargeSymbolDraw3.prototype._clear = function() { - this._newAdded = []; - this.group.removeAll(); - }; - return LargeSymbolDraw3; - }() - ); - var ScatterView2 = ( - /** @class */ - function(_super) { - __extends2(ScatterView3, _super); - function ScatterView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ScatterView3.type; - return _this; - } - ScatterView3.prototype.render = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var symbolDraw = this._updateSymbolDraw(data, seriesModel); - symbolDraw.updateData(data, { - // TODO - // If this parameter should be a shape or a bounding volume - // shape will be more general. - // But bounding volume like bounding rect will be much faster in the contain calculation - clipShape: this._getClipShape(seriesModel) - }); - this._finished = true; - }; - ScatterView3.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var symbolDraw = this._updateSymbolDraw(data, seriesModel); - symbolDraw.incrementalPrepareUpdate(data); - this._finished = false; - }; - ScatterView3.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) { - this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), { - clipShape: this._getClipShape(seriesModel) - }); - this._finished = taskParams.end === seriesModel.getData().count(); - }; - ScatterView3.prototype.updateTransform = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - this.group.dirty(); - if (!this._finished || data.count() > 1e4) { - return { - update: true - }; - } else { - var res = pointsLayout2("").reset(seriesModel, ecModel, api); - if (res.progress) { - res.progress({ - start: 0, - end: data.count(), - count: data.count() - }, data); - } - this._symbolDraw.updateLayout(data); - } - }; - ScatterView3.prototype.eachRendered = function(cb) { - this._symbolDraw && this._symbolDraw.eachRendered(cb); - }; - ScatterView3.prototype._getClipShape = function(seriesModel) { - if (!seriesModel.get("clip", true)) { - return; - } - var coordSys = seriesModel.coordinateSystem; - return coordSys && coordSys.getArea && coordSys.getArea(0.1); - }; - ScatterView3.prototype._updateSymbolDraw = function(data, seriesModel) { - var symbolDraw = this._symbolDraw; - var pipelineContext = seriesModel.pipelineContext; - var isLargeDraw = pipelineContext.large; - if (!symbolDraw || isLargeDraw !== this._isLargeDraw) { - symbolDraw && symbolDraw.remove(); - symbolDraw = this._symbolDraw = isLargeDraw ? new LargeSymbolDraw2() : new SymbolDraw2(); - this._isLargeDraw = isLargeDraw; - this.group.removeAll(); - } - this.group.add(symbolDraw.group); - return symbolDraw; - }; - ScatterView3.prototype.remove = function(ecModel, api) { - this._symbolDraw && this._symbolDraw.remove(true); - this._symbolDraw = null; - }; - ScatterView3.prototype.dispose = function() { - }; - ScatterView3.type = "scatter"; - return ScatterView3; - }(ChartView2) - ); - var GridModel2 = ( - /** @class */ - function(_super) { - __extends2(GridModel3, _super); - function GridModel3() { - return _super !== null && _super.apply(this, arguments) || this; - } - GridModel3.type = "grid"; - GridModel3.dependencies = ["xAxis", "yAxis"]; - GridModel3.layoutMode = "box"; - GridModel3.defaultOption = { - show: false, - // zlevel: 0, - z: 0, - left: "10%", - top: 60, - right: "10%", - bottom: 70, - // If grid size contain label - containLabel: false, - // width: {totalWidth} - left - right, - // height: {totalHeight} - top - bottom, - backgroundColor: "rgba(0,0,0,0)", - borderWidth: 1, - borderColor: "#ccc" - }; - return GridModel3; - }(ComponentModel2) - ); - var CartesianAxisModel2 = ( - /** @class */ - function(_super) { - __extends2(CartesianAxisModel3, _super); - function CartesianAxisModel3() { - return _super !== null && _super.apply(this, arguments) || this; - } - CartesianAxisModel3.prototype.getCoordSysModel = function() { - return this.getReferringComponents("grid", SINGLE_REFERRING2).models[0]; - }; - CartesianAxisModel3.type = "cartesian2dAxis"; - return CartesianAxisModel3; - }(ComponentModel2) - ); - mixin2(CartesianAxisModel2, AxisModelCommonMixin2); - var defaultOption3 = { - show: true, - // zlevel: 0, - z: 0, - // Inverse the axis. - inverse: false, - // Axis name displayed. - name: "", - // 'start' | 'middle' | 'end' - nameLocation: "end", - // By degree. By default auto rotate by nameLocation. - nameRotate: null, - nameTruncate: { - maxWidth: null, - ellipsis: "...", - placeholder: "." - }, - // Use global text style by default. - nameTextStyle: {}, - // The gap between axisName and axisLine. - nameGap: 15, - // Default `false` to support tooltip. - silent: false, - // Default `false` to avoid legacy user event listener fail. - triggerEvent: false, - tooltip: { - show: false - }, - axisPointer: {}, - axisLine: { - show: true, - onZero: true, - onZeroAxisIndex: null, - lineStyle: { - color: "#6E7079", - width: 1, - type: "solid" - }, - // The arrow at both ends the the axis. - symbol: ["none", "none"], - symbolSize: [10, 15] - }, - axisTick: { - show: true, - // Whether axisTick is inside the grid or outside the grid. - inside: false, - // The length of axisTick. - length: 5, - lineStyle: { - width: 1 - } - }, - axisLabel: { - show: true, - // Whether axisLabel is inside the grid or outside the grid. - inside: false, - rotate: 0, - // true | false | null/undefined (auto) - showMinLabel: null, - // true | false | null/undefined (auto) - showMaxLabel: null, - margin: 8, - // formatter: null, - fontSize: 12 - }, - splitLine: { - show: true, - showMinLine: true, - showMaxLine: true, - lineStyle: { - color: ["#E0E6F1"], - width: 1, - type: "solid" - } - }, - splitArea: { - show: false, - areaStyle: { - color: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"] - } - } - }; - var categoryAxis2 = merge2({ - // The gap at both ends of the axis. For categoryAxis, boolean. - boundaryGap: true, - // Set false to faster category collection. - deduplication: null, - // splitArea: { - // show: false - // }, - splitLine: { - show: false - }, - axisTick: { - // If tick is align with label when boundaryGap is true - alignWithLabel: false, - interval: "auto" - }, - axisLabel: { - interval: "auto" - } - }, defaultOption3); - var valueAxis2 = merge2({ - boundaryGap: [0, 0], - axisLine: { - // Not shown when other axis is categoryAxis in cartesian - show: "auto" - }, - axisTick: { - // Not shown when other axis is categoryAxis in cartesian - show: "auto" - }, - // TODO - // min/max: [30, datamin, 60] or [20, datamin] or [datamin, 60] - splitNumber: 5, - minorTick: { - // Minor tick, not available for cateogry axis. - show: false, - // Split number of minor ticks. The value should be in range of (0, 100) - splitNumber: 5, - // Length of minor tick - length: 3, - // Line style - lineStyle: { - // Default to be same with axisTick - } - }, - minorSplitLine: { - show: false, - lineStyle: { - color: "#F4F7FD", - width: 1 - } - } - }, defaultOption3); - var timeAxis2 = merge2({ - splitNumber: 6, - axisLabel: { - // To eliminate labels that are not nice - showMinLabel: false, - showMaxLabel: false, - rich: { - primary: { - fontWeight: "bold" - } - } - }, - splitLine: { - show: false - } - }, valueAxis2); - var logAxis2 = defaults2({ - logBase: 10 - }, valueAxis2); - var axisDefault = { - category: categoryAxis2, - value: valueAxis2, - time: timeAxis2, - log: logAxis2 - }; - var AXIS_TYPES2 = { - value: 1, - category: 1, - time: 1, - log: 1 - }; - function axisModelCreator2(registers, axisName, BaseAxisModelClass, extraDefaultOption) { - each17(AXIS_TYPES2, function(v, axisType) { - var defaultOption4 = merge2(merge2({}, axisDefault[axisType], true), extraDefaultOption, true); - var AxisModel = ( - /** @class */ - function(_super) { - __extends2(AxisModel2, _super); - function AxisModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = axisName + "Axis." + axisType; - return _this; - } - AxisModel2.prototype.mergeDefaultAndTheme = function(option, ecModel) { - var layoutMode = fetchLayoutMode2(this); - var inputPositionParams = layoutMode ? getLayoutParams2(option) : {}; - var themeModel = ecModel.getTheme(); - merge2(option, themeModel.get(axisType + "Axis")); - merge2(option, this.getDefaultOption()); - option.type = getAxisType2(option); - if (layoutMode) { - mergeLayoutParam2(option, inputPositionParams, layoutMode); - } - }; - AxisModel2.prototype.optionUpdated = function() { - var thisOption = this.option; - if (thisOption.type === "category") { - this.__ordinalMeta = OrdinalMeta2.createByAxisModel(this); - } - }; - AxisModel2.prototype.getCategories = function(rawData) { - var option = this.option; - if (option.type === "category") { - if (rawData) { - return option.data; - } - return this.__ordinalMeta.categories; - } - }; - AxisModel2.prototype.getOrdinalMeta = function() { - return this.__ordinalMeta; - }; - AxisModel2.type = axisName + "Axis." + axisType; - AxisModel2.defaultOption = defaultOption4; - return AxisModel2; - }(BaseAxisModelClass) - ); - registers.registerComponentModel(AxisModel); - }); - registers.registerSubTypeDefaulter(axisName + "Axis", getAxisType2); - } - function getAxisType2(option) { - return option.type || (option.data ? "category" : "value"); - } - var Cartesian2 = ( - /** @class */ - function() { - function Cartesian3(name) { - this.type = "cartesian"; - this._dimList = []; - this._axes = {}; - this.name = name || ""; - } - Cartesian3.prototype.getAxis = function(dim) { - return this._axes[dim]; - }; - Cartesian3.prototype.getAxes = function() { - return map3(this._dimList, function(dim) { - return this._axes[dim]; - }, this); - }; - Cartesian3.prototype.getAxesByScale = function(scaleType) { - scaleType = scaleType.toLowerCase(); - return filter2(this.getAxes(), function(axis) { - return axis.scale.type === scaleType; - }); - }; - Cartesian3.prototype.addAxis = function(axis) { - var dim = axis.dim; - this._axes[dim] = axis; - this._dimList.push(dim); - }; - return Cartesian3; - }() - ); - var cartesian2DDimensions2 = ["x", "y"]; - function canCalculateAffineTransform2(scale5) { - return scale5.type === "interval" || scale5.type === "time"; - } - var Cartesian2D2 = ( - /** @class */ - function(_super) { - __extends2(Cartesian2D3, _super); - function Cartesian2D3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "cartesian2d"; - _this.dimensions = cartesian2DDimensions2; - return _this; - } - Cartesian2D3.prototype.calcAffineTransform = function() { - this._transform = this._invTransform = null; - var xAxisScale = this.getAxis("x").scale; - var yAxisScale = this.getAxis("y").scale; - if (!canCalculateAffineTransform2(xAxisScale) || !canCalculateAffineTransform2(yAxisScale)) { - return; - } - var xScaleExtent = xAxisScale.getExtent(); - var yScaleExtent = yAxisScale.getExtent(); - var start4 = this.dataToPoint([xScaleExtent[0], yScaleExtent[0]]); - var end3 = this.dataToPoint([xScaleExtent[1], yScaleExtent[1]]); - var xScaleSpan = xScaleExtent[1] - xScaleExtent[0]; - var yScaleSpan = yScaleExtent[1] - yScaleExtent[0]; - if (!xScaleSpan || !yScaleSpan) { - return; - } - var scaleX = (end3[0] - start4[0]) / xScaleSpan; - var scaleY = (end3[1] - start4[1]) / yScaleSpan; - var translateX = start4[0] - xScaleExtent[0] * scaleX; - var translateY = start4[1] - yScaleExtent[0] * scaleY; - var m3 = this._transform = [scaleX, 0, 0, scaleY, translateX, translateY]; - this._invTransform = invert2([], m3); - }; - Cartesian2D3.prototype.getBaseAxis = function() { - return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x"); - }; - Cartesian2D3.prototype.containPoint = function(point) { - var axisX = this.getAxis("x"); - var axisY = this.getAxis("y"); - return axisX.contain(axisX.toLocalCoord(point[0])) && axisY.contain(axisY.toLocalCoord(point[1])); - }; - Cartesian2D3.prototype.containData = function(data) { - return this.getAxis("x").containData(data[0]) && this.getAxis("y").containData(data[1]); - }; - Cartesian2D3.prototype.containZone = function(data1, data2) { - var zoneDiag1 = this.dataToPoint(data1); - var zoneDiag2 = this.dataToPoint(data2); - var area = this.getArea(); - var zone = new BoundingRect2(zoneDiag1[0], zoneDiag1[1], zoneDiag2[0] - zoneDiag1[0], zoneDiag2[1] - zoneDiag1[1]); - return area.intersect(zone); - }; - Cartesian2D3.prototype.dataToPoint = function(data, clamp4, out3) { - out3 = out3 || []; - var xVal = data[0]; - var yVal = data[1]; - if (this._transform && xVal != null && isFinite(xVal) && yVal != null && isFinite(yVal)) { - return applyTransform3(out3, data, this._transform); - } - var xAxis = this.getAxis("x"); - var yAxis = this.getAxis("y"); - out3[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(xVal, clamp4)); - out3[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(yVal, clamp4)); - return out3; - }; - Cartesian2D3.prototype.clampData = function(data, out3) { - var xScale = this.getAxis("x").scale; - var yScale = this.getAxis("y").scale; - var xAxisExtent = xScale.getExtent(); - var yAxisExtent = yScale.getExtent(); - var x = xScale.parse(data[0]); - var y = yScale.parse(data[1]); - out3 = out3 || []; - out3[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1])); - out3[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1])); - return out3; - }; - Cartesian2D3.prototype.pointToData = function(point, clamp4) { - var out3 = []; - if (this._invTransform) { - return applyTransform3(out3, point, this._invTransform); - } - var xAxis = this.getAxis("x"); - var yAxis = this.getAxis("y"); - out3[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]), clamp4); - out3[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]), clamp4); - return out3; - }; - Cartesian2D3.prototype.getOtherAxis = function(axis) { - return this.getAxis(axis.dim === "x" ? "y" : "x"); - }; - Cartesian2D3.prototype.getArea = function(tolerance) { - tolerance = tolerance || 0; - var xExtent = this.getAxis("x").getGlobalExtent(); - var yExtent = this.getAxis("y").getGlobalExtent(); - var x = Math.min(xExtent[0], xExtent[1]) - tolerance; - var y = Math.min(yExtent[0], yExtent[1]) - tolerance; - var width = Math.max(xExtent[0], xExtent[1]) - x + tolerance; - var height = Math.max(yExtent[0], yExtent[1]) - y + tolerance; - return new BoundingRect2(x, y, width, height); - }; - return Cartesian2D3; - }(Cartesian2) - ); - var Axis2D2 = ( - /** @class */ - function(_super) { - __extends2(Axis2D3, _super); - function Axis2D3(dim, scale5, coordExtent, axisType, position3) { - var _this = _super.call(this, dim, scale5, coordExtent) || this; - _this.index = 0; - _this.type = axisType || "value"; - _this.position = position3 || "bottom"; - return _this; - } - Axis2D3.prototype.isHorizontal = function() { - var position3 = this.position; - return position3 === "top" || position3 === "bottom"; - }; - Axis2D3.prototype.getGlobalExtent = function(asc5) { - var ret = this.getExtent(); - ret[0] = this.toGlobalCoord(ret[0]); - ret[1] = this.toGlobalCoord(ret[1]); - asc5 && ret[0] > ret[1] && ret.reverse(); - return ret; - }; - Axis2D3.prototype.pointToData = function(point, clamp4) { - return this.coordToData(this.toLocalCoord(point[this.dim === "x" ? 0 : 1]), clamp4); - }; - Axis2D3.prototype.setCategorySortInfo = function(info) { - if (this.type !== "category") { - return false; - } - this.model.option.categorySortInfo = info; - this.scale.setSortInfo(info); - }; - return Axis2D3; - }(Axis2) - ); - function layout$1(gridModel, axisModel, opt) { - opt = opt || {}; - var grid = gridModel.coordinateSystem; - var axis = axisModel.axis; - var layout6 = {}; - var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0]; - var rawAxisPosition = axis.position; - var axisPosition = otherAxisOnZeroOf ? "onZero" : rawAxisPosition; - var axisDim = axis.dim; - var rect = grid.getRect(); - var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height]; - var idx = { - left: 0, - right: 1, - top: 0, - bottom: 1, - onZero: 2 - }; - var axisOffset = axisModel.get("offset") || 0; - var posBound = axisDim === "x" ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset]; - if (otherAxisOnZeroOf) { - var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0)); - posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]); - } - layout6.position = [axisDim === "y" ? posBound[idx[axisPosition]] : rectBound[0], axisDim === "x" ? posBound[idx[axisPosition]] : rectBound[3]]; - layout6.rotation = Math.PI / 2 * (axisDim === "x" ? 0 : 1); - var dirMap = { - top: -1, - bottom: 1, - left: -1, - right: 1 - }; - layout6.labelDirection = layout6.tickDirection = layout6.nameDirection = dirMap[rawAxisPosition]; - layout6.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0; - if (axisModel.get(["axisTick", "inside"])) { - layout6.tickDirection = -layout6.tickDirection; - } - if (retrieve4(opt.labelInside, axisModel.get(["axisLabel", "inside"]))) { - layout6.labelDirection = -layout6.labelDirection; - } - var labelRotate = axisModel.get(["axisLabel", "rotate"]); - layout6.labelRotate = axisPosition === "top" ? -labelRotate : labelRotate; - layout6.z2 = 1; - return layout6; - } - function isCartesian2DSeries2(seriesModel) { - return seriesModel.get("coordinateSystem") === "cartesian2d"; - } - function findAxisModels2(seriesModel) { - var axisModelMap = { - xAxisModel: null, - yAxisModel: null - }; - each17(axisModelMap, function(v, key) { - var axisType = key.replace(/Model$/, ""); - var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING2).models[0]; - if (true) { - if (!axisModel) { - throw new Error(axisType + ' "' + retrieve32(seriesModel.get(axisType + "Index"), seriesModel.get(axisType + "Id"), 0) + '" not found'); - } - } - axisModelMap[key] = axisModel; - }); - return axisModelMap; - } - var mathLog$1 = Math.log; - function alignScaleTicks2(scale5, axisModel, alignToScale) { - var intervalScaleProto3 = IntervalScale2.prototype; - var alignToTicks = intervalScaleProto3.getTicks.call(alignToScale); - var alignToNicedTicks = intervalScaleProto3.getTicks.call(alignToScale, true); - var alignToSplitNumber = alignToTicks.length - 1; - var alignToInterval = intervalScaleProto3.getInterval.call(alignToScale); - var scaleExtent = getScaleExtent2(scale5, axisModel); - var rawExtent = scaleExtent.extent; - var isMinFixed = scaleExtent.fixMin; - var isMaxFixed = scaleExtent.fixMax; - if (scale5.type === "log") { - var logBase = mathLog$1(scale5.base); - rawExtent = [mathLog$1(rawExtent[0]) / logBase, mathLog$1(rawExtent[1]) / logBase]; - } - scale5.setExtent(rawExtent[0], rawExtent[1]); - scale5.calcNiceExtent({ - splitNumber: alignToSplitNumber, - fixMin: isMinFixed, - fixMax: isMaxFixed - }); - var extent4 = intervalScaleProto3.getExtent.call(scale5); - if (isMinFixed) { - rawExtent[0] = extent4[0]; - } - if (isMaxFixed) { - rawExtent[1] = extent4[1]; - } - var interval = intervalScaleProto3.getInterval.call(scale5); - var min5 = rawExtent[0]; - var max5 = rawExtent[1]; - if (isMinFixed && isMaxFixed) { - interval = (max5 - min5) / alignToSplitNumber; - } else if (isMinFixed) { - max5 = rawExtent[0] + interval * alignToSplitNumber; - while (max5 < rawExtent[1] && isFinite(max5) && isFinite(rawExtent[1])) { - interval = increaseInterval2(interval); - max5 = rawExtent[0] + interval * alignToSplitNumber; - } - } else if (isMaxFixed) { - min5 = rawExtent[1] - interval * alignToSplitNumber; - while (min5 > rawExtent[0] && isFinite(min5) && isFinite(rawExtent[0])) { - interval = increaseInterval2(interval); - min5 = rawExtent[1] - interval * alignToSplitNumber; - } - } else { - var nicedSplitNumber = scale5.getTicks().length - 1; - if (nicedSplitNumber > alignToSplitNumber) { - interval = increaseInterval2(interval); - } - var range = interval * alignToSplitNumber; - max5 = Math.ceil(rawExtent[1] / interval) * interval; - min5 = round8(max5 - range); - if (min5 < 0 && rawExtent[0] >= 0) { - min5 = 0; - max5 = round8(range); - } else if (max5 > 0 && rawExtent[1] <= 0) { - max5 = 0; - min5 = -round8(range); - } - } - var t0 = (alignToTicks[0].value - alignToNicedTicks[0].value) / alignToInterval; - var t1 = (alignToTicks[alignToSplitNumber].value - alignToNicedTicks[alignToSplitNumber].value) / alignToInterval; - intervalScaleProto3.setExtent.call(scale5, min5 + interval * t0, max5 + interval * t1); - intervalScaleProto3.setInterval.call(scale5, interval); - if (t0 || t1) { - intervalScaleProto3.setNiceExtent.call(scale5, min5 + interval, max5 - interval); - } - if (true) { - var ticks = intervalScaleProto3.getTicks.call(scale5); - if (ticks[1] && (!isValueNice2(interval) || getPrecisionSafe2(ticks[1].value) > getPrecisionSafe2(interval))) { - warn2( - // eslint-disable-next-line - "The ticks may be not readable when set min: " + axisModel.get("min") + ", max: " + axisModel.get("max") + " and alignTicks: true" - ); - } - } - } - var Grid2 = ( - /** @class */ - function() { - function Grid3(gridModel, ecModel, api) { - this.type = "grid"; - this._coordsMap = {}; - this._coordsList = []; - this._axesMap = {}; - this._axesList = []; - this.axisPointerEnabled = true; - this.dimensions = cartesian2DDimensions2; - this._initCartesian(gridModel, ecModel, api); - this.model = gridModel; - } - Grid3.prototype.getRect = function() { - return this._rect; - }; - Grid3.prototype.update = function(ecModel, api) { - var axesMap = this._axesMap; - this._updateScale(ecModel, this.model); - function updateAxisTicks(axes) { - var alignTo; - var axesIndices = keys2(axes); - var len3 = axesIndices.length; - if (!len3) { - return; - } - var axisNeedsAlign = []; - for (var i2 = len3 - 1; i2 >= 0; i2--) { - var idx = +axesIndices[i2]; - var axis = axes[idx]; - var model = axis.model; - var scale5 = axis.scale; - if ( - // Only value and log axis without interval support alignTicks. - isIntervalOrLogScale2(scale5) && model.get("alignTicks") && model.get("interval") == null - ) { - axisNeedsAlign.push(axis); - } else { - niceScaleExtent2(scale5, model); - if (isIntervalOrLogScale2(scale5)) { - alignTo = axis; - } - } - } - if (axisNeedsAlign.length) { - if (!alignTo) { - alignTo = axisNeedsAlign.pop(); - niceScaleExtent2(alignTo.scale, alignTo.model); - } - each17(axisNeedsAlign, function(axis2) { - alignScaleTicks2(axis2.scale, axis2.model, alignTo.scale); - }); - } - } - updateAxisTicks(axesMap.x); - updateAxisTicks(axesMap.y); - var onZeroRecords = {}; - each17(axesMap.x, function(xAxis) { - fixAxisOnZero2(axesMap, "y", xAxis, onZeroRecords); - }); - each17(axesMap.y, function(yAxis) { - fixAxisOnZero2(axesMap, "x", yAxis, onZeroRecords); - }); - this.resize(this.model, api); - }; - Grid3.prototype.resize = function(gridModel, api, ignoreContainLabel) { - var boxLayoutParams = gridModel.getBoxLayoutParams(); - var isContainLabel = !ignoreContainLabel && gridModel.get("containLabel"); - var gridRect = getLayoutRect2(boxLayoutParams, { - width: api.getWidth(), - height: api.getHeight() - }); - this._rect = gridRect; - var axesList = this._axesList; - adjustAxes(); - if (isContainLabel) { - each17(axesList, function(axis) { - if (!axis.model.get(["axisLabel", "inside"])) { - var labelUnionRect = estimateLabelUnionRect2(axis); - if (labelUnionRect) { - var dim = axis.isHorizontal() ? "height" : "width"; - var margin = axis.model.get(["axisLabel", "margin"]); - gridRect[dim] -= labelUnionRect[dim] + margin; - if (axis.position === "top") { - gridRect.y += labelUnionRect.height + margin; - } else if (axis.position === "left") { - gridRect.x += labelUnionRect.width + margin; - } - } - } - }); - adjustAxes(); - } - each17(this._coordsList, function(coord) { - coord.calcAffineTransform(); - }); - function adjustAxes() { - each17(axesList, function(axis) { - var isHorizontal = axis.isHorizontal(); - var extent4 = isHorizontal ? [0, gridRect.width] : [0, gridRect.height]; - var idx = axis.inverse ? 1 : 0; - axis.setExtent(extent4[idx], extent4[1 - idx]); - updateAxisTransform2(axis, isHorizontal ? gridRect.x : gridRect.y); - }); - } - }; - Grid3.prototype.getAxis = function(dim, axisIndex) { - var axesMapOnDim = this._axesMap[dim]; - if (axesMapOnDim != null) { - return axesMapOnDim[axisIndex || 0]; - } - }; - Grid3.prototype.getAxes = function() { - return this._axesList.slice(); - }; - Grid3.prototype.getCartesian = function(xAxisIndex, yAxisIndex) { - if (xAxisIndex != null && yAxisIndex != null) { - var key = "x" + xAxisIndex + "y" + yAxisIndex; - return this._coordsMap[key]; - } - if (isObject5(xAxisIndex)) { - yAxisIndex = xAxisIndex.yAxisIndex; - xAxisIndex = xAxisIndex.xAxisIndex; - } - for (var i2 = 0, coordList = this._coordsList; i2 < coordList.length; i2++) { - if (coordList[i2].getAxis("x").index === xAxisIndex || coordList[i2].getAxis("y").index === yAxisIndex) { - return coordList[i2]; - } - } - }; - Grid3.prototype.getCartesians = function() { - return this._coordsList.slice(); - }; - Grid3.prototype.convertToPixel = function(ecModel, finder, value) { - var target = this._findConvertTarget(finder); - return target.cartesian ? target.cartesian.dataToPoint(value) : target.axis ? target.axis.toGlobalCoord(target.axis.dataToCoord(value)) : null; - }; - Grid3.prototype.convertFromPixel = function(ecModel, finder, value) { - var target = this._findConvertTarget(finder); - return target.cartesian ? target.cartesian.pointToData(value) : target.axis ? target.axis.coordToData(target.axis.toLocalCoord(value)) : null; - }; - Grid3.prototype._findConvertTarget = function(finder) { - var seriesModel = finder.seriesModel; - var xAxisModel = finder.xAxisModel || seriesModel && seriesModel.getReferringComponents("xAxis", SINGLE_REFERRING2).models[0]; - var yAxisModel = finder.yAxisModel || seriesModel && seriesModel.getReferringComponents("yAxis", SINGLE_REFERRING2).models[0]; - var gridModel = finder.gridModel; - var coordsList = this._coordsList; - var cartesian; - var axis; - if (seriesModel) { - cartesian = seriesModel.coordinateSystem; - indexOf2(coordsList, cartesian) < 0 && (cartesian = null); - } else if (xAxisModel && yAxisModel) { - cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex); - } else if (xAxisModel) { - axis = this.getAxis("x", xAxisModel.componentIndex); - } else if (yAxisModel) { - axis = this.getAxis("y", yAxisModel.componentIndex); - } else if (gridModel) { - var grid = gridModel.coordinateSystem; - if (grid === this) { - cartesian = this._coordsList[0]; - } - } - return { - cartesian, - axis - }; - }; - Grid3.prototype.containPoint = function(point) { - var coord = this._coordsList[0]; - if (coord) { - return coord.containPoint(point); - } - }; - Grid3.prototype._initCartesian = function(gridModel, ecModel, api) { - var _this = this; - var grid = this; - var axisPositionUsed = { - left: false, - right: false, - top: false, - bottom: false - }; - var axesMap = { - x: {}, - y: {} - }; - var axesCount = { - x: 0, - y: 0 - }; - ecModel.eachComponent("xAxis", createAxisCreator("x"), this); - ecModel.eachComponent("yAxis", createAxisCreator("y"), this); - if (!axesCount.x || !axesCount.y) { - this._axesMap = {}; - this._axesList = []; - return; - } - this._axesMap = axesMap; - each17(axesMap.x, function(xAxis, xAxisIndex) { - each17(axesMap.y, function(yAxis, yAxisIndex) { - var key = "x" + xAxisIndex + "y" + yAxisIndex; - var cartesian = new Cartesian2D2(key); - cartesian.master = _this; - cartesian.model = gridModel; - _this._coordsMap[key] = cartesian; - _this._coordsList.push(cartesian); - cartesian.addAxis(xAxis); - cartesian.addAxis(yAxis); - }); - }); - function createAxisCreator(dimName) { - return function(axisModel, idx) { - if (!isAxisUsedInTheGrid2(axisModel, gridModel)) { - return; - } - var axisPosition = axisModel.get("position"); - if (dimName === "x") { - if (axisPosition !== "top" && axisPosition !== "bottom") { - axisPosition = axisPositionUsed.bottom ? "top" : "bottom"; - } - } else { - if (axisPosition !== "left" && axisPosition !== "right") { - axisPosition = axisPositionUsed.left ? "right" : "left"; - } - } - axisPositionUsed[axisPosition] = true; - var axis = new Axis2D2(dimName, createScaleByModel3(axisModel), [0, 0], axisModel.get("type"), axisPosition); - var isCategory3 = axis.type === "category"; - axis.onBand = isCategory3 && axisModel.get("boundaryGap"); - axis.inverse = axisModel.get("inverse"); - axisModel.axis = axis; - axis.model = axisModel; - axis.grid = grid; - axis.index = idx; - grid._axesList.push(axis); - axesMap[dimName][idx] = axis; - axesCount[dimName]++; - }; - } - }; - Grid3.prototype._updateScale = function(ecModel, gridModel) { - each17(this._axesList, function(axis) { - axis.scale.setExtent(Infinity, -Infinity); - if (axis.type === "category") { - var categorySortInfo = axis.model.get("categorySortInfo"); - axis.scale.setSortInfo(categorySortInfo); - } - }); - ecModel.eachSeries(function(seriesModel) { - if (isCartesian2DSeries2(seriesModel)) { - var axesModelMap = findAxisModels2(seriesModel); - var xAxisModel = axesModelMap.xAxisModel; - var yAxisModel = axesModelMap.yAxisModel; - if (!isAxisUsedInTheGrid2(xAxisModel, gridModel) || !isAxisUsedInTheGrid2(yAxisModel, gridModel)) { - return; - } - var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex); - var data = seriesModel.getData(); - var xAxis = cartesian.getAxis("x"); - var yAxis = cartesian.getAxis("y"); - unionExtent(data, xAxis); - unionExtent(data, yAxis); - } - }, this); - function unionExtent(data, axis) { - each17(getDataDimensionsOnAxis2(data, axis.dim), function(dim) { - axis.scale.unionExtentFromData(data, dim); - }); - } - }; - Grid3.prototype.getTooltipAxes = function(dim) { - var baseAxes = []; - var otherAxes = []; - each17(this.getCartesians(), function(cartesian) { - var baseAxis = dim != null && dim !== "auto" ? cartesian.getAxis(dim) : cartesian.getBaseAxis(); - var otherAxis = cartesian.getOtherAxis(baseAxis); - indexOf2(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis); - indexOf2(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis); - }); - return { - baseAxes, - otherAxes - }; - }; - Grid3.create = function(ecModel, api) { - var grids = []; - ecModel.eachComponent("grid", function(gridModel, idx) { - var grid = new Grid3(gridModel, ecModel, api); - grid.name = "grid_" + idx; - grid.resize(gridModel, api, true); - gridModel.coordinateSystem = grid; - grids.push(grid); - }); - ecModel.eachSeries(function(seriesModel) { - if (!isCartesian2DSeries2(seriesModel)) { - return; - } - var axesModelMap = findAxisModels2(seriesModel); - var xAxisModel = axesModelMap.xAxisModel; - var yAxisModel = axesModelMap.yAxisModel; - var gridModel = xAxisModel.getCoordSysModel(); - if (true) { - if (!gridModel) { - throw new Error('Grid "' + retrieve32(xAxisModel.get("gridIndex"), xAxisModel.get("gridId"), 0) + '" not found'); - } - if (xAxisModel.getCoordSysModel() !== yAxisModel.getCoordSysModel()) { - throw new Error("xAxis and yAxis must use the same grid"); - } - } - var grid = gridModel.coordinateSystem; - seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex); - }); - return grids; - }; - Grid3.dimensions = cartesian2DDimensions2; - return Grid3; - }() - ); - function isAxisUsedInTheGrid2(axisModel, gridModel) { - return axisModel.getCoordSysModel() === gridModel; - } - function fixAxisOnZero2(axesMap, otherAxisDim, axis, onZeroRecords) { - axis.getAxesOnZeroOf = function() { - return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : []; - }; - var otherAxes = axesMap[otherAxisDim]; - var otherAxisOnZeroOf; - var axisModel = axis.model; - var onZero = axisModel.get(["axisLine", "onZero"]); - var onZeroAxisIndex = axisModel.get(["axisLine", "onZeroAxisIndex"]); - if (!onZero) { - return; - } - if (onZeroAxisIndex != null) { - if (canOnZeroToAxis2(otherAxes[onZeroAxisIndex])) { - otherAxisOnZeroOf = otherAxes[onZeroAxisIndex]; - } - } else { - for (var idx in otherAxes) { - if (otherAxes.hasOwnProperty(idx) && canOnZeroToAxis2(otherAxes[idx]) && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) { - otherAxisOnZeroOf = otherAxes[idx]; - break; - } - } - } - if (otherAxisOnZeroOf) { - onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true; - } - function getOnZeroRecordKey(axis2) { - return axis2.dim + "_" + axis2.index; - } - } - function canOnZeroToAxis2(axis) { - return axis && axis.type !== "category" && axis.type !== "time" && ifAxisCrossZero2(axis); - } - function updateAxisTransform2(axis, coordBase) { - var axisExtent = axis.getExtent(); - var axisExtentSum = axisExtent[0] + axisExtent[1]; - axis.toGlobalCoord = axis.dim === "x" ? function(coord) { - return coord + coordBase; - } : function(coord) { - return axisExtentSum - coord + coordBase; - }; - axis.toLocalCoord = axis.dim === "x" ? function(coord) { - return coord - coordBase; - } : function(coord) { - return axisExtentSum - coord + coordBase; - }; - } - var PI$5 = Math.PI; - var AxisBuilder2 = ( - /** @class */ - function() { - function AxisBuilder3(axisModel, opt) { - this.group = new Group5(); - this.opt = opt; - this.axisModel = axisModel; - defaults2(opt, { - labelOffset: 0, - nameDirection: 1, - tickDirection: 1, - labelDirection: 1, - silent: true, - handleAutoShown: function() { - return true; - } - }); - var transformGroup = new Group5({ - x: opt.position[0], - y: opt.position[1], - rotation: opt.rotation - }); - transformGroup.updateTransform(); - this._transformGroup = transformGroup; - } - AxisBuilder3.prototype.hasBuilder = function(name) { - return !!builders2[name]; - }; - AxisBuilder3.prototype.add = function(name) { - builders2[name](this.opt, this.axisModel, this.group, this._transformGroup); - }; - AxisBuilder3.prototype.getGroup = function() { - return this.group; - }; - AxisBuilder3.innerTextLayout = function(axisRotation, textRotation, direction) { - var rotationDiff = remRadian2(textRotation - axisRotation); - var textAlign; - var textVerticalAlign; - if (isRadianAroundZero2(rotationDiff)) { - textVerticalAlign = direction > 0 ? "top" : "bottom"; - textAlign = "center"; - } else if (isRadianAroundZero2(rotationDiff - PI$5)) { - textVerticalAlign = direction > 0 ? "bottom" : "top"; - textAlign = "center"; - } else { - textVerticalAlign = "middle"; - if (rotationDiff > 0 && rotationDiff < PI$5) { - textAlign = direction > 0 ? "right" : "left"; - } else { - textAlign = direction > 0 ? "left" : "right"; - } - } - return { - rotation: rotationDiff, - textAlign, - textVerticalAlign - }; - }; - AxisBuilder3.makeAxisEventDataBase = function(axisModel) { - var eventData = { - componentType: axisModel.mainType, - componentIndex: axisModel.componentIndex - }; - eventData[axisModel.mainType + "Index"] = axisModel.componentIndex; - return eventData; - }; - AxisBuilder3.isLabelSilent = function(axisModel) { - var tooltipOpt = axisModel.get("tooltip"); - return axisModel.get("silent") || !(axisModel.get("triggerEvent") || tooltipOpt && tooltipOpt.show); - }; - return AxisBuilder3; - }() - ); - var builders2 = { - axisLine: function(opt, axisModel, group, transformGroup) { - var shown = axisModel.get(["axisLine", "show"]); - if (shown === "auto" && opt.handleAutoShown) { - shown = opt.handleAutoShown("axisLine"); - } - if (!shown) { - return; - } - var extent4 = axisModel.axis.getExtent(); - var matrix2 = transformGroup.transform; - var pt13 = [extent4[0], 0]; - var pt23 = [extent4[1], 0]; - var inverse = pt13[0] > pt23[0]; - if (matrix2) { - applyTransform3(pt13, pt13, matrix2); - applyTransform3(pt23, pt23, matrix2); - } - var lineStyle = extend3({ - lineCap: "round" - }, axisModel.getModel(["axisLine", "lineStyle"]).getLineStyle()); - var line = new Line3({ - shape: { - x1: pt13[0], - y1: pt13[1], - x2: pt23[0], - y2: pt23[1] - }, - style: lineStyle, - strokeContainThreshold: opt.strokeContainThreshold || 5, - silent: true, - z2: 1 - }); - subPixelOptimizeLine$1(line.shape, line.style.lineWidth); - line.anid = "line"; - group.add(line); - var arrows = axisModel.get(["axisLine", "symbol"]); - if (arrows != null) { - var arrowSize = axisModel.get(["axisLine", "symbolSize"]); - if (isString2(arrows)) { - arrows = [arrows, arrows]; - } - if (isString2(arrowSize) || isNumber2(arrowSize)) { - arrowSize = [arrowSize, arrowSize]; - } - var arrowOffset = normalizeSymbolOffset2(axisModel.get(["axisLine", "symbolOffset"]) || 0, arrowSize); - var symbolWidth_1 = arrowSize[0]; - var symbolHeight_1 = arrowSize[1]; - each17([{ - rotate: opt.rotation + Math.PI / 2, - offset: arrowOffset[0], - r: 0 - }, { - rotate: opt.rotation - Math.PI / 2, - offset: arrowOffset[1], - r: Math.sqrt((pt13[0] - pt23[0]) * (pt13[0] - pt23[0]) + (pt13[1] - pt23[1]) * (pt13[1] - pt23[1])) - }], function(point, index) { - if (arrows[index] !== "none" && arrows[index] != null) { - var symbol = createSymbol3(arrows[index], -symbolWidth_1 / 2, -symbolHeight_1 / 2, symbolWidth_1, symbolHeight_1, lineStyle.stroke, true); - var r = point.r + point.offset; - var pt = inverse ? pt23 : pt13; - symbol.attr({ - rotation: point.rotate, - x: pt[0] + r * Math.cos(opt.rotation), - y: pt[1] - r * Math.sin(opt.rotation), - silent: true, - z2: 11 - }); - group.add(symbol); - } - }); - } - }, - axisTickLabel: function(opt, axisModel, group, transformGroup) { - var ticksEls = buildAxisMajorTicks2(group, transformGroup, axisModel, opt); - var labelEls = buildAxisLabel2(group, transformGroup, axisModel, opt); - fixMinMaxLabelShow2(axisModel, labelEls, ticksEls); - buildAxisMinorTicks2(group, transformGroup, axisModel, opt.tickDirection); - if (axisModel.get(["axisLabel", "hideOverlap"])) { - var labelList = prepareLayoutList2(map3(labelEls, function(label) { - return { - label, - priority: label.z2, - defaultAttr: { - ignore: label.ignore - } - }; - })); - hideOverlap2(labelList); - } - }, - axisName: function(opt, axisModel, group, transformGroup) { - var name = retrieve4(opt.axisName, axisModel.get("name")); - if (!name) { - return; - } - var nameLocation = axisModel.get("nameLocation"); - var nameDirection = opt.nameDirection; - var textStyleModel = axisModel.getModel("nameTextStyle"); - var gap = axisModel.get("nameGap") || 0; - var extent4 = axisModel.axis.getExtent(); - var gapSignal = extent4[0] > extent4[1] ? -1 : 1; - var pos = [ - nameLocation === "start" ? extent4[0] - gapSignal * gap : nameLocation === "end" ? extent4[1] + gapSignal * gap : (extent4[0] + extent4[1]) / 2, - // Reuse labelOffset. - isNameLocationCenter2(nameLocation) ? opt.labelOffset + nameDirection * gap : 0 - ]; - var labelLayout3; - var nameRotation = axisModel.get("nameRotate"); - if (nameRotation != null) { - nameRotation = nameRotation * PI$5 / 180; - } - var axisNameAvailableWidth; - if (isNameLocationCenter2(nameLocation)) { - labelLayout3 = AxisBuilder2.innerTextLayout( - opt.rotation, - nameRotation != null ? nameRotation : opt.rotation, - // Adapt to axis. - nameDirection - ); - } else { - labelLayout3 = endTextLayout2(opt.rotation, nameLocation, nameRotation || 0, extent4); - axisNameAvailableWidth = opt.axisNameAvailableWidth; - if (axisNameAvailableWidth != null) { - axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout3.rotation)); - !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null); - } - } - var textFont = textStyleModel.getFont(); - var truncateOpt = axisModel.get("nameTruncate", true) || {}; - var ellipsis = truncateOpt.ellipsis; - var maxWidth = retrieve4(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth); - var textEl = new ZRText2({ - x: pos[0], - y: pos[1], - rotation: labelLayout3.rotation, - silent: AxisBuilder2.isLabelSilent(axisModel), - style: createTextStyle3(textStyleModel, { - text: name, - font: textFont, - overflow: "truncate", - width: maxWidth, - ellipsis, - fill: textStyleModel.getTextColor() || axisModel.get(["axisLine", "lineStyle", "color"]), - align: textStyleModel.get("align") || labelLayout3.textAlign, - verticalAlign: textStyleModel.get("verticalAlign") || labelLayout3.textVerticalAlign - }), - z2: 1 - }); - setTooltipConfig2({ - el: textEl, - componentModel: axisModel, - itemName: name - }); - textEl.__fullText = name; - textEl.anid = "name"; - if (axisModel.get("triggerEvent")) { - var eventData = AxisBuilder2.makeAxisEventDataBase(axisModel); - eventData.targetType = "axisName"; - eventData.name = name; - getECData2(textEl).eventData = eventData; - } - transformGroup.add(textEl); - textEl.updateTransform(); - group.add(textEl); - textEl.decomposeTransform(); - } - }; - function endTextLayout2(rotation, textPosition, textRotate, extent4) { - var rotationDiff = remRadian2(textRotate - rotation); - var textAlign; - var textVerticalAlign; - var inverse = extent4[0] > extent4[1]; - var onLeft = textPosition === "start" && !inverse || textPosition !== "start" && inverse; - if (isRadianAroundZero2(rotationDiff - PI$5 / 2)) { - textVerticalAlign = onLeft ? "bottom" : "top"; - textAlign = "center"; - } else if (isRadianAroundZero2(rotationDiff - PI$5 * 1.5)) { - textVerticalAlign = onLeft ? "top" : "bottom"; - textAlign = "center"; - } else { - textVerticalAlign = "middle"; - if (rotationDiff < PI$5 * 1.5 && rotationDiff > PI$5 / 2) { - textAlign = onLeft ? "left" : "right"; - } else { - textAlign = onLeft ? "right" : "left"; - } - } - return { - rotation: rotationDiff, - textAlign, - textVerticalAlign - }; - } - function fixMinMaxLabelShow2(axisModel, labelEls, tickEls) { - if (shouldShowAllLabels2(axisModel.axis)) { - return; - } - var showMinLabel = axisModel.get(["axisLabel", "showMinLabel"]); - var showMaxLabel = axisModel.get(["axisLabel", "showMaxLabel"]); - labelEls = labelEls || []; - tickEls = tickEls || []; - var firstLabel = labelEls[0]; - var nextLabel = labelEls[1]; - var lastLabel = labelEls[labelEls.length - 1]; - var prevLabel = labelEls[labelEls.length - 2]; - var firstTick = tickEls[0]; - var nextTick = tickEls[1]; - var lastTick = tickEls[tickEls.length - 1]; - var prevTick = tickEls[tickEls.length - 2]; - if (showMinLabel === false) { - ignoreEl2(firstLabel); - ignoreEl2(firstTick); - } else if (isTwoLabelOverlapped2(firstLabel, nextLabel)) { - if (showMinLabel) { - ignoreEl2(nextLabel); - ignoreEl2(nextTick); - } else { - ignoreEl2(firstLabel); - ignoreEl2(firstTick); - } - } - if (showMaxLabel === false) { - ignoreEl2(lastLabel); - ignoreEl2(lastTick); - } else if (isTwoLabelOverlapped2(prevLabel, lastLabel)) { - if (showMaxLabel) { - ignoreEl2(prevLabel); - ignoreEl2(prevTick); - } else { - ignoreEl2(lastLabel); - ignoreEl2(lastTick); - } - } - } - function ignoreEl2(el) { - el && (el.ignore = true); - } - function isTwoLabelOverlapped2(current, next) { - var firstRect = current && current.getBoundingRect().clone(); - var nextRect = next && next.getBoundingRect().clone(); - if (!firstRect || !nextRect) { - return; - } - var mRotationBack = identity2([]); - rotate2(mRotationBack, mRotationBack, -current.rotation); - firstRect.applyTransform(mul$1([], mRotationBack, current.getLocalTransform())); - nextRect.applyTransform(mul$1([], mRotationBack, next.getLocalTransform())); - return firstRect.intersect(nextRect); - } - function isNameLocationCenter2(nameLocation) { - return nameLocation === "middle" || nameLocation === "center"; - } - function createTicks2(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, anidPrefix) { - var tickEls = []; - var pt13 = []; - var pt23 = []; - for (var i2 = 0; i2 < ticksCoords.length; i2++) { - var tickCoord = ticksCoords[i2].coord; - pt13[0] = tickCoord; - pt13[1] = 0; - pt23[0] = tickCoord; - pt23[1] = tickEndCoord; - if (tickTransform) { - applyTransform3(pt13, pt13, tickTransform); - applyTransform3(pt23, pt23, tickTransform); - } - var tickEl = new Line3({ - shape: { - x1: pt13[0], - y1: pt13[1], - x2: pt23[0], - y2: pt23[1] - }, - style: tickLineStyle, - z2: 2, - autoBatch: true, - silent: true - }); - subPixelOptimizeLine$1(tickEl.shape, tickEl.style.lineWidth); - tickEl.anid = anidPrefix + "_" + ticksCoords[i2].tickValue; - tickEls.push(tickEl); - } - return tickEls; - } - function buildAxisMajorTicks2(group, transformGroup, axisModel, opt) { - var axis = axisModel.axis; - var tickModel = axisModel.getModel("axisTick"); - var shown = tickModel.get("show"); - if (shown === "auto" && opt.handleAutoShown) { - shown = opt.handleAutoShown("axisTick"); - } - if (!shown || axis.scale.isBlank()) { - return; - } - var lineStyleModel = tickModel.getModel("lineStyle"); - var tickEndCoord = opt.tickDirection * tickModel.get("length"); - var ticksCoords = axis.getTicksCoords(); - var ticksEls = createTicks2(ticksCoords, transformGroup.transform, tickEndCoord, defaults2(lineStyleModel.getLineStyle(), { - stroke: axisModel.get(["axisLine", "lineStyle", "color"]) - }), "ticks"); - for (var i2 = 0; i2 < ticksEls.length; i2++) { - group.add(ticksEls[i2]); - } - return ticksEls; - } - function buildAxisMinorTicks2(group, transformGroup, axisModel, tickDirection) { - var axis = axisModel.axis; - var minorTickModel = axisModel.getModel("minorTick"); - if (!minorTickModel.get("show") || axis.scale.isBlank()) { - return; - } - var minorTicksCoords = axis.getMinorTicksCoords(); - if (!minorTicksCoords.length) { - return; - } - var lineStyleModel = minorTickModel.getModel("lineStyle"); - var tickEndCoord = tickDirection * minorTickModel.get("length"); - var minorTickLineStyle = defaults2(lineStyleModel.getLineStyle(), defaults2(axisModel.getModel("axisTick").getLineStyle(), { - stroke: axisModel.get(["axisLine", "lineStyle", "color"]) - })); - for (var i2 = 0; i2 < minorTicksCoords.length; i2++) { - var minorTicksEls = createTicks2(minorTicksCoords[i2], transformGroup.transform, tickEndCoord, minorTickLineStyle, "minorticks_" + i2); - for (var k2 = 0; k2 < minorTicksEls.length; k2++) { - group.add(minorTicksEls[k2]); - } - } - } - function buildAxisLabel2(group, transformGroup, axisModel, opt) { - var axis = axisModel.axis; - var show = retrieve4(opt.axisLabelShow, axisModel.get(["axisLabel", "show"])); - if (!show || axis.scale.isBlank()) { - return; - } - var labelModel = axisModel.getModel("axisLabel"); - var labelMargin = labelModel.get("margin"); - var labels = axis.getViewLabels(); - var labelRotation = (retrieve4(opt.labelRotate, labelModel.get("rotate")) || 0) * PI$5 / 180; - var labelLayout3 = AxisBuilder2.innerTextLayout(opt.rotation, labelRotation, opt.labelDirection); - var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true); - var labelEls = []; - var silent = AxisBuilder2.isLabelSilent(axisModel); - var triggerEvent = axisModel.get("triggerEvent"); - each17(labels, function(labelItem, index) { - var tickValue = axis.scale.type === "ordinal" ? axis.scale.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue; - var formattedLabel = labelItem.formattedLabel; - var rawLabel = labelItem.rawLabel; - var itemLabelModel = labelModel; - if (rawCategoryData && rawCategoryData[tickValue]) { - var rawCategoryItem = rawCategoryData[tickValue]; - if (isObject5(rawCategoryItem) && rawCategoryItem.textStyle) { - itemLabelModel = new Model2(rawCategoryItem.textStyle, labelModel, axisModel.ecModel); - } - } - var textColor = itemLabelModel.getTextColor() || axisModel.get(["axisLine", "lineStyle", "color"]); - var tickCoord = axis.dataToCoord(tickValue); - var align = itemLabelModel.getShallow("align", true) || labelLayout3.textAlign; - var alignMin = retrieve22(itemLabelModel.getShallow("alignMinLabel", true), align); - var alignMax = retrieve22(itemLabelModel.getShallow("alignMaxLabel", true), align); - var verticalAlign = itemLabelModel.getShallow("verticalAlign", true) || itemLabelModel.getShallow("baseline", true) || labelLayout3.textVerticalAlign; - var verticalAlignMin = retrieve22(itemLabelModel.getShallow("verticalAlignMinLabel", true), verticalAlign); - var verticalAlignMax = retrieve22(itemLabelModel.getShallow("verticalAlignMaxLabel", true), verticalAlign); - var textEl = new ZRText2({ - x: tickCoord, - y: opt.labelOffset + opt.labelDirection * labelMargin, - rotation: labelLayout3.rotation, - silent, - z2: 10 + (labelItem.level || 0), - style: createTextStyle3(itemLabelModel, { - text: formattedLabel, - align: index === 0 ? alignMin : index === labels.length - 1 ? alignMax : align, - verticalAlign: index === 0 ? verticalAlignMin : index === labels.length - 1 ? verticalAlignMax : verticalAlign, - fill: isFunction2(textColor) ? textColor( - // (1) In category axis with data zoom, tick is not the original - // index of axis.data. So tick should not be exposed to user - // in category axis. - // (2) Compatible with previous version, which always use formatted label as - // input. But in interval scale the formatted label is like '223,445', which - // maked user replace ','. So we modify it to return original val but remain - // it as 'string' to avoid error in replacing. - axis.type === "category" ? rawLabel : axis.type === "value" ? tickValue + "" : tickValue, - index - ) : textColor - }) - }); - textEl.anid = "label_" + tickValue; - setTooltipConfig2({ - el: textEl, - componentModel: axisModel, - itemName: formattedLabel, - formatterParamsExtra: { - isTruncated: function() { - return textEl.isTruncated; - }, - value: rawLabel, - tickIndex: index - } - }); - if (triggerEvent) { - var eventData = AxisBuilder2.makeAxisEventDataBase(axisModel); - eventData.targetType = "axisLabel"; - eventData.value = rawLabel; - eventData.tickIndex = index; - if (axis.type === "category") { - eventData.dataIndex = tickValue; - } - getECData2(textEl).eventData = eventData; - } - transformGroup.add(textEl); - textEl.updateTransform(); - labelEls.push(textEl); - group.add(textEl); - textEl.decomposeTransform(); - }); - return labelEls; - } - function collect2(ecModel, api) { - var result = { - /** - * key: makeKey(axis.model) - * value: { - * axis, - * coordSys, - * axisPointerModel, - * triggerTooltip, - * triggerEmphasis, - * involveSeries, - * snap, - * seriesModels, - * seriesDataCount - * } - */ - axesInfo: {}, - seriesInvolved: false, - /** - * key: makeKey(coordSys.model) - * value: Object: key makeKey(axis.model), value: axisInfo - */ - coordSysAxesInfo: {}, - coordSysMap: {} - }; - collectAxesInfo2(result, ecModel, api); - result.seriesInvolved && collectSeriesInfo2(result, ecModel); - return result; - } - function collectAxesInfo2(result, ecModel, api) { - var globalTooltipModel = ecModel.getComponent("tooltip"); - var globalAxisPointerModel = ecModel.getComponent("axisPointer"); - var linksOption = globalAxisPointerModel.get("link", true) || []; - var linkGroups = []; - each17(api.getCoordinateSystems(), function(coordSys) { - if (!coordSys.axisPointerEnabled) { - return; - } - var coordSysKey = makeKey2(coordSys.model); - var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {}; - result.coordSysMap[coordSysKey] = coordSys; - var coordSysModel = coordSys.model; - var baseTooltipModel = coordSysModel.getModel("tooltip", globalTooltipModel); - each17(coordSys.getAxes(), curry3(saveTooltipAxisInfo, false, null)); - if (coordSys.getTooltipAxes && globalTooltipModel && baseTooltipModel.get("show")) { - var triggerAxis = baseTooltipModel.get("trigger") === "axis"; - var cross = baseTooltipModel.get(["axisPointer", "type"]) === "cross"; - var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get(["axisPointer", "axis"])); - if (triggerAxis || cross) { - each17(tooltipAxes.baseAxes, curry3(saveTooltipAxisInfo, cross ? "cross" : true, triggerAxis)); - } - if (cross) { - each17(tooltipAxes.otherAxes, curry3(saveTooltipAxisInfo, "cross", false)); - } - } - function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) { - var axisPointerModel = axis.model.getModel("axisPointer", globalAxisPointerModel); - var axisPointerShow = axisPointerModel.get("show"); - if (!axisPointerShow || axisPointerShow === "auto" && !fromTooltip && !isHandleTrigger2(axisPointerModel)) { - return; - } - if (triggerTooltip == null) { - triggerTooltip = axisPointerModel.get("triggerTooltip"); - } - axisPointerModel = fromTooltip ? makeAxisPointerModel2(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) : axisPointerModel; - var snap = axisPointerModel.get("snap"); - var triggerEmphasis = axisPointerModel.get("triggerEmphasis"); - var axisKey = makeKey2(axis.model); - var involveSeries = triggerTooltip || snap || axis.type === "category"; - var axisInfo = result.axesInfo[axisKey] = { - key: axisKey, - axis, - coordSys, - axisPointerModel, - triggerTooltip, - triggerEmphasis, - involveSeries, - snap, - useHandle: isHandleTrigger2(axisPointerModel), - seriesModels: [], - linkGroup: null - }; - axesInfoInCoordSys[axisKey] = axisInfo; - result.seriesInvolved = result.seriesInvolved || involveSeries; - var groupIndex = getLinkGroupIndex2(linksOption, axis); - if (groupIndex != null) { - var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = { - axesInfo: {} - }); - linkGroup.axesInfo[axisKey] = axisInfo; - linkGroup.mapper = linksOption[groupIndex].mapper; - axisInfo.linkGroup = linkGroup; - } - } - }); - } - function makeAxisPointerModel2(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) { - var tooltipAxisPointerModel = baseTooltipModel.getModel("axisPointer"); - var fields = ["type", "snap", "lineStyle", "shadowStyle", "label", "animation", "animationDurationUpdate", "animationEasingUpdate", "z"]; - var volatileOption = {}; - each17(fields, function(field) { - volatileOption[field] = clone6(tooltipAxisPointerModel.get(field)); - }); - volatileOption.snap = axis.type !== "category" && !!triggerTooltip; - if (tooltipAxisPointerModel.get("type") === "cross") { - volatileOption.type = "line"; - } - var labelOption = volatileOption.label || (volatileOption.label = {}); - labelOption.show == null && (labelOption.show = false); - if (fromTooltip === "cross") { - var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get(["label", "show"]); - labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true; - if (!triggerTooltip) { - var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get("crossStyle"); - crossStyle && defaults2(labelOption, crossStyle.textStyle); - } - } - return axis.model.getModel("axisPointer", new Model2(volatileOption, globalAxisPointerModel, ecModel)); - } - function collectSeriesInfo2(result, ecModel) { - ecModel.eachSeries(function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - var seriesTooltipTrigger = seriesModel.get(["tooltip", "trigger"], true); - var seriesTooltipShow = seriesModel.get(["tooltip", "show"], true); - if (!coordSys || seriesTooltipTrigger === "none" || seriesTooltipTrigger === false || seriesTooltipTrigger === "item" || seriesTooltipShow === false || seriesModel.get(["axisPointer", "show"], true) === false) { - return; - } - each17(result.coordSysAxesInfo[makeKey2(coordSys.model)], function(axisInfo) { - var axis = axisInfo.axis; - if (coordSys.getAxis(axis.dim) === axis) { - axisInfo.seriesModels.push(seriesModel); - axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0); - axisInfo.seriesDataCount += seriesModel.getData().count(); - } - }); - }); - } - function getLinkGroupIndex2(linksOption, axis) { - var axisModel = axis.model; - var dim = axis.dim; - for (var i2 = 0; i2 < linksOption.length; i2++) { - var linkOption = linksOption[i2] || {}; - if (checkPropInLink2(linkOption[dim + "AxisId"], axisModel.id) || checkPropInLink2(linkOption[dim + "AxisIndex"], axisModel.componentIndex) || checkPropInLink2(linkOption[dim + "AxisName"], axisModel.name)) { - return i2; - } - } - } - function checkPropInLink2(linkPropValue, axisPropValue) { - return linkPropValue === "all" || isArray3(linkPropValue) && indexOf2(linkPropValue, axisPropValue) >= 0 || linkPropValue === axisPropValue; - } - function fixValue2(axisModel) { - var axisInfo = getAxisInfo3(axisModel); - if (!axisInfo) { - return; - } - var axisPointerModel = axisInfo.axisPointerModel; - var scale5 = axisInfo.axis.scale; - var option = axisPointerModel.option; - var status = axisPointerModel.get("status"); - var value = axisPointerModel.get("value"); - if (value != null) { - value = scale5.parse(value); - } - var useHandle = isHandleTrigger2(axisPointerModel); - if (status == null) { - option.status = useHandle ? "show" : "hide"; - } - var extent4 = scale5.getExtent().slice(); - extent4[0] > extent4[1] && extent4.reverse(); - if ( - // Pick a value on axis when initializing. - value == null || value > extent4[1] - ) { - value = extent4[1]; - } - if (value < extent4[0]) { - value = extent4[0]; - } - option.value = value; - if (useHandle) { - option.status = axisInfo.axis.scale.isBlank() ? "hide" : "show"; - } - } - function getAxisInfo3(axisModel) { - var coordSysAxesInfo = (axisModel.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo; - return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey2(axisModel)]; - } - function getAxisPointerModel2(axisModel) { - var axisInfo = getAxisInfo3(axisModel); - return axisInfo && axisInfo.axisPointerModel; - } - function isHandleTrigger2(axisPointerModel) { - return !!axisPointerModel.get(["handle", "show"]); - } - function makeKey2(model) { - return model.type + "||" + model.id; - } - var axisPointerClazz2 = {}; - var AxisView2 = ( - /** @class */ - function(_super) { - __extends2(AxisView3, _super); - function AxisView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = AxisView3.type; - return _this; - } - AxisView3.prototype.render = function(axisModel, ecModel, api, payload) { - this.axisPointerClass && fixValue2(axisModel); - _super.prototype.render.apply(this, arguments); - this._doUpdateAxisPointerClass(axisModel, api, true); - }; - AxisView3.prototype.updateAxisPointer = function(axisModel, ecModel, api, payload) { - this._doUpdateAxisPointerClass(axisModel, api, false); - }; - AxisView3.prototype.remove = function(ecModel, api) { - var axisPointer = this._axisPointer; - axisPointer && axisPointer.remove(api); - }; - AxisView3.prototype.dispose = function(ecModel, api) { - this._disposeAxisPointer(api); - _super.prototype.dispose.apply(this, arguments); - }; - AxisView3.prototype._doUpdateAxisPointerClass = function(axisModel, api, forceRender) { - var Clazz = AxisView3.getAxisPointerClass(this.axisPointerClass); - if (!Clazz) { - return; - } - var axisPointerModel = getAxisPointerModel2(axisModel); - axisPointerModel ? (this._axisPointer || (this._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : this._disposeAxisPointer(api); - }; - AxisView3.prototype._disposeAxisPointer = function(api) { - this._axisPointer && this._axisPointer.dispose(api); - this._axisPointer = null; - }; - AxisView3.registerAxisPointerClass = function(type, clazz) { - if (true) { - if (axisPointerClazz2[type]) { - throw new Error("axisPointer " + type + " exists"); - } - } - axisPointerClazz2[type] = clazz; - }; - AxisView3.getAxisPointerClass = function(type) { - return type && axisPointerClazz2[type]; - }; - AxisView3.type = "axis"; - return AxisView3; - }(ComponentView2) - ); - var inner$6 = makeInner2(); - function rectCoordAxisBuildSplitArea2(axisView, axisGroup, axisModel, gridModel) { - var axis = axisModel.axis; - if (axis.scale.isBlank()) { - return; - } - var splitAreaModel = axisModel.getModel("splitArea"); - var areaStyleModel = splitAreaModel.getModel("areaStyle"); - var areaColors = areaStyleModel.get("color"); - var gridRect = gridModel.coordinateSystem.getRect(); - var ticksCoords = axis.getTicksCoords({ - tickModel: splitAreaModel, - clamp: true - }); - if (!ticksCoords.length) { - return; - } - var areaColorsLen = areaColors.length; - var lastSplitAreaColors = inner$6(axisView).splitAreaColors; - var newSplitAreaColors = createHashMap2(); - var colorIndex = 0; - if (lastSplitAreaColors) { - for (var i2 = 0; i2 < ticksCoords.length; i2++) { - var cIndex = lastSplitAreaColors.get(ticksCoords[i2].tickValue); - if (cIndex != null) { - colorIndex = (cIndex + (areaColorsLen - 1) * i2) % areaColorsLen; - break; - } - } - } - var prev = axis.toGlobalCoord(ticksCoords[0].coord); - var areaStyle = areaStyleModel.getAreaStyle(); - areaColors = isArray3(areaColors) ? areaColors : [areaColors]; - for (var i2 = 1; i2 < ticksCoords.length; i2++) { - var tickCoord = axis.toGlobalCoord(ticksCoords[i2].coord); - var x = void 0; - var y = void 0; - var width = void 0; - var height = void 0; - if (axis.isHorizontal()) { - x = prev; - y = gridRect.y; - width = tickCoord - x; - height = gridRect.height; - prev = x + width; - } else { - x = gridRect.x; - y = prev; - width = gridRect.width; - height = tickCoord - y; - prev = y + height; - } - var tickValue = ticksCoords[i2 - 1].tickValue; - tickValue != null && newSplitAreaColors.set(tickValue, colorIndex); - axisGroup.add(new Rect4({ - anid: tickValue != null ? "area_" + tickValue : null, - shape: { - x, - y, - width, - height - }, - style: defaults2({ - fill: areaColors[colorIndex] - }, areaStyle), - autoBatch: true, - silent: true - })); - colorIndex = (colorIndex + 1) % areaColorsLen; - } - inner$6(axisView).splitAreaColors = newSplitAreaColors; - } - function rectCoordAxisHandleRemove2(axisView) { - inner$6(axisView).splitAreaColors = null; - } - var axisBuilderAttrs5 = ["axisLine", "axisTickLabel", "axisName"]; - var selfBuilderAttrs4 = ["splitArea", "splitLine", "minorSplitLine"]; - var CartesianAxisView2 = ( - /** @class */ - function(_super) { - __extends2(CartesianAxisView3, _super); - function CartesianAxisView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CartesianAxisView3.type; - _this.axisPointerClass = "CartesianAxisPointer"; - return _this; - } - CartesianAxisView3.prototype.render = function(axisModel, ecModel, api, payload) { - this.group.removeAll(); - var oldAxisGroup = this._axisGroup; - this._axisGroup = new Group5(); - this.group.add(this._axisGroup); - if (!axisModel.get("show")) { - return; - } - var gridModel = axisModel.getCoordSysModel(); - var layout6 = layout$1(gridModel, axisModel); - var axisBuilder = new AxisBuilder2(axisModel, extend3({ - handleAutoShown: function(elementType2) { - var cartesians = gridModel.coordinateSystem.getCartesians(); - for (var i2 = 0; i2 < cartesians.length; i2++) { - if (isIntervalOrLogScale2(cartesians[i2].getOtherAxis(axisModel.axis).scale)) { - return true; - } - } - return false; - } - }, layout6)); - each17(axisBuilderAttrs5, axisBuilder.add, axisBuilder); - this._axisGroup.add(axisBuilder.getGroup()); - each17(selfBuilderAttrs4, function(name) { - if (axisModel.get([name, "show"])) { - axisElementBuilders4[name](this, this._axisGroup, axisModel, gridModel); - } - }, this); - var isInitialSortFromBarRacing = payload && payload.type === "changeAxisOrder" && payload.isInitSort; - if (!isInitialSortFromBarRacing) { - groupTransition2(oldAxisGroup, this._axisGroup, axisModel); - } - _super.prototype.render.call(this, axisModel, ecModel, api, payload); - }; - CartesianAxisView3.prototype.remove = function() { - rectCoordAxisHandleRemove2(this); - }; - CartesianAxisView3.type = "cartesianAxis"; - return CartesianAxisView3; - }(AxisView2) - ); - var axisElementBuilders4 = { - splitLine: function(axisView, axisGroup, axisModel, gridModel) { - var axis = axisModel.axis; - if (axis.scale.isBlank()) { - return; - } - var splitLineModel = axisModel.getModel("splitLine"); - var lineStyleModel = splitLineModel.getModel("lineStyle"); - var lineColors = lineStyleModel.get("color"); - var showMinLine = splitLineModel.get("showMinLine") !== false; - var showMaxLine = splitLineModel.get("showMaxLine") !== false; - lineColors = isArray3(lineColors) ? lineColors : [lineColors]; - var gridRect = gridModel.coordinateSystem.getRect(); - var isHorizontal = axis.isHorizontal(); - var lineCount = 0; - var ticksCoords = axis.getTicksCoords({ - tickModel: splitLineModel - }); - var p1 = []; - var p2 = []; - var lineStyle = lineStyleModel.getLineStyle(); - for (var i2 = 0; i2 < ticksCoords.length; i2++) { - var tickCoord = axis.toGlobalCoord(ticksCoords[i2].coord); - if (i2 === 0 && !showMinLine || i2 === ticksCoords.length - 1 && !showMaxLine) { - continue; - } - var tickValue = ticksCoords[i2].tickValue; - if (isHorizontal) { - p1[0] = tickCoord; - p1[1] = gridRect.y; - p2[0] = tickCoord; - p2[1] = gridRect.y + gridRect.height; - } else { - p1[0] = gridRect.x; - p1[1] = tickCoord; - p2[0] = gridRect.x + gridRect.width; - p2[1] = tickCoord; - } - var colorIndex = lineCount++ % lineColors.length; - var line = new Line3({ - anid: tickValue != null ? "line_" + tickValue : null, - autoBatch: true, - shape: { - x1: p1[0], - y1: p1[1], - x2: p2[0], - y2: p2[1] - }, - style: defaults2({ - stroke: lineColors[colorIndex] - }, lineStyle), - silent: true - }); - subPixelOptimizeLine$1(line.shape, lineStyle.lineWidth); - axisGroup.add(line); - } - }, - minorSplitLine: function(axisView, axisGroup, axisModel, gridModel) { - var axis = axisModel.axis; - var minorSplitLineModel = axisModel.getModel("minorSplitLine"); - var lineStyleModel = minorSplitLineModel.getModel("lineStyle"); - var gridRect = gridModel.coordinateSystem.getRect(); - var isHorizontal = axis.isHorizontal(); - var minorTicksCoords = axis.getMinorTicksCoords(); - if (!minorTicksCoords.length) { - return; - } - var p1 = []; - var p2 = []; - var lineStyle = lineStyleModel.getLineStyle(); - for (var i2 = 0; i2 < minorTicksCoords.length; i2++) { - for (var k2 = 0; k2 < minorTicksCoords[i2].length; k2++) { - var tickCoord = axis.toGlobalCoord(minorTicksCoords[i2][k2].coord); - if (isHorizontal) { - p1[0] = tickCoord; - p1[1] = gridRect.y; - p2[0] = tickCoord; - p2[1] = gridRect.y + gridRect.height; - } else { - p1[0] = gridRect.x; - p1[1] = tickCoord; - p2[0] = gridRect.x + gridRect.width; - p2[1] = tickCoord; - } - var line = new Line3({ - anid: "minor_line_" + minorTicksCoords[i2][k2].tickValue, - autoBatch: true, - shape: { - x1: p1[0], - y1: p1[1], - x2: p2[0], - y2: p2[1] - }, - style: lineStyle, - silent: true - }); - subPixelOptimizeLine$1(line.shape, lineStyle.lineWidth); - axisGroup.add(line); - } - } - }, - splitArea: function(axisView, axisGroup, axisModel, gridModel) { - rectCoordAxisBuildSplitArea2(axisView, axisGroup, axisModel, gridModel); - } - }; - var CartesianXAxisView2 = ( - /** @class */ - function(_super) { - __extends2(CartesianXAxisView3, _super); - function CartesianXAxisView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CartesianXAxisView3.type; - return _this; - } - CartesianXAxisView3.type = "xAxis"; - return CartesianXAxisView3; - }(CartesianAxisView2) - ); - var CartesianYAxisView2 = ( - /** @class */ - function(_super) { - __extends2(CartesianYAxisView3, _super); - function CartesianYAxisView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CartesianXAxisView2.type; - return _this; - } - CartesianYAxisView3.type = "yAxis"; - return CartesianYAxisView3; - }(CartesianAxisView2) - ); - var GridView2 = ( - /** @class */ - function(_super) { - __extends2(GridView3, _super); - function GridView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "grid"; - return _this; - } - GridView3.prototype.render = function(gridModel, ecModel) { - this.group.removeAll(); - if (gridModel.get("show")) { - this.group.add(new Rect4({ - shape: gridModel.coordinateSystem.getRect(), - style: defaults2({ - fill: gridModel.get("backgroundColor") - }, gridModel.getItemStyle()), - silent: true, - z2: -1 - })); - } - }; - GridView3.type = "grid"; - return GridView3; - }(ComponentView2) - ); - var extraOption2 = { - // gridIndex: 0, - // gridId: '', - offset: 0 - }; - function install$5(registers) { - registers.registerComponentView(GridView2); - registers.registerComponentModel(GridModel2); - registers.registerCoordinateSystem("cartesian2d", Grid2); - axisModelCreator2(registers, "x", CartesianAxisModel2, extraOption2); - axisModelCreator2(registers, "y", CartesianAxisModel2, extraOption2); - registers.registerComponentView(CartesianXAxisView2); - registers.registerComponentView(CartesianYAxisView2); - registers.registerPreprocessor(function(option) { - if (option.xAxis && option.yAxis && !option.grid) { - option.grid = {}; - } - }); - } - function install$6(registers) { - use2(install$5); - registers.registerSeriesModel(ScatterSeriesModel2); - registers.registerChartView(ScatterView2); - registers.registerLayout(pointsLayout2("scatter")); - } - function radarLayout2(ecModel) { - ecModel.eachSeriesByType("radar", function(seriesModel) { - var data = seriesModel.getData(); - var points5 = []; - var coordSys = seriesModel.coordinateSystem; - if (!coordSys) { - return; - } - var axes = coordSys.getIndicatorAxes(); - each17(axes, function(axis, axisIndex) { - data.each(data.mapDimension(axes[axisIndex].dim), function(val, dataIndex) { - points5[dataIndex] = points5[dataIndex] || []; - var point = coordSys.dataToPoint(val, axisIndex); - points5[dataIndex][axisIndex] = isValidPoint2(point) ? point : getValueMissingPoint2(coordSys); - }); - }); - data.each(function(idx) { - var firstPoint = find2(points5[idx], function(point) { - return isValidPoint2(point); - }) || getValueMissingPoint2(coordSys); - points5[idx].push(firstPoint.slice()); - data.setItemLayout(idx, points5[idx]); - }); - }); - } - function isValidPoint2(point) { - return !isNaN(point[0]) && !isNaN(point[1]); - } - function getValueMissingPoint2(coordSys) { - return [coordSys.cx, coordSys.cy]; - } - function radarBackwardCompat2(option) { - var polarOptArr = option.polar; - if (polarOptArr) { - if (!isArray3(polarOptArr)) { - polarOptArr = [polarOptArr]; - } - var polarNotRadar_1 = []; - each17(polarOptArr, function(polarOpt, idx) { - if (polarOpt.indicator) { - if (polarOpt.type && !polarOpt.shape) { - polarOpt.shape = polarOpt.type; - } - option.radar = option.radar || []; - if (!isArray3(option.radar)) { - option.radar = [option.radar]; - } - option.radar.push(polarOpt); - } else { - polarNotRadar_1.push(polarOpt); - } - }); - option.polar = polarNotRadar_1; - } - each17(option.series, function(seriesOpt) { - if (seriesOpt && seriesOpt.type === "radar" && seriesOpt.polarIndex) { - seriesOpt.radarIndex = seriesOpt.polarIndex; - } - }); - } - var RadarView3 = ( - /** @class */ - function(_super) { - __extends2(RadarView4, _super); - function RadarView4() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = RadarView4.type; - return _this; - } - RadarView4.prototype.render = function(seriesModel, ecModel, api) { - var polar = seriesModel.coordinateSystem; - var group = this.group; - var data = seriesModel.getData(); - var oldData = this._data; - function createSymbol$12(data2, idx) { - var symbolType = data2.getItemVisual(idx, "symbol") || "circle"; - if (symbolType === "none") { - return; - } - var symbolSize = normalizeSymbolSize2(data2.getItemVisual(idx, "symbolSize")); - var symbolPath = createSymbol3(symbolType, -1, -1, 2, 2); - var symbolRotate = data2.getItemVisual(idx, "symbolRotate") || 0; - symbolPath.attr({ - style: { - strokeNoScale: true - }, - z2: 100, - scaleX: symbolSize[0] / 2, - scaleY: symbolSize[1] / 2, - rotation: symbolRotate * Math.PI / 180 || 0 - }); - return symbolPath; - } - function updateSymbols(oldPoints, newPoints, symbolGroup, data2, idx, isInit) { - symbolGroup.removeAll(); - for (var i2 = 0; i2 < newPoints.length - 1; i2++) { - var symbolPath = createSymbol$12(data2, idx); - if (symbolPath) { - symbolPath.__dimIdx = i2; - if (oldPoints[i2]) { - symbolPath.setPosition(oldPoints[i2]); - graphic[isInit ? "initProps" : "updateProps"](symbolPath, { - x: newPoints[i2][0], - y: newPoints[i2][1] - }, seriesModel, idx); - } else { - symbolPath.setPosition(newPoints[i2]); - } - symbolGroup.add(symbolPath); - } - } - } - function getInitialPoints(points5) { - return map3(points5, function(pt) { - return [polar.cx, polar.cy]; - }); - } - data.diff(oldData).add(function(idx) { - var points5 = data.getItemLayout(idx); - if (!points5) { - return; - } - var polygon = new Polygon2(); - var polyline = new Polyline3(); - var target = { - shape: { - points: points5 - } - }; - polygon.shape.points = getInitialPoints(points5); - polyline.shape.points = getInitialPoints(points5); - initProps2(polygon, target, seriesModel, idx); - initProps2(polyline, target, seriesModel, idx); - var itemGroup = new Group5(); - var symbolGroup = new Group5(); - itemGroup.add(polyline); - itemGroup.add(polygon); - itemGroup.add(symbolGroup); - updateSymbols(polyline.shape.points, points5, symbolGroup, data, idx, true); - data.setItemGraphicEl(idx, itemGroup); - }).update(function(newIdx, oldIdx) { - var itemGroup = oldData.getItemGraphicEl(oldIdx); - var polyline = itemGroup.childAt(0); - var polygon = itemGroup.childAt(1); - var symbolGroup = itemGroup.childAt(2); - var target = { - shape: { - points: data.getItemLayout(newIdx) - } - }; - if (!target.shape.points) { - return; - } - updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false); - saveOldStyle2(polygon); - saveOldStyle2(polyline); - updateProps3(polyline, target, seriesModel); - updateProps3(polygon, target, seriesModel); - data.setItemGraphicEl(newIdx, itemGroup); - }).remove(function(idx) { - group.remove(oldData.getItemGraphicEl(idx)); - }).execute(); - data.eachItemGraphicEl(function(itemGroup, idx) { - var itemModel = data.getItemModel(idx); - var polyline = itemGroup.childAt(0); - var polygon = itemGroup.childAt(1); - var symbolGroup = itemGroup.childAt(2); - var itemStyle = data.getItemVisual(idx, "style"); - var color2 = itemStyle.fill; - group.add(itemGroup); - polyline.useStyle(defaults2(itemModel.getModel("lineStyle").getLineStyle(), { - fill: "none", - stroke: color2 - })); - setStatesStylesFromModel2(polyline, itemModel, "lineStyle"); - setStatesStylesFromModel2(polygon, itemModel, "areaStyle"); - var areaStyleModel = itemModel.getModel("areaStyle"); - var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty(); - polygon.ignore = polygonIgnore; - each17(["emphasis", "select", "blur"], function(stateName) { - var stateModel = itemModel.getModel([stateName, "areaStyle"]); - var stateIgnore = stateModel.isEmpty() && stateModel.parentModel.isEmpty(); - polygon.ensureState(stateName).ignore = stateIgnore && polygonIgnore; - }); - polygon.useStyle(defaults2(areaStyleModel.getAreaStyle(), { - fill: color2, - opacity: 0.7, - decal: itemStyle.decal - })); - var emphasisModel = itemModel.getModel("emphasis"); - var itemHoverStyle = emphasisModel.getModel("itemStyle").getItemStyle(); - symbolGroup.eachChild(function(symbolPath) { - if (symbolPath instanceof ZRImage2) { - var pathStyle = symbolPath.style; - symbolPath.useStyle(extend3({ - // TODO other properties like x, y ? - image: pathStyle.image, - x: pathStyle.x, - y: pathStyle.y, - width: pathStyle.width, - height: pathStyle.height - }, itemStyle)); - } else { - symbolPath.useStyle(itemStyle); - symbolPath.setColor(color2); - symbolPath.style.strokeNoScale = true; - } - var pathEmphasisState = symbolPath.ensureState("emphasis"); - pathEmphasisState.style = clone6(itemHoverStyle); - var defaultText = data.getStore().get(data.getDimensionIndex(symbolPath.__dimIdx), idx); - (defaultText == null || isNaN(defaultText)) && (defaultText = ""); - setLabelStyle2(symbolPath, getLabelStatesModels2(itemModel), { - labelFetcher: data.hostModel, - labelDataIndex: idx, - labelDimIndex: symbolPath.__dimIdx, - defaultText, - inheritColor: color2, - defaultOpacity: itemStyle.opacity - }); - }); - toggleHoverEmphasis2(itemGroup, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - }); - this._data = data; - }; - RadarView4.prototype.remove = function() { - this.group.removeAll(); - this._data = null; - }; - RadarView4.type = "radar"; - return RadarView4; - }(ChartView2) - ); - var RadarSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(RadarSeriesModel3, _super); - function RadarSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = RadarSeriesModel3.type; - _this.hasSymbolVisual = true; - return _this; - } - RadarSeriesModel3.prototype.init = function(option) { - _super.prototype.init.apply(this, arguments); - this.legendVisualProvider = new LegendVisualProvider2(bind3(this.getData, this), bind3(this.getRawData, this)); - }; - RadarSeriesModel3.prototype.getInitialData = function(option, ecModel) { - return createSeriesDataSimply2(this, { - generateCoord: "indicator_", - generateCoordCount: Infinity - }); - }; - RadarSeriesModel3.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - var data = this.getData(); - var coordSys = this.coordinateSystem; - var indicatorAxes = coordSys.getIndicatorAxes(); - var name = this.getData().getName(dataIndex); - var nameToDisplay = name === "" ? this.name : name; - var markerColor = retrieveVisualColorForTooltipMarker2(this, dataIndex); - return createTooltipMarkup2("section", { - header: nameToDisplay, - sortBlocks: true, - blocks: map3(indicatorAxes, function(axis) { - var val = data.get(data.mapDimension(axis.dim), dataIndex); - return createTooltipMarkup2("nameValue", { - markerType: "subItem", - markerColor, - name: axis.name, - value: val, - sortParam: val - }); - }) - }); - }; - RadarSeriesModel3.prototype.getTooltipPosition = function(dataIndex) { - if (dataIndex != null) { - var data_1 = this.getData(); - var coordSys = this.coordinateSystem; - var values = data_1.getValues(map3(coordSys.dimensions, function(dim) { - return data_1.mapDimension(dim); - }), dataIndex); - for (var i2 = 0, len3 = values.length; i2 < len3; i2++) { - if (!isNaN(values[i2])) { - var indicatorAxes = coordSys.getIndicatorAxes(); - return coordSys.coordToPoint(indicatorAxes[i2].dataToCoord(values[i2]), i2); - } - } - } - }; - RadarSeriesModel3.type = "series.radar"; - RadarSeriesModel3.dependencies = ["radar"]; - RadarSeriesModel3.defaultOption = { - // zlevel: 0, - z: 2, - colorBy: "data", - coordinateSystem: "radar", - legendHoverLink: true, - radarIndex: 0, - lineStyle: { - width: 2, - type: "solid", - join: "round" - }, - label: { - position: "top" - }, - // areaStyle: { - // }, - // itemStyle: {} - symbolSize: 8 - // symbolRotate: null - }; - return RadarSeriesModel3; - }(SeriesModel2) - ); - var valueAxisDefault2 = axisDefault.value; - function defaultsShow2(opt, show) { - return defaults2({ - show - }, opt); - } - var RadarModel2 = ( - /** @class */ - function(_super) { - __extends2(RadarModel3, _super); - function RadarModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = RadarModel3.type; - return _this; - } - RadarModel3.prototype.optionUpdated = function() { - var boundaryGap = this.get("boundaryGap"); - var splitNumber = this.get("splitNumber"); - var scale5 = this.get("scale"); - var axisLine = this.get("axisLine"); - var axisTick = this.get("axisTick"); - var axisLabel = this.get("axisLabel"); - var nameTextStyle = this.get("axisName"); - var showName = this.get(["axisName", "show"]); - var nameFormatter = this.get(["axisName", "formatter"]); - var nameGap = this.get("axisNameGap"); - var triggerEvent = this.get("triggerEvent"); - var indicatorModels = map3(this.get("indicator") || [], function(indicatorOpt) { - if (indicatorOpt.max != null && indicatorOpt.max > 0 && !indicatorOpt.min) { - indicatorOpt.min = 0; - } else if (indicatorOpt.min != null && indicatorOpt.min < 0 && !indicatorOpt.max) { - indicatorOpt.max = 0; - } - var iNameTextStyle = nameTextStyle; - if (indicatorOpt.color != null) { - iNameTextStyle = defaults2({ - color: indicatorOpt.color - }, nameTextStyle); - } - var innerIndicatorOpt = merge2(clone6(indicatorOpt), { - boundaryGap, - splitNumber, - scale: scale5, - axisLine, - axisTick, - // axisType: axisType, - axisLabel, - // Compatible with 2 and use text - name: indicatorOpt.text, - showName, - nameLocation: "end", - nameGap, - // min: 0, - nameTextStyle: iNameTextStyle, - triggerEvent - }, false); - if (isString2(nameFormatter)) { - var indName = innerIndicatorOpt.name; - innerIndicatorOpt.name = nameFormatter.replace("{value}", indName != null ? indName : ""); - } else if (isFunction2(nameFormatter)) { - innerIndicatorOpt.name = nameFormatter(innerIndicatorOpt.name, innerIndicatorOpt); - } - var model = new Model2(innerIndicatorOpt, null, this.ecModel); - mixin2(model, AxisModelCommonMixin2.prototype); - model.mainType = "radar"; - model.componentIndex = this.componentIndex; - return model; - }, this); - this._indicatorModels = indicatorModels; - }; - RadarModel3.prototype.getIndicatorModels = function() { - return this._indicatorModels; - }; - RadarModel3.type = "radar"; - RadarModel3.defaultOption = { - // zlevel: 0, - z: 0, - center: ["50%", "50%"], - radius: "75%", - startAngle: 90, - axisName: { - show: true - // formatter: null - // textStyle: {} - }, - boundaryGap: [0, 0], - splitNumber: 5, - axisNameGap: 15, - scale: false, - // Polygon or circle - shape: "polygon", - axisLine: merge2({ - lineStyle: { - color: "#bbb" - } - }, valueAxisDefault2.axisLine), - axisLabel: defaultsShow2(valueAxisDefault2.axisLabel, false), - axisTick: defaultsShow2(valueAxisDefault2.axisTick, false), - // axisType: 'value', - splitLine: defaultsShow2(valueAxisDefault2.splitLine, true), - splitArea: defaultsShow2(valueAxisDefault2.splitArea, true), - // {text, min, max} - indicator: [] - }; - return RadarModel3; - }(ComponentModel2) - ); - var axisBuilderAttrs$1 = ["axisLine", "axisTickLabel", "axisName"]; - var RadarView$1 = ( - /** @class */ - function(_super) { - __extends2(RadarView4, _super); - function RadarView4() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = RadarView4.type; - return _this; - } - RadarView4.prototype.render = function(radarModel, ecModel, api) { - var group = this.group; - group.removeAll(); - this._buildAxes(radarModel); - this._buildSplitLineAndArea(radarModel); - }; - RadarView4.prototype._buildAxes = function(radarModel) { - var radar = radarModel.coordinateSystem; - var indicatorAxes = radar.getIndicatorAxes(); - var axisBuilders = map3(indicatorAxes, function(indicatorAxis) { - var axisName = indicatorAxis.model.get("showName") ? indicatorAxis.name : ""; - var axisBuilder = new AxisBuilder2(indicatorAxis.model, { - axisName, - position: [radar.cx, radar.cy], - rotation: indicatorAxis.angle, - labelDirection: -1, - tickDirection: -1, - nameDirection: 1 - }); - return axisBuilder; - }); - each17(axisBuilders, function(axisBuilder) { - each17(axisBuilderAttrs$1, axisBuilder.add, axisBuilder); - this.group.add(axisBuilder.getGroup()); - }, this); - }; - RadarView4.prototype._buildSplitLineAndArea = function(radarModel) { - var radar = radarModel.coordinateSystem; - var indicatorAxes = radar.getIndicatorAxes(); - if (!indicatorAxes.length) { - return; - } - var shape = radarModel.get("shape"); - var splitLineModel = radarModel.getModel("splitLine"); - var splitAreaModel = radarModel.getModel("splitArea"); - var lineStyleModel = splitLineModel.getModel("lineStyle"); - var areaStyleModel = splitAreaModel.getModel("areaStyle"); - var showSplitLine = splitLineModel.get("show"); - var showSplitArea = splitAreaModel.get("show"); - var splitLineColors = lineStyleModel.get("color"); - var splitAreaColors = areaStyleModel.get("color"); - var splitLineColorsArr = isArray3(splitLineColors) ? splitLineColors : [splitLineColors]; - var splitAreaColorsArr = isArray3(splitAreaColors) ? splitAreaColors : [splitAreaColors]; - var splitLines = []; - var splitAreas = []; - function getColorIndex(areaOrLine, areaOrLineColorList, idx) { - var colorIndex2 = idx % areaOrLineColorList.length; - areaOrLine[colorIndex2] = areaOrLine[colorIndex2] || []; - return colorIndex2; - } - if (shape === "circle") { - var ticksRadius = indicatorAxes[0].getTicksCoords(); - var cx = radar.cx; - var cy = radar.cy; - for (var i2 = 0; i2 < ticksRadius.length; i2++) { - if (showSplitLine) { - var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i2); - splitLines[colorIndex].push(new Circle2({ - shape: { - cx, - cy, - r: ticksRadius[i2].coord - } - })); - } - if (showSplitArea && i2 < ticksRadius.length - 1) { - var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i2); - splitAreas[colorIndex].push(new Ring2({ - shape: { - cx, - cy, - r0: ticksRadius[i2].coord, - r: ticksRadius[i2 + 1].coord - } - })); - } - } - } else { - var realSplitNumber_1; - var axesTicksPoints = map3(indicatorAxes, function(indicatorAxis, idx) { - var ticksCoords = indicatorAxis.getTicksCoords(); - realSplitNumber_1 = realSplitNumber_1 == null ? ticksCoords.length - 1 : Math.min(ticksCoords.length - 1, realSplitNumber_1); - return map3(ticksCoords, function(tickCoord) { - return radar.coordToPoint(tickCoord.coord, idx); - }); - }); - var prevPoints = []; - for (var i2 = 0; i2 <= realSplitNumber_1; i2++) { - var points5 = []; - for (var j = 0; j < indicatorAxes.length; j++) { - points5.push(axesTicksPoints[j][i2]); - } - if (points5[0]) { - points5.push(points5[0].slice()); - } else { - if (true) { - console.error("Can't draw value axis " + i2); - } - } - if (showSplitLine) { - var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i2); - splitLines[colorIndex].push(new Polyline3({ - shape: { - points: points5 - } - })); - } - if (showSplitArea && prevPoints) { - var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i2 - 1); - splitAreas[colorIndex].push(new Polygon2({ - shape: { - points: points5.concat(prevPoints) - } - })); - } - prevPoints = points5.slice().reverse(); - } - } - var lineStyle = lineStyleModel.getLineStyle(); - var areaStyle = areaStyleModel.getAreaStyle(); - each17(splitAreas, function(splitAreas2, idx) { - this.group.add(mergePath$1(splitAreas2, { - style: defaults2({ - stroke: "none", - fill: splitAreaColorsArr[idx % splitAreaColorsArr.length] - }, areaStyle), - silent: true - })); - }, this); - each17(splitLines, function(splitLines2, idx) { - this.group.add(mergePath$1(splitLines2, { - style: defaults2({ - fill: "none", - stroke: splitLineColorsArr[idx % splitLineColorsArr.length] - }, lineStyle), - silent: true - })); - }, this); - }; - RadarView4.type = "radar"; - return RadarView4; - }(ComponentView2) - ); - var IndicatorAxis2 = ( - /** @class */ - function(_super) { - __extends2(IndicatorAxis3, _super); - function IndicatorAxis3(dim, scale5, radiusExtent) { - var _this = _super.call(this, dim, scale5, radiusExtent) || this; - _this.type = "value"; - _this.angle = 0; - _this.name = ""; - return _this; - } - return IndicatorAxis3; - }(Axis2) - ); - var Radar2 = ( - /** @class */ - function() { - function Radar3(radarModel, ecModel, api) { - this.dimensions = []; - this._model = radarModel; - this._indicatorAxes = map3(radarModel.getIndicatorModels(), function(indicatorModel, idx) { - var dim = "indicator_" + idx; - var indicatorAxis = new IndicatorAxis2( - dim, - new IntervalScale2() - // (indicatorModel.get('axisType') === 'log') ? new LogScale() : new IntervalScale() - ); - indicatorAxis.name = indicatorModel.get("name"); - indicatorAxis.model = indicatorModel; - indicatorModel.axis = indicatorAxis; - this.dimensions.push(dim); - return indicatorAxis; - }, this); - this.resize(radarModel, api); - } - Radar3.prototype.getIndicatorAxes = function() { - return this._indicatorAxes; - }; - Radar3.prototype.dataToPoint = function(value, indicatorIndex) { - var indicatorAxis = this._indicatorAxes[indicatorIndex]; - return this.coordToPoint(indicatorAxis.dataToCoord(value), indicatorIndex); - }; - Radar3.prototype.coordToPoint = function(coord, indicatorIndex) { - var indicatorAxis = this._indicatorAxes[indicatorIndex]; - var angle = indicatorAxis.angle; - var x = this.cx + coord * Math.cos(angle); - var y = this.cy - coord * Math.sin(angle); - return [x, y]; - }; - Radar3.prototype.pointToData = function(pt) { - var dx = pt[0] - this.cx; - var dy = pt[1] - this.cy; - var radius = Math.sqrt(dx * dx + dy * dy); - dx /= radius; - dy /= radius; - var radian = Math.atan2(-dy, dx); - var minRadianDiff = Infinity; - var closestAxis; - var closestAxisIdx = -1; - for (var i2 = 0; i2 < this._indicatorAxes.length; i2++) { - var indicatorAxis = this._indicatorAxes[i2]; - var diff = Math.abs(radian - indicatorAxis.angle); - if (diff < minRadianDiff) { - closestAxis = indicatorAxis; - closestAxisIdx = i2; - minRadianDiff = diff; - } - } - return [closestAxisIdx, +(closestAxis && closestAxis.coordToData(radius))]; - }; - Radar3.prototype.resize = function(radarModel, api) { - var center4 = radarModel.get("center"); - var viewWidth = api.getWidth(); - var viewHeight = api.getHeight(); - var viewSize = Math.min(viewWidth, viewHeight) / 2; - this.cx = parsePercent$1(center4[0], viewWidth); - this.cy = parsePercent$1(center4[1], viewHeight); - this.startAngle = radarModel.get("startAngle") * Math.PI / 180; - var radius = radarModel.get("radius"); - if (isString2(radius) || isNumber2(radius)) { - radius = [0, radius]; - } - this.r0 = parsePercent$1(radius[0], viewSize); - this.r = parsePercent$1(radius[1], viewSize); - each17(this._indicatorAxes, function(indicatorAxis, idx) { - indicatorAxis.setExtent(this.r0, this.r); - var angle = this.startAngle + idx * Math.PI * 2 / this._indicatorAxes.length; - angle = Math.atan2(Math.sin(angle), Math.cos(angle)); - indicatorAxis.angle = angle; - }, this); - }; - Radar3.prototype.update = function(ecModel, api) { - var indicatorAxes = this._indicatorAxes; - var radarModel = this._model; - each17(indicatorAxes, function(indicatorAxis) { - indicatorAxis.scale.setExtent(Infinity, -Infinity); - }); - ecModel.eachSeriesByType("radar", function(radarSeries, idx) { - if (radarSeries.get("coordinateSystem") !== "radar" || ecModel.getComponent("radar", radarSeries.get("radarIndex")) !== radarModel) { - return; - } - var data = radarSeries.getData(); - each17(indicatorAxes, function(indicatorAxis) { - indicatorAxis.scale.unionExtentFromData(data, data.mapDimension(indicatorAxis.dim)); - }); - }, this); - var splitNumber = radarModel.get("splitNumber"); - var dummyScale = new IntervalScale2(); - dummyScale.setExtent(0, splitNumber); - dummyScale.setInterval(1); - each17(indicatorAxes, function(indicatorAxis, idx) { - alignScaleTicks2(indicatorAxis.scale, indicatorAxis.model, dummyScale); - }); - }; - Radar3.prototype.convertToPixel = function(ecModel, finder, value) { - console.warn("Not implemented."); - return null; - }; - Radar3.prototype.convertFromPixel = function(ecModel, finder, pixel) { - console.warn("Not implemented."); - return null; - }; - Radar3.prototype.containPoint = function(point) { - console.warn("Not implemented."); - return false; - }; - Radar3.create = function(ecModel, api) { - var radarList = []; - ecModel.eachComponent("radar", function(radarModel) { - var radar = new Radar3(radarModel, ecModel, api); - radarList.push(radar); - radarModel.coordinateSystem = radar; - }); - ecModel.eachSeriesByType("radar", function(radarSeries) { - if (radarSeries.get("coordinateSystem") === "radar") { - radarSeries.coordinateSystem = radarList[radarSeries.get("radarIndex") || 0]; - } - }); - return radarList; - }; - Radar3.dimensions = []; - return Radar3; - }() - ); - function install$7(registers) { - registers.registerCoordinateSystem("radar", Radar2); - registers.registerComponentModel(RadarModel2); - registers.registerComponentView(RadarView$1); - registers.registerVisual({ - seriesType: "radar", - reset: function(seriesModel) { - var data = seriesModel.getData(); - data.each(function(idx) { - data.setItemVisual(idx, "legendIcon", "roundRect"); - }); - data.setVisual("legendIcon", "roundRect"); - } - }); - } - function install$8(registers) { - use2(install$7); - registers.registerChartView(RadarView3); - registers.registerSeriesModel(RadarSeriesModel2); - registers.registerLayout(radarLayout2); - registers.registerProcessor(dataFilter3("radar")); - registers.registerPreprocessor(radarBackwardCompat2); - } - var ATTR2 = "\0_ec_interaction_mutex"; - function take2(zr, resourceKey, userKey) { - var store = getStore2(zr); - store[resourceKey] = userKey; - } - function release2(zr, resourceKey, userKey) { - var store = getStore2(zr); - var uKey = store[resourceKey]; - if (uKey === userKey) { - store[resourceKey] = null; - } - } - function isTaken2(zr, resourceKey) { - return !!getStore2(zr)[resourceKey]; - } - function getStore2(zr) { - return zr[ATTR2] || (zr[ATTR2] = {}); - } - registerAction2({ - type: "takeGlobalCursor", - event: "globalCursorTaken", - update: "update" - }, noop2); - var RoamController2 = ( - /** @class */ - function(_super) { - __extends2(RoamController3, _super); - function RoamController3(zr) { - var _this = _super.call(this) || this; - _this._zr = zr; - var mousedownHandler = bind3(_this._mousedownHandler, _this); - var mousemoveHandler = bind3(_this._mousemoveHandler, _this); - var mouseupHandler = bind3(_this._mouseupHandler, _this); - var mousewheelHandler = bind3(_this._mousewheelHandler, _this); - var pinchHandler = bind3(_this._pinchHandler, _this); - _this.enable = function(controlType, opt) { - this.disable(); - this._opt = defaults2(clone6(opt) || {}, { - zoomOnMouseWheel: true, - moveOnMouseMove: true, - // By default, wheel do not trigger move. - moveOnMouseWheel: false, - preventDefaultMouseMove: true - }); - if (controlType == null) { - controlType = true; - } - if (controlType === true || controlType === "move" || controlType === "pan") { - zr.on("mousedown", mousedownHandler); - zr.on("mousemove", mousemoveHandler); - zr.on("mouseup", mouseupHandler); - } - if (controlType === true || controlType === "scale" || controlType === "zoom") { - zr.on("mousewheel", mousewheelHandler); - zr.on("pinch", pinchHandler); - } - }; - _this.disable = function() { - zr.off("mousedown", mousedownHandler); - zr.off("mousemove", mousemoveHandler); - zr.off("mouseup", mouseupHandler); - zr.off("mousewheel", mousewheelHandler); - zr.off("pinch", pinchHandler); - }; - return _this; - } - RoamController3.prototype.isDragging = function() { - return this._dragging; - }; - RoamController3.prototype.isPinching = function() { - return this._pinching; - }; - RoamController3.prototype.setPointerChecker = function(pointerChecker) { - this.pointerChecker = pointerChecker; - }; - RoamController3.prototype.dispose = function() { - this.disable(); - }; - RoamController3.prototype._mousedownHandler = function(e3) { - if (isMiddleOrRightButtonOnMouseUpDown2(e3)) { - return; - } - var el = e3.target; - while (el) { - if (el.draggable) { - return; - } - el = el.__hostTarget || el.parent; - } - var x = e3.offsetX; - var y = e3.offsetY; - if (this.pointerChecker && this.pointerChecker(e3, x, y)) { - this._x = x; - this._y = y; - this._dragging = true; - } - }; - RoamController3.prototype._mousemoveHandler = function(e3) { - if (!this._dragging || !isAvailableBehavior2("moveOnMouseMove", e3, this._opt) || e3.gestureEvent === "pinch" || isTaken2(this._zr, "globalPan")) { - return; - } - var x = e3.offsetX; - var y = e3.offsetY; - var oldX = this._x; - var oldY = this._y; - var dx = x - oldX; - var dy = y - oldY; - this._x = x; - this._y = y; - this._opt.preventDefaultMouseMove && stop2(e3.event); - trigger3(this, "pan", "moveOnMouseMove", e3, { - dx, - dy, - oldX, - oldY, - newX: x, - newY: y, - isAvailableBehavior: null - }); - }; - RoamController3.prototype._mouseupHandler = function(e3) { - if (!isMiddleOrRightButtonOnMouseUpDown2(e3)) { - this._dragging = false; - } - }; - RoamController3.prototype._mousewheelHandler = function(e3) { - var shouldZoom = isAvailableBehavior2("zoomOnMouseWheel", e3, this._opt); - var shouldMove = isAvailableBehavior2("moveOnMouseWheel", e3, this._opt); - var wheelDelta = e3.wheelDelta; - var absWheelDeltaDelta = Math.abs(wheelDelta); - var originX = e3.offsetX; - var originY = e3.offsetY; - if (wheelDelta === 0 || !shouldZoom && !shouldMove) { - return; - } - if (shouldZoom) { - var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1; - var scale5 = wheelDelta > 0 ? factor : 1 / factor; - checkPointerAndTrigger2(this, "zoom", "zoomOnMouseWheel", e3, { - scale: scale5, - originX, - originY, - isAvailableBehavior: null - }); - } - if (shouldMove) { - var absDelta = Math.abs(wheelDelta); - var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05); - checkPointerAndTrigger2(this, "scrollMove", "moveOnMouseWheel", e3, { - scrollDelta, - originX, - originY, - isAvailableBehavior: null - }); - } - }; - RoamController3.prototype._pinchHandler = function(e3) { - if (isTaken2(this._zr, "globalPan")) { - return; - } - var scale5 = e3.pinchScale > 1 ? 1.1 : 1 / 1.1; - checkPointerAndTrigger2(this, "zoom", null, e3, { - scale: scale5, - originX: e3.pinchX, - originY: e3.pinchY, - isAvailableBehavior: null - }); - }; - return RoamController3; - }(Eventful2) - ); - function checkPointerAndTrigger2(controller, eventName, behaviorToCheck, e3, contollerEvent) { - if (controller.pointerChecker && controller.pointerChecker(e3, contollerEvent.originX, contollerEvent.originY)) { - stop2(e3.event); - trigger3(controller, eventName, behaviorToCheck, e3, contollerEvent); - } - } - function trigger3(controller, eventName, behaviorToCheck, e3, contollerEvent) { - contollerEvent.isAvailableBehavior = bind3(isAvailableBehavior2, null, behaviorToCheck, e3); - controller.trigger(eventName, contollerEvent); - } - function isAvailableBehavior2(behaviorToCheck, e3, settings) { - var setting = settings[behaviorToCheck]; - return !behaviorToCheck || setting && (!isString2(setting) || e3.event[setting + "Key"]); - } - function updateViewOnPan2(controllerHost, dx, dy) { - var target = controllerHost.target; - target.x += dx; - target.y += dy; - target.dirty(); - } - function updateViewOnZoom2(controllerHost, zoomDelta, zoomX, zoomY) { - var target = controllerHost.target; - var zoomLimit = controllerHost.zoomLimit; - var newZoom = controllerHost.zoom = controllerHost.zoom || 1; - newZoom *= zoomDelta; - if (zoomLimit) { - var zoomMin = zoomLimit.min || 0; - var zoomMax = zoomLimit.max || Infinity; - newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin); - } - var zoomScale = newZoom / controllerHost.zoom; - controllerHost.zoom = newZoom; - target.x -= (zoomX - target.x) * (zoomScale - 1); - target.y -= (zoomY - target.y) * (zoomScale - 1); - target.scaleX *= zoomScale; - target.scaleY *= zoomScale; - target.dirty(); - } - var IRRELEVANT_EXCLUDES2 = { - "axisPointer": 1, - "tooltip": 1, - "brush": 1 - }; - function onIrrelevantElement2(e3, api, targetCoordSysModel) { - var model = api.getComponentByElement(e3.topTarget); - var coordSys = model && model.coordinateSystem; - return model && model !== targetCoordSysModel && !IRRELEVANT_EXCLUDES2.hasOwnProperty(model.mainType) && coordSys && coordSys.model !== targetCoordSysModel; - } - function parseXML2(svg) { - if (isString2(svg)) { - var parser = new DOMParser(); - svg = parser.parseFromString(svg, "text/xml"); - } - var svgNode = svg; - if (svgNode.nodeType === 9) { - svgNode = svgNode.firstChild; - } - while (svgNode.nodeName.toLowerCase() !== "svg" || svgNode.nodeType !== 1) { - svgNode = svgNode.nextSibling; - } - return svgNode; - } - var nodeParsers2; - var INHERITABLE_STYLE_ATTRIBUTES_MAP2 = { - "fill": "fill", - "stroke": "stroke", - "stroke-width": "lineWidth", - "opacity": "opacity", - "fill-opacity": "fillOpacity", - "stroke-opacity": "strokeOpacity", - "stroke-dasharray": "lineDash", - "stroke-dashoffset": "lineDashOffset", - "stroke-linecap": "lineCap", - "stroke-linejoin": "lineJoin", - "stroke-miterlimit": "miterLimit", - "font-family": "fontFamily", - "font-size": "fontSize", - "font-style": "fontStyle", - "font-weight": "fontWeight", - "text-anchor": "textAlign", - "visibility": "visibility", - "display": "display" - }; - var INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS2 = keys2(INHERITABLE_STYLE_ATTRIBUTES_MAP2); - var SELF_STYLE_ATTRIBUTES_MAP2 = { - "alignment-baseline": "textBaseline", - "stop-color": "stopColor" - }; - var SELF_STYLE_ATTRIBUTES_MAP_KEYS2 = keys2(SELF_STYLE_ATTRIBUTES_MAP2); - var SVGParser2 = function() { - function SVGParser3() { - this._defs = {}; - this._root = null; - } - SVGParser3.prototype.parse = function(xml, opt) { - opt = opt || {}; - var svg = parseXML2(xml); - if (true) { - if (!svg) { - throw new Error("Illegal svg"); - } - } - this._defsUsePending = []; - var root = new Group5(); - this._root = root; - var named = []; - var viewBox = svg.getAttribute("viewBox") || ""; - var width = parseFloat(svg.getAttribute("width") || opt.width); - var height = parseFloat(svg.getAttribute("height") || opt.height); - isNaN(width) && (width = null); - isNaN(height) && (height = null); - parseAttributes2(svg, root, null, true, false); - var child = svg.firstChild; - while (child) { - this._parseNode(child, root, named, null, false, false); - child = child.nextSibling; - } - applyDefs2(this._defs, this._defsUsePending); - this._defsUsePending = []; - var viewBoxRect; - var viewBoxTransform; - if (viewBox) { - var viewBoxArr = splitNumberSequence2(viewBox); - if (viewBoxArr.length >= 4) { - viewBoxRect = { - x: parseFloat(viewBoxArr[0] || 0), - y: parseFloat(viewBoxArr[1] || 0), - width: parseFloat(viewBoxArr[2]), - height: parseFloat(viewBoxArr[3]) - }; - } - } - if (viewBoxRect && width != null && height != null) { - viewBoxTransform = makeViewBoxTransform2(viewBoxRect, { x: 0, y: 0, width, height }); - if (!opt.ignoreViewBox) { - var elRoot = root; - root = new Group5(); - root.add(elRoot); - elRoot.scaleX = elRoot.scaleY = viewBoxTransform.scale; - elRoot.x = viewBoxTransform.x; - elRoot.y = viewBoxTransform.y; - } - } - if (!opt.ignoreRootClip && width != null && height != null) { - root.setClipPath(new Rect4({ - shape: { x: 0, y: 0, width, height } - })); - } - return { - root, - width, - height, - viewBoxRect, - viewBoxTransform, - named - }; - }; - SVGParser3.prototype._parseNode = function(xmlNode, parentGroup, named, namedFrom, isInDefs, isInText) { - var nodeName = xmlNode.nodeName.toLowerCase(); - var el; - var namedFromForSub = namedFrom; - if (nodeName === "defs") { - isInDefs = true; - } - if (nodeName === "text") { - isInText = true; - } - if (nodeName === "defs" || nodeName === "switch") { - el = parentGroup; - } else { - if (!isInDefs) { - var parser_1 = nodeParsers2[nodeName]; - if (parser_1 && hasOwn2(nodeParsers2, nodeName)) { - el = parser_1.call(this, xmlNode, parentGroup); - var nameAttr = xmlNode.getAttribute("name"); - if (nameAttr) { - var newNamed = { - name: nameAttr, - namedFrom: null, - svgNodeTagLower: nodeName, - el - }; - named.push(newNamed); - if (nodeName === "g") { - namedFromForSub = newNamed; - } - } else if (namedFrom) { - named.push({ - name: namedFrom.name, - namedFrom, - svgNodeTagLower: nodeName, - el - }); - } - parentGroup.add(el); - } - } - var parser = paintServerParsers2[nodeName]; - if (parser && hasOwn2(paintServerParsers2, nodeName)) { - var def = parser.call(this, xmlNode); - var id = xmlNode.getAttribute("id"); - if (id) { - this._defs[id] = def; - } - } - } - if (el && el.isGroup) { - var child = xmlNode.firstChild; - while (child) { - if (child.nodeType === 1) { - this._parseNode(child, el, named, namedFromForSub, isInDefs, isInText); - } else if (child.nodeType === 3 && isInText) { - this._parseText(child, el); - } - child = child.nextSibling; - } - } - }; - SVGParser3.prototype._parseText = function(xmlNode, parentGroup) { - var text = new TSpan2({ - style: { - text: xmlNode.textContent - }, - silent: true, - x: this._textX || 0, - y: this._textY || 0 - }); - inheritStyle2(parentGroup, text); - parseAttributes2(xmlNode, text, this._defsUsePending, false, false); - applyTextAlignment2(text, parentGroup); - var textStyle = text.style; - var fontSize = textStyle.fontSize; - if (fontSize && fontSize < 9) { - textStyle.fontSize = 9; - text.scaleX *= fontSize / 9; - text.scaleY *= fontSize / 9; - } - var font = (textStyle.fontSize || textStyle.fontFamily) && [ - textStyle.fontStyle, - textStyle.fontWeight, - (textStyle.fontSize || 12) + "px", - textStyle.fontFamily || "sans-serif" - ].join(" "); - textStyle.font = font; - var rect = text.getBoundingRect(); - this._textX += rect.width; - parentGroup.add(text); - return text; - }; - SVGParser3.internalField = function() { - nodeParsers2 = { - "g": function(xmlNode, parentGroup) { - var g = new Group5(); - inheritStyle2(parentGroup, g); - parseAttributes2(xmlNode, g, this._defsUsePending, false, false); - return g; - }, - "rect": function(xmlNode, parentGroup) { - var rect = new Rect4(); - inheritStyle2(parentGroup, rect); - parseAttributes2(xmlNode, rect, this._defsUsePending, false, false); - rect.setShape({ - x: parseFloat(xmlNode.getAttribute("x") || "0"), - y: parseFloat(xmlNode.getAttribute("y") || "0"), - width: parseFloat(xmlNode.getAttribute("width") || "0"), - height: parseFloat(xmlNode.getAttribute("height") || "0") - }); - rect.silent = true; - return rect; - }, - "circle": function(xmlNode, parentGroup) { - var circle = new Circle2(); - inheritStyle2(parentGroup, circle); - parseAttributes2(xmlNode, circle, this._defsUsePending, false, false); - circle.setShape({ - cx: parseFloat(xmlNode.getAttribute("cx") || "0"), - cy: parseFloat(xmlNode.getAttribute("cy") || "0"), - r: parseFloat(xmlNode.getAttribute("r") || "0") - }); - circle.silent = true; - return circle; - }, - "line": function(xmlNode, parentGroup) { - var line = new Line3(); - inheritStyle2(parentGroup, line); - parseAttributes2(xmlNode, line, this._defsUsePending, false, false); - line.setShape({ - x1: parseFloat(xmlNode.getAttribute("x1") || "0"), - y1: parseFloat(xmlNode.getAttribute("y1") || "0"), - x2: parseFloat(xmlNode.getAttribute("x2") || "0"), - y2: parseFloat(xmlNode.getAttribute("y2") || "0") - }); - line.silent = true; - return line; - }, - "ellipse": function(xmlNode, parentGroup) { - var ellipse = new Ellipse2(); - inheritStyle2(parentGroup, ellipse); - parseAttributes2(xmlNode, ellipse, this._defsUsePending, false, false); - ellipse.setShape({ - cx: parseFloat(xmlNode.getAttribute("cx") || "0"), - cy: parseFloat(xmlNode.getAttribute("cy") || "0"), - rx: parseFloat(xmlNode.getAttribute("rx") || "0"), - ry: parseFloat(xmlNode.getAttribute("ry") || "0") - }); - ellipse.silent = true; - return ellipse; - }, - "polygon": function(xmlNode, parentGroup) { - var pointsStr = xmlNode.getAttribute("points"); - var pointsArr; - if (pointsStr) { - pointsArr = parsePoints2(pointsStr); - } - var polygon = new Polygon2({ - shape: { - points: pointsArr || [] - }, - silent: true - }); - inheritStyle2(parentGroup, polygon); - parseAttributes2(xmlNode, polygon, this._defsUsePending, false, false); - return polygon; - }, - "polyline": function(xmlNode, parentGroup) { - var pointsStr = xmlNode.getAttribute("points"); - var pointsArr; - if (pointsStr) { - pointsArr = parsePoints2(pointsStr); - } - var polyline = new Polyline3({ - shape: { - points: pointsArr || [] - }, - silent: true - }); - inheritStyle2(parentGroup, polyline); - parseAttributes2(xmlNode, polyline, this._defsUsePending, false, false); - return polyline; - }, - "image": function(xmlNode, parentGroup) { - var img = new ZRImage2(); - inheritStyle2(parentGroup, img); - parseAttributes2(xmlNode, img, this._defsUsePending, false, false); - img.setStyle({ - image: xmlNode.getAttribute("xlink:href") || xmlNode.getAttribute("href"), - x: +xmlNode.getAttribute("x"), - y: +xmlNode.getAttribute("y"), - width: +xmlNode.getAttribute("width"), - height: +xmlNode.getAttribute("height") - }); - img.silent = true; - return img; - }, - "text": function(xmlNode, parentGroup) { - var x = xmlNode.getAttribute("x") || "0"; - var y = xmlNode.getAttribute("y") || "0"; - var dx = xmlNode.getAttribute("dx") || "0"; - var dy = xmlNode.getAttribute("dy") || "0"; - this._textX = parseFloat(x) + parseFloat(dx); - this._textY = parseFloat(y) + parseFloat(dy); - var g = new Group5(); - inheritStyle2(parentGroup, g); - parseAttributes2(xmlNode, g, this._defsUsePending, false, true); - return g; - }, - "tspan": function(xmlNode, parentGroup) { - var x = xmlNode.getAttribute("x"); - var y = xmlNode.getAttribute("y"); - if (x != null) { - this._textX = parseFloat(x); - } - if (y != null) { - this._textY = parseFloat(y); - } - var dx = xmlNode.getAttribute("dx") || "0"; - var dy = xmlNode.getAttribute("dy") || "0"; - var g = new Group5(); - inheritStyle2(parentGroup, g); - parseAttributes2(xmlNode, g, this._defsUsePending, false, true); - this._textX += parseFloat(dx); - this._textY += parseFloat(dy); - return g; - }, - "path": function(xmlNode, parentGroup) { - var d = xmlNode.getAttribute("d") || ""; - var path = createFromString2(d); - inheritStyle2(parentGroup, path); - parseAttributes2(xmlNode, path, this._defsUsePending, false, false); - path.silent = true; - return path; - } - }; - }(); - return SVGParser3; - }(); - var paintServerParsers2 = { - "lineargradient": function(xmlNode) { - var x1 = parseInt(xmlNode.getAttribute("x1") || "0", 10); - var y1 = parseInt(xmlNode.getAttribute("y1") || "0", 10); - var x2 = parseInt(xmlNode.getAttribute("x2") || "10", 10); - var y2 = parseInt(xmlNode.getAttribute("y2") || "0", 10); - var gradient = new LinearGradient2(x1, y1, x2, y2); - parsePaintServerUnit2(xmlNode, gradient); - parseGradientColorStops2(xmlNode, gradient); - return gradient; - }, - "radialgradient": function(xmlNode) { - var cx = parseInt(xmlNode.getAttribute("cx") || "0", 10); - var cy = parseInt(xmlNode.getAttribute("cy") || "0", 10); - var r = parseInt(xmlNode.getAttribute("r") || "0", 10); - var gradient = new RadialGradient2(cx, cy, r); - parsePaintServerUnit2(xmlNode, gradient); - parseGradientColorStops2(xmlNode, gradient); - return gradient; - } - }; - function parsePaintServerUnit2(xmlNode, gradient) { - var gradientUnits = xmlNode.getAttribute("gradientUnits"); - if (gradientUnits === "userSpaceOnUse") { - gradient.global = true; - } - } - function parseGradientColorStops2(xmlNode, gradient) { - var stop3 = xmlNode.firstChild; - while (stop3) { - if (stop3.nodeType === 1 && stop3.nodeName.toLocaleLowerCase() === "stop") { - var offsetStr = stop3.getAttribute("offset"); - var offset3 = void 0; - if (offsetStr && offsetStr.indexOf("%") > 0) { - offset3 = parseInt(offsetStr, 10) / 100; - } else if (offsetStr) { - offset3 = parseFloat(offsetStr); - } else { - offset3 = 0; - } - var styleVals = {}; - parseInlineStyle2(stop3, styleVals, styleVals); - var stopColor = styleVals.stopColor || stop3.getAttribute("stop-color") || "#000000"; - gradient.colorStops.push({ - offset: offset3, - color: stopColor - }); - } - stop3 = stop3.nextSibling; - } - } - function inheritStyle2(parent, child) { - if (parent && parent.__inheritedStyle) { - if (!child.__inheritedStyle) { - child.__inheritedStyle = {}; - } - defaults2(child.__inheritedStyle, parent.__inheritedStyle); - } - } - function parsePoints2(pointsString) { - var list = splitNumberSequence2(pointsString); - var points5 = []; - for (var i2 = 0; i2 < list.length; i2 += 2) { - var x = parseFloat(list[i2]); - var y = parseFloat(list[i2 + 1]); - points5.push([x, y]); - } - return points5; - } - function parseAttributes2(xmlNode, el, defsUsePending, onlyInlineStyle, isTextGroup) { - var disp = el; - var inheritedStyle = disp.__inheritedStyle = disp.__inheritedStyle || {}; - var selfStyle = {}; - if (xmlNode.nodeType === 1) { - parseTransformAttribute2(xmlNode, el); - parseInlineStyle2(xmlNode, inheritedStyle, selfStyle); - if (!onlyInlineStyle) { - parseAttributeStyle2(xmlNode, inheritedStyle, selfStyle); - } - } - disp.style = disp.style || {}; - if (inheritedStyle.fill != null) { - disp.style.fill = getFillStrokeStyle2(disp, "fill", inheritedStyle.fill, defsUsePending); - } - if (inheritedStyle.stroke != null) { - disp.style.stroke = getFillStrokeStyle2(disp, "stroke", inheritedStyle.stroke, defsUsePending); - } - each17([ - "lineWidth", - "opacity", - "fillOpacity", - "strokeOpacity", - "miterLimit", - "fontSize" - ], function(propName) { - if (inheritedStyle[propName] != null) { - disp.style[propName] = parseFloat(inheritedStyle[propName]); - } - }); - each17([ - "lineDashOffset", - "lineCap", - "lineJoin", - "fontWeight", - "fontFamily", - "fontStyle", - "textAlign" - ], function(propName) { - if (inheritedStyle[propName] != null) { - disp.style[propName] = inheritedStyle[propName]; - } - }); - if (isTextGroup) { - disp.__selfStyle = selfStyle; - } - if (inheritedStyle.lineDash) { - disp.style.lineDash = map3(splitNumberSequence2(inheritedStyle.lineDash), function(str) { - return parseFloat(str); - }); - } - if (inheritedStyle.visibility === "hidden" || inheritedStyle.visibility === "collapse") { - disp.invisible = true; - } - if (inheritedStyle.display === "none") { - disp.ignore = true; - } - } - function applyTextAlignment2(text, parentGroup) { - var parentSelfStyle = parentGroup.__selfStyle; - if (parentSelfStyle) { - var textBaseline = parentSelfStyle.textBaseline; - var zrTextBaseline = textBaseline; - if (!textBaseline || textBaseline === "auto") { - zrTextBaseline = "alphabetic"; - } else if (textBaseline === "baseline") { - zrTextBaseline = "alphabetic"; - } else if (textBaseline === "before-edge" || textBaseline === "text-before-edge") { - zrTextBaseline = "top"; - } else if (textBaseline === "after-edge" || textBaseline === "text-after-edge") { - zrTextBaseline = "bottom"; - } else if (textBaseline === "central" || textBaseline === "mathematical") { - zrTextBaseline = "middle"; - } - text.style.textBaseline = zrTextBaseline; - } - var parentInheritedStyle = parentGroup.__inheritedStyle; - if (parentInheritedStyle) { - var textAlign = parentInheritedStyle.textAlign; - var zrTextAlign = textAlign; - if (textAlign) { - if (textAlign === "middle") { - zrTextAlign = "center"; - } - text.style.textAlign = zrTextAlign; - } - } - } - var urlRegex2 = /^url\(\s*#(.*?)\)/; - function getFillStrokeStyle2(el, method, str, defsUsePending) { - var urlMatch = str && str.match(urlRegex2); - if (urlMatch) { - var url = trim3(urlMatch[1]); - defsUsePending.push([el, method, url]); - return; - } - if (str === "none") { - str = null; - } - return str; - } - function applyDefs2(defs, defsUsePending) { - for (var i2 = 0; i2 < defsUsePending.length; i2++) { - var item = defsUsePending[i2]; - item[0].style[item[1]] = defs[item[2]]; - } - } - var numberReg$1 = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g; - function splitNumberSequence2(rawStr) { - return rawStr.match(numberReg$1) || []; - } - var transformRegex2 = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.eE,]*)\)/g; - var DEGREE_TO_ANGLE2 = Math.PI / 180; - function parseTransformAttribute2(xmlNode, node) { - var transform2 = xmlNode.getAttribute("transform"); - if (transform2) { - transform2 = transform2.replace(/,/g, " "); - var transformOps_1 = []; - var mt = null; - transform2.replace(transformRegex2, function(str, type2, value2) { - transformOps_1.push(type2, value2); - return ""; - }); - for (var i2 = transformOps_1.length - 1; i2 > 0; i2 -= 2) { - var value = transformOps_1[i2]; - var type = transformOps_1[i2 - 1]; - var valueArr = splitNumberSequence2(value); - mt = mt || create$1(); - switch (type) { - case "translate": - translate2(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || "0")]); - break; - case "scale": - scale$1(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || valueArr[0])]); - break; - case "rotate": - rotate2(mt, mt, -parseFloat(valueArr[0]) * DEGREE_TO_ANGLE2, [ - parseFloat(valueArr[1] || "0"), - parseFloat(valueArr[2] || "0") - ]); - break; - case "skewX": - var sx = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE2); - mul$1(mt, [1, 0, sx, 1, 0, 0], mt); - break; - case "skewY": - var sy = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE2); - mul$1(mt, [1, sy, 0, 1, 0, 0], mt); - break; - case "matrix": - mt[0] = parseFloat(valueArr[0]); - mt[1] = parseFloat(valueArr[1]); - mt[2] = parseFloat(valueArr[2]); - mt[3] = parseFloat(valueArr[3]); - mt[4] = parseFloat(valueArr[4]); - mt[5] = parseFloat(valueArr[5]); - break; - } - } - node.setLocalTransform(mt); - } - } - var styleRegex2 = /([^\s:;]+)\s*:\s*([^:;]+)/g; - function parseInlineStyle2(xmlNode, inheritableStyleResult, selfStyleResult) { - var style = xmlNode.getAttribute("style"); - if (!style) { - return; - } - styleRegex2.lastIndex = 0; - var styleRegResult; - while ((styleRegResult = styleRegex2.exec(style)) != null) { - var svgStlAttr = styleRegResult[1]; - var zrInheritableStlAttr = hasOwn2(INHERITABLE_STYLE_ATTRIBUTES_MAP2, svgStlAttr) ? INHERITABLE_STYLE_ATTRIBUTES_MAP2[svgStlAttr] : null; - if (zrInheritableStlAttr) { - inheritableStyleResult[zrInheritableStlAttr] = styleRegResult[2]; - } - var zrSelfStlAttr = hasOwn2(SELF_STYLE_ATTRIBUTES_MAP2, svgStlAttr) ? SELF_STYLE_ATTRIBUTES_MAP2[svgStlAttr] : null; - if (zrSelfStlAttr) { - selfStyleResult[zrSelfStlAttr] = styleRegResult[2]; - } - } - } - function parseAttributeStyle2(xmlNode, inheritableStyleResult, selfStyleResult) { - for (var i2 = 0; i2 < INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS2.length; i2++) { - var svgAttrName = INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS2[i2]; - var attrValue = xmlNode.getAttribute(svgAttrName); - if (attrValue != null) { - inheritableStyleResult[INHERITABLE_STYLE_ATTRIBUTES_MAP2[svgAttrName]] = attrValue; - } - } - for (var i2 = 0; i2 < SELF_STYLE_ATTRIBUTES_MAP_KEYS2.length; i2++) { - var svgAttrName = SELF_STYLE_ATTRIBUTES_MAP_KEYS2[i2]; - var attrValue = xmlNode.getAttribute(svgAttrName); - if (attrValue != null) { - selfStyleResult[SELF_STYLE_ATTRIBUTES_MAP2[svgAttrName]] = attrValue; - } - } - } - function makeViewBoxTransform2(viewBoxRect, boundingRect) { - var scaleX = boundingRect.width / viewBoxRect.width; - var scaleY = boundingRect.height / viewBoxRect.height; - var scale5 = Math.min(scaleX, scaleY); - return { - scale: scale5, - x: -(viewBoxRect.x + viewBoxRect.width / 2) * scale5 + (boundingRect.x + boundingRect.width / 2), - y: -(viewBoxRect.y + viewBoxRect.height / 2) * scale5 + (boundingRect.y + boundingRect.height / 2) - }; - } - function parseSVG2(xml, opt) { - var parser = new SVGParser2(); - return parser.parse(xml, opt); - } - var REGION_AVAILABLE_SVG_TAG_MAP2 = createHashMap2([ - "rect", - "circle", - "line", - "ellipse", - "polygon", - "polyline", - "path", - // are also enabled because some SVG might paint text itself, - // but still need to trigger events or tooltip. - "text", - "tspan", - // is also enabled because this case: if multiple tags share one name - // and need label displayed, every tags will display the name, which is not - // expected. So we can put them into a . Thereby only one label - // displayed and located based on the bounding rect of the . - "g" - ]); - var GeoSVGResource2 = ( - /** @class */ - function() { - function GeoSVGResource3(mapName, svg) { - this.type = "geoSVG"; - this._usedGraphicMap = createHashMap2(); - this._freedGraphics = []; - this._mapName = mapName; - this._parsedXML = parseXML2(svg); - } - GeoSVGResource3.prototype.load = function() { - var firstGraphic = this._firstGraphic; - if (!firstGraphic) { - firstGraphic = this._firstGraphic = this._buildGraphic(this._parsedXML); - this._freedGraphics.push(firstGraphic); - this._boundingRect = this._firstGraphic.boundingRect.clone(); - var _a3 = createRegions2(firstGraphic.named), regions = _a3.regions, regionsMap = _a3.regionsMap; - this._regions = regions; - this._regionsMap = regionsMap; - } - return { - boundingRect: this._boundingRect, - regions: this._regions, - regionsMap: this._regionsMap - }; - }; - GeoSVGResource3.prototype._buildGraphic = function(svgXML) { - var result; - var rootFromParse; - try { - result = svgXML && parseSVG2(svgXML, { - ignoreViewBox: true, - ignoreRootClip: true - }) || {}; - rootFromParse = result.root; - assert2(rootFromParse != null); - } catch (e3) { - throw new Error("Invalid svg format\n" + e3.message); - } - var root = new Group5(); - root.add(rootFromParse); - root.isGeoSVGGraphicRoot = true; - var svgWidth = result.width; - var svgHeight = result.height; - var viewBoxRect = result.viewBoxRect; - var boundingRect = this._boundingRect; - if (!boundingRect) { - var bRectX = void 0; - var bRectY = void 0; - var bRectWidth = void 0; - var bRectHeight = void 0; - if (svgWidth != null) { - bRectX = 0; - bRectWidth = svgWidth; - } else if (viewBoxRect) { - bRectX = viewBoxRect.x; - bRectWidth = viewBoxRect.width; - } - if (svgHeight != null) { - bRectY = 0; - bRectHeight = svgHeight; - } else if (viewBoxRect) { - bRectY = viewBoxRect.y; - bRectHeight = viewBoxRect.height; - } - if (bRectX == null || bRectY == null) { - var calculatedBoundingRect = rootFromParse.getBoundingRect(); - if (bRectX == null) { - bRectX = calculatedBoundingRect.x; - bRectWidth = calculatedBoundingRect.width; - } - if (bRectY == null) { - bRectY = calculatedBoundingRect.y; - bRectHeight = calculatedBoundingRect.height; - } - } - boundingRect = this._boundingRect = new BoundingRect2(bRectX, bRectY, bRectWidth, bRectHeight); - } - if (viewBoxRect) { - var viewBoxTransform = makeViewBoxTransform2(viewBoxRect, boundingRect); - rootFromParse.scaleX = rootFromParse.scaleY = viewBoxTransform.scale; - rootFromParse.x = viewBoxTransform.x; - rootFromParse.y = viewBoxTransform.y; - } - root.setClipPath(new Rect4({ - shape: boundingRect.plain() - })); - var named = []; - each17(result.named, function(namedItem) { - if (REGION_AVAILABLE_SVG_TAG_MAP2.get(namedItem.svgNodeTagLower) != null) { - named.push(namedItem); - setSilent2(namedItem.el); - } - }); - return { - root, - boundingRect, - named - }; - }; - GeoSVGResource3.prototype.useGraphic = function(hostKey) { - var usedRootMap = this._usedGraphicMap; - var svgGraphic = usedRootMap.get(hostKey); - if (svgGraphic) { - return svgGraphic; - } - svgGraphic = this._freedGraphics.pop() || this._buildGraphic(this._parsedXML); - usedRootMap.set(hostKey, svgGraphic); - return svgGraphic; - }; - GeoSVGResource3.prototype.freeGraphic = function(hostKey) { - var usedRootMap = this._usedGraphicMap; - var svgGraphic = usedRootMap.get(hostKey); - if (svgGraphic) { - usedRootMap.removeKey(hostKey); - this._freedGraphics.push(svgGraphic); - } - }; - return GeoSVGResource3; - }() - ); - function setSilent2(el) { - el.silent = false; - if (el.isGroup) { - el.traverse(function(child) { - child.silent = false; - }); - } - } - function createRegions2(named) { - var regions = []; - var regionsMap = createHashMap2(); - each17(named, function(namedItem) { - if (namedItem.namedFrom != null) { - return; - } - var region = new GeoSVGRegion2(namedItem.name, namedItem.el); - regions.push(region); - regionsMap.set(namedItem.name, region); - }); - return { - regions, - regionsMap - }; - } - var geoCoord2 = [126, 25]; - var nanhaiName2 = "\u5357\u6D77\u8BF8\u5C9B"; - var points$1 = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, 0.7], [52, 0.7], [56, 7.7], [59, 0.7], [64, 0.7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]]; - for (var i = 0; i < points$1.length; i++) { - for (var k = 0; k < points$1[i].length; k++) { - points$1[i][k][0] /= 10.5; - points$1[i][k][1] /= -10.5 / 0.75; - points$1[i][k][0] += geoCoord2[0]; - points$1[i][k][1] += geoCoord2[1]; - } - } - function fixNanhai2(mapType, regions) { - if (mapType === "china") { - for (var i2 = 0; i2 < regions.length; i2++) { - if (regions[i2].name === nanhaiName2) { - return; - } - } - regions.push(new GeoJSONRegion2(nanhaiName2, map3(points$1, function(exterior) { - return { - type: "polygon", - exterior - }; - }), geoCoord2)); - } - } - var coordsOffsetMap2 = { - "\u5357\u6D77\u8BF8\u5C9B": [32, 80], - // 全国 - "\u5E7F\u4E1C": [0, -10], - "\u9999\u6E2F": [10, 5], - "\u6FB3\u95E8": [-10, 10], - // '北京': [-10, 0], - "\u5929\u6D25": [5, 5] - }; - function fixTextCoords2(mapType, region) { - if (mapType === "china") { - var coordFix = coordsOffsetMap2[region.name]; - if (coordFix) { - var cp = region.getCenter(); - cp[0] += coordFix[0] / 10.5; - cp[1] += -coordFix[1] / (10.5 / 0.75); - region.setCenter(cp); - } - } - } - var points$2 = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]]; - function fixDiaoyuIsland2(mapType, region) { - if (mapType === "china" && region.name === "\u53F0\u6E7E") { - region.geometries.push({ - type: "polygon", - exterior: points$2[0] - }); - } - } - var DEFAULT_NAME_PROPERTY2 = "name"; - var GeoJSONResource2 = ( - /** @class */ - function() { - function GeoJSONResource3(mapName, geoJSON, specialAreas) { - this.type = "geoJSON"; - this._parsedMap = createHashMap2(); - this._mapName = mapName; - this._specialAreas = specialAreas; - this._geoJSON = parseInput2(geoJSON); - } - GeoJSONResource3.prototype.load = function(nameMap, nameProperty) { - nameProperty = nameProperty || DEFAULT_NAME_PROPERTY2; - var parsed = this._parsedMap.get(nameProperty); - if (!parsed) { - var rawRegions = this._parseToRegions(nameProperty); - parsed = this._parsedMap.set(nameProperty, { - regions: rawRegions, - boundingRect: calculateBoundingRect2(rawRegions) - }); - } - var regionsMap = createHashMap2(); - var finalRegions = []; - each17(parsed.regions, function(region) { - var regionName = region.name; - if (nameMap && hasOwn2(nameMap, regionName)) { - region = region.cloneShallow(regionName = nameMap[regionName]); - } - finalRegions.push(region); - regionsMap.set(regionName, region); - }); - return { - regions: finalRegions, - boundingRect: parsed.boundingRect || new BoundingRect2(0, 0, 0, 0), - regionsMap - }; - }; - GeoJSONResource3.prototype._parseToRegions = function(nameProperty) { - var mapName = this._mapName; - var geoJSON = this._geoJSON; - var rawRegions; - try { - rawRegions = geoJSON ? parseGeoJSON2(geoJSON, nameProperty) : []; - } catch (e3) { - throw new Error("Invalid geoJson format\n" + e3.message); - } - fixNanhai2(mapName, rawRegions); - each17(rawRegions, function(region) { - var regionName = region.name; - fixTextCoords2(mapName, region); - fixDiaoyuIsland2(mapName, region); - var specialArea = this._specialAreas && this._specialAreas[regionName]; - if (specialArea) { - region.transformTo(specialArea.left, specialArea.top, specialArea.width, specialArea.height); - } - }, this); - return rawRegions; - }; - GeoJSONResource3.prototype.getMapForUser = function() { - return { - // For backward compatibility, use geoJson - // PENDING: it has been returning them without clone. - // do we need to avoid outsite modification? - geoJson: this._geoJSON, - geoJSON: this._geoJSON, - specialAreas: this._specialAreas - }; - }; - return GeoJSONResource3; - }() - ); - function calculateBoundingRect2(regions) { - var rect; - for (var i2 = 0; i2 < regions.length; i2++) { - var regionRect = regions[i2].getBoundingRect(); - rect = rect || regionRect.clone(); - rect.union(regionRect); - } - return rect; - } - function parseInput2(source) { - return !isString2(source) ? source : typeof JSON !== "undefined" && JSON.parse ? JSON.parse(source) : new Function("return (" + source + ");")(); - } - var storage2 = createHashMap2(); - var geoSourceManager = { - /** - * Compatible with previous `echarts.registerMap`. - * - * @usage - * ```js - * - * echarts.registerMap('USA', geoJson, specialAreas); - * - * echarts.registerMap('USA', { - * geoJson: geoJson, - * specialAreas: {...} - * }); - * echarts.registerMap('USA', { - * geoJSON: geoJson, - * specialAreas: {...} - * }); - * - * echarts.registerMap('airport', { - * svg: svg - * } - * ``` - * - * Note: - * Do not support that register multiple geoJSON or SVG - * one map name. Because different geoJSON and SVG have - * different unit. It's not easy to make sure how those - * units are mapping/normalize. - * If intending to use multiple geoJSON or SVG, we can - * use multiple geo coordinate system. - */ - registerMap: function(mapName, rawDef, rawSpecialAreas) { - if (rawDef.svg) { - var resource = new GeoSVGResource2(mapName, rawDef.svg); - storage2.set(mapName, resource); - } else { - var geoJSON = rawDef.geoJson || rawDef.geoJSON; - if (geoJSON && !rawDef.features) { - rawSpecialAreas = rawDef.specialAreas; - } else { - geoJSON = rawDef; - } - var resource = new GeoJSONResource2(mapName, geoJSON, rawSpecialAreas); - storage2.set(mapName, resource); - } - }, - getGeoResource: function(mapName) { - return storage2.get(mapName); - }, - /** - * Only for exporting to users. - * **MUST NOT** used internally. - */ - getMapForUser: function(mapName) { - var resource = storage2.get(mapName); - return resource && resource.type === "geoJSON" && resource.getMapForUser(); - }, - load: function(mapName, nameMap, nameProperty) { - var resource = storage2.get(mapName); - if (!resource) { - if (true) { - console.error("Map " + mapName + " not exists. The GeoJSON of the map must be provided."); - } - return; - } - return resource.load(nameMap, nameProperty); - } - }; - var OPTION_STYLE_ENABLED_TAGS2 = ["rect", "circle", "line", "ellipse", "polygon", "polyline", "path"]; - var OPTION_STYLE_ENABLED_TAG_MAP2 = createHashMap2(OPTION_STYLE_ENABLED_TAGS2); - var STATE_TRIGGER_TAG_MAP2 = createHashMap2(OPTION_STYLE_ENABLED_TAGS2.concat(["g"])); - var LABEL_HOST_MAP2 = createHashMap2(OPTION_STYLE_ENABLED_TAGS2.concat(["g"])); - var mapLabelRaw2 = makeInner2(); - function getFixedItemStyle2(model) { - var itemStyle = model.getItemStyle(); - var areaColor = model.get("areaColor"); - if (areaColor != null) { - itemStyle.fill = areaColor; - } - return itemStyle; - } - function fixLineStyle2(styleHost) { - var style = styleHost.style; - if (style) { - style.stroke = style.stroke || style.fill; - style.fill = null; - } - } - var MapDraw2 = ( - /** @class */ - function() { - function MapDraw3(api) { - var group = new Group5(); - this.uid = getUID2("ec_map_draw"); - this._controller = new RoamController2(api.getZr()); - this._controllerHost = { - target: group - }; - this.group = group; - group.add(this._regionsGroup = new Group5()); - group.add(this._svgGroup = new Group5()); - } - MapDraw3.prototype.draw = function(mapOrGeoModel, ecModel, api, fromView, payload) { - var isGeo = mapOrGeoModel.mainType === "geo"; - var data = mapOrGeoModel.getData && mapOrGeoModel.getData(); - isGeo && ecModel.eachComponent({ - mainType: "series", - subType: "map" - }, function(mapSeries) { - if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) { - data = mapSeries.getData(); - } - }); - var geo = mapOrGeoModel.coordinateSystem; - var regionsGroup = this._regionsGroup; - var group = this.group; - var transformInfo = geo.getTransformInfo(); - var transformInfoRaw = transformInfo.raw; - var transformInfoRoam = transformInfo.roam; - var isFirstDraw = !regionsGroup.childAt(0) || payload; - if (isFirstDraw) { - group.x = transformInfoRoam.x; - group.y = transformInfoRoam.y; - group.scaleX = transformInfoRoam.scaleX; - group.scaleY = transformInfoRoam.scaleY; - group.dirty(); - } else { - updateProps3(group, transformInfoRoam, mapOrGeoModel); - } - var isVisualEncodedByVisualMap = data && data.getVisual("visualMeta") && data.getVisual("visualMeta").length > 0; - var viewBuildCtx = { - api, - geo, - mapOrGeoModel, - data, - isVisualEncodedByVisualMap, - isGeo, - transformInfoRaw - }; - if (geo.resourceType === "geoJSON") { - this._buildGeoJSON(viewBuildCtx); - } else if (geo.resourceType === "geoSVG") { - this._buildSVG(viewBuildCtx); - } - this._updateController(mapOrGeoModel, ecModel, api); - this._updateMapSelectHandler(mapOrGeoModel, regionsGroup, api, fromView); - }; - MapDraw3.prototype._buildGeoJSON = function(viewBuildCtx) { - var regionsGroupByName = this._regionsGroupByName = createHashMap2(); - var regionsInfoByName = createHashMap2(); - var regionsGroup = this._regionsGroup; - var transformInfoRaw = viewBuildCtx.transformInfoRaw; - var mapOrGeoModel = viewBuildCtx.mapOrGeoModel; - var data = viewBuildCtx.data; - var projection = viewBuildCtx.geo.projection; - var projectionStream = projection && projection.stream; - function transformPoint(point, project) { - if (project) { - point = project(point); - } - return point && [point[0] * transformInfoRaw.scaleX + transformInfoRaw.x, point[1] * transformInfoRaw.scaleY + transformInfoRaw.y]; - } - function transformPolygonPoints(inPoints) { - var outPoints = []; - var project = !projectionStream && projection && projection.project; - for (var i2 = 0; i2 < inPoints.length; ++i2) { - var newPt = transformPoint(inPoints[i2], project); - newPt && outPoints.push(newPt); - } - return outPoints; - } - function getPolyShape(points5) { - return { - shape: { - points: transformPolygonPoints(points5) - } - }; - } - regionsGroup.removeAll(); - each17(viewBuildCtx.geo.regions, function(region) { - var regionName = region.name; - var regionGroup = regionsGroupByName.get(regionName); - var _a3 = regionsInfoByName.get(regionName) || {}, dataIdx = _a3.dataIdx, regionModel = _a3.regionModel; - if (!regionGroup) { - regionGroup = regionsGroupByName.set(regionName, new Group5()); - regionsGroup.add(regionGroup); - dataIdx = data ? data.indexOfName(regionName) : null; - regionModel = viewBuildCtx.isGeo ? mapOrGeoModel.getRegionModel(regionName) : data ? data.getItemModel(dataIdx) : null; - var silent = regionModel.get("silent", true); - silent != null && (regionGroup.silent = silent); - regionsInfoByName.set(regionName, { - dataIdx, - regionModel - }); - } - var polygonSubpaths = []; - var polylineSubpaths = []; - each17(region.geometries, function(geometry) { - if (geometry.type === "polygon") { - var polys = [geometry.exterior].concat(geometry.interiors || []); - if (projectionStream) { - polys = projectPolys2(polys, projectionStream); - } - each17(polys, function(poly) { - polygonSubpaths.push(new Polygon2(getPolyShape(poly))); - }); - } else { - var points5 = geometry.points; - if (projectionStream) { - points5 = projectPolys2(points5, projectionStream, true); - } - each17(points5, function(points6) { - polylineSubpaths.push(new Polyline3(getPolyShape(points6))); - }); - } - }); - var centerPt = transformPoint(region.getCenter(), projection && projection.project); - function createCompoundPath(subpaths, isLine) { - if (!subpaths.length) { - return; - } - var compoundPath = new CompoundPath2({ - culling: true, - segmentIgnoreThreshold: 1, - shape: { - paths: subpaths - } - }); - regionGroup.add(compoundPath); - applyOptionStyleForRegion2(viewBuildCtx, compoundPath, dataIdx, regionModel); - resetLabelForRegion2(viewBuildCtx, compoundPath, regionName, regionModel, mapOrGeoModel, dataIdx, centerPt); - if (isLine) { - fixLineStyle2(compoundPath); - each17(compoundPath.states, fixLineStyle2); - } - } - createCompoundPath(polygonSubpaths); - createCompoundPath(polylineSubpaths, true); - }); - regionsGroupByName.each(function(regionGroup, regionName) { - var _a3 = regionsInfoByName.get(regionName), dataIdx = _a3.dataIdx, regionModel = _a3.regionModel; - resetEventTriggerForRegion2(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel, dataIdx); - resetTooltipForRegion2(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel); - resetStateTriggerForRegion2(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel); - }, this); - }; - MapDraw3.prototype._buildSVG = function(viewBuildCtx) { - var mapName = viewBuildCtx.geo.map; - var transformInfoRaw = viewBuildCtx.transformInfoRaw; - this._svgGroup.x = transformInfoRaw.x; - this._svgGroup.y = transformInfoRaw.y; - this._svgGroup.scaleX = transformInfoRaw.scaleX; - this._svgGroup.scaleY = transformInfoRaw.scaleY; - if (this._svgResourceChanged(mapName)) { - this._freeSVG(); - this._useSVG(mapName); - } - var svgDispatcherMap = this._svgDispatcherMap = createHashMap2(); - var focusSelf = false; - each17(this._svgGraphicRecord.named, function(namedItem) { - var regionName = namedItem.name; - var mapOrGeoModel = viewBuildCtx.mapOrGeoModel; - var data = viewBuildCtx.data; - var svgNodeTagLower = namedItem.svgNodeTagLower; - var el = namedItem.el; - var dataIdx = data ? data.indexOfName(regionName) : null; - var regionModel = mapOrGeoModel.getRegionModel(regionName); - if (OPTION_STYLE_ENABLED_TAG_MAP2.get(svgNodeTagLower) != null && el instanceof Displayable2) { - applyOptionStyleForRegion2(viewBuildCtx, el, dataIdx, regionModel); - } - if (el instanceof Displayable2) { - el.culling = true; - } - var silent = regionModel.get("silent", true); - silent != null && (el.silent = silent); - el.z2EmphasisLift = 0; - if (!namedItem.namedFrom) { - if (LABEL_HOST_MAP2.get(svgNodeTagLower) != null) { - resetLabelForRegion2(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx, null); - } - resetEventTriggerForRegion2(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx); - resetTooltipForRegion2(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel); - if (STATE_TRIGGER_TAG_MAP2.get(svgNodeTagLower) != null) { - var focus_1 = resetStateTriggerForRegion2(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel); - if (focus_1 === "self") { - focusSelf = true; - } - var els = svgDispatcherMap.get(regionName) || svgDispatcherMap.set(regionName, []); - els.push(el); - } - } - }, this); - this._enableBlurEntireSVG(focusSelf, viewBuildCtx); - }; - MapDraw3.prototype._enableBlurEntireSVG = function(focusSelf, viewBuildCtx) { - if (focusSelf && viewBuildCtx.isGeo) { - var blurStyle = viewBuildCtx.mapOrGeoModel.getModel(["blur", "itemStyle"]).getItemStyle(); - var opacity_1 = blurStyle.opacity; - this._svgGraphicRecord.root.traverse(function(el) { - if (!el.isGroup) { - setDefaultStateProxy2(el); - var style = el.ensureState("blur").style || {}; - if (style.opacity == null && opacity_1 != null) { - style.opacity = opacity_1; - } - el.ensureState("emphasis"); - } - }); - } - }; - MapDraw3.prototype.remove = function() { - this._regionsGroup.removeAll(); - this._regionsGroupByName = null; - this._svgGroup.removeAll(); - this._freeSVG(); - this._controller.dispose(); - this._controllerHost = null; - }; - MapDraw3.prototype.findHighDownDispatchers = function(name, geoModel) { - if (name == null) { - return []; - } - var geo = geoModel.coordinateSystem; - if (geo.resourceType === "geoJSON") { - var regionsGroupByName = this._regionsGroupByName; - if (regionsGroupByName) { - var regionGroup = regionsGroupByName.get(name); - return regionGroup ? [regionGroup] : []; - } - } else if (geo.resourceType === "geoSVG") { - return this._svgDispatcherMap && this._svgDispatcherMap.get(name) || []; - } - }; - MapDraw3.prototype._svgResourceChanged = function(mapName) { - return this._svgMapName !== mapName; - }; - MapDraw3.prototype._useSVG = function(mapName) { - var resource = geoSourceManager.getGeoResource(mapName); - if (resource && resource.type === "geoSVG") { - var svgGraphic = resource.useGraphic(this.uid); - this._svgGroup.add(svgGraphic.root); - this._svgGraphicRecord = svgGraphic; - this._svgMapName = mapName; - } - }; - MapDraw3.prototype._freeSVG = function() { - var mapName = this._svgMapName; - if (mapName == null) { - return; - } - var resource = geoSourceManager.getGeoResource(mapName); - if (resource && resource.type === "geoSVG") { - resource.freeGraphic(this.uid); - } - this._svgGraphicRecord = null; - this._svgDispatcherMap = null; - this._svgGroup.removeAll(); - this._svgMapName = null; - }; - MapDraw3.prototype._updateController = function(mapOrGeoModel, ecModel, api) { - var geo = mapOrGeoModel.coordinateSystem; - var controller = this._controller; - var controllerHost = this._controllerHost; - controllerHost.zoomLimit = mapOrGeoModel.get("scaleLimit"); - controllerHost.zoom = geo.getZoom(); - controller.enable(mapOrGeoModel.get("roam") || false); - var mainType = mapOrGeoModel.mainType; - function makeActionBase() { - var action = { - type: "geoRoam", - componentType: mainType - }; - action[mainType + "Id"] = mapOrGeoModel.id; - return action; - } - controller.off("pan").on("pan", function(e3) { - this._mouseDownFlag = false; - updateViewOnPan2(controllerHost, e3.dx, e3.dy); - api.dispatchAction(extend3(makeActionBase(), { - dx: e3.dx, - dy: e3.dy, - animation: { - duration: 0 - } - })); - }, this); - controller.off("zoom").on("zoom", function(e3) { - this._mouseDownFlag = false; - updateViewOnZoom2(controllerHost, e3.scale, e3.originX, e3.originY); - api.dispatchAction(extend3(makeActionBase(), { - totalZoom: controllerHost.zoom, - zoom: e3.scale, - originX: e3.originX, - originY: e3.originY, - animation: { - duration: 0 - } - })); - }, this); - controller.setPointerChecker(function(e3, x, y) { - return geo.containPoint([x, y]) && !onIrrelevantElement2(e3, api, mapOrGeoModel); - }); - }; - MapDraw3.prototype.resetForLabelLayout = function() { - this.group.traverse(function(el) { - var label = el.getTextContent(); - if (label) { - label.ignore = mapLabelRaw2(label).ignore; - } - }); - }; - MapDraw3.prototype._updateMapSelectHandler = function(mapOrGeoModel, regionsGroup, api, fromView) { - var mapDraw = this; - regionsGroup.off("mousedown"); - regionsGroup.off("click"); - if (mapOrGeoModel.get("selectedMode")) { - regionsGroup.on("mousedown", function() { - mapDraw._mouseDownFlag = true; - }); - regionsGroup.on("click", function(e3) { - if (!mapDraw._mouseDownFlag) { - return; - } - mapDraw._mouseDownFlag = false; - }); - } - }; - return MapDraw3; - }() - ); - function applyOptionStyleForRegion2(viewBuildCtx, el, dataIndex, regionModel) { - var normalStyleModel = regionModel.getModel("itemStyle"); - var emphasisStyleModel = regionModel.getModel(["emphasis", "itemStyle"]); - var blurStyleModel = regionModel.getModel(["blur", "itemStyle"]); - var selectStyleModel = regionModel.getModel(["select", "itemStyle"]); - var normalStyle = getFixedItemStyle2(normalStyleModel); - var emphasisStyle = getFixedItemStyle2(emphasisStyleModel); - var selectStyle = getFixedItemStyle2(selectStyleModel); - var blurStyle = getFixedItemStyle2(blurStyleModel); - var data = viewBuildCtx.data; - if (data) { - var style = data.getItemVisual(dataIndex, "style"); - var decal = data.getItemVisual(dataIndex, "decal"); - if (viewBuildCtx.isVisualEncodedByVisualMap && style.fill) { - normalStyle.fill = style.fill; - } - if (decal) { - normalStyle.decal = createOrUpdatePatternFromDecal2(decal, viewBuildCtx.api); - } - } - el.setStyle(normalStyle); - el.style.strokeNoScale = true; - el.ensureState("emphasis").style = emphasisStyle; - el.ensureState("select").style = selectStyle; - el.ensureState("blur").style = blurStyle; - setDefaultStateProxy2(el); - } - function resetLabelForRegion2(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx, labelXY) { - var data = viewBuildCtx.data; - var isGeo = viewBuildCtx.isGeo; - var isDataNaN = data && isNaN(data.get(data.mapDimension("value"), dataIdx)); - var itemLayout = data && data.getItemLayout(dataIdx); - if (isGeo || isDataNaN || itemLayout && itemLayout.showLabel) { - var query = !isGeo ? dataIdx : regionName; - var labelFetcher = void 0; - if (!data || dataIdx >= 0) { - labelFetcher = mapOrGeoModel; - } - var specifiedTextOpt = labelXY ? { - normal: { - align: "center", - verticalAlign: "middle" - } - } : null; - setLabelStyle2(el, getLabelStatesModels2(regionModel), { - labelFetcher, - labelDataIndex: query, - defaultText: regionName - }, specifiedTextOpt); - var textEl = el.getTextContent(); - if (textEl) { - mapLabelRaw2(textEl).ignore = textEl.ignore; - if (el.textConfig && labelXY) { - var rect = el.getBoundingRect().clone(); - el.textConfig.layoutRect = rect; - el.textConfig.position = [(labelXY[0] - rect.x) / rect.width * 100 + "%", (labelXY[1] - rect.y) / rect.height * 100 + "%"]; - } - } - el.disableLabelAnimation = true; - } else { - el.removeTextContent(); - el.removeTextConfig(); - el.disableLabelAnimation = null; - } - } - function resetEventTriggerForRegion2(viewBuildCtx, eventTrigger, regionName, regionModel, mapOrGeoModel, dataIdx) { - if (viewBuildCtx.data) { - viewBuildCtx.data.setItemGraphicEl(dataIdx, eventTrigger); - } else { - getECData2(eventTrigger).eventData = { - componentType: "geo", - componentIndex: mapOrGeoModel.componentIndex, - geoIndex: mapOrGeoModel.componentIndex, - name: regionName, - region: regionModel && regionModel.option || {} - }; - } - } - function resetTooltipForRegion2(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel) { - if (!viewBuildCtx.data) { - setTooltipConfig2({ - el, - componentModel: mapOrGeoModel, - itemName: regionName, - // @ts-ignore FIXME:TS fix the "compatible with each other"? - itemTooltipOption: regionModel.get("tooltip") - }); - } - } - function resetStateTriggerForRegion2(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel) { - el.highDownSilentOnTouch = !!mapOrGeoModel.get("selectedMode"); - var emphasisModel = regionModel.getModel("emphasis"); - var focus = emphasisModel.get("focus"); - toggleHoverEmphasis2(el, focus, emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - if (viewBuildCtx.isGeo) { - enableComponentHighDownFeatures2(el, mapOrGeoModel, regionName); - } - return focus; - } - function projectPolys2(rings, createStream, isLine) { - var polygons = []; - var curPoly; - function startPolygon() { - curPoly = []; - } - function endPolygon() { - if (curPoly.length) { - polygons.push(curPoly); - curPoly = []; - } - } - var stream = createStream({ - polygonStart: startPolygon, - polygonEnd: endPolygon, - lineStart: startPolygon, - lineEnd: endPolygon, - point: function(x, y) { - if (isFinite(x) && isFinite(y)) { - curPoly.push([x, y]); - } - }, - sphere: function() { - } - }); - !isLine && stream.polygonStart(); - each17(rings, function(ring) { - stream.lineStart(); - for (var i2 = 0; i2 < ring.length; i2++) { - stream.point(ring[i2][0], ring[i2][1]); - } - stream.lineEnd(); - }); - !isLine && stream.polygonEnd(); - return polygons; - } - var MapView2 = ( - /** @class */ - function(_super) { - __extends2(MapView3, _super); - function MapView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MapView3.type; - return _this; - } - MapView3.prototype.render = function(mapModel, ecModel, api, payload) { - if (payload && payload.type === "mapToggleSelect" && payload.from === this.uid) { - return; - } - var group = this.group; - group.removeAll(); - if (mapModel.getHostGeoModel()) { - return; - } - if (this._mapDraw && payload && payload.type === "geoRoam") { - this._mapDraw.resetForLabelLayout(); - } - if (!(payload && payload.type === "geoRoam" && payload.componentType === "series" && payload.seriesId === mapModel.id)) { - if (mapModel.needsDrawMap) { - var mapDraw = this._mapDraw || new MapDraw2(api); - group.add(mapDraw.group); - mapDraw.draw(mapModel, ecModel, api, this, payload); - this._mapDraw = mapDraw; - } else { - this._mapDraw && this._mapDraw.remove(); - this._mapDraw = null; - } - } else { - var mapDraw = this._mapDraw; - mapDraw && group.add(mapDraw.group); - } - mapModel.get("showLegendSymbol") && ecModel.getComponent("legend") && this._renderSymbols(mapModel, ecModel, api); - }; - MapView3.prototype.remove = function() { - this._mapDraw && this._mapDraw.remove(); - this._mapDraw = null; - this.group.removeAll(); - }; - MapView3.prototype.dispose = function() { - this._mapDraw && this._mapDraw.remove(); - this._mapDraw = null; - }; - MapView3.prototype._renderSymbols = function(mapModel, ecModel, api) { - var originalData = mapModel.originalData; - var group = this.group; - originalData.each(originalData.mapDimension("value"), function(value, originalDataIndex) { - if (isNaN(value)) { - return; - } - var layout6 = originalData.getItemLayout(originalDataIndex); - if (!layout6 || !layout6.point) { - return; - } - var point = layout6.point; - var offset3 = layout6.offset; - var circle = new Circle2({ - style: { - // Because the special of map draw. - // Which needs statistic of multiple series and draw on one map. - // And each series also need a symbol with legend color - // - // Layout and visual are put one the different data - // TODO - fill: mapModel.getData().getVisual("style").fill - }, - shape: { - cx: point[0] + offset3 * 9, - cy: point[1], - r: 3 - }, - silent: true, - // Do not overlap the first series, on which labels are displayed. - z2: 8 + (!offset3 ? Z2_EMPHASIS_LIFT2 + 1 : 0) - }); - if (!offset3) { - var fullData = mapModel.mainSeries.getData(); - var name_1 = originalData.getName(originalDataIndex); - var fullIndex_1 = fullData.indexOfName(name_1); - var itemModel = originalData.getItemModel(originalDataIndex); - var labelModel = itemModel.getModel("label"); - var regionGroup = fullData.getItemGraphicEl(fullIndex_1); - setLabelStyle2(circle, getLabelStatesModels2(itemModel), { - labelFetcher: { - getFormattedLabel: function(idx, state) { - return mapModel.getFormattedLabel(fullIndex_1, state); - } - }, - defaultText: name_1 - }); - circle.disableLabelAnimation = true; - if (!labelModel.get("position")) { - circle.setTextConfig({ - position: "bottom" - }); - } - regionGroup.onHoverStateChange = function(toState) { - setStatesFlag2(circle, toState); - }; - } - group.add(circle); - }); - }; - MapView3.type = "map"; - return MapView3; - }(ChartView2) - ); - var MapSeries2 = ( - /** @class */ - function(_super) { - __extends2(MapSeries3, _super); - function MapSeries3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MapSeries3.type; - _this.needsDrawMap = false; - _this.seriesGroup = []; - _this.getTooltipPosition = function(dataIndex) { - if (dataIndex != null) { - var name_1 = this.getData().getName(dataIndex); - var geo = this.coordinateSystem; - var region = geo.getRegion(name_1); - return region && geo.dataToPoint(region.getCenter()); - } - }; - return _this; - } - MapSeries3.prototype.getInitialData = function(option) { - var data = createSeriesDataSimply2(this, { - coordDimensions: ["value"], - encodeDefaulter: curry3(makeSeriesEncodeForNameBased2, this) - }); - var dataNameIndexMap = createHashMap2(); - var toAppendItems = []; - for (var i2 = 0, len3 = data.count(); i2 < len3; i2++) { - var name_2 = data.getName(i2); - dataNameIndexMap.set(name_2, i2); - } - var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap, this.option.nameProperty); - each17(geoSource.regions, function(region) { - var name = region.name; - var dataNameIdx = dataNameIndexMap.get(name); - var specifiedGeoJSONRegionStyle = region.properties && region.properties.echartsStyle; - var dataItem; - if (dataNameIdx == null) { - dataItem = { - name - }; - toAppendItems.push(dataItem); - } else { - dataItem = data.getRawDataItem(dataNameIdx); - } - specifiedGeoJSONRegionStyle && merge2(dataItem, specifiedGeoJSONRegionStyle); - }); - data.appendData(toAppendItems); - return data; - }; - MapSeries3.prototype.getHostGeoModel = function() { - var geoIndex = this.option.geoIndex; - return geoIndex != null ? this.ecModel.getComponent("geo", geoIndex) : null; - }; - MapSeries3.prototype.getMapType = function() { - return (this.getHostGeoModel() || this).option.map; - }; - MapSeries3.prototype.getRawValue = function(dataIndex) { - var data = this.getData(); - return data.get(data.mapDimension("value"), dataIndex); - }; - MapSeries3.prototype.getRegionModel = function(regionName) { - var data = this.getData(); - return data.getItemModel(data.indexOfName(regionName)); - }; - MapSeries3.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - var data = this.getData(); - var value = this.getRawValue(dataIndex); - var name = data.getName(dataIndex); - var seriesGroup = this.seriesGroup; - var seriesNames = []; - for (var i2 = 0; i2 < seriesGroup.length; i2++) { - var otherIndex = seriesGroup[i2].originalData.indexOfName(name); - var valueDim = data.mapDimension("value"); - if (!isNaN(seriesGroup[i2].originalData.get(valueDim, otherIndex))) { - seriesNames.push(seriesGroup[i2].name); - } - } - return createTooltipMarkup2("section", { - header: seriesNames.join(", "), - noHeader: !seriesNames.length, - blocks: [createTooltipMarkup2("nameValue", { - name, - value - })] - }); - }; - MapSeries3.prototype.setZoom = function(zoom) { - this.option.zoom = zoom; - }; - MapSeries3.prototype.setCenter = function(center4) { - this.option.center = center4; - }; - MapSeries3.prototype.getLegendIcon = function(opt) { - var iconType = opt.icon || "roundRect"; - var icon = createSymbol3(iconType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill); - icon.setStyle(opt.itemStyle); - icon.style.stroke = "none"; - if (iconType.indexOf("empty") > -1) { - icon.style.stroke = icon.style.fill; - icon.style.fill = "#fff"; - icon.style.lineWidth = 2; - } - return icon; - }; - MapSeries3.type = "series.map"; - MapSeries3.dependencies = ["geo"]; - MapSeries3.layoutMode = "box"; - MapSeries3.defaultOption = { - // 一级层叠 - // zlevel: 0, - // 二级层叠 - z: 2, - coordinateSystem: "geo", - // map should be explicitly specified since ec3. - map: "", - // If `geoIndex` is not specified, a exclusive geo will be - // created. Otherwise use the specified geo component, and - // `map` and `mapType` are ignored. - // geoIndex: 0, - // 'center' | 'left' | 'right' | 'x%' | {number} - left: "center", - // 'center' | 'top' | 'bottom' | 'x%' | {number} - top: "center", - // right - // bottom - // width: - // height - // Aspect is width / height. Inited to be geoJson bbox aspect - // This parameter is used for scale this aspect - // Default value: - // for geoSVG source: 1, - // for geoJSON source: 0.75. - aspectScale: null, - // Layout with center and size - // If you want to put map in a fixed size box with right aspect ratio - // This two properties may be more convenient. - // layoutCenter: [50%, 50%] - // layoutSize: 100 - showLegendSymbol: true, - // Define left-top, right-bottom coords to control view - // For example, [ [180, 90], [-180, -90] ], - // higher priority than center and zoom - boundingCoords: null, - // Default on center of map - center: null, - zoom: 1, - scaleLimit: null, - selectedMode: true, - label: { - show: false, - color: "#000" - }, - // scaleLimit: null, - itemStyle: { - borderWidth: 0.5, - borderColor: "#444", - areaColor: "#eee" - }, - emphasis: { - label: { - show: true, - color: "rgb(100,0,0)" - }, - itemStyle: { - areaColor: "rgba(255,215,0,0.8)" - } - }, - select: { - label: { - show: true, - color: "rgb(100,0,0)" - }, - itemStyle: { - color: "rgba(255,215,0,0.8)" - } - }, - nameProperty: "name" - }; - return MapSeries3; - }(SeriesModel2) - ); - function dataStatistics2(datas, statisticType) { - var dataNameMap = {}; - each17(datas, function(data) { - data.each(data.mapDimension("value"), function(value, idx) { - var mapKey = "ec-" + data.getName(idx); - dataNameMap[mapKey] = dataNameMap[mapKey] || []; - if (!isNaN(value)) { - dataNameMap[mapKey].push(value); - } - }); - }); - return datas[0].map(datas[0].mapDimension("value"), function(value, idx) { - var mapKey = "ec-" + datas[0].getName(idx); - var sum3 = 0; - var min5 = Infinity; - var max5 = -Infinity; - var len3 = dataNameMap[mapKey].length; - for (var i2 = 0; i2 < len3; i2++) { - min5 = Math.min(min5, dataNameMap[mapKey][i2]); - max5 = Math.max(max5, dataNameMap[mapKey][i2]); - sum3 += dataNameMap[mapKey][i2]; - } - var result; - if (statisticType === "min") { - result = min5; - } else if (statisticType === "max") { - result = max5; - } else if (statisticType === "average") { - result = sum3 / len3; - } else { - result = sum3; - } - return len3 === 0 ? NaN : result; - }); - } - function mapDataStatistic2(ecModel) { - var seriesGroups = {}; - ecModel.eachSeriesByType("map", function(seriesModel) { - var hostGeoModel = seriesModel.getHostGeoModel(); - var key = hostGeoModel ? "o" + hostGeoModel.id : "i" + seriesModel.getMapType(); - (seriesGroups[key] = seriesGroups[key] || []).push(seriesModel); - }); - each17(seriesGroups, function(seriesList, key) { - var data = dataStatistics2(map3(seriesList, function(seriesModel) { - return seriesModel.getData(); - }), seriesList[0].get("mapValueCalculation")); - for (var i2 = 0; i2 < seriesList.length; i2++) { - seriesList[i2].originalData = seriesList[i2].getData(); - } - for (var i2 = 0; i2 < seriesList.length; i2++) { - seriesList[i2].seriesGroup = seriesList; - seriesList[i2].needsDrawMap = i2 === 0 && !seriesList[i2].getHostGeoModel(); - seriesList[i2].setData(data.cloneShallow()); - seriesList[i2].mainSeries = seriesList[0]; - } - }); - } - function mapSymbolLayout2(ecModel) { - var processedMapType = {}; - ecModel.eachSeriesByType("map", function(mapSeries) { - var mapType = mapSeries.getMapType(); - if (mapSeries.getHostGeoModel() || processedMapType[mapType]) { - return; - } - var mapSymbolOffsets = {}; - each17(mapSeries.seriesGroup, function(subMapSeries) { - var geo = subMapSeries.coordinateSystem; - var data2 = subMapSeries.originalData; - if (subMapSeries.get("showLegendSymbol") && ecModel.getComponent("legend")) { - data2.each(data2.mapDimension("value"), function(value, idx) { - var name = data2.getName(idx); - var region = geo.getRegion(name); - if (!region || isNaN(value)) { - return; - } - var offset3 = mapSymbolOffsets[name] || 0; - var point = geo.dataToPoint(region.getCenter()); - mapSymbolOffsets[name] = offset3 + 1; - data2.setItemLayout(idx, { - point, - offset: offset3 - }); - }); - } - }); - var data = mapSeries.getData(); - data.each(function(idx) { - var name = data.getName(idx); - var layout6 = data.getItemLayout(idx) || {}; - layout6.showLabel = !mapSymbolOffsets[name]; - data.setItemLayout(idx, layout6); - }); - processedMapType[mapType] = true; - }); - } - var v2ApplyTransform2 = applyTransform3; - var View3 = ( - /** @class */ - function(_super) { - __extends2(View4, _super); - function View4(name) { - var _this = _super.call(this) || this; - _this.type = "view"; - _this.dimensions = ["x", "y"]; - _this._roamTransformable = new Transformable2(); - _this._rawTransformable = new Transformable2(); - _this.name = name; - return _this; - } - View4.prototype.setBoundingRect = function(x, y, width, height) { - this._rect = new BoundingRect2(x, y, width, height); - return this._rect; - }; - View4.prototype.getBoundingRect = function() { - return this._rect; - }; - View4.prototype.setViewRect = function(x, y, width, height) { - this._transformTo(x, y, width, height); - this._viewRect = new BoundingRect2(x, y, width, height); - }; - View4.prototype._transformTo = function(x, y, width, height) { - var rect = this.getBoundingRect(); - var rawTransform = this._rawTransformable; - rawTransform.transform = rect.calculateTransform(new BoundingRect2(x, y, width, height)); - var rawParent = rawTransform.parent; - rawTransform.parent = null; - rawTransform.decomposeTransform(); - rawTransform.parent = rawParent; - this._updateTransform(); - }; - View4.prototype.setCenter = function(centerCoord, api) { - if (!centerCoord) { - return; - } - this._center = [parsePercent$1(centerCoord[0], api.getWidth()), parsePercent$1(centerCoord[1], api.getHeight())]; - this._updateCenterAndZoom(); - }; - View4.prototype.setZoom = function(zoom) { - zoom = zoom || 1; - var zoomLimit = this.zoomLimit; - if (zoomLimit) { - if (zoomLimit.max != null) { - zoom = Math.min(zoomLimit.max, zoom); - } - if (zoomLimit.min != null) { - zoom = Math.max(zoomLimit.min, zoom); - } - } - this._zoom = zoom; - this._updateCenterAndZoom(); - }; - View4.prototype.getDefaultCenter = function() { - var rawRect = this.getBoundingRect(); - var cx = rawRect.x + rawRect.width / 2; - var cy = rawRect.y + rawRect.height / 2; - return [cx, cy]; - }; - View4.prototype.getCenter = function() { - return this._center || this.getDefaultCenter(); - }; - View4.prototype.getZoom = function() { - return this._zoom || 1; - }; - View4.prototype.getRoamTransform = function() { - return this._roamTransformable.getLocalTransform(); - }; - View4.prototype._updateCenterAndZoom = function() { - var rawTransformMatrix = this._rawTransformable.getLocalTransform(); - var roamTransform = this._roamTransformable; - var defaultCenter = this.getDefaultCenter(); - var center4 = this.getCenter(); - var zoom = this.getZoom(); - center4 = applyTransform3([], center4, rawTransformMatrix); - defaultCenter = applyTransform3([], defaultCenter, rawTransformMatrix); - roamTransform.originX = center4[0]; - roamTransform.originY = center4[1]; - roamTransform.x = defaultCenter[0] - center4[0]; - roamTransform.y = defaultCenter[1] - center4[1]; - roamTransform.scaleX = roamTransform.scaleY = zoom; - this._updateTransform(); - }; - View4.prototype._updateTransform = function() { - var roamTransformable = this._roamTransformable; - var rawTransformable = this._rawTransformable; - rawTransformable.parent = roamTransformable; - roamTransformable.updateTransform(); - rawTransformable.updateTransform(); - copy$1(this.transform || (this.transform = []), rawTransformable.transform || create$1()); - this._rawTransform = rawTransformable.getLocalTransform(); - this.invTransform = this.invTransform || []; - invert2(this.invTransform, this.transform); - this.decomposeTransform(); - }; - View4.prototype.getTransformInfo = function() { - var rawTransformable = this._rawTransformable; - var roamTransformable = this._roamTransformable; - var dummyTransformable3 = new Transformable2(); - dummyTransformable3.transform = roamTransformable.transform; - dummyTransformable3.decomposeTransform(); - return { - roam: { - x: dummyTransformable3.x, - y: dummyTransformable3.y, - scaleX: dummyTransformable3.scaleX, - scaleY: dummyTransformable3.scaleY - }, - raw: { - x: rawTransformable.x, - y: rawTransformable.y, - scaleX: rawTransformable.scaleX, - scaleY: rawTransformable.scaleY - } - }; - }; - View4.prototype.getViewRect = function() { - return this._viewRect; - }; - View4.prototype.getViewRectAfterRoam = function() { - var rect = this.getBoundingRect().clone(); - rect.applyTransform(this.transform); - return rect; - }; - View4.prototype.dataToPoint = function(data, noRoam, out3) { - var transform2 = noRoam ? this._rawTransform : this.transform; - out3 = out3 || []; - return transform2 ? v2ApplyTransform2(out3, data, transform2) : copy3(out3, data); - }; - View4.prototype.pointToData = function(point) { - var invTransform = this.invTransform; - return invTransform ? v2ApplyTransform2([], point, invTransform) : [point[0], point[1]]; - }; - View4.prototype.convertToPixel = function(ecModel, finder, value) { - var coordSys = getCoordSys6(finder); - return coordSys === this ? coordSys.dataToPoint(value) : null; - }; - View4.prototype.convertFromPixel = function(ecModel, finder, pixel) { - var coordSys = getCoordSys6(finder); - return coordSys === this ? coordSys.pointToData(pixel) : null; - }; - View4.prototype.containPoint = function(point) { - return this.getViewRectAfterRoam().contain(point[0], point[1]); - }; - View4.dimensions = ["x", "y"]; - return View4; - }(Transformable2) - ); - function getCoordSys6(finder) { - var seriesModel = finder.seriesModel; - return seriesModel ? seriesModel.coordinateSystem : null; - } - var GEO_DEFAULT_PARAMS2 = { - "geoJSON": { - aspectScale: 0.75, - invertLongitute: true - }, - "geoSVG": { - aspectScale: 1, - invertLongitute: false - } - }; - var geo2DDimensions2 = ["lng", "lat"]; - var Geo2 = ( - /** @class */ - function(_super) { - __extends2(Geo3, _super); - function Geo3(name, map4, opt) { - var _this = _super.call(this, name) || this; - _this.dimensions = geo2DDimensions2; - _this.type = "geo"; - _this._nameCoordMap = createHashMap2(); - _this.map = map4; - var projection = opt.projection; - var source = geoSourceManager.load(map4, opt.nameMap, opt.nameProperty); - var resource = geoSourceManager.getGeoResource(map4); - var resourceType = _this.resourceType = resource ? resource.type : null; - var regions = _this.regions = source.regions; - var defaultParams = GEO_DEFAULT_PARAMS2[resource.type]; - _this._regionsMap = source.regionsMap; - _this.regions = source.regions; - if (projection) { - if (resourceType === "geoSVG") { - if (true) { - warn2("Map " + map4 + " with SVG source can't use projection. Only GeoJSON source supports projection."); - } - projection = null; - } - if (!(projection.project && projection.unproject)) { - if (true) { - warn2("project and unproject must be both provided in the projeciton."); - } - projection = null; - } - } - _this.projection = projection; - var boundingRect; - if (projection) { - for (var i2 = 0; i2 < regions.length; i2++) { - var regionRect = regions[i2].getBoundingRect(projection); - boundingRect = boundingRect || regionRect.clone(); - boundingRect.union(regionRect); - } - } else { - boundingRect = source.boundingRect; - } - _this.setBoundingRect(boundingRect.x, boundingRect.y, boundingRect.width, boundingRect.height); - _this.aspectScale = projection ? 1 : retrieve22(opt.aspectScale, defaultParams.aspectScale); - _this._invertLongitute = projection ? false : defaultParams.invertLongitute; - return _this; - } - Geo3.prototype._transformTo = function(x, y, width, height) { - var rect = this.getBoundingRect(); - var invertLongitute = this._invertLongitute; - rect = rect.clone(); - if (invertLongitute) { - rect.y = -rect.y - rect.height; - } - var rawTransformable = this._rawTransformable; - rawTransformable.transform = rect.calculateTransform(new BoundingRect2(x, y, width, height)); - var rawParent = rawTransformable.parent; - rawTransformable.parent = null; - rawTransformable.decomposeTransform(); - rawTransformable.parent = rawParent; - if (invertLongitute) { - rawTransformable.scaleY = -rawTransformable.scaleY; - } - this._updateTransform(); - }; - Geo3.prototype.getRegion = function(name) { - return this._regionsMap.get(name); - }; - Geo3.prototype.getRegionByCoord = function(coord) { - var regions = this.regions; - for (var i2 = 0; i2 < regions.length; i2++) { - var region = regions[i2]; - if (region.type === "geoJSON" && region.contain(coord)) { - return regions[i2]; - } - } - }; - Geo3.prototype.addGeoCoord = function(name, geoCoord3) { - this._nameCoordMap.set(name, geoCoord3); - }; - Geo3.prototype.getGeoCoord = function(name) { - var region = this._regionsMap.get(name); - return this._nameCoordMap.get(name) || region && region.getCenter(); - }; - Geo3.prototype.dataToPoint = function(data, noRoam, out3) { - if (isString2(data)) { - data = this.getGeoCoord(data); - } - if (data) { - var projection = this.projection; - if (projection) { - data = projection.project(data); - } - return data && this.projectedToPoint(data, noRoam, out3); - } - }; - Geo3.prototype.pointToData = function(point) { - var projection = this.projection; - if (projection) { - point = projection.unproject(point); - } - return point && this.pointToProjected(point); - }; - Geo3.prototype.pointToProjected = function(point) { - return _super.prototype.pointToData.call(this, point); - }; - Geo3.prototype.projectedToPoint = function(projected, noRoam, out3) { - return _super.prototype.dataToPoint.call(this, projected, noRoam, out3); - }; - Geo3.prototype.convertToPixel = function(ecModel, finder, value) { - var coordSys = getCoordSys$1(finder); - return coordSys === this ? coordSys.dataToPoint(value) : null; - }; - Geo3.prototype.convertFromPixel = function(ecModel, finder, pixel) { - var coordSys = getCoordSys$1(finder); - return coordSys === this ? coordSys.pointToData(pixel) : null; - }; - return Geo3; - }(View3) - ); - mixin2(Geo2, View3); - function getCoordSys$1(finder) { - var geoModel = finder.geoModel; - var seriesModel = finder.seriesModel; - return geoModel ? geoModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem || (seriesModel.getReferringComponents("geo", SINGLE_REFERRING2).models[0] || {}).coordinateSystem : null; - } - function resizeGeo2(geoModel, api) { - var boundingCoords = geoModel.get("boundingCoords"); - if (boundingCoords != null) { - var leftTop_1 = boundingCoords[0]; - var rightBottom_1 = boundingCoords[1]; - if (!(isFinite(leftTop_1[0]) && isFinite(leftTop_1[1]) && isFinite(rightBottom_1[0]) && isFinite(rightBottom_1[1]))) { - if (true) { - console.error("Invalid boundingCoords"); - } - } else { - var projection_1 = this.projection; - if (projection_1) { - var xMin = leftTop_1[0]; - var yMin = leftTop_1[1]; - var xMax = rightBottom_1[0]; - var yMax = rightBottom_1[1]; - leftTop_1 = [Infinity, Infinity]; - rightBottom_1 = [-Infinity, -Infinity]; - var sampleLine = function(x0, y0, x1, y1) { - var dx = x1 - x0; - var dy = y1 - y0; - for (var i2 = 0; i2 <= 100; i2++) { - var p = i2 / 100; - var pt = projection_1.project([x0 + dx * p, y0 + dy * p]); - min4(leftTop_1, leftTop_1, pt); - max4(rightBottom_1, rightBottom_1, pt); - } - }; - sampleLine(xMin, yMin, xMax, yMin); - sampleLine(xMax, yMin, xMax, yMax); - sampleLine(xMax, yMax, xMin, yMax); - sampleLine(xMin, yMax, xMax, yMin); - } - this.setBoundingRect(leftTop_1[0], leftTop_1[1], rightBottom_1[0] - leftTop_1[0], rightBottom_1[1] - leftTop_1[1]); - } - } - var rect = this.getBoundingRect(); - var centerOption = geoModel.get("layoutCenter"); - var sizeOption = geoModel.get("layoutSize"); - var viewWidth = api.getWidth(); - var viewHeight = api.getHeight(); - var aspect = rect.width / rect.height * this.aspectScale; - var useCenterAndSize = false; - var center4; - var size2; - if (centerOption && sizeOption) { - center4 = [parsePercent$1(centerOption[0], viewWidth), parsePercent$1(centerOption[1], viewHeight)]; - size2 = parsePercent$1(sizeOption, Math.min(viewWidth, viewHeight)); - if (!isNaN(center4[0]) && !isNaN(center4[1]) && !isNaN(size2)) { - useCenterAndSize = true; - } else { - if (true) { - console.warn("Given layoutCenter or layoutSize data are invalid. Use left/top/width/height instead."); - } - } - } - var viewRect3; - if (useCenterAndSize) { - viewRect3 = {}; - if (aspect > 1) { - viewRect3.width = size2; - viewRect3.height = size2 / aspect; - } else { - viewRect3.height = size2; - viewRect3.width = size2 * aspect; - } - viewRect3.y = center4[1] - viewRect3.height / 2; - viewRect3.x = center4[0] - viewRect3.width / 2; - } else { - var boxLayoutOption = geoModel.getBoxLayoutParams(); - boxLayoutOption.aspect = aspect; - viewRect3 = getLayoutRect2(boxLayoutOption, { - width: viewWidth, - height: viewHeight - }); - } - this.setViewRect(viewRect3.x, viewRect3.y, viewRect3.width, viewRect3.height); - this.setCenter(geoModel.get("center"), api); - this.setZoom(geoModel.get("zoom")); - } - function setGeoCoords2(geo, model) { - each17(model.get("geoCoord"), function(geoCoord3, name) { - geo.addGeoCoord(name, geoCoord3); - }); - } - var GeoCreator2 = ( - /** @class */ - function() { - function GeoCreator3() { - this.dimensions = geo2DDimensions2; - } - GeoCreator3.prototype.create = function(ecModel, api) { - var geoList = []; - function getCommonGeoProperties(model) { - return { - nameProperty: model.get("nameProperty"), - aspectScale: model.get("aspectScale"), - projection: model.get("projection") - }; - } - ecModel.eachComponent("geo", function(geoModel, idx) { - var mapName = geoModel.get("map"); - var geo = new Geo2(mapName + idx, mapName, extend3({ - nameMap: geoModel.get("nameMap") - }, getCommonGeoProperties(geoModel))); - geo.zoomLimit = geoModel.get("scaleLimit"); - geoList.push(geo); - geoModel.coordinateSystem = geo; - geo.model = geoModel; - geo.resize = resizeGeo2; - geo.resize(geoModel, api); - }); - ecModel.eachSeries(function(seriesModel) { - var coordSys = seriesModel.get("coordinateSystem"); - if (coordSys === "geo") { - var geoIndex = seriesModel.get("geoIndex") || 0; - seriesModel.coordinateSystem = geoList[geoIndex]; - } - }); - var mapModelGroupBySeries = {}; - ecModel.eachSeriesByType("map", function(seriesModel) { - if (!seriesModel.getHostGeoModel()) { - var mapType = seriesModel.getMapType(); - mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || []; - mapModelGroupBySeries[mapType].push(seriesModel); - } - }); - each17(mapModelGroupBySeries, function(mapSeries, mapType) { - var nameMapList = map3(mapSeries, function(singleMapSeries) { - return singleMapSeries.get("nameMap"); - }); - var geo = new Geo2(mapType, mapType, extend3({ - nameMap: mergeAll2(nameMapList) - }, getCommonGeoProperties(mapSeries[0]))); - geo.zoomLimit = retrieve4.apply(null, map3(mapSeries, function(singleMapSeries) { - return singleMapSeries.get("scaleLimit"); - })); - geoList.push(geo); - geo.resize = resizeGeo2; - geo.resize(mapSeries[0], api); - each17(mapSeries, function(singleMapSeries) { - singleMapSeries.coordinateSystem = geo; - setGeoCoords2(geo, singleMapSeries); - }); - }); - return geoList; - }; - GeoCreator3.prototype.getFilledRegions = function(originRegionArr, mapName, nameMap, nameProperty) { - var regionsArr = (originRegionArr || []).slice(); - var dataNameMap = createHashMap2(); - for (var i2 = 0; i2 < regionsArr.length; i2++) { - dataNameMap.set(regionsArr[i2].name, regionsArr[i2]); - } - var source = geoSourceManager.load(mapName, nameMap, nameProperty); - each17(source.regions, function(region) { - var name = region.name; - var regionOption = dataNameMap.get(name); - var specifiedGeoJSONRegionStyle = region.properties && region.properties.echartsStyle; - if (!regionOption) { - regionOption = { - name - }; - regionsArr.push(regionOption); - } - specifiedGeoJSONRegionStyle && merge2(regionOption, specifiedGeoJSONRegionStyle); - }); - return regionsArr; - }; - return GeoCreator3; - }() - ); - var geoCreator2 = new GeoCreator2(); - var GeoModel2 = ( - /** @class */ - function(_super) { - __extends2(GeoModel3, _super); - function GeoModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GeoModel3.type; - return _this; - } - GeoModel3.prototype.init = function(option, parentModel, ecModel) { - var source = geoSourceManager.getGeoResource(option.map); - if (source && source.type === "geoJSON") { - var itemStyle = option.itemStyle = option.itemStyle || {}; - if (!("color" in itemStyle)) { - itemStyle.color = "#eee"; - } - } - this.mergeDefaultAndTheme(option, ecModel); - defaultEmphasis2(option, "label", ["show"]); - }; - GeoModel3.prototype.optionUpdated = function() { - var _this = this; - var option = this.option; - option.regions = geoCreator2.getFilledRegions(option.regions, option.map, option.nameMap, option.nameProperty); - var selectedMap = {}; - this._optionModelMap = reduce2(option.regions || [], function(optionModelMap, regionOpt) { - var regionName = regionOpt.name; - if (regionName) { - optionModelMap.set(regionName, new Model2(regionOpt, _this, _this.ecModel)); - if (regionOpt.selected) { - selectedMap[regionName] = true; - } - } - return optionModelMap; - }, createHashMap2()); - if (!option.selectedMap) { - option.selectedMap = selectedMap; - } - }; - GeoModel3.prototype.getRegionModel = function(name) { - return this._optionModelMap.get(name) || new Model2(null, this, this.ecModel); - }; - GeoModel3.prototype.getFormattedLabel = function(name, status) { - var regionModel = this.getRegionModel(name); - var formatter = status === "normal" ? regionModel.get(["label", "formatter"]) : regionModel.get(["emphasis", "label", "formatter"]); - var params = { - name - }; - if (isFunction2(formatter)) { - params.status = status; - return formatter(params); - } else if (isString2(formatter)) { - return formatter.replace("{a}", name != null ? name : ""); - } - }; - GeoModel3.prototype.setZoom = function(zoom) { - this.option.zoom = zoom; - }; - GeoModel3.prototype.setCenter = function(center4) { - this.option.center = center4; - }; - GeoModel3.prototype.select = function(name) { - var option = this.option; - var selectedMode = option.selectedMode; - if (!selectedMode) { - return; - } - if (selectedMode !== "multiple") { - option.selectedMap = null; - } - var selectedMap = option.selectedMap || (option.selectedMap = {}); - selectedMap[name] = true; - }; - GeoModel3.prototype.unSelect = function(name) { - var selectedMap = this.option.selectedMap; - if (selectedMap) { - selectedMap[name] = false; - } - }; - GeoModel3.prototype.toggleSelected = function(name) { - this[this.isSelected(name) ? "unSelect" : "select"](name); - }; - GeoModel3.prototype.isSelected = function(name) { - var selectedMap = this.option.selectedMap; - return !!(selectedMap && selectedMap[name]); - }; - GeoModel3.type = "geo"; - GeoModel3.layoutMode = "box"; - GeoModel3.defaultOption = { - // zlevel: 0, - z: 0, - show: true, - left: "center", - top: "center", - // Default value: - // for geoSVG source: 1, - // for geoJSON source: 0.75. - aspectScale: null, - // /// Layout with center and size - // If you want to put map in a fixed size box with right aspect ratio - // This two properties may be more convenient - // layoutCenter: [50%, 50%] - // layoutSize: 100 - silent: false, - // Map type - map: "", - // Define left-top, right-bottom coords to control view - // For example, [ [180, 90], [-180, -90] ] - boundingCoords: null, - // Default on center of map - center: null, - zoom: 1, - scaleLimit: null, - // selectedMode: false - label: { - show: false, - color: "#000" - }, - itemStyle: { - borderWidth: 0.5, - borderColor: "#444" - // Default color: - // + geoJSON: #eee - // + geoSVG: null (use SVG original `fill`) - // color: '#eee' - }, - emphasis: { - label: { - show: true, - color: "rgb(100,0,0)" - }, - itemStyle: { - color: "rgba(255,215,0,0.8)" - } - }, - select: { - label: { - show: true, - color: "rgb(100,0,0)" - }, - itemStyle: { - color: "rgba(255,215,0,0.8)" - } - }, - regions: [] - // tooltip: { - // show: false - // } - }; - return GeoModel3; - }(ComponentModel2) - ); - function getCenterCoord2(view, point) { - return view.pointToProjected ? view.pointToProjected(point) : view.pointToData(point); - } - function updateCenterAndZoom2(view, payload, zoomLimit, api) { - var previousZoom = view.getZoom(); - var center4 = view.getCenter(); - var zoom = payload.zoom; - var point = view.projectedToPoint ? view.projectedToPoint(center4) : view.dataToPoint(center4); - if (payload.dx != null && payload.dy != null) { - point[0] -= payload.dx; - point[1] -= payload.dy; - view.setCenter(getCenterCoord2(view, point), api); - } - if (zoom != null) { - if (zoomLimit) { - var zoomMin = zoomLimit.min || 0; - var zoomMax = zoomLimit.max || Infinity; - zoom = Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom; - } - view.scaleX *= zoom; - view.scaleY *= zoom; - var fixX = (payload.originX - view.x) * (zoom - 1); - var fixY = (payload.originY - view.y) * (zoom - 1); - view.x -= fixX; - view.y -= fixY; - view.updateTransform(); - view.setCenter(getCenterCoord2(view, point), api); - view.setZoom(zoom * previousZoom); - } - return { - center: view.getCenter(), - zoom: view.getZoom() - }; - } - var GeoView2 = ( - /** @class */ - function(_super) { - __extends2(GeoView3, _super); - function GeoView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GeoView3.type; - _this.focusBlurEnabled = true; - return _this; - } - GeoView3.prototype.init = function(ecModel, api) { - this._api = api; - }; - GeoView3.prototype.render = function(geoModel, ecModel, api, payload) { - this._model = geoModel; - if (!geoModel.get("show")) { - this._mapDraw && this._mapDraw.remove(); - this._mapDraw = null; - return; - } - if (!this._mapDraw) { - this._mapDraw = new MapDraw2(api); - } - var mapDraw = this._mapDraw; - mapDraw.draw(geoModel, ecModel, api, this, payload); - mapDraw.group.on("click", this._handleRegionClick, this); - mapDraw.group.silent = geoModel.get("silent"); - this.group.add(mapDraw.group); - this.updateSelectStatus(geoModel, ecModel, api); - }; - GeoView3.prototype._handleRegionClick = function(e3) { - var eventData; - findEventDispatcher2(e3.target, function(current) { - return (eventData = getECData2(current).eventData) != null; - }, true); - if (eventData) { - this._api.dispatchAction({ - type: "geoToggleSelect", - geoId: this._model.id, - name: eventData.name - }); - } - }; - GeoView3.prototype.updateSelectStatus = function(model, ecModel, api) { - var _this = this; - this._mapDraw.group.traverse(function(node) { - var eventData = getECData2(node).eventData; - if (eventData) { - _this._model.isSelected(eventData.name) ? api.enterSelect(node) : api.leaveSelect(node); - return true; - } - }); - }; - GeoView3.prototype.findHighDownDispatchers = function(name) { - return this._mapDraw && this._mapDraw.findHighDownDispatchers(name, this._model); - }; - GeoView3.prototype.dispose = function() { - this._mapDraw && this._mapDraw.remove(); - }; - GeoView3.type = "geo"; - return GeoView3; - }(ComponentView2) - ); - function registerMap$1(mapName, geoJson, specialAreas) { - geoSourceManager.registerMap(mapName, geoJson, specialAreas); - } - function install$9(registers) { - registers.registerCoordinateSystem("geo", geoCreator2); - registers.registerComponentModel(GeoModel2); - registers.registerComponentView(GeoView2); - registers.registerImpl("registerMap", registerMap$1); - registers.registerImpl("getMap", function(mapName) { - return geoSourceManager.getMapForUser(mapName); - }); - function makeAction(method, actionInfo4) { - actionInfo4.update = "geo:updateSelectStatus"; - registers.registerAction(actionInfo4, function(payload, ecModel) { - var selected = {}; - var allSelected = []; - ecModel.eachComponent({ - mainType: "geo", - query: payload - }, function(geoModel) { - geoModel[method](payload.name); - var geo = geoModel.coordinateSystem; - each17(geo.regions, function(region) { - selected[region.name] = geoModel.isSelected(region.name) || false; - }); - var names = []; - each17(selected, function(v, name) { - selected[name] && names.push(name); - }); - allSelected.push({ - geoIndex: geoModel.componentIndex, - // Use singular, the same naming convention as the event `selectchanged`. - name: names - }); - }); - return { - selected, - allSelected, - name: payload.name - }; - }); - } - makeAction("toggleSelected", { - type: "geoToggleSelect", - event: "geoselectchanged" - }); - makeAction("select", { - type: "geoSelect", - event: "geoselected" - }); - makeAction("unSelect", { - type: "geoUnSelect", - event: "geounselected" - }); - registers.registerAction({ - type: "geoRoam", - event: "geoRoam", - update: "updateTransform" - }, function(payload, ecModel, api) { - var componentType = payload.componentType || "series"; - ecModel.eachComponent({ - mainType: componentType, - query: payload - }, function(componentModel) { - var geo = componentModel.coordinateSystem; - if (geo.type !== "geo") { - return; - } - var res = updateCenterAndZoom2(geo, payload, componentModel.get("scaleLimit"), api); - componentModel.setCenter && componentModel.setCenter(res.center); - componentModel.setZoom && componentModel.setZoom(res.zoom); - if (componentType === "series") { - each17(componentModel.seriesGroup, function(seriesModel) { - seriesModel.setCenter(res.center); - seriesModel.setZoom(res.zoom); - }); - } - }); - }); - } - function install$a(registers) { - use2(install$9); - registers.registerChartView(MapView2); - registers.registerSeriesModel(MapSeries2); - registers.registerLayout(mapSymbolLayout2); - registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic2); - createLegacyDataSelectAction2("map", registers.registerAction); - } - function init$2(inRoot) { - var root = inRoot; - root.hierNode = { - defaultAncestor: null, - ancestor: root, - prelim: 0, - modifier: 0, - change: 0, - shift: 0, - i: 0, - thread: null - }; - var nodes = [root]; - var node; - var children; - while (node = nodes.pop()) { - children = node.children; - if (node.isExpand && children.length) { - var n = children.length; - for (var i2 = n - 1; i2 >= 0; i2--) { - var child = children[i2]; - child.hierNode = { - defaultAncestor: null, - ancestor: child, - prelim: 0, - modifier: 0, - change: 0, - shift: 0, - i: i2, - thread: null - }; - nodes.push(child); - } - } - } - } - function firstWalk2(node, separation3) { - var children = node.isExpand ? node.children : []; - var siblings = node.parentNode.children; - var subtreeW = node.hierNode.i ? siblings[node.hierNode.i - 1] : null; - if (children.length) { - executeShifts2(node); - var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2; - if (subtreeW) { - node.hierNode.prelim = subtreeW.hierNode.prelim + separation3(node, subtreeW); - node.hierNode.modifier = node.hierNode.prelim - midPoint; - } else { - node.hierNode.prelim = midPoint; - } - } else if (subtreeW) { - node.hierNode.prelim = subtreeW.hierNode.prelim + separation3(node, subtreeW); - } - node.parentNode.hierNode.defaultAncestor = apportion2(node, subtreeW, node.parentNode.hierNode.defaultAncestor || siblings[0], separation3); - } - function secondWalk2(node) { - var nodeX = node.hierNode.prelim + node.parentNode.hierNode.modifier; - node.setLayout({ - x: nodeX - }, true); - node.hierNode.modifier += node.parentNode.hierNode.modifier; - } - function separation2(cb) { - return arguments.length ? cb : defaultSeparation2; - } - function radialCoordinate2(rad, r) { - rad -= Math.PI / 2; - return { - x: r * Math.cos(rad), - y: r * Math.sin(rad) - }; - } - function getViewRect$1(seriesModel, api) { - return getLayoutRect2(seriesModel.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }); - } - function executeShifts2(node) { - var children = node.children; - var n = children.length; - var shift3 = 0; - var change = 0; - while (--n >= 0) { - var child = children[n]; - child.hierNode.prelim += shift3; - child.hierNode.modifier += shift3; - change += child.hierNode.change; - shift3 += child.hierNode.shift + change; - } - } - function apportion2(subtreeV, subtreeW, ancestor, separation3) { - if (subtreeW) { - var nodeOutRight = subtreeV; - var nodeInRight = subtreeV; - var nodeOutLeft = nodeInRight.parentNode.children[0]; - var nodeInLeft = subtreeW; - var sumOutRight = nodeOutRight.hierNode.modifier; - var sumInRight = nodeInRight.hierNode.modifier; - var sumOutLeft = nodeOutLeft.hierNode.modifier; - var sumInLeft = nodeInLeft.hierNode.modifier; - while (nodeInLeft = nextRight2(nodeInLeft), nodeInRight = nextLeft2(nodeInRight), nodeInLeft && nodeInRight) { - nodeOutRight = nextRight2(nodeOutRight); - nodeOutLeft = nextLeft2(nodeOutLeft); - nodeOutRight.hierNode.ancestor = subtreeV; - var shift3 = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim - sumInRight + separation3(nodeInLeft, nodeInRight); - if (shift3 > 0) { - moveSubtree2(nextAncestor2(nodeInLeft, subtreeV, ancestor), subtreeV, shift3); - sumInRight += shift3; - sumOutRight += shift3; - } - sumInLeft += nodeInLeft.hierNode.modifier; - sumInRight += nodeInRight.hierNode.modifier; - sumOutRight += nodeOutRight.hierNode.modifier; - sumOutLeft += nodeOutLeft.hierNode.modifier; - } - if (nodeInLeft && !nextRight2(nodeOutRight)) { - nodeOutRight.hierNode.thread = nodeInLeft; - nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight; - } - if (nodeInRight && !nextLeft2(nodeOutLeft)) { - nodeOutLeft.hierNode.thread = nodeInRight; - nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft; - ancestor = subtreeV; - } - } - return ancestor; - } - function nextRight2(node) { - var children = node.children; - return children.length && node.isExpand ? children[children.length - 1] : node.hierNode.thread; - } - function nextLeft2(node) { - var children = node.children; - return children.length && node.isExpand ? children[0] : node.hierNode.thread; - } - function nextAncestor2(nodeInLeft, node, ancestor) { - return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode ? nodeInLeft.hierNode.ancestor : ancestor; - } - function moveSubtree2(wl, wr, shift3) { - var change = shift3 / (wr.hierNode.i - wl.hierNode.i); - wr.hierNode.change -= change; - wr.hierNode.shift += shift3; - wr.hierNode.modifier += shift3; - wr.hierNode.prelim += shift3; - wl.hierNode.change += change; - } - function defaultSeparation2(node1, node2) { - return node1.parentNode === node2.parentNode ? 1 : 2; - } - var TreeEdgeShape2 = ( - /** @class */ - /* @__PURE__ */ function() { - function TreeEdgeShape3() { - this.parentPoint = []; - this.childPoints = []; - } - return TreeEdgeShape3; - }() - ); - var TreePath2 = ( - /** @class */ - function(_super) { - __extends2(TreePath3, _super); - function TreePath3(opts) { - return _super.call(this, opts) || this; - } - TreePath3.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - TreePath3.prototype.getDefaultShape = function() { - return new TreeEdgeShape2(); - }; - TreePath3.prototype.buildPath = function(ctx, shape) { - var childPoints = shape.childPoints; - var childLen = childPoints.length; - var parentPoint = shape.parentPoint; - var firstChildPos = childPoints[0]; - var lastChildPos = childPoints[childLen - 1]; - if (childLen === 1) { - ctx.moveTo(parentPoint[0], parentPoint[1]); - ctx.lineTo(firstChildPos[0], firstChildPos[1]); - return; - } - var orient = shape.orient; - var forkDim = orient === "TB" || orient === "BT" ? 0 : 1; - var otherDim = 1 - forkDim; - var forkPosition = parsePercent$1(shape.forkPosition, 1); - var tmpPoint = []; - tmpPoint[forkDim] = parentPoint[forkDim]; - tmpPoint[otherDim] = parentPoint[otherDim] + (lastChildPos[otherDim] - parentPoint[otherDim]) * forkPosition; - ctx.moveTo(parentPoint[0], parentPoint[1]); - ctx.lineTo(tmpPoint[0], tmpPoint[1]); - ctx.moveTo(firstChildPos[0], firstChildPos[1]); - tmpPoint[forkDim] = firstChildPos[forkDim]; - ctx.lineTo(tmpPoint[0], tmpPoint[1]); - tmpPoint[forkDim] = lastChildPos[forkDim]; - ctx.lineTo(tmpPoint[0], tmpPoint[1]); - ctx.lineTo(lastChildPos[0], lastChildPos[1]); - for (var i2 = 1; i2 < childLen - 1; i2++) { - var point = childPoints[i2]; - ctx.moveTo(point[0], point[1]); - tmpPoint[forkDim] = point[forkDim]; - ctx.lineTo(tmpPoint[0], tmpPoint[1]); - } - }; - return TreePath3; - }(Path2) - ); - var TreeView2 = ( - /** @class */ - function(_super) { - __extends2(TreeView3, _super); - function TreeView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TreeView3.type; - _this._mainGroup = new Group5(); - return _this; - } - TreeView3.prototype.init = function(ecModel, api) { - this._controller = new RoamController2(api.getZr()); - this._controllerHost = { - target: this.group - }; - this.group.add(this._mainGroup); - }; - TreeView3.prototype.render = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var layoutInfo = seriesModel.layoutInfo; - var group = this._mainGroup; - var layout6 = seriesModel.get("layout"); - if (layout6 === "radial") { - group.x = layoutInfo.x + layoutInfo.width / 2; - group.y = layoutInfo.y + layoutInfo.height / 2; - } else { - group.x = layoutInfo.x; - group.y = layoutInfo.y; - } - this._updateViewCoordSys(seriesModel, api); - this._updateController(seriesModel, ecModel, api); - var oldData = this._data; - data.diff(oldData).add(function(newIdx) { - if (symbolNeedsDraw$1(data, newIdx)) { - updateNode2(data, newIdx, null, group, seriesModel); - } - }).update(function(newIdx, oldIdx) { - var symbolEl = oldData.getItemGraphicEl(oldIdx); - if (!symbolNeedsDraw$1(data, newIdx)) { - symbolEl && removeNode2(oldData, oldIdx, symbolEl, group, seriesModel); - return; - } - updateNode2(data, newIdx, symbolEl, group, seriesModel); - }).remove(function(oldIdx) { - var symbolEl = oldData.getItemGraphicEl(oldIdx); - if (symbolEl) { - removeNode2(oldData, oldIdx, symbolEl, group, seriesModel); - } - }).execute(); - this._nodeScaleRatio = seriesModel.get("nodeScaleRatio"); - this._updateNodeAndLinkScale(seriesModel); - if (seriesModel.get("expandAndCollapse") === true) { - data.eachItemGraphicEl(function(el, dataIndex) { - el.off("click").on("click", function() { - api.dispatchAction({ - type: "treeExpandAndCollapse", - seriesId: seriesModel.id, - dataIndex - }); - }); - }); - } - this._data = data; - }; - TreeView3.prototype._updateViewCoordSys = function(seriesModel, api) { - var data = seriesModel.getData(); - var points5 = []; - data.each(function(idx) { - var layout6 = data.getItemLayout(idx); - if (layout6 && !isNaN(layout6.x) && !isNaN(layout6.y)) { - points5.push([+layout6.x, +layout6.y]); - } - }); - var min5 = []; - var max5 = []; - fromPoints2(points5, min5, max5); - var oldMin = this._min; - var oldMax = this._max; - if (max5[0] - min5[0] === 0) { - min5[0] = oldMin ? oldMin[0] : min5[0] - 1; - max5[0] = oldMax ? oldMax[0] : max5[0] + 1; - } - if (max5[1] - min5[1] === 0) { - min5[1] = oldMin ? oldMin[1] : min5[1] - 1; - max5[1] = oldMax ? oldMax[1] : max5[1] + 1; - } - var viewCoordSys = seriesModel.coordinateSystem = new View3(); - viewCoordSys.zoomLimit = seriesModel.get("scaleLimit"); - viewCoordSys.setBoundingRect(min5[0], min5[1], max5[0] - min5[0], max5[1] - min5[1]); - viewCoordSys.setCenter(seriesModel.get("center"), api); - viewCoordSys.setZoom(seriesModel.get("zoom")); - this.group.attr({ - x: viewCoordSys.x, - y: viewCoordSys.y, - scaleX: viewCoordSys.scaleX, - scaleY: viewCoordSys.scaleY - }); - this._min = min5; - this._max = max5; - }; - TreeView3.prototype._updateController = function(seriesModel, ecModel, api) { - var _this = this; - var controller = this._controller; - var controllerHost = this._controllerHost; - var group = this.group; - controller.setPointerChecker(function(e3, x, y) { - var rect = group.getBoundingRect(); - rect.applyTransform(group.transform); - return rect.contain(x, y) && !onIrrelevantElement2(e3, api, seriesModel); - }); - controller.enable(seriesModel.get("roam")); - controllerHost.zoomLimit = seriesModel.get("scaleLimit"); - controllerHost.zoom = seriesModel.coordinateSystem.getZoom(); - controller.off("pan").off("zoom").on("pan", function(e3) { - updateViewOnPan2(controllerHost, e3.dx, e3.dy); - api.dispatchAction({ - seriesId: seriesModel.id, - type: "treeRoam", - dx: e3.dx, - dy: e3.dy - }); - }).on("zoom", function(e3) { - updateViewOnZoom2(controllerHost, e3.scale, e3.originX, e3.originY); - api.dispatchAction({ - seriesId: seriesModel.id, - type: "treeRoam", - zoom: e3.scale, - originX: e3.originX, - originY: e3.originY - }); - _this._updateNodeAndLinkScale(seriesModel); - api.updateLabelLayout(); - }); - }; - TreeView3.prototype._updateNodeAndLinkScale = function(seriesModel) { - var data = seriesModel.getData(); - var nodeScale = this._getNodeGlobalScale(seriesModel); - data.eachItemGraphicEl(function(el, idx) { - el.setSymbolScale(nodeScale); - }); - }; - TreeView3.prototype._getNodeGlobalScale = function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - if (coordSys.type !== "view") { - return 1; - } - var nodeScaleRatio = this._nodeScaleRatio; - var groupZoom = coordSys.scaleX || 1; - var roamZoom = coordSys.getZoom(); - var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1; - return nodeScale / groupZoom; - }; - TreeView3.prototype.dispose = function() { - this._controller && this._controller.dispose(); - this._controllerHost = null; - }; - TreeView3.prototype.remove = function() { - this._mainGroup.removeAll(); - this._data = null; - }; - TreeView3.type = "tree"; - return TreeView3; - }(ChartView2) - ); - function symbolNeedsDraw$1(data, dataIndex) { - var layout6 = data.getItemLayout(dataIndex); - return layout6 && !isNaN(layout6.x) && !isNaN(layout6.y); - } - function updateNode2(data, dataIndex, symbolEl, group, seriesModel) { - var isInit = !symbolEl; - var node = data.tree.getNodeByDataIndex(dataIndex); - var itemModel = node.getModel(); - var visualColor = node.getVisual("style").fill; - var symbolInnerColor = node.isExpand === false && node.children.length !== 0 ? visualColor : "#fff"; - var virtualRoot = data.tree.root; - var source = node.parentNode === virtualRoot ? node : node.parentNode || node; - var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex); - var sourceLayout = source.getLayout(); - var sourceOldLayout = sourceSymbolEl ? { - x: sourceSymbolEl.__oldX, - y: sourceSymbolEl.__oldY, - rawX: sourceSymbolEl.__radialOldRawX, - rawY: sourceSymbolEl.__radialOldRawY - } : sourceLayout; - var targetLayout = node.getLayout(); - if (isInit) { - symbolEl = new Symbol3(data, dataIndex, null, { - symbolInnerColor, - useNameLabel: true - }); - symbolEl.x = sourceOldLayout.x; - symbolEl.y = sourceOldLayout.y; - } else { - symbolEl.updateData(data, dataIndex, null, { - symbolInnerColor, - useNameLabel: true - }); - } - symbolEl.__radialOldRawX = symbolEl.__radialRawX; - symbolEl.__radialOldRawY = symbolEl.__radialRawY; - symbolEl.__radialRawX = targetLayout.rawX; - symbolEl.__radialRawY = targetLayout.rawY; - group.add(symbolEl); - data.setItemGraphicEl(dataIndex, symbolEl); - symbolEl.__oldX = symbolEl.x; - symbolEl.__oldY = symbolEl.y; - updateProps3(symbolEl, { - x: targetLayout.x, - y: targetLayout.y - }, seriesModel); - var symbolPath = symbolEl.getSymbolPath(); - if (seriesModel.get("layout") === "radial") { - var realRoot = virtualRoot.children[0]; - var rootLayout = realRoot.getLayout(); - var length_1 = realRoot.children.length; - var rad = void 0; - var isLeft = void 0; - if (targetLayout.x === rootLayout.x && node.isExpand === true && realRoot.children.length) { - var center4 = { - x: (realRoot.children[0].getLayout().x + realRoot.children[length_1 - 1].getLayout().x) / 2, - y: (realRoot.children[0].getLayout().y + realRoot.children[length_1 - 1].getLayout().y) / 2 - }; - rad = Math.atan2(center4.y - rootLayout.y, center4.x - rootLayout.x); - if (rad < 0) { - rad = Math.PI * 2 + rad; - } - isLeft = center4.x < rootLayout.x; - if (isLeft) { - rad = rad - Math.PI; - } - } else { - rad = Math.atan2(targetLayout.y - rootLayout.y, targetLayout.x - rootLayout.x); - if (rad < 0) { - rad = Math.PI * 2 + rad; - } - if (node.children.length === 0 || node.children.length !== 0 && node.isExpand === false) { - isLeft = targetLayout.x < rootLayout.x; - if (isLeft) { - rad = rad - Math.PI; - } - } else { - isLeft = targetLayout.x > rootLayout.x; - if (!isLeft) { - rad = rad - Math.PI; - } - } - } - var textPosition = isLeft ? "left" : "right"; - var normalLabelModel = itemModel.getModel("label"); - var rotate3 = normalLabelModel.get("rotate"); - var labelRotateRadian = rotate3 * (Math.PI / 180); - var textContent = symbolPath.getTextContent(); - if (textContent) { - symbolPath.setTextConfig({ - position: normalLabelModel.get("position") || textPosition, - rotation: rotate3 == null ? -rad : labelRotateRadian, - origin: "center" - }); - textContent.setStyle("verticalAlign", "middle"); - } - } - var focus = itemModel.get(["emphasis", "focus"]); - var focusDataIndices = focus === "relative" ? concatArray2(node.getAncestorsIndices(), node.getDescendantIndices()) : focus === "ancestor" ? node.getAncestorsIndices() : focus === "descendant" ? node.getDescendantIndices() : null; - if (focusDataIndices) { - getECData2(symbolEl).focus = focusDataIndices; - } - drawEdge2(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group); - if (symbolEl.__edge) { - symbolEl.onHoverStateChange = function(toState) { - if (toState !== "blur") { - var parentEl = node.parentNode && data.getItemGraphicEl(node.parentNode.dataIndex); - if (!(parentEl && parentEl.hoverState === HOVER_STATE_BLUR2)) { - setStatesFlag2(symbolEl.__edge, toState); - } - } - }; - } - } - function drawEdge2(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group) { - var itemModel = node.getModel(); - var edgeShape = seriesModel.get("edgeShape"); - var layout6 = seriesModel.get("layout"); - var orient = seriesModel.getOrient(); - var curvature = seriesModel.get(["lineStyle", "curveness"]); - var edgeForkPosition = seriesModel.get("edgeForkPosition"); - var lineStyle = itemModel.getModel("lineStyle").getLineStyle(); - var edge = symbolEl.__edge; - if (edgeShape === "curve") { - if (node.parentNode && node.parentNode !== virtualRoot) { - if (!edge) { - edge = symbolEl.__edge = new BezierCurve2({ - shape: getEdgeShape2(layout6, orient, curvature, sourceOldLayout, sourceOldLayout) - }); - } - updateProps3(edge, { - shape: getEdgeShape2(layout6, orient, curvature, sourceLayout, targetLayout) - }, seriesModel); - } - } else if (edgeShape === "polyline") { - if (layout6 === "orthogonal") { - if (node !== virtualRoot && node.children && node.children.length !== 0 && node.isExpand === true) { - var children = node.children; - var childPoints = []; - for (var i2 = 0; i2 < children.length; i2++) { - var childLayout = children[i2].getLayout(); - childPoints.push([childLayout.x, childLayout.y]); - } - if (!edge) { - edge = symbolEl.__edge = new TreePath2({ - shape: { - parentPoint: [targetLayout.x, targetLayout.y], - childPoints: [[targetLayout.x, targetLayout.y]], - orient, - forkPosition: edgeForkPosition - } - }); - } - updateProps3(edge, { - shape: { - parentPoint: [targetLayout.x, targetLayout.y], - childPoints - } - }, seriesModel); - } - } else { - if (true) { - throw new Error("The polyline edgeShape can only be used in orthogonal layout"); - } - } - } - if (edge && !(edgeShape === "polyline" && !node.isExpand)) { - edge.useStyle(defaults2({ - strokeNoScale: true, - fill: null - }, lineStyle)); - setStatesStylesFromModel2(edge, itemModel, "lineStyle"); - setDefaultStateProxy2(edge); - group.add(edge); - } - } - function removeNodeEdge2(node, data, group, seriesModel, removeAnimationOpt) { - var virtualRoot = data.tree.root; - var _a3 = getSourceNode2(virtualRoot, node), source = _a3.source, sourceLayout = _a3.sourceLayout; - var symbolEl = data.getItemGraphicEl(node.dataIndex); - if (!symbolEl) { - return; - } - var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex); - var sourceEdge = sourceSymbolEl.__edge; - var edge = symbolEl.__edge || (source.isExpand === false || source.children.length === 1 ? sourceEdge : void 0); - var edgeShape = seriesModel.get("edgeShape"); - var layoutOpt = seriesModel.get("layout"); - var orient = seriesModel.get("orient"); - var curvature = seriesModel.get(["lineStyle", "curveness"]); - if (edge) { - if (edgeShape === "curve") { - removeElement2(edge, { - shape: getEdgeShape2(layoutOpt, orient, curvature, sourceLayout, sourceLayout), - style: { - opacity: 0 - } - }, seriesModel, { - cb: function() { - group.remove(edge); - }, - removeOpt: removeAnimationOpt - }); - } else if (edgeShape === "polyline" && seriesModel.get("layout") === "orthogonal") { - removeElement2(edge, { - shape: { - parentPoint: [sourceLayout.x, sourceLayout.y], - childPoints: [[sourceLayout.x, sourceLayout.y]] - }, - style: { - opacity: 0 - } - }, seriesModel, { - cb: function() { - group.remove(edge); - }, - removeOpt: removeAnimationOpt - }); - } - } - } - function getSourceNode2(virtualRoot, node) { - var source = node.parentNode === virtualRoot ? node : node.parentNode || node; - var sourceLayout; - while (sourceLayout = source.getLayout(), sourceLayout == null) { - source = source.parentNode === virtualRoot ? source : source.parentNode || source; - } - return { - source, - sourceLayout - }; - } - function removeNode2(data, dataIndex, symbolEl, group, seriesModel) { - var node = data.tree.getNodeByDataIndex(dataIndex); - var virtualRoot = data.tree.root; - var sourceLayout = getSourceNode2(virtualRoot, node).sourceLayout; - var removeAnimationOpt = { - duration: seriesModel.get("animationDurationUpdate"), - easing: seriesModel.get("animationEasingUpdate") - }; - removeElement2(symbolEl, { - x: sourceLayout.x + 1, - y: sourceLayout.y + 1 - }, seriesModel, { - cb: function() { - group.remove(symbolEl); - data.setItemGraphicEl(dataIndex, null); - }, - removeOpt: removeAnimationOpt - }); - symbolEl.fadeOut(null, data.hostModel, { - fadeLabel: true, - animation: removeAnimationOpt - }); - node.children.forEach(function(childNode) { - removeNodeEdge2(childNode, data, group, seriesModel, removeAnimationOpt); - }); - removeNodeEdge2(node, data, group, seriesModel, removeAnimationOpt); - } - function getEdgeShape2(layoutOpt, orient, curvature, sourceLayout, targetLayout) { - var cpx1; - var cpy1; - var cpx2; - var cpy2; - var x1; - var x2; - var y1; - var y2; - if (layoutOpt === "radial") { - x1 = sourceLayout.rawX; - y1 = sourceLayout.rawY; - x2 = targetLayout.rawX; - y2 = targetLayout.rawY; - var radialCoor1 = radialCoordinate2(x1, y1); - var radialCoor2 = radialCoordinate2(x1, y1 + (y2 - y1) * curvature); - var radialCoor3 = radialCoordinate2(x2, y2 + (y1 - y2) * curvature); - var radialCoor4 = radialCoordinate2(x2, y2); - return { - x1: radialCoor1.x || 0, - y1: radialCoor1.y || 0, - x2: radialCoor4.x || 0, - y2: radialCoor4.y || 0, - cpx1: radialCoor2.x || 0, - cpy1: radialCoor2.y || 0, - cpx2: radialCoor3.x || 0, - cpy2: radialCoor3.y || 0 - }; - } else { - x1 = sourceLayout.x; - y1 = sourceLayout.y; - x2 = targetLayout.x; - y2 = targetLayout.y; - if (orient === "LR" || orient === "RL") { - cpx1 = x1 + (x2 - x1) * curvature; - cpy1 = y1; - cpx2 = x2 + (x1 - x2) * curvature; - cpy2 = y2; - } - if (orient === "TB" || orient === "BT") { - cpx1 = x1; - cpy1 = y1 + (y2 - y1) * curvature; - cpx2 = x2; - cpy2 = y2 + (y1 - y2) * curvature; - } - } - return { - x1, - y1, - x2, - y2, - cpx1, - cpy1, - cpx2, - cpy2 - }; - } - var inner$7 = makeInner2(); - function linkSeriesData2(opt) { - var mainData = opt.mainData; - var datas = opt.datas; - if (!datas) { - datas = { - main: mainData - }; - opt.datasAttr = { - main: "data" - }; - } - opt.datas = opt.mainData = null; - linkAll2(mainData, datas, opt); - each17(datas, function(data) { - each17(mainData.TRANSFERABLE_METHODS, function(methodName) { - data.wrapMethod(methodName, curry3(transferInjection2, opt)); - }); - }); - mainData.wrapMethod("cloneShallow", curry3(cloneShallowInjection2, opt)); - each17(mainData.CHANGABLE_METHODS, function(methodName) { - mainData.wrapMethod(methodName, curry3(changeInjection2, opt)); - }); - assert2(datas[mainData.dataType] === mainData); - } - function transferInjection2(opt, res) { - if (isMainData2(this)) { - var datas = extend3({}, inner$7(this).datas); - datas[this.dataType] = res; - linkAll2(res, datas, opt); - } else { - linkSingle2(res, this.dataType, inner$7(this).mainData, opt); - } - return res; - } - function changeInjection2(opt, res) { - opt.struct && opt.struct.update(); - return res; - } - function cloneShallowInjection2(opt, res) { - each17(inner$7(res).datas, function(data, dataType) { - data !== res && linkSingle2(data.cloneShallow(), dataType, res, opt); - }); - return res; - } - function getLinkedData2(dataType) { - var mainData = inner$7(this).mainData; - return dataType == null || mainData == null ? mainData : inner$7(mainData).datas[dataType]; - } - function getLinkedDataAll2() { - var mainData = inner$7(this).mainData; - return mainData == null ? [{ - data: mainData - }] : map3(keys2(inner$7(mainData).datas), function(type) { - return { - type, - data: inner$7(mainData).datas[type] - }; - }); - } - function isMainData2(data) { - return inner$7(data).mainData === data; - } - function linkAll2(mainData, datas, opt) { - inner$7(mainData).datas = {}; - each17(datas, function(data, dataType) { - linkSingle2(data, dataType, mainData, opt); - }); - } - function linkSingle2(data, dataType, mainData, opt) { - inner$7(mainData).datas[dataType] = data; - inner$7(data).mainData = mainData; - data.dataType = dataType; - if (opt.struct) { - data[opt.structAttr] = opt.struct; - opt.struct[opt.datasAttr[dataType]] = data; - } - data.getLinkedData = getLinkedData2; - data.getLinkedDataAll = getLinkedDataAll2; - } - var TreeNode2 = ( - /** @class */ - function() { - function TreeNode3(name, hostTree) { - this.depth = 0; - this.height = 0; - this.dataIndex = -1; - this.children = []; - this.viewChildren = []; - this.isExpand = false; - this.name = name || ""; - this.hostTree = hostTree; - } - TreeNode3.prototype.isRemoved = function() { - return this.dataIndex < 0; - }; - TreeNode3.prototype.eachNode = function(options, cb, context) { - if (isFunction2(options)) { - context = cb; - cb = options; - options = null; - } - options = options || {}; - if (isString2(options)) { - options = { - order: options - }; - } - var order = options.order || "preorder"; - var children = this[options.attr || "children"]; - var suppressVisitSub; - order === "preorder" && (suppressVisitSub = cb.call(context, this)); - for (var i2 = 0; !suppressVisitSub && i2 < children.length; i2++) { - children[i2].eachNode(options, cb, context); - } - order === "postorder" && cb.call(context, this); - }; - TreeNode3.prototype.updateDepthAndHeight = function(depth) { - var height = 0; - this.depth = depth; - for (var i2 = 0; i2 < this.children.length; i2++) { - var child = this.children[i2]; - child.updateDepthAndHeight(depth + 1); - if (child.height > height) { - height = child.height; - } - } - this.height = height + 1; - }; - TreeNode3.prototype.getNodeById = function(id) { - if (this.getId() === id) { - return this; - } - for (var i2 = 0, children = this.children, len3 = children.length; i2 < len3; i2++) { - var res = children[i2].getNodeById(id); - if (res) { - return res; - } - } - }; - TreeNode3.prototype.contains = function(node) { - if (node === this) { - return true; - } - for (var i2 = 0, children = this.children, len3 = children.length; i2 < len3; i2++) { - var res = children[i2].contains(node); - if (res) { - return res; - } - } - }; - TreeNode3.prototype.getAncestors = function(includeSelf) { - var ancestors = []; - var node = includeSelf ? this : this.parentNode; - while (node) { - ancestors.push(node); - node = node.parentNode; - } - ancestors.reverse(); - return ancestors; - }; - TreeNode3.prototype.getAncestorsIndices = function() { - var indices = []; - var currNode = this; - while (currNode) { - indices.push(currNode.dataIndex); - currNode = currNode.parentNode; - } - indices.reverse(); - return indices; - }; - TreeNode3.prototype.getDescendantIndices = function() { - var indices = []; - this.eachNode(function(childNode) { - indices.push(childNode.dataIndex); - }); - return indices; - }; - TreeNode3.prototype.getValue = function(dimension) { - var data = this.hostTree.data; - return data.getStore().get(data.getDimensionIndex(dimension || "value"), this.dataIndex); - }; - TreeNode3.prototype.setLayout = function(layout6, merge3) { - this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, layout6, merge3); - }; - TreeNode3.prototype.getLayout = function() { - return this.hostTree.data.getItemLayout(this.dataIndex); - }; - TreeNode3.prototype.getModel = function(path) { - if (this.dataIndex < 0) { - return; - } - var hostTree = this.hostTree; - var itemModel = hostTree.data.getItemModel(this.dataIndex); - return itemModel.getModel(path); - }; - TreeNode3.prototype.getLevelModel = function() { - return (this.hostTree.levelModels || [])[this.depth]; - }; - TreeNode3.prototype.setVisual = function(key, value) { - this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, key, value); - }; - TreeNode3.prototype.getVisual = function(key) { - return this.hostTree.data.getItemVisual(this.dataIndex, key); - }; - TreeNode3.prototype.getRawIndex = function() { - return this.hostTree.data.getRawIndex(this.dataIndex); - }; - TreeNode3.prototype.getId = function() { - return this.hostTree.data.getId(this.dataIndex); - }; - TreeNode3.prototype.getChildIndex = function() { - if (this.parentNode) { - var children = this.parentNode.children; - for (var i2 = 0; i2 < children.length; ++i2) { - if (children[i2] === this) { - return i2; - } - } - return -1; - } - return -1; - }; - TreeNode3.prototype.isAncestorOf = function(node) { - var parent = node.parentNode; - while (parent) { - if (parent === this) { - return true; - } - parent = parent.parentNode; - } - return false; - }; - TreeNode3.prototype.isDescendantOf = function(node) { - return node !== this && node.isAncestorOf(this); - }; - return TreeNode3; - }() - ); - var Tree2 = ( - /** @class */ - function() { - function Tree3(hostModel) { - this.type = "tree"; - this._nodes = []; - this.hostModel = hostModel; - } - Tree3.prototype.eachNode = function(options, cb, context) { - this.root.eachNode(options, cb, context); - }; - Tree3.prototype.getNodeByDataIndex = function(dataIndex) { - var rawIndex = this.data.getRawIndex(dataIndex); - return this._nodes[rawIndex]; - }; - Tree3.prototype.getNodeById = function(name) { - return this.root.getNodeById(name); - }; - Tree3.prototype.update = function() { - var data = this.data; - var nodes = this._nodes; - for (var i2 = 0, len3 = nodes.length; i2 < len3; i2++) { - nodes[i2].dataIndex = -1; - } - for (var i2 = 0, len3 = data.count(); i2 < len3; i2++) { - nodes[data.getRawIndex(i2)].dataIndex = i2; - } - }; - Tree3.prototype.clearLayouts = function() { - this.data.clearItemLayouts(); - }; - Tree3.createTree = function(dataRoot, hostModel, beforeLink) { - var tree = new Tree3(hostModel); - var listData = []; - var dimMax = 1; - buildHierarchy(dataRoot); - function buildHierarchy(dataNode, parentNode3) { - var value = dataNode.value; - dimMax = Math.max(dimMax, isArray3(value) ? value.length : 1); - listData.push(dataNode); - var node = new TreeNode2(convertOptionIdName2(dataNode.name, ""), tree); - parentNode3 ? addChild2(node, parentNode3) : tree.root = node; - tree._nodes.push(node); - var children = dataNode.children; - if (children) { - for (var i2 = 0; i2 < children.length; i2++) { - buildHierarchy(children[i2], node); - } - } - } - tree.root.updateDepthAndHeight(0); - var dimensions = prepareSeriesDataSchema2(listData, { - coordDimensions: ["value"], - dimensionsCount: dimMax - }).dimensions; - var list = new SeriesData2(dimensions, hostModel); - list.initData(listData); - beforeLink && beforeLink(list); - linkSeriesData2({ - mainData: list, - struct: tree, - structAttr: "tree" - }); - tree.update(); - return tree; - }; - return Tree3; - }() - ); - function addChild2(child, node) { - var children = node.children; - if (child.parentNode === node) { - return; - } - children.push(child); - child.parentNode = node; - } - function retrieveTargetInfo2(payload, validPayloadTypes, seriesModel) { - if (payload && indexOf2(validPayloadTypes, payload.type) >= 0) { - var root = seriesModel.getData().tree.root; - var targetNode = payload.targetNode; - if (isString2(targetNode)) { - targetNode = root.getNodeById(targetNode); - } - if (targetNode && root.contains(targetNode)) { - return { - node: targetNode - }; - } - var targetNodeId = payload.targetNodeId; - if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) { - return { - node: targetNode - }; - } - } - } - function getPathToRoot2(node) { - var path = []; - while (node) { - node = node.parentNode; - node && path.push(node); - } - return path.reverse(); - } - function aboveViewRoot2(viewRoot, node) { - var viewPath = getPathToRoot2(viewRoot); - return indexOf2(viewPath, node) >= 0; - } - function wrapTreePathInfo2(node, seriesModel) { - var treePathInfo = []; - while (node) { - var nodeDataIndex = node.dataIndex; - treePathInfo.push({ - name: node.name, - dataIndex: nodeDataIndex, - value: seriesModel.getRawValue(nodeDataIndex) - }); - node = node.parentNode; - } - treePathInfo.reverse(); - return treePathInfo; - } - var TreeSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(TreeSeriesModel3, _super); - function TreeSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.hasSymbolVisual = true; - _this.ignoreStyleOnData = true; - return _this; - } - TreeSeriesModel3.prototype.getInitialData = function(option) { - var root = { - name: option.name, - children: option.data - }; - var leaves = option.leaves || {}; - var leavesModel = new Model2(leaves, this, this.ecModel); - var tree = Tree2.createTree(root, this, beforeLink); - function beforeLink(nodeData) { - nodeData.wrapMethod("getItemModel", function(model, idx) { - var node = tree.getNodeByDataIndex(idx); - if (!(node && node.children.length && node.isExpand)) { - model.parentModel = leavesModel; - } - return model; - }); - } - var treeDepth = 0; - tree.eachNode("preorder", function(node) { - if (node.depth > treeDepth) { - treeDepth = node.depth; - } - }); - var expandAndCollapse = option.expandAndCollapse; - var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth; - tree.root.eachNode("preorder", function(node) { - var item = node.hostTree.data.getRawDataItem(node.dataIndex); - node.isExpand = item && item.collapsed != null ? !item.collapsed : node.depth <= expandTreeDepth; - }); - return tree.data; - }; - TreeSeriesModel3.prototype.getOrient = function() { - var orient = this.get("orient"); - if (orient === "horizontal") { - orient = "LR"; - } else if (orient === "vertical") { - orient = "TB"; - } - return orient; - }; - TreeSeriesModel3.prototype.setZoom = function(zoom) { - this.option.zoom = zoom; - }; - TreeSeriesModel3.prototype.setCenter = function(center4) { - this.option.center = center4; - }; - TreeSeriesModel3.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - var tree = this.getData().tree; - var realRoot = tree.root.children[0]; - var node = tree.getNodeByDataIndex(dataIndex); - var value = node.getValue(); - var name = node.name; - while (node && node !== realRoot) { - name = node.parentNode.name + "." + name; - node = node.parentNode; - } - return createTooltipMarkup2("nameValue", { - name, - value, - noValue: isNaN(value) || value == null - }); - }; - TreeSeriesModel3.prototype.getDataParams = function(dataIndex) { - var params = _super.prototype.getDataParams.apply(this, arguments); - var node = this.getData().tree.getNodeByDataIndex(dataIndex); - params.treeAncestors = wrapTreePathInfo2(node, this); - params.collapsed = !node.isExpand; - return params; - }; - TreeSeriesModel3.type = "series.tree"; - TreeSeriesModel3.layoutMode = "box"; - TreeSeriesModel3.defaultOption = { - // zlevel: 0, - z: 2, - coordinateSystem: "view", - // the position of the whole view - left: "12%", - top: "12%", - right: "12%", - bottom: "12%", - // the layout of the tree, two value can be selected, 'orthogonal' or 'radial' - layout: "orthogonal", - // value can be 'polyline' - edgeShape: "curve", - edgeForkPosition: "50%", - // true | false | 'move' | 'scale', see module:component/helper/RoamController. - roam: false, - // Symbol size scale ratio in roam - nodeScaleRatio: 0.4, - // Default on center of graph - center: null, - zoom: 1, - orient: "LR", - symbol: "emptyCircle", - symbolSize: 7, - expandAndCollapse: true, - initialTreeDepth: 2, - lineStyle: { - color: "#ccc", - width: 1.5, - curveness: 0.5 - }, - itemStyle: { - color: "lightsteelblue", - // borderColor: '#c23531', - borderWidth: 1.5 - }, - label: { - show: true - }, - animationEasing: "linear", - animationDuration: 700, - animationDurationUpdate: 500 - }; - return TreeSeriesModel3; - }(SeriesModel2) - ); - function eachAfter2(root, callback, separation3) { - var nodes = [root]; - var next = []; - var node; - while (node = nodes.pop()) { - next.push(node); - if (node.isExpand) { - var children = node.children; - if (children.length) { - for (var i2 = 0; i2 < children.length; i2++) { - nodes.push(children[i2]); - } - } - } - } - while (node = next.pop()) { - callback(node, separation3); - } - } - function eachBefore2(root, callback) { - var nodes = [root]; - var node; - while (node = nodes.pop()) { - callback(node); - if (node.isExpand) { - var children = node.children; - if (children.length) { - for (var i2 = children.length - 1; i2 >= 0; i2--) { - nodes.push(children[i2]); - } - } - } - } - } - function treeLayout2(ecModel, api) { - ecModel.eachSeriesByType("tree", function(seriesModel) { - commonLayout2(seriesModel, api); - }); - } - function commonLayout2(seriesModel, api) { - var layoutInfo = getViewRect$1(seriesModel, api); - seriesModel.layoutInfo = layoutInfo; - var layout6 = seriesModel.get("layout"); - var width = 0; - var height = 0; - var separation$1 = null; - if (layout6 === "radial") { - width = 2 * Math.PI; - height = Math.min(layoutInfo.height, layoutInfo.width) / 2; - separation$1 = separation2(function(node1, node2) { - return (node1.parentNode === node2.parentNode ? 1 : 2) / node1.depth; - }); - } else { - width = layoutInfo.width; - height = layoutInfo.height; - separation$1 = separation2(); - } - var virtualRoot = seriesModel.getData().tree.root; - var realRoot = virtualRoot.children[0]; - if (realRoot) { - init$2(virtualRoot); - eachAfter2(realRoot, firstWalk2, separation$1); - virtualRoot.hierNode.modifier = -realRoot.hierNode.prelim; - eachBefore2(realRoot, secondWalk2); - var left_1 = realRoot; - var right_1 = realRoot; - var bottom_1 = realRoot; - eachBefore2(realRoot, function(node) { - var x = node.getLayout().x; - if (x < left_1.getLayout().x) { - left_1 = node; - } - if (x > right_1.getLayout().x) { - right_1 = node; - } - if (node.depth > bottom_1.depth) { - bottom_1 = node; - } - }); - var delta = left_1 === right_1 ? 1 : separation$1(left_1, right_1) / 2; - var tx_1 = delta - left_1.getLayout().x; - var kx_1 = 0; - var ky_1 = 0; - var coorX_1 = 0; - var coorY_1 = 0; - if (layout6 === "radial") { - kx_1 = width / (right_1.getLayout().x + delta + tx_1); - ky_1 = height / (bottom_1.depth - 1 || 1); - eachBefore2(realRoot, function(node) { - coorX_1 = (node.getLayout().x + tx_1) * kx_1; - coorY_1 = (node.depth - 1) * ky_1; - var finalCoor = radialCoordinate2(coorX_1, coorY_1); - node.setLayout({ - x: finalCoor.x, - y: finalCoor.y, - rawX: coorX_1, - rawY: coorY_1 - }, true); - }); - } else { - var orient_1 = seriesModel.getOrient(); - if (orient_1 === "RL" || orient_1 === "LR") { - ky_1 = height / (right_1.getLayout().x + delta + tx_1); - kx_1 = width / (bottom_1.depth - 1 || 1); - eachBefore2(realRoot, function(node) { - coorY_1 = (node.getLayout().x + tx_1) * ky_1; - coorX_1 = orient_1 === "LR" ? (node.depth - 1) * kx_1 : width - (node.depth - 1) * kx_1; - node.setLayout({ - x: coorX_1, - y: coorY_1 - }, true); - }); - } else if (orient_1 === "TB" || orient_1 === "BT") { - kx_1 = width / (right_1.getLayout().x + delta + tx_1); - ky_1 = height / (bottom_1.depth - 1 || 1); - eachBefore2(realRoot, function(node) { - coorX_1 = (node.getLayout().x + tx_1) * kx_1; - coorY_1 = orient_1 === "TB" ? (node.depth - 1) * ky_1 : height - (node.depth - 1) * ky_1; - node.setLayout({ - x: coorX_1, - y: coorY_1 - }, true); - }); - } - } - } - } - function treeVisual2(ecModel) { - ecModel.eachSeriesByType("tree", function(seriesModel) { - var data = seriesModel.getData(); - var tree = data.tree; - tree.eachNode(function(node) { - var model = node.getModel(); - var style = model.getModel("itemStyle").getItemStyle(); - var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, "style"); - extend3(existsStyle, style); - }); - }); - } - function installTreeAction2(registers) { - registers.registerAction({ - type: "treeExpandAndCollapse", - event: "treeExpandAndCollapse", - update: "update" - }, function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "series", - subType: "tree", - query: payload - }, function(seriesModel) { - var dataIndex = payload.dataIndex; - var tree = seriesModel.getData().tree; - var node = tree.getNodeByDataIndex(dataIndex); - node.isExpand = !node.isExpand; - }); - }); - registers.registerAction({ - type: "treeRoam", - event: "treeRoam", - // Here we set 'none' instead of 'update', because roam action - // just need to update the transform matrix without having to recalculate - // the layout. So don't need to go through the whole update process, such - // as 'dataPrcocess', 'coordSystemUpdate', 'layout' and so on. - update: "none" - }, function(payload, ecModel, api) { - ecModel.eachComponent({ - mainType: "series", - subType: "tree", - query: payload - }, function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - var res = updateCenterAndZoom2(coordSys, payload, void 0, api); - seriesModel.setCenter && seriesModel.setCenter(res.center); - seriesModel.setZoom && seriesModel.setZoom(res.zoom); - }); - }); - } - function install$b(registers) { - registers.registerChartView(TreeView2); - registers.registerSeriesModel(TreeSeriesModel2); - registers.registerLayout(treeLayout2); - registers.registerVisual(treeVisual2); - installTreeAction2(registers); - } - var actionTypes2 = ["treemapZoomToNode", "treemapRender", "treemapMove"]; - function installTreemapAction2(registers) { - for (var i2 = 0; i2 < actionTypes2.length; i2++) { - registers.registerAction({ - type: actionTypes2[i2], - update: "updateView" - }, noop2); - } - registers.registerAction({ - type: "treemapRootToNode", - update: "updateView" - }, function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "series", - subType: "treemap", - query: payload - }, handleRootToNode); - function handleRootToNode(model, index) { - var types = ["treemapZoomToNode", "treemapRootToNode"]; - var targetInfo = retrieveTargetInfo2(payload, types, model); - if (targetInfo) { - var originViewRoot = model.getViewRoot(); - if (originViewRoot) { - payload.direction = aboveViewRoot2(originViewRoot, targetInfo.node) ? "rollUp" : "drillDown"; - } - model.resetViewRoot(targetInfo.node); - } - } - }); - } - function enableAriaDecalForTree2(seriesModel) { - var data = seriesModel.getData(); - var tree = data.tree; - var decalPaletteScope3 = {}; - tree.eachNode(function(node) { - var current = node; - while (current && current.depth > 1) { - current = current.parentNode; - } - var decal = getDecalFromPalette2(seriesModel.ecModel, current.name || current.dataIndex + "", decalPaletteScope3); - node.setVisual("decal", decal); - }); - } - var TreemapSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(TreemapSeriesModel3, _super); - function TreemapSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TreemapSeriesModel3.type; - _this.preventUsingHoverLayer = true; - return _this; - } - TreemapSeriesModel3.prototype.getInitialData = function(option, ecModel) { - var root = { - name: option.name, - children: option.data - }; - completeTreeValue3(root); - var levels = option.levels || []; - var designatedVisualItemStyle = this.designatedVisualItemStyle = {}; - var designatedVisualModel = new Model2({ - itemStyle: designatedVisualItemStyle - }, this, ecModel); - levels = option.levels = setDefault2(levels, ecModel); - var levelModels = map3(levels || [], function(levelDefine) { - return new Model2(levelDefine, designatedVisualModel, ecModel); - }, this); - var tree = Tree2.createTree(root, this, beforeLink); - function beforeLink(nodeData) { - nodeData.wrapMethod("getItemModel", function(model, idx) { - var node = tree.getNodeByDataIndex(idx); - var levelModel = node ? levelModels[node.depth] : null; - model.parentModel = levelModel || designatedVisualModel; - return model; - }); - } - return tree.data; - }; - TreemapSeriesModel3.prototype.optionUpdated = function() { - this.resetViewRoot(); - }; - TreemapSeriesModel3.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - var data = this.getData(); - var value = this.getRawValue(dataIndex); - var name = data.getName(dataIndex); - return createTooltipMarkup2("nameValue", { - name, - value - }); - }; - TreemapSeriesModel3.prototype.getDataParams = function(dataIndex) { - var params = _super.prototype.getDataParams.apply(this, arguments); - var node = this.getData().tree.getNodeByDataIndex(dataIndex); - params.treeAncestors = wrapTreePathInfo2(node, this); - params.treePathInfo = params.treeAncestors; - return params; - }; - TreemapSeriesModel3.prototype.setLayoutInfo = function(layoutInfo) { - this.layoutInfo = this.layoutInfo || {}; - extend3(this.layoutInfo, layoutInfo); - }; - TreemapSeriesModel3.prototype.mapIdToIndex = function(id) { - var idIndexMap = this._idIndexMap; - if (!idIndexMap) { - idIndexMap = this._idIndexMap = createHashMap2(); - this._idIndexMapCount = 0; - } - var index = idIndexMap.get(id); - if (index == null) { - idIndexMap.set(id, index = this._idIndexMapCount++); - } - return index; - }; - TreemapSeriesModel3.prototype.getViewRoot = function() { - return this._viewRoot; - }; - TreemapSeriesModel3.prototype.resetViewRoot = function(viewRoot) { - viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot; - var root = this.getRawData().tree.root; - if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) { - this._viewRoot = root; - } - }; - TreemapSeriesModel3.prototype.enableAriaDecal = function() { - enableAriaDecalForTree2(this); - }; - TreemapSeriesModel3.type = "series.treemap"; - TreemapSeriesModel3.layoutMode = "box"; - TreemapSeriesModel3.defaultOption = { - // Disable progressive rendering - progressive: 0, - // size: ['80%', '80%'], // deprecated, compatible with ec2. - left: "center", - top: "middle", - width: "80%", - height: "80%", - sort: true, - clipWindow: "origin", - squareRatio: 0.5 * (1 + Math.sqrt(5)), - leafDepth: null, - drillDownIcon: "\u25B6", - // to align specialized icon. ▷▶❒❐▼✚ - zoomToNodeRatio: 0.32 * 0.32, - scaleLimit: null, - roam: true, - nodeClick: "zoomToNode", - animation: true, - animationDurationUpdate: 900, - animationEasing: "quinticInOut", - breadcrumb: { - show: true, - height: 22, - left: "center", - top: "bottom", - // right - // bottom - emptyItemWidth: 25, - itemStyle: { - color: "rgba(0,0,0,0.7)", - textStyle: { - color: "#fff" - } - }, - emphasis: { - itemStyle: { - color: "rgba(0,0,0,0.9)" - // '#5793f3', - } - } - }, - label: { - show: true, - // Do not use textDistance, for ellipsis rect just the same as treemap node rect. - distance: 0, - padding: 5, - position: "inside", - // formatter: null, - color: "#fff", - overflow: "truncate" - // align - // verticalAlign - }, - upperLabel: { - show: false, - position: [0, "50%"], - height: 20, - // formatter: null, - // color: '#fff', - overflow: "truncate", - // align: null, - verticalAlign: "middle" - }, - itemStyle: { - color: null, - colorAlpha: null, - colorSaturation: null, - borderWidth: 0, - gapWidth: 0, - borderColor: "#fff", - borderColorSaturation: null - // If specified, borderColor will be ineffective, and the - // border color is evaluated by color of current node and - // borderColorSaturation. - }, - emphasis: { - upperLabel: { - show: true, - position: [0, "50%"], - overflow: "truncate", - verticalAlign: "middle" - } - }, - visualDimension: 0, - visualMin: null, - visualMax: null, - color: [], - // level[n].color (if necessary). - // + Specify color list of each level. level[0].color would be global - // color list if not specified. (see method `setDefault`). - // + But set as a empty array to forbid fetch color from global palette - // when using nodeModel.get('color'), otherwise nodes on deep level - // will always has color palette set and are not able to inherit color - // from parent node. - // + TreemapSeries.color can not be set as 'none', otherwise effect - // legend color fetching (see seriesColor.js). - colorAlpha: null, - colorSaturation: null, - colorMappingBy: "index", - visibleMin: 10, - // be rendered. Only works when sort is 'asc' or 'desc'. - childrenVisibleMin: null, - // grandchildren will not show. - // Why grandchildren? If not grandchildren but children, - // some siblings show children and some not, - // the appearance may be mess and not consistent, - levels: [] - // Each item: { - // visibleMin, itemStyle, visualDimension, label - // } - }; - return TreemapSeriesModel3; - }(SeriesModel2) - ); - function completeTreeValue3(dataNode) { - var sum3 = 0; - each17(dataNode.children, function(child) { - completeTreeValue3(child); - var childValue = child.value; - isArray3(childValue) && (childValue = childValue[0]); - sum3 += childValue; - }); - var thisValue = dataNode.value; - if (isArray3(thisValue)) { - thisValue = thisValue[0]; - } - if (thisValue == null || isNaN(thisValue)) { - thisValue = sum3; - } - if (thisValue < 0) { - thisValue = 0; - } - isArray3(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue; - } - function setDefault2(levels, ecModel) { - var globalColorList = normalizeToArray2(ecModel.get("color")); - var globalDecalList = normalizeToArray2(ecModel.get(["aria", "decal", "decals"])); - if (!globalColorList) { - return; - } - levels = levels || []; - var hasColorDefine; - var hasDecalDefine; - each17(levels, function(levelDefine) { - var model = new Model2(levelDefine); - var modelColor = model.get("color"); - var modelDecal = model.get("decal"); - if (model.get(["itemStyle", "color"]) || modelColor && modelColor !== "none") { - hasColorDefine = true; - } - if (model.get(["itemStyle", "decal"]) || modelDecal && modelDecal !== "none") { - hasDecalDefine = true; - } - }); - var level0 = levels[0] || (levels[0] = {}); - if (!hasColorDefine) { - level0.color = globalColorList.slice(); - } - if (!hasDecalDefine && globalDecalList) { - level0.decal = globalDecalList.slice(); - } - return levels; - } - var TEXT_PADDING2 = 8; - var ITEM_GAP2 = 8; - var ARRAY_LENGTH2 = 5; - var Breadcrumb2 = ( - /** @class */ - function() { - function Breadcrumb3(containerGroup) { - this.group = new Group5(); - containerGroup.add(this.group); - } - Breadcrumb3.prototype.render = function(seriesModel, api, targetNode, onSelect) { - var model = seriesModel.getModel("breadcrumb"); - var thisGroup = this.group; - thisGroup.removeAll(); - if (!model.get("show") || !targetNode) { - return; - } - var normalStyleModel = model.getModel("itemStyle"); - var emphasisModel = model.getModel("emphasis"); - var textStyleModel = normalStyleModel.getModel("textStyle"); - var emphasisTextStyleModel = emphasisModel.getModel(["itemStyle", "textStyle"]); - var layoutParam = { - pos: { - left: model.get("left"), - right: model.get("right"), - top: model.get("top"), - bottom: model.get("bottom") - }, - box: { - width: api.getWidth(), - height: api.getHeight() - }, - emptyItemWidth: model.get("emptyItemWidth"), - totalWidth: 0, - renderList: [] - }; - this._prepare(targetNode, layoutParam, textStyleModel); - this._renderContent(seriesModel, layoutParam, normalStyleModel, emphasisModel, textStyleModel, emphasisTextStyleModel, onSelect); - positionElement2(thisGroup, layoutParam.pos, layoutParam.box); - }; - Breadcrumb3.prototype._prepare = function(targetNode, layoutParam, textStyleModel) { - for (var node = targetNode; node; node = node.parentNode) { - var text = convertOptionIdName2(node.getModel().get("name"), ""); - var textRect = textStyleModel.getTextRect(text); - var itemWidth = Math.max(textRect.width + TEXT_PADDING2 * 2, layoutParam.emptyItemWidth); - layoutParam.totalWidth += itemWidth + ITEM_GAP2; - layoutParam.renderList.push({ - node, - text, - width: itemWidth - }); - } - }; - Breadcrumb3.prototype._renderContent = function(seriesModel, layoutParam, normalStyleModel, emphasisModel, textStyleModel, emphasisTextStyleModel, onSelect) { - var lastX = 0; - var emptyItemWidth = layoutParam.emptyItemWidth; - var height = seriesModel.get(["breadcrumb", "height"]); - var availableSize = getAvailableSize2(layoutParam.pos, layoutParam.box); - var totalWidth = layoutParam.totalWidth; - var renderList = layoutParam.renderList; - var emphasisItemStyle = emphasisModel.getModel("itemStyle").getItemStyle(); - for (var i2 = renderList.length - 1; i2 >= 0; i2--) { - var item = renderList[i2]; - var itemNode = item.node; - var itemWidth = item.width; - var text = item.text; - if (totalWidth > availableSize.width) { - totalWidth -= itemWidth - emptyItemWidth; - itemWidth = emptyItemWidth; - text = null; - } - var el = new Polygon2({ - shape: { - points: makeItemPoints2(lastX, 0, itemWidth, height, i2 === renderList.length - 1, i2 === 0) - }, - style: defaults2(normalStyleModel.getItemStyle(), { - lineJoin: "bevel" - }), - textContent: new ZRText2({ - style: createTextStyle3(textStyleModel, { - text - }) - }), - textConfig: { - position: "inside" - }, - z2: Z2_EMPHASIS_LIFT2 * 1e4, - onclick: curry3(onSelect, itemNode) - }); - el.disableLabelAnimation = true; - el.getTextContent().ensureState("emphasis").style = createTextStyle3(emphasisTextStyleModel, { - text - }); - el.ensureState("emphasis").style = emphasisItemStyle; - toggleHoverEmphasis2(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - this.group.add(el); - packEventData2(el, seriesModel, itemNode); - lastX += itemWidth + ITEM_GAP2; - } - }; - Breadcrumb3.prototype.remove = function() { - this.group.removeAll(); - }; - return Breadcrumb3; - }() - ); - function makeItemPoints2(x, y, itemWidth, itemHeight, head, tail) { - var points5 = [[head ? x : x - ARRAY_LENGTH2, y], [x + itemWidth, y], [x + itemWidth, y + itemHeight], [head ? x : x - ARRAY_LENGTH2, y + itemHeight]]; - !tail && points5.splice(2, 0, [x + itemWidth + ARRAY_LENGTH2, y + itemHeight / 2]); - !head && points5.push([x, y + itemHeight / 2]); - return points5; - } - function packEventData2(el, seriesModel, itemNode) { - getECData2(el).eventData = { - componentType: "series", - componentSubType: "treemap", - componentIndex: seriesModel.componentIndex, - seriesIndex: seriesModel.seriesIndex, - seriesName: seriesModel.name, - seriesType: "treemap", - selfType: "breadcrumb", - nodeData: { - dataIndex: itemNode && itemNode.dataIndex, - name: itemNode && itemNode.name - }, - treePathInfo: itemNode && wrapTreePathInfo2(itemNode, seriesModel) - }; - } - var AnimationWrap2 = ( - /** @class */ - function() { - function AnimationWrap3() { - this._storage = []; - this._elExistsMap = {}; - } - AnimationWrap3.prototype.add = function(el, target, duration, delay, easing) { - if (this._elExistsMap[el.id]) { - return false; - } - this._elExistsMap[el.id] = true; - this._storage.push({ - el, - target, - duration, - delay, - easing - }); - return true; - }; - AnimationWrap3.prototype.finished = function(callback) { - this._finishedCallback = callback; - return this; - }; - AnimationWrap3.prototype.start = function() { - var _this = this; - var count3 = this._storage.length; - var checkTerminate = function() { - count3--; - if (count3 <= 0) { - _this._storage.length = 0; - _this._elExistsMap = {}; - _this._finishedCallback && _this._finishedCallback(); - } - }; - for (var i2 = 0, len3 = this._storage.length; i2 < len3; i2++) { - var item = this._storage[i2]; - item.el.animateTo(item.target, { - duration: item.duration, - delay: item.delay, - easing: item.easing, - setToFinal: true, - done: checkTerminate, - aborted: checkTerminate - }); - } - return this; - }; - return AnimationWrap3; - }() - ); - function createWrap2() { - return new AnimationWrap2(); - } - var Group$1 = Group5; - var Rect$1 = Rect4; - var DRAG_THRESHOLD2 = 3; - var PATH_LABEL_NOAMAL2 = "label"; - var PATH_UPPERLABEL_NORMAL2 = "upperLabel"; - var Z2_BASE2 = Z2_EMPHASIS_LIFT2 * 10; - var Z2_BG2 = Z2_EMPHASIS_LIFT2 * 2; - var Z2_CONTENT2 = Z2_EMPHASIS_LIFT2 * 3; - var getStateItemStyle2 = makeStyleMapper2([ - ["fill", "color"], - // `borderColor` and `borderWidth` has been occupied, - // so use `stroke` to indicate the stroke of the rect. - ["stroke", "strokeColor"], - ["lineWidth", "strokeWidth"], - ["shadowBlur"], - ["shadowOffsetX"], - ["shadowOffsetY"], - ["shadowColor"] - // Option decal is in `DecalObject` but style.decal is in `PatternObject`. - // So do not transfer decal directly. - ]); - var getItemStyleNormal2 = function(model) { - var itemStyle = getStateItemStyle2(model); - itemStyle.stroke = itemStyle.fill = itemStyle.lineWidth = null; - return itemStyle; - }; - var inner$8 = makeInner2(); - var TreemapView2 = ( - /** @class */ - function(_super) { - __extends2(TreemapView3, _super); - function TreemapView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TreemapView3.type; - _this._state = "ready"; - _this._storage = createStorage2(); - return _this; - } - TreemapView3.prototype.render = function(seriesModel, ecModel, api, payload) { - var models = ecModel.findComponents({ - mainType: "series", - subType: "treemap", - query: payload - }); - if (indexOf2(models, seriesModel) < 0) { - return; - } - this.seriesModel = seriesModel; - this.api = api; - this.ecModel = ecModel; - var types = ["treemapZoomToNode", "treemapRootToNode"]; - var targetInfo = retrieveTargetInfo2(payload, types, seriesModel); - var payloadType = payload && payload.type; - var layoutInfo = seriesModel.layoutInfo; - var isInit = !this._oldTree; - var thisStorage = this._storage; - var reRoot = payloadType === "treemapRootToNode" && targetInfo && thisStorage ? { - rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()], - direction: payload.direction - } : null; - var containerGroup = this._giveContainerGroup(layoutInfo); - var hasAnimation = seriesModel.get("animation"); - var renderResult = this._doRender(containerGroup, seriesModel, reRoot); - hasAnimation && !isInit && (!payloadType || payloadType === "treemapZoomToNode" || payloadType === "treemapRootToNode") ? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot) : renderResult.renderFinally(); - this._resetController(api); - this._renderBreadcrumb(seriesModel, api, targetInfo); - }; - TreemapView3.prototype._giveContainerGroup = function(layoutInfo) { - var containerGroup = this._containerGroup; - if (!containerGroup) { - containerGroup = this._containerGroup = new Group$1(); - this._initEvents(containerGroup); - this.group.add(containerGroup); - } - containerGroup.x = layoutInfo.x; - containerGroup.y = layoutInfo.y; - return containerGroup; - }; - TreemapView3.prototype._doRender = function(containerGroup, seriesModel, reRoot) { - var thisTree = seriesModel.getData().tree; - var oldTree = this._oldTree; - var lastsForAnimation = createStorage2(); - var thisStorage = createStorage2(); - var oldStorage = this._storage; - var willInvisibleEls = []; - function doRenderNode(thisNode, oldNode, parentGroup, depth) { - return renderNode2(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth); - } - dualTravel(thisTree.root ? [thisTree.root] : [], oldTree && oldTree.root ? [oldTree.root] : [], containerGroup, thisTree === oldTree || !oldTree, 0); - var willDeleteEls = clearStorage(oldStorage); - this._oldTree = thisTree; - this._storage = thisStorage; - if (this._controllerHost) { - var _oldRootLayout = this.seriesModel.layoutInfo; - var rootLayout = thisTree.root.getLayout(); - if (rootLayout.width === _oldRootLayout.width && rootLayout.height === _oldRootLayout.height) { - this._controllerHost.zoom = 1; - } - } - return { - lastsForAnimation, - willDeleteEls, - renderFinally - }; - function dualTravel(thisViewChildren, oldViewChildren, parentGroup, sameTree, depth) { - if (sameTree) { - oldViewChildren = thisViewChildren; - each17(thisViewChildren, function(child, index) { - !child.isRemoved() && processNode(index, index); - }); - } else { - new DataDiffer2(oldViewChildren, thisViewChildren, getKey3, getKey3).add(processNode).update(processNode).remove(curry3(processNode, null)).execute(); - } - function getKey3(node) { - return node.getId(); - } - function processNode(newIndex, oldIndex) { - var thisNode = newIndex != null ? thisViewChildren[newIndex] : null; - var oldNode = oldIndex != null ? oldViewChildren[oldIndex] : null; - var group = doRenderNode(thisNode, oldNode, parentGroup, depth); - group && dualTravel(thisNode && thisNode.viewChildren || [], oldNode && oldNode.viewChildren || [], group, sameTree, depth + 1); - } - } - function clearStorage(storage3) { - var willDeleteEls2 = createStorage2(); - storage3 && each17(storage3, function(store, storageName) { - var delEls = willDeleteEls2[storageName]; - each17(store, function(el) { - el && (delEls.push(el), inner$8(el).willDelete = true); - }); - }); - return willDeleteEls2; - } - function renderFinally() { - each17(willDeleteEls, function(els) { - each17(els, function(el) { - el.parent && el.parent.remove(el); - }); - }); - each17(willInvisibleEls, function(el) { - el.invisible = true; - el.dirty(); - }); - } - }; - TreemapView3.prototype._doAnimation = function(containerGroup, renderResult, seriesModel, reRoot) { - var durationOption = seriesModel.get("animationDurationUpdate"); - var easingOption = seriesModel.get("animationEasing"); - var duration = (isFunction2(durationOption) ? 0 : durationOption) || 0; - var easing = (isFunction2(easingOption) ? null : easingOption) || "cubicOut"; - var animationWrap = createWrap2(); - each17(renderResult.willDeleteEls, function(store, storageName) { - each17(store, function(el, rawIndex) { - if (el.invisible) { - return; - } - var parent = el.parent; - var target; - var innerStore = inner$8(parent); - if (reRoot && reRoot.direction === "drillDown") { - target = parent === reRoot.rootNodeGroup ? { - shape: { - x: 0, - y: 0, - width: innerStore.nodeWidth, - height: innerStore.nodeHeight - }, - style: { - opacity: 0 - } - } : { - style: { - opacity: 0 - } - }; - } else { - var targetX = 0; - var targetY = 0; - if (!innerStore.willDelete) { - targetX = innerStore.nodeWidth / 2; - targetY = innerStore.nodeHeight / 2; - } - target = storageName === "nodeGroup" ? { - x: targetX, - y: targetY, - style: { - opacity: 0 - } - } : { - shape: { - x: targetX, - y: targetY, - width: 0, - height: 0 - }, - style: { - opacity: 0 - } - }; - } - target && animationWrap.add(el, target, duration, 0, easing); - }); - }); - each17(this._storage, function(store, storageName) { - each17(store, function(el, rawIndex) { - var last = renderResult.lastsForAnimation[storageName][rawIndex]; - var target = {}; - if (!last) { - return; - } - if (el instanceof Group5) { - if (last.oldX != null) { - target.x = el.x; - target.y = el.y; - el.x = last.oldX; - el.y = last.oldY; - } - } else { - if (last.oldShape) { - target.shape = extend3({}, el.shape); - el.setShape(last.oldShape); - } - if (last.fadein) { - el.setStyle("opacity", 0); - target.style = { - opacity: 1 - }; - } else if (el.style.opacity !== 1) { - target.style = { - opacity: 1 - }; - } - } - animationWrap.add(el, target, duration, 0, easing); - }); - }, this); - this._state = "animating"; - animationWrap.finished(bind3(function() { - this._state = "ready"; - renderResult.renderFinally(); - }, this)).start(); - }; - TreemapView3.prototype._resetController = function(api) { - var controller = this._controller; - var controllerHost = this._controllerHost; - if (!controllerHost) { - this._controllerHost = { - target: this.group - }; - controllerHost = this._controllerHost; - } - if (!controller) { - controller = this._controller = new RoamController2(api.getZr()); - controller.enable(this.seriesModel.get("roam")); - controllerHost.zoomLimit = this.seriesModel.get("scaleLimit"); - controllerHost.zoom = this.seriesModel.get("zoom"); - controller.on("pan", bind3(this._onPan, this)); - controller.on("zoom", bind3(this._onZoom, this)); - } - var rect = new BoundingRect2(0, 0, api.getWidth(), api.getHeight()); - controller.setPointerChecker(function(e3, x, y) { - return rect.contain(x, y); - }); - }; - TreemapView3.prototype._clearController = function() { - var controller = this._controller; - this._controllerHost = null; - if (controller) { - controller.dispose(); - controller = null; - } - }; - TreemapView3.prototype._onPan = function(e3) { - if (this._state !== "animating" && (Math.abs(e3.dx) > DRAG_THRESHOLD2 || Math.abs(e3.dy) > DRAG_THRESHOLD2)) { - var root = this.seriesModel.getData().tree.root; - if (!root) { - return; - } - var rootLayout = root.getLayout(); - if (!rootLayout) { - return; - } - this.api.dispatchAction({ - type: "treemapMove", - from: this.uid, - seriesId: this.seriesModel.id, - rootRect: { - x: rootLayout.x + e3.dx, - y: rootLayout.y + e3.dy, - width: rootLayout.width, - height: rootLayout.height - } - }); - } - }; - TreemapView3.prototype._onZoom = function(e3) { - var mouseX = e3.originX; - var mouseY = e3.originY; - var zoomDelta = e3.scale; - if (this._state !== "animating") { - var root = this.seriesModel.getData().tree.root; - if (!root) { - return; - } - var rootLayout = root.getLayout(); - if (!rootLayout) { - return; - } - var rect = new BoundingRect2(rootLayout.x, rootLayout.y, rootLayout.width, rootLayout.height); - var zoomLimit = null; - var _controllerHost = this._controllerHost; - zoomLimit = _controllerHost.zoomLimit; - var newZoom = _controllerHost.zoom = _controllerHost.zoom || 1; - newZoom *= zoomDelta; - if (zoomLimit) { - var zoomMin = zoomLimit.min || 0; - var zoomMax = zoomLimit.max || Infinity; - newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin); - } - var zoomScale = newZoom / _controllerHost.zoom; - _controllerHost.zoom = newZoom; - var layoutInfo = this.seriesModel.layoutInfo; - mouseX -= layoutInfo.x; - mouseY -= layoutInfo.y; - var m3 = create$1(); - translate2(m3, m3, [-mouseX, -mouseY]); - scale$1(m3, m3, [zoomScale, zoomScale]); - translate2(m3, m3, [mouseX, mouseY]); - rect.applyTransform(m3); - this.api.dispatchAction({ - type: "treemapRender", - from: this.uid, - seriesId: this.seriesModel.id, - rootRect: { - x: rect.x, - y: rect.y, - width: rect.width, - height: rect.height - } - }); - } - }; - TreemapView3.prototype._initEvents = function(containerGroup) { - var _this = this; - containerGroup.on("click", function(e3) { - if (_this._state !== "ready") { - return; - } - var nodeClick = _this.seriesModel.get("nodeClick", true); - if (!nodeClick) { - return; - } - var targetInfo = _this.findTarget(e3.offsetX, e3.offsetY); - if (!targetInfo) { - return; - } - var node = targetInfo.node; - if (node.getLayout().isLeafRoot) { - _this._rootToNode(targetInfo); - } else { - if (nodeClick === "zoomToNode") { - _this._zoomToNode(targetInfo); - } else if (nodeClick === "link") { - var itemModel = node.hostTree.data.getItemModel(node.dataIndex); - var link = itemModel.get("link", true); - var linkTarget = itemModel.get("target", true) || "blank"; - link && windowOpen2(link, linkTarget); - } - } - }, this); - }; - TreemapView3.prototype._renderBreadcrumb = function(seriesModel, api, targetInfo) { - var _this = this; - if (!targetInfo) { - targetInfo = seriesModel.get("leafDepth", true) != null ? { - node: seriesModel.getViewRoot() - } : this.findTarget(api.getWidth() / 2, api.getHeight() / 2); - if (!targetInfo) { - targetInfo = { - node: seriesModel.getData().tree.root - }; - } - } - (this._breadcrumb || (this._breadcrumb = new Breadcrumb2(this.group))).render(seriesModel, api, targetInfo.node, function(node) { - if (_this._state !== "animating") { - aboveViewRoot2(seriesModel.getViewRoot(), node) ? _this._rootToNode({ - node - }) : _this._zoomToNode({ - node - }); - } - }); - }; - TreemapView3.prototype.remove = function() { - this._clearController(); - this._containerGroup && this._containerGroup.removeAll(); - this._storage = createStorage2(); - this._state = "ready"; - this._breadcrumb && this._breadcrumb.remove(); - }; - TreemapView3.prototype.dispose = function() { - this._clearController(); - }; - TreemapView3.prototype._zoomToNode = function(targetInfo) { - this.api.dispatchAction({ - type: "treemapZoomToNode", - from: this.uid, - seriesId: this.seriesModel.id, - targetNode: targetInfo.node - }); - }; - TreemapView3.prototype._rootToNode = function(targetInfo) { - this.api.dispatchAction({ - type: "treemapRootToNode", - from: this.uid, - seriesId: this.seriesModel.id, - targetNode: targetInfo.node - }); - }; - TreemapView3.prototype.findTarget = function(x, y) { - var targetInfo; - var viewRoot = this.seriesModel.getViewRoot(); - viewRoot.eachNode({ - attr: "viewChildren", - order: "preorder" - }, function(node) { - var bgEl = this._storage.background[node.getRawIndex()]; - if (bgEl) { - var point = bgEl.transformCoordToLocal(x, y); - var shape = bgEl.shape; - if (shape.x <= point[0] && point[0] <= shape.x + shape.width && shape.y <= point[1] && point[1] <= shape.y + shape.height) { - targetInfo = { - node, - offsetX: point[0], - offsetY: point[1] - }; - } else { - return false; - } - } - }, this); - return targetInfo; - }; - TreemapView3.type = "treemap"; - return TreemapView3; - }(ChartView2) - ); - function createStorage2() { - return { - nodeGroup: [], - background: [], - content: [] - }; - } - function renderNode2(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth) { - if (!thisNode) { - return; - } - var thisLayout = thisNode.getLayout(); - var data = seriesModel.getData(); - var nodeModel = thisNode.getModel(); - data.setItemGraphicEl(thisNode.dataIndex, null); - if (!thisLayout || !thisLayout.isInView) { - return; - } - var thisWidth = thisLayout.width; - var thisHeight = thisLayout.height; - var borderWidth = thisLayout.borderWidth; - var thisInvisible = thisLayout.invisible; - var thisRawIndex = thisNode.getRawIndex(); - var oldRawIndex = oldNode && oldNode.getRawIndex(); - var thisViewChildren = thisNode.viewChildren; - var upperHeight = thisLayout.upperHeight; - var isParent = thisViewChildren && thisViewChildren.length; - var itemStyleNormalModel = nodeModel.getModel("itemStyle"); - var itemStyleEmphasisModel = nodeModel.getModel(["emphasis", "itemStyle"]); - var itemStyleBlurModel = nodeModel.getModel(["blur", "itemStyle"]); - var itemStyleSelectModel = nodeModel.getModel(["select", "itemStyle"]); - var borderRadius = itemStyleNormalModel.get("borderRadius") || 0; - var group = giveGraphic("nodeGroup", Group$1); - if (!group) { - return; - } - parentGroup.add(group); - group.x = thisLayout.x || 0; - group.y = thisLayout.y || 0; - group.markRedraw(); - inner$8(group).nodeWidth = thisWidth; - inner$8(group).nodeHeight = thisHeight; - if (thisLayout.isAboveViewRoot) { - return group; - } - var bg = giveGraphic("background", Rect$1, depth, Z2_BG2); - bg && renderBackground(group, bg, isParent && thisLayout.upperLabelHeight); - var emphasisModel = nodeModel.getModel("emphasis"); - var focus = emphasisModel.get("focus"); - var blurScope = emphasisModel.get("blurScope"); - var isDisabled = emphasisModel.get("disabled"); - var focusOrIndices = focus === "ancestor" ? thisNode.getAncestorsIndices() : focus === "descendant" ? thisNode.getDescendantIndices() : focus; - if (isParent) { - if (isHighDownDispatcher2(group)) { - setAsHighDownDispatcher2(group, false); - } - if (bg) { - setAsHighDownDispatcher2(bg, !isDisabled); - data.setItemGraphicEl(thisNode.dataIndex, bg); - enableHoverFocus2(bg, focusOrIndices, blurScope); - } - } else { - var content = giveGraphic("content", Rect$1, depth, Z2_CONTENT2); - content && renderContent(group, content); - bg.disableMorphing = true; - if (bg && isHighDownDispatcher2(bg)) { - setAsHighDownDispatcher2(bg, false); - } - setAsHighDownDispatcher2(group, !isDisabled); - data.setItemGraphicEl(thisNode.dataIndex, group); - var cursorStyle = nodeModel.getShallow("cursor"); - cursorStyle && content.attr("cursor", cursorStyle); - enableHoverFocus2(group, focusOrIndices, blurScope); - } - return group; - function renderBackground(group2, bg2, useUpperLabel) { - var ecData = getECData2(bg2); - ecData.dataIndex = thisNode.dataIndex; - ecData.seriesIndex = seriesModel.seriesIndex; - bg2.setShape({ - x: 0, - y: 0, - width: thisWidth, - height: thisHeight, - r: borderRadius - }); - if (thisInvisible) { - processInvisible(bg2); - } else { - bg2.invisible = false; - var style = thisNode.getVisual("style"); - var visualBorderColor = style.stroke; - var normalStyle = getItemStyleNormal2(itemStyleNormalModel); - normalStyle.fill = visualBorderColor; - var emphasisStyle = getStateItemStyle2(itemStyleEmphasisModel); - emphasisStyle.fill = itemStyleEmphasisModel.get("borderColor"); - var blurStyle = getStateItemStyle2(itemStyleBlurModel); - blurStyle.fill = itemStyleBlurModel.get("borderColor"); - var selectStyle = getStateItemStyle2(itemStyleSelectModel); - selectStyle.fill = itemStyleSelectModel.get("borderColor"); - if (useUpperLabel) { - var upperLabelWidth = thisWidth - 2 * borderWidth; - prepareText( - // PENDING: convert ZRColor to ColorString for text. - bg2, - visualBorderColor, - style.opacity, - { - x: borderWidth, - y: 0, - width: upperLabelWidth, - height: upperHeight - } - ); - } else { - bg2.removeTextContent(); - } - bg2.setStyle(normalStyle); - bg2.ensureState("emphasis").style = emphasisStyle; - bg2.ensureState("blur").style = blurStyle; - bg2.ensureState("select").style = selectStyle; - setDefaultStateProxy2(bg2); - } - group2.add(bg2); - } - function renderContent(group2, content2) { - var ecData = getECData2(content2); - ecData.dataIndex = thisNode.dataIndex; - ecData.seriesIndex = seriesModel.seriesIndex; - var contentWidth = Math.max(thisWidth - 2 * borderWidth, 0); - var contentHeight = Math.max(thisHeight - 2 * borderWidth, 0); - content2.culling = true; - content2.setShape({ - x: borderWidth, - y: borderWidth, - width: contentWidth, - height: contentHeight, - r: borderRadius - }); - if (thisInvisible) { - processInvisible(content2); - } else { - content2.invisible = false; - var nodeStyle = thisNode.getVisual("style"); - var visualColor = nodeStyle.fill; - var normalStyle = getItemStyleNormal2(itemStyleNormalModel); - normalStyle.fill = visualColor; - normalStyle.decal = nodeStyle.decal; - var emphasisStyle = getStateItemStyle2(itemStyleEmphasisModel); - var blurStyle = getStateItemStyle2(itemStyleBlurModel); - var selectStyle = getStateItemStyle2(itemStyleSelectModel); - prepareText(content2, visualColor, nodeStyle.opacity, null); - content2.setStyle(normalStyle); - content2.ensureState("emphasis").style = emphasisStyle; - content2.ensureState("blur").style = blurStyle; - content2.ensureState("select").style = selectStyle; - setDefaultStateProxy2(content2); - } - group2.add(content2); - } - function processInvisible(element) { - !element.invisible && willInvisibleEls.push(element); - } - function prepareText(rectEl, visualColor, visualOpacity, upperLabelRect) { - var normalLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_NORMAL2 : PATH_LABEL_NOAMAL2); - var defaultText = convertOptionIdName2(nodeModel.get("name"), null); - var isShow = normalLabelModel.getShallow("show"); - setLabelStyle2(rectEl, getLabelStatesModels2(nodeModel, upperLabelRect ? PATH_UPPERLABEL_NORMAL2 : PATH_LABEL_NOAMAL2), { - defaultText: isShow ? defaultText : null, - inheritColor: visualColor, - defaultOpacity: visualOpacity, - labelFetcher: seriesModel, - labelDataIndex: thisNode.dataIndex - }); - var textEl = rectEl.getTextContent(); - if (!textEl) { - return; - } - var textStyle = textEl.style; - var textPadding = normalizeCssArray3(textStyle.padding || 0); - if (upperLabelRect) { - rectEl.setTextConfig({ - layoutRect: upperLabelRect - }); - textEl.disableLabelLayout = true; - } - textEl.beforeUpdate = function() { - var width = Math.max((upperLabelRect ? upperLabelRect.width : rectEl.shape.width) - textPadding[1] - textPadding[3], 0); - var height = Math.max((upperLabelRect ? upperLabelRect.height : rectEl.shape.height) - textPadding[0] - textPadding[2], 0); - if (textStyle.width !== width || textStyle.height !== height) { - textEl.setStyle({ - width, - height - }); - } - }; - textStyle.truncateMinChar = 2; - textStyle.lineOverflow = "truncate"; - addDrillDownIcon(textStyle, upperLabelRect, thisLayout); - var textEmphasisState = textEl.getState("emphasis"); - addDrillDownIcon(textEmphasisState ? textEmphasisState.style : null, upperLabelRect, thisLayout); - } - function addDrillDownIcon(style, upperLabelRect, thisLayout2) { - var text = style ? style.text : null; - if (!upperLabelRect && thisLayout2.isLeafRoot && text != null) { - var iconChar = seriesModel.get("drillDownIcon", true); - style.text = iconChar ? iconChar + " " + text : text; - } - } - function giveGraphic(storageName, Ctor, depth2, z) { - var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex]; - var lasts = lastsForAnimation[storageName]; - if (element) { - oldStorage[storageName][oldRawIndex] = null; - prepareAnimationWhenHasOld(lasts, element); - } else if (!thisInvisible) { - element = new Ctor(); - if (element instanceof Displayable2) { - element.z2 = calculateZ22(depth2, z); - } - prepareAnimationWhenNoOld(lasts, element); - } - return thisStorage[storageName][thisRawIndex] = element; - } - function prepareAnimationWhenHasOld(lasts, element) { - var lastCfg = lasts[thisRawIndex] = {}; - if (element instanceof Group$1) { - lastCfg.oldX = element.x; - lastCfg.oldY = element.y; - } else { - lastCfg.oldShape = extend3({}, element.shape); - } - } - function prepareAnimationWhenNoOld(lasts, element) { - var lastCfg = lasts[thisRawIndex] = {}; - var parentNode3 = thisNode.parentNode; - var isGroup = element instanceof Group5; - if (parentNode3 && (!reRoot || reRoot.direction === "drillDown")) { - var parentOldX = 0; - var parentOldY = 0; - var parentOldBg = lastsForAnimation.background[parentNode3.getRawIndex()]; - if (!reRoot && parentOldBg && parentOldBg.oldShape) { - parentOldX = parentOldBg.oldShape.width; - parentOldY = parentOldBg.oldShape.height; - } - if (isGroup) { - lastCfg.oldX = 0; - lastCfg.oldY = parentOldY; - } else { - lastCfg.oldShape = { - x: parentOldX, - y: parentOldY, - width: 0, - height: 0 - }; - } - } - lastCfg.fadein = !isGroup; - } - } - function calculateZ22(depth, z2InLevel) { - return depth * Z2_BASE2 + z2InLevel; - } - var each$3 = each17; - var isObject$3 = isObject5; - var CATEGORY_DEFAULT_VISUAL_INDEX2 = -1; - var VisualMapping2 = ( - /** @class */ - function() { - function VisualMapping3(option) { - var mappingMethod = option.mappingMethod; - var visualType = option.type; - var thisOption = this.option = clone6(option); - this.type = visualType; - this.mappingMethod = mappingMethod; - this._normalizeData = normalizers2[mappingMethod]; - var visualHandler = VisualMapping3.visualHandlers[visualType]; - this.applyVisual = visualHandler.applyVisual; - this.getColorMapper = visualHandler.getColorMapper; - this._normalizedToVisual = visualHandler._normalizedToVisual[mappingMethod]; - if (mappingMethod === "piecewise") { - normalizeVisualRange2(thisOption); - preprocessForPiecewise2(thisOption); - } else if (mappingMethod === "category") { - thisOption.categories ? preprocessForSpecifiedCategory2(thisOption) : normalizeVisualRange2(thisOption, true); - } else { - assert2(mappingMethod !== "linear" || thisOption.dataExtent); - normalizeVisualRange2(thisOption); - } - } - VisualMapping3.prototype.mapValueToVisual = function(value) { - var normalized = this._normalizeData(value); - return this._normalizedToVisual(normalized, value); - }; - VisualMapping3.prototype.getNormalizer = function() { - return bind3(this._normalizeData, this); - }; - VisualMapping3.listVisualTypes = function() { - return keys2(VisualMapping3.visualHandlers); - }; - VisualMapping3.isValidType = function(visualType) { - return VisualMapping3.visualHandlers.hasOwnProperty(visualType); - }; - VisualMapping3.eachVisual = function(visual, callback, context) { - if (isObject5(visual)) { - each17(visual, callback, context); - } else { - callback.call(context, visual); - } - }; - VisualMapping3.mapVisual = function(visual, callback, context) { - var isPrimary; - var newVisual = isArray3(visual) ? [] : isObject5(visual) ? {} : (isPrimary = true, null); - VisualMapping3.eachVisual(visual, function(v, key) { - var newVal = callback.call(context, v, key); - isPrimary ? newVisual = newVal : newVisual[key] = newVal; - }); - return newVisual; - }; - VisualMapping3.retrieveVisuals = function(obj) { - var ret = {}; - var hasVisual; - obj && each$3(VisualMapping3.visualHandlers, function(h, visualType) { - if (obj.hasOwnProperty(visualType)) { - ret[visualType] = obj[visualType]; - hasVisual = true; - } - }); - return hasVisual ? ret : null; - }; - VisualMapping3.prepareVisualTypes = function(visualTypes) { - if (isArray3(visualTypes)) { - visualTypes = visualTypes.slice(); - } else if (isObject$3(visualTypes)) { - var types_1 = []; - each$3(visualTypes, function(item, type) { - types_1.push(type); - }); - visualTypes = types_1; - } else { - return []; - } - visualTypes.sort(function(type1, type2) { - return type2 === "color" && type1 !== "color" && type1.indexOf("color") === 0 ? 1 : -1; - }); - return visualTypes; - }; - VisualMapping3.dependsOn = function(visualType1, visualType2) { - return visualType2 === "color" ? !!(visualType1 && visualType1.indexOf(visualType2) === 0) : visualType1 === visualType2; - }; - VisualMapping3.findPieceIndex = function(value, pieceList, findClosestWhenOutside) { - var possibleI; - var abs3 = Infinity; - for (var i2 = 0, len3 = pieceList.length; i2 < len3; i2++) { - var pieceValue = pieceList[i2].value; - if (pieceValue != null) { - if (pieceValue === value || isString2(pieceValue) && pieceValue === value + "") { - return i2; - } - findClosestWhenOutside && updatePossible(pieceValue, i2); - } - } - for (var i2 = 0, len3 = pieceList.length; i2 < len3; i2++) { - var piece = pieceList[i2]; - var interval = piece.interval; - var close_1 = piece.close; - if (interval) { - if (interval[0] === -Infinity) { - if (littleThan2(close_1[1], value, interval[1])) { - return i2; - } - } else if (interval[1] === Infinity) { - if (littleThan2(close_1[0], interval[0], value)) { - return i2; - } - } else if (littleThan2(close_1[0], interval[0], value) && littleThan2(close_1[1], value, interval[1])) { - return i2; - } - findClosestWhenOutside && updatePossible(interval[0], i2); - findClosestWhenOutside && updatePossible(interval[1], i2); - } - } - if (findClosestWhenOutside) { - return value === Infinity ? pieceList.length - 1 : value === -Infinity ? 0 : possibleI; - } - function updatePossible(val, index) { - var newAbs = Math.abs(val - value); - if (newAbs < abs3) { - abs3 = newAbs; - possibleI = index; - } - } - }; - VisualMapping3.visualHandlers = { - color: { - applyVisual: makeApplyVisual2("color"), - getColorMapper: function() { - var thisOption = this.option; - return bind3(thisOption.mappingMethod === "category" ? function(value, isNormalized) { - !isNormalized && (value = this._normalizeData(value)); - return doMapCategory2.call(this, value); - } : function(value, isNormalized, out3) { - var returnRGBArray = !!out3; - !isNormalized && (value = this._normalizeData(value)); - out3 = fastLerp2(value, thisOption.parsedVisual, out3); - return returnRGBArray ? out3 : stringify2(out3, "rgba"); - }, this); - }, - _normalizedToVisual: { - linear: function(normalized) { - return stringify2(fastLerp2(normalized, this.option.parsedVisual), "rgba"); - }, - category: doMapCategory2, - piecewise: function(normalized, value) { - var result = getSpecifiedVisual2.call(this, value); - if (result == null) { - result = stringify2(fastLerp2(normalized, this.option.parsedVisual), "rgba"); - } - return result; - }, - fixed: doMapFixed2 - } - }, - colorHue: makePartialColorVisualHandler2(function(color$1, value) { - return modifyHSL2(color$1, value); - }), - colorSaturation: makePartialColorVisualHandler2(function(color$1, value) { - return modifyHSL2(color$1, null, value); - }), - colorLightness: makePartialColorVisualHandler2(function(color$1, value) { - return modifyHSL2(color$1, null, null, value); - }), - colorAlpha: makePartialColorVisualHandler2(function(color$1, value) { - return modifyAlpha2(color$1, value); - }), - decal: { - applyVisual: makeApplyVisual2("decal"), - _normalizedToVisual: { - linear: null, - category: doMapCategory2, - piecewise: null, - fixed: null - } - }, - opacity: { - applyVisual: makeApplyVisual2("opacity"), - _normalizedToVisual: createNormalizedToNumericVisual2([0, 1]) - }, - liftZ: { - applyVisual: makeApplyVisual2("liftZ"), - _normalizedToVisual: { - linear: doMapFixed2, - category: doMapFixed2, - piecewise: doMapFixed2, - fixed: doMapFixed2 - } - }, - symbol: { - applyVisual: function(value, getter, setter) { - var symbolCfg = this.mapValueToVisual(value); - setter("symbol", symbolCfg); - }, - _normalizedToVisual: { - linear: doMapToArray2, - category: doMapCategory2, - piecewise: function(normalized, value) { - var result = getSpecifiedVisual2.call(this, value); - if (result == null) { - result = doMapToArray2.call(this, normalized); - } - return result; - }, - fixed: doMapFixed2 - } - }, - symbolSize: { - applyVisual: makeApplyVisual2("symbolSize"), - _normalizedToVisual: createNormalizedToNumericVisual2([0, 1]) - } - }; - return VisualMapping3; - }() - ); - function preprocessForPiecewise2(thisOption) { - var pieceList = thisOption.pieceList; - thisOption.hasSpecialVisual = false; - each17(pieceList, function(piece, index) { - piece.originIndex = index; - if (piece.visual != null) { - thisOption.hasSpecialVisual = true; - } - }); - } - function preprocessForSpecifiedCategory2(thisOption) { - var categories = thisOption.categories; - var categoryMap = thisOption.categoryMap = {}; - var visual = thisOption.visual; - each$3(categories, function(cate, index) { - categoryMap[cate] = index; - }); - if (!isArray3(visual)) { - var visualArr_1 = []; - if (isObject5(visual)) { - each$3(visual, function(v, cate) { - var index = categoryMap[cate]; - visualArr_1[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX2] = v; - }); - } else { - visualArr_1[CATEGORY_DEFAULT_VISUAL_INDEX2] = visual; - } - visual = setVisualToOption2(thisOption, visualArr_1); - } - for (var i2 = categories.length - 1; i2 >= 0; i2--) { - if (visual[i2] == null) { - delete categoryMap[categories[i2]]; - categories.pop(); - } - } - } - function normalizeVisualRange2(thisOption, isCategory3) { - var visual = thisOption.visual; - var visualArr = []; - if (isObject5(visual)) { - each$3(visual, function(v) { - visualArr.push(v); - }); - } else if (visual != null) { - visualArr.push(visual); - } - var doNotNeedPair = { - color: 1, - symbol: 1 - }; - if (!isCategory3 && visualArr.length === 1 && !doNotNeedPair.hasOwnProperty(thisOption.type)) { - visualArr[1] = visualArr[0]; - } - setVisualToOption2(thisOption, visualArr); - } - function makePartialColorVisualHandler2(applyValue) { - return { - applyVisual: function(value, getter, setter) { - var colorChannel = this.mapValueToVisual(value); - setter("color", applyValue(getter("color"), colorChannel)); - }, - _normalizedToVisual: createNormalizedToNumericVisual2([0, 1]) - }; - } - function doMapToArray2(normalized) { - var visual = this.option.visual; - return visual[Math.round(linearMap4(normalized, [0, 1], [0, visual.length - 1], true))] || {}; - } - function makeApplyVisual2(visualType) { - return function(value, getter, setter) { - setter(visualType, this.mapValueToVisual(value)); - }; - } - function doMapCategory2(normalized) { - var visual = this.option.visual; - return visual[this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX2 ? normalized % visual.length : normalized]; - } - function doMapFixed2() { - return this.option.visual[0]; - } - function createNormalizedToNumericVisual2(sourceExtent) { - return { - linear: function(normalized) { - return linearMap4(normalized, sourceExtent, this.option.visual, true); - }, - category: doMapCategory2, - piecewise: function(normalized, value) { - var result = getSpecifiedVisual2.call(this, value); - if (result == null) { - result = linearMap4(normalized, sourceExtent, this.option.visual, true); - } - return result; - }, - fixed: doMapFixed2 - }; - } - function getSpecifiedVisual2(value) { - var thisOption = this.option; - var pieceList = thisOption.pieceList; - if (thisOption.hasSpecialVisual) { - var pieceIndex = VisualMapping2.findPieceIndex(value, pieceList); - var piece = pieceList[pieceIndex]; - if (piece && piece.visual) { - return piece.visual[this.type]; - } - } - } - function setVisualToOption2(thisOption, visualArr) { - thisOption.visual = visualArr; - if (thisOption.type === "color") { - thisOption.parsedVisual = map3(visualArr, function(item) { - var color$1 = parse2(item); - if (!color$1 && true) { - warn2("'" + item + "' is an illegal color, fallback to '#000000'", true); - } - return color$1 || [0, 0, 0, 1]; - }); - } - return visualArr; - } - var normalizers2 = { - linear: function(value) { - return linearMap4(value, this.option.dataExtent, [0, 1], true); - }, - piecewise: function(value) { - var pieceList = this.option.pieceList; - var pieceIndex = VisualMapping2.findPieceIndex(value, pieceList, true); - if (pieceIndex != null) { - return linearMap4(pieceIndex, [0, pieceList.length - 1], [0, 1], true); - } - }, - category: function(value) { - var index = this.option.categories ? this.option.categoryMap[value] : value; - return index == null ? CATEGORY_DEFAULT_VISUAL_INDEX2 : index; - }, - fixed: noop2 - }; - function littleThan2(close, a, b) { - return close ? a <= b : a < b; - } - var ITEM_STYLE_NORMAL2 = "itemStyle"; - var inner$9 = makeInner2(); - var treemapVisual = { - seriesType: "treemap", - reset: function(seriesModel) { - var tree = seriesModel.getData().tree; - var root = tree.root; - if (root.isRemoved()) { - return; - } - travelTree2( - root, - // Visual should calculate from tree root but not view root. - {}, - seriesModel.getViewRoot().getAncestors(), - seriesModel - ); - } - }; - function travelTree2(node, designatedVisual, viewRootAncestors, seriesModel) { - var nodeModel = node.getModel(); - var nodeLayout = node.getLayout(); - var data = node.hostTree.data; - if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) { - return; - } - var nodeItemStyleModel = nodeModel.getModel(ITEM_STYLE_NORMAL2); - var visuals = buildVisuals2(nodeItemStyleModel, designatedVisual, seriesModel); - var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, "style"); - var borderColor = nodeItemStyleModel.get("borderColor"); - var borderColorSaturation = nodeItemStyleModel.get("borderColorSaturation"); - var thisNodeColor; - if (borderColorSaturation != null) { - thisNodeColor = calculateColor2(visuals); - borderColor = calculateBorderColor2(borderColorSaturation, thisNodeColor); - } - existsStyle.stroke = borderColor; - var viewChildren = node.viewChildren; - if (!viewChildren || !viewChildren.length) { - thisNodeColor = calculateColor2(visuals); - existsStyle.fill = thisNodeColor; - } else { - var mapping_1 = buildVisualMapping2(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren); - each17(viewChildren, function(child, index) { - if (child.depth >= viewRootAncestors.length || child === viewRootAncestors[child.depth]) { - var childVisual = mapVisual3(nodeModel, visuals, child, index, mapping_1, seriesModel); - travelTree2(child, childVisual, viewRootAncestors, seriesModel); - } - }); - } - } - function buildVisuals2(nodeItemStyleModel, designatedVisual, seriesModel) { - var visuals = extend3({}, designatedVisual); - var designatedVisualItemStyle = seriesModel.designatedVisualItemStyle; - each17(["color", "colorAlpha", "colorSaturation"], function(visualName) { - designatedVisualItemStyle[visualName] = designatedVisual[visualName]; - var val = nodeItemStyleModel.get(visualName); - designatedVisualItemStyle[visualName] = null; - val != null && (visuals[visualName] = val); - }); - return visuals; - } - function calculateColor2(visuals) { - var color2 = getValueVisualDefine2(visuals, "color"); - if (color2) { - var colorAlpha = getValueVisualDefine2(visuals, "colorAlpha"); - var colorSaturation = getValueVisualDefine2(visuals, "colorSaturation"); - if (colorSaturation) { - color2 = modifyHSL2(color2, null, null, colorSaturation); - } - if (colorAlpha) { - color2 = modifyAlpha2(color2, colorAlpha); - } - return color2; - } - } - function calculateBorderColor2(borderColorSaturation, thisNodeColor) { - return thisNodeColor != null ? modifyHSL2(thisNodeColor, null, null, borderColorSaturation) : null; - } - function getValueVisualDefine2(visuals, name) { - var value = visuals[name]; - if (value != null && value !== "none") { - return value; - } - } - function buildVisualMapping2(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren) { - if (!viewChildren || !viewChildren.length) { - return; - } - var rangeVisual = getRangeVisual2(nodeModel, "color") || visuals.color != null && visuals.color !== "none" && (getRangeVisual2(nodeModel, "colorAlpha") || getRangeVisual2(nodeModel, "colorSaturation")); - if (!rangeVisual) { - return; - } - var visualMin = nodeModel.get("visualMin"); - var visualMax = nodeModel.get("visualMax"); - var dataExtent = nodeLayout.dataExtent.slice(); - visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin); - visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax); - var colorMappingBy = nodeModel.get("colorMappingBy"); - var opt = { - type: rangeVisual.name, - dataExtent, - visual: rangeVisual.range - }; - if (opt.type === "color" && (colorMappingBy === "index" || colorMappingBy === "id")) { - opt.mappingMethod = "category"; - opt.loop = true; - } else { - opt.mappingMethod = "linear"; - } - var mapping = new VisualMapping2(opt); - inner$9(mapping).drColorMappingBy = colorMappingBy; - return mapping; - } - function getRangeVisual2(nodeModel, name) { - var range = nodeModel.get(name); - return isArray3(range) && range.length ? { - name, - range - } : null; - } - function mapVisual3(nodeModel, visuals, child, index, mapping, seriesModel) { - var childVisuals = extend3({}, visuals); - if (mapping) { - var mappingType = mapping.type; - var colorMappingBy = mappingType === "color" && inner$9(mapping).drColorMappingBy; - var value = colorMappingBy === "index" ? index : colorMappingBy === "id" ? seriesModel.mapIdToIndex(child.getId()) : child.getValue(nodeModel.get("visualDimension")); - childVisuals[mappingType] = mapping.mapValueToVisual(value); - } - return childVisuals; - } - var mathMax$7 = Math.max; - var mathMin$7 = Math.min; - var retrieveValue2 = retrieve4; - var each$4 = each17; - var PATH_BORDER_WIDTH2 = ["itemStyle", "borderWidth"]; - var PATH_GAP_WIDTH2 = ["itemStyle", "gapWidth"]; - var PATH_UPPER_LABEL_SHOW2 = ["upperLabel", "show"]; - var PATH_UPPER_LABEL_HEIGHT2 = ["upperLabel", "height"]; - var treemapLayout = { - seriesType: "treemap", - reset: function(seriesModel, ecModel, api, payload) { - var ecWidth = api.getWidth(); - var ecHeight = api.getHeight(); - var seriesOption = seriesModel.option; - var layoutInfo = getLayoutRect2(seriesModel.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }); - var size2 = seriesOption.size || []; - var containerWidth = parsePercent$1(retrieveValue2(layoutInfo.width, size2[0]), ecWidth); - var containerHeight = parsePercent$1(retrieveValue2(layoutInfo.height, size2[1]), ecHeight); - var payloadType = payload && payload.type; - var types = ["treemapZoomToNode", "treemapRootToNode"]; - var targetInfo = retrieveTargetInfo2(payload, types, seriesModel); - var rootRect = payloadType === "treemapRender" || payloadType === "treemapMove" ? payload.rootRect : null; - var viewRoot = seriesModel.getViewRoot(); - var viewAbovePath = getPathToRoot2(viewRoot); - if (payloadType !== "treemapMove") { - var rootSize = payloadType === "treemapZoomToNode" ? estimateRootSize2(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) : rootRect ? [rootRect.width, rootRect.height] : [containerWidth, containerHeight]; - var sort_1 = seriesOption.sort; - if (sort_1 && sort_1 !== "asc" && sort_1 !== "desc") { - sort_1 = "desc"; - } - var options = { - squareRatio: seriesOption.squareRatio, - sort: sort_1, - leafDepth: seriesOption.leafDepth - }; - viewRoot.hostTree.clearLayouts(); - var viewRootLayout_1 = { - x: 0, - y: 0, - width: rootSize[0], - height: rootSize[1], - area: rootSize[0] * rootSize[1] - }; - viewRoot.setLayout(viewRootLayout_1); - squarify2(viewRoot, options, false, 0); - viewRootLayout_1 = viewRoot.getLayout(); - each$4(viewAbovePath, function(node, index) { - var childValue = (viewAbovePath[index + 1] || viewRoot).getValue(); - node.setLayout(extend3({ - dataExtent: [childValue, childValue], - borderWidth: 0, - upperHeight: 0 - }, viewRootLayout_1)); - }); - } - var treeRoot = seriesModel.getData().tree.root; - treeRoot.setLayout(calculateRootPosition2(layoutInfo, rootRect, targetInfo), true); - seriesModel.setLayoutInfo(layoutInfo); - prunning2( - treeRoot, - // Transform to base element coordinate system. - new BoundingRect2(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight), - viewAbovePath, - viewRoot, - 0 - ); - } - }; - function squarify2(node, options, hideChildren, depth) { - var width; - var height; - if (node.isRemoved()) { - return; - } - var thisLayout = node.getLayout(); - width = thisLayout.width; - height = thisLayout.height; - var nodeModel = node.getModel(); - var borderWidth = nodeModel.get(PATH_BORDER_WIDTH2); - var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH2) / 2; - var upperLabelHeight = getUpperLabelHeight2(nodeModel); - var upperHeight = Math.max(borderWidth, upperLabelHeight); - var layoutOffset = borderWidth - halfGapWidth; - var layoutOffsetUpper = upperHeight - halfGapWidth; - node.setLayout({ - borderWidth, - upperHeight, - upperLabelHeight - }, true); - width = mathMax$7(width - 2 * layoutOffset, 0); - height = mathMax$7(height - layoutOffset - layoutOffsetUpper, 0); - var totalArea = width * height; - var viewChildren = initChildren3(node, nodeModel, totalArea, options, hideChildren, depth); - if (!viewChildren.length) { - return; - } - var rect = { - x: layoutOffset, - y: layoutOffsetUpper, - width, - height - }; - var rowFixedLength = mathMin$7(width, height); - var best = Infinity; - var row = []; - row.area = 0; - for (var i2 = 0, len3 = viewChildren.length; i2 < len3; ) { - var child = viewChildren[i2]; - row.push(child); - row.area += child.getLayout().area; - var score = worst2(row, rowFixedLength, options.squareRatio); - if (score <= best) { - i2++; - best = score; - } else { - row.area -= row.pop().getLayout().area; - position2(row, rowFixedLength, rect, halfGapWidth, false); - rowFixedLength = mathMin$7(rect.width, rect.height); - row.length = row.area = 0; - best = Infinity; - } - } - if (row.length) { - position2(row, rowFixedLength, rect, halfGapWidth, true); - } - if (!hideChildren) { - var childrenVisibleMin = nodeModel.get("childrenVisibleMin"); - if (childrenVisibleMin != null && totalArea < childrenVisibleMin) { - hideChildren = true; - } - } - for (var i2 = 0, len3 = viewChildren.length; i2 < len3; i2++) { - squarify2(viewChildren[i2], options, hideChildren, depth + 1); - } - } - function initChildren3(node, nodeModel, totalArea, options, hideChildren, depth) { - var viewChildren = node.children || []; - var orderBy = options.sort; - orderBy !== "asc" && orderBy !== "desc" && (orderBy = null); - var overLeafDepth = options.leafDepth != null && options.leafDepth <= depth; - if (hideChildren && !overLeafDepth) { - return node.viewChildren = []; - } - viewChildren = filter2(viewChildren, function(child) { - return !child.isRemoved(); - }); - sort$1(viewChildren, orderBy); - var info = statistic2(nodeModel, viewChildren, orderBy); - if (info.sum === 0) { - return node.viewChildren = []; - } - info.sum = filterByThreshold2(nodeModel, totalArea, info.sum, orderBy, viewChildren); - if (info.sum === 0) { - return node.viewChildren = []; - } - for (var i2 = 0, len3 = viewChildren.length; i2 < len3; i2++) { - var area = viewChildren[i2].getValue() / info.sum * totalArea; - viewChildren[i2].setLayout({ - area - }); - } - if (overLeafDepth) { - viewChildren.length && node.setLayout({ - isLeafRoot: true - }, true); - viewChildren.length = 0; - } - node.viewChildren = viewChildren; - node.setLayout({ - dataExtent: info.dataExtent - }, true); - return viewChildren; - } - function filterByThreshold2(nodeModel, totalArea, sum3, orderBy, orderedChildren) { - if (!orderBy) { - return sum3; - } - var visibleMin = nodeModel.get("visibleMin"); - var len3 = orderedChildren.length; - var deletePoint = len3; - for (var i2 = len3 - 1; i2 >= 0; i2--) { - var value = orderedChildren[orderBy === "asc" ? len3 - i2 - 1 : i2].getValue(); - if (value / sum3 * totalArea < visibleMin) { - deletePoint = i2; - sum3 -= value; - } - } - orderBy === "asc" ? orderedChildren.splice(0, len3 - deletePoint) : orderedChildren.splice(deletePoint, len3 - deletePoint); - return sum3; - } - function sort$1(viewChildren, orderBy) { - if (orderBy) { - viewChildren.sort(function(a, b) { - var diff = orderBy === "asc" ? a.getValue() - b.getValue() : b.getValue() - a.getValue(); - return diff === 0 ? orderBy === "asc" ? a.dataIndex - b.dataIndex : b.dataIndex - a.dataIndex : diff; - }); - } - return viewChildren; - } - function statistic2(nodeModel, children, orderBy) { - var sum3 = 0; - for (var i2 = 0, len3 = children.length; i2 < len3; i2++) { - sum3 += children[i2].getValue(); - } - var dimension = nodeModel.get("visualDimension"); - var dataExtent; - if (!children || !children.length) { - dataExtent = [NaN, NaN]; - } else if (dimension === "value" && orderBy) { - dataExtent = [children[children.length - 1].getValue(), children[0].getValue()]; - orderBy === "asc" && dataExtent.reverse(); - } else { - dataExtent = [Infinity, -Infinity]; - each$4(children, function(child) { - var value = child.getValue(dimension); - value < dataExtent[0] && (dataExtent[0] = value); - value > dataExtent[1] && (dataExtent[1] = value); - }); - } - return { - sum: sum3, - dataExtent - }; - } - function worst2(row, rowFixedLength, ratio) { - var areaMax = 0; - var areaMin = Infinity; - for (var i2 = 0, area = void 0, len3 = row.length; i2 < len3; i2++) { - area = row[i2].getLayout().area; - if (area) { - area < areaMin && (areaMin = area); - area > areaMax && (areaMax = area); - } - } - var squareArea = row.area * row.area; - var f = rowFixedLength * rowFixedLength * ratio; - return squareArea ? mathMax$7(f * areaMax / squareArea, squareArea / (f * areaMin)) : Infinity; - } - function position2(row, rowFixedLength, rect, halfGapWidth, flush) { - var idx0WhenH = rowFixedLength === rect.width ? 0 : 1; - var idx1WhenH = 1 - idx0WhenH; - var xy = ["x", "y"]; - var wh = ["width", "height"]; - var last = rect[xy[idx0WhenH]]; - var rowOtherLength = rowFixedLength ? row.area / rowFixedLength : 0; - if (flush || rowOtherLength > rect[wh[idx1WhenH]]) { - rowOtherLength = rect[wh[idx1WhenH]]; - } - for (var i2 = 0, rowLen = row.length; i2 < rowLen; i2++) { - var node = row[i2]; - var nodeLayout = {}; - var step = rowOtherLength ? node.getLayout().area / rowOtherLength : 0; - var wh1 = nodeLayout[wh[idx1WhenH]] = mathMax$7(rowOtherLength - 2 * halfGapWidth, 0); - var remain = rect[xy[idx0WhenH]] + rect[wh[idx0WhenH]] - last; - var modWH = i2 === rowLen - 1 || remain < step ? remain : step; - var wh0 = nodeLayout[wh[idx0WhenH]] = mathMax$7(modWH - 2 * halfGapWidth, 0); - nodeLayout[xy[idx1WhenH]] = rect[xy[idx1WhenH]] + mathMin$7(halfGapWidth, wh1 / 2); - nodeLayout[xy[idx0WhenH]] = last + mathMin$7(halfGapWidth, wh0 / 2); - last += modWH; - node.setLayout(nodeLayout, true); - } - rect[xy[idx1WhenH]] += rowOtherLength; - rect[wh[idx1WhenH]] -= rowOtherLength; - } - function estimateRootSize2(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) { - var currNode = (targetInfo || {}).node; - var defaultSize = [containerWidth, containerHeight]; - if (!currNode || currNode === viewRoot) { - return defaultSize; - } - var parent; - var viewArea = containerWidth * containerHeight; - var area = viewArea * seriesModel.option.zoomToNodeRatio; - while (parent = currNode.parentNode) { - var sum3 = 0; - var siblings = parent.children; - for (var i2 = 0, len3 = siblings.length; i2 < len3; i2++) { - sum3 += siblings[i2].getValue(); - } - var currNodeValue = currNode.getValue(); - if (currNodeValue === 0) { - return defaultSize; - } - area *= sum3 / currNodeValue; - var parentModel = parent.getModel(); - var borderWidth = parentModel.get(PATH_BORDER_WIDTH2); - var upperHeight = Math.max(borderWidth, getUpperLabelHeight2(parentModel)); - area += 4 * borderWidth * borderWidth + (3 * borderWidth + upperHeight) * Math.pow(area, 0.5); - area > MAX_SAFE_INTEGER2 && (area = MAX_SAFE_INTEGER2); - currNode = parent; - } - area < viewArea && (area = viewArea); - var scale5 = Math.pow(area / viewArea, 0.5); - return [containerWidth * scale5, containerHeight * scale5]; - } - function calculateRootPosition2(layoutInfo, rootRect, targetInfo) { - if (rootRect) { - return { - x: rootRect.x, - y: rootRect.y - }; - } - var defaultPosition = { - x: 0, - y: 0 - }; - if (!targetInfo) { - return defaultPosition; - } - var targetNode = targetInfo.node; - var layout6 = targetNode.getLayout(); - if (!layout6) { - return defaultPosition; - } - var targetCenter = [layout6.width / 2, layout6.height / 2]; - var node = targetNode; - while (node) { - var nodeLayout = node.getLayout(); - targetCenter[0] += nodeLayout.x; - targetCenter[1] += nodeLayout.y; - node = node.parentNode; - } - return { - x: layoutInfo.width / 2 - targetCenter[0], - y: layoutInfo.height / 2 - targetCenter[1] - }; - } - function prunning2(node, clipRect, viewAbovePath, viewRoot, depth) { - var nodeLayout = node.getLayout(); - var nodeInViewAbovePath = viewAbovePath[depth]; - var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node; - if (nodeInViewAbovePath && !isAboveViewRoot || depth === viewAbovePath.length && node !== viewRoot) { - return; - } - node.setLayout({ - // isInView means: viewRoot sub tree + viewAbovePath - isInView: true, - // invisible only means: outside view clip so that the node can not - // see but still layout for animation preparation but not render. - invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout), - isAboveViewRoot - }, true); - var childClipRect = new BoundingRect2(clipRect.x - nodeLayout.x, clipRect.y - nodeLayout.y, clipRect.width, clipRect.height); - each$4(node.viewChildren || [], function(child) { - prunning2(child, childClipRect, viewAbovePath, viewRoot, depth + 1); - }); - } - function getUpperLabelHeight2(model) { - return model.get(PATH_UPPER_LABEL_SHOW2) ? model.get(PATH_UPPER_LABEL_HEIGHT2) : 0; - } - function install$c(registers) { - registers.registerSeriesModel(TreemapSeriesModel2); - registers.registerChartView(TreemapView2); - registers.registerVisual(treemapVisual); - registers.registerLayout(treemapLayout); - installTreemapAction2(registers); - } - function categoryFilter2(ecModel) { - var legendModels = ecModel.findComponents({ - mainType: "legend" - }); - if (!legendModels || !legendModels.length) { - return; - } - ecModel.eachSeriesByType("graph", function(graphSeries) { - var categoriesData = graphSeries.getCategoriesData(); - var graph = graphSeries.getGraph(); - var data = graph.data; - var categoryNames = categoriesData.mapArray(categoriesData.getName); - data.filterSelf(function(idx) { - var model = data.getItemModel(idx); - var category = model.getShallow("category"); - if (category != null) { - if (isNumber2(category)) { - category = categoryNames[category]; - } - for (var i2 = 0; i2 < legendModels.length; i2++) { - if (!legendModels[i2].isSelected(category)) { - return false; - } - } - } - return true; - }); - }); - } - function categoryVisual2(ecModel) { - var paletteScope = {}; - ecModel.eachSeriesByType("graph", function(seriesModel) { - var categoriesData = seriesModel.getCategoriesData(); - var data = seriesModel.getData(); - var categoryNameIdxMap = {}; - categoriesData.each(function(idx) { - var name = categoriesData.getName(idx); - categoryNameIdxMap["ec-" + name] = idx; - var itemModel = categoriesData.getItemModel(idx); - var style = itemModel.getModel("itemStyle").getItemStyle(); - if (!style.fill) { - style.fill = seriesModel.getColorFromPalette(name, paletteScope); - } - categoriesData.setItemVisual(idx, "style", style); - var symbolVisualList = ["symbol", "symbolSize", "symbolKeepAspect"]; - for (var i2 = 0; i2 < symbolVisualList.length; i2++) { - var symbolVisual = itemModel.getShallow(symbolVisualList[i2], true); - if (symbolVisual != null) { - categoriesData.setItemVisual(idx, symbolVisualList[i2], symbolVisual); - } - } - }); - if (categoriesData.count()) { - data.each(function(idx) { - var model = data.getItemModel(idx); - var categoryIdx = model.getShallow("category"); - if (categoryIdx != null) { - if (isString2(categoryIdx)) { - categoryIdx = categoryNameIdxMap["ec-" + categoryIdx]; - } - var categoryStyle = categoriesData.getItemVisual(categoryIdx, "style"); - var style = data.ensureUniqueItemVisual(idx, "style"); - extend3(style, categoryStyle); - var visualList = ["symbol", "symbolSize", "symbolKeepAspect"]; - for (var i2 = 0; i2 < visualList.length; i2++) { - data.setItemVisual(idx, visualList[i2], categoriesData.getItemVisual(categoryIdx, visualList[i2])); - } - } - }); - } - }); - } - function normalize$2(a) { - if (!(a instanceof Array)) { - a = [a, a]; - } - return a; - } - function graphEdgeVisual2(ecModel) { - ecModel.eachSeriesByType("graph", function(seriesModel) { - var graph = seriesModel.getGraph(); - var edgeData = seriesModel.getEdgeData(); - var symbolType = normalize$2(seriesModel.get("edgeSymbol")); - var symbolSize = normalize$2(seriesModel.get("edgeSymbolSize")); - edgeData.setVisual("fromSymbol", symbolType && symbolType[0]); - edgeData.setVisual("toSymbol", symbolType && symbolType[1]); - edgeData.setVisual("fromSymbolSize", symbolSize && symbolSize[0]); - edgeData.setVisual("toSymbolSize", symbolSize && symbolSize[1]); - edgeData.setVisual("style", seriesModel.getModel("lineStyle").getLineStyle()); - edgeData.each(function(idx) { - var itemModel = edgeData.getItemModel(idx); - var edge = graph.getEdgeByIndex(idx); - var symbolType2 = normalize$2(itemModel.getShallow("symbol", true)); - var symbolSize2 = normalize$2(itemModel.getShallow("symbolSize", true)); - var style = itemModel.getModel("lineStyle").getLineStyle(); - var existsStyle = edgeData.ensureUniqueItemVisual(idx, "style"); - extend3(existsStyle, style); - switch (existsStyle.stroke) { - case "source": { - var nodeStyle = edge.node1.getVisual("style"); - existsStyle.stroke = nodeStyle && nodeStyle.fill; - break; - } - case "target": { - var nodeStyle = edge.node2.getVisual("style"); - existsStyle.stroke = nodeStyle && nodeStyle.fill; - break; - } - } - symbolType2[0] && edge.setVisual("fromSymbol", symbolType2[0]); - symbolType2[1] && edge.setVisual("toSymbol", symbolType2[1]); - symbolSize2[0] && edge.setVisual("fromSymbolSize", symbolSize2[0]); - symbolSize2[1] && edge.setVisual("toSymbolSize", symbolSize2[1]); - }); - }); - } - var KEY_DELIMITER2 = "-->"; - var getAutoCurvenessParams2 = function(seriesModel) { - return seriesModel.get("autoCurveness") || null; - }; - var createCurveness2 = function(seriesModel, appendLength) { - var autoCurvenessParmas = getAutoCurvenessParams2(seriesModel); - var length3 = 20; - var curvenessList = []; - if (isNumber2(autoCurvenessParmas)) { - length3 = autoCurvenessParmas; - } else if (isArray3(autoCurvenessParmas)) { - seriesModel.__curvenessList = autoCurvenessParmas; - return; - } - if (appendLength > length3) { - length3 = appendLength; - } - var len3 = length3 % 2 ? length3 + 2 : length3 + 3; - curvenessList = []; - for (var i2 = 0; i2 < len3; i2++) { - curvenessList.push((i2 % 2 ? i2 + 1 : i2) / 10 * (i2 % 2 ? -1 : 1)); - } - seriesModel.__curvenessList = curvenessList; - }; - var getKeyOfEdges2 = function(n1, n2, seriesModel) { - var source = [n1.id, n1.dataIndex].join("."); - var target = [n2.id, n2.dataIndex].join("."); - return [seriesModel.uid, source, target].join(KEY_DELIMITER2); - }; - var getOppositeKey2 = function(key) { - var keys3 = key.split(KEY_DELIMITER2); - return [keys3[0], keys3[2], keys3[1]].join(KEY_DELIMITER2); - }; - var getEdgeFromMap2 = function(edge, seriesModel) { - var key = getKeyOfEdges2(edge.node1, edge.node2, seriesModel); - return seriesModel.__edgeMap[key]; - }; - var getTotalLengthBetweenNodes2 = function(edge, seriesModel) { - var len3 = getEdgeMapLengthWithKey2(getKeyOfEdges2(edge.node1, edge.node2, seriesModel), seriesModel); - var lenV = getEdgeMapLengthWithKey2(getKeyOfEdges2(edge.node2, edge.node1, seriesModel), seriesModel); - return len3 + lenV; - }; - var getEdgeMapLengthWithKey2 = function(key, seriesModel) { - var edgeMap = seriesModel.__edgeMap; - return edgeMap[key] ? edgeMap[key].length : 0; - }; - function initCurvenessList2(seriesModel) { - if (!getAutoCurvenessParams2(seriesModel)) { - return; - } - seriesModel.__curvenessList = []; - seriesModel.__edgeMap = {}; - createCurveness2(seriesModel); - } - function createEdgeMapForCurveness2(n1, n2, seriesModel, index) { - if (!getAutoCurvenessParams2(seriesModel)) { - return; - } - var key = getKeyOfEdges2(n1, n2, seriesModel); - var edgeMap = seriesModel.__edgeMap; - var oppositeEdges = edgeMap[getOppositeKey2(key)]; - if (edgeMap[key] && !oppositeEdges) { - edgeMap[key].isForward = true; - } else if (oppositeEdges && edgeMap[key]) { - oppositeEdges.isForward = true; - edgeMap[key].isForward = false; - } - edgeMap[key] = edgeMap[key] || []; - edgeMap[key].push(index); - } - function getCurvenessForEdge2(edge, seriesModel, index, needReverse) { - var autoCurvenessParams = getAutoCurvenessParams2(seriesModel); - var isArrayParam = isArray3(autoCurvenessParams); - if (!autoCurvenessParams) { - return null; - } - var edgeArray = getEdgeFromMap2(edge, seriesModel); - if (!edgeArray) { - return null; - } - var edgeIndex = -1; - for (var i2 = 0; i2 < edgeArray.length; i2++) { - if (edgeArray[i2] === index) { - edgeIndex = i2; - break; - } - } - var totalLen = getTotalLengthBetweenNodes2(edge, seriesModel); - createCurveness2(seriesModel, totalLen); - edge.lineStyle = edge.lineStyle || {}; - var curKey = getKeyOfEdges2(edge.node1, edge.node2, seriesModel); - var curvenessList = seriesModel.__curvenessList; - var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1; - if (!edgeArray.isForward) { - var oppositeKey = getOppositeKey2(curKey); - var len3 = getEdgeMapLengthWithKey2(oppositeKey, seriesModel); - var resValue = curvenessList[edgeIndex + len3 + parityCorrection]; - if (needReverse) { - if (isArrayParam) { - if (autoCurvenessParams && autoCurvenessParams[0] === 0) { - return (len3 + parityCorrection) % 2 ? resValue : -resValue; - } else { - return ((len3 % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue; - } - } else { - return (len3 + parityCorrection) % 2 ? resValue : -resValue; - } - } else { - return curvenessList[edgeIndex + len3 + parityCorrection]; - } - } else { - return curvenessList[parityCorrection + edgeIndex]; - } - } - function simpleLayout2(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - if (coordSys && coordSys.type !== "view") { - return; - } - var graph = seriesModel.getGraph(); - graph.eachNode(function(node) { - var model = node.getModel(); - node.setLayout([+model.get("x"), +model.get("y")]); - }); - simpleLayoutEdge2(graph, seriesModel); - } - function simpleLayoutEdge2(graph, seriesModel) { - graph.eachEdge(function(edge, index) { - var curveness = retrieve32(edge.getModel().get(["lineStyle", "curveness"]), -getCurvenessForEdge2(edge, seriesModel, index, true), 0); - var p1 = clone$1(edge.node1.getLayout()); - var p2 = clone$1(edge.node2.getLayout()); - var points5 = [p1, p2]; - if (+curveness) { - points5.push([(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness]); - } - edge.setLayout(points5); - }); - } - function graphSimpleLayout2(ecModel, api) { - ecModel.eachSeriesByType("graph", function(seriesModel) { - var layout6 = seriesModel.get("layout"); - var coordSys = seriesModel.coordinateSystem; - if (coordSys && coordSys.type !== "view") { - var data_1 = seriesModel.getData(); - var dimensions_1 = []; - each17(coordSys.dimensions, function(coordDim) { - dimensions_1 = dimensions_1.concat(data_1.mapDimensionsAll(coordDim)); - }); - for (var dataIndex = 0; dataIndex < data_1.count(); dataIndex++) { - var value = []; - var hasValue = false; - for (var i2 = 0; i2 < dimensions_1.length; i2++) { - var val = data_1.get(dimensions_1[i2], dataIndex); - if (!isNaN(val)) { - hasValue = true; - } - value.push(val); - } - if (hasValue) { - data_1.setItemLayout(dataIndex, coordSys.dataToPoint(value)); - } else { - data_1.setItemLayout(dataIndex, [NaN, NaN]); - } - } - simpleLayoutEdge2(data_1.graph, seriesModel); - } else if (!layout6 || layout6 === "none") { - simpleLayout2(seriesModel); - } - }); - } - function getNodeGlobalScale2(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - if (coordSys.type !== "view") { - return 1; - } - var nodeScaleRatio = seriesModel.option.nodeScaleRatio; - var groupZoom = coordSys.scaleX; - var roamZoom = coordSys.getZoom(); - var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1; - return nodeScale / groupZoom; - } - function getSymbolSize2(node) { - var symbolSize = node.getVisual("symbolSize"); - if (symbolSize instanceof Array) { - symbolSize = (symbolSize[0] + symbolSize[1]) / 2; - } - return +symbolSize; - } - var PI$6 = Math.PI; - var _symbolRadiansHalf2 = []; - function circularLayout2(seriesModel, basedOn, draggingNode, pointer) { - var coordSys = seriesModel.coordinateSystem; - if (coordSys && coordSys.type !== "view") { - return; - } - var rect = coordSys.getBoundingRect(); - var nodeData = seriesModel.getData(); - var graph = nodeData.graph; - var cx = rect.width / 2 + rect.x; - var cy = rect.height / 2 + rect.y; - var r = Math.min(rect.width, rect.height) / 2; - var count3 = nodeData.count(); - nodeData.setLayout({ - cx, - cy - }); - if (!count3) { - return; - } - if (draggingNode) { - var _a3 = coordSys.pointToData(pointer), tempX = _a3[0], tempY = _a3[1]; - var v = [tempX - cx, tempY - cy]; - normalize5(v, v); - scale4(v, v, r); - draggingNode.setLayout([cx + v[0], cy + v[1]], true); - var circularRotateLabel = seriesModel.get(["circular", "rotateLabel"]); - rotateNodeLabel2(draggingNode, circularRotateLabel, cx, cy); - } - _layoutNodesBasedOn2[basedOn](seriesModel, graph, nodeData, r, cx, cy, count3); - graph.eachEdge(function(edge, index) { - var curveness = retrieve32(edge.getModel().get(["lineStyle", "curveness"]), getCurvenessForEdge2(edge, seriesModel, index), 0); - var p1 = clone$1(edge.node1.getLayout()); - var p2 = clone$1(edge.node2.getLayout()); - var cp1; - var x12 = (p1[0] + p2[0]) / 2; - var y12 = (p1[1] + p2[1]) / 2; - if (+curveness) { - curveness *= 3; - cp1 = [cx * curveness + x12 * (1 - curveness), cy * curveness + y12 * (1 - curveness)]; - } - edge.setLayout([p1, p2, cp1]); - }); - } - var _layoutNodesBasedOn2 = { - value: function(seriesModel, graph, nodeData, r, cx, cy, count3) { - var angle = 0; - var sum3 = nodeData.getSum("value"); - var unitAngle = Math.PI * 2 / (sum3 || count3); - graph.eachNode(function(node) { - var value = node.getValue("value"); - var radianHalf = unitAngle * (sum3 ? value : 1) / 2; - angle += radianHalf; - node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]); - angle += radianHalf; - }); - }, - symbolSize: function(seriesModel, graph, nodeData, r, cx, cy, count3) { - var sumRadian = 0; - _symbolRadiansHalf2.length = count3; - var nodeScale = getNodeGlobalScale2(seriesModel); - graph.eachNode(function(node) { - var symbolSize = getSymbolSize2(node); - isNaN(symbolSize) && (symbolSize = 2); - symbolSize < 0 && (symbolSize = 0); - symbolSize *= nodeScale; - var symbolRadianHalf = Math.asin(symbolSize / 2 / r); - isNaN(symbolRadianHalf) && (symbolRadianHalf = PI$6 / 2); - _symbolRadiansHalf2[node.dataIndex] = symbolRadianHalf; - sumRadian += symbolRadianHalf * 2; - }); - var halfRemainRadian = (2 * PI$6 - sumRadian) / count3 / 2; - var angle = 0; - graph.eachNode(function(node) { - var radianHalf = halfRemainRadian + _symbolRadiansHalf2[node.dataIndex]; - angle += radianHalf; - (!node.getLayout() || !node.getLayout().fixed) && node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]); - angle += radianHalf; - }); - } - }; - function rotateNodeLabel2(node, circularRotateLabel, cx, cy) { - var el = node.getGraphicEl(); - if (!el) { - return; - } - var nodeModel = node.getModel(); - var labelRotate = nodeModel.get(["label", "rotate"]) || 0; - var symbolPath = el.getSymbolPath(); - if (circularRotateLabel) { - var pos = node.getLayout(); - var rad = Math.atan2(pos[1] - cy, pos[0] - cx); - if (rad < 0) { - rad = Math.PI * 2 + rad; - } - var isLeft = pos[0] < cx; - if (isLeft) { - rad = rad - Math.PI; - } - var textPosition = isLeft ? "left" : "right"; - symbolPath.setTextConfig({ - rotation: -rad, - position: textPosition, - origin: "center" - }); - var emphasisState = symbolPath.ensureState("emphasis"); - extend3(emphasisState.textConfig || (emphasisState.textConfig = {}), { - position: textPosition - }); - } else { - symbolPath.setTextConfig({ - rotation: labelRotate *= Math.PI / 180 - }); - } - } - function graphCircularLayout2(ecModel) { - ecModel.eachSeriesByType("graph", function(seriesModel) { - if (seriesModel.get("layout") === "circular") { - circularLayout2(seriesModel, "symbolSize"); - } - }); - } - var scaleAndAdd$1 = scaleAndAdd3; - function forceLayout2(inNodes, inEdges, opts) { - var nodes = inNodes; - var edges = inEdges; - var rect = opts.rect; - var width = rect.width; - var height = rect.height; - var center4 = [rect.x + width / 2, rect.y + height / 2]; - var gravity = opts.gravity == null ? 0.1 : opts.gravity; - for (var i2 = 0; i2 < nodes.length; i2++) { - var n = nodes[i2]; - if (!n.p) { - n.p = create4(width * (Math.random() - 0.5) + center4[0], height * (Math.random() - 0.5) + center4[1]); - } - n.pp = clone$1(n.p); - n.edges = null; - } - var initialFriction = opts.friction == null ? 0.6 : opts.friction; - var friction = initialFriction; - var beforeStepCallback; - var afterStepCallback; - return { - warmUp: function() { - friction = initialFriction * 0.8; - }, - setFixed: function(idx) { - nodes[idx].fixed = true; - }, - setUnfixed: function(idx) { - nodes[idx].fixed = false; - }, - /** - * Before step hook - */ - beforeStep: function(cb) { - beforeStepCallback = cb; - }, - /** - * After step hook - */ - afterStep: function(cb) { - afterStepCallback = cb; - }, - /** - * Some formulas were originally copied from "d3.js" - * https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/layout/force.js - * with some modifications made for this project. - * See the license statement at the head of this file. - */ - step: function(cb) { - beforeStepCallback && beforeStepCallback(nodes, edges); - var v122 = []; - var nLen = nodes.length; - for (var i3 = 0; i3 < edges.length; i3++) { - var e3 = edges[i3]; - if (e3.ignoreForceLayout) { - continue; - } - var n1 = e3.n1; - var n2 = e3.n2; - sub2(v122, n2.p, n1.p); - var d = len2(v122) - e3.d; - var w = n2.w / (n1.w + n2.w); - if (isNaN(w)) { - w = 0; - } - normalize5(v122, v122); - !n1.fixed && scaleAndAdd$1(n1.p, n1.p, v122, w * d * friction); - !n2.fixed && scaleAndAdd$1(n2.p, n2.p, v122, -(1 - w) * d * friction); - } - for (var i3 = 0; i3 < nLen; i3++) { - var n3 = nodes[i3]; - if (!n3.fixed) { - sub2(v122, center4, n3.p); - scaleAndAdd$1(n3.p, n3.p, v122, gravity * friction); - } - } - for (var i3 = 0; i3 < nLen; i3++) { - var n1 = nodes[i3]; - for (var j = i3 + 1; j < nLen; j++) { - var n2 = nodes[j]; - sub2(v122, n2.p, n1.p); - var d = len2(v122); - if (d === 0) { - set3(v122, Math.random() - 0.5, Math.random() - 0.5); - d = 1; - } - var repFact = (n1.rep + n2.rep) / d / d; - !n1.fixed && scaleAndAdd$1(n1.pp, n1.pp, v122, repFact); - !n2.fixed && scaleAndAdd$1(n2.pp, n2.pp, v122, -repFact); - } - } - var v = []; - for (var i3 = 0; i3 < nLen; i3++) { - var n3 = nodes[i3]; - if (!n3.fixed) { - sub2(v, n3.p, n3.pp); - scaleAndAdd$1(n3.p, n3.p, v, friction); - copy3(n3.pp, n3.p); - } - } - friction = friction * 0.992; - var finished = friction < 0.01; - afterStepCallback && afterStepCallback(nodes, edges, finished); - cb && cb(finished); - } - }; - } - function graphForceLayout2(ecModel) { - ecModel.eachSeriesByType("graph", function(graphSeries) { - var coordSys = graphSeries.coordinateSystem; - if (coordSys && coordSys.type !== "view") { - return; - } - if (graphSeries.get("layout") === "force") { - var preservedPoints_1 = graphSeries.preservedPoints || {}; - var graph_1 = graphSeries.getGraph(); - var nodeData_1 = graph_1.data; - var edgeData = graph_1.edgeData; - var forceModel = graphSeries.getModel("force"); - var initLayout = forceModel.get("initLayout"); - if (graphSeries.preservedPoints) { - nodeData_1.each(function(idx) { - var id = nodeData_1.getId(idx); - nodeData_1.setItemLayout(idx, preservedPoints_1[id] || [NaN, NaN]); - }); - } else if (!initLayout || initLayout === "none") { - simpleLayout2(graphSeries); - } else if (initLayout === "circular") { - circularLayout2(graphSeries, "value"); - } - var nodeDataExtent_1 = nodeData_1.getDataExtent("value"); - var edgeDataExtent_1 = edgeData.getDataExtent("value"); - var repulsion = forceModel.get("repulsion"); - var edgeLength = forceModel.get("edgeLength"); - var repulsionArr_1 = isArray3(repulsion) ? repulsion : [repulsion, repulsion]; - var edgeLengthArr_1 = isArray3(edgeLength) ? edgeLength : [edgeLength, edgeLength]; - edgeLengthArr_1 = [edgeLengthArr_1[1], edgeLengthArr_1[0]]; - var nodes_1 = nodeData_1.mapArray("value", function(value, idx) { - var point = nodeData_1.getItemLayout(idx); - var rep = linearMap4(value, nodeDataExtent_1, repulsionArr_1); - if (isNaN(rep)) { - rep = (repulsionArr_1[0] + repulsionArr_1[1]) / 2; - } - return { - w: rep, - rep, - fixed: nodeData_1.getItemModel(idx).get("fixed"), - p: !point || isNaN(point[0]) || isNaN(point[1]) ? null : point - }; - }); - var edges = edgeData.mapArray("value", function(value, idx) { - var edge = graph_1.getEdgeByIndex(idx); - var d = linearMap4(value, edgeDataExtent_1, edgeLengthArr_1); - if (isNaN(d)) { - d = (edgeLengthArr_1[0] + edgeLengthArr_1[1]) / 2; - } - var edgeModel = edge.getModel(); - var curveness = retrieve32(edge.getModel().get(["lineStyle", "curveness"]), -getCurvenessForEdge2(edge, graphSeries, idx, true), 0); - return { - n1: nodes_1[edge.node1.dataIndex], - n2: nodes_1[edge.node2.dataIndex], - d, - curveness, - ignoreForceLayout: edgeModel.get("ignoreForceLayout") - }; - }); - var rect = coordSys.getBoundingRect(); - var forceInstance = forceLayout2(nodes_1, edges, { - rect, - gravity: forceModel.get("gravity"), - friction: forceModel.get("friction") - }); - forceInstance.beforeStep(function(nodes, edges2) { - for (var i2 = 0, l = nodes.length; i2 < l; i2++) { - if (nodes[i2].fixed) { - copy3(nodes[i2].p, graph_1.getNodeByIndex(i2).getLayout()); - } - } - }); - forceInstance.afterStep(function(nodes, edges2, stopped) { - for (var i2 = 0, l = nodes.length; i2 < l; i2++) { - if (!nodes[i2].fixed) { - graph_1.getNodeByIndex(i2).setLayout(nodes[i2].p); - } - preservedPoints_1[nodeData_1.getId(i2)] = nodes[i2].p; - } - for (var i2 = 0, l = edges2.length; i2 < l; i2++) { - var e3 = edges2[i2]; - var edge = graph_1.getEdgeByIndex(i2); - var p1 = e3.n1.p; - var p2 = e3.n2.p; - var points5 = edge.getLayout(); - points5 = points5 ? points5.slice() : []; - points5[0] = points5[0] || []; - points5[1] = points5[1] || []; - copy3(points5[0], p1); - copy3(points5[1], p2); - if (+e3.curveness) { - points5[2] = [(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e3.curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e3.curveness]; - } - edge.setLayout(points5); - } - }); - graphSeries.forceLayout = forceInstance; - graphSeries.preservedPoints = preservedPoints_1; - forceInstance.step(); - } else { - graphSeries.forceLayout = null; - } - }); - } - function getViewRect$2(seriesModel, api, aspect) { - var option = extend3(seriesModel.getBoxLayoutParams(), { - aspect - }); - return getLayoutRect2(option, { - width: api.getWidth(), - height: api.getHeight() - }); - } - function createViewCoordSys2(ecModel, api) { - var viewList = []; - ecModel.eachSeriesByType("graph", function(seriesModel) { - var coordSysType = seriesModel.get("coordinateSystem"); - if (!coordSysType || coordSysType === "view") { - var data_1 = seriesModel.getData(); - var positions = data_1.mapArray(function(idx) { - var itemModel = data_1.getItemModel(idx); - return [+itemModel.get("x"), +itemModel.get("y")]; - }); - var min5 = []; - var max5 = []; - fromPoints2(positions, min5, max5); - if (max5[0] - min5[0] === 0) { - max5[0] += 1; - min5[0] -= 1; - } - if (max5[1] - min5[1] === 0) { - max5[1] += 1; - min5[1] -= 1; - } - var aspect = (max5[0] - min5[0]) / (max5[1] - min5[1]); - var viewRect3 = getViewRect$2(seriesModel, api, aspect); - if (isNaN(aspect)) { - min5 = [viewRect3.x, viewRect3.y]; - max5 = [viewRect3.x + viewRect3.width, viewRect3.y + viewRect3.height]; - } - var bbWidth = max5[0] - min5[0]; - var bbHeight = max5[1] - min5[1]; - var viewWidth = viewRect3.width; - var viewHeight = viewRect3.height; - var viewCoordSys = seriesModel.coordinateSystem = new View3(); - viewCoordSys.zoomLimit = seriesModel.get("scaleLimit"); - viewCoordSys.setBoundingRect(min5[0], min5[1], bbWidth, bbHeight); - viewCoordSys.setViewRect(viewRect3.x, viewRect3.y, viewWidth, viewHeight); - viewCoordSys.setCenter(seriesModel.get("center"), api); - viewCoordSys.setZoom(seriesModel.get("zoom")); - viewList.push(viewCoordSys); - } - }); - return viewList; - } - var straightLineProto2 = Line3.prototype; - var bezierCurveProto2 = BezierCurve2.prototype; - var StraightLineShape2 = ( - /** @class */ - /* @__PURE__ */ function() { - function StraightLineShape3() { - this.x1 = 0; - this.y1 = 0; - this.x2 = 0; - this.y2 = 0; - this.percent = 1; - } - return StraightLineShape3; - }() - ); - var CurveShape2 = ( - /** @class */ - function(_super) { - __extends2(CurveShape3, _super); - function CurveShape3() { - return _super !== null && _super.apply(this, arguments) || this; - } - return CurveShape3; - }(StraightLineShape2) - ); - function isStraightLine2(shape) { - return isNaN(+shape.cpx1) || isNaN(+shape.cpy1); - } - var ECLinePath2 = ( - /** @class */ - function(_super) { - __extends2(ECLinePath3, _super); - function ECLinePath3(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "ec-line"; - return _this; - } - ECLinePath3.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - ECLinePath3.prototype.getDefaultShape = function() { - return new StraightLineShape2(); - }; - ECLinePath3.prototype.buildPath = function(ctx, shape) { - if (isStraightLine2(shape)) { - straightLineProto2.buildPath.call(this, ctx, shape); - } else { - bezierCurveProto2.buildPath.call(this, ctx, shape); - } - }; - ECLinePath3.prototype.pointAt = function(t) { - if (isStraightLine2(this.shape)) { - return straightLineProto2.pointAt.call(this, t); - } else { - return bezierCurveProto2.pointAt.call(this, t); - } - }; - ECLinePath3.prototype.tangentAt = function(t) { - var shape = this.shape; - var p = isStraightLine2(shape) ? [shape.x2 - shape.x1, shape.y2 - shape.y1] : bezierCurveProto2.tangentAt.call(this, t); - return normalize5(p, p); - }; - return ECLinePath3; - }(Path2) - ); - var SYMBOL_CATEGORIES2 = ["fromSymbol", "toSymbol"]; - function makeSymbolTypeKey2(symbolCategory) { - return "_" + symbolCategory + "Type"; - } - function makeSymbolTypeValue2(name, lineData, idx) { - var symbolType = lineData.getItemVisual(idx, name); - if (!symbolType || symbolType === "none") { - return symbolType; - } - var symbolSize = lineData.getItemVisual(idx, name + "Size"); - var symbolRotate = lineData.getItemVisual(idx, name + "Rotate"); - var symbolOffset = lineData.getItemVisual(idx, name + "Offset"); - var symbolKeepAspect = lineData.getItemVisual(idx, name + "KeepAspect"); - var symbolSizeArr = normalizeSymbolSize2(symbolSize); - var symbolOffsetArr = normalizeSymbolOffset2(symbolOffset || 0, symbolSizeArr); - return symbolType + symbolSizeArr + symbolOffsetArr + (symbolRotate || "") + (symbolKeepAspect || ""); - } - function createSymbol$1(name, lineData, idx) { - var symbolType = lineData.getItemVisual(idx, name); - if (!symbolType || symbolType === "none") { - return; - } - var symbolSize = lineData.getItemVisual(idx, name + "Size"); - var symbolRotate = lineData.getItemVisual(idx, name + "Rotate"); - var symbolOffset = lineData.getItemVisual(idx, name + "Offset"); - var symbolKeepAspect = lineData.getItemVisual(idx, name + "KeepAspect"); - var symbolSizeArr = normalizeSymbolSize2(symbolSize); - var symbolOffsetArr = normalizeSymbolOffset2(symbolOffset || 0, symbolSizeArr); - var symbolPath = createSymbol3(symbolType, -symbolSizeArr[0] / 2 + symbolOffsetArr[0], -symbolSizeArr[1] / 2 + symbolOffsetArr[1], symbolSizeArr[0], symbolSizeArr[1], null, symbolKeepAspect); - symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate) ? void 0 : +symbolRotate * Math.PI / 180 || 0; - symbolPath.name = name; - return symbolPath; - } - function createLine2(points5) { - var line = new ECLinePath2({ - name: "line", - subPixelOptimize: true - }); - setLinePoints2(line.shape, points5); - return line; - } - function setLinePoints2(targetShape, points5) { - targetShape.x1 = points5[0][0]; - targetShape.y1 = points5[0][1]; - targetShape.x2 = points5[1][0]; - targetShape.y2 = points5[1][1]; - targetShape.percent = 1; - var cp1 = points5[2]; - if (cp1) { - targetShape.cpx1 = cp1[0]; - targetShape.cpy1 = cp1[1]; - } else { - targetShape.cpx1 = NaN; - targetShape.cpy1 = NaN; - } - } - var Line$1 = ( - /** @class */ - function(_super) { - __extends2(Line4, _super); - function Line4(lineData, idx, seriesScope) { - var _this = _super.call(this) || this; - _this._createLine(lineData, idx, seriesScope); - return _this; - } - Line4.prototype._createLine = function(lineData, idx, seriesScope) { - var seriesModel = lineData.hostModel; - var linePoints = lineData.getItemLayout(idx); - var line = createLine2(linePoints); - line.shape.percent = 0; - initProps2(line, { - shape: { - percent: 1 - } - }, seriesModel, idx); - this.add(line); - each17(SYMBOL_CATEGORIES2, function(symbolCategory) { - var symbol = createSymbol$1(symbolCategory, lineData, idx); - this.add(symbol); - this[makeSymbolTypeKey2(symbolCategory)] = makeSymbolTypeValue2(symbolCategory, lineData, idx); - }, this); - this._updateCommonStl(lineData, idx, seriesScope); - }; - Line4.prototype.updateData = function(lineData, idx, seriesScope) { - var seriesModel = lineData.hostModel; - var line = this.childOfName("line"); - var linePoints = lineData.getItemLayout(idx); - var target = { - shape: {} - }; - setLinePoints2(target.shape, linePoints); - updateProps3(line, target, seriesModel, idx); - each17(SYMBOL_CATEGORIES2, function(symbolCategory) { - var symbolType = makeSymbolTypeValue2(symbolCategory, lineData, idx); - var key = makeSymbolTypeKey2(symbolCategory); - if (this[key] !== symbolType) { - this.remove(this.childOfName(symbolCategory)); - var symbol = createSymbol$1(symbolCategory, lineData, idx); - this.add(symbol); - } - this[key] = symbolType; - }, this); - this._updateCommonStl(lineData, idx, seriesScope); - }; - Line4.prototype.getLinePath = function() { - return this.childAt(0); - }; - Line4.prototype._updateCommonStl = function(lineData, idx, seriesScope) { - var seriesModel = lineData.hostModel; - var line = this.childOfName("line"); - var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle; - var blurLineStyle = seriesScope && seriesScope.blurLineStyle; - var selectLineStyle = seriesScope && seriesScope.selectLineStyle; - var labelStatesModels = seriesScope && seriesScope.labelStatesModels; - var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled; - var focus = seriesScope && seriesScope.focus; - var blurScope = seriesScope && seriesScope.blurScope; - if (!seriesScope || lineData.hasItemOption) { - var itemModel = lineData.getItemModel(idx); - var emphasisModel = itemModel.getModel("emphasis"); - emphasisLineStyle = emphasisModel.getModel("lineStyle").getLineStyle(); - blurLineStyle = itemModel.getModel(["blur", "lineStyle"]).getLineStyle(); - selectLineStyle = itemModel.getModel(["select", "lineStyle"]).getLineStyle(); - emphasisDisabled = emphasisModel.get("disabled"); - focus = emphasisModel.get("focus"); - blurScope = emphasisModel.get("blurScope"); - labelStatesModels = getLabelStatesModels2(itemModel); - } - var lineStyle = lineData.getItemVisual(idx, "style"); - var visualColor = lineStyle.stroke; - line.useStyle(lineStyle); - line.style.fill = null; - line.style.strokeNoScale = true; - line.ensureState("emphasis").style = emphasisLineStyle; - line.ensureState("blur").style = blurLineStyle; - line.ensureState("select").style = selectLineStyle; - each17(SYMBOL_CATEGORIES2, function(symbolCategory) { - var symbol = this.childOfName(symbolCategory); - if (symbol) { - symbol.setColor(visualColor); - symbol.style.opacity = lineStyle.opacity; - for (var i2 = 0; i2 < SPECIAL_STATES2.length; i2++) { - var stateName = SPECIAL_STATES2[i2]; - var lineState = line.getState(stateName); - if (lineState) { - var lineStateStyle = lineState.style || {}; - var state = symbol.ensureState(stateName); - var stateStyle = state.style || (state.style = {}); - if (lineStateStyle.stroke != null) { - stateStyle[symbol.__isEmptyBrush ? "stroke" : "fill"] = lineStateStyle.stroke; - } - if (lineStateStyle.opacity != null) { - stateStyle.opacity = lineStateStyle.opacity; - } - } - } - symbol.markRedraw(); - } - }, this); - var rawVal = seriesModel.getRawValue(idx); - setLabelStyle2(this, labelStatesModels, { - labelDataIndex: idx, - labelFetcher: { - getFormattedLabel: function(dataIndex, stateName) { - return seriesModel.getFormattedLabel(dataIndex, stateName, lineData.dataType); - } - }, - inheritColor: visualColor || "#000", - defaultOpacity: lineStyle.opacity, - defaultText: (rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round8(rawVal) : rawVal) + "" - }); - var label = this.getTextContent(); - if (label) { - var labelNormalModel = labelStatesModels.normal; - label.__align = label.style.align; - label.__verticalAlign = label.style.verticalAlign; - label.__position = labelNormalModel.get("position") || "middle"; - var distance3 = labelNormalModel.get("distance"); - if (!isArray3(distance3)) { - distance3 = [distance3, distance3]; - } - label.__labelDistance = distance3; - } - this.setTextConfig({ - position: null, - local: true, - inside: false - // Can't be inside for stroke element. - }); - toggleHoverEmphasis2(this, focus, blurScope, emphasisDisabled); - }; - Line4.prototype.highlight = function() { - enterEmphasis2(this); - }; - Line4.prototype.downplay = function() { - leaveEmphasis2(this); - }; - Line4.prototype.updateLayout = function(lineData, idx) { - this.setLinePoints(lineData.getItemLayout(idx)); - }; - Line4.prototype.setLinePoints = function(points5) { - var linePath = this.childOfName("line"); - setLinePoints2(linePath.shape, points5); - linePath.dirty(); - }; - Line4.prototype.beforeUpdate = function() { - var lineGroup = this; - var symbolFrom = lineGroup.childOfName("fromSymbol"); - var symbolTo = lineGroup.childOfName("toSymbol"); - var label = lineGroup.getTextContent(); - if (!symbolFrom && !symbolTo && (!label || label.ignore)) { - return; - } - var invScale = 1; - var parentNode3 = this.parent; - while (parentNode3) { - if (parentNode3.scaleX) { - invScale /= parentNode3.scaleX; - } - parentNode3 = parentNode3.parent; - } - var line = lineGroup.childOfName("line"); - if (!this.__dirty && !line.__dirty) { - return; - } - var percent = line.shape.percent; - var fromPos = line.pointAt(0); - var toPos = line.pointAt(percent); - var d = sub2([], toPos, fromPos); - normalize5(d, d); - function setSymbolRotation(symbol, percent2) { - var specifiedRotation = symbol.__specifiedRotation; - if (specifiedRotation == null) { - var tangent2 = line.tangentAt(percent2); - symbol.attr("rotation", (percent2 === 1 ? -1 : 1) * Math.PI / 2 - Math.atan2(tangent2[1], tangent2[0])); - } else { - symbol.attr("rotation", specifiedRotation); - } - } - if (symbolFrom) { - symbolFrom.setPosition(fromPos); - setSymbolRotation(symbolFrom, 0); - symbolFrom.scaleX = symbolFrom.scaleY = invScale * percent; - symbolFrom.markRedraw(); - } - if (symbolTo) { - symbolTo.setPosition(toPos); - setSymbolRotation(symbolTo, 1); - symbolTo.scaleX = symbolTo.scaleY = invScale * percent; - symbolTo.markRedraw(); - } - if (label && !label.ignore) { - label.x = label.y = 0; - label.originX = label.originY = 0; - var textAlign = void 0; - var textVerticalAlign = void 0; - var distance3 = label.__labelDistance; - var distanceX = distance3[0] * invScale; - var distanceY = distance3[1] * invScale; - var halfPercent = percent / 2; - var tangent = line.tangentAt(halfPercent); - var n = [tangent[1], -tangent[0]]; - var cp = line.pointAt(halfPercent); - if (n[1] > 0) { - n[0] = -n[0]; - n[1] = -n[1]; - } - var dir4 = tangent[0] < 0 ? -1 : 1; - if (label.__position !== "start" && label.__position !== "end") { - var rotation = -Math.atan2(tangent[1], tangent[0]); - if (toPos[0] < fromPos[0]) { - rotation = Math.PI + rotation; - } - label.rotation = rotation; - } - var dy = void 0; - switch (label.__position) { - case "insideStartTop": - case "insideMiddleTop": - case "insideEndTop": - case "middle": - dy = -distanceY; - textVerticalAlign = "bottom"; - break; - case "insideStartBottom": - case "insideMiddleBottom": - case "insideEndBottom": - dy = distanceY; - textVerticalAlign = "top"; - break; - default: - dy = 0; - textVerticalAlign = "middle"; - } - switch (label.__position) { - case "end": - label.x = d[0] * distanceX + toPos[0]; - label.y = d[1] * distanceY + toPos[1]; - textAlign = d[0] > 0.8 ? "left" : d[0] < -0.8 ? "right" : "center"; - textVerticalAlign = d[1] > 0.8 ? "top" : d[1] < -0.8 ? "bottom" : "middle"; - break; - case "start": - label.x = -d[0] * distanceX + fromPos[0]; - label.y = -d[1] * distanceY + fromPos[1]; - textAlign = d[0] > 0.8 ? "right" : d[0] < -0.8 ? "left" : "center"; - textVerticalAlign = d[1] > 0.8 ? "bottom" : d[1] < -0.8 ? "top" : "middle"; - break; - case "insideStartTop": - case "insideStart": - case "insideStartBottom": - label.x = distanceX * dir4 + fromPos[0]; - label.y = fromPos[1] + dy; - textAlign = tangent[0] < 0 ? "right" : "left"; - label.originX = -distanceX * dir4; - label.originY = -dy; - break; - case "insideMiddleTop": - case "insideMiddle": - case "insideMiddleBottom": - case "middle": - label.x = cp[0]; - label.y = cp[1] + dy; - textAlign = "center"; - label.originY = -dy; - break; - case "insideEndTop": - case "insideEnd": - case "insideEndBottom": - label.x = -distanceX * dir4 + toPos[0]; - label.y = toPos[1] + dy; - textAlign = tangent[0] >= 0 ? "right" : "left"; - label.originX = distanceX * dir4; - label.originY = -dy; - break; - } - label.scaleX = label.scaleY = invScale; - label.setStyle({ - // Use the user specified text align and baseline first - verticalAlign: label.__verticalAlign || textVerticalAlign, - align: label.__align || textAlign - }); - } - }; - return Line4; - }(Group5) - ); - var LineDraw2 = ( - /** @class */ - function() { - function LineDraw3(LineCtor) { - this.group = new Group5(); - this._LineCtor = LineCtor || Line$1; - } - LineDraw3.prototype.updateData = function(lineData) { - var _this = this; - this._progressiveEls = null; - var lineDraw = this; - var group = lineDraw.group; - var oldLineData = lineDraw._lineData; - lineDraw._lineData = lineData; - if (!oldLineData) { - group.removeAll(); - } - var seriesScope = makeSeriesScope$1(lineData); - lineData.diff(oldLineData).add(function(idx) { - _this._doAdd(lineData, idx, seriesScope); - }).update(function(newIdx, oldIdx) { - _this._doUpdate(oldLineData, lineData, oldIdx, newIdx, seriesScope); - }).remove(function(idx) { - group.remove(oldLineData.getItemGraphicEl(idx)); - }).execute(); - }; - LineDraw3.prototype.updateLayout = function() { - var lineData = this._lineData; - if (!lineData) { - return; - } - lineData.eachItemGraphicEl(function(el, idx) { - el.updateLayout(lineData, idx); - }, this); - }; - LineDraw3.prototype.incrementalPrepareUpdate = function(lineData) { - this._seriesScope = makeSeriesScope$1(lineData); - this._lineData = null; - this.group.removeAll(); - }; - LineDraw3.prototype.incrementalUpdate = function(taskParams, lineData) { - this._progressiveEls = []; - function updateIncrementalAndHover(el2) { - if (!el2.isGroup && !isEffectObject2(el2)) { - el2.incremental = true; - el2.ensureState("emphasis").hoverLayer = true; - } - } - for (var idx = taskParams.start; idx < taskParams.end; idx++) { - var itemLayout = lineData.getItemLayout(idx); - if (lineNeedsDraw2(itemLayout)) { - var el = new this._LineCtor(lineData, idx, this._seriesScope); - el.traverse(updateIncrementalAndHover); - this.group.add(el); - lineData.setItemGraphicEl(idx, el); - this._progressiveEls.push(el); - } - } - }; - LineDraw3.prototype.remove = function() { - this.group.removeAll(); - }; - LineDraw3.prototype.eachRendered = function(cb) { - traverseElements2(this._progressiveEls || this.group, cb); - }; - LineDraw3.prototype._doAdd = function(lineData, idx, seriesScope) { - var itemLayout = lineData.getItemLayout(idx); - if (!lineNeedsDraw2(itemLayout)) { - return; - } - var el = new this._LineCtor(lineData, idx, seriesScope); - lineData.setItemGraphicEl(idx, el); - this.group.add(el); - }; - LineDraw3.prototype._doUpdate = function(oldLineData, newLineData, oldIdx, newIdx, seriesScope) { - var itemEl = oldLineData.getItemGraphicEl(oldIdx); - if (!lineNeedsDraw2(newLineData.getItemLayout(newIdx))) { - this.group.remove(itemEl); - return; - } - if (!itemEl) { - itemEl = new this._LineCtor(newLineData, newIdx, seriesScope); - } else { - itemEl.updateData(newLineData, newIdx, seriesScope); - } - newLineData.setItemGraphicEl(newIdx, itemEl); - this.group.add(itemEl); - }; - return LineDraw3; - }() - ); - function isEffectObject2(el) { - return el.animators && el.animators.length > 0; - } - function makeSeriesScope$1(lineData) { - var hostModel = lineData.hostModel; - var emphasisModel = hostModel.getModel("emphasis"); - return { - lineStyle: hostModel.getModel("lineStyle").getLineStyle(), - emphasisLineStyle: emphasisModel.getModel(["lineStyle"]).getLineStyle(), - blurLineStyle: hostModel.getModel(["blur", "lineStyle"]).getLineStyle(), - selectLineStyle: hostModel.getModel(["select", "lineStyle"]).getLineStyle(), - emphasisDisabled: emphasisModel.get("disabled"), - blurScope: emphasisModel.get("blurScope"), - focus: emphasisModel.get("focus"), - labelStatesModels: getLabelStatesModels2(hostModel) - }; - } - function isPointNaN2(pt) { - return isNaN(pt[0]) || isNaN(pt[1]); - } - function lineNeedsDraw2(pts) { - return pts && !isPointNaN2(pts[0]) && !isPointNaN2(pts[1]); - } - var v12 = []; - var v22 = []; - var v32 = []; - var quadraticAt$1 = quadraticAt3; - var v2DistSquare2 = distSquare2; - var mathAbs$2 = Math.abs; - function intersectCurveCircle2(curvePoints, center4, radius) { - var p0 = curvePoints[0]; - var p1 = curvePoints[1]; - var p2 = curvePoints[2]; - var d = Infinity; - var t; - var radiusSquare = radius * radius; - var interval = 0.1; - for (var _t = 0.1; _t <= 0.9; _t += 0.1) { - v12[0] = quadraticAt$1(p0[0], p1[0], p2[0], _t); - v12[1] = quadraticAt$1(p0[1], p1[1], p2[1], _t); - var diff = mathAbs$2(v2DistSquare2(v12, center4) - radiusSquare); - if (diff < d) { - d = diff; - t = _t; - } - } - for (var i2 = 0; i2 < 32; i2++) { - var next = t + interval; - v22[0] = quadraticAt$1(p0[0], p1[0], p2[0], t); - v22[1] = quadraticAt$1(p0[1], p1[1], p2[1], t); - v32[0] = quadraticAt$1(p0[0], p1[0], p2[0], next); - v32[1] = quadraticAt$1(p0[1], p1[1], p2[1], next); - var diff = v2DistSquare2(v22, center4) - radiusSquare; - if (mathAbs$2(diff) < 0.01) { - break; - } - var nextDiff = v2DistSquare2(v32, center4) - radiusSquare; - interval /= 2; - if (diff < 0) { - if (nextDiff >= 0) { - t = t + interval; - } else { - t = t - interval; - } - } else { - if (nextDiff >= 0) { - t = t - interval; - } else { - t = t + interval; - } - } - } - return t; - } - function adjustEdge2(graph, scale5) { - var tmp0 = []; - var quadraticSubdivide$1 = quadraticSubdivide2; - var pts = [[], [], []]; - var pts2 = [[], []]; - var v = []; - scale5 /= 2; - graph.eachEdge(function(edge, idx) { - var linePoints = edge.getLayout(); - var fromSymbol = edge.getVisual("fromSymbol"); - var toSymbol = edge.getVisual("toSymbol"); - if (!linePoints.__original) { - linePoints.__original = [clone$1(linePoints[0]), clone$1(linePoints[1])]; - if (linePoints[2]) { - linePoints.__original.push(clone$1(linePoints[2])); - } - } - var originalPoints = linePoints.__original; - if (linePoints[2] != null) { - copy3(pts[0], originalPoints[0]); - copy3(pts[1], originalPoints[2]); - copy3(pts[2], originalPoints[1]); - if (fromSymbol && fromSymbol !== "none") { - var symbolSize = getSymbolSize2(edge.node1); - var t = intersectCurveCircle2(pts, originalPoints[0], symbolSize * scale5); - quadraticSubdivide$1(pts[0][0], pts[1][0], pts[2][0], t, tmp0); - pts[0][0] = tmp0[3]; - pts[1][0] = tmp0[4]; - quadraticSubdivide$1(pts[0][1], pts[1][1], pts[2][1], t, tmp0); - pts[0][1] = tmp0[3]; - pts[1][1] = tmp0[4]; - } - if (toSymbol && toSymbol !== "none") { - var symbolSize = getSymbolSize2(edge.node2); - var t = intersectCurveCircle2(pts, originalPoints[1], symbolSize * scale5); - quadraticSubdivide$1(pts[0][0], pts[1][0], pts[2][0], t, tmp0); - pts[1][0] = tmp0[1]; - pts[2][0] = tmp0[2]; - quadraticSubdivide$1(pts[0][1], pts[1][1], pts[2][1], t, tmp0); - pts[1][1] = tmp0[1]; - pts[2][1] = tmp0[2]; - } - copy3(linePoints[0], pts[0]); - copy3(linePoints[1], pts[2]); - copy3(linePoints[2], pts[1]); - } else { - copy3(pts2[0], originalPoints[0]); - copy3(pts2[1], originalPoints[1]); - sub2(v, pts2[1], pts2[0]); - normalize5(v, v); - if (fromSymbol && fromSymbol !== "none") { - var symbolSize = getSymbolSize2(edge.node1); - scaleAndAdd3(pts2[0], pts2[0], v, symbolSize * scale5); - } - if (toSymbol && toSymbol !== "none") { - var symbolSize = getSymbolSize2(edge.node2); - scaleAndAdd3(pts2[1], pts2[1], v, -symbolSize * scale5); - } - copy3(linePoints[0], pts2[0]); - copy3(linePoints[1], pts2[1]); - } - }); - } - function isViewCoordSys2(coordSys) { - return coordSys.type === "view"; - } - var GraphView2 = ( - /** @class */ - function(_super) { - __extends2(GraphView3, _super); - function GraphView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GraphView3.type; - return _this; - } - GraphView3.prototype.init = function(ecModel, api) { - var symbolDraw = new SymbolDraw2(); - var lineDraw = new LineDraw2(); - var group = this.group; - this._controller = new RoamController2(api.getZr()); - this._controllerHost = { - target: group - }; - group.add(symbolDraw.group); - group.add(lineDraw.group); - this._symbolDraw = symbolDraw; - this._lineDraw = lineDraw; - this._firstRender = true; - }; - GraphView3.prototype.render = function(seriesModel, ecModel, api) { - var _this = this; - var coordSys = seriesModel.coordinateSystem; - this._model = seriesModel; - var symbolDraw = this._symbolDraw; - var lineDraw = this._lineDraw; - var group = this.group; - if (isViewCoordSys2(coordSys)) { - var groupNewProp = { - x: coordSys.x, - y: coordSys.y, - scaleX: coordSys.scaleX, - scaleY: coordSys.scaleY - }; - if (this._firstRender) { - group.attr(groupNewProp); - } else { - updateProps3(group, groupNewProp, seriesModel); - } - } - adjustEdge2(seriesModel.getGraph(), getNodeGlobalScale2(seriesModel)); - var data = seriesModel.getData(); - symbolDraw.updateData(data); - var edgeData = seriesModel.getEdgeData(); - lineDraw.updateData(edgeData); - this._updateNodeAndLinkScale(); - this._updateController(seriesModel, ecModel, api); - clearTimeout(this._layoutTimeout); - var forceLayout3 = seriesModel.forceLayout; - var layoutAnimation = seriesModel.get(["force", "layoutAnimation"]); - if (forceLayout3) { - this._startForceLayoutIteration(forceLayout3, layoutAnimation); - } - var layout6 = seriesModel.get("layout"); - data.graph.eachNode(function(node) { - var idx = node.dataIndex; - var el = node.getGraphicEl(); - var itemModel = node.getModel(); - if (!el) { - return; - } - el.off("drag").off("dragend"); - var draggable = itemModel.get("draggable"); - if (draggable) { - el.on("drag", function(e3) { - switch (layout6) { - case "force": - forceLayout3.warmUp(); - !_this._layouting && _this._startForceLayoutIteration(forceLayout3, layoutAnimation); - forceLayout3.setFixed(idx); - data.setItemLayout(idx, [el.x, el.y]); - break; - case "circular": - data.setItemLayout(idx, [el.x, el.y]); - node.setLayout({ - fixed: true - }, true); - circularLayout2(seriesModel, "symbolSize", node, [e3.offsetX, e3.offsetY]); - _this.updateLayout(seriesModel); - break; - case "none": - default: - data.setItemLayout(idx, [el.x, el.y]); - simpleLayoutEdge2(seriesModel.getGraph(), seriesModel); - _this.updateLayout(seriesModel); - break; - } - }).on("dragend", function() { - if (forceLayout3) { - forceLayout3.setUnfixed(idx); - } - }); - } - el.setDraggable(draggable, !!itemModel.get("cursor")); - var focus = itemModel.get(["emphasis", "focus"]); - if (focus === "adjacency") { - getECData2(el).focus = node.getAdjacentDataIndices(); - } - }); - data.graph.eachEdge(function(edge) { - var el = edge.getGraphicEl(); - var focus = edge.getModel().get(["emphasis", "focus"]); - if (!el) { - return; - } - if (focus === "adjacency") { - getECData2(el).focus = { - edge: [edge.dataIndex], - node: [edge.node1.dataIndex, edge.node2.dataIndex] - }; - } - }); - var circularRotateLabel = seriesModel.get("layout") === "circular" && seriesModel.get(["circular", "rotateLabel"]); - var cx = data.getLayout("cx"); - var cy = data.getLayout("cy"); - data.graph.eachNode(function(node) { - rotateNodeLabel2(node, circularRotateLabel, cx, cy); - }); - this._firstRender = false; - }; - GraphView3.prototype.dispose = function() { - this.remove(); - this._controller && this._controller.dispose(); - this._controllerHost = null; - }; - GraphView3.prototype._startForceLayoutIteration = function(forceLayout3, layoutAnimation) { - var self2 = this; - (function step() { - forceLayout3.step(function(stopped) { - self2.updateLayout(self2._model); - (self2._layouting = !stopped) && (layoutAnimation ? self2._layoutTimeout = setTimeout(step, 16) : step()); - }); - })(); - }; - GraphView3.prototype._updateController = function(seriesModel, ecModel, api) { - var _this = this; - var controller = this._controller; - var controllerHost = this._controllerHost; - var group = this.group; - controller.setPointerChecker(function(e3, x, y) { - var rect = group.getBoundingRect(); - rect.applyTransform(group.transform); - return rect.contain(x, y) && !onIrrelevantElement2(e3, api, seriesModel); - }); - if (!isViewCoordSys2(seriesModel.coordinateSystem)) { - controller.disable(); - return; - } - controller.enable(seriesModel.get("roam")); - controllerHost.zoomLimit = seriesModel.get("scaleLimit"); - controllerHost.zoom = seriesModel.coordinateSystem.getZoom(); - controller.off("pan").off("zoom").on("pan", function(e3) { - updateViewOnPan2(controllerHost, e3.dx, e3.dy); - api.dispatchAction({ - seriesId: seriesModel.id, - type: "graphRoam", - dx: e3.dx, - dy: e3.dy - }); - }).on("zoom", function(e3) { - updateViewOnZoom2(controllerHost, e3.scale, e3.originX, e3.originY); - api.dispatchAction({ - seriesId: seriesModel.id, - type: "graphRoam", - zoom: e3.scale, - originX: e3.originX, - originY: e3.originY - }); - _this._updateNodeAndLinkScale(); - adjustEdge2(seriesModel.getGraph(), getNodeGlobalScale2(seriesModel)); - _this._lineDraw.updateLayout(); - api.updateLabelLayout(); - }); - }; - GraphView3.prototype._updateNodeAndLinkScale = function() { - var seriesModel = this._model; - var data = seriesModel.getData(); - var nodeScale = getNodeGlobalScale2(seriesModel); - data.eachItemGraphicEl(function(el, idx) { - el && el.setSymbolScale(nodeScale); - }); - }; - GraphView3.prototype.updateLayout = function(seriesModel) { - adjustEdge2(seriesModel.getGraph(), getNodeGlobalScale2(seriesModel)); - this._symbolDraw.updateLayout(); - this._lineDraw.updateLayout(); - }; - GraphView3.prototype.remove = function() { - clearTimeout(this._layoutTimeout); - this._layouting = false; - this._layoutTimeout = null; - this._symbolDraw && this._symbolDraw.remove(); - this._lineDraw && this._lineDraw.remove(); - }; - GraphView3.type = "graph"; - return GraphView3; - }(ChartView2) - ); - function generateNodeKey2(id) { - return "_EC_" + id; - } - var Graph2 = ( - /** @class */ - function() { - function Graph3(directed) { - this.type = "graph"; - this.nodes = []; - this.edges = []; - this._nodesMap = {}; - this._edgesMap = {}; - this._directed = directed || false; - } - Graph3.prototype.isDirected = function() { - return this._directed; - }; - Graph3.prototype.addNode = function(id, dataIndex) { - id = id == null ? "" + dataIndex : "" + id; - var nodesMap = this._nodesMap; - if (nodesMap[generateNodeKey2(id)]) { - if (true) { - console.error("Graph nodes have duplicate name or id"); - } - return; - } - var node = new GraphNode2(id, dataIndex); - node.hostGraph = this; - this.nodes.push(node); - nodesMap[generateNodeKey2(id)] = node; - return node; - }; - Graph3.prototype.getNodeByIndex = function(dataIndex) { - var rawIdx = this.data.getRawIndex(dataIndex); - return this.nodes[rawIdx]; - }; - Graph3.prototype.getNodeById = function(id) { - return this._nodesMap[generateNodeKey2(id)]; - }; - Graph3.prototype.addEdge = function(n1, n2, dataIndex) { - var nodesMap = this._nodesMap; - var edgesMap = this._edgesMap; - if (isNumber2(n1)) { - n1 = this.nodes[n1]; - } - if (isNumber2(n2)) { - n2 = this.nodes[n2]; - } - if (!(n1 instanceof GraphNode2)) { - n1 = nodesMap[generateNodeKey2(n1)]; - } - if (!(n2 instanceof GraphNode2)) { - n2 = nodesMap[generateNodeKey2(n2)]; - } - if (!n1 || !n2) { - return; - } - var key = n1.id + "-" + n2.id; - var edge = new GraphEdge2(n1, n2, dataIndex); - edge.hostGraph = this; - if (this._directed) { - n1.outEdges.push(edge); - n2.inEdges.push(edge); - } - n1.edges.push(edge); - if (n1 !== n2) { - n2.edges.push(edge); - } - this.edges.push(edge); - edgesMap[key] = edge; - return edge; - }; - Graph3.prototype.getEdgeByIndex = function(dataIndex) { - var rawIdx = this.edgeData.getRawIndex(dataIndex); - return this.edges[rawIdx]; - }; - Graph3.prototype.getEdge = function(n1, n2) { - if (n1 instanceof GraphNode2) { - n1 = n1.id; - } - if (n2 instanceof GraphNode2) { - n2 = n2.id; - } - var edgesMap = this._edgesMap; - if (this._directed) { - return edgesMap[n1 + "-" + n2]; - } else { - return edgesMap[n1 + "-" + n2] || edgesMap[n2 + "-" + n1]; - } - }; - Graph3.prototype.eachNode = function(cb, context) { - var nodes = this.nodes; - var len3 = nodes.length; - for (var i2 = 0; i2 < len3; i2++) { - if (nodes[i2].dataIndex >= 0) { - cb.call(context, nodes[i2], i2); - } - } - }; - Graph3.prototype.eachEdge = function(cb, context) { - var edges = this.edges; - var len3 = edges.length; - for (var i2 = 0; i2 < len3; i2++) { - if (edges[i2].dataIndex >= 0 && edges[i2].node1.dataIndex >= 0 && edges[i2].node2.dataIndex >= 0) { - cb.call(context, edges[i2], i2); - } - } - }; - Graph3.prototype.breadthFirstTraverse = function(cb, startNode, direction, context) { - if (!(startNode instanceof GraphNode2)) { - startNode = this._nodesMap[generateNodeKey2(startNode)]; - } - if (!startNode) { - return; - } - var edgeType = direction === "out" ? "outEdges" : direction === "in" ? "inEdges" : "edges"; - for (var i2 = 0; i2 < this.nodes.length; i2++) { - this.nodes[i2].__visited = false; - } - if (cb.call(context, startNode, null)) { - return; - } - var queue = [startNode]; - while (queue.length) { - var currentNode = queue.shift(); - var edges = currentNode[edgeType]; - for (var i2 = 0; i2 < edges.length; i2++) { - var e3 = edges[i2]; - var otherNode = e3.node1 === currentNode ? e3.node2 : e3.node1; - if (!otherNode.__visited) { - if (cb.call(context, otherNode, currentNode)) { - return; - } - queue.push(otherNode); - otherNode.__visited = true; - } - } - } - }; - Graph3.prototype.update = function() { - var data = this.data; - var edgeData = this.edgeData; - var nodes = this.nodes; - var edges = this.edges; - for (var i2 = 0, len3 = nodes.length; i2 < len3; i2++) { - nodes[i2].dataIndex = -1; - } - for (var i2 = 0, len3 = data.count(); i2 < len3; i2++) { - nodes[data.getRawIndex(i2)].dataIndex = i2; - } - edgeData.filterSelf(function(idx) { - var edge = edges[edgeData.getRawIndex(idx)]; - return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0; - }); - for (var i2 = 0, len3 = edges.length; i2 < len3; i2++) { - edges[i2].dataIndex = -1; - } - for (var i2 = 0, len3 = edgeData.count(); i2 < len3; i2++) { - edges[edgeData.getRawIndex(i2)].dataIndex = i2; - } - }; - Graph3.prototype.clone = function() { - var graph = new Graph3(this._directed); - var nodes = this.nodes; - var edges = this.edges; - for (var i2 = 0; i2 < nodes.length; i2++) { - graph.addNode(nodes[i2].id, nodes[i2].dataIndex); - } - for (var i2 = 0; i2 < edges.length; i2++) { - var e3 = edges[i2]; - graph.addEdge(e3.node1.id, e3.node2.id, e3.dataIndex); - } - return graph; - }; - return Graph3; - }() - ); - var GraphNode2 = ( - /** @class */ - function() { - function GraphNode3(id, dataIndex) { - this.inEdges = []; - this.outEdges = []; - this.edges = []; - this.dataIndex = -1; - this.id = id == null ? "" : id; - this.dataIndex = dataIndex == null ? -1 : dataIndex; - } - GraphNode3.prototype.degree = function() { - return this.edges.length; - }; - GraphNode3.prototype.inDegree = function() { - return this.inEdges.length; - }; - GraphNode3.prototype.outDegree = function() { - return this.outEdges.length; - }; - GraphNode3.prototype.getModel = function(path) { - if (this.dataIndex < 0) { - return; - } - var graph = this.hostGraph; - var itemModel = graph.data.getItemModel(this.dataIndex); - return itemModel.getModel(path); - }; - GraphNode3.prototype.getAdjacentDataIndices = function() { - var dataIndices = { - edge: [], - node: [] - }; - for (var i2 = 0; i2 < this.edges.length; i2++) { - var adjacentEdge = this.edges[i2]; - if (adjacentEdge.dataIndex < 0) { - continue; - } - dataIndices.edge.push(adjacentEdge.dataIndex); - dataIndices.node.push(adjacentEdge.node1.dataIndex, adjacentEdge.node2.dataIndex); - } - return dataIndices; - }; - GraphNode3.prototype.getTrajectoryDataIndices = function() { - var connectedEdgesMap = createHashMap2(); - var connectedNodesMap = createHashMap2(); - for (var i2 = 0; i2 < this.edges.length; i2++) { - var adjacentEdge = this.edges[i2]; - if (adjacentEdge.dataIndex < 0) { - continue; - } - connectedEdgesMap.set(adjacentEdge.dataIndex, true); - var sourceNodesQueue = [adjacentEdge.node1]; - var targetNodesQueue = [adjacentEdge.node2]; - var nodeIteratorIndex = 0; - while (nodeIteratorIndex < sourceNodesQueue.length) { - var sourceNode = sourceNodesQueue[nodeIteratorIndex]; - nodeIteratorIndex++; - connectedNodesMap.set(sourceNode.dataIndex, true); - for (var j = 0; j < sourceNode.inEdges.length; j++) { - connectedEdgesMap.set(sourceNode.inEdges[j].dataIndex, true); - sourceNodesQueue.push(sourceNode.inEdges[j].node1); - } - } - nodeIteratorIndex = 0; - while (nodeIteratorIndex < targetNodesQueue.length) { - var targetNode = targetNodesQueue[nodeIteratorIndex]; - nodeIteratorIndex++; - connectedNodesMap.set(targetNode.dataIndex, true); - for (var j = 0; j < targetNode.outEdges.length; j++) { - connectedEdgesMap.set(targetNode.outEdges[j].dataIndex, true); - targetNodesQueue.push(targetNode.outEdges[j].node2); - } - } - } - return { - edge: connectedEdgesMap.keys(), - node: connectedNodesMap.keys() - }; - }; - return GraphNode3; - }() - ); - var GraphEdge2 = ( - /** @class */ - function() { - function GraphEdge3(n1, n2, dataIndex) { - this.dataIndex = -1; - this.node1 = n1; - this.node2 = n2; - this.dataIndex = dataIndex == null ? -1 : dataIndex; - } - GraphEdge3.prototype.getModel = function(path) { - if (this.dataIndex < 0) { - return; - } - var graph = this.hostGraph; - var itemModel = graph.edgeData.getItemModel(this.dataIndex); - return itemModel.getModel(path); - }; - GraphEdge3.prototype.getAdjacentDataIndices = function() { - return { - edge: [this.dataIndex], - node: [this.node1.dataIndex, this.node2.dataIndex] - }; - }; - GraphEdge3.prototype.getTrajectoryDataIndices = function() { - var connectedEdgesMap = createHashMap2(); - var connectedNodesMap = createHashMap2(); - connectedEdgesMap.set(this.dataIndex, true); - var sourceNodes = [this.node1]; - var targetNodes = [this.node2]; - var nodeIteratorIndex = 0; - while (nodeIteratorIndex < sourceNodes.length) { - var sourceNode = sourceNodes[nodeIteratorIndex]; - nodeIteratorIndex++; - connectedNodesMap.set(sourceNode.dataIndex, true); - for (var j = 0; j < sourceNode.inEdges.length; j++) { - connectedEdgesMap.set(sourceNode.inEdges[j].dataIndex, true); - sourceNodes.push(sourceNode.inEdges[j].node1); - } - } - nodeIteratorIndex = 0; - while (nodeIteratorIndex < targetNodes.length) { - var targetNode = targetNodes[nodeIteratorIndex]; - nodeIteratorIndex++; - connectedNodesMap.set(targetNode.dataIndex, true); - for (var j = 0; j < targetNode.outEdges.length; j++) { - connectedEdgesMap.set(targetNode.outEdges[j].dataIndex, true); - targetNodes.push(targetNode.outEdges[j].node2); - } - } - return { - edge: connectedEdgesMap.keys(), - node: connectedNodesMap.keys() - }; - }; - return GraphEdge3; - }() - ); - function createGraphDataProxyMixin2(hostName, dataName) { - return { - /** - * @param Default 'value'. can be 'a', 'b', 'c', 'd', 'e'. - */ - getValue: function(dimension) { - var data = this[hostName][dataName]; - return data.getStore().get(data.getDimensionIndex(dimension || "value"), this.dataIndex); - }, - // TODO: TYPE stricter type. - setVisual: function(key, value) { - this.dataIndex >= 0 && this[hostName][dataName].setItemVisual(this.dataIndex, key, value); - }, - getVisual: function(key) { - return this[hostName][dataName].getItemVisual(this.dataIndex, key); - }, - setLayout: function(layout6, merge3) { - this.dataIndex >= 0 && this[hostName][dataName].setItemLayout(this.dataIndex, layout6, merge3); - }, - getLayout: function() { - return this[hostName][dataName].getItemLayout(this.dataIndex); - }, - getGraphicEl: function() { - return this[hostName][dataName].getItemGraphicEl(this.dataIndex); - }, - getRawIndex: function() { - return this[hostName][dataName].getRawIndex(this.dataIndex); - } - }; - } - mixin2(GraphNode2, createGraphDataProxyMixin2("hostGraph", "data")); - mixin2(GraphEdge2, createGraphDataProxyMixin2("hostGraph", "edgeData")); - function createGraphFromNodeEdge2(nodes, edges, seriesModel, directed, beforeLink) { - var graph = new Graph2(directed); - for (var i2 = 0; i2 < nodes.length; i2++) { - graph.addNode(retrieve4( - // Id, name, dataIndex - nodes[i2].id, - nodes[i2].name, - i2 - ), i2); - } - var linkNameList = []; - var validEdges = []; - var linkCount = 0; - for (var i2 = 0; i2 < edges.length; i2++) { - var link = edges[i2]; - var source = link.source; - var target = link.target; - if (graph.addEdge(source, target, linkCount)) { - validEdges.push(link); - linkNameList.push(retrieve4(convertOptionIdName2(link.id, null), source + " > " + target)); - linkCount++; - } - } - var coordSys = seriesModel.get("coordinateSystem"); - var nodeData; - if (coordSys === "cartesian2d" || coordSys === "polar") { - nodeData = createSeriesData2(nodes, seriesModel); - } else { - var coordSysCtor = CoordinateSystemManager2.get(coordSys); - var coordDimensions = coordSysCtor ? coordSysCtor.dimensions || [] : []; - if (indexOf2(coordDimensions, "value") < 0) { - coordDimensions.concat(["value"]); - } - var dimensions = prepareSeriesDataSchema2(nodes, { - coordDimensions, - encodeDefine: seriesModel.getEncode() - }).dimensions; - nodeData = new SeriesData2(dimensions, seriesModel); - nodeData.initData(nodes); - } - var edgeData = new SeriesData2(["value"], seriesModel); - edgeData.initData(validEdges, linkNameList); - beforeLink && beforeLink(nodeData, edgeData); - linkSeriesData2({ - mainData: nodeData, - struct: graph, - structAttr: "graph", - datas: { - node: nodeData, - edge: edgeData - }, - datasAttr: { - node: "data", - edge: "edgeData" - } - }); - graph.update(); - return graph; - } - var GraphSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(GraphSeriesModel3, _super); - function GraphSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GraphSeriesModel3.type; - _this.hasSymbolVisual = true; - return _this; - } - GraphSeriesModel3.prototype.init = function(option) { - _super.prototype.init.apply(this, arguments); - var self2 = this; - function getCategoriesData() { - return self2._categoriesData; - } - this.legendVisualProvider = new LegendVisualProvider2(getCategoriesData, getCategoriesData); - this.fillDataTextStyle(option.edges || option.links); - this._updateCategoriesData(); - }; - GraphSeriesModel3.prototype.mergeOption = function(option) { - _super.prototype.mergeOption.apply(this, arguments); - this.fillDataTextStyle(option.edges || option.links); - this._updateCategoriesData(); - }; - GraphSeriesModel3.prototype.mergeDefaultAndTheme = function(option) { - _super.prototype.mergeDefaultAndTheme.apply(this, arguments); - defaultEmphasis2(option, "edgeLabel", ["show"]); - }; - GraphSeriesModel3.prototype.getInitialData = function(option, ecModel) { - var edges = option.edges || option.links || []; - var nodes = option.data || option.nodes || []; - var self2 = this; - if (nodes && edges) { - initCurvenessList2(this); - var graph = createGraphFromNodeEdge2(nodes, edges, this, true, beforeLink); - each17(graph.edges, function(edge) { - createEdgeMapForCurveness2(edge.node1, edge.node2, this, edge.dataIndex); - }, this); - return graph.data; - } - function beforeLink(nodeData, edgeData) { - nodeData.wrapMethod("getItemModel", function(model) { - var categoriesModels = self2._categoriesModels; - var categoryIdx = model.getShallow("category"); - var categoryModel = categoriesModels[categoryIdx]; - if (categoryModel) { - categoryModel.parentModel = model.parentModel; - model.parentModel = categoryModel; - } - return model; - }); - var oldGetModel = Model2.prototype.getModel; - function newGetModel(path, parentModel) { - var model = oldGetModel.call(this, path, parentModel); - model.resolveParentPath = resolveParentPath; - return model; - } - edgeData.wrapMethod("getItemModel", function(model) { - model.resolveParentPath = resolveParentPath; - model.getModel = newGetModel; - return model; - }); - function resolveParentPath(pathArr) { - if (pathArr && (pathArr[0] === "label" || pathArr[1] === "label")) { - var newPathArr = pathArr.slice(); - if (pathArr[0] === "label") { - newPathArr[0] = "edgeLabel"; - } else if (pathArr[1] === "label") { - newPathArr[1] = "edgeLabel"; - } - return newPathArr; - } - return pathArr; - } - } - }; - GraphSeriesModel3.prototype.getGraph = function() { - return this.getData().graph; - }; - GraphSeriesModel3.prototype.getEdgeData = function() { - return this.getGraph().edgeData; - }; - GraphSeriesModel3.prototype.getCategoriesData = function() { - return this._categoriesData; - }; - GraphSeriesModel3.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - if (dataType === "edge") { - var nodeData = this.getData(); - var params = this.getDataParams(dataIndex, dataType); - var edge = nodeData.graph.getEdgeByIndex(dataIndex); - var sourceName = nodeData.getName(edge.node1.dataIndex); - var targetName = nodeData.getName(edge.node2.dataIndex); - var nameArr = []; - sourceName != null && nameArr.push(sourceName); - targetName != null && nameArr.push(targetName); - return createTooltipMarkup2("nameValue", { - name: nameArr.join(" > "), - value: params.value, - noValue: params.value == null - }); - } - var nodeMarkup = defaultSeriesFormatTooltip2({ - series: this, - dataIndex, - multipleSeries - }); - return nodeMarkup; - }; - GraphSeriesModel3.prototype._updateCategoriesData = function() { - var categories = map3(this.option.categories || [], function(category) { - return category.value != null ? category : extend3({ - value: 0 - }, category); - }); - var categoriesData = new SeriesData2(["value"], this); - categoriesData.initData(categories); - this._categoriesData = categoriesData; - this._categoriesModels = categoriesData.mapArray(function(idx) { - return categoriesData.getItemModel(idx); - }); - }; - GraphSeriesModel3.prototype.setZoom = function(zoom) { - this.option.zoom = zoom; - }; - GraphSeriesModel3.prototype.setCenter = function(center4) { - this.option.center = center4; - }; - GraphSeriesModel3.prototype.isAnimationEnabled = function() { - return _super.prototype.isAnimationEnabled.call(this) && !(this.get("layout") === "force" && this.get(["force", "layoutAnimation"])); - }; - GraphSeriesModel3.type = "series.graph"; - GraphSeriesModel3.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"]; - GraphSeriesModel3.defaultOption = { - // zlevel: 0, - z: 2, - coordinateSystem: "view", - // Default option for all coordinate systems - // xAxisIndex: 0, - // yAxisIndex: 0, - // polarIndex: 0, - // geoIndex: 0, - legendHoverLink: true, - layout: null, - // Configuration of circular layout - circular: { - rotateLabel: false - }, - // Configuration of force directed layout - force: { - initLayout: null, - // Node repulsion. Can be an array to represent range. - repulsion: [0, 50], - gravity: 0.1, - // Initial friction - friction: 0.6, - // Edge length. Can be an array to represent range. - edgeLength: 30, - layoutAnimation: true - }, - left: "center", - top: "center", - // right: null, - // bottom: null, - // width: '80%', - // height: '80%', - symbol: "circle", - symbolSize: 10, - edgeSymbol: ["none", "none"], - edgeSymbolSize: 10, - edgeLabel: { - position: "middle", - distance: 5 - }, - draggable: false, - roam: false, - // Default on center of graph - center: null, - zoom: 1, - // Symbol size scale ratio in roam - nodeScaleRatio: 0.6, - // cursor: null, - // categories: [], - // data: [] - // Or - // nodes: [] - // - // links: [] - // Or - // edges: [] - label: { - show: false, - formatter: "{b}" - }, - itemStyle: {}, - lineStyle: { - color: "#aaa", - width: 1, - opacity: 0.5 - }, - emphasis: { - scale: true, - label: { - show: true - } - }, - select: { - itemStyle: { - borderColor: "#212121" - } - } - }; - return GraphSeriesModel3; - }(SeriesModel2) - ); - var actionInfo3 = { - type: "graphRoam", - event: "graphRoam", - update: "none" - }; - function install$d(registers) { - registers.registerChartView(GraphView2); - registers.registerSeriesModel(GraphSeriesModel2); - registers.registerProcessor(categoryFilter2); - registers.registerVisual(categoryVisual2); - registers.registerVisual(graphEdgeVisual2); - registers.registerLayout(graphSimpleLayout2); - registers.registerLayout(registers.PRIORITY.VISUAL.POST_CHART_LAYOUT, graphCircularLayout2); - registers.registerLayout(graphForceLayout2); - registers.registerCoordinateSystem("graphView", { - dimensions: View3.dimensions, - create: createViewCoordSys2 - }); - registers.registerAction({ - type: "focusNodeAdjacency", - event: "focusNodeAdjacency", - update: "series:focusNodeAdjacency" - }, noop2); - registers.registerAction({ - type: "unfocusNodeAdjacency", - event: "unfocusNodeAdjacency", - update: "series:unfocusNodeAdjacency" - }, noop2); - registers.registerAction(actionInfo3, function(payload, ecModel, api) { - ecModel.eachComponent({ - mainType: "series", - query: payload - }, function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - var res = updateCenterAndZoom2(coordSys, payload, void 0, api); - seriesModel.setCenter && seriesModel.setCenter(res.center); - seriesModel.setZoom && seriesModel.setZoom(res.zoom); - }); - }); - } - var PointerShape2 = ( - /** @class */ - /* @__PURE__ */ function() { - function PointerShape3() { - this.angle = 0; - this.width = 10; - this.r = 10; - this.x = 0; - this.y = 0; - } - return PointerShape3; - }() - ); - var PointerPath2 = ( - /** @class */ - function(_super) { - __extends2(PointerPath3, _super); - function PointerPath3(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "pointer"; - return _this; - } - PointerPath3.prototype.getDefaultShape = function() { - return new PointerShape2(); - }; - PointerPath3.prototype.buildPath = function(ctx, shape) { - var mathCos7 = Math.cos; - var mathSin7 = Math.sin; - var r = shape.r; - var width = shape.width; - var angle = shape.angle; - var x = shape.x - mathCos7(angle) * width * (width >= r / 3 ? 1 : 2); - var y = shape.y - mathSin7(angle) * width * (width >= r / 3 ? 1 : 2); - angle = shape.angle - Math.PI / 2; - ctx.moveTo(x, y); - ctx.lineTo(shape.x + mathCos7(angle) * width, shape.y + mathSin7(angle) * width); - ctx.lineTo(shape.x + mathCos7(shape.angle) * r, shape.y + mathSin7(shape.angle) * r); - ctx.lineTo(shape.x - mathCos7(angle) * width, shape.y - mathSin7(angle) * width); - ctx.lineTo(x, y); - }; - return PointerPath3; - }(Path2) - ); - function parsePosition2(seriesModel, api) { - var center4 = seriesModel.get("center"); - var width = api.getWidth(); - var height = api.getHeight(); - var size2 = Math.min(width, height); - var cx = parsePercent$1(center4[0], api.getWidth()); - var cy = parsePercent$1(center4[1], api.getHeight()); - var r = parsePercent$1(seriesModel.get("radius"), size2 / 2); - return { - cx, - cy, - r - }; - } - function formatLabel2(value, labelFormatter) { - var label = value == null ? "" : value + ""; - if (labelFormatter) { - if (isString2(labelFormatter)) { - label = labelFormatter.replace("{value}", label); - } else if (isFunction2(labelFormatter)) { - label = labelFormatter(value); - } - } - return label; - } - var GaugeView2 = ( - /** @class */ - function(_super) { - __extends2(GaugeView3, _super); - function GaugeView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GaugeView3.type; - return _this; - } - GaugeView3.prototype.render = function(seriesModel, ecModel, api) { - this.group.removeAll(); - var colorList = seriesModel.get(["axisLine", "lineStyle", "color"]); - var posInfo = parsePosition2(seriesModel, api); - this._renderMain(seriesModel, ecModel, api, colorList, posInfo); - this._data = seriesModel.getData(); - }; - GaugeView3.prototype.dispose = function() { - }; - GaugeView3.prototype._renderMain = function(seriesModel, ecModel, api, colorList, posInfo) { - var group = this.group; - var clockwise = seriesModel.get("clockwise"); - var startAngle = -seriesModel.get("startAngle") / 180 * Math.PI; - var endAngle = -seriesModel.get("endAngle") / 180 * Math.PI; - var axisLineModel = seriesModel.getModel("axisLine"); - var roundCap = axisLineModel.get("roundCap"); - var MainPath = roundCap ? SausagePath2 : Sector2; - var showAxis = axisLineModel.get("show"); - var lineStyleModel = axisLineModel.getModel("lineStyle"); - var axisLineWidth = lineStyleModel.get("width"); - var angles = [startAngle, endAngle]; - normalizeArcAngles2(angles, !clockwise); - startAngle = angles[0]; - endAngle = angles[1]; - var angleRangeSpan = endAngle - startAngle; - var prevEndAngle = startAngle; - var sectors = []; - for (var i2 = 0; showAxis && i2 < colorList.length; i2++) { - var percent = Math.min(Math.max(colorList[i2][0], 0), 1); - endAngle = startAngle + angleRangeSpan * percent; - var sector = new MainPath({ - shape: { - startAngle: prevEndAngle, - endAngle, - cx: posInfo.cx, - cy: posInfo.cy, - clockwise, - r0: posInfo.r - axisLineWidth, - r: posInfo.r - }, - silent: true - }); - sector.setStyle({ - fill: colorList[i2][1] - }); - sector.setStyle(lineStyleModel.getLineStyle( - // Because we use sector to simulate arc - // so the properties for stroking are useless - ["color", "width"] - )); - sectors.push(sector); - prevEndAngle = endAngle; - } - sectors.reverse(); - each17(sectors, function(sector2) { - return group.add(sector2); - }); - var getColor3 = function(percent2) { - if (percent2 <= 0) { - return colorList[0][1]; - } - var i3; - for (i3 = 0; i3 < colorList.length; i3++) { - if (colorList[i3][0] >= percent2 && (i3 === 0 ? 0 : colorList[i3 - 1][0]) < percent2) { - return colorList[i3][1]; - } - } - return colorList[i3 - 1][1]; - }; - this._renderTicks(seriesModel, ecModel, api, getColor3, posInfo, startAngle, endAngle, clockwise, axisLineWidth); - this._renderTitleAndDetail(seriesModel, ecModel, api, getColor3, posInfo); - this._renderAnchor(seriesModel, posInfo); - this._renderPointer(seriesModel, ecModel, api, getColor3, posInfo, startAngle, endAngle, clockwise, axisLineWidth); - }; - GaugeView3.prototype._renderTicks = function(seriesModel, ecModel, api, getColor3, posInfo, startAngle, endAngle, clockwise, axisLineWidth) { - var group = this.group; - var cx = posInfo.cx; - var cy = posInfo.cy; - var r = posInfo.r; - var minVal = +seriesModel.get("min"); - var maxVal = +seriesModel.get("max"); - var splitLineModel = seriesModel.getModel("splitLine"); - var tickModel = seriesModel.getModel("axisTick"); - var labelModel = seriesModel.getModel("axisLabel"); - var splitNumber = seriesModel.get("splitNumber"); - var subSplitNumber = tickModel.get("splitNumber"); - var splitLineLen = parsePercent$1(splitLineModel.get("length"), r); - var tickLen = parsePercent$1(tickModel.get("length"), r); - var angle = startAngle; - var step = (endAngle - startAngle) / splitNumber; - var subStep = step / subSplitNumber; - var splitLineStyle = splitLineModel.getModel("lineStyle").getLineStyle(); - var tickLineStyle = tickModel.getModel("lineStyle").getLineStyle(); - var splitLineDistance = splitLineModel.get("distance"); - var unitX; - var unitY; - for (var i2 = 0; i2 <= splitNumber; i2++) { - unitX = Math.cos(angle); - unitY = Math.sin(angle); - if (splitLineModel.get("show")) { - var distance3 = splitLineDistance ? splitLineDistance + axisLineWidth : axisLineWidth; - var splitLine = new Line3({ - shape: { - x1: unitX * (r - distance3) + cx, - y1: unitY * (r - distance3) + cy, - x2: unitX * (r - splitLineLen - distance3) + cx, - y2: unitY * (r - splitLineLen - distance3) + cy - }, - style: splitLineStyle, - silent: true - }); - if (splitLineStyle.stroke === "auto") { - splitLine.setStyle({ - stroke: getColor3(i2 / splitNumber) - }); - } - group.add(splitLine); - } - if (labelModel.get("show")) { - var distance3 = labelModel.get("distance") + splitLineDistance; - var label = formatLabel2(round8(i2 / splitNumber * (maxVal - minVal) + minVal), labelModel.get("formatter")); - var autoColor = getColor3(i2 / splitNumber); - var textStyleX = unitX * (r - splitLineLen - distance3) + cx; - var textStyleY = unitY * (r - splitLineLen - distance3) + cy; - var rotateType = labelModel.get("rotate"); - var rotate3 = 0; - if (rotateType === "radial") { - rotate3 = -angle + 2 * Math.PI; - if (rotate3 > Math.PI / 2) { - rotate3 += Math.PI; - } - } else if (rotateType === "tangential") { - rotate3 = -angle - Math.PI / 2; - } else if (isNumber2(rotateType)) { - rotate3 = rotateType * Math.PI / 180; - } - if (rotate3 === 0) { - group.add(new ZRText2({ - style: createTextStyle3(labelModel, { - text: label, - x: textStyleX, - y: textStyleY, - verticalAlign: unitY < -0.8 ? "top" : unitY > 0.8 ? "bottom" : "middle", - align: unitX < -0.4 ? "left" : unitX > 0.4 ? "right" : "center" - }, { - inheritColor: autoColor - }), - silent: true - })); - } else { - group.add(new ZRText2({ - style: createTextStyle3(labelModel, { - text: label, - x: textStyleX, - y: textStyleY, - verticalAlign: "middle", - align: "center" - }, { - inheritColor: autoColor - }), - silent: true, - originX: textStyleX, - originY: textStyleY, - rotation: rotate3 - })); - } - } - if (tickModel.get("show") && i2 !== splitNumber) { - var distance3 = tickModel.get("distance"); - distance3 = distance3 ? distance3 + axisLineWidth : axisLineWidth; - for (var j = 0; j <= subSplitNumber; j++) { - unitX = Math.cos(angle); - unitY = Math.sin(angle); - var tickLine = new Line3({ - shape: { - x1: unitX * (r - distance3) + cx, - y1: unitY * (r - distance3) + cy, - x2: unitX * (r - tickLen - distance3) + cx, - y2: unitY * (r - tickLen - distance3) + cy - }, - silent: true, - style: tickLineStyle - }); - if (tickLineStyle.stroke === "auto") { - tickLine.setStyle({ - stroke: getColor3((i2 + j / subSplitNumber) / splitNumber) - }); - } - group.add(tickLine); - angle += subStep; - } - angle -= subStep; - } else { - angle += step; - } - } - }; - GaugeView3.prototype._renderPointer = function(seriesModel, ecModel, api, getColor3, posInfo, startAngle, endAngle, clockwise, axisLineWidth) { - var group = this.group; - var oldData = this._data; - var oldProgressData = this._progressEls; - var progressList = []; - var showPointer3 = seriesModel.get(["pointer", "show"]); - var progressModel = seriesModel.getModel("progress"); - var showProgress = progressModel.get("show"); - var data = seriesModel.getData(); - var valueDim = data.mapDimension("value"); - var minVal = +seriesModel.get("min"); - var maxVal = +seriesModel.get("max"); - var valueExtent = [minVal, maxVal]; - var angleExtent = [startAngle, endAngle]; - function createPointer(idx, angle) { - var itemModel = data.getItemModel(idx); - var pointerModel = itemModel.getModel("pointer"); - var pointerWidth = parsePercent$1(pointerModel.get("width"), posInfo.r); - var pointerLength = parsePercent$1(pointerModel.get("length"), posInfo.r); - var pointerStr = seriesModel.get(["pointer", "icon"]); - var pointerOffset = pointerModel.get("offsetCenter"); - var pointerOffsetX = parsePercent$1(pointerOffset[0], posInfo.r); - var pointerOffsetY = parsePercent$1(pointerOffset[1], posInfo.r); - var pointerKeepAspect = pointerModel.get("keepAspect"); - var pointer; - if (pointerStr) { - pointer = createSymbol3(pointerStr, pointerOffsetX - pointerWidth / 2, pointerOffsetY - pointerLength, pointerWidth, pointerLength, null, pointerKeepAspect); - } else { - pointer = new PointerPath2({ - shape: { - angle: -Math.PI / 2, - width: pointerWidth, - r: pointerLength, - x: pointerOffsetX, - y: pointerOffsetY - } - }); - } - pointer.rotation = -(angle + Math.PI / 2); - pointer.x = posInfo.cx; - pointer.y = posInfo.cy; - return pointer; - } - function createProgress(idx, endAngle2) { - var roundCap = progressModel.get("roundCap"); - var ProgressPath = roundCap ? SausagePath2 : Sector2; - var isOverlap = progressModel.get("overlap"); - var progressWidth = isOverlap ? progressModel.get("width") : axisLineWidth / data.count(); - var r0 = isOverlap ? posInfo.r - progressWidth : posInfo.r - (idx + 1) * progressWidth; - var r = isOverlap ? posInfo.r : posInfo.r - idx * progressWidth; - var progress = new ProgressPath({ - shape: { - startAngle, - endAngle: endAngle2, - cx: posInfo.cx, - cy: posInfo.cy, - clockwise, - r0, - r - } - }); - isOverlap && (progress.z2 = linearMap4(data.get(valueDim, idx), [minVal, maxVal], [100, 0], true)); - return progress; - } - if (showProgress || showPointer3) { - data.diff(oldData).add(function(idx) { - var val = data.get(valueDim, idx); - if (showPointer3) { - var pointer = createPointer(idx, startAngle); - initProps2(pointer, { - rotation: -((isNaN(+val) ? angleExtent[0] : linearMap4(val, valueExtent, angleExtent, true)) + Math.PI / 2) - }, seriesModel); - group.add(pointer); - data.setItemGraphicEl(idx, pointer); - } - if (showProgress) { - var progress = createProgress(idx, startAngle); - var isClip = progressModel.get("clip"); - initProps2(progress, { - shape: { - endAngle: linearMap4(val, valueExtent, angleExtent, isClip) - } - }, seriesModel); - group.add(progress); - setCommonECData2(seriesModel.seriesIndex, data.dataType, idx, progress); - progressList[idx] = progress; - } - }).update(function(newIdx, oldIdx) { - var val = data.get(valueDim, newIdx); - if (showPointer3) { - var previousPointer = oldData.getItemGraphicEl(oldIdx); - var previousRotate = previousPointer ? previousPointer.rotation : startAngle; - var pointer = createPointer(newIdx, previousRotate); - pointer.rotation = previousRotate; - updateProps3(pointer, { - rotation: -((isNaN(+val) ? angleExtent[0] : linearMap4(val, valueExtent, angleExtent, true)) + Math.PI / 2) - }, seriesModel); - group.add(pointer); - data.setItemGraphicEl(newIdx, pointer); - } - if (showProgress) { - var previousProgress = oldProgressData[oldIdx]; - var previousEndAngle = previousProgress ? previousProgress.shape.endAngle : startAngle; - var progress = createProgress(newIdx, previousEndAngle); - var isClip = progressModel.get("clip"); - updateProps3(progress, { - shape: { - endAngle: linearMap4(val, valueExtent, angleExtent, isClip) - } - }, seriesModel); - group.add(progress); - setCommonECData2(seriesModel.seriesIndex, data.dataType, newIdx, progress); - progressList[newIdx] = progress; - } - }).execute(); - data.each(function(idx) { - var itemModel = data.getItemModel(idx); - var emphasisModel = itemModel.getModel("emphasis"); - var focus = emphasisModel.get("focus"); - var blurScope = emphasisModel.get("blurScope"); - var emphasisDisabled = emphasisModel.get("disabled"); - if (showPointer3) { - var pointer = data.getItemGraphicEl(idx); - var symbolStyle = data.getItemVisual(idx, "style"); - var visualColor = symbolStyle.fill; - if (pointer instanceof ZRImage2) { - var pathStyle = pointer.style; - pointer.useStyle(extend3({ - image: pathStyle.image, - x: pathStyle.x, - y: pathStyle.y, - width: pathStyle.width, - height: pathStyle.height - }, symbolStyle)); - } else { - pointer.useStyle(symbolStyle); - pointer.type !== "pointer" && pointer.setColor(visualColor); - } - pointer.setStyle(itemModel.getModel(["pointer", "itemStyle"]).getItemStyle()); - if (pointer.style.fill === "auto") { - pointer.setStyle("fill", getColor3(linearMap4(data.get(valueDim, idx), valueExtent, [0, 1], true))); - } - pointer.z2EmphasisLift = 0; - setStatesStylesFromModel2(pointer, itemModel); - toggleHoverEmphasis2(pointer, focus, blurScope, emphasisDisabled); - } - if (showProgress) { - var progress = progressList[idx]; - progress.useStyle(data.getItemVisual(idx, "style")); - progress.setStyle(itemModel.getModel(["progress", "itemStyle"]).getItemStyle()); - progress.z2EmphasisLift = 0; - setStatesStylesFromModel2(progress, itemModel); - toggleHoverEmphasis2(progress, focus, blurScope, emphasisDisabled); - } - }); - this._progressEls = progressList; - } - }; - GaugeView3.prototype._renderAnchor = function(seriesModel, posInfo) { - var anchorModel = seriesModel.getModel("anchor"); - var showAnchor = anchorModel.get("show"); - if (showAnchor) { - var anchorSize = anchorModel.get("size"); - var anchorType = anchorModel.get("icon"); - var offsetCenter = anchorModel.get("offsetCenter"); - var anchorKeepAspect = anchorModel.get("keepAspect"); - var anchor = createSymbol3(anchorType, posInfo.cx - anchorSize / 2 + parsePercent$1(offsetCenter[0], posInfo.r), posInfo.cy - anchorSize / 2 + parsePercent$1(offsetCenter[1], posInfo.r), anchorSize, anchorSize, null, anchorKeepAspect); - anchor.z2 = anchorModel.get("showAbove") ? 1 : 0; - anchor.setStyle(anchorModel.getModel("itemStyle").getItemStyle()); - this.group.add(anchor); - } - }; - GaugeView3.prototype._renderTitleAndDetail = function(seriesModel, ecModel, api, getColor3, posInfo) { - var _this = this; - var data = seriesModel.getData(); - var valueDim = data.mapDimension("value"); - var minVal = +seriesModel.get("min"); - var maxVal = +seriesModel.get("max"); - var contentGroup = new Group5(); - var newTitleEls = []; - var newDetailEls = []; - var hasAnimation = seriesModel.isAnimationEnabled(); - var showPointerAbove = seriesModel.get(["pointer", "showAbove"]); - data.diff(this._data).add(function(idx) { - newTitleEls[idx] = new ZRText2({ - silent: true - }); - newDetailEls[idx] = new ZRText2({ - silent: true - }); - }).update(function(idx, oldIdx) { - newTitleEls[idx] = _this._titleEls[oldIdx]; - newDetailEls[idx] = _this._detailEls[oldIdx]; - }).execute(); - data.each(function(idx) { - var itemModel = data.getItemModel(idx); - var value = data.get(valueDim, idx); - var itemGroup = new Group5(); - var autoColor = getColor3(linearMap4(value, [minVal, maxVal], [0, 1], true)); - var itemTitleModel = itemModel.getModel("title"); - if (itemTitleModel.get("show")) { - var titleOffsetCenter = itemTitleModel.get("offsetCenter"); - var titleX = posInfo.cx + parsePercent$1(titleOffsetCenter[0], posInfo.r); - var titleY = posInfo.cy + parsePercent$1(titleOffsetCenter[1], posInfo.r); - var labelEl = newTitleEls[idx]; - labelEl.attr({ - z2: showPointerAbove ? 0 : 2, - style: createTextStyle3(itemTitleModel, { - x: titleX, - y: titleY, - text: data.getName(idx), - align: "center", - verticalAlign: "middle" - }, { - inheritColor: autoColor - }) - }); - itemGroup.add(labelEl); - } - var itemDetailModel = itemModel.getModel("detail"); - if (itemDetailModel.get("show")) { - var detailOffsetCenter = itemDetailModel.get("offsetCenter"); - var detailX = posInfo.cx + parsePercent$1(detailOffsetCenter[0], posInfo.r); - var detailY = posInfo.cy + parsePercent$1(detailOffsetCenter[1], posInfo.r); - var width = parsePercent$1(itemDetailModel.get("width"), posInfo.r); - var height = parsePercent$1(itemDetailModel.get("height"), posInfo.r); - var detailColor = seriesModel.get(["progress", "show"]) ? data.getItemVisual(idx, "style").fill : autoColor; - var labelEl = newDetailEls[idx]; - var formatter_1 = itemDetailModel.get("formatter"); - labelEl.attr({ - z2: showPointerAbove ? 0 : 2, - style: createTextStyle3(itemDetailModel, { - x: detailX, - y: detailY, - text: formatLabel2(value, formatter_1), - width: isNaN(width) ? null : width, - height: isNaN(height) ? null : height, - align: "center", - verticalAlign: "middle" - }, { - inheritColor: detailColor - }) - }); - setLabelValueAnimation2(labelEl, { - normal: itemDetailModel - }, value, function(value2) { - return formatLabel2(value2, formatter_1); - }); - hasAnimation && animateLabelValue2(labelEl, idx, data, seriesModel, { - getFormattedLabel: function(labelDataIndex, status, dataType, labelDimIndex, fmt, extendParams) { - return formatLabel2(extendParams ? extendParams.interpolatedValue : value, formatter_1); - } - }); - itemGroup.add(labelEl); - } - contentGroup.add(itemGroup); - }); - this.group.add(contentGroup); - this._titleEls = newTitleEls; - this._detailEls = newDetailEls; - }; - GaugeView3.type = "gauge"; - return GaugeView3; - }(ChartView2) - ); - var GaugeSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(GaugeSeriesModel3, _super); - function GaugeSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GaugeSeriesModel3.type; - _this.visualStyleAccessPath = "itemStyle"; - return _this; - } - GaugeSeriesModel3.prototype.getInitialData = function(option, ecModel) { - return createSeriesDataSimply2(this, ["value"]); - }; - GaugeSeriesModel3.type = "series.gauge"; - GaugeSeriesModel3.defaultOption = { - // zlevel: 0, - z: 2, - colorBy: "data", - // 默认全局居中 - center: ["50%", "50%"], - legendHoverLink: true, - radius: "75%", - startAngle: 225, - endAngle: -45, - clockwise: true, - // 最小值 - min: 0, - // 最大值 - max: 100, - // 分割段数,默认为10 - splitNumber: 10, - // 坐标轴线 - axisLine: { - // 默认显示,属性show控制显示与否 - show: true, - roundCap: false, - lineStyle: { - color: [[1, "#E6EBF8"]], - width: 10 - } - }, - // 坐标轴线 - progress: { - // 默认显示,属性show控制显示与否 - show: false, - overlap: true, - width: 10, - roundCap: false, - clip: true - }, - // 分隔线 - splitLine: { - // 默认显示,属性show控制显示与否 - show: true, - // 属性length控制线长 - length: 10, - distance: 10, - // 属性lineStyle(详见lineStyle)控制线条样式 - lineStyle: { - color: "#63677A", - width: 3, - type: "solid" - } - }, - // 坐标轴小标记 - axisTick: { - // 属性show控制显示与否,默认不显示 - show: true, - // 每份split细分多少段 - splitNumber: 5, - // 属性length控制线长 - length: 6, - distance: 10, - // 属性lineStyle控制线条样式 - lineStyle: { - color: "#63677A", - width: 1, - type: "solid" - } - }, - axisLabel: { - show: true, - distance: 15, - // formatter: null, - color: "#464646", - fontSize: 12, - rotate: 0 - }, - pointer: { - icon: null, - offsetCenter: [0, 0], - show: true, - showAbove: true, - length: "60%", - width: 6, - keepAspect: false - }, - anchor: { - show: false, - showAbove: false, - size: 6, - icon: "circle", - offsetCenter: [0, 0], - keepAspect: false, - itemStyle: { - color: "#fff", - borderWidth: 0, - borderColor: "#5470c6" - } - }, - title: { - show: true, - // x, y,单位px - offsetCenter: [0, "20%"], - // 其余属性默认使用全局文本样式,详见TEXTSTYLE - color: "#464646", - fontSize: 16, - valueAnimation: false - }, - detail: { - show: true, - backgroundColor: "rgba(0,0,0,0)", - borderWidth: 0, - borderColor: "#ccc", - width: 100, - height: null, - padding: [5, 10], - // x, y,单位px - offsetCenter: [0, "40%"], - // formatter: null, - // 其余属性默认使用全局文本样式,详见TEXTSTYLE - color: "#464646", - fontSize: 30, - fontWeight: "bold", - lineHeight: 30, - valueAnimation: false - } - }; - return GaugeSeriesModel3; - }(SeriesModel2) - ); - function install$e(registers) { - registers.registerChartView(GaugeView2); - registers.registerSeriesModel(GaugeSeriesModel2); - } - var opacityAccessPath3 = ["itemStyle", "opacity"]; - var FunnelPiece2 = ( - /** @class */ - function(_super) { - __extends2(FunnelPiece3, _super); - function FunnelPiece3(data, idx) { - var _this = _super.call(this) || this; - var polygon = _this; - var labelLine = new Polyline3(); - var text = new ZRText2(); - polygon.setTextContent(text); - _this.setTextGuideLine(labelLine); - _this.updateData(data, idx, true); - return _this; - } - FunnelPiece3.prototype.updateData = function(data, idx, firstCreate) { - var polygon = this; - var seriesModel = data.hostModel; - var itemModel = data.getItemModel(idx); - var layout6 = data.getItemLayout(idx); - var emphasisModel = itemModel.getModel("emphasis"); - var opacity = itemModel.get(opacityAccessPath3); - opacity = opacity == null ? 1 : opacity; - if (!firstCreate) { - saveOldStyle2(polygon); - } - polygon.useStyle(data.getItemVisual(idx, "style")); - polygon.style.lineJoin = "round"; - if (firstCreate) { - polygon.setShape({ - points: layout6.points - }); - polygon.style.opacity = 0; - initProps2(polygon, { - style: { - opacity - } - }, seriesModel, idx); - } else { - updateProps3(polygon, { - style: { - opacity - }, - shape: { - points: layout6.points - } - }, seriesModel, idx); - } - setStatesStylesFromModel2(polygon, itemModel); - this._updateLabel(data, idx); - toggleHoverEmphasis2(this, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - }; - FunnelPiece3.prototype._updateLabel = function(data, idx) { - var polygon = this; - var labelLine = this.getTextGuideLine(); - var labelText = polygon.getTextContent(); - var seriesModel = data.hostModel; - var itemModel = data.getItemModel(idx); - var layout6 = data.getItemLayout(idx); - var labelLayout3 = layout6.label; - var style = data.getItemVisual(idx, "style"); - var visualColor = style.fill; - setLabelStyle2( - // position will not be used in setLabelStyle - labelText, - getLabelStatesModels2(itemModel), - { - labelFetcher: data.hostModel, - labelDataIndex: idx, - defaultOpacity: style.opacity, - defaultText: data.getName(idx) - }, - { - normal: { - align: labelLayout3.textAlign, - verticalAlign: labelLayout3.verticalAlign - } - } - ); - polygon.setTextConfig({ - local: true, - inside: !!labelLayout3.inside, - insideStroke: visualColor, - // insideFill: 'auto', - outsideFill: visualColor - }); - var linePoints = labelLayout3.linePoints; - labelLine.setShape({ - points: linePoints - }); - polygon.textGuideLineConfig = { - anchor: linePoints ? new Point2(linePoints[0][0], linePoints[0][1]) : null - }; - updateProps3(labelText, { - style: { - x: labelLayout3.x, - y: labelLayout3.y - } - }, seriesModel, idx); - labelText.attr({ - rotation: labelLayout3.rotation, - originX: labelLayout3.x, - originY: labelLayout3.y, - z2: 10 - }); - setLabelLineStyle2(polygon, getLabelLineStatesModels2(itemModel), { - // Default use item visual color - stroke: visualColor - }); - }; - return FunnelPiece3; - }(Polygon2) - ); - var FunnelView2 = ( - /** @class */ - function(_super) { - __extends2(FunnelView3, _super); - function FunnelView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = FunnelView3.type; - _this.ignoreLabelLineUpdate = true; - return _this; - } - FunnelView3.prototype.render = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var oldData = this._data; - var group = this.group; - data.diff(oldData).add(function(idx) { - var funnelPiece = new FunnelPiece2(data, idx); - data.setItemGraphicEl(idx, funnelPiece); - group.add(funnelPiece); - }).update(function(newIdx, oldIdx) { - var piece = oldData.getItemGraphicEl(oldIdx); - piece.updateData(data, newIdx); - group.add(piece); - data.setItemGraphicEl(newIdx, piece); - }).remove(function(idx) { - var piece = oldData.getItemGraphicEl(idx); - removeElementWithFadeOut2(piece, seriesModel, idx); - }).execute(); - this._data = data; - }; - FunnelView3.prototype.remove = function() { - this.group.removeAll(); - this._data = null; - }; - FunnelView3.prototype.dispose = function() { - }; - FunnelView3.type = "funnel"; - return FunnelView3; - }(ChartView2) - ); - var FunnelSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(FunnelSeriesModel3, _super); - function FunnelSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = FunnelSeriesModel3.type; - return _this; - } - FunnelSeriesModel3.prototype.init = function(option) { - _super.prototype.init.apply(this, arguments); - this.legendVisualProvider = new LegendVisualProvider2(bind3(this.getData, this), bind3(this.getRawData, this)); - this._defaultLabelLine(option); - }; - FunnelSeriesModel3.prototype.getInitialData = function(option, ecModel) { - return createSeriesDataSimply2(this, { - coordDimensions: ["value"], - encodeDefaulter: curry3(makeSeriesEncodeForNameBased2, this) - }); - }; - FunnelSeriesModel3.prototype._defaultLabelLine = function(option) { - defaultEmphasis2(option, "labelLine", ["show"]); - var labelLineNormalOpt = option.labelLine; - var labelLineEmphasisOpt = option.emphasis.labelLine; - labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show; - labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show; - }; - FunnelSeriesModel3.prototype.getDataParams = function(dataIndex) { - var data = this.getData(); - var params = _super.prototype.getDataParams.call(this, dataIndex); - var valueDim = data.mapDimension("value"); - var sum3 = data.getSum(valueDim); - params.percent = !sum3 ? 0 : +(data.get(valueDim, dataIndex) / sum3 * 100).toFixed(2); - params.$vars.push("percent"); - return params; - }; - FunnelSeriesModel3.type = "series.funnel"; - FunnelSeriesModel3.defaultOption = { - // zlevel: 0, // 一级层叠 - z: 2, - legendHoverLink: true, - colorBy: "data", - left: 80, - top: 60, - right: 80, - bottom: 60, - // width: {totalWidth} - left - right, - // height: {totalHeight} - top - bottom, - // 默认取数据最小最大值 - // min: 0, - // max: 100, - minSize: "0%", - maxSize: "100%", - sort: "descending", - orient: "vertical", - gap: 0, - funnelAlign: "center", - label: { - show: true, - position: "outer" - // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 - }, - labelLine: { - show: true, - length: 20, - lineStyle: { - // color: 各异, - width: 1 - } - }, - itemStyle: { - // color: 各异, - borderColor: "#fff", - borderWidth: 1 - }, - emphasis: { - label: { - show: true - } - }, - select: { - itemStyle: { - borderColor: "#212121" - } - } - }; - return FunnelSeriesModel3; - }(SeriesModel2) - ); - function getViewRect$3(seriesModel, api) { - return getLayoutRect2(seriesModel.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }); - } - function getSortedIndices2(data, sort5) { - var valueDim = data.mapDimension("value"); - var valueArr = data.mapArray(valueDim, function(val) { - return val; - }); - var indices = []; - var isAscending = sort5 === "ascending"; - for (var i2 = 0, len3 = data.count(); i2 < len3; i2++) { - indices[i2] = i2; - } - if (isFunction2(sort5)) { - indices.sort(sort5); - } else if (sort5 !== "none") { - indices.sort(function(a, b) { - return isAscending ? valueArr[a] - valueArr[b] : valueArr[b] - valueArr[a]; - }); - } - return indices; - } - function labelLayout2(data) { - var seriesModel = data.hostModel; - var orient = seriesModel.get("orient"); - data.each(function(idx) { - var itemModel = data.getItemModel(idx); - var labelModel = itemModel.getModel("label"); - var labelPosition = labelModel.get("position"); - var labelLineModel = itemModel.getModel("labelLine"); - var layout6 = data.getItemLayout(idx); - var points5 = layout6.points; - var isLabelInside = labelPosition === "inner" || labelPosition === "inside" || labelPosition === "center" || labelPosition === "insideLeft" || labelPosition === "insideRight"; - var textAlign; - var textX; - var textY; - var linePoints; - if (isLabelInside) { - if (labelPosition === "insideLeft") { - textX = (points5[0][0] + points5[3][0]) / 2 + 5; - textY = (points5[0][1] + points5[3][1]) / 2; - textAlign = "left"; - } else if (labelPosition === "insideRight") { - textX = (points5[1][0] + points5[2][0]) / 2 - 5; - textY = (points5[1][1] + points5[2][1]) / 2; - textAlign = "right"; - } else { - textX = (points5[0][0] + points5[1][0] + points5[2][0] + points5[3][0]) / 4; - textY = (points5[0][1] + points5[1][1] + points5[2][1] + points5[3][1]) / 4; - textAlign = "center"; - } - linePoints = [[textX, textY], [textX, textY]]; - } else { - var x1 = void 0; - var y1 = void 0; - var x2 = void 0; - var y2 = void 0; - var labelLineLen = labelLineModel.get("length"); - if (true) { - if (orient === "vertical" && ["top", "bottom"].indexOf(labelPosition) > -1) { - labelPosition = "left"; - console.warn("Position error: Funnel chart on vertical orient dose not support top and bottom."); - } - if (orient === "horizontal" && ["left", "right"].indexOf(labelPosition) > -1) { - labelPosition = "bottom"; - console.warn("Position error: Funnel chart on horizontal orient dose not support left and right."); - } - } - if (labelPosition === "left") { - x1 = (points5[3][0] + points5[0][0]) / 2; - y1 = (points5[3][1] + points5[0][1]) / 2; - x2 = x1 - labelLineLen; - textX = x2 - 5; - textAlign = "right"; - } else if (labelPosition === "right") { - x1 = (points5[1][0] + points5[2][0]) / 2; - y1 = (points5[1][1] + points5[2][1]) / 2; - x2 = x1 + labelLineLen; - textX = x2 + 5; - textAlign = "left"; - } else if (labelPosition === "top") { - x1 = (points5[3][0] + points5[0][0]) / 2; - y1 = (points5[3][1] + points5[0][1]) / 2; - y2 = y1 - labelLineLen; - textY = y2 - 5; - textAlign = "center"; - } else if (labelPosition === "bottom") { - x1 = (points5[1][0] + points5[2][0]) / 2; - y1 = (points5[1][1] + points5[2][1]) / 2; - y2 = y1 + labelLineLen; - textY = y2 + 5; - textAlign = "center"; - } else if (labelPosition === "rightTop") { - x1 = orient === "horizontal" ? points5[3][0] : points5[1][0]; - y1 = orient === "horizontal" ? points5[3][1] : points5[1][1]; - if (orient === "horizontal") { - y2 = y1 - labelLineLen; - textY = y2 - 5; - textAlign = "center"; - } else { - x2 = x1 + labelLineLen; - textX = x2 + 5; - textAlign = "top"; - } - } else if (labelPosition === "rightBottom") { - x1 = points5[2][0]; - y1 = points5[2][1]; - if (orient === "horizontal") { - y2 = y1 + labelLineLen; - textY = y2 + 5; - textAlign = "center"; - } else { - x2 = x1 + labelLineLen; - textX = x2 + 5; - textAlign = "bottom"; - } - } else if (labelPosition === "leftTop") { - x1 = points5[0][0]; - y1 = orient === "horizontal" ? points5[0][1] : points5[1][1]; - if (orient === "horizontal") { - y2 = y1 - labelLineLen; - textY = y2 - 5; - textAlign = "center"; - } else { - x2 = x1 - labelLineLen; - textX = x2 - 5; - textAlign = "right"; - } - } else if (labelPosition === "leftBottom") { - x1 = orient === "horizontal" ? points5[1][0] : points5[3][0]; - y1 = orient === "horizontal" ? points5[1][1] : points5[2][1]; - if (orient === "horizontal") { - y2 = y1 + labelLineLen; - textY = y2 + 5; - textAlign = "center"; - } else { - x2 = x1 - labelLineLen; - textX = x2 - 5; - textAlign = "right"; - } - } else { - x1 = (points5[1][0] + points5[2][0]) / 2; - y1 = (points5[1][1] + points5[2][1]) / 2; - if (orient === "horizontal") { - y2 = y1 + labelLineLen; - textY = y2 + 5; - textAlign = "center"; - } else { - x2 = x1 + labelLineLen; - textX = x2 + 5; - textAlign = "left"; - } - } - if (orient === "horizontal") { - x2 = x1; - textX = x2; - } else { - y2 = y1; - textY = y2; - } - linePoints = [[x1, y1], [x2, y2]]; - } - layout6.label = { - linePoints, - x: textX, - y: textY, - verticalAlign: "middle", - textAlign, - inside: isLabelInside - }; - }); - } - function funnelLayout2(ecModel, api) { - ecModel.eachSeriesByType("funnel", function(seriesModel) { - var data = seriesModel.getData(); - var valueDim = data.mapDimension("value"); - var sort5 = seriesModel.get("sort"); - var viewRect3 = getViewRect$3(seriesModel, api); - var orient = seriesModel.get("orient"); - var viewWidth = viewRect3.width; - var viewHeight = viewRect3.height; - var indices = getSortedIndices2(data, sort5); - var x = viewRect3.x; - var y = viewRect3.y; - var sizeExtent = orient === "horizontal" ? [parsePercent$1(seriesModel.get("minSize"), viewHeight), parsePercent$1(seriesModel.get("maxSize"), viewHeight)] : [parsePercent$1(seriesModel.get("minSize"), viewWidth), parsePercent$1(seriesModel.get("maxSize"), viewWidth)]; - var dataExtent = data.getDataExtent(valueDim); - var min5 = seriesModel.get("min"); - var max5 = seriesModel.get("max"); - if (min5 == null) { - min5 = Math.min(dataExtent[0], 0); - } - if (max5 == null) { - max5 = dataExtent[1]; - } - var funnelAlign = seriesModel.get("funnelAlign"); - var gap = seriesModel.get("gap"); - var viewSize = orient === "horizontal" ? viewWidth : viewHeight; - var itemSize = (viewSize - gap * (data.count() - 1)) / data.count(); - var getLinePoints = function(idx2, offset3) { - if (orient === "horizontal") { - var val_1 = data.get(valueDim, idx2) || 0; - var itemHeight = linearMap4(val_1, [min5, max5], sizeExtent, true); - var y0 = void 0; - switch (funnelAlign) { - case "top": - y0 = y; - break; - case "center": - y0 = y + (viewHeight - itemHeight) / 2; - break; - case "bottom": - y0 = y + (viewHeight - itemHeight); - break; - } - return [[offset3, y0], [offset3, y0 + itemHeight]]; - } - var val = data.get(valueDim, idx2) || 0; - var itemWidth = linearMap4(val, [min5, max5], sizeExtent, true); - var x0; - switch (funnelAlign) { - case "left": - x0 = x; - break; - case "center": - x0 = x + (viewWidth - itemWidth) / 2; - break; - case "right": - x0 = x + viewWidth - itemWidth; - break; - } - return [[x0, offset3], [x0 + itemWidth, offset3]]; - }; - if (sort5 === "ascending") { - itemSize = -itemSize; - gap = -gap; - if (orient === "horizontal") { - x += viewWidth; - } else { - y += viewHeight; - } - indices = indices.reverse(); - } - for (var i2 = 0; i2 < indices.length; i2++) { - var idx = indices[i2]; - var nextIdx = indices[i2 + 1]; - var itemModel = data.getItemModel(idx); - if (orient === "horizontal") { - var width = itemModel.get(["itemStyle", "width"]); - if (width == null) { - width = itemSize; - } else { - width = parsePercent$1(width, viewWidth); - if (sort5 === "ascending") { - width = -width; - } - } - var start4 = getLinePoints(idx, x); - var end3 = getLinePoints(nextIdx, x + width); - x += width + gap; - data.setItemLayout(idx, { - points: start4.concat(end3.slice().reverse()) - }); - } else { - var height = itemModel.get(["itemStyle", "height"]); - if (height == null) { - height = itemSize; - } else { - height = parsePercent$1(height, viewHeight); - if (sort5 === "ascending") { - height = -height; - } - } - var start4 = getLinePoints(idx, y); - var end3 = getLinePoints(nextIdx, y + height); - y += height + gap; - data.setItemLayout(idx, { - points: start4.concat(end3.slice().reverse()) - }); - } - } - labelLayout2(data); - }); - } - function install$f(registers) { - registers.registerChartView(FunnelView2); - registers.registerSeriesModel(FunnelSeriesModel2); - registers.registerLayout(funnelLayout2); - registers.registerProcessor(dataFilter3("funnel")); - } - var DEFAULT_SMOOTH2 = 0.3; - var ParallelView3 = ( - /** @class */ - function(_super) { - __extends2(ParallelView4, _super); - function ParallelView4() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ParallelView4.type; - _this._dataGroup = new Group5(); - _this._initialized = false; - return _this; - } - ParallelView4.prototype.init = function() { - this.group.add(this._dataGroup); - }; - ParallelView4.prototype.render = function(seriesModel, ecModel, api, payload) { - this._progressiveEls = null; - var dataGroup = this._dataGroup; - var data = seriesModel.getData(); - var oldData = this._data; - var coordSys = seriesModel.coordinateSystem; - var dimensions = coordSys.dimensions; - var seriesScope = makeSeriesScope$2(seriesModel); - data.diff(oldData).add(add4).update(update).remove(remove).execute(); - function add4(newDataIndex) { - var line = addEl2(data, dataGroup, newDataIndex, dimensions, coordSys); - updateElCommon2(line, data, newDataIndex, seriesScope); - } - function update(newDataIndex, oldDataIndex) { - var line = oldData.getItemGraphicEl(oldDataIndex); - var points5 = createLinePoints2(data, newDataIndex, dimensions, coordSys); - data.setItemGraphicEl(newDataIndex, line); - updateProps3(line, { - shape: { - points: points5 - } - }, seriesModel, newDataIndex); - saveOldStyle2(line); - updateElCommon2(line, data, newDataIndex, seriesScope); - } - function remove(oldDataIndex) { - var line = oldData.getItemGraphicEl(oldDataIndex); - dataGroup.remove(line); - } - if (!this._initialized) { - this._initialized = true; - var clipPath = createGridClipShape4(coordSys, seriesModel, function() { - setTimeout(function() { - dataGroup.removeClipPath(); - }); - }); - dataGroup.setClipPath(clipPath); - } - this._data = data; - }; - ParallelView4.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) { - this._initialized = true; - this._data = null; - this._dataGroup.removeAll(); - }; - ParallelView4.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) { - var data = seriesModel.getData(); - var coordSys = seriesModel.coordinateSystem; - var dimensions = coordSys.dimensions; - var seriesScope = makeSeriesScope$2(seriesModel); - var progressiveEls = this._progressiveEls = []; - for (var dataIndex = taskParams.start; dataIndex < taskParams.end; dataIndex++) { - var line = addEl2(data, this._dataGroup, dataIndex, dimensions, coordSys); - line.incremental = true; - updateElCommon2(line, data, dataIndex, seriesScope); - progressiveEls.push(line); - } - }; - ParallelView4.prototype.remove = function() { - this._dataGroup && this._dataGroup.removeAll(); - this._data = null; - }; - ParallelView4.type = "parallel"; - return ParallelView4; - }(ChartView2) - ); - function createGridClipShape4(coordSys, seriesModel, cb) { - var parallelModel = coordSys.model; - var rect = coordSys.getRect(); - var rectEl = new Rect4({ - shape: { - x: rect.x, - y: rect.y, - width: rect.width, - height: rect.height - } - }); - var dim = parallelModel.get("layout") === "horizontal" ? "width" : "height"; - rectEl.setShape(dim, 0); - initProps2(rectEl, { - shape: { - width: rect.width, - height: rect.height - } - }, seriesModel, cb); - return rectEl; - } - function createLinePoints2(data, dataIndex, dimensions, coordSys) { - var points5 = []; - for (var i2 = 0; i2 < dimensions.length; i2++) { - var dimName = dimensions[i2]; - var value = data.get(data.mapDimension(dimName), dataIndex); - if (!isEmptyValue2(value, coordSys.getAxis(dimName).type)) { - points5.push(coordSys.dataToPoint(value, dimName)); - } - } - return points5; - } - function addEl2(data, dataGroup, dataIndex, dimensions, coordSys) { - var points5 = createLinePoints2(data, dataIndex, dimensions, coordSys); - var line = new Polyline3({ - shape: { - points: points5 - }, - // silent: true, - z2: 10 - }); - dataGroup.add(line); - data.setItemGraphicEl(dataIndex, line); - return line; - } - function makeSeriesScope$2(seriesModel) { - var smooth = seriesModel.get("smooth", true); - smooth === true && (smooth = DEFAULT_SMOOTH2); - smooth = numericToNumber2(smooth); - eqNaN2(smooth) && (smooth = 0); - return { - smooth - }; - } - function updateElCommon2(el, data, dataIndex, seriesScope) { - el.useStyle(data.getItemVisual(dataIndex, "style")); - el.style.fill = null; - el.setShape("smooth", seriesScope.smooth); - var itemModel = data.getItemModel(dataIndex); - var emphasisModel = itemModel.getModel("emphasis"); - setStatesStylesFromModel2(el, itemModel, "lineStyle"); - toggleHoverEmphasis2(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - } - function isEmptyValue2(val, axisType) { - return axisType === "category" ? val == null : val == null || isNaN(val); - } - var ParallelSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(ParallelSeriesModel3, _super); - function ParallelSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ParallelSeriesModel3.type; - _this.visualStyleAccessPath = "lineStyle"; - _this.visualDrawType = "stroke"; - return _this; - } - ParallelSeriesModel3.prototype.getInitialData = function(option, ecModel) { - return createSeriesData2(null, this, { - useEncodeDefaulter: bind3(makeDefaultEncode2, null, this) - }); - }; - ParallelSeriesModel3.prototype.getRawIndicesByActiveState = function(activeState) { - var coordSys = this.coordinateSystem; - var data = this.getData(); - var indices = []; - coordSys.eachActiveState(data, function(theActiveState, dataIndex) { - if (activeState === theActiveState) { - indices.push(data.getRawIndex(dataIndex)); - } - }); - return indices; - }; - ParallelSeriesModel3.type = "series.parallel"; - ParallelSeriesModel3.dependencies = ["parallel"]; - ParallelSeriesModel3.defaultOption = { - // zlevel: 0, - z: 2, - coordinateSystem: "parallel", - parallelIndex: 0, - label: { - show: false - }, - inactiveOpacity: 0.05, - activeOpacity: 1, - lineStyle: { - width: 1, - opacity: 0.45, - type: "solid" - }, - emphasis: { - label: { - show: false - } - }, - progressive: 500, - smooth: false, - animationEasing: "linear" - }; - return ParallelSeriesModel3; - }(SeriesModel2) - ); - function makeDefaultEncode2(seriesModel) { - var parallelModel = seriesModel.ecModel.getComponent("parallel", seriesModel.get("parallelIndex")); - if (!parallelModel) { - return; - } - var encodeDefine = {}; - each17(parallelModel.dimensions, function(axisDim) { - var dataDimIndex = convertDimNameToNumber2(axisDim); - encodeDefine[axisDim] = dataDimIndex; - }); - return encodeDefine; - } - function convertDimNameToNumber2(dimName) { - return +dimName.replace("dim", ""); - } - var opacityAccessPath$1 = ["lineStyle", "opacity"]; - var parallelVisual2 = { - seriesType: "parallel", - reset: function(seriesModel, ecModel) { - var coordSys = seriesModel.coordinateSystem; - var opacityMap = { - normal: seriesModel.get(["lineStyle", "opacity"]), - active: seriesModel.get("activeOpacity"), - inactive: seriesModel.get("inactiveOpacity") - }; - return { - progress: function(params, data) { - coordSys.eachActiveState(data, function(activeState, dataIndex) { - var opacity = opacityMap[activeState]; - if (activeState === "normal" && data.hasItemOption) { - var itemOpacity = data.getItemModel(dataIndex).get(opacityAccessPath$1, true); - itemOpacity != null && (opacity = itemOpacity); - } - var existsStyle = data.ensureUniqueItemVisual(dataIndex, "style"); - existsStyle.opacity = opacity; - }, params.start, params.end); - } - }; - } - }; - function parallelPreprocessor2(option) { - createParallelIfNeeded2(option); - mergeAxisOptionFromParallel2(option); - } - function createParallelIfNeeded2(option) { - if (option.parallel) { - return; - } - var hasParallelSeries = false; - each17(option.series, function(seriesOpt) { - if (seriesOpt && seriesOpt.type === "parallel") { - hasParallelSeries = true; - } - }); - if (hasParallelSeries) { - option.parallel = [{}]; - } - } - function mergeAxisOptionFromParallel2(option) { - var axes = normalizeToArray2(option.parallelAxis); - each17(axes, function(axisOption) { - if (!isObject5(axisOption)) { - return; - } - var parallelIndex = axisOption.parallelIndex || 0; - var parallelOption = normalizeToArray2(option.parallel)[parallelIndex]; - if (parallelOption && parallelOption.parallelAxisDefault) { - merge2(axisOption, parallelOption.parallelAxisDefault, false); - } - }); - } - var CLICK_THRESHOLD2 = 5; - var ParallelView$1 = ( - /** @class */ - function(_super) { - __extends2(ParallelView4, _super); - function ParallelView4() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ParallelView4.type; - return _this; - } - ParallelView4.prototype.render = function(parallelModel, ecModel, api) { - this._model = parallelModel; - this._api = api; - if (!this._handlers) { - this._handlers = {}; - each17(handlers3, function(handler, eventName) { - api.getZr().on(eventName, this._handlers[eventName] = bind3(handler, this)); - }, this); - } - createOrUpdate2(this, "_throttledDispatchExpand", parallelModel.get("axisExpandRate"), "fixRate"); - }; - ParallelView4.prototype.dispose = function(ecModel, api) { - clear3(this, "_throttledDispatchExpand"); - each17(this._handlers, function(handler, eventName) { - api.getZr().off(eventName, handler); - }); - this._handlers = null; - }; - ParallelView4.prototype._throttledDispatchExpand = function(opt) { - this._dispatchExpand(opt); - }; - ParallelView4.prototype._dispatchExpand = function(opt) { - opt && this._api.dispatchAction(extend3({ - type: "parallelAxisExpand" - }, opt)); - }; - ParallelView4.type = "parallel"; - return ParallelView4; - }(ComponentView2) - ); - var handlers3 = { - mousedown: function(e3) { - if (checkTrigger2(this, "click")) { - this._mouseDownPoint = [e3.offsetX, e3.offsetY]; - } - }, - mouseup: function(e3) { - var mouseDownPoint = this._mouseDownPoint; - if (checkTrigger2(this, "click") && mouseDownPoint) { - var point = [e3.offsetX, e3.offsetY]; - var dist4 = Math.pow(mouseDownPoint[0] - point[0], 2) + Math.pow(mouseDownPoint[1] - point[1], 2); - if (dist4 > CLICK_THRESHOLD2) { - return; - } - var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e3.offsetX, e3.offsetY]); - result.behavior !== "none" && this._dispatchExpand({ - axisExpandWindow: result.axisExpandWindow - }); - } - this._mouseDownPoint = null; - }, - mousemove: function(e3) { - if (this._mouseDownPoint || !checkTrigger2(this, "mousemove")) { - return; - } - var model = this._model; - var result = model.coordinateSystem.getSlidedAxisExpandWindow([e3.offsetX, e3.offsetY]); - var behavior = result.behavior; - behavior === "jump" && this._throttledDispatchExpand.debounceNextCall(model.get("axisExpandDebounce")); - this._throttledDispatchExpand(behavior === "none" ? null : { - axisExpandWindow: result.axisExpandWindow, - // Jumping uses animation, and sliding suppresses animation. - animation: behavior === "jump" ? null : { - duration: 0 - // Disable animation. - } - }); - } - }; - function checkTrigger2(view, triggerOn) { - var model = view._model; - return model.get("axisExpandable") && model.get("axisExpandTriggerOn") === triggerOn; - } - var ParallelModel2 = ( - /** @class */ - function(_super) { - __extends2(ParallelModel3, _super); - function ParallelModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ParallelModel3.type; - return _this; - } - ParallelModel3.prototype.init = function() { - _super.prototype.init.apply(this, arguments); - this.mergeOption({}); - }; - ParallelModel3.prototype.mergeOption = function(newOption) { - var thisOption = this.option; - newOption && merge2(thisOption, newOption, true); - this._initDimensions(); - }; - ParallelModel3.prototype.contains = function(model, ecModel) { - var parallelIndex = model.get("parallelIndex"); - return parallelIndex != null && ecModel.getComponent("parallel", parallelIndex) === this; - }; - ParallelModel3.prototype.setAxisExpand = function(opt) { - each17(["axisExpandable", "axisExpandCenter", "axisExpandCount", "axisExpandWidth", "axisExpandWindow"], function(name) { - if (opt.hasOwnProperty(name)) { - this.option[name] = opt[name]; - } - }, this); - }; - ParallelModel3.prototype._initDimensions = function() { - var dimensions = this.dimensions = []; - var parallelAxisIndex = this.parallelAxisIndex = []; - var axisModels = filter2(this.ecModel.queryComponents({ - mainType: "parallelAxis" - }), function(axisModel) { - return (axisModel.get("parallelIndex") || 0) === this.componentIndex; - }, this); - each17(axisModels, function(axisModel) { - dimensions.push("dim" + axisModel.get("dim")); - parallelAxisIndex.push(axisModel.componentIndex); - }); - }; - ParallelModel3.type = "parallel"; - ParallelModel3.dependencies = ["parallelAxis"]; - ParallelModel3.layoutMode = "box"; - ParallelModel3.defaultOption = { - // zlevel: 0, - z: 0, - left: 80, - top: 60, - right: 80, - bottom: 60, - // width: {totalWidth} - left - right, - // height: {totalHeight} - top - bottom, - layout: "horizontal", - // FIXME - // naming? - axisExpandable: false, - axisExpandCenter: null, - axisExpandCount: 0, - axisExpandWidth: 50, - axisExpandRate: 17, - axisExpandDebounce: 50, - // [out, in, jumpTarget]. In percentage. If use [null, 0.05], null means full. - // Do not doc to user until necessary. - axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4], - axisExpandTriggerOn: "click", - parallelAxisDefault: null - }; - return ParallelModel3; - }(ComponentModel2) - ); - var ParallelAxis2 = ( - /** @class */ - function(_super) { - __extends2(ParallelAxis3, _super); - function ParallelAxis3(dim, scale5, coordExtent, axisType, axisIndex) { - var _this = _super.call(this, dim, scale5, coordExtent) || this; - _this.type = axisType || "value"; - _this.axisIndex = axisIndex; - return _this; - } - ParallelAxis3.prototype.isHorizontal = function() { - return this.coordinateSystem.getModel().get("layout") !== "horizontal"; - }; - return ParallelAxis3; - }(Axis2) - ); - function sliderMove2(delta, handleEnds, extent4, handleIndex, minSpan, maxSpan) { - delta = delta || 0; - var extentSpan = extent4[1] - extent4[0]; - if (minSpan != null) { - minSpan = restrict3(minSpan, [0, extentSpan]); - } - if (maxSpan != null) { - maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0); - } - if (handleIndex === "all") { - var handleSpan = Math.abs(handleEnds[1] - handleEnds[0]); - handleSpan = restrict3(handleSpan, [0, extentSpan]); - minSpan = maxSpan = restrict3(handleSpan, [minSpan, maxSpan]); - handleIndex = 0; - } - handleEnds[0] = restrict3(handleEnds[0], extent4); - handleEnds[1] = restrict3(handleEnds[1], extent4); - var originalDistSign = getSpanSign2(handleEnds, handleIndex); - handleEnds[handleIndex] += delta; - var extentMinSpan = minSpan || 0; - var realExtent = extent4.slice(); - originalDistSign.sign < 0 ? realExtent[0] += extentMinSpan : realExtent[1] -= extentMinSpan; - handleEnds[handleIndex] = restrict3(handleEnds[handleIndex], realExtent); - var currDistSign; - currDistSign = getSpanSign2(handleEnds, handleIndex); - if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) { - handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan; - } - currDistSign = getSpanSign2(handleEnds, handleIndex); - if (maxSpan != null && currDistSign.span > maxSpan) { - handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan; - } - return handleEnds; - } - function getSpanSign2(handleEnds, handleIndex) { - var dist4 = handleEnds[handleIndex] - handleEnds[1 - handleIndex]; - return { - span: Math.abs(dist4), - sign: dist4 > 0 ? -1 : dist4 < 0 ? 1 : handleIndex ? -1 : 1 - }; - } - function restrict3(value, extend4) { - return Math.min(extend4[1] != null ? extend4[1] : Infinity, Math.max(extend4[0] != null ? extend4[0] : -Infinity, value)); - } - var each$5 = each17; - var mathMin$8 = Math.min; - var mathMax$8 = Math.max; - var mathFloor$1 = Math.floor; - var mathCeil$1 = Math.ceil; - var round$3 = round8; - var PI$7 = Math.PI; - var Parallel2 = ( - /** @class */ - function() { - function Parallel3(parallelModel, ecModel, api) { - this.type = "parallel"; - this._axesMap = createHashMap2(); - this._axesLayout = {}; - this.dimensions = parallelModel.dimensions; - this._model = parallelModel; - this._init(parallelModel, ecModel, api); - } - Parallel3.prototype._init = function(parallelModel, ecModel, api) { - var dimensions = parallelModel.dimensions; - var parallelAxisIndex = parallelModel.parallelAxisIndex; - each$5(dimensions, function(dim, idx) { - var axisIndex = parallelAxisIndex[idx]; - var axisModel = ecModel.getComponent("parallelAxis", axisIndex); - var axis = this._axesMap.set(dim, new ParallelAxis2(dim, createScaleByModel3(axisModel), [0, 0], axisModel.get("type"), axisIndex)); - var isCategory3 = axis.type === "category"; - axis.onBand = isCategory3 && axisModel.get("boundaryGap"); - axis.inverse = axisModel.get("inverse"); - axisModel.axis = axis; - axis.model = axisModel; - axis.coordinateSystem = axisModel.coordinateSystem = this; - }, this); - }; - Parallel3.prototype.update = function(ecModel, api) { - this._updateAxesFromSeries(this._model, ecModel); - }; - Parallel3.prototype.containPoint = function(point) { - var layoutInfo = this._makeLayoutInfo(); - var axisBase = layoutInfo.axisBase; - var layoutBase = layoutInfo.layoutBase; - var pixelDimIndex = layoutInfo.pixelDimIndex; - var pAxis = point[1 - pixelDimIndex]; - var pLayout = point[pixelDimIndex]; - return pAxis >= axisBase && pAxis <= axisBase + layoutInfo.axisLength && pLayout >= layoutBase && pLayout <= layoutBase + layoutInfo.layoutLength; - }; - Parallel3.prototype.getModel = function() { - return this._model; - }; - Parallel3.prototype._updateAxesFromSeries = function(parallelModel, ecModel) { - ecModel.eachSeries(function(seriesModel) { - if (!parallelModel.contains(seriesModel, ecModel)) { - return; - } - var data = seriesModel.getData(); - each$5(this.dimensions, function(dim) { - var axis = this._axesMap.get(dim); - axis.scale.unionExtentFromData(data, data.mapDimension(dim)); - niceScaleExtent2(axis.scale, axis.model); - }, this); - }, this); - }; - Parallel3.prototype.resize = function(parallelModel, api) { - this._rect = getLayoutRect2(parallelModel.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }); - this._layoutAxes(); - }; - Parallel3.prototype.getRect = function() { - return this._rect; - }; - Parallel3.prototype._makeLayoutInfo = function() { - var parallelModel = this._model; - var rect = this._rect; - var xy = ["x", "y"]; - var wh = ["width", "height"]; - var layout6 = parallelModel.get("layout"); - var pixelDimIndex = layout6 === "horizontal" ? 0 : 1; - var layoutLength = rect[wh[pixelDimIndex]]; - var layoutExtent = [0, layoutLength]; - var axisCount = this.dimensions.length; - var axisExpandWidth = restrict$1(parallelModel.get("axisExpandWidth"), layoutExtent); - var axisExpandCount = restrict$1(parallelModel.get("axisExpandCount") || 0, [0, axisCount]); - var axisExpandable = parallelModel.get("axisExpandable") && axisCount > 3 && axisCount > axisExpandCount && axisExpandCount > 1 && axisExpandWidth > 0 && layoutLength > 0; - var axisExpandWindow = parallelModel.get("axisExpandWindow"); - var winSize; - if (!axisExpandWindow) { - winSize = restrict$1(axisExpandWidth * (axisExpandCount - 1), layoutExtent); - var axisExpandCenter = parallelModel.get("axisExpandCenter") || mathFloor$1(axisCount / 2); - axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2]; - axisExpandWindow[1] = axisExpandWindow[0] + winSize; - } else { - winSize = restrict$1(axisExpandWindow[1] - axisExpandWindow[0], layoutExtent); - axisExpandWindow[1] = axisExpandWindow[0] + winSize; - } - var axisCollapseWidth = (layoutLength - winSize) / (axisCount - axisExpandCount); - axisCollapseWidth < 3 && (axisCollapseWidth = 0); - var winInnerIndices = [mathFloor$1(round$3(axisExpandWindow[0] / axisExpandWidth, 1)) + 1, mathCeil$1(round$3(axisExpandWindow[1] / axisExpandWidth, 1)) - 1]; - var axisExpandWindow0Pos = axisCollapseWidth / axisExpandWidth * axisExpandWindow[0]; - return { - layout: layout6, - pixelDimIndex, - layoutBase: rect[xy[pixelDimIndex]], - layoutLength, - axisBase: rect[xy[1 - pixelDimIndex]], - axisLength: rect[wh[1 - pixelDimIndex]], - axisExpandable, - axisExpandWidth, - axisCollapseWidth, - axisExpandWindow, - axisCount, - winInnerIndices, - axisExpandWindow0Pos - }; - }; - Parallel3.prototype._layoutAxes = function() { - var rect = this._rect; - var axes = this._axesMap; - var dimensions = this.dimensions; - var layoutInfo = this._makeLayoutInfo(); - var layout6 = layoutInfo.layout; - axes.each(function(axis) { - var axisExtent = [0, layoutInfo.axisLength]; - var idx = axis.inverse ? 1 : 0; - axis.setExtent(axisExtent[idx], axisExtent[1 - idx]); - }); - each$5(dimensions, function(dim, idx) { - var posInfo = (layoutInfo.axisExpandable ? layoutAxisWithExpand2 : layoutAxisWithoutExpand2)(idx, layoutInfo); - var positionTable = { - horizontal: { - x: posInfo.position, - y: layoutInfo.axisLength - }, - vertical: { - x: 0, - y: posInfo.position - } - }; - var rotationTable = { - horizontal: PI$7 / 2, - vertical: 0 - }; - var position3 = [positionTable[layout6].x + rect.x, positionTable[layout6].y + rect.y]; - var rotation = rotationTable[layout6]; - var transform2 = create$1(); - rotate2(transform2, transform2, rotation); - translate2(transform2, transform2, position3); - this._axesLayout[dim] = { - position: position3, - rotation, - transform: transform2, - axisNameAvailableWidth: posInfo.axisNameAvailableWidth, - axisLabelShow: posInfo.axisLabelShow, - nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth, - tickDirection: 1, - labelDirection: 1 - }; - }, this); - }; - Parallel3.prototype.getAxis = function(dim) { - return this._axesMap.get(dim); - }; - Parallel3.prototype.dataToPoint = function(value, dim) { - return this.axisCoordToPoint(this._axesMap.get(dim).dataToCoord(value), dim); - }; - Parallel3.prototype.eachActiveState = function(data, callback, start4, end3) { - start4 == null && (start4 = 0); - end3 == null && (end3 = data.count()); - var axesMap = this._axesMap; - var dimensions = this.dimensions; - var dataDimensions = []; - var axisModels = []; - each17(dimensions, function(axisDim) { - dataDimensions.push(data.mapDimension(axisDim)); - axisModels.push(axesMap.get(axisDim).model); - }); - var hasActiveSet = this.hasAxisBrushed(); - for (var dataIndex = start4; dataIndex < end3; dataIndex++) { - var activeState = void 0; - if (!hasActiveSet) { - activeState = "normal"; - } else { - activeState = "active"; - var values = data.getValues(dataDimensions, dataIndex); - for (var j = 0, lenj = dimensions.length; j < lenj; j++) { - var state = axisModels[j].getActiveState(values[j]); - if (state === "inactive") { - activeState = "inactive"; - break; - } - } - } - callback(activeState, dataIndex); - } - }; - Parallel3.prototype.hasAxisBrushed = function() { - var dimensions = this.dimensions; - var axesMap = this._axesMap; - var hasActiveSet = false; - for (var j = 0, lenj = dimensions.length; j < lenj; j++) { - if (axesMap.get(dimensions[j]).model.getActiveState() !== "normal") { - hasActiveSet = true; - } - } - return hasActiveSet; - }; - Parallel3.prototype.axisCoordToPoint = function(coord, dim) { - var axisLayout = this._axesLayout[dim]; - return applyTransform$1([coord, 0], axisLayout.transform); - }; - Parallel3.prototype.getAxisLayout = function(dim) { - return clone6(this._axesLayout[dim]); - }; - Parallel3.prototype.getSlidedAxisExpandWindow = function(point) { - var layoutInfo = this._makeLayoutInfo(); - var pixelDimIndex = layoutInfo.pixelDimIndex; - var axisExpandWindow = layoutInfo.axisExpandWindow.slice(); - var winSize = axisExpandWindow[1] - axisExpandWindow[0]; - var extent4 = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)]; - if (!this.containPoint(point)) { - return { - behavior: "none", - axisExpandWindow - }; - } - var pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos; - var delta; - var behavior = "slide"; - var axisCollapseWidth = layoutInfo.axisCollapseWidth; - var triggerArea = this._model.get("axisExpandSlideTriggerArea"); - var useJump = triggerArea[0] != null; - if (axisCollapseWidth) { - if (useJump && axisCollapseWidth && pointCoord < winSize * triggerArea[0]) { - behavior = "jump"; - delta = pointCoord - winSize * triggerArea[2]; - } else if (useJump && axisCollapseWidth && pointCoord > winSize * (1 - triggerArea[0])) { - behavior = "jump"; - delta = pointCoord - winSize * (1 - triggerArea[2]); - } else { - (delta = pointCoord - winSize * triggerArea[1]) >= 0 && (delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0 && (delta = 0); - } - delta *= layoutInfo.axisExpandWidth / axisCollapseWidth; - delta ? sliderMove2(delta, axisExpandWindow, extent4, "all") : behavior = "none"; - } else { - var winSize2 = axisExpandWindow[1] - axisExpandWindow[0]; - var pos = extent4[1] * pointCoord / winSize2; - axisExpandWindow = [mathMax$8(0, pos - winSize2 / 2)]; - axisExpandWindow[1] = mathMin$8(extent4[1], axisExpandWindow[0] + winSize2); - axisExpandWindow[0] = axisExpandWindow[1] - winSize2; - } - return { - axisExpandWindow, - behavior - }; - }; - return Parallel3; - }() - ); - function restrict$1(len3, extent4) { - return mathMin$8(mathMax$8(len3, extent4[0]), extent4[1]); - } - function layoutAxisWithoutExpand2(axisIndex, layoutInfo) { - var step = layoutInfo.layoutLength / (layoutInfo.axisCount - 1); - return { - position: step * axisIndex, - axisNameAvailableWidth: step, - axisLabelShow: true - }; - } - function layoutAxisWithExpand2(axisIndex, layoutInfo) { - var layoutLength = layoutInfo.layoutLength; - var axisExpandWidth = layoutInfo.axisExpandWidth; - var axisCount = layoutInfo.axisCount; - var axisCollapseWidth = layoutInfo.axisCollapseWidth; - var winInnerIndices = layoutInfo.winInnerIndices; - var position3; - var axisNameAvailableWidth = axisCollapseWidth; - var axisLabelShow = false; - var nameTruncateMaxWidth; - if (axisIndex < winInnerIndices[0]) { - position3 = axisIndex * axisCollapseWidth; - nameTruncateMaxWidth = axisCollapseWidth; - } else if (axisIndex <= winInnerIndices[1]) { - position3 = layoutInfo.axisExpandWindow0Pos + axisIndex * axisExpandWidth - layoutInfo.axisExpandWindow[0]; - axisNameAvailableWidth = axisExpandWidth; - axisLabelShow = true; - } else { - position3 = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth; - nameTruncateMaxWidth = axisCollapseWidth; - } - return { - position: position3, - axisNameAvailableWidth, - axisLabelShow, - nameTruncateMaxWidth - }; - } - function createParallelCoordSys2(ecModel, api) { - var coordSysList = []; - ecModel.eachComponent("parallel", function(parallelModel, idx) { - var coordSys = new Parallel2(parallelModel, ecModel, api); - coordSys.name = "parallel_" + idx; - coordSys.resize(parallelModel, api); - parallelModel.coordinateSystem = coordSys; - coordSys.model = parallelModel; - coordSysList.push(coordSys); - }); - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.get("coordinateSystem") === "parallel") { - var parallelModel = seriesModel.getReferringComponents("parallel", SINGLE_REFERRING2).models[0]; - seriesModel.coordinateSystem = parallelModel.coordinateSystem; - } - }); - return coordSysList; - } - var parallelCoordSysCreator2 = { - create: createParallelCoordSys2 - }; - var ParallelAxisModel2 = ( - /** @class */ - function(_super) { - __extends2(ParallelAxisModel3, _super); - function ParallelAxisModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ParallelAxisModel3.type; - _this.activeIntervals = []; - return _this; - } - ParallelAxisModel3.prototype.getAreaSelectStyle = function() { - return makeStyleMapper2([ - ["fill", "color"], - ["lineWidth", "borderWidth"], - ["stroke", "borderColor"], - ["width", "width"], - ["opacity", "opacity"] - // Option decal is in `DecalObject` but style.decal is in `PatternObject`. - // So do not transfer decal directly. - ])(this.getModel("areaSelectStyle")); - }; - ParallelAxisModel3.prototype.setActiveIntervals = function(intervals) { - var activeIntervals = this.activeIntervals = clone6(intervals); - if (activeIntervals) { - for (var i2 = activeIntervals.length - 1; i2 >= 0; i2--) { - asc4(activeIntervals[i2]); - } - } - }; - ParallelAxisModel3.prototype.getActiveState = function(value) { - var activeIntervals = this.activeIntervals; - if (!activeIntervals.length) { - return "normal"; - } - if (value == null || isNaN(+value)) { - return "inactive"; - } - if (activeIntervals.length === 1) { - var interval = activeIntervals[0]; - if (interval[0] <= value && value <= interval[1]) { - return "active"; - } - } else { - for (var i2 = 0, len3 = activeIntervals.length; i2 < len3; i2++) { - if (activeIntervals[i2][0] <= value && value <= activeIntervals[i2][1]) { - return "active"; - } - } - } - return "inactive"; - }; - return ParallelAxisModel3; - }(ComponentModel2) - ); - mixin2(ParallelAxisModel2, AxisModelCommonMixin2); - var BRUSH_PANEL_GLOBAL2 = true; - var mathMin$9 = Math.min; - var mathMax$9 = Math.max; - var mathPow$2 = Math.pow; - var COVER_Z2 = 1e4; - var UNSELECT_THRESHOLD2 = 6; - var MIN_RESIZE_LINE_WIDTH2 = 6; - var MUTEX_RESOURCE_KEY2 = "globalPan"; - var DIRECTION_MAP2 = { - w: [0, 0], - e: [0, 1], - n: [1, 0], - s: [1, 1] - }; - var CURSOR_MAP2 = { - w: "ew", - e: "ew", - n: "ns", - s: "ns", - ne: "nesw", - sw: "nesw", - nw: "nwse", - se: "nwse" - }; - var DEFAULT_BRUSH_OPT2 = { - brushStyle: { - lineWidth: 2, - stroke: "rgba(210,219,238,0.3)", - fill: "#D2DBEE" - }, - transformable: true, - brushMode: "single", - removeOnClick: false - }; - var baseUID2 = 0; - var BrushController2 = ( - /** @class */ - function(_super) { - __extends2(BrushController3, _super); - function BrushController3(zr) { - var _this = _super.call(this) || this; - _this._track = []; - _this._covers = []; - _this._handlers = {}; - if (true) { - assert2(zr); - } - _this._zr = zr; - _this.group = new Group5(); - _this._uid = "brushController_" + baseUID2++; - each17(pointerHandlers2, function(handler, eventName) { - this._handlers[eventName] = bind3(handler, this); - }, _this); - return _this; - } - BrushController3.prototype.enableBrush = function(brushOption) { - if (true) { - assert2(this._mounted); - } - this._brushType && this._doDisableBrush(); - brushOption.brushType && this._doEnableBrush(brushOption); - return this; - }; - BrushController3.prototype._doEnableBrush = function(brushOption) { - var zr = this._zr; - if (!this._enableGlobalPan) { - take2(zr, MUTEX_RESOURCE_KEY2, this._uid); - } - each17(this._handlers, function(handler, eventName) { - zr.on(eventName, handler); - }); - this._brushType = brushOption.brushType; - this._brushOption = merge2(clone6(DEFAULT_BRUSH_OPT2), brushOption, true); - }; - BrushController3.prototype._doDisableBrush = function() { - var zr = this._zr; - release2(zr, MUTEX_RESOURCE_KEY2, this._uid); - each17(this._handlers, function(handler, eventName) { - zr.off(eventName, handler); - }); - this._brushType = this._brushOption = null; - }; - BrushController3.prototype.setPanels = function(panelOpts) { - if (panelOpts && panelOpts.length) { - var panels_1 = this._panels = {}; - each17(panelOpts, function(panelOpts2) { - panels_1[panelOpts2.panelId] = clone6(panelOpts2); - }); - } else { - this._panels = null; - } - return this; - }; - BrushController3.prototype.mount = function(opt) { - opt = opt || {}; - if (true) { - this._mounted = true; - } - this._enableGlobalPan = opt.enableGlobalPan; - var thisGroup = this.group; - this._zr.add(thisGroup); - thisGroup.attr({ - x: opt.x || 0, - y: opt.y || 0, - rotation: opt.rotation || 0, - scaleX: opt.scaleX || 1, - scaleY: opt.scaleY || 1 - }); - this._transform = thisGroup.getLocalTransform(); - return this; - }; - BrushController3.prototype.updateCovers = function(coverConfigList) { - if (true) { - assert2(this._mounted); - } - coverConfigList = map3(coverConfigList, function(coverConfig) { - return merge2(clone6(DEFAULT_BRUSH_OPT2), coverConfig, true); - }); - var tmpIdPrefix = "\0-brush-index-"; - var oldCovers = this._covers; - var newCovers = this._covers = []; - var controller = this; - var creatingCover = this._creatingCover; - new DataDiffer2(oldCovers, coverConfigList, oldGetKey, getKey3).add(addOrUpdate).update(addOrUpdate).remove(remove).execute(); - return this; - function getKey3(brushOption, index) { - return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index) + "-" + brushOption.brushType; - } - function oldGetKey(cover, index) { - return getKey3(cover.__brushOption, index); - } - function addOrUpdate(newIndex, oldIndex) { - var newBrushInternal = coverConfigList[newIndex]; - if (oldIndex != null && oldCovers[oldIndex] === creatingCover) { - newCovers[newIndex] = oldCovers[oldIndex]; - } else { - var cover = newCovers[newIndex] = oldIndex != null ? (oldCovers[oldIndex].__brushOption = newBrushInternal, oldCovers[oldIndex]) : endCreating2(controller, createCover2(controller, newBrushInternal)); - updateCoverAfterCreation2(controller, cover); - } - } - function remove(oldIndex) { - if (oldCovers[oldIndex] !== creatingCover) { - controller.group.remove(oldCovers[oldIndex]); - } - } - }; - BrushController3.prototype.unmount = function() { - if (true) { - if (!this._mounted) { - return; - } - } - this.enableBrush(false); - clearCovers2(this); - this._zr.remove(this.group); - if (true) { - this._mounted = false; - } - return this; - }; - BrushController3.prototype.dispose = function() { - this.unmount(); - this.off(); - }; - return BrushController3; - }(Eventful2) - ); - function createCover2(controller, brushOption) { - var cover = coverRenderers2[brushOption.brushType].createCover(controller, brushOption); - cover.__brushOption = brushOption; - updateZ3(cover, brushOption); - controller.group.add(cover); - return cover; - } - function endCreating2(controller, creatingCover) { - var coverRenderer = getCoverRenderer2(creatingCover); - if (coverRenderer.endCreating) { - coverRenderer.endCreating(controller, creatingCover); - updateZ3(creatingCover, creatingCover.__brushOption); - } - return creatingCover; - } - function updateCoverShape2(controller, cover) { - var brushOption = cover.__brushOption; - getCoverRenderer2(cover).updateCoverShape(controller, cover, brushOption.range, brushOption); - } - function updateZ3(cover, brushOption) { - var z = brushOption.z; - z == null && (z = COVER_Z2); - cover.traverse(function(el) { - el.z = z; - el.z2 = z; - }); - } - function updateCoverAfterCreation2(controller, cover) { - getCoverRenderer2(cover).updateCommon(controller, cover); - updateCoverShape2(controller, cover); - } - function getCoverRenderer2(cover) { - return coverRenderers2[cover.__brushOption.brushType]; - } - function getPanelByPoint2(controller, e3, localCursorPoint) { - var panels = controller._panels; - if (!panels) { - return BRUSH_PANEL_GLOBAL2; - } - var panel; - var transform2 = controller._transform; - each17(panels, function(pn) { - pn.isTargetByCursor(e3, localCursorPoint, transform2) && (panel = pn); - }); - return panel; - } - function getPanelByCover2(controller, cover) { - var panels = controller._panels; - if (!panels) { - return BRUSH_PANEL_GLOBAL2; - } - var panelId = cover.__brushOption.panelId; - return panelId != null ? panels[panelId] : BRUSH_PANEL_GLOBAL2; - } - function clearCovers2(controller) { - var covers = controller._covers; - var originalLength = covers.length; - each17(covers, function(cover) { - controller.group.remove(cover); - }, controller); - covers.length = 0; - return !!originalLength; - } - function trigger$1(controller, opt) { - var areas = map3(controller._covers, function(cover) { - var brushOption = cover.__brushOption; - var range = clone6(brushOption.range); - return { - brushType: brushOption.brushType, - panelId: brushOption.panelId, - range - }; - }); - controller.trigger("brush", { - areas, - isEnd: !!opt.isEnd, - removeOnClick: !!opt.removeOnClick - }); - } - function shouldShowCover2(controller) { - var track = controller._track; - if (!track.length) { - return false; - } - var p2 = track[track.length - 1]; - var p1 = track[0]; - var dx = p2[0] - p1[0]; - var dy = p2[1] - p1[1]; - var dist4 = mathPow$2(dx * dx + dy * dy, 0.5); - return dist4 > UNSELECT_THRESHOLD2; - } - function getTrackEnds2(track) { - var tail = track.length - 1; - tail < 0 && (tail = 0); - return [track[0], track[tail]]; - } - function createBaseRectCover2(rectRangeConverter, controller, brushOption, edgeNameSequences) { - var cover = new Group5(); - cover.add(new Rect4({ - name: "main", - style: makeStyle2(brushOption), - silent: true, - draggable: true, - cursor: "move", - drift: curry3(driftRect2, rectRangeConverter, controller, cover, ["n", "s", "w", "e"]), - ondragend: curry3(trigger$1, controller, { - isEnd: true - }) - })); - each17(edgeNameSequences, function(nameSequence) { - cover.add(new Rect4({ - name: nameSequence.join(""), - style: { - opacity: 0 - }, - draggable: true, - silent: true, - invisible: true, - drift: curry3(driftRect2, rectRangeConverter, controller, cover, nameSequence), - ondragend: curry3(trigger$1, controller, { - isEnd: true - }) - })); - }); - return cover; - } - function updateBaseRect2(controller, cover, localRange, brushOption) { - var lineWidth = brushOption.brushStyle.lineWidth || 0; - var handleSize = mathMax$9(lineWidth, MIN_RESIZE_LINE_WIDTH2); - var x = localRange[0][0]; - var y = localRange[1][0]; - var xa = x - lineWidth / 2; - var ya = y - lineWidth / 2; - var x2 = localRange[0][1]; - var y2 = localRange[1][1]; - var x2a = x2 - handleSize + lineWidth / 2; - var y2a = y2 - handleSize + lineWidth / 2; - var width = x2 - x; - var height = y2 - y; - var widtha = width + lineWidth; - var heighta = height + lineWidth; - updateRectShape2(controller, cover, "main", x, y, width, height); - if (brushOption.transformable) { - updateRectShape2(controller, cover, "w", xa, ya, handleSize, heighta); - updateRectShape2(controller, cover, "e", x2a, ya, handleSize, heighta); - updateRectShape2(controller, cover, "n", xa, ya, widtha, handleSize); - updateRectShape2(controller, cover, "s", xa, y2a, widtha, handleSize); - updateRectShape2(controller, cover, "nw", xa, ya, handleSize, handleSize); - updateRectShape2(controller, cover, "ne", x2a, ya, handleSize, handleSize); - updateRectShape2(controller, cover, "sw", xa, y2a, handleSize, handleSize); - updateRectShape2(controller, cover, "se", x2a, y2a, handleSize, handleSize); - } - } - function updateCommon3(controller, cover) { - var brushOption = cover.__brushOption; - var transformable = brushOption.transformable; - var mainEl = cover.childAt(0); - mainEl.useStyle(makeStyle2(brushOption)); - mainEl.attr({ - silent: !transformable, - cursor: transformable ? "move" : "default" - }); - each17([["w"], ["e"], ["n"], ["s"], ["s", "e"], ["s", "w"], ["n", "e"], ["n", "w"]], function(nameSequence) { - var el = cover.childOfName(nameSequence.join("")); - var globalDir = nameSequence.length === 1 ? getGlobalDirection12(controller, nameSequence[0]) : getGlobalDirection22(controller, nameSequence); - el && el.attr({ - silent: !transformable, - invisible: !transformable, - cursor: transformable ? CURSOR_MAP2[globalDir] + "-resize" : null - }); - }); - } - function updateRectShape2(controller, cover, name, x, y, w, h) { - var el = cover.childOfName(name); - el && el.setShape(pointsToRect2(clipByPanel2(controller, cover, [[x, y], [x + w, y + h]]))); - } - function makeStyle2(brushOption) { - return defaults2({ - strokeNoScale: true - }, brushOption.brushStyle); - } - function formatRectRange2(x, y, x2, y2) { - var min5 = [mathMin$9(x, x2), mathMin$9(y, y2)]; - var max5 = [mathMax$9(x, x2), mathMax$9(y, y2)]; - return [ - [min5[0], max5[0]], - [min5[1], max5[1]] - // y range - ]; - } - function getTransform$1(controller) { - return getTransform3(controller.group); - } - function getGlobalDirection12(controller, localDirName) { - var map4 = { - w: "left", - e: "right", - n: "top", - s: "bottom" - }; - var inverseMap = { - left: "w", - right: "e", - top: "n", - bottom: "s" - }; - var dir4 = transformDirection2(map4[localDirName], getTransform$1(controller)); - return inverseMap[dir4]; - } - function getGlobalDirection22(controller, localDirNameSeq) { - var globalDir = [getGlobalDirection12(controller, localDirNameSeq[0]), getGlobalDirection12(controller, localDirNameSeq[1])]; - (globalDir[0] === "e" || globalDir[0] === "w") && globalDir.reverse(); - return globalDir.join(""); - } - function driftRect2(rectRangeConverter, controller, cover, dirNameSequence, dx, dy) { - var brushOption = cover.__brushOption; - var rectRange = rectRangeConverter.toRectRange(brushOption.range); - var localDelta = toLocalDelta2(controller, dx, dy); - each17(dirNameSequence, function(dirName) { - var ind = DIRECTION_MAP2[dirName]; - rectRange[ind[0]][ind[1]] += localDelta[ind[0]]; - }); - brushOption.range = rectRangeConverter.fromRectRange(formatRectRange2(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1])); - updateCoverAfterCreation2(controller, cover); - trigger$1(controller, { - isEnd: false - }); - } - function driftPolygon2(controller, cover, dx, dy) { - var range = cover.__brushOption.range; - var localDelta = toLocalDelta2(controller, dx, dy); - each17(range, function(point) { - point[0] += localDelta[0]; - point[1] += localDelta[1]; - }); - updateCoverAfterCreation2(controller, cover); - trigger$1(controller, { - isEnd: false - }); - } - function toLocalDelta2(controller, dx, dy) { - var thisGroup = controller.group; - var localD = thisGroup.transformCoordToLocal(dx, dy); - var localZero = thisGroup.transformCoordToLocal(0, 0); - return [localD[0] - localZero[0], localD[1] - localZero[1]]; - } - function clipByPanel2(controller, cover, data) { - var panel = getPanelByCover2(controller, cover); - return panel && panel !== BRUSH_PANEL_GLOBAL2 ? panel.clipPath(data, controller._transform) : clone6(data); - } - function pointsToRect2(points5) { - var xmin = mathMin$9(points5[0][0], points5[1][0]); - var ymin = mathMin$9(points5[0][1], points5[1][1]); - var xmax = mathMax$9(points5[0][0], points5[1][0]); - var ymax = mathMax$9(points5[0][1], points5[1][1]); - return { - x: xmin, - y: ymin, - width: xmax - xmin, - height: ymax - ymin - }; - } - function resetCursor2(controller, e3, localCursorPoint) { - if ( - // Check active - !controller._brushType || isOutsideZrArea2(controller, e3.offsetX, e3.offsetY) - ) { - return; - } - var zr = controller._zr; - var covers = controller._covers; - var currPanel = getPanelByPoint2(controller, e3, localCursorPoint); - if (!controller._dragging) { - for (var i2 = 0; i2 < covers.length; i2++) { - var brushOption = covers[i2].__brushOption; - if (currPanel && (currPanel === BRUSH_PANEL_GLOBAL2 || brushOption.panelId === currPanel.panelId) && coverRenderers2[brushOption.brushType].contain(covers[i2], localCursorPoint[0], localCursorPoint[1])) { - return; - } - } - } - currPanel && zr.setCursorStyle("crosshair"); - } - function preventDefault2(e3) { - var rawE = e3.event; - rawE.preventDefault && rawE.preventDefault(); - } - function mainShapeContain2(cover, x, y) { - return cover.childOfName("main").contain(x, y); - } - function updateCoverByMouse2(controller, e3, localCursorPoint, isEnd) { - var creatingCover = controller._creatingCover; - var panel = controller._creatingPanel; - var thisBrushOption = controller._brushOption; - var eventParams; - controller._track.push(localCursorPoint.slice()); - if (shouldShowCover2(controller) || creatingCover) { - if (panel && !creatingCover) { - thisBrushOption.brushMode === "single" && clearCovers2(controller); - var brushOption = clone6(thisBrushOption); - brushOption.brushType = determineBrushType2(brushOption.brushType, panel); - brushOption.panelId = panel === BRUSH_PANEL_GLOBAL2 ? null : panel.panelId; - creatingCover = controller._creatingCover = createCover2(controller, brushOption); - controller._covers.push(creatingCover); - } - if (creatingCover) { - var coverRenderer = coverRenderers2[determineBrushType2(controller._brushType, panel)]; - var coverBrushOption = creatingCover.__brushOption; - coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel2(controller, creatingCover, controller._track)); - if (isEnd) { - endCreating2(controller, creatingCover); - coverRenderer.updateCommon(controller, creatingCover); - } - updateCoverShape2(controller, creatingCover); - eventParams = { - isEnd - }; - } - } else if (isEnd && thisBrushOption.brushMode === "single" && thisBrushOption.removeOnClick) { - if (getPanelByPoint2(controller, e3, localCursorPoint) && clearCovers2(controller)) { - eventParams = { - isEnd, - removeOnClick: true - }; - } - } - return eventParams; - } - function determineBrushType2(brushType, panel) { - if (brushType === "auto") { - if (true) { - assert2(panel && panel.defaultBrushType, 'MUST have defaultBrushType when brushType is "atuo"'); - } - return panel.defaultBrushType; - } - return brushType; - } - var pointerHandlers2 = { - mousedown: function(e3) { - if (this._dragging) { - handleDragEnd2(this, e3); - } else if (!e3.target || !e3.target.draggable) { - preventDefault2(e3); - var localCursorPoint = this.group.transformCoordToLocal(e3.offsetX, e3.offsetY); - this._creatingCover = null; - var panel = this._creatingPanel = getPanelByPoint2(this, e3, localCursorPoint); - if (panel) { - this._dragging = true; - this._track = [localCursorPoint.slice()]; - } - } - }, - mousemove: function(e3) { - var x = e3.offsetX; - var y = e3.offsetY; - var localCursorPoint = this.group.transformCoordToLocal(x, y); - resetCursor2(this, e3, localCursorPoint); - if (this._dragging) { - preventDefault2(e3); - var eventParams = updateCoverByMouse2(this, e3, localCursorPoint, false); - eventParams && trigger$1(this, eventParams); - } - }, - mouseup: function(e3) { - handleDragEnd2(this, e3); - } - }; - function handleDragEnd2(controller, e3) { - if (controller._dragging) { - preventDefault2(e3); - var x = e3.offsetX; - var y = e3.offsetY; - var localCursorPoint = controller.group.transformCoordToLocal(x, y); - var eventParams = updateCoverByMouse2(controller, e3, localCursorPoint, true); - controller._dragging = false; - controller._track = []; - controller._creatingCover = null; - eventParams && trigger$1(controller, eventParams); - } - } - function isOutsideZrArea2(controller, x, y) { - var zr = controller._zr; - return x < 0 || x > zr.getWidth() || y < 0 || y > zr.getHeight(); - } - var coverRenderers2 = { - lineX: getLineRenderer2(0), - lineY: getLineRenderer2(1), - rect: { - createCover: function(controller, brushOption) { - function returnInput(range) { - return range; - } - return createBaseRectCover2({ - toRectRange: returnInput, - fromRectRange: returnInput - }, controller, brushOption, [["w"], ["e"], ["n"], ["s"], ["s", "e"], ["s", "w"], ["n", "e"], ["n", "w"]]); - }, - getCreatingRange: function(localTrack) { - var ends = getTrackEnds2(localTrack); - return formatRectRange2(ends[1][0], ends[1][1], ends[0][0], ends[0][1]); - }, - updateCoverShape: function(controller, cover, localRange, brushOption) { - updateBaseRect2(controller, cover, localRange, brushOption); - }, - updateCommon: updateCommon3, - contain: mainShapeContain2 - }, - polygon: { - createCover: function(controller, brushOption) { - var cover = new Group5(); - cover.add(new Polyline3({ - name: "main", - style: makeStyle2(brushOption), - silent: true - })); - return cover; - }, - getCreatingRange: function(localTrack) { - return localTrack; - }, - endCreating: function(controller, cover) { - cover.remove(cover.childAt(0)); - cover.add(new Polygon2({ - name: "main", - draggable: true, - drift: curry3(driftPolygon2, controller, cover), - ondragend: curry3(trigger$1, controller, { - isEnd: true - }) - })); - }, - updateCoverShape: function(controller, cover, localRange, brushOption) { - cover.childAt(0).setShape({ - points: clipByPanel2(controller, cover, localRange) - }); - }, - updateCommon: updateCommon3, - contain: mainShapeContain2 - } - }; - function getLineRenderer2(xyIndex) { - return { - createCover: function(controller, brushOption) { - return createBaseRectCover2({ - toRectRange: function(range) { - var rectRange = [range, [0, 100]]; - xyIndex && rectRange.reverse(); - return rectRange; - }, - fromRectRange: function(rectRange) { - return rectRange[xyIndex]; - } - }, controller, brushOption, [[["w"], ["e"]], [["n"], ["s"]]][xyIndex]); - }, - getCreatingRange: function(localTrack) { - var ends = getTrackEnds2(localTrack); - var min5 = mathMin$9(ends[0][xyIndex], ends[1][xyIndex]); - var max5 = mathMax$9(ends[0][xyIndex], ends[1][xyIndex]); - return [min5, max5]; - }, - updateCoverShape: function(controller, cover, localRange, brushOption) { - var otherExtent; - var panel = getPanelByCover2(controller, cover); - if (panel !== BRUSH_PANEL_GLOBAL2 && panel.getLinearBrushOtherExtent) { - otherExtent = panel.getLinearBrushOtherExtent(xyIndex); - } else { - var zr = controller._zr; - otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]]; - } - var rectRange = [localRange, otherExtent]; - xyIndex && rectRange.reverse(); - updateBaseRect2(controller, cover, rectRange, brushOption); - }, - updateCommon: updateCommon3, - contain: mainShapeContain2 - }; - } - function makeRectPanelClipPath2(rect) { - rect = normalizeRect2(rect); - return function(localPoints) { - return clipPointsByRect2(localPoints, rect); - }; - } - function makeLinearBrushOtherExtent2(rect, specifiedXYIndex) { - rect = normalizeRect2(rect); - return function(xyIndex) { - var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex; - var brushWidth = idx ? rect.width : rect.height; - var base3 = idx ? rect.x : rect.y; - return [base3, base3 + (brushWidth || 0)]; - }; - } - function makeRectIsTargetByCursor2(rect, api, targetModel) { - var boundingRect = normalizeRect2(rect); - return function(e3, localCursorPoint) { - return boundingRect.contain(localCursorPoint[0], localCursorPoint[1]) && !onIrrelevantElement2(e3, api, targetModel); - }; - } - function normalizeRect2(rect) { - return BoundingRect2.create(rect); - } - var elementList3 = ["axisLine", "axisTickLabel", "axisName"]; - var ParallelAxisView2 = ( - /** @class */ - function(_super) { - __extends2(ParallelAxisView3, _super); - function ParallelAxisView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ParallelAxisView3.type; - return _this; - } - ParallelAxisView3.prototype.init = function(ecModel, api) { - _super.prototype.init.apply(this, arguments); - (this._brushController = new BrushController2(api.getZr())).on("brush", bind3(this._onBrush, this)); - }; - ParallelAxisView3.prototype.render = function(axisModel, ecModel, api, payload) { - if (fromAxisAreaSelect2(axisModel, ecModel, payload)) { - return; - } - this.axisModel = axisModel; - this.api = api; - this.group.removeAll(); - var oldAxisGroup = this._axisGroup; - this._axisGroup = new Group5(); - this.group.add(this._axisGroup); - if (!axisModel.get("show")) { - return; - } - var coordSysModel = getCoordSysModel2(axisModel, ecModel); - var coordSys = coordSysModel.coordinateSystem; - var areaSelectStyle = axisModel.getAreaSelectStyle(); - var areaWidth = areaSelectStyle.width; - var dim = axisModel.axis.dim; - var axisLayout = coordSys.getAxisLayout(dim); - var builderOpt = extend3({ - strokeContainThreshold: areaWidth - }, axisLayout); - var axisBuilder = new AxisBuilder2(axisModel, builderOpt); - each17(elementList3, axisBuilder.add, axisBuilder); - this._axisGroup.add(axisBuilder.getGroup()); - this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api); - groupTransition2(oldAxisGroup, this._axisGroup, axisModel); - }; - ParallelAxisView3.prototype._refreshBrushController = function(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) { - var extent4 = axisModel.axis.getExtent(); - var extentLen = extent4[1] - extent4[0]; - var extra = Math.min(30, Math.abs(extentLen) * 0.1); - var rect = BoundingRect2.create({ - x: extent4[0], - y: -areaWidth / 2, - width: extentLen, - height: areaWidth - }); - rect.x -= extra; - rect.width += 2 * extra; - this._brushController.mount({ - enableGlobalPan: true, - rotation: builderOpt.rotation, - x: builderOpt.position[0], - y: builderOpt.position[1] - }).setPanels([{ - panelId: "pl", - clipPath: makeRectPanelClipPath2(rect), - isTargetByCursor: makeRectIsTargetByCursor2(rect, api, coordSysModel), - getLinearBrushOtherExtent: makeLinearBrushOtherExtent2(rect, 0) - }]).enableBrush({ - brushType: "lineX", - brushStyle: areaSelectStyle, - removeOnClick: true - }).updateCovers(getCoverInfoList2(axisModel)); - }; - ParallelAxisView3.prototype._onBrush = function(eventParam) { - var coverInfoList = eventParam.areas; - var axisModel = this.axisModel; - var axis = axisModel.axis; - var intervals = map3(coverInfoList, function(coverInfo) { - return [axis.coordToData(coverInfo.range[0], true), axis.coordToData(coverInfo.range[1], true)]; - }); - if (!axisModel.option.realtime === eventParam.isEnd || eventParam.removeOnClick) { - this.api.dispatchAction({ - type: "axisAreaSelect", - parallelAxisId: axisModel.id, - intervals - }); - } - }; - ParallelAxisView3.prototype.dispose = function() { - this._brushController.dispose(); - }; - ParallelAxisView3.type = "parallelAxis"; - return ParallelAxisView3; - }(ComponentView2) - ); - function fromAxisAreaSelect2(axisModel, ecModel, payload) { - return payload && payload.type === "axisAreaSelect" && ecModel.findComponents({ - mainType: "parallelAxis", - query: payload - })[0] === axisModel; - } - function getCoverInfoList2(axisModel) { - var axis = axisModel.axis; - return map3(axisModel.activeIntervals, function(interval) { - return { - brushType: "lineX", - panelId: "pl", - range: [axis.dataToCoord(interval[0], true), axis.dataToCoord(interval[1], true)] - }; - }); - } - function getCoordSysModel2(axisModel, ecModel) { - return ecModel.getComponent("parallel", axisModel.get("parallelIndex")); - } - var actionInfo$1 = { - type: "axisAreaSelect", - event: "axisAreaSelected" - // update: 'updateVisual' - }; - function installParallelActions2(registers) { - registers.registerAction(actionInfo$1, function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "parallelAxis", - query: payload - }, function(parallelAxisModel) { - parallelAxisModel.axis.model.setActiveIntervals(payload.intervals); - }); - }); - registers.registerAction("parallelAxisExpand", function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "parallel", - query: payload - }, function(parallelModel) { - parallelModel.setAxisExpand(payload); - }); - }); - } - var defaultAxisOption2 = { - type: "value", - areaSelectStyle: { - width: 20, - borderWidth: 1, - borderColor: "rgba(160,197,232)", - color: "rgba(160,197,232)", - opacity: 0.3 - }, - realtime: true, - z: 10 - }; - function install$g(registers) { - registers.registerComponentView(ParallelView$1); - registers.registerComponentModel(ParallelModel2); - registers.registerCoordinateSystem("parallel", parallelCoordSysCreator2); - registers.registerPreprocessor(parallelPreprocessor2); - registers.registerComponentModel(ParallelAxisModel2); - registers.registerComponentView(ParallelAxisView2); - axisModelCreator2(registers, "parallel", ParallelAxisModel2, defaultAxisOption2); - installParallelActions2(registers); - } - function install$h(registers) { - use2(install$g); - registers.registerChartView(ParallelView3); - registers.registerSeriesModel(ParallelSeriesModel2); - registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, parallelVisual2); - } - var SankeyPathShape2 = ( - /** @class */ - /* @__PURE__ */ function() { - function SankeyPathShape3() { - this.x1 = 0; - this.y1 = 0; - this.x2 = 0; - this.y2 = 0; - this.cpx1 = 0; - this.cpy1 = 0; - this.cpx2 = 0; - this.cpy2 = 0; - this.extent = 0; - } - return SankeyPathShape3; - }() - ); - var SankeyPath2 = ( - /** @class */ - function(_super) { - __extends2(SankeyPath3, _super); - function SankeyPath3(opts) { - return _super.call(this, opts) || this; - } - SankeyPath3.prototype.getDefaultShape = function() { - return new SankeyPathShape2(); - }; - SankeyPath3.prototype.buildPath = function(ctx, shape) { - var extent4 = shape.extent; - ctx.moveTo(shape.x1, shape.y1); - ctx.bezierCurveTo(shape.cpx1, shape.cpy1, shape.cpx2, shape.cpy2, shape.x2, shape.y2); - if (shape.orient === "vertical") { - ctx.lineTo(shape.x2 + extent4, shape.y2); - ctx.bezierCurveTo(shape.cpx2 + extent4, shape.cpy2, shape.cpx1 + extent4, shape.cpy1, shape.x1 + extent4, shape.y1); - } else { - ctx.lineTo(shape.x2, shape.y2 + extent4); - ctx.bezierCurveTo(shape.cpx2, shape.cpy2 + extent4, shape.cpx1, shape.cpy1 + extent4, shape.x1, shape.y1 + extent4); - } - ctx.closePath(); - }; - SankeyPath3.prototype.highlight = function() { - enterEmphasis2(this); - }; - SankeyPath3.prototype.downplay = function() { - leaveEmphasis2(this); - }; - return SankeyPath3; - }(Path2) - ); - var SankeyView2 = ( - /** @class */ - function(_super) { - __extends2(SankeyView3, _super); - function SankeyView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SankeyView3.type; - _this._focusAdjacencyDisabled = false; - return _this; - } - SankeyView3.prototype.render = function(seriesModel, ecModel, api) { - var sankeyView = this; - var graph = seriesModel.getGraph(); - var group = this.group; - var layoutInfo = seriesModel.layoutInfo; - var width = layoutInfo.width; - var height = layoutInfo.height; - var nodeData = seriesModel.getData(); - var edgeData = seriesModel.getData("edge"); - var orient = seriesModel.get("orient"); - this._model = seriesModel; - group.removeAll(); - group.x = layoutInfo.x; - group.y = layoutInfo.y; - graph.eachEdge(function(edge) { - var curve = new SankeyPath2(); - var ecData = getECData2(curve); - ecData.dataIndex = edge.dataIndex; - ecData.seriesIndex = seriesModel.seriesIndex; - ecData.dataType = "edge"; - var edgeModel = edge.getModel(); - var lineStyleModel = edgeModel.getModel("lineStyle"); - var curvature = lineStyleModel.get("curveness"); - var n1Layout = edge.node1.getLayout(); - var node1Model = edge.node1.getModel(); - var dragX1 = node1Model.get("localX"); - var dragY1 = node1Model.get("localY"); - var n2Layout = edge.node2.getLayout(); - var node2Model = edge.node2.getModel(); - var dragX2 = node2Model.get("localX"); - var dragY2 = node2Model.get("localY"); - var edgeLayout = edge.getLayout(); - var x1; - var y1; - var x2; - var y2; - var cpx1; - var cpy1; - var cpx2; - var cpy2; - curve.shape.extent = Math.max(1, edgeLayout.dy); - curve.shape.orient = orient; - if (orient === "vertical") { - x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + edgeLayout.sy; - y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + n1Layout.dy; - x2 = (dragX2 != null ? dragX2 * width : n2Layout.x) + edgeLayout.ty; - y2 = dragY2 != null ? dragY2 * height : n2Layout.y; - cpx1 = x1; - cpy1 = y1 * (1 - curvature) + y2 * curvature; - cpx2 = x2; - cpy2 = y1 * curvature + y2 * (1 - curvature); - } else { - x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + n1Layout.dx; - y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + edgeLayout.sy; - x2 = dragX2 != null ? dragX2 * width : n2Layout.x; - y2 = (dragY2 != null ? dragY2 * height : n2Layout.y) + edgeLayout.ty; - cpx1 = x1 * (1 - curvature) + x2 * curvature; - cpy1 = y1; - cpx2 = x1 * curvature + x2 * (1 - curvature); - cpy2 = y2; - } - curve.setShape({ - x1, - y1, - x2, - y2, - cpx1, - cpy1, - cpx2, - cpy2 - }); - curve.useStyle(lineStyleModel.getItemStyle()); - applyCurveStyle2(curve.style, orient, edge); - var defaultEdgeLabelText = "" + edgeModel.get("value"); - var edgeLabelStateModels = getLabelStatesModels2(edgeModel, "edgeLabel"); - setLabelStyle2(curve, edgeLabelStateModels, { - labelFetcher: { - getFormattedLabel: function(dataIndex, stateName, dataType, labelDimIndex, formatter, extendParams) { - return seriesModel.getFormattedLabel( - dataIndex, - stateName, - "edge", - labelDimIndex, - // ensure edgeLabel formatter is provided - // to prevent the inheritance from `label.formatter` of the series - retrieve32(formatter, edgeLabelStateModels.normal && edgeLabelStateModels.normal.get("formatter"), defaultEdgeLabelText), - extendParams - ); - } - }, - labelDataIndex: edge.dataIndex, - defaultText: defaultEdgeLabelText - }); - curve.setTextConfig({ - position: "inside" - }); - var emphasisModel = edgeModel.getModel("emphasis"); - setStatesStylesFromModel2(curve, edgeModel, "lineStyle", function(model) { - var style = model.getItemStyle(); - applyCurveStyle2(style, orient, edge); - return style; - }); - group.add(curve); - edgeData.setItemGraphicEl(edge.dataIndex, curve); - var focus = emphasisModel.get("focus"); - toggleHoverEmphasis2(curve, focus === "adjacency" ? edge.getAdjacentDataIndices() : focus === "trajectory" ? edge.getTrajectoryDataIndices() : focus, emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - }); - graph.eachNode(function(node) { - var layout6 = node.getLayout(); - var itemModel = node.getModel(); - var dragX = itemModel.get("localX"); - var dragY = itemModel.get("localY"); - var emphasisModel = itemModel.getModel("emphasis"); - var borderRadius = itemModel.get(["itemStyle", "borderRadius"]) || 0; - var rect = new Rect4({ - shape: { - x: dragX != null ? dragX * width : layout6.x, - y: dragY != null ? dragY * height : layout6.y, - width: layout6.dx, - height: layout6.dy, - r: borderRadius - }, - style: itemModel.getModel("itemStyle").getItemStyle(), - z2: 10 - }); - setLabelStyle2(rect, getLabelStatesModels2(itemModel), { - labelFetcher: { - getFormattedLabel: function(dataIndex, stateName) { - return seriesModel.getFormattedLabel(dataIndex, stateName, "node"); - } - }, - labelDataIndex: node.dataIndex, - defaultText: node.id - }); - rect.disableLabelAnimation = true; - rect.setStyle("fill", node.getVisual("color")); - rect.setStyle("decal", node.getVisual("style").decal); - setStatesStylesFromModel2(rect, itemModel); - group.add(rect); - nodeData.setItemGraphicEl(node.dataIndex, rect); - getECData2(rect).dataType = "node"; - var focus = emphasisModel.get("focus"); - toggleHoverEmphasis2(rect, focus === "adjacency" ? node.getAdjacentDataIndices() : focus === "trajectory" ? node.getTrajectoryDataIndices() : focus, emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - }); - nodeData.eachItemGraphicEl(function(el, dataIndex) { - var itemModel = nodeData.getItemModel(dataIndex); - if (itemModel.get("draggable")) { - el.drift = function(dx, dy) { - sankeyView._focusAdjacencyDisabled = true; - this.shape.x += dx; - this.shape.y += dy; - this.dirty(); - api.dispatchAction({ - type: "dragNode", - seriesId: seriesModel.id, - dataIndex: nodeData.getRawIndex(dataIndex), - localX: this.shape.x / width, - localY: this.shape.y / height - }); - }; - el.ondragend = function() { - sankeyView._focusAdjacencyDisabled = false; - }; - el.draggable = true; - el.cursor = "move"; - } - }); - if (!this._data && seriesModel.isAnimationEnabled()) { - group.setClipPath(createGridClipShape$1(group.getBoundingRect(), seriesModel, function() { - group.removeClipPath(); - })); - } - this._data = seriesModel.getData(); - }; - SankeyView3.prototype.dispose = function() { - }; - SankeyView3.type = "sankey"; - return SankeyView3; - }(ChartView2) - ); - function applyCurveStyle2(curveProps, orient, edge) { - switch (curveProps.fill) { - case "source": - curveProps.fill = edge.node1.getVisual("color"); - curveProps.decal = edge.node1.getVisual("style").decal; - break; - case "target": - curveProps.fill = edge.node2.getVisual("color"); - curveProps.decal = edge.node2.getVisual("style").decal; - break; - case "gradient": - var sourceColor = edge.node1.getVisual("color"); - var targetColor = edge.node2.getVisual("color"); - if (isString2(sourceColor) && isString2(targetColor)) { - curveProps.fill = new LinearGradient2(0, 0, +(orient === "horizontal"), +(orient === "vertical"), [{ - color: sourceColor, - offset: 0 - }, { - color: targetColor, - offset: 1 - }]); - } - } - } - function createGridClipShape$1(rect, seriesModel, cb) { - var rectEl = new Rect4({ - shape: { - x: rect.x - 10, - y: rect.y - 10, - width: 0, - height: rect.height + 20 - } - }); - initProps2(rectEl, { - shape: { - width: rect.width + 20 - } - }, seriesModel, cb); - return rectEl; - } - var SankeySeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(SankeySeriesModel3, _super); - function SankeySeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SankeySeriesModel3.type; - return _this; - } - SankeySeriesModel3.prototype.getInitialData = function(option, ecModel) { - var links = option.edges || option.links || []; - var nodes = option.data || option.nodes || []; - var levels = option.levels || []; - this.levelModels = []; - var levelModels = this.levelModels; - for (var i2 = 0; i2 < levels.length; i2++) { - if (levels[i2].depth != null && levels[i2].depth >= 0) { - levelModels[levels[i2].depth] = new Model2(levels[i2], this, ecModel); - } else { - if (true) { - throw new Error("levels[i].depth is mandatory and should be natural number"); - } - } - } - var graph = createGraphFromNodeEdge2(nodes, links, this, true, beforeLink); - return graph.data; - function beforeLink(nodeData, edgeData) { - nodeData.wrapMethod("getItemModel", function(model, idx) { - var seriesModel = model.parentModel; - var layout6 = seriesModel.getData().getItemLayout(idx); - if (layout6) { - var nodeDepth = layout6.depth; - var levelModel = seriesModel.levelModels[nodeDepth]; - if (levelModel) { - model.parentModel = levelModel; - } - } - return model; - }); - edgeData.wrapMethod("getItemModel", function(model, idx) { - var seriesModel = model.parentModel; - var edge = seriesModel.getGraph().getEdgeByIndex(idx); - var layout6 = edge.node1.getLayout(); - if (layout6) { - var depth = layout6.depth; - var levelModel = seriesModel.levelModels[depth]; - if (levelModel) { - model.parentModel = levelModel; - } - } - return model; - }); - } - }; - SankeySeriesModel3.prototype.setNodePosition = function(dataIndex, localPosition) { - var nodes = this.option.data || this.option.nodes; - var dataItem = nodes[dataIndex]; - dataItem.localX = localPosition[0]; - dataItem.localY = localPosition[1]; - }; - SankeySeriesModel3.prototype.getGraph = function() { - return this.getData().graph; - }; - SankeySeriesModel3.prototype.getEdgeData = function() { - return this.getGraph().edgeData; - }; - SankeySeriesModel3.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - function noValue(val) { - return isNaN(val) || val == null; - } - if (dataType === "edge") { - var params = this.getDataParams(dataIndex, dataType); - var rawDataOpt = params.data; - var edgeValue = params.value; - var edgeName = rawDataOpt.source + " -- " + rawDataOpt.target; - return createTooltipMarkup2("nameValue", { - name: edgeName, - value: edgeValue, - noValue: noValue(edgeValue) - }); - } else { - var node = this.getGraph().getNodeByIndex(dataIndex); - var value = node.getLayout().value; - var name_1 = this.getDataParams(dataIndex, dataType).data.name; - return createTooltipMarkup2("nameValue", { - name: name_1 != null ? name_1 + "" : null, - value, - noValue: noValue(value) - }); - } - }; - SankeySeriesModel3.prototype.optionUpdated = function() { - }; - SankeySeriesModel3.prototype.getDataParams = function(dataIndex, dataType) { - var params = _super.prototype.getDataParams.call(this, dataIndex, dataType); - if (params.value == null && dataType === "node") { - var node = this.getGraph().getNodeByIndex(dataIndex); - var nodeValue = node.getLayout().value; - params.value = nodeValue; - } - return params; - }; - SankeySeriesModel3.type = "series.sankey"; - SankeySeriesModel3.defaultOption = { - // zlevel: 0, - z: 2, - coordinateSystem: "view", - left: "5%", - top: "5%", - right: "20%", - bottom: "5%", - orient: "horizontal", - nodeWidth: 20, - nodeGap: 8, - draggable: true, - layoutIterations: 32, - label: { - show: true, - position: "right", - fontSize: 12 - }, - edgeLabel: { - show: false, - fontSize: 12 - }, - levels: [], - nodeAlign: "justify", - lineStyle: { - color: "#314656", - opacity: 0.2, - curveness: 0.5 - }, - emphasis: { - label: { - show: true - }, - lineStyle: { - opacity: 0.5 - } - }, - select: { - itemStyle: { - borderColor: "#212121" - } - }, - animationEasing: "linear", - animationDuration: 1e3 - }; - return SankeySeriesModel3; - }(SeriesModel2) - ); - function sankeyLayout2(ecModel, api) { - ecModel.eachSeriesByType("sankey", function(seriesModel) { - var nodeWidth = seriesModel.get("nodeWidth"); - var nodeGap = seriesModel.get("nodeGap"); - var layoutInfo = getViewRect$4(seriesModel, api); - seriesModel.layoutInfo = layoutInfo; - var width = layoutInfo.width; - var height = layoutInfo.height; - var graph = seriesModel.getGraph(); - var nodes = graph.nodes; - var edges = graph.edges; - computeNodeValues2(nodes); - var filteredNodes = filter2(nodes, function(node) { - return node.getLayout().value === 0; - }); - var iterations = filteredNodes.length !== 0 ? 0 : seriesModel.get("layoutIterations"); - var orient = seriesModel.get("orient"); - var nodeAlign = seriesModel.get("nodeAlign"); - layoutSankey2(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign); - }); - } - function getViewRect$4(seriesModel, api) { - return getLayoutRect2(seriesModel.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }); - } - function layoutSankey2(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign) { - computeNodeBreadths2(nodes, edges, nodeWidth, width, height, orient, nodeAlign); - computeNodeDepths2(nodes, edges, height, width, nodeGap, iterations, orient); - computeEdgeDepths2(nodes, orient); - } - function computeNodeValues2(nodes) { - each17(nodes, function(node) { - var value1 = sum2(node.outEdges, getEdgeValue2); - var value2 = sum2(node.inEdges, getEdgeValue2); - var nodeRawValue = node.getValue() || 0; - var value = Math.max(value1, value2, nodeRawValue); - node.setLayout({ - value - }, true); - }); - } - function computeNodeBreadths2(nodes, edges, nodeWidth, width, height, orient, nodeAlign) { - var remainEdges = []; - var indegreeArr = []; - var zeroIndegrees = []; - var nextTargetNode = []; - var x = 0; - for (var i2 = 0; i2 < edges.length; i2++) { - remainEdges[i2] = 1; - } - for (var i2 = 0; i2 < nodes.length; i2++) { - indegreeArr[i2] = nodes[i2].inEdges.length; - if (indegreeArr[i2] === 0) { - zeroIndegrees.push(nodes[i2]); - } - } - var maxNodeDepth = -1; - while (zeroIndegrees.length) { - for (var idx = 0; idx < zeroIndegrees.length; idx++) { - var node = zeroIndegrees[idx]; - var item = node.hostGraph.data.getRawDataItem(node.dataIndex); - var isItemDepth = item.depth != null && item.depth >= 0; - if (isItemDepth && item.depth > maxNodeDepth) { - maxNodeDepth = item.depth; - } - node.setLayout({ - depth: isItemDepth ? item.depth : x - }, true); - orient === "vertical" ? node.setLayout({ - dy: nodeWidth - }, true) : node.setLayout({ - dx: nodeWidth - }, true); - for (var edgeIdx = 0; edgeIdx < node.outEdges.length; edgeIdx++) { - var edge = node.outEdges[edgeIdx]; - var indexEdge = edges.indexOf(edge); - remainEdges[indexEdge] = 0; - var targetNode = edge.node2; - var nodeIndex = nodes.indexOf(targetNode); - if (--indegreeArr[nodeIndex] === 0 && nextTargetNode.indexOf(targetNode) < 0) { - nextTargetNode.push(targetNode); - } - } - } - ++x; - zeroIndegrees = nextTargetNode; - nextTargetNode = []; - } - for (var i2 = 0; i2 < remainEdges.length; i2++) { - if (remainEdges[i2] === 1) { - throw new Error("Sankey is a DAG, the original data has cycle!"); - } - } - var maxDepth = maxNodeDepth > x - 1 ? maxNodeDepth : x - 1; - if (nodeAlign && nodeAlign !== "left") { - adjustNodeWithNodeAlign2(nodes, nodeAlign, orient, maxDepth); - } - var kx = orient === "vertical" ? (height - nodeWidth) / maxDepth : (width - nodeWidth) / maxDepth; - scaleNodeBreadths2(nodes, kx, orient); - } - function isNodeDepth2(node) { - var item = node.hostGraph.data.getRawDataItem(node.dataIndex); - return item.depth != null && item.depth >= 0; - } - function adjustNodeWithNodeAlign2(nodes, nodeAlign, orient, maxDepth) { - if (nodeAlign === "right") { - var nextSourceNode = []; - var remainNodes = nodes; - var nodeHeight = 0; - while (remainNodes.length) { - for (var i2 = 0; i2 < remainNodes.length; i2++) { - var node = remainNodes[i2]; - node.setLayout({ - skNodeHeight: nodeHeight - }, true); - for (var j = 0; j < node.inEdges.length; j++) { - var edge = node.inEdges[j]; - if (nextSourceNode.indexOf(edge.node1) < 0) { - nextSourceNode.push(edge.node1); - } - } - } - remainNodes = nextSourceNode; - nextSourceNode = []; - ++nodeHeight; - } - each17(nodes, function(node2) { - if (!isNodeDepth2(node2)) { - node2.setLayout({ - depth: Math.max(0, maxDepth - node2.getLayout().skNodeHeight) - }, true); - } - }); - } else if (nodeAlign === "justify") { - moveSinksRight2(nodes, maxDepth); - } - } - function moveSinksRight2(nodes, maxDepth) { - each17(nodes, function(node) { - if (!isNodeDepth2(node) && !node.outEdges.length) { - node.setLayout({ - depth: maxDepth - }, true); - } - }); - } - function scaleNodeBreadths2(nodes, kx, orient) { - each17(nodes, function(node) { - var nodeDepth = node.getLayout().depth * kx; - orient === "vertical" ? node.setLayout({ - y: nodeDepth - }, true) : node.setLayout({ - x: nodeDepth - }, true); - }); - } - function computeNodeDepths2(nodes, edges, height, width, nodeGap, iterations, orient) { - var nodesByBreadth = prepareNodesByBreadth2(nodes, orient); - initializeNodeDepth2(nodesByBreadth, edges, height, width, nodeGap, orient); - resolveCollisions2(nodesByBreadth, nodeGap, height, width, orient); - for (var alpha = 1; iterations > 0; iterations--) { - alpha *= 0.99; - relaxRightToLeft2(nodesByBreadth, alpha, orient); - resolveCollisions2(nodesByBreadth, nodeGap, height, width, orient); - relaxLeftToRight2(nodesByBreadth, alpha, orient); - resolveCollisions2(nodesByBreadth, nodeGap, height, width, orient); - } - } - function prepareNodesByBreadth2(nodes, orient) { - var nodesByBreadth = []; - var keyAttr = orient === "vertical" ? "y" : "x"; - var groupResult = groupData2(nodes, function(node) { - return node.getLayout()[keyAttr]; - }); - groupResult.keys.sort(function(a, b) { - return a - b; - }); - each17(groupResult.keys, function(key) { - nodesByBreadth.push(groupResult.buckets.get(key)); - }); - return nodesByBreadth; - } - function initializeNodeDepth2(nodesByBreadth, edges, height, width, nodeGap, orient) { - var minKy = Infinity; - each17(nodesByBreadth, function(nodes) { - var n = nodes.length; - var sum3 = 0; - each17(nodes, function(node) { - sum3 += node.getLayout().value; - }); - var ky = orient === "vertical" ? (width - (n - 1) * nodeGap) / sum3 : (height - (n - 1) * nodeGap) / sum3; - if (ky < minKy) { - minKy = ky; - } - }); - each17(nodesByBreadth, function(nodes) { - each17(nodes, function(node, i2) { - var nodeDy = node.getLayout().value * minKy; - if (orient === "vertical") { - node.setLayout({ - x: i2 - }, true); - node.setLayout({ - dx: nodeDy - }, true); - } else { - node.setLayout({ - y: i2 - }, true); - node.setLayout({ - dy: nodeDy - }, true); - } - }); - }); - each17(edges, function(edge) { - var edgeDy = +edge.getValue() * minKy; - edge.setLayout({ - dy: edgeDy - }, true); - }); - } - function resolveCollisions2(nodesByBreadth, nodeGap, height, width, orient) { - var keyAttr = orient === "vertical" ? "x" : "y"; - each17(nodesByBreadth, function(nodes) { - nodes.sort(function(a, b) { - return a.getLayout()[keyAttr] - b.getLayout()[keyAttr]; - }); - var nodeX; - var node; - var dy; - var y0 = 0; - var n = nodes.length; - var nodeDyAttr = orient === "vertical" ? "dx" : "dy"; - for (var i2 = 0; i2 < n; i2++) { - node = nodes[i2]; - dy = y0 - node.getLayout()[keyAttr]; - if (dy > 0) { - nodeX = node.getLayout()[keyAttr] + dy; - orient === "vertical" ? node.setLayout({ - x: nodeX - }, true) : node.setLayout({ - y: nodeX - }, true); - } - y0 = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap; - } - var viewWidth = orient === "vertical" ? width : height; - dy = y0 - nodeGap - viewWidth; - if (dy > 0) { - nodeX = node.getLayout()[keyAttr] - dy; - orient === "vertical" ? node.setLayout({ - x: nodeX - }, true) : node.setLayout({ - y: nodeX - }, true); - y0 = nodeX; - for (var i2 = n - 2; i2 >= 0; --i2) { - node = nodes[i2]; - dy = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap - y0; - if (dy > 0) { - nodeX = node.getLayout()[keyAttr] - dy; - orient === "vertical" ? node.setLayout({ - x: nodeX - }, true) : node.setLayout({ - y: nodeX - }, true); - } - y0 = node.getLayout()[keyAttr]; - } - } - }); - } - function relaxRightToLeft2(nodesByBreadth, alpha, orient) { - each17(nodesByBreadth.slice().reverse(), function(nodes) { - each17(nodes, function(node) { - if (node.outEdges.length) { - var y = sum2(node.outEdges, weightedTarget2, orient) / sum2(node.outEdges, getEdgeValue2); - if (isNaN(y)) { - var len3 = node.outEdges.length; - y = len3 ? sum2(node.outEdges, centerTarget2, orient) / len3 : 0; - } - if (orient === "vertical") { - var nodeX = node.getLayout().x + (y - center$1(node, orient)) * alpha; - node.setLayout({ - x: nodeX - }, true); - } else { - var nodeY = node.getLayout().y + (y - center$1(node, orient)) * alpha; - node.setLayout({ - y: nodeY - }, true); - } - } - }); - }); - } - function weightedTarget2(edge, orient) { - return center$1(edge.node2, orient) * edge.getValue(); - } - function centerTarget2(edge, orient) { - return center$1(edge.node2, orient); - } - function weightedSource2(edge, orient) { - return center$1(edge.node1, orient) * edge.getValue(); - } - function centerSource2(edge, orient) { - return center$1(edge.node1, orient); - } - function center$1(node, orient) { - return orient === "vertical" ? node.getLayout().x + node.getLayout().dx / 2 : node.getLayout().y + node.getLayout().dy / 2; - } - function getEdgeValue2(edge) { - return edge.getValue(); - } - function sum2(array, cb, orient) { - var sum3 = 0; - var len3 = array.length; - var i2 = -1; - while (++i2 < len3) { - var value = +cb(array[i2], orient); - if (!isNaN(value)) { - sum3 += value; - } - } - return sum3; - } - function relaxLeftToRight2(nodesByBreadth, alpha, orient) { - each17(nodesByBreadth, function(nodes) { - each17(nodes, function(node) { - if (node.inEdges.length) { - var y = sum2(node.inEdges, weightedSource2, orient) / sum2(node.inEdges, getEdgeValue2); - if (isNaN(y)) { - var len3 = node.inEdges.length; - y = len3 ? sum2(node.inEdges, centerSource2, orient) / len3 : 0; - } - if (orient === "vertical") { - var nodeX = node.getLayout().x + (y - center$1(node, orient)) * alpha; - node.setLayout({ - x: nodeX - }, true); - } else { - var nodeY = node.getLayout().y + (y - center$1(node, orient)) * alpha; - node.setLayout({ - y: nodeY - }, true); - } - } - }); - }); - } - function computeEdgeDepths2(nodes, orient) { - var keyAttr = orient === "vertical" ? "x" : "y"; - each17(nodes, function(node) { - node.outEdges.sort(function(a, b) { - return a.node2.getLayout()[keyAttr] - b.node2.getLayout()[keyAttr]; - }); - node.inEdges.sort(function(a, b) { - return a.node1.getLayout()[keyAttr] - b.node1.getLayout()[keyAttr]; - }); - }); - each17(nodes, function(node) { - var sy = 0; - var ty = 0; - each17(node.outEdges, function(edge) { - edge.setLayout({ - sy - }, true); - sy += edge.getLayout().dy; - }); - each17(node.inEdges, function(edge) { - edge.setLayout({ - ty - }, true); - ty += edge.getLayout().dy; - }); - }); - } - function sankeyVisual2(ecModel) { - ecModel.eachSeriesByType("sankey", function(seriesModel) { - var graph = seriesModel.getGraph(); - var nodes = graph.nodes; - var edges = graph.edges; - if (nodes.length) { - var minValue_1 = Infinity; - var maxValue_1 = -Infinity; - each17(nodes, function(node) { - var nodeValue = node.getLayout().value; - if (nodeValue < minValue_1) { - minValue_1 = nodeValue; - } - if (nodeValue > maxValue_1) { - maxValue_1 = nodeValue; - } - }); - each17(nodes, function(node) { - var mapping = new VisualMapping2({ - type: "color", - mappingMethod: "linear", - dataExtent: [minValue_1, maxValue_1], - visual: seriesModel.get("color") - }); - var mapValueToColor = mapping.mapValueToVisual(node.getLayout().value); - var customColor = node.getModel().get(["itemStyle", "color"]); - if (customColor != null) { - node.setVisual("color", customColor); - node.setVisual("style", { - fill: customColor - }); - } else { - node.setVisual("color", mapValueToColor); - node.setVisual("style", { - fill: mapValueToColor - }); - } - }); - } - if (edges.length) { - each17(edges, function(edge) { - var edgeStyle = edge.getModel().get("lineStyle"); - edge.setVisual("style", edgeStyle); - }); - } - }); - } - function install$i(registers) { - registers.registerChartView(SankeyView2); - registers.registerSeriesModel(SankeySeriesModel2); - registers.registerLayout(sankeyLayout2); - registers.registerVisual(sankeyVisual2); - registers.registerAction({ - type: "dragNode", - event: "dragnode", - // here can only use 'update' now, other value is not support in echarts. - update: "update" - }, function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "series", - subType: "sankey", - query: payload - }, function(seriesModel) { - seriesModel.setNodePosition(payload.dataIndex, [payload.localX, payload.localY]); - }); - }); - } - var WhiskerBoxCommonMixin2 = ( - /** @class */ - function() { - function WhiskerBoxCommonMixin3() { - } - WhiskerBoxCommonMixin3.prototype._hasEncodeRule = function(key) { - var encodeRules = this.getEncode(); - return encodeRules && encodeRules.get(key) != null; - }; - WhiskerBoxCommonMixin3.prototype.getInitialData = function(option, ecModel) { - var ordinalMeta; - var xAxisModel = ecModel.getComponent("xAxis", this.get("xAxisIndex")); - var yAxisModel = ecModel.getComponent("yAxis", this.get("yAxisIndex")); - var xAxisType = xAxisModel.get("type"); - var yAxisType = yAxisModel.get("type"); - var addOrdinal; - if (xAxisType === "category") { - option.layout = "horizontal"; - ordinalMeta = xAxisModel.getOrdinalMeta(); - addOrdinal = !this._hasEncodeRule("x"); - } else if (yAxisType === "category") { - option.layout = "vertical"; - ordinalMeta = yAxisModel.getOrdinalMeta(); - addOrdinal = !this._hasEncodeRule("y"); - } else { - option.layout = option.layout || "horizontal"; - } - var coordDims = ["x", "y"]; - var baseAxisDimIndex = option.layout === "horizontal" ? 0 : 1; - var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex]; - var otherAxisDim = coordDims[1 - baseAxisDimIndex]; - var axisModels = [xAxisModel, yAxisModel]; - var baseAxisType = axisModels[baseAxisDimIndex].get("type"); - var otherAxisType = axisModels[1 - baseAxisDimIndex].get("type"); - var data = option.data; - if (data && addOrdinal) { - var newOptionData_1 = []; - each17(data, function(item, index) { - var newItem; - if (isArray3(item)) { - newItem = item.slice(); - item.unshift(index); - } else if (isArray3(item.value)) { - newItem = extend3({}, item); - newItem.value = newItem.value.slice(); - item.value.unshift(index); - } else { - newItem = item; - } - newOptionData_1.push(newItem); - }); - option.data = newOptionData_1; - } - var defaultValueDimensions = this.defaultValueDimensions; - var coordDimensions = [{ - name: baseAxisDim, - type: getDimensionTypeByAxis2(baseAxisType), - ordinalMeta, - otherDims: { - tooltip: false, - itemName: 0 - }, - dimsDef: ["base"] - }, { - name: otherAxisDim, - type: getDimensionTypeByAxis2(otherAxisType), - dimsDef: defaultValueDimensions.slice() - }]; - return createSeriesDataSimply2(this, { - coordDimensions, - dimensionsCount: defaultValueDimensions.length + 1, - encodeDefaulter: curry3(makeSeriesEncodeForAxisCoordSys2, coordDimensions, this) - }); - }; - WhiskerBoxCommonMixin3.prototype.getBaseAxis = function() { - var dim = this._baseAxisDim; - return this.ecModel.getComponent(dim + "Axis", this.get(dim + "AxisIndex")).axis; - }; - return WhiskerBoxCommonMixin3; - }() - ); - var BoxplotSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(BoxplotSeriesModel3, _super); - function BoxplotSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = BoxplotSeriesModel3.type; - _this.defaultValueDimensions = [{ - name: "min", - defaultTooltip: true - }, { - name: "Q1", - defaultTooltip: true - }, { - name: "median", - defaultTooltip: true - }, { - name: "Q3", - defaultTooltip: true - }, { - name: "max", - defaultTooltip: true - }]; - _this.visualDrawType = "stroke"; - return _this; - } - BoxplotSeriesModel3.type = "series.boxplot"; - BoxplotSeriesModel3.dependencies = ["xAxis", "yAxis", "grid"]; - BoxplotSeriesModel3.defaultOption = { - // zlevel: 0, - z: 2, - coordinateSystem: "cartesian2d", - legendHoverLink: true, - layout: null, - boxWidth: [7, 50], - itemStyle: { - color: "#fff", - borderWidth: 1 - }, - emphasis: { - scale: true, - itemStyle: { - borderWidth: 2, - shadowBlur: 5, - shadowOffsetX: 1, - shadowOffsetY: 1, - shadowColor: "rgba(0,0,0,0.2)" - } - }, - animationDuration: 800 - }; - return BoxplotSeriesModel3; - }(SeriesModel2) - ); - mixin2(BoxplotSeriesModel2, WhiskerBoxCommonMixin2, true); - var BoxplotView2 = ( - /** @class */ - function(_super) { - __extends2(BoxplotView3, _super); - function BoxplotView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = BoxplotView3.type; - return _this; - } - BoxplotView3.prototype.render = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var group = this.group; - var oldData = this._data; - if (!this._data) { - group.removeAll(); - } - var constDim = seriesModel.get("layout") === "horizontal" ? 1 : 0; - data.diff(oldData).add(function(newIdx) { - if (data.hasValue(newIdx)) { - var itemLayout = data.getItemLayout(newIdx); - var symbolEl = createNormalBox3(itemLayout, data, newIdx, constDim, true); - data.setItemGraphicEl(newIdx, symbolEl); - group.add(symbolEl); - } - }).update(function(newIdx, oldIdx) { - var symbolEl = oldData.getItemGraphicEl(oldIdx); - if (!data.hasValue(newIdx)) { - group.remove(symbolEl); - return; - } - var itemLayout = data.getItemLayout(newIdx); - if (!symbolEl) { - symbolEl = createNormalBox3(itemLayout, data, newIdx, constDim); - } else { - saveOldStyle2(symbolEl); - updateNormalBoxData2(itemLayout, symbolEl, data, newIdx); - } - group.add(symbolEl); - data.setItemGraphicEl(newIdx, symbolEl); - }).remove(function(oldIdx) { - var el = oldData.getItemGraphicEl(oldIdx); - el && group.remove(el); - }).execute(); - this._data = data; - }; - BoxplotView3.prototype.remove = function(ecModel) { - var group = this.group; - var data = this._data; - this._data = null; - data && data.eachItemGraphicEl(function(el) { - el && group.remove(el); - }); - }; - BoxplotView3.type = "boxplot"; - return BoxplotView3; - }(ChartView2) - ); - var BoxPathShape2 = ( - /** @class */ - /* @__PURE__ */ function() { - function BoxPathShape3() { - } - return BoxPathShape3; - }() - ); - var BoxPath2 = ( - /** @class */ - function(_super) { - __extends2(BoxPath3, _super); - function BoxPath3(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "boxplotBoxPath"; - return _this; - } - BoxPath3.prototype.getDefaultShape = function() { - return new BoxPathShape2(); - }; - BoxPath3.prototype.buildPath = function(ctx, shape) { - var ends = shape.points; - var i2 = 0; - ctx.moveTo(ends[i2][0], ends[i2][1]); - i2++; - for (; i2 < 4; i2++) { - ctx.lineTo(ends[i2][0], ends[i2][1]); - } - ctx.closePath(); - for (; i2 < ends.length; i2++) { - ctx.moveTo(ends[i2][0], ends[i2][1]); - i2++; - ctx.lineTo(ends[i2][0], ends[i2][1]); - } - }; - return BoxPath3; - }(Path2) - ); - function createNormalBox3(itemLayout, data, dataIndex, constDim, isInit) { - var ends = itemLayout.ends; - var el = new BoxPath2({ - shape: { - points: isInit ? transInit3(ends, constDim, itemLayout) : ends - } - }); - updateNormalBoxData2(itemLayout, el, data, dataIndex, isInit); - return el; - } - function updateNormalBoxData2(itemLayout, el, data, dataIndex, isInit) { - var seriesModel = data.hostModel; - var updateMethod = graphic[isInit ? "initProps" : "updateProps"]; - updateMethod(el, { - shape: { - points: itemLayout.ends - } - }, seriesModel, dataIndex); - el.useStyle(data.getItemVisual(dataIndex, "style")); - el.style.strokeNoScale = true; - el.z2 = 100; - var itemModel = data.getItemModel(dataIndex); - var emphasisModel = itemModel.getModel("emphasis"); - setStatesStylesFromModel2(el, itemModel); - toggleHoverEmphasis2(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - } - function transInit3(points5, dim, itemLayout) { - return map3(points5, function(point) { - point = point.slice(); - point[dim] = itemLayout.initBaseline; - return point; - }); - } - var each$6 = each17; - function boxplotLayout2(ecModel) { - var groupResult = groupSeriesByAxis2(ecModel); - each$6(groupResult, function(groupItem) { - var seriesModels = groupItem.seriesModels; - if (!seriesModels.length) { - return; - } - calculateBase2(groupItem); - each$6(seriesModels, function(seriesModel, idx) { - layoutSingleSeries2(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]); - }); - }); - } - function groupSeriesByAxis2(ecModel) { - var result = []; - var axisList = []; - ecModel.eachSeriesByType("boxplot", function(seriesModel) { - var baseAxis = seriesModel.getBaseAxis(); - var idx = indexOf2(axisList, baseAxis); - if (idx < 0) { - idx = axisList.length; - axisList[idx] = baseAxis; - result[idx] = { - axis: baseAxis, - seriesModels: [] - }; - } - result[idx].seriesModels.push(seriesModel); - }); - return result; - } - function calculateBase2(groupItem) { - var baseAxis = groupItem.axis; - var seriesModels = groupItem.seriesModels; - var seriesCount = seriesModels.length; - var boxWidthList = groupItem.boxWidthList = []; - var boxOffsetList = groupItem.boxOffsetList = []; - var boundList = []; - var bandWidth; - if (baseAxis.type === "category") { - bandWidth = baseAxis.getBandWidth(); - } else { - var maxDataCount_1 = 0; - each$6(seriesModels, function(seriesModel) { - maxDataCount_1 = Math.max(maxDataCount_1, seriesModel.getData().count()); - }); - var extent4 = baseAxis.getExtent(); - bandWidth = Math.abs(extent4[1] - extent4[0]) / maxDataCount_1; - } - each$6(seriesModels, function(seriesModel) { - var boxWidthBound = seriesModel.get("boxWidth"); - if (!isArray3(boxWidthBound)) { - boxWidthBound = [boxWidthBound, boxWidthBound]; - } - boundList.push([parsePercent$1(boxWidthBound[0], bandWidth) || 0, parsePercent$1(boxWidthBound[1], bandWidth) || 0]); - }); - var availableWidth = bandWidth * 0.8 - 2; - var boxGap = availableWidth / seriesCount * 0.3; - var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount; - var base3 = boxWidth / 2 - availableWidth / 2; - each$6(seriesModels, function(seriesModel, idx) { - boxOffsetList.push(base3); - base3 += boxGap + boxWidth; - boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1])); - }); - } - function layoutSingleSeries2(seriesModel, offset3, boxWidth) { - var coordSys = seriesModel.coordinateSystem; - var data = seriesModel.getData(); - var halfWidth = boxWidth / 2; - var cDimIdx = seriesModel.get("layout") === "horizontal" ? 0 : 1; - var vDimIdx = 1 - cDimIdx; - var coordDims = ["x", "y"]; - var cDim = data.mapDimension(coordDims[cDimIdx]); - var vDims = data.mapDimensionsAll(coordDims[vDimIdx]); - if (cDim == null || vDims.length < 5) { - return; - } - for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) { - var axisDimVal = data.get(cDim, dataIndex); - var median = getPoint(axisDimVal, vDims[2], dataIndex); - var end1 = getPoint(axisDimVal, vDims[0], dataIndex); - var end22 = getPoint(axisDimVal, vDims[1], dataIndex); - var end4 = getPoint(axisDimVal, vDims[3], dataIndex); - var end5 = getPoint(axisDimVal, vDims[4], dataIndex); - var ends = []; - addBodyEnd(ends, end22, false); - addBodyEnd(ends, end4, true); - ends.push(end1, end22, end5, end4); - layEndLine(ends, end1); - layEndLine(ends, end5); - layEndLine(ends, median); - data.setItemLayout(dataIndex, { - initBaseline: median[vDimIdx], - ends - }); - } - function getPoint(axisDimVal2, dim, dataIndex2) { - var val = data.get(dim, dataIndex2); - var p = []; - p[cDimIdx] = axisDimVal2; - p[vDimIdx] = val; - var point; - if (isNaN(axisDimVal2) || isNaN(val)) { - point = [NaN, NaN]; - } else { - point = coordSys.dataToPoint(p); - point[cDimIdx] += offset3; - } - return point; - } - function addBodyEnd(ends2, point, start4) { - var point1 = point.slice(); - var point2 = point.slice(); - point1[cDimIdx] += halfWidth; - point2[cDimIdx] -= halfWidth; - start4 ? ends2.push(point1, point2) : ends2.push(point2, point1); - } - function layEndLine(ends2, endCenter) { - var from = endCenter.slice(); - var to = endCenter.slice(); - from[cDimIdx] -= halfWidth; - to[cDimIdx] += halfWidth; - ends2.push(from, to); - } - } - function prepareBoxplotData2(rawData, opt) { - opt = opt || {}; - var boxData = []; - var outliers = []; - var boundIQR = opt.boundIQR; - var useExtreme = boundIQR === "none" || boundIQR === 0; - for (var i2 = 0; i2 < rawData.length; i2++) { - var ascList = asc4(rawData[i2].slice()); - var Q1 = quantile2(ascList, 0.25); - var Q2 = quantile2(ascList, 0.5); - var Q3 = quantile2(ascList, 0.75); - var min5 = ascList[0]; - var max5 = ascList[ascList.length - 1]; - var bound = (boundIQR == null ? 1.5 : boundIQR) * (Q3 - Q1); - var low = useExtreme ? min5 : Math.max(min5, Q1 - bound); - var high = useExtreme ? max5 : Math.min(max5, Q3 + bound); - var itemNameFormatter = opt.itemNameFormatter; - var itemName = isFunction2(itemNameFormatter) ? itemNameFormatter({ - value: i2 - }) : isString2(itemNameFormatter) ? itemNameFormatter.replace("{value}", i2 + "") : i2 + ""; - boxData.push([itemName, low, Q1, Q2, Q3, high]); - for (var j = 0; j < ascList.length; j++) { - var dataItem = ascList[j]; - if (dataItem < low || dataItem > high) { - var outlier = [itemName, dataItem]; - outliers.push(outlier); - } - } - } - return { - boxData, - outliers - }; - } - var boxplotTransform2 = { - type: "echarts:boxplot", - transform: function transform2(params) { - var upstream = params.upstream; - if (upstream.sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS2) { - var errMsg = ""; - if (true) { - errMsg = makePrintable2("source data is not applicable for this boxplot transform. Expect number[][]."); - } - throwError2(errMsg); - } - var result = prepareBoxplotData2(upstream.getRawData(), params.config); - return [{ - dimensions: ["ItemName", "Low", "Q1", "Q2", "Q3", "High"], - data: result.boxData - }, { - data: result.outliers - }]; - } - }; - function install$j(registers) { - registers.registerSeriesModel(BoxplotSeriesModel2); - registers.registerChartView(BoxplotView2); - registers.registerLayout(boxplotLayout2); - registers.registerTransform(boxplotTransform2); - } - var positiveBorderColorQuery2 = ["itemStyle", "borderColor"]; - var negativeBorderColorQuery2 = ["itemStyle", "borderColor0"]; - var dojiBorderColorQuery2 = ["itemStyle", "borderColorDoji"]; - var positiveColorQuery2 = ["itemStyle", "color"]; - var negativeColorQuery2 = ["itemStyle", "color0"]; - function getColor2(sign, model) { - return model.get(sign > 0 ? positiveColorQuery2 : negativeColorQuery2); - } - function getBorderColor2(sign, model) { - return model.get(sign === 0 ? dojiBorderColorQuery2 : sign > 0 ? positiveBorderColorQuery2 : negativeBorderColorQuery2); - } - var candlestickVisual2 = { - seriesType: "candlestick", - plan: createRenderPlanner2(), - // For legend. - performRawSeries: true, - reset: function(seriesModel, ecModel) { - if (ecModel.isSeriesFiltered(seriesModel)) { - return; - } - var isLargeRender = seriesModel.pipelineContext.large; - return !isLargeRender && { - progress: function(params, data) { - var dataIndex; - while ((dataIndex = params.next()) != null) { - var itemModel = data.getItemModel(dataIndex); - var sign = data.getItemLayout(dataIndex).sign; - var style = itemModel.getItemStyle(); - style.fill = getColor2(sign, itemModel); - style.stroke = getBorderColor2(sign, itemModel) || style.fill; - var existsStyle = data.ensureUniqueItemVisual(dataIndex, "style"); - extend3(existsStyle, style); - } - } - }; - } - }; - var SKIP_PROPS2 = ["color", "borderColor"]; - var CandlestickView2 = ( - /** @class */ - function(_super) { - __extends2(CandlestickView3, _super); - function CandlestickView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CandlestickView3.type; - return _this; - } - CandlestickView3.prototype.render = function(seriesModel, ecModel, api) { - this.group.removeClipPath(); - this._progressiveEls = null; - this._updateDrawMode(seriesModel); - this._isLargeDraw ? this._renderLarge(seriesModel) : this._renderNormal(seriesModel); - }; - CandlestickView3.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) { - this._clear(); - this._updateDrawMode(seriesModel); - }; - CandlestickView3.prototype.incrementalRender = function(params, seriesModel, ecModel, api) { - this._progressiveEls = []; - this._isLargeDraw ? this._incrementalRenderLarge(params, seriesModel) : this._incrementalRenderNormal(params, seriesModel); - }; - CandlestickView3.prototype.eachRendered = function(cb) { - traverseElements2(this._progressiveEls || this.group, cb); - }; - CandlestickView3.prototype._updateDrawMode = function(seriesModel) { - var isLargeDraw = seriesModel.pipelineContext.large; - if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) { - this._isLargeDraw = isLargeDraw; - this._clear(); - } - }; - CandlestickView3.prototype._renderNormal = function(seriesModel) { - var data = seriesModel.getData(); - var oldData = this._data; - var group = this.group; - var isSimpleBox = data.getLayout("isSimpleBox"); - var needsClip = seriesModel.get("clip", true); - var coord = seriesModel.coordinateSystem; - var clipArea = coord.getArea && coord.getArea(); - if (!this._data) { - group.removeAll(); - } - data.diff(oldData).add(function(newIdx) { - if (data.hasValue(newIdx)) { - var itemLayout = data.getItemLayout(newIdx); - if (needsClip && isNormalBoxClipped2(clipArea, itemLayout)) { - return; - } - var el = createNormalBox$1(itemLayout, newIdx, true); - initProps2(el, { - shape: { - points: itemLayout.ends - } - }, seriesModel, newIdx); - setBoxCommon2(el, data, newIdx, isSimpleBox); - group.add(el); - data.setItemGraphicEl(newIdx, el); - } - }).update(function(newIdx, oldIdx) { - var el = oldData.getItemGraphicEl(oldIdx); - if (!data.hasValue(newIdx)) { - group.remove(el); - return; - } - var itemLayout = data.getItemLayout(newIdx); - if (needsClip && isNormalBoxClipped2(clipArea, itemLayout)) { - group.remove(el); - return; - } - if (!el) { - el = createNormalBox$1(itemLayout); - } else { - updateProps3(el, { - shape: { - points: itemLayout.ends - } - }, seriesModel, newIdx); - saveOldStyle2(el); - } - setBoxCommon2(el, data, newIdx, isSimpleBox); - group.add(el); - data.setItemGraphicEl(newIdx, el); - }).remove(function(oldIdx) { - var el = oldData.getItemGraphicEl(oldIdx); - el && group.remove(el); - }).execute(); - this._data = data; - }; - CandlestickView3.prototype._renderLarge = function(seriesModel) { - this._clear(); - createLarge$1(seriesModel, this.group); - var clipPath = seriesModel.get("clip", true) ? createClipPath2(seriesModel.coordinateSystem, false, seriesModel) : null; - if (clipPath) { - this.group.setClipPath(clipPath); - } else { - this.group.removeClipPath(); - } - }; - CandlestickView3.prototype._incrementalRenderNormal = function(params, seriesModel) { - var data = seriesModel.getData(); - var isSimpleBox = data.getLayout("isSimpleBox"); - var dataIndex; - while ((dataIndex = params.next()) != null) { - var itemLayout = data.getItemLayout(dataIndex); - var el = createNormalBox$1(itemLayout); - setBoxCommon2(el, data, dataIndex, isSimpleBox); - el.incremental = true; - this.group.add(el); - this._progressiveEls.push(el); - } - }; - CandlestickView3.prototype._incrementalRenderLarge = function(params, seriesModel) { - createLarge$1(seriesModel, this.group, this._progressiveEls, true); - }; - CandlestickView3.prototype.remove = function(ecModel) { - this._clear(); - }; - CandlestickView3.prototype._clear = function() { - this.group.removeAll(); - this._data = null; - }; - CandlestickView3.type = "candlestick"; - return CandlestickView3; - }(ChartView2) - ); - var NormalBoxPathShape2 = ( - /** @class */ - /* @__PURE__ */ function() { - function NormalBoxPathShape3() { - } - return NormalBoxPathShape3; - }() - ); - var NormalBoxPath2 = ( - /** @class */ - function(_super) { - __extends2(NormalBoxPath3, _super); - function NormalBoxPath3(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "normalCandlestickBox"; - return _this; - } - NormalBoxPath3.prototype.getDefaultShape = function() { - return new NormalBoxPathShape2(); - }; - NormalBoxPath3.prototype.buildPath = function(ctx, shape) { - var ends = shape.points; - if (this.__simpleBox) { - ctx.moveTo(ends[4][0], ends[4][1]); - ctx.lineTo(ends[6][0], ends[6][1]); - } else { - ctx.moveTo(ends[0][0], ends[0][1]); - ctx.lineTo(ends[1][0], ends[1][1]); - ctx.lineTo(ends[2][0], ends[2][1]); - ctx.lineTo(ends[3][0], ends[3][1]); - ctx.closePath(); - ctx.moveTo(ends[4][0], ends[4][1]); - ctx.lineTo(ends[5][0], ends[5][1]); - ctx.moveTo(ends[6][0], ends[6][1]); - ctx.lineTo(ends[7][0], ends[7][1]); - } - }; - return NormalBoxPath3; - }(Path2) - ); - function createNormalBox$1(itemLayout, dataIndex, isInit) { - var ends = itemLayout.ends; - return new NormalBoxPath2({ - shape: { - points: isInit ? transInit$1(ends, itemLayout) : ends - }, - z2: 100 - }); - } - function isNormalBoxClipped2(clipArea, itemLayout) { - var clipped = true; - for (var i2 = 0; i2 < itemLayout.ends.length; i2++) { - if (clipArea.contain(itemLayout.ends[i2][0], itemLayout.ends[i2][1])) { - clipped = false; - break; - } - } - return clipped; - } - function setBoxCommon2(el, data, dataIndex, isSimpleBox) { - var itemModel = data.getItemModel(dataIndex); - el.useStyle(data.getItemVisual(dataIndex, "style")); - el.style.strokeNoScale = true; - el.__simpleBox = isSimpleBox; - setStatesStylesFromModel2(el, itemModel); - var sign = data.getItemLayout(dataIndex).sign; - each17(el.states, function(state, stateName) { - var stateModel = itemModel.getModel(stateName); - var color2 = getColor2(sign, stateModel); - var borderColor = getBorderColor2(sign, stateModel) || color2; - var stateStyle = state.style || (state.style = {}); - color2 && (stateStyle.fill = color2); - borderColor && (stateStyle.stroke = borderColor); - }); - var emphasisModel = itemModel.getModel("emphasis"); - toggleHoverEmphasis2(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - } - function transInit$1(points5, itemLayout) { - return map3(points5, function(point) { - point = point.slice(); - point[1] = itemLayout.initBaseline; - return point; - }); - } - var LargeBoxPathShape2 = ( - /** @class */ - /* @__PURE__ */ function() { - function LargeBoxPathShape3() { - } - return LargeBoxPathShape3; - }() - ); - var LargeBoxPath2 = ( - /** @class */ - function(_super) { - __extends2(LargeBoxPath3, _super); - function LargeBoxPath3(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "largeCandlestickBox"; - return _this; - } - LargeBoxPath3.prototype.getDefaultShape = function() { - return new LargeBoxPathShape2(); - }; - LargeBoxPath3.prototype.buildPath = function(ctx, shape) { - var points5 = shape.points; - for (var i2 = 0; i2 < points5.length; ) { - if (this.__sign === points5[i2++]) { - var x = points5[i2++]; - ctx.moveTo(x, points5[i2++]); - ctx.lineTo(x, points5[i2++]); - } else { - i2 += 3; - } - } - }; - return LargeBoxPath3; - }(Path2) - ); - function createLarge$1(seriesModel, group, progressiveEls, incremental) { - var data = seriesModel.getData(); - var largePoints = data.getLayout("largePoints"); - var elP = new LargeBoxPath2({ - shape: { - points: largePoints - }, - __sign: 1, - ignoreCoarsePointer: true - }); - group.add(elP); - var elN = new LargeBoxPath2({ - shape: { - points: largePoints - }, - __sign: -1, - ignoreCoarsePointer: true - }); - group.add(elN); - var elDoji = new LargeBoxPath2({ - shape: { - points: largePoints - }, - __sign: 0, - ignoreCoarsePointer: true - }); - group.add(elDoji); - setLargeStyle2(1, elP, seriesModel); - setLargeStyle2(-1, elN, seriesModel); - setLargeStyle2(0, elDoji, seriesModel); - if (incremental) { - elP.incremental = true; - elN.incremental = true; - } - if (progressiveEls) { - progressiveEls.push(elP, elN); - } - } - function setLargeStyle2(sign, el, seriesModel, data) { - var borderColor = getBorderColor2(sign, seriesModel) || getColor2(sign, seriesModel); - var itemStyle = seriesModel.getModel("itemStyle").getItemStyle(SKIP_PROPS2); - el.useStyle(itemStyle); - el.style.fill = null; - el.style.stroke = borderColor; - } - var CandlestickSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(CandlestickSeriesModel3, _super); - function CandlestickSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CandlestickSeriesModel3.type; - _this.defaultValueDimensions = [{ - name: "open", - defaultTooltip: true - }, { - name: "close", - defaultTooltip: true - }, { - name: "lowest", - defaultTooltip: true - }, { - name: "highest", - defaultTooltip: true - }]; - return _this; - } - CandlestickSeriesModel3.prototype.getShadowDim = function() { - return "open"; - }; - CandlestickSeriesModel3.prototype.brushSelector = function(dataIndex, data, selectors) { - var itemLayout = data.getItemLayout(dataIndex); - return itemLayout && selectors.rect(itemLayout.brushRect); - }; - CandlestickSeriesModel3.type = "series.candlestick"; - CandlestickSeriesModel3.dependencies = ["xAxis", "yAxis", "grid"]; - CandlestickSeriesModel3.defaultOption = { - // zlevel: 0, - z: 2, - coordinateSystem: "cartesian2d", - legendHoverLink: true, - // xAxisIndex: 0, - // yAxisIndex: 0, - layout: null, - clip: true, - itemStyle: { - color: "#eb5454", - color0: "#47b262", - borderColor: "#eb5454", - borderColor0: "#47b262", - borderColorDoji: null, - // borderColor: '#d24040', - // borderColor0: '#398f4f', - borderWidth: 1 - }, - emphasis: { - itemStyle: { - borderWidth: 2 - } - }, - barMaxWidth: null, - barMinWidth: null, - barWidth: null, - large: true, - largeThreshold: 600, - progressive: 3e3, - progressiveThreshold: 1e4, - progressiveChunkMode: "mod", - animationEasing: "linear", - animationDuration: 300 - }; - return CandlestickSeriesModel3; - }(SeriesModel2) - ); - mixin2(CandlestickSeriesModel2, WhiskerBoxCommonMixin2, true); - function candlestickPreprocessor2(option) { - if (!option || !isArray3(option.series)) { - return; - } - each17(option.series, function(seriesItem) { - if (isObject5(seriesItem) && seriesItem.type === "k") { - seriesItem.type = "candlestick"; - } - }); - } - var candlestickLayout2 = { - seriesType: "candlestick", - plan: createRenderPlanner2(), - reset: function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - var data = seriesModel.getData(); - var candleWidth = calculateCandleWidth2(seriesModel, data); - var cDimIdx = 0; - var vDimIdx = 1; - var coordDims = ["x", "y"]; - var cDimI = data.getDimensionIndex(data.mapDimension(coordDims[cDimIdx])); - var vDimsI = map3(data.mapDimensionsAll(coordDims[vDimIdx]), data.getDimensionIndex, data); - var openDimI = vDimsI[0]; - var closeDimI = vDimsI[1]; - var lowestDimI = vDimsI[2]; - var highestDimI = vDimsI[3]; - data.setLayout({ - candleWidth, - // The value is experimented visually. - isSimpleBox: candleWidth <= 1.3 - }); - if (cDimI < 0 || vDimsI.length < 4) { - return; - } - return { - progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress - }; - function normalProgress(params, data2) { - var dataIndex; - var store = data2.getStore(); - while ((dataIndex = params.next()) != null) { - var axisDimVal = store.get(cDimI, dataIndex); - var openVal = store.get(openDimI, dataIndex); - var closeVal = store.get(closeDimI, dataIndex); - var lowestVal = store.get(lowestDimI, dataIndex); - var highestVal = store.get(highestDimI, dataIndex); - var ocLow = Math.min(openVal, closeVal); - var ocHigh = Math.max(openVal, closeVal); - var ocLowPoint = getPoint(ocLow, axisDimVal); - var ocHighPoint = getPoint(ocHigh, axisDimVal); - var lowestPoint = getPoint(lowestVal, axisDimVal); - var highestPoint = getPoint(highestVal, axisDimVal); - var ends = []; - addBodyEnd(ends, ocHighPoint, 0); - addBodyEnd(ends, ocLowPoint, 1); - ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint)); - var itemModel = data2.getItemModel(dataIndex); - var hasDojiColor = !!itemModel.get(["itemStyle", "borderColorDoji"]); - data2.setItemLayout(dataIndex, { - sign: getSign2(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor), - initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx], - ends, - brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal) - }); - } - function getPoint(val, axisDimVal2) { - var p = []; - p[cDimIdx] = axisDimVal2; - p[vDimIdx] = val; - return isNaN(axisDimVal2) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p); - } - function addBodyEnd(ends2, point, start4) { - var point1 = point.slice(); - var point2 = point.slice(); - point1[cDimIdx] = subPixelOptimize$1(point1[cDimIdx] + candleWidth / 2, 1, false); - point2[cDimIdx] = subPixelOptimize$1(point2[cDimIdx] - candleWidth / 2, 1, true); - start4 ? ends2.push(point1, point2) : ends2.push(point2, point1); - } - function makeBrushRect(lowestVal2, highestVal2, axisDimVal2) { - var pmin = getPoint(lowestVal2, axisDimVal2); - var pmax = getPoint(highestVal2, axisDimVal2); - pmin[cDimIdx] -= candleWidth / 2; - pmax[cDimIdx] -= candleWidth / 2; - return { - x: pmin[0], - y: pmin[1], - width: candleWidth, - height: pmax[1] - pmin[1] - }; - } - function subPixelOptimizePoint(point) { - point[cDimIdx] = subPixelOptimize$1(point[cDimIdx], 1); - return point; - } - } - function largeProgress(params, data2) { - var points5 = createFloat32Array2(params.count * 4); - var offset3 = 0; - var point; - var tmpIn = []; - var tmpOut = []; - var dataIndex; - var store = data2.getStore(); - var hasDojiColor = !!seriesModel.get(["itemStyle", "borderColorDoji"]); - while ((dataIndex = params.next()) != null) { - var axisDimVal = store.get(cDimI, dataIndex); - var openVal = store.get(openDimI, dataIndex); - var closeVal = store.get(closeDimI, dataIndex); - var lowestVal = store.get(lowestDimI, dataIndex); - var highestVal = store.get(highestDimI, dataIndex); - if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) { - points5[offset3++] = NaN; - offset3 += 3; - continue; - } - points5[offset3++] = getSign2(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor); - tmpIn[cDimIdx] = axisDimVal; - tmpIn[vDimIdx] = lowestVal; - point = coordSys.dataToPoint(tmpIn, null, tmpOut); - points5[offset3++] = point ? point[0] : NaN; - points5[offset3++] = point ? point[1] : NaN; - tmpIn[vDimIdx] = highestVal; - point = coordSys.dataToPoint(tmpIn, null, tmpOut); - points5[offset3++] = point ? point[1] : NaN; - } - data2.setLayout("largePoints", points5); - } - } - }; - function getSign2(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor) { - var sign; - if (openVal > closeVal) { - sign = -1; - } else if (openVal < closeVal) { - sign = 1; - } else { - sign = hasDojiColor ? 0 : dataIndex > 0 ? store.get(closeDimI, dataIndex - 1) <= closeVal ? 1 : -1 : 1; - } - return sign; - } - function calculateCandleWidth2(seriesModel, data) { - var baseAxis = seriesModel.getBaseAxis(); - var extent4; - var bandWidth = baseAxis.type === "category" ? baseAxis.getBandWidth() : (extent4 = baseAxis.getExtent(), Math.abs(extent4[1] - extent4[0]) / data.count()); - var barMaxWidth = parsePercent$1(retrieve22(seriesModel.get("barMaxWidth"), bandWidth), bandWidth); - var barMinWidth = parsePercent$1(retrieve22(seriesModel.get("barMinWidth"), 1), bandWidth); - var barWidth = seriesModel.get("barWidth"); - return barWidth != null ? parsePercent$1(barWidth, bandWidth) : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth); - } - function install$k(registers) { - registers.registerChartView(CandlestickView2); - registers.registerSeriesModel(CandlestickSeriesModel2); - registers.registerPreprocessor(candlestickPreprocessor2); - registers.registerVisual(candlestickVisual2); - registers.registerLayout(candlestickLayout2); - } - function updateRipplePath2(rippleGroup, effectCfg) { - var color2 = effectCfg.rippleEffectColor || effectCfg.color; - rippleGroup.eachChild(function(ripplePath) { - ripplePath.attr({ - z: effectCfg.z, - zlevel: effectCfg.zlevel, - style: { - stroke: effectCfg.brushType === "stroke" ? color2 : null, - fill: effectCfg.brushType === "fill" ? color2 : null - } - }); - }); - } - var EffectSymbol2 = ( - /** @class */ - function(_super) { - __extends2(EffectSymbol3, _super); - function EffectSymbol3(data, idx) { - var _this = _super.call(this) || this; - var symbol = new Symbol3(data, idx); - var rippleGroup = new Group5(); - _this.add(symbol); - _this.add(rippleGroup); - _this.updateData(data, idx); - return _this; - } - EffectSymbol3.prototype.stopEffectAnimation = function() { - this.childAt(1).removeAll(); - }; - EffectSymbol3.prototype.startEffectAnimation = function(effectCfg) { - var symbolType = effectCfg.symbolType; - var color2 = effectCfg.color; - var rippleNumber = effectCfg.rippleNumber; - var rippleGroup = this.childAt(1); - for (var i2 = 0; i2 < rippleNumber; i2++) { - var ripplePath = createSymbol3(symbolType, -1, -1, 2, 2, color2); - ripplePath.attr({ - style: { - strokeNoScale: true - }, - z2: 99, - silent: true, - scaleX: 0.5, - scaleY: 0.5 - }); - var delay = -i2 / rippleNumber * effectCfg.period + effectCfg.effectOffset; - ripplePath.animate("", true).when(effectCfg.period, { - scaleX: effectCfg.rippleScale / 2, - scaleY: effectCfg.rippleScale / 2 - }).delay(delay).start(); - ripplePath.animateStyle(true).when(effectCfg.period, { - opacity: 0 - }).delay(delay).start(); - rippleGroup.add(ripplePath); - } - updateRipplePath2(rippleGroup, effectCfg); - }; - EffectSymbol3.prototype.updateEffectAnimation = function(effectCfg) { - var oldEffectCfg = this._effectCfg; - var rippleGroup = this.childAt(1); - var DIFFICULT_PROPS = ["symbolType", "period", "rippleScale", "rippleNumber"]; - for (var i2 = 0; i2 < DIFFICULT_PROPS.length; i2++) { - var propName = DIFFICULT_PROPS[i2]; - if (oldEffectCfg[propName] !== effectCfg[propName]) { - this.stopEffectAnimation(); - this.startEffectAnimation(effectCfg); - return; - } - } - updateRipplePath2(rippleGroup, effectCfg); - }; - EffectSymbol3.prototype.highlight = function() { - enterEmphasis2(this); - }; - EffectSymbol3.prototype.downplay = function() { - leaveEmphasis2(this); - }; - EffectSymbol3.prototype.getSymbolType = function() { - var symbol = this.childAt(0); - return symbol && symbol.getSymbolType(); - }; - EffectSymbol3.prototype.updateData = function(data, idx) { - var _this = this; - var seriesModel = data.hostModel; - this.childAt(0).updateData(data, idx); - var rippleGroup = this.childAt(1); - var itemModel = data.getItemModel(idx); - var symbolType = data.getItemVisual(idx, "symbol"); - var symbolSize = normalizeSymbolSize2(data.getItemVisual(idx, "symbolSize")); - var symbolStyle = data.getItemVisual(idx, "style"); - var color2 = symbolStyle && symbolStyle.fill; - var emphasisModel = itemModel.getModel("emphasis"); - rippleGroup.setScale(symbolSize); - rippleGroup.traverse(function(ripplePath) { - ripplePath.setStyle("fill", color2); - }); - var symbolOffset = normalizeSymbolOffset2(data.getItemVisual(idx, "symbolOffset"), symbolSize); - if (symbolOffset) { - rippleGroup.x = symbolOffset[0]; - rippleGroup.y = symbolOffset[1]; - } - var symbolRotate = data.getItemVisual(idx, "symbolRotate"); - rippleGroup.rotation = (symbolRotate || 0) * Math.PI / 180 || 0; - var effectCfg = {}; - effectCfg.showEffectOn = seriesModel.get("showEffectOn"); - effectCfg.rippleScale = itemModel.get(["rippleEffect", "scale"]); - effectCfg.brushType = itemModel.get(["rippleEffect", "brushType"]); - effectCfg.period = itemModel.get(["rippleEffect", "period"]) * 1e3; - effectCfg.effectOffset = idx / data.count(); - effectCfg.z = seriesModel.getShallow("z") || 0; - effectCfg.zlevel = seriesModel.getShallow("zlevel") || 0; - effectCfg.symbolType = symbolType; - effectCfg.color = color2; - effectCfg.rippleEffectColor = itemModel.get(["rippleEffect", "color"]); - effectCfg.rippleNumber = itemModel.get(["rippleEffect", "number"]); - if (effectCfg.showEffectOn === "render") { - this._effectCfg ? this.updateEffectAnimation(effectCfg) : this.startEffectAnimation(effectCfg); - this._effectCfg = effectCfg; - } else { - this._effectCfg = null; - this.stopEffectAnimation(); - this.onHoverStateChange = function(toState) { - if (toState === "emphasis") { - if (effectCfg.showEffectOn !== "render") { - _this.startEffectAnimation(effectCfg); - } - } else if (toState === "normal") { - if (effectCfg.showEffectOn !== "render") { - _this.stopEffectAnimation(); - } - } - }; - } - this._effectCfg = effectCfg; - toggleHoverEmphasis2(this, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - }; - EffectSymbol3.prototype.fadeOut = function(cb) { - cb && cb(); - }; - return EffectSymbol3; - }(Group5) - ); - var EffectScatterView2 = ( - /** @class */ - function(_super) { - __extends2(EffectScatterView3, _super); - function EffectScatterView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = EffectScatterView3.type; - return _this; - } - EffectScatterView3.prototype.init = function() { - this._symbolDraw = new SymbolDraw2(EffectSymbol2); - }; - EffectScatterView3.prototype.render = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var effectSymbolDraw = this._symbolDraw; - effectSymbolDraw.updateData(data, { - clipShape: this._getClipShape(seriesModel) - }); - this.group.add(effectSymbolDraw.group); - }; - EffectScatterView3.prototype._getClipShape = function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - var clipArea = coordSys && coordSys.getArea && coordSys.getArea(); - return seriesModel.get("clip", true) ? clipArea : null; - }; - EffectScatterView3.prototype.updateTransform = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - this.group.dirty(); - var res = pointsLayout2("").reset(seriesModel, ecModel, api); - if (res.progress) { - res.progress({ - start: 0, - end: data.count(), - count: data.count() - }, data); - } - this._symbolDraw.updateLayout(); - }; - EffectScatterView3.prototype._updateGroupTransform = function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - if (coordSys && coordSys.getRoamTransform) { - this.group.transform = clone$2(coordSys.getRoamTransform()); - this.group.decomposeTransform(); - } - }; - EffectScatterView3.prototype.remove = function(ecModel, api) { - this._symbolDraw && this._symbolDraw.remove(true); - }; - EffectScatterView3.type = "effectScatter"; - return EffectScatterView3; - }(ChartView2) - ); - var EffectScatterSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(EffectScatterSeriesModel3, _super); - function EffectScatterSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = EffectScatterSeriesModel3.type; - _this.hasSymbolVisual = true; - return _this; - } - EffectScatterSeriesModel3.prototype.getInitialData = function(option, ecModel) { - return createSeriesData2(null, this, { - useEncodeDefaulter: true - }); - }; - EffectScatterSeriesModel3.prototype.brushSelector = function(dataIndex, data, selectors) { - return selectors.point(data.getItemLayout(dataIndex)); - }; - EffectScatterSeriesModel3.type = "series.effectScatter"; - EffectScatterSeriesModel3.dependencies = ["grid", "polar"]; - EffectScatterSeriesModel3.defaultOption = { - coordinateSystem: "cartesian2d", - // zlevel: 0, - z: 2, - legendHoverLink: true, - effectType: "ripple", - progressive: 0, - // When to show the effect, option: 'render'|'emphasis' - showEffectOn: "render", - clip: true, - // Ripple effect config - rippleEffect: { - period: 4, - // Scale of ripple - scale: 2.5, - // Brush type can be fill or stroke - brushType: "fill", - // Ripple number - number: 3 - }, - universalTransition: { - divideShape: "clone" - }, - // Cartesian coordinate system - // xAxisIndex: 0, - // yAxisIndex: 0, - // Polar coordinate system - // polarIndex: 0, - // Geo coordinate system - // geoIndex: 0, - // symbol: null, // 图形类型 - symbolSize: 10 - // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2 - // symbolRotate: null, // 图形旋转控制 - // itemStyle: { - // opacity: 1 - // } - }; - return EffectScatterSeriesModel3; - }(SeriesModel2) - ); - function install$l(registers) { - registers.registerChartView(EffectScatterView2); - registers.registerSeriesModel(EffectScatterSeriesModel2); - registers.registerLayout(pointsLayout2("effectScatter")); - } - var EffectLine2 = ( - /** @class */ - function(_super) { - __extends2(EffectLine3, _super); - function EffectLine3(lineData, idx, seriesScope) { - var _this = _super.call(this) || this; - _this.add(_this.createLine(lineData, idx, seriesScope)); - _this._updateEffectSymbol(lineData, idx); - return _this; - } - EffectLine3.prototype.createLine = function(lineData, idx, seriesScope) { - return new Line$1(lineData, idx, seriesScope); - }; - EffectLine3.prototype._updateEffectSymbol = function(lineData, idx) { - var itemModel = lineData.getItemModel(idx); - var effectModel = itemModel.getModel("effect"); - var size2 = effectModel.get("symbolSize"); - var symbolType = effectModel.get("symbol"); - if (!isArray3(size2)) { - size2 = [size2, size2]; - } - var lineStyle = lineData.getItemVisual(idx, "style"); - var color2 = effectModel.get("color") || lineStyle && lineStyle.stroke; - var symbol = this.childAt(1); - if (this._symbolType !== symbolType) { - this.remove(symbol); - symbol = createSymbol3(symbolType, -0.5, -0.5, 1, 1, color2); - symbol.z2 = 100; - symbol.culling = true; - this.add(symbol); - } - if (!symbol) { - return; - } - symbol.setStyle("shadowColor", color2); - symbol.setStyle(effectModel.getItemStyle(["color"])); - symbol.scaleX = size2[0]; - symbol.scaleY = size2[1]; - symbol.setColor(color2); - this._symbolType = symbolType; - this._symbolScale = size2; - this._updateEffectAnimation(lineData, effectModel, idx); - }; - EffectLine3.prototype._updateEffectAnimation = function(lineData, effectModel, idx) { - var symbol = this.childAt(1); - if (!symbol) { - return; - } - var points5 = lineData.getItemLayout(idx); - var period = effectModel.get("period") * 1e3; - var loop = effectModel.get("loop"); - var roundTrip = effectModel.get("roundTrip"); - var constantSpeed = effectModel.get("constantSpeed"); - var delayExpr = retrieve4(effectModel.get("delay"), function(idx2) { - return idx2 / lineData.count() * period / 3; - }); - symbol.ignore = true; - this._updateAnimationPoints(symbol, points5); - if (constantSpeed > 0) { - period = this._getLineLength(symbol) / constantSpeed * 1e3; - } - if (period !== this._period || loop !== this._loop || roundTrip !== this._roundTrip) { - symbol.stopAnimation(); - var delayNum = void 0; - if (isFunction2(delayExpr)) { - delayNum = delayExpr(idx); - } else { - delayNum = delayExpr; - } - if (symbol.__t > 0) { - delayNum = -period * symbol.__t; - } - this._animateSymbol(symbol, period, delayNum, loop, roundTrip); - } - this._period = period; - this._loop = loop; - this._roundTrip = roundTrip; - }; - EffectLine3.prototype._animateSymbol = function(symbol, period, delayNum, loop, roundTrip) { - if (period > 0) { - symbol.__t = 0; - var self_1 = this; - var animator = symbol.animate("", loop).when(roundTrip ? period * 2 : period, { - __t: roundTrip ? 2 : 1 - }).delay(delayNum).during(function() { - self_1._updateSymbolPosition(symbol); - }); - if (!loop) { - animator.done(function() { - self_1.remove(symbol); - }); - } - animator.start(); - } - }; - EffectLine3.prototype._getLineLength = function(symbol) { - return dist3(symbol.__p1, symbol.__cp1) + dist3(symbol.__cp1, symbol.__p2); - }; - EffectLine3.prototype._updateAnimationPoints = function(symbol, points5) { - symbol.__p1 = points5[0]; - symbol.__p2 = points5[1]; - symbol.__cp1 = points5[2] || [(points5[0][0] + points5[1][0]) / 2, (points5[0][1] + points5[1][1]) / 2]; - }; - EffectLine3.prototype.updateData = function(lineData, idx, seriesScope) { - this.childAt(0).updateData(lineData, idx, seriesScope); - this._updateEffectSymbol(lineData, idx); - }; - EffectLine3.prototype._updateSymbolPosition = function(symbol) { - var p1 = symbol.__p1; - var p2 = symbol.__p2; - var cp1 = symbol.__cp1; - var t = symbol.__t < 1 ? symbol.__t : 2 - symbol.__t; - var pos = [symbol.x, symbol.y]; - var lastPos = pos.slice(); - var quadraticAt$12 = quadraticAt3; - var quadraticDerivativeAt$1 = quadraticDerivativeAt2; - pos[0] = quadraticAt$12(p1[0], cp1[0], p2[0], t); - pos[1] = quadraticAt$12(p1[1], cp1[1], p2[1], t); - var tx = symbol.__t < 1 ? quadraticDerivativeAt$1(p1[0], cp1[0], p2[0], t) : quadraticDerivativeAt$1(p2[0], cp1[0], p1[0], 1 - t); - var ty = symbol.__t < 1 ? quadraticDerivativeAt$1(p1[1], cp1[1], p2[1], t) : quadraticDerivativeAt$1(p2[1], cp1[1], p1[1], 1 - t); - symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; - if (this._symbolType === "line" || this._symbolType === "rect" || this._symbolType === "roundRect") { - if (symbol.__lastT !== void 0 && symbol.__lastT < symbol.__t) { - symbol.scaleY = dist3(lastPos, pos) * 1.05; - if (t === 1) { - pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2; - pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2; - } - } else if (symbol.__lastT === 1) { - symbol.scaleY = 2 * dist3(p1, pos); - } else { - symbol.scaleY = this._symbolScale[1]; - } - } - symbol.__lastT = symbol.__t; - symbol.ignore = false; - symbol.x = pos[0]; - symbol.y = pos[1]; - }; - EffectLine3.prototype.updateLayout = function(lineData, idx) { - this.childAt(0).updateLayout(lineData, idx); - var effectModel = lineData.getItemModel(idx).getModel("effect"); - this._updateEffectAnimation(lineData, effectModel, idx); - }; - return EffectLine3; - }(Group5) - ); - var Polyline$1 = ( - /** @class */ - function(_super) { - __extends2(Polyline$12, _super); - function Polyline$12(lineData, idx, seriesScope) { - var _this = _super.call(this) || this; - _this._createPolyline(lineData, idx, seriesScope); - return _this; - } - Polyline$12.prototype._createPolyline = function(lineData, idx, seriesScope) { - var points5 = lineData.getItemLayout(idx); - var line = new Polyline3({ - shape: { - points: points5 - } - }); - this.add(line); - this._updateCommonStl(lineData, idx, seriesScope); - }; - Polyline$12.prototype.updateData = function(lineData, idx, seriesScope) { - var seriesModel = lineData.hostModel; - var line = this.childAt(0); - var target = { - shape: { - points: lineData.getItemLayout(idx) - } - }; - updateProps3(line, target, seriesModel, idx); - this._updateCommonStl(lineData, idx, seriesScope); - }; - Polyline$12.prototype._updateCommonStl = function(lineData, idx, seriesScope) { - var line = this.childAt(0); - var itemModel = lineData.getItemModel(idx); - var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle; - var focus = seriesScope && seriesScope.focus; - var blurScope = seriesScope && seriesScope.blurScope; - var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled; - if (!seriesScope || lineData.hasItemOption) { - var emphasisModel = itemModel.getModel("emphasis"); - emphasisLineStyle = emphasisModel.getModel("lineStyle").getLineStyle(); - emphasisDisabled = emphasisModel.get("disabled"); - focus = emphasisModel.get("focus"); - blurScope = emphasisModel.get("blurScope"); - } - line.useStyle(lineData.getItemVisual(idx, "style")); - line.style.fill = null; - line.style.strokeNoScale = true; - var lineEmphasisState = line.ensureState("emphasis"); - lineEmphasisState.style = emphasisLineStyle; - toggleHoverEmphasis2(this, focus, blurScope, emphasisDisabled); - }; - Polyline$12.prototype.updateLayout = function(lineData, idx) { - var polyline = this.childAt(0); - polyline.setShape("points", lineData.getItemLayout(idx)); - }; - return Polyline$12; - }(Group5) - ); - var EffectPolyline2 = ( - /** @class */ - function(_super) { - __extends2(EffectPolyline3, _super); - function EffectPolyline3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._lastFrame = 0; - _this._lastFramePercent = 0; - return _this; - } - EffectPolyline3.prototype.createLine = function(lineData, idx, seriesScope) { - return new Polyline$1(lineData, idx, seriesScope); - }; - EffectPolyline3.prototype._updateAnimationPoints = function(symbol, points5) { - this._points = points5; - var accLenArr = [0]; - var len3 = 0; - for (var i2 = 1; i2 < points5.length; i2++) { - var p1 = points5[i2 - 1]; - var p2 = points5[i2]; - len3 += dist3(p1, p2); - accLenArr.push(len3); - } - if (len3 === 0) { - this._length = 0; - return; - } - for (var i2 = 0; i2 < accLenArr.length; i2++) { - accLenArr[i2] /= len3; - } - this._offsets = accLenArr; - this._length = len3; - }; - EffectPolyline3.prototype._getLineLength = function() { - return this._length; - }; - EffectPolyline3.prototype._updateSymbolPosition = function(symbol) { - var t = symbol.__t < 1 ? symbol.__t : 2 - symbol.__t; - var points5 = this._points; - var offsets = this._offsets; - var len3 = points5.length; - if (!offsets) { - return; - } - var lastFrame = this._lastFrame; - var frame; - if (t < this._lastFramePercent) { - var start4 = Math.min(lastFrame + 1, len3 - 1); - for (frame = start4; frame >= 0; frame--) { - if (offsets[frame] <= t) { - break; - } - } - frame = Math.min(frame, len3 - 2); - } else { - for (frame = lastFrame; frame < len3; frame++) { - if (offsets[frame] > t) { - break; - } - } - frame = Math.min(frame - 1, len3 - 2); - } - var p = (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]); - var p0 = points5[frame]; - var p1 = points5[frame + 1]; - symbol.x = p0[0] * (1 - p) + p * p1[0]; - symbol.y = p0[1] * (1 - p) + p * p1[1]; - var tx = symbol.__t < 1 ? p1[0] - p0[0] : p0[0] - p1[0]; - var ty = symbol.__t < 1 ? p1[1] - p0[1] : p0[1] - p1[1]; - symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; - this._lastFrame = frame; - this._lastFramePercent = t; - symbol.ignore = false; - }; - return EffectPolyline3; - }(EffectLine2) - ); - var LargeLinesPathShape2 = ( - /** @class */ - /* @__PURE__ */ function() { - function LargeLinesPathShape3() { - this.polyline = false; - this.curveness = 0; - this.segs = []; - } - return LargeLinesPathShape3; - }() - ); - var LargeLinesPath2 = ( - /** @class */ - function(_super) { - __extends2(LargeLinesPath3, _super); - function LargeLinesPath3(opts) { - var _this = _super.call(this, opts) || this; - _this._off = 0; - _this.hoverDataIdx = -1; - return _this; - } - LargeLinesPath3.prototype.reset = function() { - this.notClear = false; - this._off = 0; - }; - LargeLinesPath3.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - LargeLinesPath3.prototype.getDefaultShape = function() { - return new LargeLinesPathShape2(); - }; - LargeLinesPath3.prototype.buildPath = function(ctx, shape) { - var segs = shape.segs; - var curveness = shape.curveness; - var i2; - if (shape.polyline) { - for (i2 = this._off; i2 < segs.length; ) { - var count3 = segs[i2++]; - if (count3 > 0) { - ctx.moveTo(segs[i2++], segs[i2++]); - for (var k2 = 1; k2 < count3; k2++) { - ctx.lineTo(segs[i2++], segs[i2++]); - } - } - } - } else { - for (i2 = this._off; i2 < segs.length; ) { - var x0 = segs[i2++]; - var y0 = segs[i2++]; - var x1 = segs[i2++]; - var y1 = segs[i2++]; - ctx.moveTo(x0, y0); - if (curveness > 0) { - var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness; - var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness; - ctx.quadraticCurveTo(x2, y2, x1, y1); - } else { - ctx.lineTo(x1, y1); - } - } - } - if (this.incremental) { - this._off = i2; - this.notClear = true; - } - }; - LargeLinesPath3.prototype.findDataIndex = function(x, y) { - var shape = this.shape; - var segs = shape.segs; - var curveness = shape.curveness; - var lineWidth = this.style.lineWidth; - if (shape.polyline) { - var dataIndex = 0; - for (var i2 = 0; i2 < segs.length; ) { - var count3 = segs[i2++]; - if (count3 > 0) { - var x0 = segs[i2++]; - var y0 = segs[i2++]; - for (var k2 = 1; k2 < count3; k2++) { - var x1 = segs[i2++]; - var y1 = segs[i2++]; - if (containStroke6(x0, y0, x1, y1, lineWidth, x, y)) { - return dataIndex; - } - } - } - dataIndex++; - } - } else { - var dataIndex = 0; - for (var i2 = 0; i2 < segs.length; ) { - var x0 = segs[i2++]; - var y0 = segs[i2++]; - var x1 = segs[i2++]; - var y1 = segs[i2++]; - if (curveness > 0) { - var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness; - var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness; - if (containStroke$2(x0, y0, x2, y2, x1, y1, lineWidth, x, y)) { - return dataIndex; - } - } else { - if (containStroke6(x0, y0, x1, y1, lineWidth, x, y)) { - return dataIndex; - } - } - dataIndex++; - } - } - return -1; - }; - LargeLinesPath3.prototype.contain = function(x, y) { - var localPos = this.transformCoordToLocal(x, y); - var rect = this.getBoundingRect(); - x = localPos[0]; - y = localPos[1]; - if (rect.contain(x, y)) { - var dataIdx = this.hoverDataIdx = this.findDataIndex(x, y); - return dataIdx >= 0; - } - this.hoverDataIdx = -1; - return false; - }; - LargeLinesPath3.prototype.getBoundingRect = function() { - var rect = this._rect; - if (!rect) { - var shape = this.shape; - var points5 = shape.segs; - var minX = Infinity; - var minY = Infinity; - var maxX = -Infinity; - var maxY = -Infinity; - for (var i2 = 0; i2 < points5.length; ) { - var x = points5[i2++]; - var y = points5[i2++]; - minX = Math.min(x, minX); - maxX = Math.max(x, maxX); - minY = Math.min(y, minY); - maxY = Math.max(y, maxY); - } - rect = this._rect = new BoundingRect2(minX, minY, maxX, maxY); - } - return rect; - }; - return LargeLinesPath3; - }(Path2) - ); - var LargeLineDraw2 = ( - /** @class */ - function() { - function LargeLineDraw3() { - this.group = new Group5(); - } - LargeLineDraw3.prototype.updateData = function(data) { - this._clear(); - var lineEl = this._create(); - lineEl.setShape({ - segs: data.getLayout("linesPoints") - }); - this._setCommon(lineEl, data); - }; - LargeLineDraw3.prototype.incrementalPrepareUpdate = function(data) { - this.group.removeAll(); - this._clear(); - }; - LargeLineDraw3.prototype.incrementalUpdate = function(taskParams, data) { - var lastAdded = this._newAdded[0]; - var linePoints = data.getLayout("linesPoints"); - var oldSegs = lastAdded && lastAdded.shape.segs; - if (oldSegs && oldSegs.length < 2e4) { - var oldLen = oldSegs.length; - var newSegs = new Float32Array(oldLen + linePoints.length); - newSegs.set(oldSegs); - newSegs.set(linePoints, oldLen); - lastAdded.setShape({ - segs: newSegs - }); - } else { - this._newAdded = []; - var lineEl = this._create(); - lineEl.incremental = true; - lineEl.setShape({ - segs: linePoints - }); - this._setCommon(lineEl, data); - lineEl.__startIndex = taskParams.start; - } - }; - LargeLineDraw3.prototype.remove = function() { - this._clear(); - }; - LargeLineDraw3.prototype.eachRendered = function(cb) { - this._newAdded[0] && cb(this._newAdded[0]); - }; - LargeLineDraw3.prototype._create = function() { - var lineEl = new LargeLinesPath2({ - cursor: "default", - ignoreCoarsePointer: true - }); - this._newAdded.push(lineEl); - this.group.add(lineEl); - return lineEl; - }; - LargeLineDraw3.prototype._setCommon = function(lineEl, data, isIncremental) { - var hostModel = data.hostModel; - lineEl.setShape({ - polyline: hostModel.get("polyline"), - curveness: hostModel.get(["lineStyle", "curveness"]) - }); - lineEl.useStyle(hostModel.getModel("lineStyle").getLineStyle()); - lineEl.style.strokeNoScale = true; - var style = data.getVisual("style"); - if (style && style.stroke) { - lineEl.setStyle("stroke", style.stroke); - } - lineEl.setStyle("fill", null); - var ecData = getECData2(lineEl); - ecData.seriesIndex = hostModel.seriesIndex; - lineEl.on("mousemove", function(e3) { - ecData.dataIndex = null; - var dataIndex = lineEl.hoverDataIdx; - if (dataIndex > 0) { - ecData.dataIndex = dataIndex + lineEl.__startIndex; - } - }); - }; - LargeLineDraw3.prototype._clear = function() { - this._newAdded = []; - this.group.removeAll(); - }; - return LargeLineDraw3; - }() - ); - var linesLayout2 = { - seriesType: "lines", - plan: createRenderPlanner2(), - reset: function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - if (!coordSys) { - if (true) { - error3("The lines series must have a coordinate system."); - } - return; - } - var isPolyline = seriesModel.get("polyline"); - var isLarge = seriesModel.pipelineContext.large; - return { - progress: function(params, lineData) { - var lineCoords = []; - if (isLarge) { - var points5 = void 0; - var segCount = params.end - params.start; - if (isPolyline) { - var totalCoordsCount = 0; - for (var i2 = params.start; i2 < params.end; i2++) { - totalCoordsCount += seriesModel.getLineCoordsCount(i2); - } - points5 = new Float32Array(segCount + totalCoordsCount * 2); - } else { - points5 = new Float32Array(segCount * 4); - } - var offset3 = 0; - var pt = []; - for (var i2 = params.start; i2 < params.end; i2++) { - var len3 = seriesModel.getLineCoords(i2, lineCoords); - if (isPolyline) { - points5[offset3++] = len3; - } - for (var k2 = 0; k2 < len3; k2++) { - pt = coordSys.dataToPoint(lineCoords[k2], false, pt); - points5[offset3++] = pt[0]; - points5[offset3++] = pt[1]; - } - } - lineData.setLayout("linesPoints", points5); - } else { - for (var i2 = params.start; i2 < params.end; i2++) { - var itemModel = lineData.getItemModel(i2); - var len3 = seriesModel.getLineCoords(i2, lineCoords); - var pts = []; - if (isPolyline) { - for (var j = 0; j < len3; j++) { - pts.push(coordSys.dataToPoint(lineCoords[j])); - } - } else { - pts[0] = coordSys.dataToPoint(lineCoords[0]); - pts[1] = coordSys.dataToPoint(lineCoords[1]); - var curveness = itemModel.get(["lineStyle", "curveness"]); - if (+curveness) { - pts[2] = [(pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness, (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness]; - } - } - lineData.setItemLayout(i2, pts); - } - } - } - }; - } - }; - var LinesView2 = ( - /** @class */ - function(_super) { - __extends2(LinesView3, _super); - function LinesView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = LinesView3.type; - return _this; - } - LinesView3.prototype.render = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var lineDraw = this._updateLineDraw(data, seriesModel); - var zlevel = seriesModel.get("zlevel"); - var trailLength = seriesModel.get(["effect", "trailLength"]); - var zr = api.getZr(); - var isSvg = zr.painter.getType() === "svg"; - if (!isSvg) { - zr.painter.getLayer(zlevel).clear(true); - } - if (this._lastZlevel != null && !isSvg) { - zr.configLayer(this._lastZlevel, { - motionBlur: false - }); - } - if (this._showEffect(seriesModel) && trailLength > 0) { - if (!isSvg) { - zr.configLayer(zlevel, { - motionBlur: true, - lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0) - }); - } else if (true) { - console.warn("SVG render mode doesn't support lines with trail effect"); - } - } - lineDraw.updateData(data); - var clipPath = seriesModel.get("clip", true) && createClipPath2(seriesModel.coordinateSystem, false, seriesModel); - if (clipPath) { - this.group.setClipPath(clipPath); - } else { - this.group.removeClipPath(); - } - this._lastZlevel = zlevel; - this._finished = true; - }; - LinesView3.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var lineDraw = this._updateLineDraw(data, seriesModel); - lineDraw.incrementalPrepareUpdate(data); - this._clearLayer(api); - this._finished = false; - }; - LinesView3.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) { - this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData()); - this._finished = taskParams.end === seriesModel.getData().count(); - }; - LinesView3.prototype.eachRendered = function(cb) { - this._lineDraw && this._lineDraw.eachRendered(cb); - }; - LinesView3.prototype.updateTransform = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var pipelineContext = seriesModel.pipelineContext; - if (!this._finished || pipelineContext.large || pipelineContext.progressiveRender) { - return { - update: true - }; - } else { - var res = linesLayout2.reset(seriesModel, ecModel, api); - if (res.progress) { - res.progress({ - start: 0, - end: data.count(), - count: data.count() - }, data); - } - this._lineDraw.updateLayout(); - this._clearLayer(api); - } - }; - LinesView3.prototype._updateLineDraw = function(data, seriesModel) { - var lineDraw = this._lineDraw; - var hasEffect = this._showEffect(seriesModel); - var isPolyline = !!seriesModel.get("polyline"); - var pipelineContext = seriesModel.pipelineContext; - var isLargeDraw = pipelineContext.large; - if (true) { - if (hasEffect && isLargeDraw) { - console.warn("Large lines not support effect"); - } - } - if (!lineDraw || hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLargeDraw !== this._isLargeDraw) { - if (lineDraw) { - lineDraw.remove(); - } - lineDraw = this._lineDraw = isLargeDraw ? new LargeLineDraw2() : new LineDraw2(isPolyline ? hasEffect ? EffectPolyline2 : Polyline$1 : hasEffect ? EffectLine2 : Line$1); - this._hasEffet = hasEffect; - this._isPolyline = isPolyline; - this._isLargeDraw = isLargeDraw; - } - this.group.add(lineDraw.group); - return lineDraw; - }; - LinesView3.prototype._showEffect = function(seriesModel) { - return !!seriesModel.get(["effect", "show"]); - }; - LinesView3.prototype._clearLayer = function(api) { - var zr = api.getZr(); - var isSvg = zr.painter.getType() === "svg"; - if (!isSvg && this._lastZlevel != null) { - zr.painter.getLayer(this._lastZlevel).clear(true); - } - }; - LinesView3.prototype.remove = function(ecModel, api) { - this._lineDraw && this._lineDraw.remove(); - this._lineDraw = null; - this._clearLayer(api); - }; - LinesView3.prototype.dispose = function(ecModel, api) { - this.remove(ecModel, api); - }; - LinesView3.type = "lines"; - return LinesView3; - }(ChartView2) - ); - var Uint32Arr2 = typeof Uint32Array === "undefined" ? Array : Uint32Array; - var Float64Arr2 = typeof Float64Array === "undefined" ? Array : Float64Array; - function compatEc22(seriesOpt) { - var data = seriesOpt.data; - if (data && data[0] && data[0][0] && data[0][0].coord) { - if (true) { - console.warn("Lines data configuration has been changed to { coords:[[1,2],[2,3]] }"); - } - seriesOpt.data = map3(data, function(itemOpt) { - var coords = [itemOpt[0].coord, itemOpt[1].coord]; - var target = { - coords - }; - if (itemOpt[0].name) { - target.fromName = itemOpt[0].name; - } - if (itemOpt[1].name) { - target.toName = itemOpt[1].name; - } - return mergeAll2([target, itemOpt[0], itemOpt[1]]); - }); - } - } - var LinesSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(LinesSeriesModel3, _super); - function LinesSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = LinesSeriesModel3.type; - _this.visualStyleAccessPath = "lineStyle"; - _this.visualDrawType = "stroke"; - return _this; - } - LinesSeriesModel3.prototype.init = function(option) { - option.data = option.data || []; - compatEc22(option); - var result = this._processFlatCoordsArray(option.data); - this._flatCoords = result.flatCoords; - this._flatCoordsOffset = result.flatCoordsOffset; - if (result.flatCoords) { - option.data = new Float32Array(result.count); - } - _super.prototype.init.apply(this, arguments); - }; - LinesSeriesModel3.prototype.mergeOption = function(option) { - compatEc22(option); - if (option.data) { - var result = this._processFlatCoordsArray(option.data); - this._flatCoords = result.flatCoords; - this._flatCoordsOffset = result.flatCoordsOffset; - if (result.flatCoords) { - option.data = new Float32Array(result.count); - } - } - _super.prototype.mergeOption.apply(this, arguments); - }; - LinesSeriesModel3.prototype.appendData = function(params) { - var result = this._processFlatCoordsArray(params.data); - if (result.flatCoords) { - if (!this._flatCoords) { - this._flatCoords = result.flatCoords; - this._flatCoordsOffset = result.flatCoordsOffset; - } else { - this._flatCoords = concatArray2(this._flatCoords, result.flatCoords); - this._flatCoordsOffset = concatArray2(this._flatCoordsOffset, result.flatCoordsOffset); - } - params.data = new Float32Array(result.count); - } - this.getRawData().appendData(params.data); - }; - LinesSeriesModel3.prototype._getCoordsFromItemModel = function(idx) { - var itemModel = this.getData().getItemModel(idx); - var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow("coords"); - if (true) { - if (!(coords instanceof Array && coords.length > 0 && coords[0] instanceof Array)) { - throw new Error("Invalid coords " + JSON.stringify(coords) + ". Lines must have 2d coords array in data item."); - } - } - return coords; - }; - LinesSeriesModel3.prototype.getLineCoordsCount = function(idx) { - if (this._flatCoordsOffset) { - return this._flatCoordsOffset[idx * 2 + 1]; - } else { - return this._getCoordsFromItemModel(idx).length; - } - }; - LinesSeriesModel3.prototype.getLineCoords = function(idx, out3) { - if (this._flatCoordsOffset) { - var offset3 = this._flatCoordsOffset[idx * 2]; - var len3 = this._flatCoordsOffset[idx * 2 + 1]; - for (var i2 = 0; i2 < len3; i2++) { - out3[i2] = out3[i2] || []; - out3[i2][0] = this._flatCoords[offset3 + i2 * 2]; - out3[i2][1] = this._flatCoords[offset3 + i2 * 2 + 1]; - } - return len3; - } else { - var coords = this._getCoordsFromItemModel(idx); - for (var i2 = 0; i2 < coords.length; i2++) { - out3[i2] = out3[i2] || []; - out3[i2][0] = coords[i2][0]; - out3[i2][1] = coords[i2][1]; - } - return coords.length; - } - }; - LinesSeriesModel3.prototype._processFlatCoordsArray = function(data) { - var startOffset = 0; - if (this._flatCoords) { - startOffset = this._flatCoords.length; - } - if (isNumber2(data[0])) { - var len3 = data.length; - var coordsOffsetAndLenStorage = new Uint32Arr2(len3); - var coordsStorage = new Float64Arr2(len3); - var coordsCursor = 0; - var offsetCursor = 0; - var dataCount = 0; - for (var i2 = 0; i2 < len3; ) { - dataCount++; - var count3 = data[i2++]; - coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset; - coordsOffsetAndLenStorage[offsetCursor++] = count3; - for (var k2 = 0; k2 < count3; k2++) { - var x = data[i2++]; - var y = data[i2++]; - coordsStorage[coordsCursor++] = x; - coordsStorage[coordsCursor++] = y; - if (i2 > len3) { - if (true) { - throw new Error("Invalid data format."); - } - } - } - } - return { - flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor), - flatCoords: coordsStorage, - count: dataCount - }; - } - return { - flatCoordsOffset: null, - flatCoords: null, - count: data.length - }; - }; - LinesSeriesModel3.prototype.getInitialData = function(option, ecModel) { - if (true) { - var CoordSys = CoordinateSystemManager2.get(option.coordinateSystem); - if (!CoordSys) { - throw new Error("Unknown coordinate system " + option.coordinateSystem); - } - } - var lineData = new SeriesData2(["value"], this); - lineData.hasItemOption = false; - lineData.initData(option.data, [], function(dataItem, dimName, dataIndex, dimIndex) { - if (dataItem instanceof Array) { - return NaN; - } else { - lineData.hasItemOption = true; - var value = dataItem.value; - if (value != null) { - return value instanceof Array ? value[dimIndex] : value; - } - } - }); - return lineData; - }; - LinesSeriesModel3.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - var data = this.getData(); - var itemModel = data.getItemModel(dataIndex); - var name = itemModel.get("name"); - if (name) { - return name; - } - var fromName = itemModel.get("fromName"); - var toName = itemModel.get("toName"); - var nameArr = []; - fromName != null && nameArr.push(fromName); - toName != null && nameArr.push(toName); - return createTooltipMarkup2("nameValue", { - name: nameArr.join(" > ") - }); - }; - LinesSeriesModel3.prototype.preventIncremental = function() { - return !!this.get(["effect", "show"]); - }; - LinesSeriesModel3.prototype.getProgressive = function() { - var progressive = this.option.progressive; - if (progressive == null) { - return this.option.large ? 1e4 : this.get("progressive"); - } - return progressive; - }; - LinesSeriesModel3.prototype.getProgressiveThreshold = function() { - var progressiveThreshold = this.option.progressiveThreshold; - if (progressiveThreshold == null) { - return this.option.large ? 2e4 : this.get("progressiveThreshold"); - } - return progressiveThreshold; - }; - LinesSeriesModel3.prototype.getZLevelKey = function() { - var effectModel = this.getModel("effect"); - var trailLength = effectModel.get("trailLength"); - return this.getData().count() > this.getProgressiveThreshold() ? this.id : effectModel.get("show") && trailLength > 0 ? trailLength + "" : ""; - }; - LinesSeriesModel3.type = "series.lines"; - LinesSeriesModel3.dependencies = ["grid", "polar", "geo", "calendar"]; - LinesSeriesModel3.defaultOption = { - coordinateSystem: "geo", - // zlevel: 0, - z: 2, - legendHoverLink: true, - // Cartesian coordinate system - xAxisIndex: 0, - yAxisIndex: 0, - symbol: ["none", "none"], - symbolSize: [10, 10], - // Geo coordinate system - geoIndex: 0, - effect: { - show: false, - period: 4, - constantSpeed: 0, - symbol: "circle", - symbolSize: 3, - loop: true, - trailLength: 0.2 - }, - large: false, - // Available when large is true - largeThreshold: 2e3, - polyline: false, - clip: true, - label: { - show: false, - position: "end" - // distance: 5, - // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 - }, - lineStyle: { - opacity: 0.5 - } - }; - return LinesSeriesModel3; - }(SeriesModel2) - ); - function normalize$3(a) { - if (!(a instanceof Array)) { - a = [a, a]; - } - return a; - } - var linesVisual2 = { - seriesType: "lines", - reset: function(seriesModel) { - var symbolType = normalize$3(seriesModel.get("symbol")); - var symbolSize = normalize$3(seriesModel.get("symbolSize")); - var data = seriesModel.getData(); - data.setVisual("fromSymbol", symbolType && symbolType[0]); - data.setVisual("toSymbol", symbolType && symbolType[1]); - data.setVisual("fromSymbolSize", symbolSize && symbolSize[0]); - data.setVisual("toSymbolSize", symbolSize && symbolSize[1]); - function dataEach(data2, idx) { - var itemModel = data2.getItemModel(idx); - var symbolType2 = normalize$3(itemModel.getShallow("symbol", true)); - var symbolSize2 = normalize$3(itemModel.getShallow("symbolSize", true)); - symbolType2[0] && data2.setItemVisual(idx, "fromSymbol", symbolType2[0]); - symbolType2[1] && data2.setItemVisual(idx, "toSymbol", symbolType2[1]); - symbolSize2[0] && data2.setItemVisual(idx, "fromSymbolSize", symbolSize2[0]); - symbolSize2[1] && data2.setItemVisual(idx, "toSymbolSize", symbolSize2[1]); - } - return { - dataEach: data.hasItemOption ? dataEach : null - }; - } - }; - function install$m(registers) { - registers.registerChartView(LinesView2); - registers.registerSeriesModel(LinesSeriesModel2); - registers.registerLayout(linesLayout2); - registers.registerVisual(linesVisual2); - } - var GRADIENT_LEVELS2 = 256; - var HeatmapLayer2 = ( - /** @class */ - function() { - function HeatmapLayer3() { - this.blurSize = 30; - this.pointSize = 20; - this.maxOpacity = 1; - this.minOpacity = 0; - this._gradientPixels = { - inRange: null, - outOfRange: null - }; - var canvas = platformApi2.createCanvas(); - this.canvas = canvas; - } - HeatmapLayer3.prototype.update = function(data, width, height, normalize6, colorFunc, isInRange) { - var brush4 = this._getBrush(); - var gradientInRange = this._getGradient(colorFunc, "inRange"); - var gradientOutOfRange = this._getGradient(colorFunc, "outOfRange"); - var r = this.pointSize + this.blurSize; - var canvas = this.canvas; - var ctx = canvas.getContext("2d"); - var len3 = data.length; - canvas.width = width; - canvas.height = height; - for (var i2 = 0; i2 < len3; ++i2) { - var p = data[i2]; - var x = p[0]; - var y = p[1]; - var value = p[2]; - var alpha = normalize6(value); - ctx.globalAlpha = alpha; - ctx.drawImage(brush4, x - r, y - r); - } - if (!canvas.width || !canvas.height) { - return canvas; - } - var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); - var pixels = imageData.data; - var offset3 = 0; - var pixelLen = pixels.length; - var minOpacity = this.minOpacity; - var maxOpacity = this.maxOpacity; - var diffOpacity = maxOpacity - minOpacity; - while (offset3 < pixelLen) { - var alpha = pixels[offset3 + 3] / 256; - var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS2 - 1)) * 4; - if (alpha > 0) { - var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange; - alpha > 0 && (alpha = alpha * diffOpacity + minOpacity); - pixels[offset3++] = gradient[gradientOffset]; - pixels[offset3++] = gradient[gradientOffset + 1]; - pixels[offset3++] = gradient[gradientOffset + 2]; - pixels[offset3++] = gradient[gradientOffset + 3] * alpha * 256; - } else { - offset3 += 4; - } - } - ctx.putImageData(imageData, 0, 0); - return canvas; - }; - HeatmapLayer3.prototype._getBrush = function() { - var brushCanvas = this._brushCanvas || (this._brushCanvas = platformApi2.createCanvas()); - var r = this.pointSize + this.blurSize; - var d = r * 2; - brushCanvas.width = d; - brushCanvas.height = d; - var ctx = brushCanvas.getContext("2d"); - ctx.clearRect(0, 0, d, d); - ctx.shadowOffsetX = d; - ctx.shadowBlur = this.blurSize; - ctx.shadowColor = "#000"; - ctx.beginPath(); - ctx.arc(-r, r, this.pointSize, 0, Math.PI * 2, true); - ctx.closePath(); - ctx.fill(); - return brushCanvas; - }; - HeatmapLayer3.prototype._getGradient = function(colorFunc, state) { - var gradientPixels = this._gradientPixels; - var pixelsSingleState = gradientPixels[state] || (gradientPixels[state] = new Uint8ClampedArray(256 * 4)); - var color2 = [0, 0, 0, 0]; - var off = 0; - for (var i2 = 0; i2 < 256; i2++) { - colorFunc[state](i2 / 255, true, color2); - pixelsSingleState[off++] = color2[0]; - pixelsSingleState[off++] = color2[1]; - pixelsSingleState[off++] = color2[2]; - pixelsSingleState[off++] = color2[3]; - } - return pixelsSingleState; - }; - return HeatmapLayer3; - }() - ); - function getIsInPiecewiseRange2(dataExtent, pieceList, selected) { - var dataSpan = dataExtent[1] - dataExtent[0]; - pieceList = map3(pieceList, function(piece) { - return { - interval: [(piece.interval[0] - dataExtent[0]) / dataSpan, (piece.interval[1] - dataExtent[0]) / dataSpan] - }; - }); - var len3 = pieceList.length; - var lastIndex = 0; - return function(val) { - var i2; - for (i2 = lastIndex; i2 < len3; i2++) { - var interval = pieceList[i2].interval; - if (interval[0] <= val && val <= interval[1]) { - lastIndex = i2; - break; - } - } - if (i2 === len3) { - for (i2 = lastIndex - 1; i2 >= 0; i2--) { - var interval = pieceList[i2].interval; - if (interval[0] <= val && val <= interval[1]) { - lastIndex = i2; - break; - } - } - } - return i2 >= 0 && i2 < len3 && selected[i2]; - }; - } - function getIsInContinuousRange2(dataExtent, range) { - var dataSpan = dataExtent[1] - dataExtent[0]; - range = [(range[0] - dataExtent[0]) / dataSpan, (range[1] - dataExtent[0]) / dataSpan]; - return function(val) { - return val >= range[0] && val <= range[1]; - }; - } - function isGeoCoordSys2(coordSys) { - var dimensions = coordSys.dimensions; - return dimensions[0] === "lng" && dimensions[1] === "lat"; - } - var HeatmapView2 = ( - /** @class */ - function(_super) { - __extends2(HeatmapView3, _super); - function HeatmapView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = HeatmapView3.type; - return _this; - } - HeatmapView3.prototype.render = function(seriesModel, ecModel, api) { - var visualMapOfThisSeries; - ecModel.eachComponent("visualMap", function(visualMap) { - visualMap.eachTargetSeries(function(targetSeries) { - if (targetSeries === seriesModel) { - visualMapOfThisSeries = visualMap; - } - }); - }); - if (true) { - if (!visualMapOfThisSeries) { - throw new Error("Heatmap must use with visualMap"); - } - } - this._progressiveEls = null; - this.group.removeAll(); - var coordSys = seriesModel.coordinateSystem; - if (coordSys.type === "cartesian2d" || coordSys.type === "calendar") { - this._renderOnCartesianAndCalendar(seriesModel, api, 0, seriesModel.getData().count()); - } else if (isGeoCoordSys2(coordSys)) { - this._renderOnGeo(coordSys, seriesModel, visualMapOfThisSeries, api); - } - }; - HeatmapView3.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) { - this.group.removeAll(); - }; - HeatmapView3.prototype.incrementalRender = function(params, seriesModel, ecModel, api) { - var coordSys = seriesModel.coordinateSystem; - if (coordSys) { - if (isGeoCoordSys2(coordSys)) { - this.render(seriesModel, ecModel, api); - } else { - this._progressiveEls = []; - this._renderOnCartesianAndCalendar(seriesModel, api, params.start, params.end, true); - } - } - }; - HeatmapView3.prototype.eachRendered = function(cb) { - traverseElements2(this._progressiveEls || this.group, cb); - }; - HeatmapView3.prototype._renderOnCartesianAndCalendar = function(seriesModel, api, start4, end3, incremental) { - var coordSys = seriesModel.coordinateSystem; - var isCartesian2d = isCoordinateSystemType2(coordSys, "cartesian2d"); - var width; - var height; - var xAxisExtent; - var yAxisExtent; - if (isCartesian2d) { - var xAxis = coordSys.getAxis("x"); - var yAxis = coordSys.getAxis("y"); - if (true) { - if (!(xAxis.type === "category" && yAxis.type === "category")) { - throw new Error("Heatmap on cartesian must have two category axes"); - } - if (!(xAxis.onBand && yAxis.onBand)) { - throw new Error("Heatmap on cartesian must have two axes with boundaryGap true"); - } - } - width = xAxis.getBandWidth() + 0.5; - height = yAxis.getBandWidth() + 0.5; - xAxisExtent = xAxis.scale.getExtent(); - yAxisExtent = yAxis.scale.getExtent(); - } - var group = this.group; - var data = seriesModel.getData(); - var emphasisStyle = seriesModel.getModel(["emphasis", "itemStyle"]).getItemStyle(); - var blurStyle = seriesModel.getModel(["blur", "itemStyle"]).getItemStyle(); - var selectStyle = seriesModel.getModel(["select", "itemStyle"]).getItemStyle(); - var borderRadius = seriesModel.get(["itemStyle", "borderRadius"]); - var labelStatesModels = getLabelStatesModels2(seriesModel); - var emphasisModel = seriesModel.getModel("emphasis"); - var focus = emphasisModel.get("focus"); - var blurScope = emphasisModel.get("blurScope"); - var emphasisDisabled = emphasisModel.get("disabled"); - var dataDims = isCartesian2d ? [data.mapDimension("x"), data.mapDimension("y"), data.mapDimension("value")] : [data.mapDimension("time"), data.mapDimension("value")]; - for (var idx = start4; idx < end3; idx++) { - var rect = void 0; - var style = data.getItemVisual(idx, "style"); - if (isCartesian2d) { - var dataDimX = data.get(dataDims[0], idx); - var dataDimY = data.get(dataDims[1], idx); - if (isNaN(data.get(dataDims[2], idx)) || isNaN(dataDimX) || isNaN(dataDimY) || dataDimX < xAxisExtent[0] || dataDimX > xAxisExtent[1] || dataDimY < yAxisExtent[0] || dataDimY > yAxisExtent[1]) { - continue; - } - var point = coordSys.dataToPoint([dataDimX, dataDimY]); - rect = new Rect4({ - shape: { - x: point[0] - width / 2, - y: point[1] - height / 2, - width, - height - }, - style - }); - } else { - if (isNaN(data.get(dataDims[1], idx))) { - continue; - } - rect = new Rect4({ - z2: 1, - shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape, - style - }); - } - if (data.hasItemOption) { - var itemModel = data.getItemModel(idx); - var emphasisModel_1 = itemModel.getModel("emphasis"); - emphasisStyle = emphasisModel_1.getModel("itemStyle").getItemStyle(); - blurStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle(); - selectStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle(); - borderRadius = itemModel.get(["itemStyle", "borderRadius"]); - focus = emphasisModel_1.get("focus"); - blurScope = emphasisModel_1.get("blurScope"); - emphasisDisabled = emphasisModel_1.get("disabled"); - labelStatesModels = getLabelStatesModels2(itemModel); - } - rect.shape.r = borderRadius; - var rawValue = seriesModel.getRawValue(idx); - var defaultText = "-"; - if (rawValue && rawValue[2] != null) { - defaultText = rawValue[2] + ""; - } - setLabelStyle2(rect, labelStatesModels, { - labelFetcher: seriesModel, - labelDataIndex: idx, - defaultOpacity: style.opacity, - defaultText - }); - rect.ensureState("emphasis").style = emphasisStyle; - rect.ensureState("blur").style = blurStyle; - rect.ensureState("select").style = selectStyle; - toggleHoverEmphasis2(rect, focus, blurScope, emphasisDisabled); - rect.incremental = incremental; - if (incremental) { - rect.states.emphasis.hoverLayer = true; - } - group.add(rect); - data.setItemGraphicEl(idx, rect); - if (this._progressiveEls) { - this._progressiveEls.push(rect); - } - } - }; - HeatmapView3.prototype._renderOnGeo = function(geo, seriesModel, visualMapModel, api) { - var inRangeVisuals = visualMapModel.targetVisuals.inRange; - var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange; - var data = seriesModel.getData(); - var hmLayer = this._hmLayer || this._hmLayer || new HeatmapLayer2(); - hmLayer.blurSize = seriesModel.get("blurSize"); - hmLayer.pointSize = seriesModel.get("pointSize"); - hmLayer.minOpacity = seriesModel.get("minOpacity"); - hmLayer.maxOpacity = seriesModel.get("maxOpacity"); - var rect = geo.getViewRect().clone(); - var roamTransform = geo.getRoamTransform(); - rect.applyTransform(roamTransform); - var x = Math.max(rect.x, 0); - var y = Math.max(rect.y, 0); - var x2 = Math.min(rect.width + rect.x, api.getWidth()); - var y2 = Math.min(rect.height + rect.y, api.getHeight()); - var width = x2 - x; - var height = y2 - y; - var dims = [data.mapDimension("lng"), data.mapDimension("lat"), data.mapDimension("value")]; - var points5 = data.mapArray(dims, function(lng, lat, value) { - var pt = geo.dataToPoint([lng, lat]); - pt[0] -= x; - pt[1] -= y; - pt.push(value); - return pt; - }); - var dataExtent = visualMapModel.getExtent(); - var isInRange = visualMapModel.type === "visualMap.continuous" ? getIsInContinuousRange2(dataExtent, visualMapModel.option.range) : getIsInPiecewiseRange2(dataExtent, visualMapModel.getPieceList(), visualMapModel.option.selected); - hmLayer.update(points5, width, height, inRangeVisuals.color.getNormalizer(), { - inRange: inRangeVisuals.color.getColorMapper(), - outOfRange: outOfRangeVisuals.color.getColorMapper() - }, isInRange); - var img = new ZRImage2({ - style: { - width, - height, - x, - y, - image: hmLayer.canvas - }, - silent: true - }); - this.group.add(img); - }; - HeatmapView3.type = "heatmap"; - return HeatmapView3; - }(ChartView2) - ); - var HeatmapSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(HeatmapSeriesModel3, _super); - function HeatmapSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = HeatmapSeriesModel3.type; - return _this; - } - HeatmapSeriesModel3.prototype.getInitialData = function(option, ecModel) { - return createSeriesData2(null, this, { - generateCoord: "value" - }); - }; - HeatmapSeriesModel3.prototype.preventIncremental = function() { - var coordSysCreator = CoordinateSystemManager2.get(this.get("coordinateSystem")); - if (coordSysCreator && coordSysCreator.dimensions) { - return coordSysCreator.dimensions[0] === "lng" && coordSysCreator.dimensions[1] === "lat"; - } - }; - HeatmapSeriesModel3.type = "series.heatmap"; - HeatmapSeriesModel3.dependencies = ["grid", "geo", "calendar"]; - HeatmapSeriesModel3.defaultOption = { - coordinateSystem: "cartesian2d", - // zlevel: 0, - z: 2, - // Cartesian coordinate system - // xAxisIndex: 0, - // yAxisIndex: 0, - // Geo coordinate system - geoIndex: 0, - blurSize: 30, - pointSize: 20, - maxOpacity: 1, - minOpacity: 0, - select: { - itemStyle: { - borderColor: "#212121" - } - } - }; - return HeatmapSeriesModel3; - }(SeriesModel2) - ); - function install$n(registers) { - registers.registerChartView(HeatmapView2); - registers.registerSeriesModel(HeatmapSeriesModel2); - } - var BAR_BORDER_WIDTH_QUERY2 = ["itemStyle", "borderWidth"]; - var LAYOUT_ATTRS2 = [{ - xy: "x", - wh: "width", - index: 0, - posDesc: ["left", "right"] - }, { - xy: "y", - wh: "height", - index: 1, - posDesc: ["top", "bottom"] - }]; - var pathForLineWidth2 = new Circle2(); - var PictorialBarView2 = ( - /** @class */ - function(_super) { - __extends2(PictorialBarView3, _super); - function PictorialBarView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = PictorialBarView3.type; - return _this; - } - PictorialBarView3.prototype.render = function(seriesModel, ecModel, api) { - var group = this.group; - var data = seriesModel.getData(); - var oldData = this._data; - var cartesian = seriesModel.coordinateSystem; - var baseAxis = cartesian.getBaseAxis(); - var isHorizontal = baseAxis.isHorizontal(); - var coordSysRect = cartesian.master.getRect(); - var opt = { - ecSize: { - width: api.getWidth(), - height: api.getHeight() - }, - seriesModel, - coordSys: cartesian, - coordSysExtent: [[coordSysRect.x, coordSysRect.x + coordSysRect.width], [coordSysRect.y, coordSysRect.y + coordSysRect.height]], - isHorizontal, - valueDim: LAYOUT_ATTRS2[+isHorizontal], - categoryDim: LAYOUT_ATTRS2[1 - +isHorizontal] - }; - data.diff(oldData).add(function(dataIndex) { - if (!data.hasValue(dataIndex)) { - return; - } - var itemModel = getItemModel2(data, dataIndex); - var symbolMeta = getSymbolMeta2(data, dataIndex, itemModel, opt); - var bar = createBar2(data, opt, symbolMeta); - data.setItemGraphicEl(dataIndex, bar); - group.add(bar); - updateCommon$1(bar, opt, symbolMeta); - }).update(function(newIndex, oldIndex) { - var bar = oldData.getItemGraphicEl(oldIndex); - if (!data.hasValue(newIndex)) { - group.remove(bar); - return; - } - var itemModel = getItemModel2(data, newIndex); - var symbolMeta = getSymbolMeta2(data, newIndex, itemModel, opt); - var pictorialShapeStr = getShapeStr2(data, symbolMeta); - if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) { - group.remove(bar); - data.setItemGraphicEl(newIndex, null); - bar = null; - } - if (bar) { - updateBar2(bar, opt, symbolMeta); - } else { - bar = createBar2(data, opt, symbolMeta, true); - } - data.setItemGraphicEl(newIndex, bar); - bar.__pictorialSymbolMeta = symbolMeta; - group.add(bar); - updateCommon$1(bar, opt, symbolMeta); - }).remove(function(dataIndex) { - var bar = oldData.getItemGraphicEl(dataIndex); - bar && removeBar2(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar); - }).execute(); - var clipPath = seriesModel.get("clip", true) ? createClipPath2(seriesModel.coordinateSystem, false, seriesModel) : null; - if (clipPath) { - group.setClipPath(clipPath); - } else { - group.removeClipPath(); - } - this._data = data; - return this.group; - }; - PictorialBarView3.prototype.remove = function(ecModel, api) { - var group = this.group; - var data = this._data; - if (ecModel.get("animation")) { - if (data) { - data.eachItemGraphicEl(function(bar) { - removeBar2(data, getECData2(bar).dataIndex, ecModel, bar); - }); - } - } else { - group.removeAll(); - } - }; - PictorialBarView3.type = "pictorialBar"; - return PictorialBarView3; - }(ChartView2) - ); - function getSymbolMeta2(data, dataIndex, itemModel, opt) { - var layout6 = data.getItemLayout(dataIndex); - var symbolRepeat = itemModel.get("symbolRepeat"); - var symbolClip = itemModel.get("symbolClip"); - var symbolPosition = itemModel.get("symbolPosition") || "start"; - var symbolRotate = itemModel.get("symbolRotate"); - var rotation = (symbolRotate || 0) * Math.PI / 180 || 0; - var symbolPatternSize = itemModel.get("symbolPatternSize") || 2; - var isAnimationEnabled3 = itemModel.isAnimationEnabled(); - var symbolMeta = { - dataIndex, - layout: layout6, - itemModel, - symbolType: data.getItemVisual(dataIndex, "symbol") || "circle", - style: data.getItemVisual(dataIndex, "style"), - symbolClip, - symbolRepeat, - symbolRepeatDirection: itemModel.get("symbolRepeatDirection"), - symbolPatternSize, - rotation, - animationModel: isAnimationEnabled3 ? itemModel : null, - hoverScale: isAnimationEnabled3 && itemModel.get(["emphasis", "scale"]), - z2: itemModel.getShallow("z", true) || 0 - }; - prepareBarLength2(itemModel, symbolRepeat, layout6, opt, symbolMeta); - prepareSymbolSize2(data, dataIndex, layout6, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta); - prepareLineWidth2(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta); - var symbolSize = symbolMeta.symbolSize; - var symbolOffset = normalizeSymbolOffset2(itemModel.get("symbolOffset"), symbolSize); - prepareLayoutInfo2(itemModel, symbolSize, layout6, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta); - return symbolMeta; - } - function prepareBarLength2(itemModel, symbolRepeat, layout6, opt, outputSymbolMeta) { - var valueDim = opt.valueDim; - var symbolBoundingData = itemModel.get("symbolBoundingData"); - var valueAxis3 = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis()); - var zeroPx = valueAxis3.toGlobalCoord(valueAxis3.dataToCoord(0)); - var pxSignIdx = 1 - +(layout6[valueDim.wh] <= 0); - var boundingLength; - if (isArray3(symbolBoundingData)) { - var symbolBoundingExtent = [convertToCoordOnAxis2(valueAxis3, symbolBoundingData[0]) - zeroPx, convertToCoordOnAxis2(valueAxis3, symbolBoundingData[1]) - zeroPx]; - symbolBoundingExtent[1] < symbolBoundingExtent[0] && symbolBoundingExtent.reverse(); - boundingLength = symbolBoundingExtent[pxSignIdx]; - } else if (symbolBoundingData != null) { - boundingLength = convertToCoordOnAxis2(valueAxis3, symbolBoundingData) - zeroPx; - } else if (symbolRepeat) { - boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx; - } else { - boundingLength = layout6[valueDim.wh]; - } - outputSymbolMeta.boundingLength = boundingLength; - if (symbolRepeat) { - outputSymbolMeta.repeatCutLength = layout6[valueDim.wh]; - } - var isXAxis = valueDim.xy === "x"; - var isInverse = valueAxis3.inverse; - outputSymbolMeta.pxSign = isXAxis && !isInverse || !isXAxis && isInverse ? boundingLength >= 0 ? 1 : -1 : boundingLength > 0 ? 1 : -1; - } - function convertToCoordOnAxis2(axis, value) { - return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value))); - } - function prepareSymbolSize2(data, dataIndex, layout6, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, outputSymbolMeta) { - var valueDim = opt.valueDim; - var categoryDim = opt.categoryDim; - var categorySize = Math.abs(layout6[categoryDim.wh]); - var symbolSize = data.getItemVisual(dataIndex, "symbolSize"); - var parsedSymbolSize; - if (isArray3(symbolSize)) { - parsedSymbolSize = symbolSize.slice(); - } else { - if (symbolSize == null) { - parsedSymbolSize = ["100%", "100%"]; - } else { - parsedSymbolSize = [symbolSize, symbolSize]; - } - } - parsedSymbolSize[categoryDim.index] = parsePercent$1(parsedSymbolSize[categoryDim.index], categorySize); - parsedSymbolSize[valueDim.index] = parsePercent$1(parsedSymbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength)); - outputSymbolMeta.symbolSize = parsedSymbolSize; - var symbolScale = outputSymbolMeta.symbolScale = [parsedSymbolSize[0] / symbolPatternSize, parsedSymbolSize[1] / symbolPatternSize]; - symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign; - } - function prepareLineWidth2(itemModel, symbolScale, rotation, opt, outputSymbolMeta) { - var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY2) || 0; - if (valueLineWidth) { - pathForLineWidth2.attr({ - scaleX: symbolScale[0], - scaleY: symbolScale[1], - rotation - }); - pathForLineWidth2.updateTransform(); - valueLineWidth /= pathForLineWidth2.getLineScale(); - valueLineWidth *= symbolScale[opt.valueDim.index]; - } - outputSymbolMeta.valueLineWidth = valueLineWidth || 0; - } - function prepareLayoutInfo2(itemModel, symbolSize, layout6, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, outputSymbolMeta) { - var categoryDim = opt.categoryDim; - var valueDim = opt.valueDim; - var pxSign = outputSymbolMeta.pxSign; - var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0); - var pathLen = unitLength; - if (symbolRepeat) { - var absBoundingLength = Math.abs(boundingLength); - var symbolMargin = retrieve4(itemModel.get("symbolMargin"), "15%") + ""; - var hasEndGap = false; - if (symbolMargin.lastIndexOf("!") === symbolMargin.length - 1) { - hasEndGap = true; - symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1); - } - var symbolMarginNumeric = parsePercent$1(symbolMargin, symbolSize[valueDim.index]); - var uLenWithMargin = Math.max(unitLength + symbolMarginNumeric * 2, 0); - var endFix = hasEndGap ? 0 : symbolMarginNumeric * 2; - var repeatSpecified = isNumeric2(symbolRepeat); - var repeatTimes = repeatSpecified ? symbolRepeat : toIntTimes2((absBoundingLength + endFix) / uLenWithMargin); - var mDiff = absBoundingLength - repeatTimes * unitLength; - symbolMarginNumeric = mDiff / 2 / (hasEndGap ? repeatTimes : Math.max(repeatTimes - 1, 1)); - uLenWithMargin = unitLength + symbolMarginNumeric * 2; - endFix = hasEndGap ? 0 : symbolMarginNumeric * 2; - if (!repeatSpecified && symbolRepeat !== "fixed") { - repeatTimes = repeatCutLength ? toIntTimes2((Math.abs(repeatCutLength) + endFix) / uLenWithMargin) : 0; - } - pathLen = repeatTimes * uLenWithMargin - endFix; - outputSymbolMeta.repeatTimes = repeatTimes; - outputSymbolMeta.symbolMargin = symbolMarginNumeric; - } - var sizeFix = pxSign * (pathLen / 2); - var pathPosition = outputSymbolMeta.pathPosition = []; - pathPosition[categoryDim.index] = layout6[categoryDim.wh] / 2; - pathPosition[valueDim.index] = symbolPosition === "start" ? sizeFix : symbolPosition === "end" ? boundingLength - sizeFix : boundingLength / 2; - if (symbolOffset) { - pathPosition[0] += symbolOffset[0]; - pathPosition[1] += symbolOffset[1]; - } - var bundlePosition = outputSymbolMeta.bundlePosition = []; - bundlePosition[categoryDim.index] = layout6[categoryDim.xy]; - bundlePosition[valueDim.index] = layout6[valueDim.xy]; - var barRectShape = outputSymbolMeta.barRectShape = extend3({}, layout6); - barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout6[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix)); - barRectShape[categoryDim.wh] = layout6[categoryDim.wh]; - var clipShape = outputSymbolMeta.clipShape = {}; - clipShape[categoryDim.xy] = -layout6[categoryDim.xy]; - clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh]; - clipShape[valueDim.xy] = 0; - clipShape[valueDim.wh] = layout6[valueDim.wh]; - } - function createPath2(symbolMeta) { - var symbolPatternSize = symbolMeta.symbolPatternSize; - var path = createSymbol3( - // Consider texture img, make a big size. - symbolMeta.symbolType, - -symbolPatternSize / 2, - -symbolPatternSize / 2, - symbolPatternSize, - symbolPatternSize - ); - path.attr({ - culling: true - }); - path.type !== "image" && path.setStyle({ - strokeNoScale: true - }); - return path; - } - function createOrUpdateRepeatSymbols2(bar, opt, symbolMeta, isUpdate) { - var bundle = bar.__pictorialBundle; - var symbolSize = symbolMeta.symbolSize; - var valueLineWidth = symbolMeta.valueLineWidth; - var pathPosition = symbolMeta.pathPosition; - var valueDim = opt.valueDim; - var repeatTimes = symbolMeta.repeatTimes || 0; - var index = 0; - var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2; - eachPath2(bar, function(path2) { - path2.__pictorialAnimationIndex = index; - path2.__pictorialRepeatTimes = repeatTimes; - if (index < repeatTimes) { - updateAttr2(path2, null, makeTarget(index), symbolMeta, isUpdate); - } else { - updateAttr2(path2, null, { - scaleX: 0, - scaleY: 0 - }, symbolMeta, isUpdate, function() { - bundle.remove(path2); - }); - } - index++; - }); - for (; index < repeatTimes; index++) { - var path = createPath2(symbolMeta); - path.__pictorialAnimationIndex = index; - path.__pictorialRepeatTimes = repeatTimes; - bundle.add(path); - var target = makeTarget(index); - updateAttr2(path, { - x: target.x, - y: target.y, - scaleX: 0, - scaleY: 0 - }, { - scaleX: target.scaleX, - scaleY: target.scaleY, - rotation: target.rotation - }, symbolMeta, isUpdate); - } - function makeTarget(index2) { - var position3 = pathPosition.slice(); - var pxSign = symbolMeta.pxSign; - var i2 = index2; - if (symbolMeta.symbolRepeatDirection === "start" ? pxSign > 0 : pxSign < 0) { - i2 = repeatTimes - 1 - index2; - } - position3[valueDim.index] = unit * (i2 - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index]; - return { - x: position3[0], - y: position3[1], - scaleX: symbolMeta.symbolScale[0], - scaleY: symbolMeta.symbolScale[1], - rotation: symbolMeta.rotation - }; - } - } - function createOrUpdateSingleSymbol2(bar, opt, symbolMeta, isUpdate) { - var bundle = bar.__pictorialBundle; - var mainPath = bar.__pictorialMainPath; - if (!mainPath) { - mainPath = bar.__pictorialMainPath = createPath2(symbolMeta); - bundle.add(mainPath); - updateAttr2(mainPath, { - x: symbolMeta.pathPosition[0], - y: symbolMeta.pathPosition[1], - scaleX: 0, - scaleY: 0, - rotation: symbolMeta.rotation - }, { - scaleX: symbolMeta.symbolScale[0], - scaleY: symbolMeta.symbolScale[1] - }, symbolMeta, isUpdate); - } else { - updateAttr2(mainPath, null, { - x: symbolMeta.pathPosition[0], - y: symbolMeta.pathPosition[1], - scaleX: symbolMeta.symbolScale[0], - scaleY: symbolMeta.symbolScale[1], - rotation: symbolMeta.rotation - }, symbolMeta, isUpdate); - } - } - function createOrUpdateBarRect2(bar, symbolMeta, isUpdate) { - var rectShape = extend3({}, symbolMeta.barRectShape); - var barRect = bar.__pictorialBarRect; - if (!barRect) { - barRect = bar.__pictorialBarRect = new Rect4({ - z2: 2, - shape: rectShape, - silent: true, - style: { - stroke: "transparent", - fill: "transparent", - lineWidth: 0 - } - }); - barRect.disableMorphing = true; - bar.add(barRect); - } else { - updateAttr2(barRect, null, { - shape: rectShape - }, symbolMeta, isUpdate); - } - } - function createOrUpdateClip2(bar, opt, symbolMeta, isUpdate) { - if (symbolMeta.symbolClip) { - var clipPath = bar.__pictorialClipPath; - var clipShape = extend3({}, symbolMeta.clipShape); - var valueDim = opt.valueDim; - var animationModel = symbolMeta.animationModel; - var dataIndex = symbolMeta.dataIndex; - if (clipPath) { - updateProps3(clipPath, { - shape: clipShape - }, animationModel, dataIndex); - } else { - clipShape[valueDim.wh] = 0; - clipPath = new Rect4({ - shape: clipShape - }); - bar.__pictorialBundle.setClipPath(clipPath); - bar.__pictorialClipPath = clipPath; - var target = {}; - target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh]; - graphic[isUpdate ? "updateProps" : "initProps"](clipPath, { - shape: target - }, animationModel, dataIndex); - } - } - } - function getItemModel2(data, dataIndex) { - var itemModel = data.getItemModel(dataIndex); - itemModel.getAnimationDelayParams = getAnimationDelayParams2; - itemModel.isAnimationEnabled = isAnimationEnabled2; - return itemModel; - } - function getAnimationDelayParams2(path) { - return { - index: path.__pictorialAnimationIndex, - count: path.__pictorialRepeatTimes - }; - } - function isAnimationEnabled2() { - return this.parentModel.isAnimationEnabled() && !!this.getShallow("animation"); - } - function createBar2(data, opt, symbolMeta, isUpdate) { - var bar = new Group5(); - var bundle = new Group5(); - bar.add(bundle); - bar.__pictorialBundle = bundle; - bundle.x = symbolMeta.bundlePosition[0]; - bundle.y = symbolMeta.bundlePosition[1]; - if (symbolMeta.symbolRepeat) { - createOrUpdateRepeatSymbols2(bar, opt, symbolMeta); - } else { - createOrUpdateSingleSymbol2(bar, opt, symbolMeta); - } - createOrUpdateBarRect2(bar, symbolMeta, isUpdate); - createOrUpdateClip2(bar, opt, symbolMeta, isUpdate); - bar.__pictorialShapeStr = getShapeStr2(data, symbolMeta); - bar.__pictorialSymbolMeta = symbolMeta; - return bar; - } - function updateBar2(bar, opt, symbolMeta) { - var animationModel = symbolMeta.animationModel; - var dataIndex = symbolMeta.dataIndex; - var bundle = bar.__pictorialBundle; - updateProps3(bundle, { - x: symbolMeta.bundlePosition[0], - y: symbolMeta.bundlePosition[1] - }, animationModel, dataIndex); - if (symbolMeta.symbolRepeat) { - createOrUpdateRepeatSymbols2(bar, opt, symbolMeta, true); - } else { - createOrUpdateSingleSymbol2(bar, opt, symbolMeta, true); - } - createOrUpdateBarRect2(bar, symbolMeta, true); - createOrUpdateClip2(bar, opt, symbolMeta, true); - } - function removeBar2(data, dataIndex, animationModel, bar) { - var labelRect = bar.__pictorialBarRect; - labelRect && labelRect.removeTextContent(); - var paths = []; - eachPath2(bar, function(path) { - paths.push(path); - }); - bar.__pictorialMainPath && paths.push(bar.__pictorialMainPath); - bar.__pictorialClipPath && (animationModel = null); - each17(paths, function(path) { - removeElement2(path, { - scaleX: 0, - scaleY: 0 - }, animationModel, dataIndex, function() { - bar.parent && bar.parent.remove(bar); - }); - }); - data.setItemGraphicEl(dataIndex, null); - } - function getShapeStr2(data, symbolMeta) { - return [data.getItemVisual(symbolMeta.dataIndex, "symbol") || "none", !!symbolMeta.symbolRepeat, !!symbolMeta.symbolClip].join(":"); - } - function eachPath2(bar, cb, context) { - each17(bar.__pictorialBundle.children(), function(el) { - el !== bar.__pictorialBarRect && cb.call(context, el); - }); - } - function updateAttr2(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) { - immediateAttrs && el.attr(immediateAttrs); - if (symbolMeta.symbolClip && !isUpdate) { - animationAttrs && el.attr(animationAttrs); - } else { - animationAttrs && graphic[isUpdate ? "updateProps" : "initProps"](el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb); - } - } - function updateCommon$1(bar, opt, symbolMeta) { - var dataIndex = symbolMeta.dataIndex; - var itemModel = symbolMeta.itemModel; - var emphasisModel = itemModel.getModel("emphasis"); - var emphasisStyle = emphasisModel.getModel("itemStyle").getItemStyle(); - var blurStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle(); - var selectStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle(); - var cursorStyle = itemModel.getShallow("cursor"); - var focus = emphasisModel.get("focus"); - var blurScope = emphasisModel.get("blurScope"); - var hoverScale = emphasisModel.get("scale"); - eachPath2(bar, function(path) { - if (path instanceof ZRImage2) { - var pathStyle = path.style; - path.useStyle(extend3({ - // TODO other properties like dx, dy ? - image: pathStyle.image, - x: pathStyle.x, - y: pathStyle.y, - width: pathStyle.width, - height: pathStyle.height - }, symbolMeta.style)); - } else { - path.useStyle(symbolMeta.style); - } - var emphasisState = path.ensureState("emphasis"); - emphasisState.style = emphasisStyle; - if (hoverScale) { - emphasisState.scaleX = path.scaleX * 1.1; - emphasisState.scaleY = path.scaleY * 1.1; - } - path.ensureState("blur").style = blurStyle; - path.ensureState("select").style = selectStyle; - cursorStyle && (path.cursor = cursorStyle); - path.z2 = symbolMeta.z2; - }); - var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)]; - var barRect = bar.__pictorialBarRect; - barRect.ignoreClip = true; - setLabelStyle2(barRect, getLabelStatesModels2(itemModel), { - labelFetcher: opt.seriesModel, - labelDataIndex: dataIndex, - defaultText: getDefaultLabel2(opt.seriesModel.getData(), dataIndex), - inheritColor: symbolMeta.style.fill, - defaultOpacity: symbolMeta.style.opacity, - defaultOutsidePosition: barPositionOutside - }); - toggleHoverEmphasis2(bar, focus, blurScope, emphasisModel.get("disabled")); - } - function toIntTimes2(times) { - var roundedTimes = Math.round(times); - return Math.abs(times - roundedTimes) < 1e-4 ? roundedTimes : Math.ceil(times); - } - var PictorialBarSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(PictorialBarSeriesModel3, _super); - function PictorialBarSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = PictorialBarSeriesModel3.type; - _this.hasSymbolVisual = true; - _this.defaultSymbol = "roundRect"; - return _this; - } - PictorialBarSeriesModel3.prototype.getInitialData = function(option) { - option.stack = null; - return _super.prototype.getInitialData.apply(this, arguments); - }; - PictorialBarSeriesModel3.type = "series.pictorialBar"; - PictorialBarSeriesModel3.dependencies = ["grid"]; - PictorialBarSeriesModel3.defaultOption = inheritDefaultOption2(BaseBarSeriesModel2.defaultOption, { - symbol: "circle", - symbolSize: null, - symbolRotate: null, - symbolPosition: null, - symbolOffset: null, - symbolMargin: null, - symbolRepeat: false, - symbolRepeatDirection: "end", - symbolClip: false, - symbolBoundingData: null, - symbolPatternSize: 400, - barGap: "-100%", - // Pictorial bar do not clip by default because in many cases - // xAxis and yAxis are not displayed and it's expected not to clip - clip: false, - // z can be set in data item, which is z2 actually. - // Disable progressive - progressive: 0, - emphasis: { - // By default pictorialBar do not hover scale. Hover scale is not suitable - // for the case that both has foreground and background. - scale: false - }, - select: { - itemStyle: { - borderColor: "#212121" - } - } - }); - return PictorialBarSeriesModel3; - }(BaseBarSeriesModel2) - ); - function install$o(registers) { - registers.registerChartView(PictorialBarView2); - registers.registerSeriesModel(PictorialBarSeriesModel2); - registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, curry3(layout5, "pictorialBar")); - registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout2("pictorialBar")); - } - var ThemeRiverView2 = ( - /** @class */ - function(_super) { - __extends2(ThemeRiverView3, _super); - function ThemeRiverView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ThemeRiverView3.type; - _this._layers = []; - return _this; - } - ThemeRiverView3.prototype.render = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var self2 = this; - var group = this.group; - var layersSeries = seriesModel.getLayerSeries(); - var layoutInfo = data.getLayout("layoutInfo"); - var rect = layoutInfo.rect; - var boundaryGap = layoutInfo.boundaryGap; - group.x = 0; - group.y = rect.y + boundaryGap[0]; - function keyGetter(item) { - return item.name; - } - var dataDiffer = new DataDiffer2(this._layersSeries || [], layersSeries, keyGetter, keyGetter); - var newLayersGroups = []; - dataDiffer.add(bind3(process2, this, "add")).update(bind3(process2, this, "update")).remove(bind3(process2, this, "remove")).execute(); - function process2(status, idx, oldIdx) { - var oldLayersGroups = self2._layers; - if (status === "remove") { - group.remove(oldLayersGroups[idx]); - return; - } - var points0 = []; - var points1 = []; - var style; - var indices = layersSeries[idx].indices; - var j = 0; - for (; j < indices.length; j++) { - var layout6 = data.getItemLayout(indices[j]); - var x = layout6.x; - var y0 = layout6.y0; - var y = layout6.y; - points0.push(x, y0); - points1.push(x, y0 + y); - style = data.getItemVisual(indices[j], "style"); - } - var polygon; - var textLayout = data.getItemLayout(indices[0]); - var labelModel = seriesModel.getModel("label"); - var margin = labelModel.get("margin"); - var emphasisModel = seriesModel.getModel("emphasis"); - if (status === "add") { - var layerGroup = newLayersGroups[idx] = new Group5(); - polygon = new ECPolygon2({ - shape: { - points: points0, - stackedOnPoints: points1, - smooth: 0.4, - stackedOnSmooth: 0.4, - smoothConstraint: false - }, - z2: 0 - }); - layerGroup.add(polygon); - group.add(layerGroup); - if (seriesModel.isAnimationEnabled()) { - polygon.setClipPath(createGridClipShape$2(polygon.getBoundingRect(), seriesModel, function() { - polygon.removeClipPath(); - })); - } - } else { - var layerGroup = oldLayersGroups[oldIdx]; - polygon = layerGroup.childAt(0); - group.add(layerGroup); - newLayersGroups[idx] = layerGroup; - updateProps3(polygon, { - shape: { - points: points0, - stackedOnPoints: points1 - } - }, seriesModel); - saveOldStyle2(polygon); - } - setLabelStyle2(polygon, getLabelStatesModels2(seriesModel), { - labelDataIndex: indices[j - 1], - defaultText: data.getName(indices[j - 1]), - inheritColor: style.fill - }, { - normal: { - verticalAlign: "middle" - // align: 'right' - } - }); - polygon.setTextConfig({ - position: null, - local: true - }); - var labelEl = polygon.getTextContent(); - if (labelEl) { - labelEl.x = textLayout.x - margin; - labelEl.y = textLayout.y0 + textLayout.y / 2; - } - polygon.useStyle(style); - data.setItemGraphicEl(idx, polygon); - setStatesStylesFromModel2(polygon, seriesModel); - toggleHoverEmphasis2(polygon, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - } - this._layersSeries = layersSeries; - this._layers = newLayersGroups; - }; - ThemeRiverView3.type = "themeRiver"; - return ThemeRiverView3; - }(ChartView2) - ); - function createGridClipShape$2(rect, seriesModel, cb) { - var rectEl = new Rect4({ - shape: { - x: rect.x - 10, - y: rect.y - 10, - width: 0, - height: rect.height + 20 - } - }); - initProps2(rectEl, { - shape: { - x: rect.x - 50, - width: rect.width + 100, - height: rect.height + 20 - } - }, seriesModel, cb); - return rectEl; - } - var DATA_NAME_INDEX2 = 2; - var ThemeRiverSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(ThemeRiverSeriesModel3, _super); - function ThemeRiverSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ThemeRiverSeriesModel3.type; - return _this; - } - ThemeRiverSeriesModel3.prototype.init = function(option) { - _super.prototype.init.apply(this, arguments); - this.legendVisualProvider = new LegendVisualProvider2(bind3(this.getData, this), bind3(this.getRawData, this)); - }; - ThemeRiverSeriesModel3.prototype.fixData = function(data) { - var rawDataLength = data.length; - var timeValueKeys = {}; - var groupResult = groupData2(data, function(item) { - if (!timeValueKeys.hasOwnProperty(item[0] + "")) { - timeValueKeys[item[0] + ""] = -1; - } - return item[2]; - }); - var layerData = []; - groupResult.buckets.each(function(items, key) { - layerData.push({ - name: key, - dataList: items - }); - }); - var layerNum = layerData.length; - for (var k2 = 0; k2 < layerNum; ++k2) { - var name_1 = layerData[k2].name; - for (var j = 0; j < layerData[k2].dataList.length; ++j) { - var timeValue = layerData[k2].dataList[j][0] + ""; - timeValueKeys[timeValue] = k2; - } - for (var timeValue in timeValueKeys) { - if (timeValueKeys.hasOwnProperty(timeValue) && timeValueKeys[timeValue] !== k2) { - timeValueKeys[timeValue] = k2; - data[rawDataLength] = [timeValue, 0, name_1]; - rawDataLength++; - } - } - } - return data; - }; - ThemeRiverSeriesModel3.prototype.getInitialData = function(option, ecModel) { - var singleAxisModel = this.getReferringComponents("singleAxis", SINGLE_REFERRING2).models[0]; - var axisType = singleAxisModel.get("type"); - var filterData = filter2(option.data, function(dataItem) { - return dataItem[2] !== void 0; - }); - var data = this.fixData(filterData || []); - var nameList = []; - var nameMap = this.nameMap = createHashMap2(); - var count3 = 0; - for (var i2 = 0; i2 < data.length; ++i2) { - nameList.push(data[i2][DATA_NAME_INDEX2]); - if (!nameMap.get(data[i2][DATA_NAME_INDEX2])) { - nameMap.set(data[i2][DATA_NAME_INDEX2], count3); - count3++; - } - } - var dimensions = prepareSeriesDataSchema2(data, { - coordDimensions: ["single"], - dimensionsDefine: [{ - name: "time", - type: getDimensionTypeByAxis2(axisType) - }, { - name: "value", - type: "float" - }, { - name: "name", - type: "ordinal" - }], - encodeDefine: { - single: 0, - value: 1, - itemName: 2 - } - }).dimensions; - var list = new SeriesData2(dimensions, this); - list.initData(data); - return list; - }; - ThemeRiverSeriesModel3.prototype.getLayerSeries = function() { - var data = this.getData(); - var lenCount = data.count(); - var indexArr = []; - for (var i2 = 0; i2 < lenCount; ++i2) { - indexArr[i2] = i2; - } - var timeDim = data.mapDimension("single"); - var groupResult = groupData2(indexArr, function(index) { - return data.get("name", index); - }); - var layerSeries = []; - groupResult.buckets.each(function(items, key) { - items.sort(function(index1, index2) { - return data.get(timeDim, index1) - data.get(timeDim, index2); - }); - layerSeries.push({ - name: key, - indices: items - }); - }); - return layerSeries; - }; - ThemeRiverSeriesModel3.prototype.getAxisTooltipData = function(dim, value, baseAxis) { - if (!isArray3(dim)) { - dim = dim ? [dim] : []; - } - var data = this.getData(); - var layerSeries = this.getLayerSeries(); - var indices = []; - var layerNum = layerSeries.length; - var nestestValue; - for (var i2 = 0; i2 < layerNum; ++i2) { - var minDist = Number.MAX_VALUE; - var nearestIdx = -1; - var pointNum = layerSeries[i2].indices.length; - for (var j = 0; j < pointNum; ++j) { - var theValue = data.get(dim[0], layerSeries[i2].indices[j]); - var dist4 = Math.abs(theValue - value); - if (dist4 <= minDist) { - nestestValue = theValue; - minDist = dist4; - nearestIdx = layerSeries[i2].indices[j]; - } - } - indices.push(nearestIdx); - } - return { - dataIndices: indices, - nestestValue - }; - }; - ThemeRiverSeriesModel3.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - var data = this.getData(); - var name = data.getName(dataIndex); - var value = data.get(data.mapDimension("value"), dataIndex); - return createTooltipMarkup2("nameValue", { - name, - value - }); - }; - ThemeRiverSeriesModel3.type = "series.themeRiver"; - ThemeRiverSeriesModel3.dependencies = ["singleAxis"]; - ThemeRiverSeriesModel3.defaultOption = { - // zlevel: 0, - z: 2, - colorBy: "data", - coordinateSystem: "singleAxis", - // gap in axis's orthogonal orientation - boundaryGap: ["10%", "10%"], - // legendHoverLink: true, - singleAxisIndex: 0, - animationEasing: "linear", - label: { - margin: 4, - show: true, - position: "left", - fontSize: 11 - }, - emphasis: { - label: { - show: true - } - } - }; - return ThemeRiverSeriesModel3; - }(SeriesModel2) - ); - function themeRiverLayout2(ecModel, api) { - ecModel.eachSeriesByType("themeRiver", function(seriesModel) { - var data = seriesModel.getData(); - var single = seriesModel.coordinateSystem; - var layoutInfo = {}; - var rect = single.getRect(); - layoutInfo.rect = rect; - var boundaryGap = seriesModel.get("boundaryGap"); - var axis = single.getAxis(); - layoutInfo.boundaryGap = boundaryGap; - if (axis.orient === "horizontal") { - boundaryGap[0] = parsePercent$1(boundaryGap[0], rect.height); - boundaryGap[1] = parsePercent$1(boundaryGap[1], rect.height); - var height = rect.height - boundaryGap[0] - boundaryGap[1]; - doThemeRiverLayout2(data, seriesModel, height); - } else { - boundaryGap[0] = parsePercent$1(boundaryGap[0], rect.width); - boundaryGap[1] = parsePercent$1(boundaryGap[1], rect.width); - var width = rect.width - boundaryGap[0] - boundaryGap[1]; - doThemeRiverLayout2(data, seriesModel, width); - } - data.setLayout("layoutInfo", layoutInfo); - }); - } - function doThemeRiverLayout2(data, seriesModel, height) { - if (!data.count()) { - return; - } - var coordSys = seriesModel.coordinateSystem; - var layerSeries = seriesModel.getLayerSeries(); - var timeDim = data.mapDimension("single"); - var valueDim = data.mapDimension("value"); - var layerPoints = map3(layerSeries, function(singleLayer) { - return map3(singleLayer.indices, function(idx) { - var pt = coordSys.dataToPoint(data.get(timeDim, idx)); - pt[1] = data.get(valueDim, idx); - return pt; - }); - }); - var base3 = computeBaseline2(layerPoints); - var baseLine = base3.y0; - var ky = height / base3.max; - var n = layerSeries.length; - var m3 = layerSeries[0].indices.length; - var baseY0; - for (var j = 0; j < m3; ++j) { - baseY0 = baseLine[j] * ky; - data.setItemLayout(layerSeries[0].indices[j], { - layerIndex: 0, - x: layerPoints[0][j][0], - y0: baseY0, - y: layerPoints[0][j][1] * ky - }); - for (var i2 = 1; i2 < n; ++i2) { - baseY0 += layerPoints[i2 - 1][j][1] * ky; - data.setItemLayout(layerSeries[i2].indices[j], { - layerIndex: i2, - x: layerPoints[i2][j][0], - y0: baseY0, - y: layerPoints[i2][j][1] * ky - }); - } - } - } - function computeBaseline2(data) { - var layerNum = data.length; - var pointNum = data[0].length; - var sums = []; - var y0 = []; - var max5 = 0; - for (var i2 = 0; i2 < pointNum; ++i2) { - var temp = 0; - for (var j = 0; j < layerNum; ++j) { - temp += data[j][i2][1]; - } - if (temp > max5) { - max5 = temp; - } - sums.push(temp); - } - for (var k2 = 0; k2 < pointNum; ++k2) { - y0[k2] = (max5 - sums[k2]) / 2; - } - max5 = 0; - for (var l = 0; l < pointNum; ++l) { - var sum3 = sums[l] + y0[l]; - if (sum3 > max5) { - max5 = sum3; - } - } - return { - y0, - max: max5 - }; - } - function install$p(registers) { - registers.registerChartView(ThemeRiverView2); - registers.registerSeriesModel(ThemeRiverSeriesModel2); - registers.registerLayout(themeRiverLayout2); - registers.registerProcessor(dataFilter3("themeRiver")); - } - var DEFAULT_SECTOR_Z2 = 2; - var DEFAULT_TEXT_Z2 = 4; - var SunburstPiece2 = ( - /** @class */ - function(_super) { - __extends2(SunburstPiece3, _super); - function SunburstPiece3(node, seriesModel, ecModel, api) { - var _this = _super.call(this) || this; - _this.z2 = DEFAULT_SECTOR_Z2; - _this.textConfig = { - inside: true - }; - getECData2(_this).seriesIndex = seriesModel.seriesIndex; - var text = new ZRText2({ - z2: DEFAULT_TEXT_Z2, - silent: node.getModel().get(["label", "silent"]) - }); - _this.setTextContent(text); - _this.updateData(true, node, seriesModel, ecModel, api); - return _this; - } - SunburstPiece3.prototype.updateData = function(firstCreate, node, seriesModel, ecModel, api) { - this.node = node; - node.piece = this; - seriesModel = seriesModel || this._seriesModel; - ecModel = ecModel || this._ecModel; - var sector = this; - getECData2(sector).dataIndex = node.dataIndex; - var itemModel = node.getModel(); - var emphasisModel = itemModel.getModel("emphasis"); - var layout6 = node.getLayout(); - var sectorShape = extend3({}, layout6); - sectorShape.label = null; - var normalStyle = node.getVisual("style"); - normalStyle.lineJoin = "bevel"; - var decal = node.getVisual("decal"); - if (decal) { - normalStyle.decal = createOrUpdatePatternFromDecal2(decal, api); - } - var cornerRadius = getSectorCornerRadius2(itemModel.getModel("itemStyle"), sectorShape, true); - extend3(sectorShape, cornerRadius); - each17(SPECIAL_STATES2, function(stateName) { - var state = sector.ensureState(stateName); - var itemStyleModel = itemModel.getModel([stateName, "itemStyle"]); - state.style = itemStyleModel.getItemStyle(); - var cornerRadius2 = getSectorCornerRadius2(itemStyleModel, sectorShape); - if (cornerRadius2) { - state.shape = cornerRadius2; - } - }); - if (firstCreate) { - sector.setShape(sectorShape); - sector.shape.r = layout6.r0; - initProps2(sector, { - shape: { - r: layout6.r - } - }, seriesModel, node.dataIndex); - } else { - updateProps3(sector, { - shape: sectorShape - }, seriesModel); - saveOldStyle2(sector); - } - sector.useStyle(normalStyle); - this._updateLabel(seriesModel); - var cursorStyle = itemModel.getShallow("cursor"); - cursorStyle && sector.attr("cursor", cursorStyle); - this._seriesModel = seriesModel || this._seriesModel; - this._ecModel = ecModel || this._ecModel; - var focus = emphasisModel.get("focus"); - var focusOrIndices = focus === "relative" ? concatArray2(node.getAncestorsIndices(), node.getDescendantIndices()) : focus === "ancestor" ? node.getAncestorsIndices() : focus === "descendant" ? node.getDescendantIndices() : focus; - toggleHoverEmphasis2(this, focusOrIndices, emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - }; - SunburstPiece3.prototype._updateLabel = function(seriesModel) { - var _this = this; - var itemModel = this.node.getModel(); - var normalLabelModel = itemModel.getModel("label"); - var layout6 = this.node.getLayout(); - var angle = layout6.endAngle - layout6.startAngle; - var midAngle = (layout6.startAngle + layout6.endAngle) / 2; - var dx = Math.cos(midAngle); - var dy = Math.sin(midAngle); - var sector = this; - var label = sector.getTextContent(); - var dataIndex = this.node.dataIndex; - var labelMinAngle = normalLabelModel.get("minAngle") / 180 * Math.PI; - var isNormalShown = normalLabelModel.get("show") && !(labelMinAngle != null && Math.abs(angle) < labelMinAngle); - label.ignore = !isNormalShown; - each17(DISPLAY_STATES2, function(stateName) { - var labelStateModel = stateName === "normal" ? itemModel.getModel("label") : itemModel.getModel([stateName, "label"]); - var isNormal = stateName === "normal"; - var state = isNormal ? label : label.ensureState(stateName); - var text = seriesModel.getFormattedLabel(dataIndex, stateName); - if (isNormal) { - text = text || _this.node.name; - } - state.style = createTextStyle3(labelStateModel, {}, null, stateName !== "normal", true); - if (text) { - state.style.text = text; - } - var isShown = labelStateModel.get("show"); - if (isShown != null && !isNormal) { - state.ignore = !isShown; - } - var labelPosition = getLabelAttr(labelStateModel, "position"); - var sectorState = isNormal ? sector : sector.states[stateName]; - var labelColor = sectorState.style.fill; - sectorState.textConfig = { - outsideFill: labelStateModel.get("color") === "inherit" ? labelColor : null, - inside: labelPosition !== "outside" - }; - var r; - var labelPadding = getLabelAttr(labelStateModel, "distance") || 0; - var textAlign = getLabelAttr(labelStateModel, "align"); - var rotateType = getLabelAttr(labelStateModel, "rotate"); - var flipStartAngle = Math.PI * 0.5; - var flipEndAngle = Math.PI * 1.5; - var midAngleNormal = normalizeRadian2(rotateType === "tangential" ? Math.PI / 2 - midAngle : midAngle); - var needsFlip = midAngleNormal > flipStartAngle && !isRadianAroundZero2(midAngleNormal - flipStartAngle) && midAngleNormal < flipEndAngle; - if (labelPosition === "outside") { - r = layout6.r + labelPadding; - textAlign = needsFlip ? "right" : "left"; - } else { - if (!textAlign || textAlign === "center") { - if (angle === 2 * Math.PI && layout6.r0 === 0) { - r = 0; - } else { - r = (layout6.r + layout6.r0) / 2; - } - textAlign = "center"; - } else if (textAlign === "left") { - r = layout6.r0 + labelPadding; - textAlign = needsFlip ? "right" : "left"; - } else if (textAlign === "right") { - r = layout6.r - labelPadding; - textAlign = needsFlip ? "left" : "right"; - } - } - state.style.align = textAlign; - state.style.verticalAlign = getLabelAttr(labelStateModel, "verticalAlign") || "middle"; - state.x = r * dx + layout6.cx; - state.y = r * dy + layout6.cy; - var rotate3 = 0; - if (rotateType === "radial") { - rotate3 = normalizeRadian2(-midAngle) + (needsFlip ? Math.PI : 0); - } else if (rotateType === "tangential") { - rotate3 = normalizeRadian2(Math.PI / 2 - midAngle) + (needsFlip ? Math.PI : 0); - } else if (isNumber2(rotateType)) { - rotate3 = rotateType * Math.PI / 180; - } - state.rotation = normalizeRadian2(rotate3); - }); - function getLabelAttr(model, name) { - var stateAttr = model.get(name); - if (stateAttr == null) { - return normalLabelModel.get(name); - } - return stateAttr; - } - label.dirtyStyle(); - }; - return SunburstPiece3; - }(Sector2) - ); - var ROOT_TO_NODE_ACTION2 = "sunburstRootToNode"; - var HIGHLIGHT_ACTION2 = "sunburstHighlight"; - var UNHIGHLIGHT_ACTION2 = "sunburstUnhighlight"; - function installSunburstAction2(registers) { - registers.registerAction({ - type: ROOT_TO_NODE_ACTION2, - update: "updateView" - }, function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "series", - subType: "sunburst", - query: payload - }, handleRootToNode); - function handleRootToNode(model, index) { - var targetInfo = retrieveTargetInfo2(payload, [ROOT_TO_NODE_ACTION2], model); - if (targetInfo) { - var originViewRoot = model.getViewRoot(); - if (originViewRoot) { - payload.direction = aboveViewRoot2(originViewRoot, targetInfo.node) ? "rollUp" : "drillDown"; - } - model.resetViewRoot(targetInfo.node); - } - } - }); - registers.registerAction({ - type: HIGHLIGHT_ACTION2, - update: "none" - }, function(payload, ecModel, api) { - payload = extend3({}, payload); - ecModel.eachComponent({ - mainType: "series", - subType: "sunburst", - query: payload - }, handleHighlight); - function handleHighlight(model) { - var targetInfo = retrieveTargetInfo2(payload, [HIGHLIGHT_ACTION2], model); - if (targetInfo) { - payload.dataIndex = targetInfo.node.dataIndex; - } - } - if (true) { - deprecateReplaceLog2("sunburstHighlight", "highlight"); - } - api.dispatchAction(extend3(payload, { - type: "highlight" - })); - }); - registers.registerAction({ - type: UNHIGHLIGHT_ACTION2, - update: "updateView" - }, function(payload, ecModel, api) { - payload = extend3({}, payload); - if (true) { - deprecateReplaceLog2("sunburstUnhighlight", "downplay"); - } - api.dispatchAction(extend3(payload, { - type: "downplay" - })); - }); - } - var SunburstView2 = ( - /** @class */ - function(_super) { - __extends2(SunburstView3, _super); - function SunburstView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SunburstView3.type; - return _this; - } - SunburstView3.prototype.render = function(seriesModel, ecModel, api, payload) { - var self2 = this; - this.seriesModel = seriesModel; - this.api = api; - this.ecModel = ecModel; - var data = seriesModel.getData(); - var virtualRoot = data.tree.root; - var newRoot = seriesModel.getViewRoot(); - var group = this.group; - var renderLabelForZeroData = seriesModel.get("renderLabelForZeroData"); - var newChildren = []; - newRoot.eachNode(function(node) { - newChildren.push(node); - }); - var oldChildren = this._oldChildren || []; - dualTravel(newChildren, oldChildren); - renderRollUp(virtualRoot, newRoot); - this._initEvents(); - this._oldChildren = newChildren; - function dualTravel(newChildren2, oldChildren2) { - if (newChildren2.length === 0 && oldChildren2.length === 0) { - return; - } - new DataDiffer2(oldChildren2, newChildren2, getKey3, getKey3).add(processNode).update(processNode).remove(curry3(processNode, null)).execute(); - function getKey3(node) { - return node.getId(); - } - function processNode(newIdx, oldIdx) { - var newNode = newIdx == null ? null : newChildren2[newIdx]; - var oldNode = oldIdx == null ? null : oldChildren2[oldIdx]; - doRenderNode(newNode, oldNode); - } - } - function doRenderNode(newNode, oldNode) { - if (!renderLabelForZeroData && newNode && !newNode.getValue()) { - newNode = null; - } - if (newNode !== virtualRoot && oldNode !== virtualRoot) { - if (oldNode && oldNode.piece) { - if (newNode) { - oldNode.piece.updateData(false, newNode, seriesModel, ecModel, api); - data.setItemGraphicEl(newNode.dataIndex, oldNode.piece); - } else { - removeNode3(oldNode); - } - } else if (newNode) { - var piece = new SunburstPiece2(newNode, seriesModel, ecModel, api); - group.add(piece); - data.setItemGraphicEl(newNode.dataIndex, piece); - } - } - } - function removeNode3(node) { - if (!node) { - return; - } - if (node.piece) { - group.remove(node.piece); - node.piece = null; - } - } - function renderRollUp(virtualRoot2, viewRoot) { - if (viewRoot.depth > 0) { - if (self2.virtualPiece) { - self2.virtualPiece.updateData(false, virtualRoot2, seriesModel, ecModel, api); - } else { - self2.virtualPiece = new SunburstPiece2(virtualRoot2, seriesModel, ecModel, api); - group.add(self2.virtualPiece); - } - viewRoot.piece.off("click"); - self2.virtualPiece.on("click", function(e3) { - self2._rootToNode(viewRoot.parentNode); - }); - } else if (self2.virtualPiece) { - group.remove(self2.virtualPiece); - self2.virtualPiece = null; - } - } - }; - SunburstView3.prototype._initEvents = function() { - var _this = this; - this.group.off("click"); - this.group.on("click", function(e3) { - var targetFound = false; - var viewRoot = _this.seriesModel.getViewRoot(); - viewRoot.eachNode(function(node) { - if (!targetFound && node.piece && node.piece === e3.target) { - var nodeClick = node.getModel().get("nodeClick"); - if (nodeClick === "rootToNode") { - _this._rootToNode(node); - } else if (nodeClick === "link") { - var itemModel = node.getModel(); - var link = itemModel.get("link"); - if (link) { - var linkTarget = itemModel.get("target", true) || "_blank"; - windowOpen2(link, linkTarget); - } - } - targetFound = true; - } - }); - }); - }; - SunburstView3.prototype._rootToNode = function(node) { - if (node !== this.seriesModel.getViewRoot()) { - this.api.dispatchAction({ - type: ROOT_TO_NODE_ACTION2, - from: this.uid, - seriesId: this.seriesModel.id, - targetNode: node - }); - } - }; - SunburstView3.prototype.containPoint = function(point, seriesModel) { - var treeRoot = seriesModel.getData(); - var itemLayout = treeRoot.getItemLayout(0); - if (itemLayout) { - var dx = point[0] - itemLayout.cx; - var dy = point[1] - itemLayout.cy; - var radius = Math.sqrt(dx * dx + dy * dy); - return radius <= itemLayout.r && radius >= itemLayout.r0; - } - }; - SunburstView3.type = "sunburst"; - return SunburstView3; - }(ChartView2) - ); - var SunburstSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(SunburstSeriesModel3, _super); - function SunburstSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SunburstSeriesModel3.type; - _this.ignoreStyleOnData = true; - return _this; - } - SunburstSeriesModel3.prototype.getInitialData = function(option, ecModel) { - var root = { - name: option.name, - children: option.data - }; - completeTreeValue$1(root); - var levelModels = this._levelModels = map3(option.levels || [], function(levelDefine) { - return new Model2(levelDefine, this, ecModel); - }, this); - var tree = Tree2.createTree(root, this, beforeLink); - function beforeLink(nodeData) { - nodeData.wrapMethod("getItemModel", function(model, idx) { - var node = tree.getNodeByDataIndex(idx); - var levelModel = levelModels[node.depth]; - levelModel && (model.parentModel = levelModel); - return model; - }); - } - return tree.data; - }; - SunburstSeriesModel3.prototype.optionUpdated = function() { - this.resetViewRoot(); - }; - SunburstSeriesModel3.prototype.getDataParams = function(dataIndex) { - var params = _super.prototype.getDataParams.apply(this, arguments); - var node = this.getData().tree.getNodeByDataIndex(dataIndex); - params.treePathInfo = wrapTreePathInfo2(node, this); - return params; - }; - SunburstSeriesModel3.prototype.getLevelModel = function(node) { - return this._levelModels && this._levelModels[node.depth]; - }; - SunburstSeriesModel3.prototype.getViewRoot = function() { - return this._viewRoot; - }; - SunburstSeriesModel3.prototype.resetViewRoot = function(viewRoot) { - viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot; - var root = this.getRawData().tree.root; - if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) { - this._viewRoot = root; - } - }; - SunburstSeriesModel3.prototype.enableAriaDecal = function() { - enableAriaDecalForTree2(this); - }; - SunburstSeriesModel3.type = "series.sunburst"; - SunburstSeriesModel3.defaultOption = { - // zlevel: 0, - z: 2, - // 默认全局居中 - center: ["50%", "50%"], - radius: [0, "75%"], - // 默认顺时针 - clockwise: true, - startAngle: 90, - // 最小角度改为0 - minAngle: 0, - // If still show when all data zero. - stillShowZeroSum: true, - // 'rootToNode', 'link', or false - nodeClick: "rootToNode", - renderLabelForZeroData: false, - label: { - // could be: 'radial', 'tangential', or 'none' - rotate: "radial", - show: true, - opacity: 1, - // 'left' is for inner side of inside, and 'right' is for outer - // side for inside - align: "center", - position: "inside", - distance: 5, - silent: true - }, - itemStyle: { - borderWidth: 1, - borderColor: "white", - borderType: "solid", - shadowBlur: 0, - shadowColor: "rgba(0, 0, 0, 0.2)", - shadowOffsetX: 0, - shadowOffsetY: 0, - opacity: 1 - }, - emphasis: { - focus: "descendant" - }, - blur: { - itemStyle: { - opacity: 0.2 - }, - label: { - opacity: 0.1 - } - }, - // Animation type can be expansion, scale. - animationType: "expansion", - animationDuration: 1e3, - animationDurationUpdate: 500, - data: [], - /** - * Sort order. - * - * Valid values: 'desc', 'asc', null, or callback function. - * 'desc' and 'asc' for descend and ascendant order; - * null for not sorting; - * example of callback function: - * function(nodeA, nodeB) { - * return nodeA.getValue() - nodeB.getValue(); - * } - */ - sort: "desc" - }; - return SunburstSeriesModel3; - }(SeriesModel2) - ); - function completeTreeValue$1(dataNode) { - var sum3 = 0; - each17(dataNode.children, function(child) { - completeTreeValue$1(child); - var childValue = child.value; - isArray3(childValue) && (childValue = childValue[0]); - sum3 += childValue; - }); - var thisValue = dataNode.value; - if (isArray3(thisValue)) { - thisValue = thisValue[0]; - } - if (thisValue == null || isNaN(thisValue)) { - thisValue = sum3; - } - if (thisValue < 0) { - thisValue = 0; - } - isArray3(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue; - } - var RADIAN$2 = Math.PI / 180; - function sunburstLayout2(seriesType3, ecModel, api) { - ecModel.eachSeriesByType(seriesType3, function(seriesModel) { - var center4 = seriesModel.get("center"); - var radius = seriesModel.get("radius"); - if (!isArray3(radius)) { - radius = [0, radius]; - } - if (!isArray3(center4)) { - center4 = [center4, center4]; - } - var width = api.getWidth(); - var height = api.getHeight(); - var size2 = Math.min(width, height); - var cx = parsePercent$1(center4[0], width); - var cy = parsePercent$1(center4[1], height); - var r0 = parsePercent$1(radius[0], size2 / 2); - var r = parsePercent$1(radius[1], size2 / 2); - var startAngle = -seriesModel.get("startAngle") * RADIAN$2; - var minAngle = seriesModel.get("minAngle") * RADIAN$2; - var virtualRoot = seriesModel.getData().tree.root; - var treeRoot = seriesModel.getViewRoot(); - var rootDepth = treeRoot.depth; - var sort5 = seriesModel.get("sort"); - if (sort5 != null) { - initChildren$1(treeRoot, sort5); - } - var validDataCount = 0; - each17(treeRoot.children, function(child) { - !isNaN(child.getValue()) && validDataCount++; - }); - var sum3 = treeRoot.getValue(); - var unitRadian = Math.PI / (sum3 || validDataCount) * 2; - var renderRollupNode = treeRoot.depth > 0; - var levels = treeRoot.height - (renderRollupNode ? -1 : 1); - var rPerLevel = (r - r0) / (levels || 1); - var clockwise = seriesModel.get("clockwise"); - var stillShowZeroSum = seriesModel.get("stillShowZeroSum"); - var dir4 = clockwise ? 1 : -1; - var renderNode3 = function(node, startAngle2) { - if (!node) { - return; - } - var endAngle = startAngle2; - if (node !== virtualRoot) { - var value = node.getValue(); - var angle2 = sum3 === 0 && stillShowZeroSum ? unitRadian : value * unitRadian; - if (angle2 < minAngle) { - angle2 = minAngle; - } - endAngle = startAngle2 + dir4 * angle2; - var depth = node.depth - rootDepth - (renderRollupNode ? -1 : 1); - var rStart2 = r0 + rPerLevel * depth; - var rEnd2 = r0 + rPerLevel * (depth + 1); - var levelModel = seriesModel.getLevelModel(node); - if (levelModel) { - var r0_1 = levelModel.get("r0", true); - var r_1 = levelModel.get("r", true); - var radius_1 = levelModel.get("radius", true); - if (radius_1 != null) { - r0_1 = radius_1[0]; - r_1 = radius_1[1]; - } - r0_1 != null && (rStart2 = parsePercent$1(r0_1, size2 / 2)); - r_1 != null && (rEnd2 = parsePercent$1(r_1, size2 / 2)); - } - node.setLayout({ - angle: angle2, - startAngle: startAngle2, - endAngle, - clockwise, - cx, - cy, - r0: rStart2, - r: rEnd2 - }); - } - if (node.children && node.children.length) { - var siblingAngle_1 = 0; - each17(node.children, function(node2) { - siblingAngle_1 += renderNode3(node2, startAngle2 + siblingAngle_1); - }); - } - return endAngle - startAngle2; - }; - if (renderRollupNode) { - var rStart = r0; - var rEnd = r0 + rPerLevel; - var angle = Math.PI * 2; - virtualRoot.setLayout({ - angle, - startAngle, - endAngle: startAngle + angle, - clockwise, - cx, - cy, - r0: rStart, - r: rEnd - }); - } - renderNode3(treeRoot, startAngle); - }); - } - function initChildren$1(node, sortOrder) { - var children = node.children || []; - node.children = sort$2(children, sortOrder); - if (children.length) { - each17(node.children, function(child) { - initChildren$1(child, sortOrder); - }); - } - } - function sort$2(children, sortOrder) { - if (isFunction2(sortOrder)) { - var sortTargets = map3(children, function(child, idx) { - var value = child.getValue(); - return { - params: { - depth: child.depth, - height: child.height, - dataIndex: child.dataIndex, - getValue: function() { - return value; - } - }, - index: idx - }; - }); - sortTargets.sort(function(a, b) { - return sortOrder(a.params, b.params); - }); - return map3(sortTargets, function(target) { - return children[target.index]; - }); - } else { - var isAsc_1 = sortOrder === "asc"; - return children.sort(function(a, b) { - var diff = (a.getValue() - b.getValue()) * (isAsc_1 ? 1 : -1); - return diff === 0 ? (a.dataIndex - b.dataIndex) * (isAsc_1 ? -1 : 1) : diff; - }); - } - } - function sunburstVisual2(ecModel) { - var paletteScope = {}; - function pickColor(node, seriesModel, treeHeight) { - var current = node; - while (current && current.depth > 1) { - current = current.parentNode; - } - var color2 = seriesModel.getColorFromPalette(current.name || current.dataIndex + "", paletteScope); - if (node.depth > 1 && isString2(color2)) { - color2 = lift2(color2, (node.depth - 1) / (treeHeight - 1) * 0.5); - } - return color2; - } - ecModel.eachSeriesByType("sunburst", function(seriesModel) { - var data = seriesModel.getData(); - var tree = data.tree; - tree.eachNode(function(node) { - var model = node.getModel(); - var style = model.getModel("itemStyle").getItemStyle(); - if (!style.fill) { - style.fill = pickColor(node, seriesModel, tree.root.height); - } - var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, "style"); - extend3(existsStyle, style); - }); - }); - } - function install$q(registers) { - registers.registerChartView(SunburstView2); - registers.registerSeriesModel(SunburstSeriesModel2); - registers.registerLayout(curry3(sunburstLayout2, "sunburst")); - registers.registerProcessor(curry3(dataFilter3, "sunburst")); - registers.registerVisual(sunburstVisual2); - installSunburstAction2(registers); - } - var STYLE_VISUAL_TYPE2 = { - color: "fill", - borderColor: "stroke" - }; - var NON_STYLE_VISUAL_PROPS2 = { - symbol: 1, - symbolSize: 1, - symbolKeepAspect: 1, - legendIcon: 1, - visualMeta: 1, - liftZ: 1, - decal: 1 - }; - var customInnerStore2 = makeInner2(); - var CustomSeriesModel2 = ( - /** @class */ - function(_super) { - __extends2(CustomSeriesModel3, _super); - function CustomSeriesModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CustomSeriesModel3.type; - return _this; - } - CustomSeriesModel3.prototype.optionUpdated = function() { - this.currentZLevel = this.get("zlevel", true); - this.currentZ = this.get("z", true); - }; - CustomSeriesModel3.prototype.getInitialData = function(option, ecModel) { - return createSeriesData2(null, this); - }; - CustomSeriesModel3.prototype.getDataParams = function(dataIndex, dataType, el) { - var params = _super.prototype.getDataParams.call(this, dataIndex, dataType); - el && (params.info = customInnerStore2(el).info); - return params; - }; - CustomSeriesModel3.type = "series.custom"; - CustomSeriesModel3.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"]; - CustomSeriesModel3.defaultOption = { - coordinateSystem: "cartesian2d", - // zlevel: 0, - z: 2, - legendHoverLink: true, - // Custom series will not clip by default. - // Some case will use custom series to draw label - // For example https://echarts.apache.org/examples/en/editor.html?c=custom-gantt-flight - clip: false - // Cartesian coordinate system - // xAxisIndex: 0, - // yAxisIndex: 0, - // Polar coordinate system - // polarIndex: 0, - // Geo coordinate system - // geoIndex: 0, - }; - return CustomSeriesModel3; - }(SeriesModel2) - ); - function dataToCoordSize5(dataSize, dataItem) { - dataItem = dataItem || [0, 0]; - return map3(["x", "y"], function(dim, dimIdx) { - var axis = this.getAxis(dim); - var val = dataItem[dimIdx]; - var halfSize = dataSize[dimIdx] / 2; - return axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize)); - }, this); - } - function cartesianPrepareCustom2(coordSys) { - var rect = coordSys.master.getRect(); - return { - coordSys: { - // The name exposed to user is always 'cartesian2d' but not 'grid'. - type: "cartesian2d", - x: rect.x, - y: rect.y, - width: rect.width, - height: rect.height - }, - api: { - coord: function(data) { - return coordSys.dataToPoint(data); - }, - size: bind3(dataToCoordSize5, coordSys) - } - }; - } - function dataToCoordSize$1(dataSize, dataItem) { - dataItem = dataItem || [0, 0]; - return map3([0, 1], function(dimIdx) { - var val = dataItem[dimIdx]; - var halfSize = dataSize[dimIdx] / 2; - var p1 = []; - var p2 = []; - p1[dimIdx] = val - halfSize; - p2[dimIdx] = val + halfSize; - p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx]; - return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]); - }, this); - } - function geoPrepareCustom2(coordSys) { - var rect = coordSys.getBoundingRect(); - return { - coordSys: { - type: "geo", - x: rect.x, - y: rect.y, - width: rect.width, - height: rect.height, - zoom: coordSys.getZoom() - }, - api: { - coord: function(data) { - return coordSys.dataToPoint(data); - }, - size: bind3(dataToCoordSize$1, coordSys) - } - }; - } - function dataToCoordSize$2(dataSize, dataItem) { - var axis = this.getAxis(); - var val = dataItem instanceof Array ? dataItem[0] : dataItem; - var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2; - return axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize)); - } - function singlePrepareCustom2(coordSys) { - var rect = coordSys.getRect(); - return { - coordSys: { - type: "singleAxis", - x: rect.x, - y: rect.y, - width: rect.width, - height: rect.height - }, - api: { - coord: function(val) { - return coordSys.dataToPoint(val); - }, - size: bind3(dataToCoordSize$2, coordSys) - } - }; - } - function dataToCoordSize$3(dataSize, dataItem) { - dataItem = dataItem || [0, 0]; - return map3(["Radius", "Angle"], function(dim, dimIdx) { - var getterName = "get" + dim + "Axis"; - var axis = this[getterName](); - var val = dataItem[dimIdx]; - var halfSize = dataSize[dimIdx] / 2; - var result = axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize)); - if (dim === "Angle") { - result = result * Math.PI / 180; - } - return result; - }, this); - } - function polarPrepareCustom2(coordSys) { - var radiusAxis = coordSys.getRadiusAxis(); - var angleAxis = coordSys.getAngleAxis(); - var radius = radiusAxis.getExtent(); - radius[0] > radius[1] && radius.reverse(); - return { - coordSys: { - type: "polar", - cx: coordSys.cx, - cy: coordSys.cy, - r: radius[1], - r0: radius[0] - }, - api: { - coord: function(data) { - var radius2 = radiusAxis.dataToRadius(data[0]); - var angle = angleAxis.dataToAngle(data[1]); - var coord = coordSys.coordToPoint([radius2, angle]); - coord.push(radius2, angle * Math.PI / 180); - return coord; - }, - size: bind3(dataToCoordSize$3, coordSys) - } - }; - } - function calendarPrepareCustom2(coordSys) { - var rect = coordSys.getRect(); - var rangeInfo = coordSys.getRangeInfo(); - return { - coordSys: { - type: "calendar", - x: rect.x, - y: rect.y, - width: rect.width, - height: rect.height, - cellWidth: coordSys.getCellWidth(), - cellHeight: coordSys.getCellHeight(), - rangeInfo: { - start: rangeInfo.start, - end: rangeInfo.end, - weeks: rangeInfo.weeks, - dayCount: rangeInfo.allDay - } - }, - api: { - coord: function(data, clamp4) { - return coordSys.dataToPoint(data, clamp4); - } - } - }; - } - var deprecatedLogs2 = {}; - function isEC4CompatibleStyle2(style, elType, hasOwnTextContentOption, hasOwnTextConfig) { - return style && (style.legacy || style.legacy !== false && !hasOwnTextContentOption && !hasOwnTextConfig && elType !== "tspan" && (elType === "text" || hasOwn2(style, "text"))); - } - function convertFromEC4CompatibleStyle2(hostStyle, elType, isNormal) { - var srcStyle = hostStyle; - var textConfig; - var textContent; - var textContentStyle; - if (elType === "text") { - textContentStyle = srcStyle; - } else { - textContentStyle = {}; - hasOwn2(srcStyle, "text") && (textContentStyle.text = srcStyle.text); - hasOwn2(srcStyle, "rich") && (textContentStyle.rich = srcStyle.rich); - hasOwn2(srcStyle, "textFill") && (textContentStyle.fill = srcStyle.textFill); - hasOwn2(srcStyle, "textStroke") && (textContentStyle.stroke = srcStyle.textStroke); - hasOwn2(srcStyle, "fontFamily") && (textContentStyle.fontFamily = srcStyle.fontFamily); - hasOwn2(srcStyle, "fontSize") && (textContentStyle.fontSize = srcStyle.fontSize); - hasOwn2(srcStyle, "fontStyle") && (textContentStyle.fontStyle = srcStyle.fontStyle); - hasOwn2(srcStyle, "fontWeight") && (textContentStyle.fontWeight = srcStyle.fontWeight); - textContent = { - type: "text", - style: textContentStyle, - // ec4 does not support rectText trigger. - // And when text position is different in normal and emphasis - // => hover text trigger emphasis; - // => text position changed, leave mouse pointer immediately; - // That might cause incorrect state. - silent: true - }; - textConfig = {}; - var hasOwnPos = hasOwn2(srcStyle, "textPosition"); - if (isNormal) { - textConfig.position = hasOwnPos ? srcStyle.textPosition : "inside"; - } else { - hasOwnPos && (textConfig.position = srcStyle.textPosition); - } - hasOwn2(srcStyle, "textPosition") && (textConfig.position = srcStyle.textPosition); - hasOwn2(srcStyle, "textOffset") && (textConfig.offset = srcStyle.textOffset); - hasOwn2(srcStyle, "textRotation") && (textConfig.rotation = srcStyle.textRotation); - hasOwn2(srcStyle, "textDistance") && (textConfig.distance = srcStyle.textDistance); - } - convertEC4CompatibleRichItem2(textContentStyle, hostStyle); - each17(textContentStyle.rich, function(richItem) { - convertEC4CompatibleRichItem2(richItem, richItem); - }); - return { - textConfig, - textContent - }; - } - function convertEC4CompatibleRichItem2(out3, richItem) { - if (!richItem) { - return; - } - richItem.font = richItem.textFont || richItem.font; - hasOwn2(richItem, "textStrokeWidth") && (out3.lineWidth = richItem.textStrokeWidth); - hasOwn2(richItem, "textAlign") && (out3.align = richItem.textAlign); - hasOwn2(richItem, "textVerticalAlign") && (out3.verticalAlign = richItem.textVerticalAlign); - hasOwn2(richItem, "textLineHeight") && (out3.lineHeight = richItem.textLineHeight); - hasOwn2(richItem, "textWidth") && (out3.width = richItem.textWidth); - hasOwn2(richItem, "textHeight") && (out3.height = richItem.textHeight); - hasOwn2(richItem, "textBackgroundColor") && (out3.backgroundColor = richItem.textBackgroundColor); - hasOwn2(richItem, "textPadding") && (out3.padding = richItem.textPadding); - hasOwn2(richItem, "textBorderColor") && (out3.borderColor = richItem.textBorderColor); - hasOwn2(richItem, "textBorderWidth") && (out3.borderWidth = richItem.textBorderWidth); - hasOwn2(richItem, "textBorderRadius") && (out3.borderRadius = richItem.textBorderRadius); - hasOwn2(richItem, "textBoxShadowColor") && (out3.shadowColor = richItem.textBoxShadowColor); - hasOwn2(richItem, "textBoxShadowBlur") && (out3.shadowBlur = richItem.textBoxShadowBlur); - hasOwn2(richItem, "textBoxShadowOffsetX") && (out3.shadowOffsetX = richItem.textBoxShadowOffsetX); - hasOwn2(richItem, "textBoxShadowOffsetY") && (out3.shadowOffsetY = richItem.textBoxShadowOffsetY); - } - function convertToEC4StyleForCustomSerise2(itemStl, txStl, txCfg) { - var out3 = itemStl; - out3.textPosition = out3.textPosition || txCfg.position || "inside"; - txCfg.offset != null && (out3.textOffset = txCfg.offset); - txCfg.rotation != null && (out3.textRotation = txCfg.rotation); - txCfg.distance != null && (out3.textDistance = txCfg.distance); - var isInside = out3.textPosition.indexOf("inside") >= 0; - var hostFill = itemStl.fill || "#000"; - convertToEC4RichItem2(out3, txStl); - var textFillNotSet = out3.textFill == null; - if (isInside) { - if (textFillNotSet) { - out3.textFill = txCfg.insideFill || "#fff"; - !out3.textStroke && txCfg.insideStroke && (out3.textStroke = txCfg.insideStroke); - !out3.textStroke && (out3.textStroke = hostFill); - out3.textStrokeWidth == null && (out3.textStrokeWidth = 2); - } - } else { - if (textFillNotSet) { - out3.textFill = itemStl.fill || txCfg.outsideFill || "#000"; - } - !out3.textStroke && txCfg.outsideStroke && (out3.textStroke = txCfg.outsideStroke); - } - out3.text = txStl.text; - out3.rich = txStl.rich; - each17(txStl.rich, function(richItem) { - convertToEC4RichItem2(richItem, richItem); - }); - return out3; - } - function convertToEC4RichItem2(out3, richItem) { - if (!richItem) { - return; - } - hasOwn2(richItem, "fill") && (out3.textFill = richItem.fill); - hasOwn2(richItem, "stroke") && (out3.textStroke = richItem.fill); - hasOwn2(richItem, "lineWidth") && (out3.textStrokeWidth = richItem.lineWidth); - hasOwn2(richItem, "font") && (out3.font = richItem.font); - hasOwn2(richItem, "fontStyle") && (out3.fontStyle = richItem.fontStyle); - hasOwn2(richItem, "fontWeight") && (out3.fontWeight = richItem.fontWeight); - hasOwn2(richItem, "fontSize") && (out3.fontSize = richItem.fontSize); - hasOwn2(richItem, "fontFamily") && (out3.fontFamily = richItem.fontFamily); - hasOwn2(richItem, "align") && (out3.textAlign = richItem.align); - hasOwn2(richItem, "verticalAlign") && (out3.textVerticalAlign = richItem.verticalAlign); - hasOwn2(richItem, "lineHeight") && (out3.textLineHeight = richItem.lineHeight); - hasOwn2(richItem, "width") && (out3.textWidth = richItem.width); - hasOwn2(richItem, "height") && (out3.textHeight = richItem.height); - hasOwn2(richItem, "backgroundColor") && (out3.textBackgroundColor = richItem.backgroundColor); - hasOwn2(richItem, "padding") && (out3.textPadding = richItem.padding); - hasOwn2(richItem, "borderColor") && (out3.textBorderColor = richItem.borderColor); - hasOwn2(richItem, "borderWidth") && (out3.textBorderWidth = richItem.borderWidth); - hasOwn2(richItem, "borderRadius") && (out3.textBorderRadius = richItem.borderRadius); - hasOwn2(richItem, "shadowColor") && (out3.textBoxShadowColor = richItem.shadowColor); - hasOwn2(richItem, "shadowBlur") && (out3.textBoxShadowBlur = richItem.shadowBlur); - hasOwn2(richItem, "shadowOffsetX") && (out3.textBoxShadowOffsetX = richItem.shadowOffsetX); - hasOwn2(richItem, "shadowOffsetY") && (out3.textBoxShadowOffsetY = richItem.shadowOffsetY); - hasOwn2(richItem, "textShadowColor") && (out3.textShadowColor = richItem.textShadowColor); - hasOwn2(richItem, "textShadowBlur") && (out3.textShadowBlur = richItem.textShadowBlur); - hasOwn2(richItem, "textShadowOffsetX") && (out3.textShadowOffsetX = richItem.textShadowOffsetX); - hasOwn2(richItem, "textShadowOffsetY") && (out3.textShadowOffsetY = richItem.textShadowOffsetY); - } - function warnDeprecated2(deprecated, insteadApproach) { - if (true) { - var key = deprecated + "^_^" + insteadApproach; - if (!deprecatedLogs2[key]) { - console.warn('[ECharts] DEPRECATED: "' + deprecated + '" has been deprecated. ' + insteadApproach); - deprecatedLogs2[key] = true; - } - } - } - var LEGACY_TRANSFORM_PROPS_MAP2 = { - position: ["x", "y"], - scale: ["scaleX", "scaleY"], - origin: ["originX", "originY"] - }; - var LEGACY_TRANSFORM_PROPS2 = keys2(LEGACY_TRANSFORM_PROPS_MAP2); - var TRANSFORM_PROPS_MAP2 = reduce2(TRANSFORMABLE_PROPS2, function(obj, key) { - obj[key] = 1; - return obj; - }, {}); - var transformPropNamesStr2 = TRANSFORMABLE_PROPS2.join(", "); - var ELEMENT_ANIMATABLE_PROPS2 = ["", "style", "shape", "extra"]; - var transitionInnerStore2 = makeInner2(); - function getElementAnimationConfig2(animationType, el, elOption, parentModel, dataIndex) { - var animationProp = animationType + "Animation"; - var config2 = getAnimationConfig2(animationType, parentModel, dataIndex) || {}; - var userDuring = transitionInnerStore2(el).userDuring; - if (config2.duration > 0) { - config2.during = userDuring ? bind3(duringCall2, { - el, - userDuring - }) : null; - config2.setToFinal = true; - config2.scope = animationType; - } - extend3(config2, elOption[animationProp]); - return config2; - } - function applyUpdateTransition2(el, elOption, animatableModel, opts) { - opts = opts || {}; - var dataIndex = opts.dataIndex, isInit = opts.isInit, clearStyle = opts.clearStyle; - var hasAnimation = animatableModel.isAnimationEnabled(); - var store = transitionInnerStore2(el); - var styleOpt = elOption.style; - store.userDuring = elOption.during; - var transFromProps = {}; - var propsToSet = {}; - prepareTransformAllPropsFinal2(el, elOption, propsToSet); - prepareShapeOrExtraAllPropsFinal2("shape", elOption, propsToSet); - prepareShapeOrExtraAllPropsFinal2("extra", elOption, propsToSet); - if (!isInit && hasAnimation) { - prepareTransformTransitionFrom2(el, elOption, transFromProps); - prepareShapeOrExtraTransitionFrom2("shape", el, elOption, transFromProps); - prepareShapeOrExtraTransitionFrom2("extra", el, elOption, transFromProps); - prepareStyleTransitionFrom2(el, elOption, styleOpt, transFromProps); - } - propsToSet.style = styleOpt; - applyPropsDirectly2(el, propsToSet, clearStyle); - applyMiscProps2(el, elOption); - if (hasAnimation) { - if (isInit) { - var enterFromProps_1 = {}; - each17(ELEMENT_ANIMATABLE_PROPS2, function(propName) { - var prop = propName ? elOption[propName] : elOption; - if (prop && prop.enterFrom) { - if (propName) { - enterFromProps_1[propName] = enterFromProps_1[propName] || {}; - } - extend3(propName ? enterFromProps_1[propName] : enterFromProps_1, prop.enterFrom); - } - }); - var config2 = getElementAnimationConfig2("enter", el, elOption, animatableModel, dataIndex); - if (config2.duration > 0) { - el.animateFrom(enterFromProps_1, config2); - } - } else { - applyPropsTransition2(el, elOption, dataIndex || 0, animatableModel, transFromProps); - } - } - updateLeaveTo2(el, elOption); - styleOpt ? el.dirty() : el.markRedraw(); - } - function updateLeaveTo2(el, elOption) { - var leaveToProps = transitionInnerStore2(el).leaveToProps; - for (var i2 = 0; i2 < ELEMENT_ANIMATABLE_PROPS2.length; i2++) { - var propName = ELEMENT_ANIMATABLE_PROPS2[i2]; - var prop = propName ? elOption[propName] : elOption; - if (prop && prop.leaveTo) { - if (!leaveToProps) { - leaveToProps = transitionInnerStore2(el).leaveToProps = {}; - } - if (propName) { - leaveToProps[propName] = leaveToProps[propName] || {}; - } - extend3(propName ? leaveToProps[propName] : leaveToProps, prop.leaveTo); - } - } - } - function applyLeaveTransition2(el, elOption, animatableModel, onRemove) { - if (el) { - var parent_1 = el.parent; - var leaveToProps = transitionInnerStore2(el).leaveToProps; - if (leaveToProps) { - var config2 = getElementAnimationConfig2("update", el, elOption, animatableModel, 0); - config2.done = function() { - parent_1.remove(el); - onRemove && onRemove(); - }; - el.animateTo(leaveToProps, config2); - } else { - parent_1.remove(el); - onRemove && onRemove(); - } - } - } - function isTransitionAll2(transition) { - return transition === "all"; - } - function applyPropsDirectly2(el, allPropsFinal, clearStyle) { - var styleOpt = allPropsFinal.style; - if (!el.isGroup && styleOpt) { - if (clearStyle) { - el.useStyle({}); - var animators = el.animators; - for (var i2 = 0; i2 < animators.length; i2++) { - var animator = animators[i2]; - if (animator.targetName === "style") { - animator.changeTarget(el.style); - } - } - } - el.setStyle(styleOpt); - } - if (allPropsFinal) { - allPropsFinal.style = null; - allPropsFinal && el.attr(allPropsFinal); - allPropsFinal.style = styleOpt; - } - } - function applyPropsTransition2(el, elOption, dataIndex, model, transFromProps) { - if (transFromProps) { - var config2 = getElementAnimationConfig2("update", el, elOption, model, dataIndex); - if (config2.duration > 0) { - el.animateFrom(transFromProps, config2); - } - } - } - function applyMiscProps2(el, elOption) { - hasOwn2(elOption, "silent") && (el.silent = elOption.silent); - hasOwn2(elOption, "ignore") && (el.ignore = elOption.ignore); - if (el instanceof Displayable2) { - hasOwn2(elOption, "invisible") && (el.invisible = elOption.invisible); - } - if (el instanceof Path2) { - hasOwn2(elOption, "autoBatch") && (el.autoBatch = elOption.autoBatch); - } - } - var tmpDuringScope2 = {}; - var transitionDuringAPI2 = { - // Usually other props do not need to be changed in animation during. - setTransform: function(key, val) { - if (true) { - assert2(hasOwn2(TRANSFORM_PROPS_MAP2, key), "Only " + transformPropNamesStr2 + " available in `setTransform`."); - } - tmpDuringScope2.el[key] = val; - return this; - }, - getTransform: function(key) { - if (true) { - assert2(hasOwn2(TRANSFORM_PROPS_MAP2, key), "Only " + transformPropNamesStr2 + " available in `getTransform`."); - } - return tmpDuringScope2.el[key]; - }, - setShape: function(key, val) { - if (true) { - assertNotReserved2(key); - } - var el = tmpDuringScope2.el; - var shape = el.shape || (el.shape = {}); - shape[key] = val; - el.dirtyShape && el.dirtyShape(); - return this; - }, - getShape: function(key) { - if (true) { - assertNotReserved2(key); - } - var shape = tmpDuringScope2.el.shape; - if (shape) { - return shape[key]; - } - }, - setStyle: function(key, val) { - if (true) { - assertNotReserved2(key); - } - var el = tmpDuringScope2.el; - var style = el.style; - if (style) { - if (true) { - if (eqNaN2(val)) { - warn2("style." + key + " must not be assigned with NaN."); - } - } - style[key] = val; - el.dirtyStyle && el.dirtyStyle(); - } - return this; - }, - getStyle: function(key) { - if (true) { - assertNotReserved2(key); - } - var style = tmpDuringScope2.el.style; - if (style) { - return style[key]; - } - }, - setExtra: function(key, val) { - if (true) { - assertNotReserved2(key); - } - var extra = tmpDuringScope2.el.extra || (tmpDuringScope2.el.extra = {}); - extra[key] = val; - return this; - }, - getExtra: function(key) { - if (true) { - assertNotReserved2(key); - } - var extra = tmpDuringScope2.el.extra; - if (extra) { - return extra[key]; - } - } - }; - function assertNotReserved2(key) { - if (true) { - if (key === "transition" || key === "enterFrom" || key === "leaveTo") { - throw new Error('key must not be "' + key + '"'); - } - } - } - function duringCall2() { - var scope = this; - var el = scope.el; - if (!el) { - return; - } - var latestUserDuring = transitionInnerStore2(el).userDuring; - var scopeUserDuring = scope.userDuring; - if (latestUserDuring !== scopeUserDuring) { - scope.el = scope.userDuring = null; - return; - } - tmpDuringScope2.el = el; - scopeUserDuring(transitionDuringAPI2); - } - function prepareShapeOrExtraTransitionFrom2(mainAttr, fromEl, elOption, transFromProps) { - var attrOpt = elOption[mainAttr]; - if (!attrOpt) { - return; - } - var elPropsInAttr = fromEl[mainAttr]; - var transFromPropsInAttr; - if (elPropsInAttr) { - var transition = elOption.transition; - var attrTransition = attrOpt.transition; - if (attrTransition) { - !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {}); - if (isTransitionAll2(attrTransition)) { - extend3(transFromPropsInAttr, elPropsInAttr); - } else { - var transitionKeys = normalizeToArray2(attrTransition); - for (var i2 = 0; i2 < transitionKeys.length; i2++) { - var key = transitionKeys[i2]; - var elVal = elPropsInAttr[key]; - transFromPropsInAttr[key] = elVal; - } - } - } else if (isTransitionAll2(transition) || indexOf2(transition, mainAttr) >= 0) { - !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {}); - var elPropsInAttrKeys = keys2(elPropsInAttr); - for (var i2 = 0; i2 < elPropsInAttrKeys.length; i2++) { - var key = elPropsInAttrKeys[i2]; - var elVal = elPropsInAttr[key]; - if (isNonStyleTransitionEnabled2(attrOpt[key], elVal)) { - transFromPropsInAttr[key] = elVal; - } - } - } - } - } - function prepareShapeOrExtraAllPropsFinal2(mainAttr, elOption, allProps) { - var attrOpt = elOption[mainAttr]; - if (!attrOpt) { - return; - } - var allPropsInAttr = allProps[mainAttr] = {}; - var keysInAttr = keys2(attrOpt); - for (var i2 = 0; i2 < keysInAttr.length; i2++) { - var key = keysInAttr[i2]; - allPropsInAttr[key] = cloneValue2(attrOpt[key]); - } - } - function prepareTransformTransitionFrom2(el, elOption, transFromProps) { - var transition = elOption.transition; - var transitionKeys = isTransitionAll2(transition) ? TRANSFORMABLE_PROPS2 : normalizeToArray2(transition || []); - for (var i2 = 0; i2 < transitionKeys.length; i2++) { - var key = transitionKeys[i2]; - if (key === "style" || key === "shape" || key === "extra") { - continue; - } - var elVal = el[key]; - if (true) { - checkTransformPropRefer2(key, "el.transition"); - } - transFromProps[key] = elVal; - } - } - function prepareTransformAllPropsFinal2(el, elOption, allProps) { - for (var i2 = 0; i2 < LEGACY_TRANSFORM_PROPS2.length; i2++) { - var legacyName = LEGACY_TRANSFORM_PROPS2[i2]; - var xyName = LEGACY_TRANSFORM_PROPS_MAP2[legacyName]; - var legacyArr = elOption[legacyName]; - if (legacyArr) { - allProps[xyName[0]] = legacyArr[0]; - allProps[xyName[1]] = legacyArr[1]; - } - } - for (var i2 = 0; i2 < TRANSFORMABLE_PROPS2.length; i2++) { - var key = TRANSFORMABLE_PROPS2[i2]; - if (elOption[key] != null) { - allProps[key] = elOption[key]; - } - } - } - function prepareStyleTransitionFrom2(fromEl, elOption, styleOpt, transFromProps) { - if (!styleOpt) { - return; - } - var fromElStyle = fromEl.style; - var transFromStyleProps; - if (fromElStyle) { - var styleTransition = styleOpt.transition; - var elTransition = elOption.transition; - if (styleTransition && !isTransitionAll2(styleTransition)) { - var transitionKeys = normalizeToArray2(styleTransition); - !transFromStyleProps && (transFromStyleProps = transFromProps.style = {}); - for (var i2 = 0; i2 < transitionKeys.length; i2++) { - var key = transitionKeys[i2]; - var elVal = fromElStyle[key]; - transFromStyleProps[key] = elVal; - } - } else if (fromEl.getAnimationStyleProps && (isTransitionAll2(elTransition) || isTransitionAll2(styleTransition) || indexOf2(elTransition, "style") >= 0)) { - var animationProps = fromEl.getAnimationStyleProps(); - var animationStyleProps = animationProps ? animationProps.style : null; - if (animationStyleProps) { - !transFromStyleProps && (transFromStyleProps = transFromProps.style = {}); - var styleKeys = keys2(styleOpt); - for (var i2 = 0; i2 < styleKeys.length; i2++) { - var key = styleKeys[i2]; - if (animationStyleProps[key]) { - var elVal = fromElStyle[key]; - transFromStyleProps[key] = elVal; - } - } - } - } - } - } - function isNonStyleTransitionEnabled2(optVal, elVal) { - return !isArrayLike2(optVal) ? optVal != null && isFinite(optVal) : optVal !== elVal; - } - var checkTransformPropRefer2; - if (true) { - checkTransformPropRefer2 = function(key, usedIn) { - if (!hasOwn2(TRANSFORM_PROPS_MAP2, key)) { - warn2("Prop `" + key + "` is not a permitted in `" + usedIn + "`. Only `" + keys2(TRANSFORM_PROPS_MAP2).join("`, `") + "` are permitted."); - } - }; - } - var getStateToRestore2 = makeInner2(); - var KEYFRAME_EXCLUDE_KEYS2 = ["percent", "easing", "shape", "style", "extra"]; - function stopPreviousKeyframeAnimationAndRestore2(el) { - el.stopAnimation("keyframe"); - el.attr(getStateToRestore2(el)); - } - function applyKeyframeAnimation2(el, animationOpts, animatableModel) { - if (!animatableModel.isAnimationEnabled() || !animationOpts) { - return; - } - if (isArray3(animationOpts)) { - each17(animationOpts, function(singleAnimationOpts) { - applyKeyframeAnimation2(el, singleAnimationOpts, animatableModel); - }); - return; - } - var keyframes = animationOpts.keyframes; - var duration = animationOpts.duration; - if (animatableModel && duration == null) { - var config2 = getAnimationConfig2("enter", animatableModel, 0); - duration = config2 && config2.duration; - } - if (!keyframes || !duration) { - return; - } - var stateToRestore = getStateToRestore2(el); - each17(ELEMENT_ANIMATABLE_PROPS2, function(targetPropName) { - if (targetPropName && !el[targetPropName]) { - return; - } - var animator; - var endFrameIsSet = false; - keyframes.sort(function(a, b) { - return a.percent - b.percent; - }); - each17(keyframes, function(kf) { - var animators = el.animators; - var kfValues = targetPropName ? kf[targetPropName] : kf; - if (true) { - if (kf.percent >= 1) { - endFrameIsSet = true; - } - } - if (!kfValues) { - return; - } - var propKeys = keys2(kfValues); - if (!targetPropName) { - propKeys = filter2(propKeys, function(key) { - return indexOf2(KEYFRAME_EXCLUDE_KEYS2, key) < 0; - }); - } - if (!propKeys.length) { - return; - } - if (!animator) { - animator = el.animate(targetPropName, animationOpts.loop, true); - animator.scope = "keyframe"; - } - for (var i2 = 0; i2 < animators.length; i2++) { - if (animators[i2] !== animator && animators[i2].targetName === animator.targetName) { - animators[i2].stopTracks(propKeys); - } - } - targetPropName && (stateToRestore[targetPropName] = stateToRestore[targetPropName] || {}); - var savedTarget = targetPropName ? stateToRestore[targetPropName] : stateToRestore; - each17(propKeys, function(key) { - savedTarget[key] = ((targetPropName ? el[targetPropName] : el) || {})[key]; - }); - animator.whenWithKeys(duration * kf.percent, kfValues, propKeys, kf.easing); - }); - if (!animator) { - return; - } - if (true) { - if (!endFrameIsSet) { - warn2("End frame with percent: 1 is missing in the keyframeAnimation.", true); - } - } - animator.delay(animationOpts.delay || 0).duration(duration).start(animationOpts.easing); - }); - } - var EMPHASIS2 = "emphasis"; - var NORMAL2 = "normal"; - var BLUR2 = "blur"; - var SELECT2 = "select"; - var STATES2 = [NORMAL2, EMPHASIS2, BLUR2, SELECT2]; - var PATH_ITEM_STYLE2 = { - normal: ["itemStyle"], - emphasis: [EMPHASIS2, "itemStyle"], - blur: [BLUR2, "itemStyle"], - select: [SELECT2, "itemStyle"] - }; - var PATH_LABEL2 = { - normal: ["label"], - emphasis: [EMPHASIS2, "label"], - blur: [BLUR2, "label"], - select: [SELECT2, "label"] - }; - var DEFAULT_TRANSITION2 = ["x", "y"]; - var GROUP_DIFF_PREFIX2 = "e\0\0"; - var attachedTxInfoTmp2 = { - normal: {}, - emphasis: {}, - blur: {}, - select: {} - }; - var prepareCustoms2 = { - cartesian2d: cartesianPrepareCustom2, - geo: geoPrepareCustom2, - single: singlePrepareCustom2, - polar: polarPrepareCustom2, - calendar: calendarPrepareCustom2 - }; - function isPath$1(el) { - return el instanceof Path2; - } - function isDisplayable2(el) { - return el instanceof Displayable2; - } - function copyElement2(sourceEl, targetEl) { - targetEl.copyTransform(sourceEl); - if (isDisplayable2(targetEl) && isDisplayable2(sourceEl)) { - targetEl.setStyle(sourceEl.style); - targetEl.z = sourceEl.z; - targetEl.z2 = sourceEl.z2; - targetEl.zlevel = sourceEl.zlevel; - targetEl.invisible = sourceEl.invisible; - targetEl.ignore = sourceEl.ignore; - if (isPath$1(targetEl) && isPath$1(sourceEl)) { - targetEl.setShape(sourceEl.shape); - } - } - } - var CustomChartView2 = ( - /** @class */ - function(_super) { - __extends2(CustomChartView3, _super); - function CustomChartView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CustomChartView3.type; - return _this; - } - CustomChartView3.prototype.render = function(customSeries, ecModel, api, payload) { - this._progressiveEls = null; - var oldData = this._data; - var data = customSeries.getData(); - var group = this.group; - var renderItem = makeRenderItem2(customSeries, data, ecModel, api); - if (!oldData) { - group.removeAll(); - } - data.diff(oldData).add(function(newIdx) { - createOrUpdateItem2(api, null, newIdx, renderItem(newIdx, payload), customSeries, group, data); - }).remove(function(oldIdx) { - var el = oldData.getItemGraphicEl(oldIdx); - el && applyLeaveTransition2(el, customInnerStore2(el).option, customSeries); - }).update(function(newIdx, oldIdx) { - var oldEl = oldData.getItemGraphicEl(oldIdx); - createOrUpdateItem2(api, oldEl, newIdx, renderItem(newIdx, payload), customSeries, group, data); - }).execute(); - var clipPath = customSeries.get("clip", true) ? createClipPath2(customSeries.coordinateSystem, false, customSeries) : null; - if (clipPath) { - group.setClipPath(clipPath); - } else { - group.removeClipPath(); - } - this._data = data; - }; - CustomChartView3.prototype.incrementalPrepareRender = function(customSeries, ecModel, api) { - this.group.removeAll(); - this._data = null; - }; - CustomChartView3.prototype.incrementalRender = function(params, customSeries, ecModel, api, payload) { - var data = customSeries.getData(); - var renderItem = makeRenderItem2(customSeries, data, ecModel, api); - var progressiveEls = this._progressiveEls = []; - function setIncrementalAndHoverLayer(el2) { - if (!el2.isGroup) { - el2.incremental = true; - el2.ensureState("emphasis").hoverLayer = true; - } - } - for (var idx = params.start; idx < params.end; idx++) { - var el = createOrUpdateItem2(null, null, idx, renderItem(idx, payload), customSeries, this.group, data); - if (el) { - el.traverse(setIncrementalAndHoverLayer); - progressiveEls.push(el); - } - } - }; - CustomChartView3.prototype.eachRendered = function(cb) { - traverseElements2(this._progressiveEls || this.group, cb); - }; - CustomChartView3.prototype.filterForExposedEvent = function(eventType, query, targetEl, packedEvent) { - var elementName = query.element; - if (elementName == null || targetEl.name === elementName) { - return true; - } - while ((targetEl = targetEl.__hostTarget || targetEl.parent) && targetEl !== this.group) { - if (targetEl.name === elementName) { - return true; - } - } - return false; - }; - CustomChartView3.type = "custom"; - return CustomChartView3; - }(ChartView2) - ); - function createEl3(elOption) { - var graphicType = elOption.type; - var el; - if (graphicType === "path") { - var shape = elOption.shape; - var pathRect = shape.width != null && shape.height != null ? { - x: shape.x || 0, - y: shape.y || 0, - width: shape.width, - height: shape.height - } : null; - var pathData = getPathData2(shape); - el = makePath2(pathData, null, pathRect, shape.layout || "center"); - customInnerStore2(el).customPathData = pathData; - } else if (graphicType === "image") { - el = new ZRImage2({}); - customInnerStore2(el).customImagePath = elOption.style.image; - } else if (graphicType === "text") { - el = new ZRText2({}); - } else if (graphicType === "group") { - el = new Group5(); - } else if (graphicType === "compoundPath") { - throw new Error('"compoundPath" is not supported yet.'); - } else { - var Clz = getShapeClass2(graphicType); - if (!Clz) { - var errMsg = ""; - if (true) { - errMsg = 'graphic type "' + graphicType + '" can not be found.'; - } - throwError2(errMsg); - } - el = new Clz(); - } - customInnerStore2(el).customGraphicType = graphicType; - el.name = elOption.name; - el.z2EmphasisLift = 1; - el.z2SelectLift = 1; - return el; - } - function updateElNormal2(api, el, dataIndex, elOption, attachedTxInfo, seriesModel, isInit) { - stopPreviousKeyframeAnimationAndRestore2(el); - var txCfgOpt = attachedTxInfo && attachedTxInfo.normal.cfg; - if (txCfgOpt) { - el.setTextConfig(txCfgOpt); - } - if (elOption && elOption.transition == null) { - elOption.transition = DEFAULT_TRANSITION2; - } - var styleOpt = elOption && elOption.style; - if (styleOpt) { - if (el.type === "text") { - var textOptionStyle = styleOpt; - hasOwn2(textOptionStyle, "textFill") && (textOptionStyle.fill = textOptionStyle.textFill); - hasOwn2(textOptionStyle, "textStroke") && (textOptionStyle.stroke = textOptionStyle.textStroke); - } - var decalPattern = void 0; - var decalObj = isPath$1(el) ? styleOpt.decal : null; - if (api && decalObj) { - decalObj.dirty = true; - decalPattern = createOrUpdatePatternFromDecal2(decalObj, api); - } - styleOpt.__decalPattern = decalPattern; - } - if (isDisplayable2(el)) { - if (styleOpt) { - var decalPattern = styleOpt.__decalPattern; - if (decalPattern) { - styleOpt.decal = decalPattern; - } - } - } - applyUpdateTransition2(el, elOption, seriesModel, { - dataIndex, - isInit, - clearStyle: true - }); - applyKeyframeAnimation2(el, elOption.keyframeAnimation, seriesModel); - } - function updateElOnState2(state, el, elStateOpt, styleOpt, attachedTxInfo) { - var elDisplayable = el.isGroup ? null : el; - var txCfgOpt = attachedTxInfo && attachedTxInfo[state].cfg; - if (elDisplayable) { - var stateObj = elDisplayable.ensureState(state); - if (styleOpt === false) { - var existingEmphasisState = elDisplayable.getState(state); - if (existingEmphasisState) { - existingEmphasisState.style = null; - } - } else { - stateObj.style = styleOpt || null; - } - if (txCfgOpt) { - stateObj.textConfig = txCfgOpt; - } - setDefaultStateProxy2(elDisplayable); - } - } - function updateZ$1(el, elOption, seriesModel) { - if (el.isGroup) { - return; - } - var elDisplayable = el; - var currentZ = seriesModel.currentZ; - var currentZLevel = seriesModel.currentZLevel; - elDisplayable.z = currentZ; - elDisplayable.zlevel = currentZLevel; - var optZ2 = elOption.z2; - optZ2 != null && (elDisplayable.z2 = optZ2 || 0); - for (var i2 = 0; i2 < STATES2.length; i2++) { - updateZForEachState2(elDisplayable, elOption, STATES2[i2]); - } - } - function updateZForEachState2(elDisplayable, elOption, state) { - var isNormal = state === NORMAL2; - var elStateOpt = isNormal ? elOption : retrieveStateOption2(elOption, state); - var optZ2 = elStateOpt ? elStateOpt.z2 : null; - var stateObj; - if (optZ2 != null) { - stateObj = isNormal ? elDisplayable : elDisplayable.ensureState(state); - stateObj.z2 = optZ2 || 0; - } - } - function makeRenderItem2(customSeries, data, ecModel, api) { - var renderItem = customSeries.get("renderItem"); - var coordSys = customSeries.coordinateSystem; - var prepareResult3 = {}; - if (coordSys) { - if (true) { - assert2(renderItem, "series.render is required."); - assert2(coordSys.prepareCustoms || prepareCustoms2[coordSys.type], "This coordSys does not support custom series."); - } - prepareResult3 = coordSys.prepareCustoms ? coordSys.prepareCustoms(coordSys) : prepareCustoms2[coordSys.type](coordSys); - } - var userAPI = defaults2({ - getWidth: api.getWidth, - getHeight: api.getHeight, - getZr: api.getZr, - getDevicePixelRatio: api.getDevicePixelRatio, - value, - style, - ordinalRawValue, - styleEmphasis, - visual, - barLayout, - currentSeriesIndices, - font - }, prepareResult3.api || {}); - var userParams = { - // The life cycle of context: current round of rendering. - // The global life cycle is probably not necessary, because - // user can store global status by themselves. - context: {}, - seriesId: customSeries.id, - seriesName: customSeries.name, - seriesIndex: customSeries.seriesIndex, - coordSys: prepareResult3.coordSys, - dataInsideLength: data.count(), - encode: wrapEncodeDef2(customSeries.getData()) - }; - var currDataIndexInside; - var currItemModel; - var currItemStyleModels = {}; - var currLabelModels = {}; - var seriesItemStyleModels = {}; - var seriesLabelModels = {}; - for (var i2 = 0; i2 < STATES2.length; i2++) { - var stateName = STATES2[i2]; - seriesItemStyleModels[stateName] = customSeries.getModel(PATH_ITEM_STYLE2[stateName]); - seriesLabelModels[stateName] = customSeries.getModel(PATH_LABEL2[stateName]); - } - function getItemModel3(dataIndexInside) { - return dataIndexInside === currDataIndexInside ? currItemModel || (currItemModel = data.getItemModel(dataIndexInside)) : data.getItemModel(dataIndexInside); - } - function getItemStyleModel(dataIndexInside, state) { - return !data.hasItemOption ? seriesItemStyleModels[state] : dataIndexInside === currDataIndexInside ? currItemStyleModels[state] || (currItemStyleModels[state] = getItemModel3(dataIndexInside).getModel(PATH_ITEM_STYLE2[state])) : getItemModel3(dataIndexInside).getModel(PATH_ITEM_STYLE2[state]); - } - function getLabelModel(dataIndexInside, state) { - return !data.hasItemOption ? seriesLabelModels[state] : dataIndexInside === currDataIndexInside ? currLabelModels[state] || (currLabelModels[state] = getItemModel3(dataIndexInside).getModel(PATH_LABEL2[state])) : getItemModel3(dataIndexInside).getModel(PATH_LABEL2[state]); - } - return function(dataIndexInside, payload) { - currDataIndexInside = dataIndexInside; - currItemModel = null; - currItemStyleModels = {}; - currLabelModels = {}; - return renderItem && renderItem(defaults2({ - dataIndexInside, - dataIndex: data.getRawIndex(dataIndexInside), - // Can be used for optimization when zoom or roam. - actionType: payload ? payload.type : null - }, userParams), userAPI); - }; - function value(dim, dataIndexInside) { - dataIndexInside == null && (dataIndexInside = currDataIndexInside); - return data.getStore().get(data.getDimensionIndex(dim || 0), dataIndexInside); - } - function ordinalRawValue(dim, dataIndexInside) { - dataIndexInside == null && (dataIndexInside = currDataIndexInside); - dim = dim || 0; - var dimInfo = data.getDimensionInfo(dim); - if (!dimInfo) { - var dimIndex = data.getDimensionIndex(dim); - return dimIndex >= 0 ? data.getStore().get(dimIndex, dataIndexInside) : void 0; - } - var val = data.get(dimInfo.name, dataIndexInside); - var ordinalMeta = dimInfo && dimInfo.ordinalMeta; - return ordinalMeta ? ordinalMeta.categories[val] : val; - } - function style(userProps, dataIndexInside) { - if (true) { - warnDeprecated2("api.style", "Please write literal style directly instead."); - } - dataIndexInside == null && (dataIndexInside = currDataIndexInside); - var style2 = data.getItemVisual(dataIndexInside, "style"); - var visualColor = style2 && style2.fill; - var opacity = style2 && style2.opacity; - var itemStyle = getItemStyleModel(dataIndexInside, NORMAL2).getItemStyle(); - visualColor != null && (itemStyle.fill = visualColor); - opacity != null && (itemStyle.opacity = opacity); - var opt = { - inheritColor: isString2(visualColor) ? visualColor : "#000" - }; - var labelModel = getLabelModel(dataIndexInside, NORMAL2); - var textStyle = createTextStyle3(labelModel, null, opt, false, true); - textStyle.text = labelModel.getShallow("show") ? retrieve22(customSeries.getFormattedLabel(dataIndexInside, NORMAL2), getDefaultLabel2(data, dataIndexInside)) : null; - var textConfig = createTextConfig2(labelModel, opt, false); - preFetchFromExtra(userProps, itemStyle); - itemStyle = convertToEC4StyleForCustomSerise2(itemStyle, textStyle, textConfig); - userProps && applyUserPropsAfter(itemStyle, userProps); - itemStyle.legacy = true; - return itemStyle; - } - function styleEmphasis(userProps, dataIndexInside) { - if (true) { - warnDeprecated2("api.styleEmphasis", "Please write literal style directly instead."); - } - dataIndexInside == null && (dataIndexInside = currDataIndexInside); - var itemStyle = getItemStyleModel(dataIndexInside, EMPHASIS2).getItemStyle(); - var labelModel = getLabelModel(dataIndexInside, EMPHASIS2); - var textStyle = createTextStyle3(labelModel, null, null, true, true); - textStyle.text = labelModel.getShallow("show") ? retrieve32(customSeries.getFormattedLabel(dataIndexInside, EMPHASIS2), customSeries.getFormattedLabel(dataIndexInside, NORMAL2), getDefaultLabel2(data, dataIndexInside)) : null; - var textConfig = createTextConfig2(labelModel, null, true); - preFetchFromExtra(userProps, itemStyle); - itemStyle = convertToEC4StyleForCustomSerise2(itemStyle, textStyle, textConfig); - userProps && applyUserPropsAfter(itemStyle, userProps); - itemStyle.legacy = true; - return itemStyle; - } - function applyUserPropsAfter(itemStyle, extra) { - for (var key in extra) { - if (hasOwn2(extra, key)) { - itemStyle[key] = extra[key]; - } - } - } - function preFetchFromExtra(extra, itemStyle) { - if (extra) { - extra.textFill && (itemStyle.textFill = extra.textFill); - extra.textPosition && (itemStyle.textPosition = extra.textPosition); - } - } - function visual(visualType, dataIndexInside) { - dataIndexInside == null && (dataIndexInside = currDataIndexInside); - if (hasOwn2(STYLE_VISUAL_TYPE2, visualType)) { - var style_1 = data.getItemVisual(dataIndexInside, "style"); - return style_1 ? style_1[STYLE_VISUAL_TYPE2[visualType]] : null; - } - if (hasOwn2(NON_STYLE_VISUAL_PROPS2, visualType)) { - return data.getItemVisual(dataIndexInside, visualType); - } - } - function barLayout(opt) { - if (coordSys.type === "cartesian2d") { - var baseAxis = coordSys.getBaseAxis(); - return getLayoutOnAxis2(defaults2({ - axis: baseAxis - }, opt)); - } - } - function currentSeriesIndices() { - return ecModel.getCurrentSeriesIndices(); - } - function font(opt) { - return getFont2(opt, ecModel); - } - } - function wrapEncodeDef2(data) { - var encodeDef = {}; - each17(data.dimensions, function(dimName) { - var dimInfo = data.getDimensionInfo(dimName); - if (!dimInfo.isExtraCoord) { - var coordDim = dimInfo.coordDim; - var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || []; - dataDims[dimInfo.coordDimIndex] = data.getDimensionIndex(dimName); - } - }); - return encodeDef; - } - function createOrUpdateItem2(api, existsEl, dataIndex, elOption, seriesModel, group, data) { - if (!elOption) { - group.remove(existsEl); - return; - } - var el = doCreateOrUpdateEl2(api, existsEl, dataIndex, elOption, seriesModel, group); - el && data.setItemGraphicEl(dataIndex, el); - el && toggleHoverEmphasis2(el, elOption.focus, elOption.blurScope, elOption.emphasisDisabled); - return el; - } - function doCreateOrUpdateEl2(api, existsEl, dataIndex, elOption, seriesModel, group) { - if (true) { - assert2(elOption, "should not have an null/undefined element setting"); - } - var toBeReplacedIdx = -1; - var oldEl = existsEl; - if (existsEl && doesElNeedRecreate2(existsEl, elOption, seriesModel)) { - toBeReplacedIdx = indexOf2(group.childrenRef(), existsEl); - existsEl = null; - } - var isInit = !existsEl; - var el = existsEl; - if (!el) { - el = createEl3(elOption); - if (oldEl) { - copyElement2(oldEl, el); - } - } else { - el.clearStates(); - } - if (elOption.morph === false) { - el.disableMorphing = true; - } else if (el.disableMorphing) { - el.disableMorphing = false; - } - attachedTxInfoTmp2.normal.cfg = attachedTxInfoTmp2.normal.conOpt = attachedTxInfoTmp2.emphasis.cfg = attachedTxInfoTmp2.emphasis.conOpt = attachedTxInfoTmp2.blur.cfg = attachedTxInfoTmp2.blur.conOpt = attachedTxInfoTmp2.select.cfg = attachedTxInfoTmp2.select.conOpt = null; - attachedTxInfoTmp2.isLegacy = false; - doCreateOrUpdateAttachedTx2(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfoTmp2); - doCreateOrUpdateClipPath2(el, dataIndex, elOption, seriesModel, isInit); - updateElNormal2(api, el, dataIndex, elOption, attachedTxInfoTmp2, seriesModel, isInit); - hasOwn2(elOption, "info") && (customInnerStore2(el).info = elOption.info); - for (var i2 = 0; i2 < STATES2.length; i2++) { - var stateName = STATES2[i2]; - if (stateName !== NORMAL2) { - var otherStateOpt = retrieveStateOption2(elOption, stateName); - var otherStyleOpt = retrieveStyleOptionOnState2(elOption, otherStateOpt, stateName); - updateElOnState2(stateName, el, otherStateOpt, otherStyleOpt, attachedTxInfoTmp2); - } - } - updateZ$1(el, elOption, seriesModel); - if (elOption.type === "group") { - mergeChildren2(api, el, dataIndex, elOption, seriesModel); - } - if (toBeReplacedIdx >= 0) { - group.replaceAt(el, toBeReplacedIdx); - } else { - group.add(el); - } - return el; - } - function doesElNeedRecreate2(el, elOption, seriesModel) { - var elInner = customInnerStore2(el); - var elOptionType = elOption.type; - var elOptionShape = elOption.shape; - var elOptionStyle = elOption.style; - return ( - // Always create new if universal transition is enabled. - // Because we do transition after render. It needs to know what old element is. Replacement will loose it. - seriesModel.isUniversalTransitionEnabled() || elOptionType != null && elOptionType !== elInner.customGraphicType || elOptionType === "path" && hasOwnPathData2(elOptionShape) && getPathData2(elOptionShape) !== elInner.customPathData || elOptionType === "image" && hasOwn2(elOptionStyle, "image") && elOptionStyle.image !== elInner.customImagePath - ); - } - function doCreateOrUpdateClipPath2(el, dataIndex, elOption, seriesModel, isInit) { - var clipPathOpt = elOption.clipPath; - if (clipPathOpt === false) { - if (el && el.getClipPath()) { - el.removeClipPath(); - } - } else if (clipPathOpt) { - var clipPath = el.getClipPath(); - if (clipPath && doesElNeedRecreate2(clipPath, clipPathOpt, seriesModel)) { - clipPath = null; - } - if (!clipPath) { - clipPath = createEl3(clipPathOpt); - if (true) { - assert2(isPath$1(clipPath), "Only any type of `path` can be used in `clipPath`, rather than " + clipPath.type + "."); - } - el.setClipPath(clipPath); - } - updateElNormal2(null, clipPath, dataIndex, clipPathOpt, null, seriesModel, isInit); - } - } - function doCreateOrUpdateAttachedTx2(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfo) { - if (el.isGroup) { - return; - } - processTxInfo2(elOption, null, attachedTxInfo); - processTxInfo2(elOption, EMPHASIS2, attachedTxInfo); - var txConOptNormal = attachedTxInfo.normal.conOpt; - var txConOptEmphasis = attachedTxInfo.emphasis.conOpt; - var txConOptBlur = attachedTxInfo.blur.conOpt; - var txConOptSelect = attachedTxInfo.select.conOpt; - if (txConOptNormal != null || txConOptEmphasis != null || txConOptSelect != null || txConOptBlur != null) { - var textContent = el.getTextContent(); - if (txConOptNormal === false) { - textContent && el.removeTextContent(); - } else { - txConOptNormal = attachedTxInfo.normal.conOpt = txConOptNormal || { - type: "text" - }; - if (!textContent) { - textContent = createEl3(txConOptNormal); - el.setTextContent(textContent); - } else { - textContent.clearStates(); - } - updateElNormal2(null, textContent, dataIndex, txConOptNormal, null, seriesModel, isInit); - var txConStlOptNormal = txConOptNormal && txConOptNormal.style; - for (var i2 = 0; i2 < STATES2.length; i2++) { - var stateName = STATES2[i2]; - if (stateName !== NORMAL2) { - var txConOptOtherState = attachedTxInfo[stateName].conOpt; - updateElOnState2(stateName, textContent, txConOptOtherState, retrieveStyleOptionOnState2(txConOptNormal, txConOptOtherState, stateName), null); - } - } - txConStlOptNormal ? textContent.dirty() : textContent.markRedraw(); - } - } - } - function processTxInfo2(elOption, state, attachedTxInfo) { - var stateOpt = !state ? elOption : retrieveStateOption2(elOption, state); - var styleOpt = !state ? elOption.style : retrieveStyleOptionOnState2(elOption, stateOpt, EMPHASIS2); - var elType = elOption.type; - var txCfg = stateOpt ? stateOpt.textConfig : null; - var txConOptNormal = elOption.textContent; - var txConOpt = !txConOptNormal ? null : !state ? txConOptNormal : retrieveStateOption2(txConOptNormal, state); - if (styleOpt && // Because emphasis style has little info to detect legacy, - // if normal is legacy, emphasis is trade as legacy. - (attachedTxInfo.isLegacy || isEC4CompatibleStyle2(styleOpt, elType, !!txCfg, !!txConOpt))) { - attachedTxInfo.isLegacy = true; - var convertResult = convertFromEC4CompatibleStyle2(styleOpt, elType, !state); - if (!txCfg && convertResult.textConfig) { - txCfg = convertResult.textConfig; - } - if (!txConOpt && convertResult.textContent) { - txConOpt = convertResult.textContent; - } - } - if (!state && txConOpt) { - var txConOptNormal_1 = txConOpt; - !txConOptNormal_1.type && (txConOptNormal_1.type = "text"); - if (true) { - assert2(txConOptNormal_1.type === "text", 'textContent.type must be "text"'); - } - } - var info = !state ? attachedTxInfo.normal : attachedTxInfo[state]; - info.cfg = txCfg; - info.conOpt = txConOpt; - } - function retrieveStateOption2(elOption, state) { - return !state ? elOption : elOption ? elOption[state] : null; - } - function retrieveStyleOptionOnState2(stateOptionNormal, stateOption, state) { - var style = stateOption && stateOption.style; - if (style == null && state === EMPHASIS2 && stateOptionNormal) { - style = stateOptionNormal.styleEmphasis; - } - return style; - } - function mergeChildren2(api, el, dataIndex, elOption, seriesModel) { - var newChildren = elOption.children; - var newLen = newChildren ? newChildren.length : 0; - var mergeChildren3 = elOption.$mergeChildren; - var byName = mergeChildren3 === "byName" || elOption.diffChildrenByName; - var notMerge = mergeChildren3 === false; - if (!newLen && !byName && !notMerge) { - return; - } - if (byName) { - diffGroupChildren2({ - api, - oldChildren: el.children() || [], - newChildren: newChildren || [], - dataIndex, - seriesModel, - group: el - }); - return; - } - notMerge && el.removeAll(); - var index = 0; - for (; index < newLen; index++) { - var newChild = newChildren[index]; - var oldChild = el.childAt(index); - if (newChild) { - if (newChild.ignore == null) { - newChild.ignore = false; - } - doCreateOrUpdateEl2(api, oldChild, dataIndex, newChild, seriesModel, el); - } else { - if (true) { - assert2(oldChild, "renderItem should not return a group containing elements as null/undefined/{} if they do not exist before."); - } - oldChild.ignore = true; - } - } - for (var i2 = el.childCount() - 1; i2 >= index; i2--) { - var child = el.childAt(i2); - removeChildFromGroup2(el, child, seriesModel); - } - } - function removeChildFromGroup2(group, child, seriesModel) { - child && applyLeaveTransition2(child, customInnerStore2(group).option, seriesModel); - } - function diffGroupChildren2(context) { - new DataDiffer2(context.oldChildren, context.newChildren, getKey2, getKey2, context).add(processAddUpdate2).update(processAddUpdate2).remove(processRemove2).execute(); - } - function getKey2(item, idx) { - var name = item && item.name; - return name != null ? name : GROUP_DIFF_PREFIX2 + idx; - } - function processAddUpdate2(newIndex, oldIndex) { - var context = this.context; - var childOption = newIndex != null ? context.newChildren[newIndex] : null; - var child = oldIndex != null ? context.oldChildren[oldIndex] : null; - doCreateOrUpdateEl2(context.api, child, context.dataIndex, childOption, context.seriesModel, context.group); - } - function processRemove2(oldIndex) { - var context = this.context; - var child = context.oldChildren[oldIndex]; - child && applyLeaveTransition2(child, customInnerStore2(child).option, context.seriesModel); - } - function getPathData2(shape) { - return shape && (shape.pathData || shape.d); - } - function hasOwnPathData2(shape) { - return shape && (hasOwn2(shape, "pathData") || hasOwn2(shape, "d")); - } - function install$r(registers) { - registers.registerChartView(CustomChartView2); - registers.registerSeriesModel(CustomSeriesModel2); - } - var inner$a = makeInner2(); - var clone$3 = clone6; - var bind$1 = bind3; - var BaseAxisPointer2 = ( - /** @class */ - function() { - function BaseAxisPointer3() { - this._dragging = false; - this.animationThreshold = 15; - } - BaseAxisPointer3.prototype.render = function(axisModel, axisPointerModel, api, forceRender) { - var value = axisPointerModel.get("value"); - var status = axisPointerModel.get("status"); - this._axisModel = axisModel; - this._axisPointerModel = axisPointerModel; - this._api = api; - if (!forceRender && this._lastValue === value && this._lastStatus === status) { - return; - } - this._lastValue = value; - this._lastStatus = status; - var group = this._group; - var handle = this._handle; - if (!status || status === "hide") { - group && group.hide(); - handle && handle.hide(); - return; - } - group && group.show(); - handle && handle.show(); - var elOption = {}; - this.makeElOption(elOption, value, axisModel, axisPointerModel, api); - var graphicKey = elOption.graphicKey; - if (graphicKey !== this._lastGraphicKey) { - this.clear(api); - } - this._lastGraphicKey = graphicKey; - var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel); - if (!group) { - group = this._group = new Group5(); - this.createPointerEl(group, elOption, axisModel, axisPointerModel); - this.createLabelEl(group, elOption, axisModel, axisPointerModel); - api.getZr().add(group); - } else { - var doUpdateProps = curry3(updateProps$1, axisPointerModel, moveAnimation); - this.updatePointerEl(group, elOption, doUpdateProps); - this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel); - } - updateMandatoryProps2(group, axisPointerModel, true); - this._renderHandle(value); - }; - BaseAxisPointer3.prototype.remove = function(api) { - this.clear(api); - }; - BaseAxisPointer3.prototype.dispose = function(api) { - this.clear(api); - }; - BaseAxisPointer3.prototype.determineAnimation = function(axisModel, axisPointerModel) { - var animation = axisPointerModel.get("animation"); - var axis = axisModel.axis; - var isCategoryAxis = axis.type === "category"; - var useSnap = axisPointerModel.get("snap"); - if (!useSnap && !isCategoryAxis) { - return false; - } - if (animation === "auto" || animation == null) { - var animationThreshold = this.animationThreshold; - if (isCategoryAxis && axis.getBandWidth() > animationThreshold) { - return true; - } - if (useSnap) { - var seriesDataCount = getAxisInfo3(axisModel).seriesDataCount; - var axisExtent = axis.getExtent(); - return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold; - } - return false; - } - return animation === true; - }; - BaseAxisPointer3.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) { - }; - BaseAxisPointer3.prototype.createPointerEl = function(group, elOption, axisModel, axisPointerModel) { - var pointerOption = elOption.pointer; - if (pointerOption) { - var pointerEl = inner$a(group).pointerEl = new graphic[pointerOption.type](clone$3(elOption.pointer)); - group.add(pointerEl); - } - }; - BaseAxisPointer3.prototype.createLabelEl = function(group, elOption, axisModel, axisPointerModel) { - if (elOption.label) { - var labelEl = inner$a(group).labelEl = new ZRText2(clone$3(elOption.label)); - group.add(labelEl); - updateLabelShowHide2(labelEl, axisPointerModel); - } - }; - BaseAxisPointer3.prototype.updatePointerEl = function(group, elOption, updateProps4) { - var pointerEl = inner$a(group).pointerEl; - if (pointerEl && elOption.pointer) { - pointerEl.setStyle(elOption.pointer.style); - updateProps4(pointerEl, { - shape: elOption.pointer.shape - }); - } - }; - BaseAxisPointer3.prototype.updateLabelEl = function(group, elOption, updateProps4, axisPointerModel) { - var labelEl = inner$a(group).labelEl; - if (labelEl) { - labelEl.setStyle(elOption.label.style); - updateProps4(labelEl, { - // Consider text length change in vertical axis, animation should - // be used on shape, otherwise the effect will be weird. - // TODOTODO - // shape: elOption.label.shape, - x: elOption.label.x, - y: elOption.label.y - }); - updateLabelShowHide2(labelEl, axisPointerModel); - } - }; - BaseAxisPointer3.prototype._renderHandle = function(value) { - if (this._dragging || !this.updateHandleTransform) { - return; - } - var axisPointerModel = this._axisPointerModel; - var zr = this._api.getZr(); - var handle = this._handle; - var handleModel = axisPointerModel.getModel("handle"); - var status = axisPointerModel.get("status"); - if (!handleModel.get("show") || !status || status === "hide") { - handle && zr.remove(handle); - this._handle = null; - return; - } - var isInit; - if (!this._handle) { - isInit = true; - handle = this._handle = createIcon2(handleModel.get("icon"), { - cursor: "move", - draggable: true, - onmousemove: function(e3) { - stop2(e3.event); - }, - onmousedown: bind$1(this._onHandleDragMove, this, 0, 0), - drift: bind$1(this._onHandleDragMove, this), - ondragend: bind$1(this._onHandleDragEnd, this) - }); - zr.add(handle); - } - updateMandatoryProps2(handle, axisPointerModel, false); - handle.setStyle(handleModel.getItemStyle(null, ["color", "borderColor", "borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"])); - var handleSize = handleModel.get("size"); - if (!isArray3(handleSize)) { - handleSize = [handleSize, handleSize]; - } - handle.scaleX = handleSize[0] / 2; - handle.scaleY = handleSize[1] / 2; - createOrUpdate2(this, "_doDispatchAxisPointer", handleModel.get("throttle") || 0, "fixRate"); - this._moveHandleToValue(value, isInit); - }; - BaseAxisPointer3.prototype._moveHandleToValue = function(value, isInit) { - updateProps$1(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps2(this.getHandleTransform(value, this._axisModel, this._axisPointerModel))); - }; - BaseAxisPointer3.prototype._onHandleDragMove = function(dx, dy) { - var handle = this._handle; - if (!handle) { - return; - } - this._dragging = true; - var trans = this.updateHandleTransform(getHandleTransProps2(handle), [dx, dy], this._axisModel, this._axisPointerModel); - this._payloadInfo = trans; - handle.stopAnimation(); - handle.attr(getHandleTransProps2(trans)); - inner$a(handle).lastProp = null; - this._doDispatchAxisPointer(); - }; - BaseAxisPointer3.prototype._doDispatchAxisPointer = function() { - var handle = this._handle; - if (!handle) { - return; - } - var payloadInfo = this._payloadInfo; - var axisModel = this._axisModel; - this._api.dispatchAction({ - type: "updateAxisPointer", - x: payloadInfo.cursorPoint[0], - y: payloadInfo.cursorPoint[1], - tooltipOption: payloadInfo.tooltipOption, - axesInfo: [{ - axisDim: axisModel.axis.dim, - axisIndex: axisModel.componentIndex - }] - }); - }; - BaseAxisPointer3.prototype._onHandleDragEnd = function() { - this._dragging = false; - var handle = this._handle; - if (!handle) { - return; - } - var value = this._axisPointerModel.get("value"); - this._moveHandleToValue(value); - this._api.dispatchAction({ - type: "hideTip" - }); - }; - BaseAxisPointer3.prototype.clear = function(api) { - this._lastValue = null; - this._lastStatus = null; - var zr = api.getZr(); - var group = this._group; - var handle = this._handle; - if (zr && group) { - this._lastGraphicKey = null; - group && zr.remove(group); - handle && zr.remove(handle); - this._group = null; - this._handle = null; - this._payloadInfo = null; - } - clear3(this, "_doDispatchAxisPointer"); - }; - BaseAxisPointer3.prototype.doClear = function() { - }; - BaseAxisPointer3.prototype.buildLabel = function(xy, wh, xDimIndex) { - xDimIndex = xDimIndex || 0; - return { - x: xy[xDimIndex], - y: xy[1 - xDimIndex], - width: wh[xDimIndex], - height: wh[1 - xDimIndex] - }; - }; - return BaseAxisPointer3; - }() - ); - function updateProps$1(animationModel, moveAnimation, el, props) { - if (!propsEqual2(inner$a(el).lastProp, props)) { - inner$a(el).lastProp = props; - moveAnimation ? updateProps3(el, props, animationModel) : (el.stopAnimation(), el.attr(props)); - } - } - function propsEqual2(lastProps, newProps) { - if (isObject5(lastProps) && isObject5(newProps)) { - var equals_1 = true; - each17(newProps, function(item, key) { - equals_1 = equals_1 && propsEqual2(lastProps[key], item); - }); - return !!equals_1; - } else { - return lastProps === newProps; - } - } - function updateLabelShowHide2(labelEl, axisPointerModel) { - labelEl[axisPointerModel.get(["label", "show"]) ? "show" : "hide"](); - } - function getHandleTransProps2(trans) { - return { - x: trans.x || 0, - y: trans.y || 0, - rotation: trans.rotation || 0 - }; - } - function updateMandatoryProps2(group, axisPointerModel, silent) { - var z = axisPointerModel.get("z"); - var zlevel = axisPointerModel.get("zlevel"); - group && group.traverse(function(el) { - if (el.type !== "group") { - z != null && (el.z = z); - zlevel != null && (el.zlevel = zlevel); - el.silent = silent; - } - }); - } - function buildElStyle2(axisPointerModel) { - var axisPointerType = axisPointerModel.get("type"); - var styleModel = axisPointerModel.getModel(axisPointerType + "Style"); - var style; - if (axisPointerType === "line") { - style = styleModel.getLineStyle(); - style.fill = null; - } else if (axisPointerType === "shadow") { - style = styleModel.getAreaStyle(); - style.stroke = null; - } - return style; - } - function buildLabelElOption2(elOption, axisModel, axisPointerModel, api, labelPos) { - var value = axisPointerModel.get("value"); - var text = getValueLabel2(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get("seriesDataIndices"), { - precision: axisPointerModel.get(["label", "precision"]), - formatter: axisPointerModel.get(["label", "formatter"]) - }); - var labelModel = axisPointerModel.getModel("label"); - var paddings = normalizeCssArray$1(labelModel.get("padding") || 0); - var font = labelModel.getFont(); - var textRect = getBoundingRect2(text, font); - var position3 = labelPos.position; - var width = textRect.width + paddings[1] + paddings[3]; - var height = textRect.height + paddings[0] + paddings[2]; - var align = labelPos.align; - align === "right" && (position3[0] -= width); - align === "center" && (position3[0] -= width / 2); - var verticalAlign = labelPos.verticalAlign; - verticalAlign === "bottom" && (position3[1] -= height); - verticalAlign === "middle" && (position3[1] -= height / 2); - confineInContainer2(position3, width, height, api); - var bgColor = labelModel.get("backgroundColor"); - if (!bgColor || bgColor === "auto") { - bgColor = axisModel.get(["axisLine", "lineStyle", "color"]); - } - elOption.label = { - // shape: {x: 0, y: 0, width: width, height: height, r: labelModel.get('borderRadius')}, - x: position3[0], - y: position3[1], - style: createTextStyle3(labelModel, { - text, - font, - fill: labelModel.getTextColor(), - padding: paddings, - backgroundColor: bgColor - }), - // Label should be over axisPointer. - z2: 10 - }; - } - function confineInContainer2(position3, width, height, api) { - var viewWidth = api.getWidth(); - var viewHeight = api.getHeight(); - position3[0] = Math.min(position3[0] + width, viewWidth) - width; - position3[1] = Math.min(position3[1] + height, viewHeight) - height; - position3[0] = Math.max(position3[0], 0); - position3[1] = Math.max(position3[1], 0); - } - function getValueLabel2(value, axis, ecModel, seriesDataIndices, opt) { - value = axis.scale.parse(value); - var text = axis.scale.getLabel({ - value - }, { - // If `precision` is set, width can be fixed (like '12.00500'), which - // helps to debounce when when moving label. - precision: opt.precision - }); - var formatter = opt.formatter; - if (formatter) { - var params_1 = { - value: getAxisRawValue2(axis, { - value - }), - axisDimension: axis.dim, - axisIndex: axis.index, - seriesData: [] - }; - each17(seriesDataIndices, function(idxItem) { - var series = ecModel.getSeriesByIndex(idxItem.seriesIndex); - var dataIndex = idxItem.dataIndexInside; - var dataParams = series && series.getDataParams(dataIndex); - dataParams && params_1.seriesData.push(dataParams); - }); - if (isString2(formatter)) { - text = formatter.replace("{value}", text); - } else if (isFunction2(formatter)) { - text = formatter(params_1); - } - } - return text; - } - function getTransformedPosition2(axis, value, layoutInfo) { - var transform2 = create$1(); - rotate2(transform2, transform2, layoutInfo.rotation); - translate2(transform2, transform2, layoutInfo.position); - return applyTransform$1([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform2); - } - function buildCartesianSingleLabelElOption2(value, elOption, layoutInfo, axisModel, axisPointerModel, api) { - var textLayout = AxisBuilder2.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection); - layoutInfo.labelMargin = axisPointerModel.get(["label", "margin"]); - buildLabelElOption2(elOption, axisModel, axisPointerModel, api, { - position: getTransformedPosition2(axisModel.axis, value, layoutInfo), - align: textLayout.textAlign, - verticalAlign: textLayout.textVerticalAlign - }); - } - function makeLineShape2(p1, p2, xDimIndex) { - xDimIndex = xDimIndex || 0; - return { - x1: p1[xDimIndex], - y1: p1[1 - xDimIndex], - x2: p2[xDimIndex], - y2: p2[1 - xDimIndex] - }; - } - function makeRectShape2(xy, wh, xDimIndex) { - xDimIndex = xDimIndex || 0; - return { - x: xy[xDimIndex], - y: xy[1 - xDimIndex], - width: wh[xDimIndex], - height: wh[1 - xDimIndex] - }; - } - function makeSectorShape2(cx, cy, r0, r, startAngle, endAngle) { - return { - cx, - cy, - r0, - r, - startAngle, - endAngle, - clockwise: true - }; - } - var CartesianAxisPointer2 = ( - /** @class */ - function(_super) { - __extends2(CartesianAxisPointer3, _super); - function CartesianAxisPointer3() { - return _super !== null && _super.apply(this, arguments) || this; - } - CartesianAxisPointer3.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) { - var axis = axisModel.axis; - var grid = axis.grid; - var axisPointerType = axisPointerModel.get("type"); - var otherExtent = getCartesian2(grid, axis).getOtherAxis(axis).getGlobalExtent(); - var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true)); - if (axisPointerType && axisPointerType !== "none") { - var elStyle = buildElStyle2(axisPointerModel); - var pointerOption = pointerShapeBuilder4[axisPointerType](axis, pixelValue, otherExtent); - pointerOption.style = elStyle; - elOption.graphicKey = pointerOption.type; - elOption.pointer = pointerOption; - } - var layoutInfo = layout$1(grid.model, axisModel); - buildCartesianSingleLabelElOption2( - // @ts-ignore - value, - elOption, - layoutInfo, - axisModel, - axisPointerModel, - api - ); - }; - CartesianAxisPointer3.prototype.getHandleTransform = function(value, axisModel, axisPointerModel) { - var layoutInfo = layout$1(axisModel.axis.grid.model, axisModel, { - labelInside: false - }); - layoutInfo.labelMargin = axisPointerModel.get(["handle", "margin"]); - var pos = getTransformedPosition2(axisModel.axis, value, layoutInfo); - return { - x: pos[0], - y: pos[1], - rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0) - }; - }; - CartesianAxisPointer3.prototype.updateHandleTransform = function(transform2, delta, axisModel, axisPointerModel) { - var axis = axisModel.axis; - var grid = axis.grid; - var axisExtent = axis.getGlobalExtent(true); - var otherExtent = getCartesian2(grid, axis).getOtherAxis(axis).getGlobalExtent(); - var dimIndex = axis.dim === "x" ? 0 : 1; - var currPosition = [transform2.x, transform2.y]; - currPosition[dimIndex] += delta[dimIndex]; - currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]); - currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]); - var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2; - var cursorPoint = [cursorOtherValue, cursorOtherValue]; - cursorPoint[dimIndex] = currPosition[dimIndex]; - var tooltipOptions = [{ - verticalAlign: "middle" - }, { - align: "center" - }]; - return { - x: currPosition[0], - y: currPosition[1], - rotation: transform2.rotation, - cursorPoint, - tooltipOption: tooltipOptions[dimIndex] - }; - }; - return CartesianAxisPointer3; - }(BaseAxisPointer2) - ); - function getCartesian2(grid, axis) { - var opt = {}; - opt[axis.dim + "AxisIndex"] = axis.index; - return grid.getCartesian(opt); - } - var pointerShapeBuilder4 = { - line: function(axis, pixelValue, otherExtent) { - var targetShape = makeLineShape2([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex2(axis)); - return { - type: "Line", - subPixelOptimize: true, - shape: targetShape - }; - }, - shadow: function(axis, pixelValue, otherExtent) { - var bandWidth = Math.max(1, axis.getBandWidth()); - var span = otherExtent[1] - otherExtent[0]; - return { - type: "Rect", - shape: makeRectShape2([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex2(axis)) - }; - } - }; - function getAxisDimIndex2(axis) { - return axis.dim === "x" ? 0 : 1; - } - var AxisPointerModel2 = ( - /** @class */ - function(_super) { - __extends2(AxisPointerModel3, _super); - function AxisPointerModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = AxisPointerModel3.type; - return _this; - } - AxisPointerModel3.type = "axisPointer"; - AxisPointerModel3.defaultOption = { - // 'auto' means that show when triggered by tooltip or handle. - show: "auto", - // zlevel: 0, - z: 50, - type: "line", - // axispointer triggered by tootip determine snap automatically, - // see `modelHelper`. - snap: false, - triggerTooltip: true, - triggerEmphasis: true, - value: null, - status: null, - link: [], - // Do not set 'auto' here, otherwise global animation: false - // will not effect at this axispointer. - animation: null, - animationDurationUpdate: 200, - lineStyle: { - color: "#B9BEC9", - width: 1, - type: "dashed" - }, - shadowStyle: { - color: "rgba(210,219,238,0.2)" - }, - label: { - show: true, - formatter: null, - precision: "auto", - margin: 3, - color: "#fff", - padding: [5, 7, 5, 7], - backgroundColor: "auto", - borderColor: null, - borderWidth: 0, - borderRadius: 3 - }, - handle: { - show: false, - // eslint-disable-next-line - icon: "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z", - size: 45, - // handle margin is from symbol center to axis, which is stable when circular move. - margin: 50, - // color: '#1b8bbd' - // color: '#2f4554' - color: "#333", - shadowBlur: 3, - shadowColor: "#aaa", - shadowOffsetX: 0, - shadowOffsetY: 2, - // For mobile performance - throttle: 40 - } - }; - return AxisPointerModel3; - }(ComponentModel2) - ); - var inner$b = makeInner2(); - var each$7 = each17; - function register2(key, api, handler) { - if (env2.node) { - return; - } - var zr = api.getZr(); - inner$b(zr).records || (inner$b(zr).records = {}); - initGlobalListeners2(zr, api); - var record = inner$b(zr).records[key] || (inner$b(zr).records[key] = {}); - record.handler = handler; - } - function initGlobalListeners2(zr, api) { - if (inner$b(zr).initialized) { - return; - } - inner$b(zr).initialized = true; - useHandler("click", curry3(doEnter2, "click")); - useHandler("mousemove", curry3(doEnter2, "mousemove")); - useHandler("globalout", onLeave2); - function useHandler(eventType, cb) { - zr.on(eventType, function(e3) { - var dis = makeDispatchAction3(api); - each$7(inner$b(zr).records, function(record) { - record && cb(record, e3, dis.dispatchAction); - }); - dispatchTooltipFinally2(dis.pendings, api); - }); - } - } - function dispatchTooltipFinally2(pendings, api) { - var showLen = pendings.showTip.length; - var hideLen = pendings.hideTip.length; - var actuallyPayload; - if (showLen) { - actuallyPayload = pendings.showTip[showLen - 1]; - } else if (hideLen) { - actuallyPayload = pendings.hideTip[hideLen - 1]; - } - if (actuallyPayload) { - actuallyPayload.dispatchAction = null; - api.dispatchAction(actuallyPayload); - } - } - function onLeave2(record, e3, dispatchAction4) { - record.handler("leave", null, dispatchAction4); - } - function doEnter2(currTrigger, record, e3, dispatchAction4) { - record.handler(currTrigger, e3, dispatchAction4); - } - function makeDispatchAction3(api) { - var pendings = { - showTip: [], - hideTip: [] - }; - var dispatchAction4 = function(payload) { - var pendingList = pendings[payload.type]; - if (pendingList) { - pendingList.push(payload); - } else { - payload.dispatchAction = dispatchAction4; - api.dispatchAction(payload); - } - }; - return { - dispatchAction: dispatchAction4, - pendings - }; - } - function unregister2(key, api) { - if (env2.node) { - return; - } - var zr = api.getZr(); - var record = (inner$b(zr).records || {})[key]; - if (record) { - inner$b(zr).records[key] = null; - } - } - var AxisPointerView2 = ( - /** @class */ - function(_super) { - __extends2(AxisPointerView3, _super); - function AxisPointerView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = AxisPointerView3.type; - return _this; - } - AxisPointerView3.prototype.render = function(globalAxisPointerModel, ecModel, api) { - var globalTooltipModel = ecModel.getComponent("tooltip"); - var triggerOn = globalAxisPointerModel.get("triggerOn") || globalTooltipModel && globalTooltipModel.get("triggerOn") || "mousemove|click"; - register2("axisPointer", api, function(currTrigger, e3, dispatchAction4) { - if (triggerOn !== "none" && (currTrigger === "leave" || triggerOn.indexOf(currTrigger) >= 0)) { - dispatchAction4({ - type: "updateAxisPointer", - currTrigger, - x: e3 && e3.offsetX, - y: e3 && e3.offsetY - }); - } - }); - }; - AxisPointerView3.prototype.remove = function(ecModel, api) { - unregister2("axisPointer", api); - }; - AxisPointerView3.prototype.dispose = function(ecModel, api) { - unregister2("axisPointer", api); - }; - AxisPointerView3.type = "axisPointer"; - return AxisPointerView3; - }(ComponentView2) - ); - function findPointFromSeries2(finder, ecModel) { - var point = []; - var seriesIndex = finder.seriesIndex; - var seriesModel; - if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) { - return { - point: [] - }; - } - var data = seriesModel.getData(); - var dataIndex = queryDataIndex2(data, finder); - if (dataIndex == null || dataIndex < 0 || isArray3(dataIndex)) { - return { - point: [] - }; - } - var el = data.getItemGraphicEl(dataIndex); - var coordSys = seriesModel.coordinateSystem; - if (seriesModel.getTooltipPosition) { - point = seriesModel.getTooltipPosition(dataIndex) || []; - } else if (coordSys && coordSys.dataToPoint) { - if (finder.isStacked) { - var baseAxis = coordSys.getBaseAxis(); - var valueAxis3 = coordSys.getOtherAxis(baseAxis); - var valueAxisDim = valueAxis3.dim; - var baseAxisDim = baseAxis.dim; - var baseDataOffset = valueAxisDim === "x" || valueAxisDim === "radius" ? 1 : 0; - var baseDim = data.mapDimension(baseAxisDim); - var stackedData = []; - stackedData[baseDataOffset] = data.get(baseDim, dataIndex); - stackedData[1 - baseDataOffset] = data.get(data.getCalculationInfo("stackResultDimension"), dataIndex); - point = coordSys.dataToPoint(stackedData) || []; - } else { - point = coordSys.dataToPoint(data.getValues(map3(coordSys.dimensions, function(dim) { - return data.mapDimension(dim); - }), dataIndex)) || []; - } - } else if (el) { - var rect = el.getBoundingRect().clone(); - rect.applyTransform(el.transform); - point = [rect.x + rect.width / 2, rect.y + rect.height / 2]; - } - return { - point, - el - }; - } - var inner$c = makeInner2(); - function axisTrigger2(payload, ecModel, api) { - var currTrigger = payload.currTrigger; - var point = [payload.x, payload.y]; - var finder = payload; - var dispatchAction4 = payload.dispatchAction || bind3(api.dispatchAction, api); - var coordSysAxesInfo = ecModel.getComponent("axisPointer").coordSysAxesInfo; - if (!coordSysAxesInfo) { - return; - } - if (illegalPoint2(point)) { - point = findPointFromSeries2({ - seriesIndex: finder.seriesIndex, - // Do not use dataIndexInside from other ec instance. - // FIXME: auto detect it? - dataIndex: finder.dataIndex - }, ecModel).point; - } - var isIllegalPoint = illegalPoint2(point); - var inputAxesInfo = finder.axesInfo; - var axesInfo = coordSysAxesInfo.axesInfo; - var shouldHide = currTrigger === "leave" || illegalPoint2(point); - var outputPayload = {}; - var showValueMap = {}; - var dataByCoordSys = { - list: [], - map: {} - }; - var updaters = { - showPointer: curry3(showPointer2, showValueMap), - showTooltip: curry3(showTooltip2, dataByCoordSys) - }; - each17(coordSysAxesInfo.coordSysMap, function(coordSys, coordSysKey) { - var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point); - each17(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function(axisInfo, key) { - var axis = axisInfo.axis; - var inputAxisInfo = findInputAxisInfo2(inputAxesInfo, axisInfo); - if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) { - var val = inputAxisInfo && inputAxisInfo.value; - if (val == null && !isIllegalPoint) { - val = axis.pointToData(point); - } - val != null && processOnAxis2(axisInfo, val, updaters, false, outputPayload); - } - }); - }); - var linkTriggers = {}; - each17(axesInfo, function(tarAxisInfo, tarKey) { - var linkGroup = tarAxisInfo.linkGroup; - if (linkGroup && !showValueMap[tarKey]) { - each17(linkGroup.axesInfo, function(srcAxisInfo, srcKey) { - var srcValItem = showValueMap[srcKey]; - if (srcAxisInfo !== tarAxisInfo && srcValItem) { - var val = srcValItem.value; - linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam2(srcAxisInfo), makeMapperParam2(tarAxisInfo)))); - linkTriggers[tarAxisInfo.key] = val; - } - }); - } - }); - each17(linkTriggers, function(val, tarKey) { - processOnAxis2(axesInfo[tarKey], val, updaters, true, outputPayload); - }); - updateModelActually2(showValueMap, axesInfo, outputPayload); - dispatchTooltipActually2(dataByCoordSys, point, payload, dispatchAction4); - dispatchHighDownActually2(axesInfo, dispatchAction4, api); - return outputPayload; - } - function processOnAxis2(axisInfo, newValue, updaters, noSnap, outputFinder) { - var axis = axisInfo.axis; - if (axis.scale.isBlank() || !axis.containData(newValue)) { - return; - } - if (!axisInfo.involveSeries) { - updaters.showPointer(axisInfo, newValue); - return; - } - var payloadInfo = buildPayloadsBySeries2(newValue, axisInfo); - var payloadBatch = payloadInfo.payloadBatch; - var snapToValue = payloadInfo.snapToValue; - if (payloadBatch[0] && outputFinder.seriesIndex == null) { - extend3(outputFinder, payloadBatch[0]); - } - if (!noSnap && axisInfo.snap) { - if (axis.containData(snapToValue) && snapToValue != null) { - newValue = snapToValue; - } - } - updaters.showPointer(axisInfo, newValue, payloadBatch); - updaters.showTooltip(axisInfo, payloadInfo, snapToValue); - } - function buildPayloadsBySeries2(value, axisInfo) { - var axis = axisInfo.axis; - var dim = axis.dim; - var snapToValue = value; - var payloadBatch = []; - var minDist = Number.MAX_VALUE; - var minDiff = -1; - each17(axisInfo.seriesModels, function(series, idx) { - var dataDim = series.getData().mapDimensionsAll(dim); - var seriesNestestValue; - var dataIndices; - if (series.getAxisTooltipData) { - var result = series.getAxisTooltipData(dataDim, value, axis); - dataIndices = result.dataIndices; - seriesNestestValue = result.nestestValue; - } else { - dataIndices = series.getData().indicesOfNearest( - dataDim[0], - value, - // Add a threshold to avoid find the wrong dataIndex - // when data length is not same. - // false, - axis.type === "category" ? 0.5 : null - ); - if (!dataIndices.length) { - return; - } - seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]); - } - if (seriesNestestValue == null || !isFinite(seriesNestestValue)) { - return; - } - var diff = value - seriesNestestValue; - var dist4 = Math.abs(diff); - if (dist4 <= minDist) { - if (dist4 < minDist || diff >= 0 && minDiff < 0) { - minDist = dist4; - minDiff = diff; - snapToValue = seriesNestestValue; - payloadBatch.length = 0; - } - each17(dataIndices, function(dataIndex) { - payloadBatch.push({ - seriesIndex: series.seriesIndex, - dataIndexInside: dataIndex, - dataIndex: series.getData().getRawIndex(dataIndex) - }); - }); - } - }); - return { - payloadBatch, - snapToValue - }; - } - function showPointer2(showValueMap, axisInfo, value, payloadBatch) { - showValueMap[axisInfo.key] = { - value, - payloadBatch - }; - } - function showTooltip2(dataByCoordSys, axisInfo, payloadInfo, value) { - var payloadBatch = payloadInfo.payloadBatch; - var axis = axisInfo.axis; - var axisModel = axis.model; - var axisPointerModel = axisInfo.axisPointerModel; - if (!axisInfo.triggerTooltip || !payloadBatch.length) { - return; - } - var coordSysModel = axisInfo.coordSys.model; - var coordSysKey = makeKey2(coordSysModel); - var coordSysItem = dataByCoordSys.map[coordSysKey]; - if (!coordSysItem) { - coordSysItem = dataByCoordSys.map[coordSysKey] = { - coordSysId: coordSysModel.id, - coordSysIndex: coordSysModel.componentIndex, - coordSysType: coordSysModel.type, - coordSysMainType: coordSysModel.mainType, - dataByAxis: [] - }; - dataByCoordSys.list.push(coordSysItem); - } - coordSysItem.dataByAxis.push({ - axisDim: axis.dim, - axisIndex: axisModel.componentIndex, - axisType: axisModel.type, - axisId: axisModel.id, - value, - // Caustion: viewHelper.getValueLabel is actually on "view stage", which - // depends that all models have been updated. So it should not be performed - // here. Considering axisPointerModel used here is volatile, which is hard - // to be retrieve in TooltipView, we prepare parameters here. - valueLabelOpt: { - precision: axisPointerModel.get(["label", "precision"]), - formatter: axisPointerModel.get(["label", "formatter"]) - }, - seriesDataIndices: payloadBatch.slice() - }); - } - function updateModelActually2(showValueMap, axesInfo, outputPayload) { - var outputAxesInfo = outputPayload.axesInfo = []; - each17(axesInfo, function(axisInfo, key) { - var option = axisInfo.axisPointerModel.option; - var valItem = showValueMap[key]; - if (valItem) { - !axisInfo.useHandle && (option.status = "show"); - option.value = valItem.value; - option.seriesDataIndices = (valItem.payloadBatch || []).slice(); - } else { - !axisInfo.useHandle && (option.status = "hide"); - } - option.status === "show" && outputAxesInfo.push({ - axisDim: axisInfo.axis.dim, - axisIndex: axisInfo.axis.model.componentIndex, - value: option.value - }); - }); - } - function dispatchTooltipActually2(dataByCoordSys, point, payload, dispatchAction4) { - if (illegalPoint2(point) || !dataByCoordSys.list.length) { - dispatchAction4({ - type: "hideTip" - }); - return; - } - var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {}; - dispatchAction4({ - type: "showTip", - escapeConnect: true, - x: point[0], - y: point[1], - tooltipOption: payload.tooltipOption, - position: payload.position, - dataIndexInside: sampleItem.dataIndexInside, - dataIndex: sampleItem.dataIndex, - seriesIndex: sampleItem.seriesIndex, - dataByCoordSys: dataByCoordSys.list - }); - } - function dispatchHighDownActually2(axesInfo, dispatchAction4, api) { - var zr = api.getZr(); - var highDownKey = "axisPointerLastHighlights"; - var lastHighlights = inner$c(zr)[highDownKey] || {}; - var newHighlights = inner$c(zr)[highDownKey] = {}; - each17(axesInfo, function(axisInfo, key) { - var option = axisInfo.axisPointerModel.option; - option.status === "show" && axisInfo.triggerEmphasis && each17(option.seriesDataIndices, function(batchItem) { - var key2 = batchItem.seriesIndex + " | " + batchItem.dataIndex; - newHighlights[key2] = batchItem; - }); - }); - var toHighlight = []; - var toDownplay = []; - each17(lastHighlights, function(batchItem, key) { - !newHighlights[key] && toDownplay.push(batchItem); - }); - each17(newHighlights, function(batchItem, key) { - !lastHighlights[key] && toHighlight.push(batchItem); - }); - toDownplay.length && api.dispatchAction({ - type: "downplay", - escapeConnect: true, - // Not blur others when highlight in axisPointer. - notBlur: true, - batch: toDownplay - }); - toHighlight.length && api.dispatchAction({ - type: "highlight", - escapeConnect: true, - // Not blur others when highlight in axisPointer. - notBlur: true, - batch: toHighlight - }); - } - function findInputAxisInfo2(inputAxesInfo, axisInfo) { - for (var i2 = 0; i2 < (inputAxesInfo || []).length; i2++) { - var inputAxisInfo = inputAxesInfo[i2]; - if (axisInfo.axis.dim === inputAxisInfo.axisDim && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) { - return inputAxisInfo; - } - } - } - function makeMapperParam2(axisInfo) { - var axisModel = axisInfo.axis.model; - var item = {}; - var dim = item.axisDim = axisInfo.axis.dim; - item.axisIndex = item[dim + "AxisIndex"] = axisModel.componentIndex; - item.axisName = item[dim + "AxisName"] = axisModel.name; - item.axisId = item[dim + "AxisId"] = axisModel.id; - return item; - } - function illegalPoint2(point) { - return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]); - } - function install$s(registers) { - AxisView2.registerAxisPointerClass("CartesianAxisPointer", CartesianAxisPointer2); - registers.registerComponentModel(AxisPointerModel2); - registers.registerComponentView(AxisPointerView2); - registers.registerPreprocessor(function(option) { - if (option) { - (!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {}); - var link = option.axisPointer.link; - if (link && !isArray3(link)) { - option.axisPointer.link = [link]; - } - } - }); - registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, function(ecModel, api) { - ecModel.getComponent("axisPointer").coordSysAxesInfo = collect2(ecModel, api); - }); - registers.registerAction({ - type: "updateAxisPointer", - event: "updateAxisPointer", - update: ":updateAxisPointer" - }, axisTrigger2); - } - function install$t(registers) { - use2(install$5); - use2(install$s); - } - var PolarAxisPointer2 = ( - /** @class */ - function(_super) { - __extends2(PolarAxisPointer3, _super); - function PolarAxisPointer3() { - return _super !== null && _super.apply(this, arguments) || this; - } - PolarAxisPointer3.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) { - var axis = axisModel.axis; - if (axis.dim === "angle") { - this.animationThreshold = Math.PI / 18; - } - var polar = axis.polar; - var otherAxis = polar.getOtherAxis(axis); - var otherExtent = otherAxis.getExtent(); - var coordValue = axis.dataToCoord(value); - var axisPointerType = axisPointerModel.get("type"); - if (axisPointerType && axisPointerType !== "none") { - var elStyle = buildElStyle2(axisPointerModel); - var pointerOption = pointerShapeBuilder$1[axisPointerType](axis, polar, coordValue, otherExtent); - pointerOption.style = elStyle; - elOption.graphicKey = pointerOption.type; - elOption.pointer = pointerOption; - } - var labelMargin = axisPointerModel.get(["label", "margin"]); - var labelPos = getLabelPosition2(value, axisModel, axisPointerModel, polar, labelMargin); - buildLabelElOption2(elOption, axisModel, axisPointerModel, api, labelPos); - }; - return PolarAxisPointer3; - }(BaseAxisPointer2) - ); - function getLabelPosition2(value, axisModel, axisPointerModel, polar, labelMargin) { - var axis = axisModel.axis; - var coord = axis.dataToCoord(value); - var axisAngle = polar.getAngleAxis().getExtent()[0]; - axisAngle = axisAngle / 180 * Math.PI; - var radiusExtent = polar.getRadiusAxis().getExtent(); - var position3; - var align; - var verticalAlign; - if (axis.dim === "radius") { - var transform2 = create$1(); - rotate2(transform2, transform2, axisAngle); - translate2(transform2, transform2, [polar.cx, polar.cy]); - position3 = applyTransform$1([coord, -labelMargin], transform2); - var labelRotation = axisModel.getModel("axisLabel").get("rotate") || 0; - var labelLayout3 = AxisBuilder2.innerTextLayout(axisAngle, labelRotation * Math.PI / 180, -1); - align = labelLayout3.textAlign; - verticalAlign = labelLayout3.textVerticalAlign; - } else { - var r = radiusExtent[1]; - position3 = polar.coordToPoint([r + labelMargin, coord]); - var cx = polar.cx; - var cy = polar.cy; - align = Math.abs(position3[0] - cx) / r < 0.3 ? "center" : position3[0] > cx ? "left" : "right"; - verticalAlign = Math.abs(position3[1] - cy) / r < 0.3 ? "middle" : position3[1] > cy ? "top" : "bottom"; - } - return { - position: position3, - align, - verticalAlign - }; - } - var pointerShapeBuilder$1 = { - line: function(axis, polar, coordValue, otherExtent) { - return axis.dim === "angle" ? { - type: "Line", - shape: makeLineShape2(polar.coordToPoint([otherExtent[0], coordValue]), polar.coordToPoint([otherExtent[1], coordValue])) - } : { - type: "Circle", - shape: { - cx: polar.cx, - cy: polar.cy, - r: coordValue - } - }; - }, - shadow: function(axis, polar, coordValue, otherExtent) { - var bandWidth = Math.max(1, axis.getBandWidth()); - var radian = Math.PI / 180; - return axis.dim === "angle" ? { - type: "Sector", - shape: makeSectorShape2( - polar.cx, - polar.cy, - otherExtent[0], - otherExtent[1], - // In ECharts y is negative if angle is positive - (-coordValue - bandWidth / 2) * radian, - (-coordValue + bandWidth / 2) * radian - ) - } : { - type: "Sector", - shape: makeSectorShape2(polar.cx, polar.cy, coordValue - bandWidth / 2, coordValue + bandWidth / 2, 0, Math.PI * 2) - }; - } - }; - var PolarModel2 = ( - /** @class */ - function(_super) { - __extends2(PolarModel3, _super); - function PolarModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = PolarModel3.type; - return _this; - } - PolarModel3.prototype.findAxisModel = function(axisType) { - var foundAxisModel; - var ecModel = this.ecModel; - ecModel.eachComponent(axisType, function(axisModel) { - if (axisModel.getCoordSysModel() === this) { - foundAxisModel = axisModel; - } - }, this); - return foundAxisModel; - }; - PolarModel3.type = "polar"; - PolarModel3.dependencies = ["radiusAxis", "angleAxis"]; - PolarModel3.defaultOption = { - // zlevel: 0, - z: 0, - center: ["50%", "50%"], - radius: "80%" - }; - return PolarModel3; - }(ComponentModel2) - ); - var PolarAxisModel2 = ( - /** @class */ - function(_super) { - __extends2(PolarAxisModel3, _super); - function PolarAxisModel3() { - return _super !== null && _super.apply(this, arguments) || this; - } - PolarAxisModel3.prototype.getCoordSysModel = function() { - return this.getReferringComponents("polar", SINGLE_REFERRING2).models[0]; - }; - PolarAxisModel3.type = "polarAxis"; - return PolarAxisModel3; - }(ComponentModel2) - ); - mixin2(PolarAxisModel2, AxisModelCommonMixin2); - var AngleAxisModel2 = ( - /** @class */ - function(_super) { - __extends2(AngleAxisModel3, _super); - function AngleAxisModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = AngleAxisModel3.type; - return _this; - } - AngleAxisModel3.type = "angleAxis"; - return AngleAxisModel3; - }(PolarAxisModel2) - ); - var RadiusAxisModel2 = ( - /** @class */ - function(_super) { - __extends2(RadiusAxisModel3, _super); - function RadiusAxisModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = RadiusAxisModel3.type; - return _this; - } - RadiusAxisModel3.type = "radiusAxis"; - return RadiusAxisModel3; - }(PolarAxisModel2) - ); - var RadiusAxis2 = ( - /** @class */ - function(_super) { - __extends2(RadiusAxis3, _super); - function RadiusAxis3(scale5, radiusExtent) { - return _super.call(this, "radius", scale5, radiusExtent) || this; - } - RadiusAxis3.prototype.pointToData = function(point, clamp4) { - return this.polar.pointToData(point, clamp4)[this.dim === "radius" ? 0 : 1]; - }; - return RadiusAxis3; - }(Axis2) - ); - RadiusAxis2.prototype.dataToRadius = Axis2.prototype.dataToCoord; - RadiusAxis2.prototype.radiusToData = Axis2.prototype.coordToData; - var inner$d = makeInner2(); - var AngleAxis2 = ( - /** @class */ - function(_super) { - __extends2(AngleAxis3, _super); - function AngleAxis3(scale5, angleExtent) { - return _super.call(this, "angle", scale5, angleExtent || [0, 360]) || this; - } - AngleAxis3.prototype.pointToData = function(point, clamp4) { - return this.polar.pointToData(point, clamp4)[this.dim === "radius" ? 0 : 1]; - }; - AngleAxis3.prototype.calculateCategoryInterval = function() { - var axis = this; - var labelModel = axis.getLabelModel(); - var ordinalScale = axis.scale; - var ordinalExtent = ordinalScale.getExtent(); - var tickCount = ordinalScale.count(); - if (ordinalExtent[1] - ordinalExtent[0] < 1) { - return 0; - } - var tickValue = ordinalExtent[0]; - var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue); - var unitH = Math.abs(unitSpan); - var rect = getBoundingRect2(tickValue == null ? "" : tickValue + "", labelModel.getFont(), "center", "top"); - var maxH = Math.max(rect.height, 7); - var dh = maxH / unitH; - isNaN(dh) && (dh = Infinity); - var interval = Math.max(0, Math.floor(dh)); - var cache2 = inner$d(axis.model); - var lastAutoInterval = cache2.lastAutoInterval; - var lastTickCount = cache2.lastTickCount; - if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 && lastAutoInterval > interval) { - interval = lastAutoInterval; - } else { - cache2.lastTickCount = tickCount; - cache2.lastAutoInterval = interval; - } - return interval; - }; - return AngleAxis3; - }(Axis2) - ); - AngleAxis2.prototype.dataToAngle = Axis2.prototype.dataToCoord; - AngleAxis2.prototype.angleToData = Axis2.prototype.coordToData; - var polarDimensions2 = ["radius", "angle"]; - var Polar2 = ( - /** @class */ - function() { - function Polar3(name) { - this.dimensions = polarDimensions2; - this.type = "polar"; - this.cx = 0; - this.cy = 0; - this._radiusAxis = new RadiusAxis2(); - this._angleAxis = new AngleAxis2(); - this.axisPointerEnabled = true; - this.name = name || ""; - this._radiusAxis.polar = this._angleAxis.polar = this; - } - Polar3.prototype.containPoint = function(point) { - var coord = this.pointToCoord(point); - return this._radiusAxis.contain(coord[0]) && this._angleAxis.contain(coord[1]); - }; - Polar3.prototype.containData = function(data) { - return this._radiusAxis.containData(data[0]) && this._angleAxis.containData(data[1]); - }; - Polar3.prototype.getAxis = function(dim) { - var key = "_" + dim + "Axis"; - return this[key]; - }; - Polar3.prototype.getAxes = function() { - return [this._radiusAxis, this._angleAxis]; - }; - Polar3.prototype.getAxesByScale = function(scaleType) { - var axes = []; - var angleAxis = this._angleAxis; - var radiusAxis = this._radiusAxis; - angleAxis.scale.type === scaleType && axes.push(angleAxis); - radiusAxis.scale.type === scaleType && axes.push(radiusAxis); - return axes; - }; - Polar3.prototype.getAngleAxis = function() { - return this._angleAxis; - }; - Polar3.prototype.getRadiusAxis = function() { - return this._radiusAxis; - }; - Polar3.prototype.getOtherAxis = function(axis) { - var angleAxis = this._angleAxis; - return axis === angleAxis ? this._radiusAxis : angleAxis; - }; - Polar3.prototype.getBaseAxis = function() { - return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAngleAxis(); - }; - Polar3.prototype.getTooltipAxes = function(dim) { - var baseAxis = dim != null && dim !== "auto" ? this.getAxis(dim) : this.getBaseAxis(); - return { - baseAxes: [baseAxis], - otherAxes: [this.getOtherAxis(baseAxis)] - }; - }; - Polar3.prototype.dataToPoint = function(data, clamp4) { - return this.coordToPoint([this._radiusAxis.dataToRadius(data[0], clamp4), this._angleAxis.dataToAngle(data[1], clamp4)]); - }; - Polar3.prototype.pointToData = function(point, clamp4) { - var coord = this.pointToCoord(point); - return [this._radiusAxis.radiusToData(coord[0], clamp4), this._angleAxis.angleToData(coord[1], clamp4)]; - }; - Polar3.prototype.pointToCoord = function(point) { - var dx = point[0] - this.cx; - var dy = point[1] - this.cy; - var angleAxis = this.getAngleAxis(); - var extent4 = angleAxis.getExtent(); - var minAngle = Math.min(extent4[0], extent4[1]); - var maxAngle = Math.max(extent4[0], extent4[1]); - angleAxis.inverse ? minAngle = maxAngle - 360 : maxAngle = minAngle + 360; - var radius = Math.sqrt(dx * dx + dy * dy); - dx /= radius; - dy /= radius; - var radian = Math.atan2(-dy, dx) / Math.PI * 180; - var dir4 = radian < minAngle ? 1 : -1; - while (radian < minAngle || radian > maxAngle) { - radian += dir4 * 360; - } - return [radius, radian]; - }; - Polar3.prototype.coordToPoint = function(coord) { - var radius = coord[0]; - var radian = coord[1] / 180 * Math.PI; - var x = Math.cos(radian) * radius + this.cx; - var y = -Math.sin(radian) * radius + this.cy; - return [x, y]; - }; - Polar3.prototype.getArea = function() { - var angleAxis = this.getAngleAxis(); - var radiusAxis = this.getRadiusAxis(); - var radiusExtent = radiusAxis.getExtent().slice(); - radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse(); - var angleExtent = angleAxis.getExtent(); - var RADIAN5 = Math.PI / 180; - var EPSILON7 = 1e-4; - return { - cx: this.cx, - cy: this.cy, - r0: radiusExtent[0], - r: radiusExtent[1], - startAngle: -angleExtent[0] * RADIAN5, - endAngle: -angleExtent[1] * RADIAN5, - clockwise: angleAxis.inverse, - contain: function(x, y) { - var dx = x - this.cx; - var dy = y - this.cy; - var d2 = dx * dx + dy * dy; - var r = this.r; - var r0 = this.r0; - return r !== r0 && d2 - EPSILON7 <= r * r && d2 + EPSILON7 >= r0 * r0; - } - }; - }; - Polar3.prototype.convertToPixel = function(ecModel, finder, value) { - var coordSys = getCoordSys$2(finder); - return coordSys === this ? this.dataToPoint(value) : null; - }; - Polar3.prototype.convertFromPixel = function(ecModel, finder, pixel) { - var coordSys = getCoordSys$2(finder); - return coordSys === this ? this.pointToData(pixel) : null; - }; - return Polar3; - }() - ); - function getCoordSys$2(finder) { - var seriesModel = finder.seriesModel; - var polarModel = finder.polarModel; - return polarModel && polarModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem; - } - function resizePolar2(polar, polarModel, api) { - var center4 = polarModel.get("center"); - var width = api.getWidth(); - var height = api.getHeight(); - polar.cx = parsePercent$1(center4[0], width); - polar.cy = parsePercent$1(center4[1], height); - var radiusAxis = polar.getRadiusAxis(); - var size2 = Math.min(width, height) / 2; - var radius = polarModel.get("radius"); - if (radius == null) { - radius = [0, "100%"]; - } else if (!isArray3(radius)) { - radius = [0, radius]; - } - var parsedRadius = [parsePercent$1(radius[0], size2), parsePercent$1(radius[1], size2)]; - radiusAxis.inverse ? radiusAxis.setExtent(parsedRadius[1], parsedRadius[0]) : radiusAxis.setExtent(parsedRadius[0], parsedRadius[1]); - } - function updatePolarScale2(ecModel, api) { - var polar = this; - var angleAxis = polar.getAngleAxis(); - var radiusAxis = polar.getRadiusAxis(); - angleAxis.scale.setExtent(Infinity, -Infinity); - radiusAxis.scale.setExtent(Infinity, -Infinity); - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.coordinateSystem === polar) { - var data_1 = seriesModel.getData(); - each17(getDataDimensionsOnAxis2(data_1, "radius"), function(dim) { - radiusAxis.scale.unionExtentFromData(data_1, dim); - }); - each17(getDataDimensionsOnAxis2(data_1, "angle"), function(dim) { - angleAxis.scale.unionExtentFromData(data_1, dim); - }); - } - }); - niceScaleExtent2(angleAxis.scale, angleAxis.model); - niceScaleExtent2(radiusAxis.scale, radiusAxis.model); - if (angleAxis.type === "category" && !angleAxis.onBand) { - var extent4 = angleAxis.getExtent(); - var diff = 360 / angleAxis.scale.count(); - angleAxis.inverse ? extent4[1] += diff : extent4[1] -= diff; - angleAxis.setExtent(extent4[0], extent4[1]); - } - } - function isAngleAxisModel2(axisModel) { - return axisModel.mainType === "angleAxis"; - } - function setAxis2(axis, axisModel) { - var _a3; - axis.type = axisModel.get("type"); - axis.scale = createScaleByModel3(axisModel); - axis.onBand = axisModel.get("boundaryGap") && axis.type === "category"; - axis.inverse = axisModel.get("inverse"); - if (isAngleAxisModel2(axisModel)) { - axis.inverse = axis.inverse !== axisModel.get("clockwise"); - var startAngle = axisModel.get("startAngle"); - var endAngle = (_a3 = axisModel.get("endAngle")) !== null && _a3 !== void 0 ? _a3 : startAngle + (axis.inverse ? -360 : 360); - axis.setExtent(startAngle, endAngle); - } - axisModel.axis = axis; - axis.model = axisModel; - } - var polarCreator2 = { - dimensions: polarDimensions2, - create: function(ecModel, api) { - var polarList = []; - ecModel.eachComponent("polar", function(polarModel, idx) { - var polar = new Polar2(idx + ""); - polar.update = updatePolarScale2; - var radiusAxis = polar.getRadiusAxis(); - var angleAxis = polar.getAngleAxis(); - var radiusAxisModel = polarModel.findAxisModel("radiusAxis"); - var angleAxisModel = polarModel.findAxisModel("angleAxis"); - setAxis2(radiusAxis, radiusAxisModel); - setAxis2(angleAxis, angleAxisModel); - resizePolar2(polar, polarModel, api); - polarList.push(polar); - polarModel.coordinateSystem = polar; - polar.model = polarModel; - }); - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.get("coordinateSystem") === "polar") { - var polarModel = seriesModel.getReferringComponents("polar", SINGLE_REFERRING2).models[0]; - if (true) { - if (!polarModel) { - throw new Error('Polar "' + retrieve4(seriesModel.get("polarIndex"), seriesModel.get("polarId"), 0) + '" not found'); - } - } - seriesModel.coordinateSystem = polarModel.coordinateSystem; - } - }); - return polarList; - } - }; - var elementList$1 = ["axisLine", "axisLabel", "axisTick", "minorTick", "splitLine", "minorSplitLine", "splitArea"]; - function getAxisLineShape2(polar, rExtent, angle) { - rExtent[1] > rExtent[0] && (rExtent = rExtent.slice().reverse()); - var start4 = polar.coordToPoint([rExtent[0], angle]); - var end3 = polar.coordToPoint([rExtent[1], angle]); - return { - x1: start4[0], - y1: start4[1], - x2: end3[0], - y2: end3[1] - }; - } - function getRadiusIdx2(polar) { - var radiusAxis = polar.getRadiusAxis(); - return radiusAxis.inverse ? 0 : 1; - } - function fixAngleOverlap2(list) { - var firstItem = list[0]; - var lastItem = list[list.length - 1]; - if (firstItem && lastItem && Math.abs(Math.abs(firstItem.coord - lastItem.coord) - 360) < 1e-4) { - list.pop(); - } - } - var AngleAxisView2 = ( - /** @class */ - function(_super) { - __extends2(AngleAxisView3, _super); - function AngleAxisView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = AngleAxisView3.type; - _this.axisPointerClass = "PolarAxisPointer"; - return _this; - } - AngleAxisView3.prototype.render = function(angleAxisModel, ecModel) { - this.group.removeAll(); - if (!angleAxisModel.get("show")) { - return; - } - var angleAxis = angleAxisModel.axis; - var polar = angleAxis.polar; - var radiusExtent = polar.getRadiusAxis().getExtent(); - var ticksAngles = angleAxis.getTicksCoords(); - var minorTickAngles = angleAxis.getMinorTicksCoords(); - var labels = map3(angleAxis.getViewLabels(), function(labelItem) { - labelItem = clone6(labelItem); - var scale5 = angleAxis.scale; - var tickValue = scale5.type === "ordinal" ? scale5.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue; - labelItem.coord = angleAxis.dataToCoord(tickValue); - return labelItem; - }); - fixAngleOverlap2(labels); - fixAngleOverlap2(ticksAngles); - each17(elementList$1, function(name) { - if (angleAxisModel.get([name, "show"]) && (!angleAxis.scale.isBlank() || name === "axisLine")) { - angelAxisElementsBuilders2[name](this.group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels); - } - }, this); - }; - AngleAxisView3.type = "angleAxis"; - return AngleAxisView3; - }(AxisView2) - ); - var angelAxisElementsBuilders2 = { - axisLine: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { - var lineStyleModel = angleAxisModel.getModel(["axisLine", "lineStyle"]); - var angleAxis = polar.getAngleAxis(); - var RADIAN5 = Math.PI / 180; - var angleExtent = angleAxis.getExtent(); - var rId = getRadiusIdx2(polar); - var r0Id = rId ? 0 : 1; - var shape; - var shapeType = Math.abs(angleExtent[1] - angleExtent[0]) === 360 ? "Circle" : "Arc"; - if (radiusExtent[r0Id] === 0) { - shape = new graphic[shapeType]({ - shape: { - cx: polar.cx, - cy: polar.cy, - r: radiusExtent[rId], - startAngle: -angleExtent[0] * RADIAN5, - endAngle: -angleExtent[1] * RADIAN5, - clockwise: angleAxis.inverse - }, - style: lineStyleModel.getLineStyle(), - z2: 1, - silent: true - }); - } else { - shape = new Ring2({ - shape: { - cx: polar.cx, - cy: polar.cy, - r: radiusExtent[rId], - r0: radiusExtent[r0Id] - }, - style: lineStyleModel.getLineStyle(), - z2: 1, - silent: true - }); - } - shape.style.fill = null; - group.add(shape); - }, - axisTick: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { - var tickModel = angleAxisModel.getModel("axisTick"); - var tickLen = (tickModel.get("inside") ? -1 : 1) * tickModel.get("length"); - var radius = radiusExtent[getRadiusIdx2(polar)]; - var lines = map3(ticksAngles, function(tickAngleItem) { - return new Line3({ - shape: getAxisLineShape2(polar, [radius, radius + tickLen], tickAngleItem.coord) - }); - }); - group.add(mergePath$1(lines, { - style: defaults2(tickModel.getModel("lineStyle").getLineStyle(), { - stroke: angleAxisModel.get(["axisLine", "lineStyle", "color"]) - }) - })); - }, - minorTick: function(group, angleAxisModel, polar, tickAngles, minorTickAngles, radiusExtent) { - if (!minorTickAngles.length) { - return; - } - var tickModel = angleAxisModel.getModel("axisTick"); - var minorTickModel = angleAxisModel.getModel("minorTick"); - var tickLen = (tickModel.get("inside") ? -1 : 1) * minorTickModel.get("length"); - var radius = radiusExtent[getRadiusIdx2(polar)]; - var lines = []; - for (var i2 = 0; i2 < minorTickAngles.length; i2++) { - for (var k2 = 0; k2 < minorTickAngles[i2].length; k2++) { - lines.push(new Line3({ - shape: getAxisLineShape2(polar, [radius, radius + tickLen], minorTickAngles[i2][k2].coord) - })); - } - } - group.add(mergePath$1(lines, { - style: defaults2(minorTickModel.getModel("lineStyle").getLineStyle(), defaults2(tickModel.getLineStyle(), { - stroke: angleAxisModel.get(["axisLine", "lineStyle", "color"]) - })) - })); - }, - axisLabel: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels) { - var rawCategoryData = angleAxisModel.getCategories(true); - var commonLabelModel = angleAxisModel.getModel("axisLabel"); - var labelMargin = commonLabelModel.get("margin"); - var triggerEvent = angleAxisModel.get("triggerEvent"); - each17(labels, function(labelItem, idx) { - var labelModel = commonLabelModel; - var tickValue = labelItem.tickValue; - var r = radiusExtent[getRadiusIdx2(polar)]; - var p = polar.coordToPoint([r + labelMargin, labelItem.coord]); - var cx = polar.cx; - var cy = polar.cy; - var labelTextAlign = Math.abs(p[0] - cx) / r < 0.3 ? "center" : p[0] > cx ? "left" : "right"; - var labelTextVerticalAlign = Math.abs(p[1] - cy) / r < 0.3 ? "middle" : p[1] > cy ? "top" : "bottom"; - if (rawCategoryData && rawCategoryData[tickValue]) { - var rawCategoryItem = rawCategoryData[tickValue]; - if (isObject5(rawCategoryItem) && rawCategoryItem.textStyle) { - labelModel = new Model2(rawCategoryItem.textStyle, commonLabelModel, commonLabelModel.ecModel); - } - } - var textEl = new ZRText2({ - silent: AxisBuilder2.isLabelSilent(angleAxisModel), - style: createTextStyle3(labelModel, { - x: p[0], - y: p[1], - fill: labelModel.getTextColor() || angleAxisModel.get(["axisLine", "lineStyle", "color"]), - text: labelItem.formattedLabel, - align: labelTextAlign, - verticalAlign: labelTextVerticalAlign - }) - }); - group.add(textEl); - if (triggerEvent) { - var eventData = AxisBuilder2.makeAxisEventDataBase(angleAxisModel); - eventData.targetType = "axisLabel"; - eventData.value = labelItem.rawLabel; - getECData2(textEl).eventData = eventData; - } - }, this); - }, - splitLine: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { - var splitLineModel = angleAxisModel.getModel("splitLine"); - var lineStyleModel = splitLineModel.getModel("lineStyle"); - var lineColors = lineStyleModel.get("color"); - var lineCount = 0; - lineColors = lineColors instanceof Array ? lineColors : [lineColors]; - var splitLines = []; - for (var i2 = 0; i2 < ticksAngles.length; i2++) { - var colorIndex = lineCount++ % lineColors.length; - splitLines[colorIndex] = splitLines[colorIndex] || []; - splitLines[colorIndex].push(new Line3({ - shape: getAxisLineShape2(polar, radiusExtent, ticksAngles[i2].coord) - })); - } - for (var i2 = 0; i2 < splitLines.length; i2++) { - group.add(mergePath$1(splitLines[i2], { - style: defaults2({ - stroke: lineColors[i2 % lineColors.length] - }, lineStyleModel.getLineStyle()), - silent: true, - z: angleAxisModel.get("z") - })); - } - }, - minorSplitLine: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { - if (!minorTickAngles.length) { - return; - } - var minorSplitLineModel = angleAxisModel.getModel("minorSplitLine"); - var lineStyleModel = minorSplitLineModel.getModel("lineStyle"); - var lines = []; - for (var i2 = 0; i2 < minorTickAngles.length; i2++) { - for (var k2 = 0; k2 < minorTickAngles[i2].length; k2++) { - lines.push(new Line3({ - shape: getAxisLineShape2(polar, radiusExtent, minorTickAngles[i2][k2].coord) - })); - } - } - group.add(mergePath$1(lines, { - style: lineStyleModel.getLineStyle(), - silent: true, - z: angleAxisModel.get("z") - })); - }, - splitArea: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { - if (!ticksAngles.length) { - return; - } - var splitAreaModel = angleAxisModel.getModel("splitArea"); - var areaStyleModel = splitAreaModel.getModel("areaStyle"); - var areaColors = areaStyleModel.get("color"); - var lineCount = 0; - areaColors = areaColors instanceof Array ? areaColors : [areaColors]; - var splitAreas = []; - var RADIAN5 = Math.PI / 180; - var prevAngle = -ticksAngles[0].coord * RADIAN5; - var r0 = Math.min(radiusExtent[0], radiusExtent[1]); - var r1 = Math.max(radiusExtent[0], radiusExtent[1]); - var clockwise = angleAxisModel.get("clockwise"); - for (var i2 = 1, len3 = ticksAngles.length; i2 <= len3; i2++) { - var coord = i2 === len3 ? ticksAngles[0].coord : ticksAngles[i2].coord; - var colorIndex = lineCount++ % areaColors.length; - splitAreas[colorIndex] = splitAreas[colorIndex] || []; - splitAreas[colorIndex].push(new Sector2({ - shape: { - cx: polar.cx, - cy: polar.cy, - r0, - r: r1, - startAngle: prevAngle, - endAngle: -coord * RADIAN5, - clockwise - }, - silent: true - })); - prevAngle = -coord * RADIAN5; - } - for (var i2 = 0; i2 < splitAreas.length; i2++) { - group.add(mergePath$1(splitAreas[i2], { - style: defaults2({ - fill: areaColors[i2 % areaColors.length] - }, areaStyleModel.getAreaStyle()), - silent: true - })); - } - } - }; - var axisBuilderAttrs$2 = ["axisLine", "axisTickLabel", "axisName"]; - var selfBuilderAttrs$1 = ["splitLine", "splitArea", "minorSplitLine"]; - var RadiusAxisView2 = ( - /** @class */ - function(_super) { - __extends2(RadiusAxisView3, _super); - function RadiusAxisView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = RadiusAxisView3.type; - _this.axisPointerClass = "PolarAxisPointer"; - return _this; - } - RadiusAxisView3.prototype.render = function(radiusAxisModel, ecModel) { - this.group.removeAll(); - if (!radiusAxisModel.get("show")) { - return; - } - var oldAxisGroup = this._axisGroup; - var newAxisGroup = this._axisGroup = new Group5(); - this.group.add(newAxisGroup); - var radiusAxis = radiusAxisModel.axis; - var polar = radiusAxis.polar; - var angleAxis = polar.getAngleAxis(); - var ticksCoords = radiusAxis.getTicksCoords(); - var minorTicksCoords = radiusAxis.getMinorTicksCoords(); - var axisAngle = angleAxis.getExtent()[0]; - var radiusExtent = radiusAxis.getExtent(); - var layout6 = layoutAxis2(polar, radiusAxisModel, axisAngle); - var axisBuilder = new AxisBuilder2(radiusAxisModel, layout6); - each17(axisBuilderAttrs$2, axisBuilder.add, axisBuilder); - newAxisGroup.add(axisBuilder.getGroup()); - groupTransition2(oldAxisGroup, newAxisGroup, radiusAxisModel); - each17(selfBuilderAttrs$1, function(name) { - if (radiusAxisModel.get([name, "show"]) && !radiusAxis.scale.isBlank()) { - axisElementBuilders$1[name](this.group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords); - } - }, this); - }; - RadiusAxisView3.type = "radiusAxis"; - return RadiusAxisView3; - }(AxisView2) - ); - var axisElementBuilders$1 = { - splitLine: function(group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) { - var splitLineModel = radiusAxisModel.getModel("splitLine"); - var lineStyleModel = splitLineModel.getModel("lineStyle"); - var lineColors = lineStyleModel.get("color"); - var lineCount = 0; - var angleAxis = polar.getAngleAxis(); - var RADIAN5 = Math.PI / 180; - var angleExtent = angleAxis.getExtent(); - var shapeType = Math.abs(angleExtent[1] - angleExtent[0]) === 360 ? "Circle" : "Arc"; - lineColors = lineColors instanceof Array ? lineColors : [lineColors]; - var splitLines = []; - for (var i2 = 0; i2 < ticksCoords.length; i2++) { - var colorIndex = lineCount++ % lineColors.length; - splitLines[colorIndex] = splitLines[colorIndex] || []; - splitLines[colorIndex].push(new graphic[shapeType]({ - shape: { - cx: polar.cx, - cy: polar.cy, - // ensure circle radius >= 0 - r: Math.max(ticksCoords[i2].coord, 0), - startAngle: -angleExtent[0] * RADIAN5, - endAngle: -angleExtent[1] * RADIAN5, - clockwise: angleAxis.inverse - } - })); - } - for (var i2 = 0; i2 < splitLines.length; i2++) { - group.add(mergePath$1(splitLines[i2], { - style: defaults2({ - stroke: lineColors[i2 % lineColors.length], - fill: null - }, lineStyleModel.getLineStyle()), - silent: true - })); - } - }, - minorSplitLine: function(group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords) { - if (!minorTicksCoords.length) { - return; - } - var minorSplitLineModel = radiusAxisModel.getModel("minorSplitLine"); - var lineStyleModel = minorSplitLineModel.getModel("lineStyle"); - var lines = []; - for (var i2 = 0; i2 < minorTicksCoords.length; i2++) { - for (var k2 = 0; k2 < minorTicksCoords[i2].length; k2++) { - lines.push(new Circle2({ - shape: { - cx: polar.cx, - cy: polar.cy, - r: minorTicksCoords[i2][k2].coord - } - })); - } - } - group.add(mergePath$1(lines, { - style: defaults2({ - fill: null - }, lineStyleModel.getLineStyle()), - silent: true - })); - }, - splitArea: function(group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) { - if (!ticksCoords.length) { - return; - } - var splitAreaModel = radiusAxisModel.getModel("splitArea"); - var areaStyleModel = splitAreaModel.getModel("areaStyle"); - var areaColors = areaStyleModel.get("color"); - var lineCount = 0; - areaColors = areaColors instanceof Array ? areaColors : [areaColors]; - var splitAreas = []; - var prevRadius = ticksCoords[0].coord; - for (var i2 = 1; i2 < ticksCoords.length; i2++) { - var colorIndex = lineCount++ % areaColors.length; - splitAreas[colorIndex] = splitAreas[colorIndex] || []; - splitAreas[colorIndex].push(new Sector2({ - shape: { - cx: polar.cx, - cy: polar.cy, - r0: prevRadius, - r: ticksCoords[i2].coord, - startAngle: 0, - endAngle: Math.PI * 2 - }, - silent: true - })); - prevRadius = ticksCoords[i2].coord; - } - for (var i2 = 0; i2 < splitAreas.length; i2++) { - group.add(mergePath$1(splitAreas[i2], { - style: defaults2({ - fill: areaColors[i2 % areaColors.length] - }, areaStyleModel.getAreaStyle()), - silent: true - })); - } - } - }; - function layoutAxis2(polar, radiusAxisModel, axisAngle) { - return { - position: [polar.cx, polar.cy], - rotation: axisAngle / 180 * Math.PI, - labelDirection: -1, - tickDirection: -1, - nameDirection: 1, - labelRotate: radiusAxisModel.getModel("axisLabel").get("rotate"), - // Over splitLine and splitArea - z2: 1 - }; - } - function getSeriesStackId$1(seriesModel) { - return seriesModel.get("stack") || "__ec_stack_" + seriesModel.seriesIndex; - } - function getAxisKey$1(polar, axis) { - return axis.dim + polar.model.componentIndex; - } - function barLayoutPolar2(seriesType3, ecModel, api) { - var lastStackCoords = {}; - var barWidthAndOffset = calRadialBar2(filter2(ecModel.getSeriesByType(seriesType3), function(seriesModel) { - return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === "polar"; - })); - ecModel.eachSeriesByType(seriesType3, function(seriesModel) { - if (seriesModel.coordinateSystem.type !== "polar") { - return; - } - var data = seriesModel.getData(); - var polar = seriesModel.coordinateSystem; - var baseAxis = polar.getBaseAxis(); - var axisKey = getAxisKey$1(polar, baseAxis); - var stackId = getSeriesStackId$1(seriesModel); - var columnLayoutInfo = barWidthAndOffset[axisKey][stackId]; - var columnOffset = columnLayoutInfo.offset; - var columnWidth = columnLayoutInfo.width; - var valueAxis3 = polar.getOtherAxis(baseAxis); - var cx = seriesModel.coordinateSystem.cx; - var cy = seriesModel.coordinateSystem.cy; - var barMinHeight = seriesModel.get("barMinHeight") || 0; - var barMinAngle = seriesModel.get("barMinAngle") || 0; - lastStackCoords[stackId] = lastStackCoords[stackId] || []; - var valueDim = data.mapDimension(valueAxis3.dim); - var baseDim = data.mapDimension(baseAxis.dim); - var stacked = isDimensionStacked2( - data, - valueDim - /* , baseDim */ - ); - var clampLayout = baseAxis.dim !== "radius" || !seriesModel.get("roundCap", true); - var valueAxisModel = valueAxis3.model; - var startValue = valueAxisModel.get("startValue"); - var valueAxisStart = valueAxis3.dataToCoord(startValue || 0); - for (var idx = 0, len3 = data.count(); idx < len3; idx++) { - var value = data.get(valueDim, idx); - var baseValue = data.get(baseDim, idx); - var sign = value >= 0 ? "p" : "n"; - var baseCoord = valueAxisStart; - if (stacked) { - if (!lastStackCoords[stackId][baseValue]) { - lastStackCoords[stackId][baseValue] = { - p: valueAxisStart, - n: valueAxisStart - // Negative stack - }; - } - baseCoord = lastStackCoords[stackId][baseValue][sign]; - } - var r0 = void 0; - var r = void 0; - var startAngle = void 0; - var endAngle = void 0; - if (valueAxis3.dim === "radius") { - var radiusSpan = valueAxis3.dataToCoord(value) - valueAxisStart; - var angle = baseAxis.dataToCoord(baseValue); - if (Math.abs(radiusSpan) < barMinHeight) { - radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight; - } - r0 = baseCoord; - r = baseCoord + radiusSpan; - startAngle = angle - columnOffset; - endAngle = startAngle - columnWidth; - stacked && (lastStackCoords[stackId][baseValue][sign] = r); - } else { - var angleSpan = valueAxis3.dataToCoord(value, clampLayout) - valueAxisStart; - var radius = baseAxis.dataToCoord(baseValue); - if (Math.abs(angleSpan) < barMinAngle) { - angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle; - } - r0 = radius + columnOffset; - r = r0 + columnWidth; - startAngle = baseCoord; - endAngle = baseCoord + angleSpan; - stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle); - } - data.setItemLayout(idx, { - cx, - cy, - r0, - r, - // Consider that positive angle is anti-clockwise, - // while positive radian of sector is clockwise - startAngle: -startAngle * Math.PI / 180, - endAngle: -endAngle * Math.PI / 180, - /** - * Keep the same logic with bar in catesion: use end value to - * control direction. Notice that if clockwise is true (by - * default), the sector will always draw clockwisely, no matter - * whether endAngle is greater or less than startAngle. - */ - clockwise: startAngle >= endAngle - }); - } - }); - } - function calRadialBar2(barSeries) { - var columnsMap = {}; - each17(barSeries, function(seriesModel, idx) { - var data = seriesModel.getData(); - var polar = seriesModel.coordinateSystem; - var baseAxis = polar.getBaseAxis(); - var axisKey = getAxisKey$1(polar, baseAxis); - var axisExtent = baseAxis.getExtent(); - var bandWidth = baseAxis.type === "category" ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count(); - var columnsOnAxis = columnsMap[axisKey] || { - bandWidth, - remainedWidth: bandWidth, - autoWidthCount: 0, - categoryGap: "20%", - gap: "30%", - stacks: {} - }; - var stacks = columnsOnAxis.stacks; - columnsMap[axisKey] = columnsOnAxis; - var stackId = getSeriesStackId$1(seriesModel); - if (!stacks[stackId]) { - columnsOnAxis.autoWidthCount++; - } - stacks[stackId] = stacks[stackId] || { - width: 0, - maxWidth: 0 - }; - var barWidth = parsePercent$1(seriesModel.get("barWidth"), bandWidth); - var barMaxWidth = parsePercent$1(seriesModel.get("barMaxWidth"), bandWidth); - var barGap = seriesModel.get("barGap"); - var barCategoryGap = seriesModel.get("barCategoryGap"); - if (barWidth && !stacks[stackId].width) { - barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth); - stacks[stackId].width = barWidth; - columnsOnAxis.remainedWidth -= barWidth; - } - barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth); - barGap != null && (columnsOnAxis.gap = barGap); - barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap); - }); - var result = {}; - each17(columnsMap, function(columnsOnAxis, coordSysName) { - result[coordSysName] = {}; - var stacks = columnsOnAxis.stacks; - var bandWidth = columnsOnAxis.bandWidth; - var categoryGap = parsePercent$1(columnsOnAxis.categoryGap, bandWidth); - var barGapPercent = parsePercent$1(columnsOnAxis.gap, 1); - var remainedWidth = columnsOnAxis.remainedWidth; - var autoWidthCount = columnsOnAxis.autoWidthCount; - var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); - autoWidth = Math.max(autoWidth, 0); - each17(stacks, function(column, stack) { - var maxWidth = column.maxWidth; - if (maxWidth && maxWidth < autoWidth) { - maxWidth = Math.min(maxWidth, remainedWidth); - if (column.width) { - maxWidth = Math.min(maxWidth, column.width); - } - remainedWidth -= maxWidth; - column.width = maxWidth; - autoWidthCount--; - } - }); - autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); - autoWidth = Math.max(autoWidth, 0); - var widthSum = 0; - var lastColumn; - each17(stacks, function(column, idx) { - if (!column.width) { - column.width = autoWidth; - } - lastColumn = column; - widthSum += column.width * (1 + barGapPercent); - }); - if (lastColumn) { - widthSum -= lastColumn.width * barGapPercent; - } - var offset3 = -widthSum / 2; - each17(stacks, function(column, stackId) { - result[coordSysName][stackId] = result[coordSysName][stackId] || { - offset: offset3, - width: column.width - }; - offset3 += column.width * (1 + barGapPercent); - }); - }); - return result; - } - var angleAxisExtraOption2 = { - startAngle: 90, - clockwise: true, - splitNumber: 12, - axisLabel: { - rotate: 0 - } - }; - var radiusAxisExtraOption2 = { - splitNumber: 5 - }; - var PolarView2 = ( - /** @class */ - function(_super) { - __extends2(PolarView3, _super); - function PolarView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = PolarView3.type; - return _this; - } - PolarView3.type = "polar"; - return PolarView3; - }(ComponentView2) - ); - function install$u(registers) { - use2(install$s); - AxisView2.registerAxisPointerClass("PolarAxisPointer", PolarAxisPointer2); - registers.registerCoordinateSystem("polar", polarCreator2); - registers.registerComponentModel(PolarModel2); - registers.registerComponentView(PolarView2); - axisModelCreator2(registers, "angle", AngleAxisModel2, angleAxisExtraOption2); - axisModelCreator2(registers, "radius", RadiusAxisModel2, radiusAxisExtraOption2); - registers.registerComponentView(AngleAxisView2); - registers.registerComponentView(RadiusAxisView2); - registers.registerLayout(curry3(barLayoutPolar2, "bar")); - } - function layout$2(axisModel, opt) { - opt = opt || {}; - var single = axisModel.coordinateSystem; - var axis = axisModel.axis; - var layout6 = {}; - var axisPosition = axis.position; - var orient = axis.orient; - var rect = single.getRect(); - var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height]; - var positionMap = { - horizontal: { - top: rectBound[2], - bottom: rectBound[3] - }, - vertical: { - left: rectBound[0], - right: rectBound[1] - } - }; - layout6.position = [orient === "vertical" ? positionMap.vertical[axisPosition] : rectBound[0], orient === "horizontal" ? positionMap.horizontal[axisPosition] : rectBound[3]]; - var r = { - horizontal: 0, - vertical: 1 - }; - layout6.rotation = Math.PI / 2 * r[orient]; - var directionMap = { - top: -1, - bottom: 1, - right: 1, - left: -1 - }; - layout6.labelDirection = layout6.tickDirection = layout6.nameDirection = directionMap[axisPosition]; - if (axisModel.get(["axisTick", "inside"])) { - layout6.tickDirection = -layout6.tickDirection; - } - if (retrieve4(opt.labelInside, axisModel.get(["axisLabel", "inside"]))) { - layout6.labelDirection = -layout6.labelDirection; - } - var labelRotation = opt.rotate; - labelRotation == null && (labelRotation = axisModel.get(["axisLabel", "rotate"])); - layout6.labelRotation = axisPosition === "top" ? -labelRotation : labelRotation; - layout6.z2 = 1; - return layout6; - } - var axisBuilderAttrs$3 = ["axisLine", "axisTickLabel", "axisName"]; - var selfBuilderAttrs$2 = ["splitArea", "splitLine"]; - var SingleAxisView2 = ( - /** @class */ - function(_super) { - __extends2(SingleAxisView3, _super); - function SingleAxisView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SingleAxisView3.type; - _this.axisPointerClass = "SingleAxisPointer"; - return _this; - } - SingleAxisView3.prototype.render = function(axisModel, ecModel, api, payload) { - var group = this.group; - group.removeAll(); - var oldAxisGroup = this._axisGroup; - this._axisGroup = new Group5(); - var layout6 = layout$2(axisModel); - var axisBuilder = new AxisBuilder2(axisModel, layout6); - each17(axisBuilderAttrs$3, axisBuilder.add, axisBuilder); - group.add(this._axisGroup); - group.add(axisBuilder.getGroup()); - each17(selfBuilderAttrs$2, function(name) { - if (axisModel.get([name, "show"])) { - axisElementBuilders$2[name](this, this.group, this._axisGroup, axisModel); - } - }, this); - groupTransition2(oldAxisGroup, this._axisGroup, axisModel); - _super.prototype.render.call(this, axisModel, ecModel, api, payload); - }; - SingleAxisView3.prototype.remove = function() { - rectCoordAxisHandleRemove2(this); - }; - SingleAxisView3.type = "singleAxis"; - return SingleAxisView3; - }(AxisView2) - ); - var axisElementBuilders$2 = { - splitLine: function(axisView, group, axisGroup, axisModel) { - var axis = axisModel.axis; - if (axis.scale.isBlank()) { - return; - } - var splitLineModel = axisModel.getModel("splitLine"); - var lineStyleModel = splitLineModel.getModel("lineStyle"); - var lineColors = lineStyleModel.get("color"); - lineColors = lineColors instanceof Array ? lineColors : [lineColors]; - var lineWidth = lineStyleModel.get("width"); - var gridRect = axisModel.coordinateSystem.getRect(); - var isHorizontal = axis.isHorizontal(); - var splitLines = []; - var lineCount = 0; - var ticksCoords = axis.getTicksCoords({ - tickModel: splitLineModel - }); - var p1 = []; - var p2 = []; - for (var i2 = 0; i2 < ticksCoords.length; ++i2) { - var tickCoord = axis.toGlobalCoord(ticksCoords[i2].coord); - if (isHorizontal) { - p1[0] = tickCoord; - p1[1] = gridRect.y; - p2[0] = tickCoord; - p2[1] = gridRect.y + gridRect.height; - } else { - p1[0] = gridRect.x; - p1[1] = tickCoord; - p2[0] = gridRect.x + gridRect.width; - p2[1] = tickCoord; - } - var line = new Line3({ - shape: { - x1: p1[0], - y1: p1[1], - x2: p2[0], - y2: p2[1] - }, - silent: true - }); - subPixelOptimizeLine$1(line.shape, lineWidth); - var colorIndex = lineCount++ % lineColors.length; - splitLines[colorIndex] = splitLines[colorIndex] || []; - splitLines[colorIndex].push(line); - } - var lineStyle = lineStyleModel.getLineStyle(["color"]); - for (var i2 = 0; i2 < splitLines.length; ++i2) { - group.add(mergePath$1(splitLines[i2], { - style: defaults2({ - stroke: lineColors[i2 % lineColors.length] - }, lineStyle), - silent: true - })); - } - }, - splitArea: function(axisView, group, axisGroup, axisModel) { - rectCoordAxisBuildSplitArea2(axisView, axisGroup, axisModel, axisModel); - } - }; - var SingleAxisModel2 = ( - /** @class */ - function(_super) { - __extends2(SingleAxisModel3, _super); - function SingleAxisModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SingleAxisModel3.type; - return _this; - } - SingleAxisModel3.prototype.getCoordSysModel = function() { - return this; - }; - SingleAxisModel3.type = "singleAxis"; - SingleAxisModel3.layoutMode = "box"; - SingleAxisModel3.defaultOption = { - left: "5%", - top: "5%", - right: "5%", - bottom: "5%", - type: "value", - position: "bottom", - orient: "horizontal", - axisLine: { - show: true, - lineStyle: { - width: 1, - type: "solid" - } - }, - // Single coordinate system and single axis is the, - // which is used as the parent tooltip model. - // same model, so we set default tooltip show as true. - tooltip: { - show: true - }, - axisTick: { - show: true, - length: 6, - lineStyle: { - width: 1 - } - }, - axisLabel: { - show: true, - interval: "auto" - }, - splitLine: { - show: true, - lineStyle: { - type: "dashed", - opacity: 0.2 - } - } - }; - return SingleAxisModel3; - }(ComponentModel2) - ); - mixin2(SingleAxisModel2, AxisModelCommonMixin2.prototype); - var SingleAxis2 = ( - /** @class */ - function(_super) { - __extends2(SingleAxis3, _super); - function SingleAxis3(dim, scale5, coordExtent, axisType, position3) { - var _this = _super.call(this, dim, scale5, coordExtent) || this; - _this.type = axisType || "value"; - _this.position = position3 || "bottom"; - return _this; - } - SingleAxis3.prototype.isHorizontal = function() { - var position3 = this.position; - return position3 === "top" || position3 === "bottom"; - }; - SingleAxis3.prototype.pointToData = function(point, clamp4) { - return this.coordinateSystem.pointToData(point)[0]; - }; - return SingleAxis3; - }(Axis2) - ); - var singleDimensions2 = ["single"]; - var Single2 = ( - /** @class */ - function() { - function Single3(axisModel, ecModel, api) { - this.type = "single"; - this.dimension = "single"; - this.dimensions = singleDimensions2; - this.axisPointerEnabled = true; - this.model = axisModel; - this._init(axisModel, ecModel, api); - } - Single3.prototype._init = function(axisModel, ecModel, api) { - var dim = this.dimension; - var axis = new SingleAxis2(dim, createScaleByModel3(axisModel), [0, 0], axisModel.get("type"), axisModel.get("position")); - var isCategory3 = axis.type === "category"; - axis.onBand = isCategory3 && axisModel.get("boundaryGap"); - axis.inverse = axisModel.get("inverse"); - axis.orient = axisModel.get("orient"); - axisModel.axis = axis; - axis.model = axisModel; - axis.coordinateSystem = this; - this._axis = axis; - }; - Single3.prototype.update = function(ecModel, api) { - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.coordinateSystem === this) { - var data_1 = seriesModel.getData(); - each17(data_1.mapDimensionsAll(this.dimension), function(dim) { - this._axis.scale.unionExtentFromData(data_1, dim); - }, this); - niceScaleExtent2(this._axis.scale, this._axis.model); - } - }, this); - }; - Single3.prototype.resize = function(axisModel, api) { - this._rect = getLayoutRect2({ - left: axisModel.get("left"), - top: axisModel.get("top"), - right: axisModel.get("right"), - bottom: axisModel.get("bottom"), - width: axisModel.get("width"), - height: axisModel.get("height") - }, { - width: api.getWidth(), - height: api.getHeight() - }); - this._adjustAxis(); - }; - Single3.prototype.getRect = function() { - return this._rect; - }; - Single3.prototype._adjustAxis = function() { - var rect = this._rect; - var axis = this._axis; - var isHorizontal = axis.isHorizontal(); - var extent4 = isHorizontal ? [0, rect.width] : [0, rect.height]; - var idx = axis.inverse ? 1 : 0; - axis.setExtent(extent4[idx], extent4[1 - idx]); - this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y); - }; - Single3.prototype._updateAxisTransform = function(axis, coordBase) { - var axisExtent = axis.getExtent(); - var extentSum = axisExtent[0] + axisExtent[1]; - var isHorizontal = axis.isHorizontal(); - axis.toGlobalCoord = isHorizontal ? function(coord) { - return coord + coordBase; - } : function(coord) { - return extentSum - coord + coordBase; - }; - axis.toLocalCoord = isHorizontal ? function(coord) { - return coord - coordBase; - } : function(coord) { - return extentSum - coord + coordBase; - }; - }; - Single3.prototype.getAxis = function() { - return this._axis; - }; - Single3.prototype.getBaseAxis = function() { - return this._axis; - }; - Single3.prototype.getAxes = function() { - return [this._axis]; - }; - Single3.prototype.getTooltipAxes = function() { - return { - baseAxes: [this.getAxis()], - // Empty otherAxes - otherAxes: [] - }; - }; - Single3.prototype.containPoint = function(point) { - var rect = this.getRect(); - var axis = this.getAxis(); - var orient = axis.orient; - if (orient === "horizontal") { - return axis.contain(axis.toLocalCoord(point[0])) && point[1] >= rect.y && point[1] <= rect.y + rect.height; - } else { - return axis.contain(axis.toLocalCoord(point[1])) && point[0] >= rect.y && point[0] <= rect.y + rect.height; - } - }; - Single3.prototype.pointToData = function(point) { - var axis = this.getAxis(); - return [axis.coordToData(axis.toLocalCoord(point[axis.orient === "horizontal" ? 0 : 1]))]; - }; - Single3.prototype.dataToPoint = function(val) { - var axis = this.getAxis(); - var rect = this.getRect(); - var pt = []; - var idx = axis.orient === "horizontal" ? 0 : 1; - if (val instanceof Array) { - val = val[0]; - } - pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val)); - pt[1 - idx] = idx === 0 ? rect.y + rect.height / 2 : rect.x + rect.width / 2; - return pt; - }; - Single3.prototype.convertToPixel = function(ecModel, finder, value) { - var coordSys = getCoordSys$3(finder); - return coordSys === this ? this.dataToPoint(value) : null; - }; - Single3.prototype.convertFromPixel = function(ecModel, finder, pixel) { - var coordSys = getCoordSys$3(finder); - return coordSys === this ? this.pointToData(pixel) : null; - }; - return Single3; - }() - ); - function getCoordSys$3(finder) { - var seriesModel = finder.seriesModel; - var singleModel = finder.singleAxisModel; - return singleModel && singleModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem; - } - function create$2(ecModel, api) { - var singles = []; - ecModel.eachComponent("singleAxis", function(axisModel, idx) { - var single = new Single2(axisModel, ecModel, api); - single.name = "single_" + idx; - single.resize(axisModel, api); - axisModel.coordinateSystem = single; - singles.push(single); - }); - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.get("coordinateSystem") === "singleAxis") { - var singleAxisModel = seriesModel.getReferringComponents("singleAxis", SINGLE_REFERRING2).models[0]; - seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem; - } - }); - return singles; - } - var singleCreator2 = { - create: create$2, - dimensions: singleDimensions2 - }; - var XY3 = ["x", "y"]; - var WH3 = ["width", "height"]; - var SingleAxisPointer2 = ( - /** @class */ - function(_super) { - __extends2(SingleAxisPointer3, _super); - function SingleAxisPointer3() { - return _super !== null && _super.apply(this, arguments) || this; - } - SingleAxisPointer3.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) { - var axis = axisModel.axis; - var coordSys = axis.coordinateSystem; - var otherExtent = getGlobalExtent2(coordSys, 1 - getPointDimIndex2(axis)); - var pixelValue = coordSys.dataToPoint(value)[0]; - var axisPointerType = axisPointerModel.get("type"); - if (axisPointerType && axisPointerType !== "none") { - var elStyle = buildElStyle2(axisPointerModel); - var pointerOption = pointerShapeBuilder$2[axisPointerType](axis, pixelValue, otherExtent); - pointerOption.style = elStyle; - elOption.graphicKey = pointerOption.type; - elOption.pointer = pointerOption; - } - var layoutInfo = layout$2(axisModel); - buildCartesianSingleLabelElOption2( - // @ts-ignore - value, - elOption, - layoutInfo, - axisModel, - axisPointerModel, - api - ); - }; - SingleAxisPointer3.prototype.getHandleTransform = function(value, axisModel, axisPointerModel) { - var layoutInfo = layout$2(axisModel, { - labelInside: false - }); - layoutInfo.labelMargin = axisPointerModel.get(["handle", "margin"]); - var position3 = getTransformedPosition2(axisModel.axis, value, layoutInfo); - return { - x: position3[0], - y: position3[1], - rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0) - }; - }; - SingleAxisPointer3.prototype.updateHandleTransform = function(transform2, delta, axisModel, axisPointerModel) { - var axis = axisModel.axis; - var coordSys = axis.coordinateSystem; - var dimIndex = getPointDimIndex2(axis); - var axisExtent = getGlobalExtent2(coordSys, dimIndex); - var currPosition = [transform2.x, transform2.y]; - currPosition[dimIndex] += delta[dimIndex]; - currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]); - currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]); - var otherExtent = getGlobalExtent2(coordSys, 1 - dimIndex); - var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2; - var cursorPoint = [cursorOtherValue, cursorOtherValue]; - cursorPoint[dimIndex] = currPosition[dimIndex]; - return { - x: currPosition[0], - y: currPosition[1], - rotation: transform2.rotation, - cursorPoint, - tooltipOption: { - verticalAlign: "middle" - } - }; - }; - return SingleAxisPointer3; - }(BaseAxisPointer2) - ); - var pointerShapeBuilder$2 = { - line: function(axis, pixelValue, otherExtent) { - var targetShape = makeLineShape2([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex2(axis)); - return { - type: "Line", - subPixelOptimize: true, - shape: targetShape - }; - }, - shadow: function(axis, pixelValue, otherExtent) { - var bandWidth = axis.getBandWidth(); - var span = otherExtent[1] - otherExtent[0]; - return { - type: "Rect", - shape: makeRectShape2([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getPointDimIndex2(axis)) - }; - } - }; - function getPointDimIndex2(axis) { - return axis.isHorizontal() ? 0 : 1; - } - function getGlobalExtent2(coordSys, dimIndex) { - var rect = coordSys.getRect(); - return [rect[XY3[dimIndex]], rect[XY3[dimIndex]] + rect[WH3[dimIndex]]]; - } - var SingleView2 = ( - /** @class */ - function(_super) { - __extends2(SingleView3, _super); - function SingleView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SingleView3.type; - return _this; - } - SingleView3.type = "single"; - return SingleView3; - }(ComponentView2) - ); - function install$v(registers) { - use2(install$s); - AxisView2.registerAxisPointerClass("SingleAxisPointer", SingleAxisPointer2); - registers.registerComponentView(SingleView2); - registers.registerComponentView(SingleAxisView2); - registers.registerComponentModel(SingleAxisModel2); - axisModelCreator2(registers, "single", SingleAxisModel2, SingleAxisModel2.defaultOption); - registers.registerCoordinateSystem("single", singleCreator2); - } - var CalendarModel2 = ( - /** @class */ - function(_super) { - __extends2(CalendarModel3, _super); - function CalendarModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CalendarModel3.type; - return _this; - } - CalendarModel3.prototype.init = function(option, parentModel, ecModel) { - var inputPositionParams = getLayoutParams2(option); - _super.prototype.init.apply(this, arguments); - mergeAndNormalizeLayoutParams3(option, inputPositionParams); - }; - CalendarModel3.prototype.mergeOption = function(option) { - _super.prototype.mergeOption.apply(this, arguments); - mergeAndNormalizeLayoutParams3(this.option, option); - }; - CalendarModel3.prototype.getCellSize = function() { - return this.option.cellSize; - }; - CalendarModel3.type = "calendar"; - CalendarModel3.defaultOption = { - // zlevel: 0, - z: 2, - left: 80, - top: 60, - cellSize: 20, - // horizontal vertical - orient: "horizontal", - // month separate line style - splitLine: { - show: true, - lineStyle: { - color: "#000", - width: 1, - type: "solid" - } - }, - // rect style temporarily unused emphasis - itemStyle: { - color: "#fff", - borderWidth: 1, - borderColor: "#ccc" - }, - // week text style - dayLabel: { - show: true, - firstDay: 0, - // start end - position: "start", - margin: "50%", - color: "#000" - }, - // month text style - monthLabel: { - show: true, - // start end - position: "start", - margin: 5, - // center or left - align: "center", - formatter: null, - color: "#000" - }, - // year text style - yearLabel: { - show: true, - // top bottom left right - position: null, - margin: 30, - formatter: null, - color: "#ccc", - fontFamily: "sans-serif", - fontWeight: "bolder", - fontSize: 20 - } - }; - return CalendarModel3; - }(ComponentModel2) - ); - function mergeAndNormalizeLayoutParams3(target, raw) { - var cellSize = target.cellSize; - var cellSizeArr; - if (!isArray3(cellSize)) { - cellSizeArr = target.cellSize = [cellSize, cellSize]; - } else { - cellSizeArr = cellSize; - } - if (cellSizeArr.length === 1) { - cellSizeArr[1] = cellSizeArr[0]; - } - var ignoreSize = map3([0, 1], function(hvIdx) { - if (sizeCalculable2(raw, hvIdx)) { - cellSizeArr[hvIdx] = "auto"; - } - return cellSizeArr[hvIdx] != null && cellSizeArr[hvIdx] !== "auto"; - }); - mergeLayoutParam2(target, raw, { - type: "box", - ignoreSize - }); - } - var CalendarView2 = ( - /** @class */ - function(_super) { - __extends2(CalendarView3, _super); - function CalendarView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CalendarView3.type; - return _this; - } - CalendarView3.prototype.render = function(calendarModel, ecModel, api) { - var group = this.group; - group.removeAll(); - var coordSys = calendarModel.coordinateSystem; - var rangeData = coordSys.getRangeInfo(); - var orient = coordSys.getOrient(); - var localeModel = ecModel.getLocaleModel(); - this._renderDayRect(calendarModel, rangeData, group); - this._renderLines(calendarModel, rangeData, orient, group); - this._renderYearText(calendarModel, rangeData, orient, group); - this._renderMonthText(calendarModel, localeModel, orient, group); - this._renderWeekText(calendarModel, localeModel, rangeData, orient, group); - }; - CalendarView3.prototype._renderDayRect = function(calendarModel, rangeData, group) { - var coordSys = calendarModel.coordinateSystem; - var itemRectStyleModel = calendarModel.getModel("itemStyle").getItemStyle(); - var sw = coordSys.getCellWidth(); - var sh = coordSys.getCellHeight(); - for (var i2 = rangeData.start.time; i2 <= rangeData.end.time; i2 = coordSys.getNextNDay(i2, 1).time) { - var point = coordSys.dataToRect([i2], false).tl; - var rect = new Rect4({ - shape: { - x: point[0], - y: point[1], - width: sw, - height: sh - }, - cursor: "default", - style: itemRectStyleModel - }); - group.add(rect); - } - }; - CalendarView3.prototype._renderLines = function(calendarModel, rangeData, orient, group) { - var self2 = this; - var coordSys = calendarModel.coordinateSystem; - var lineStyleModel = calendarModel.getModel(["splitLine", "lineStyle"]).getLineStyle(); - var show = calendarModel.get(["splitLine", "show"]); - var lineWidth = lineStyleModel.lineWidth; - this._tlpoints = []; - this._blpoints = []; - this._firstDayOfMonth = []; - this._firstDayPoints = []; - var firstDay = rangeData.start; - for (var i2 = 0; firstDay.time <= rangeData.end.time; i2++) { - addPoints(firstDay.formatedDate); - if (i2 === 0) { - firstDay = coordSys.getDateInfo(rangeData.start.y + "-" + rangeData.start.m); - } - var date = firstDay.date; - date.setMonth(date.getMonth() + 1); - firstDay = coordSys.getDateInfo(date); - } - addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate); - function addPoints(date2) { - self2._firstDayOfMonth.push(coordSys.getDateInfo(date2)); - self2._firstDayPoints.push(coordSys.dataToRect([date2], false).tl); - var points5 = self2._getLinePointsOfOneWeek(calendarModel, date2, orient); - self2._tlpoints.push(points5[0]); - self2._blpoints.push(points5[points5.length - 1]); - show && self2._drawSplitline(points5, lineStyleModel, group); - } - show && this._drawSplitline(self2._getEdgesPoints(self2._tlpoints, lineWidth, orient), lineStyleModel, group); - show && this._drawSplitline(self2._getEdgesPoints(self2._blpoints, lineWidth, orient), lineStyleModel, group); - }; - CalendarView3.prototype._getEdgesPoints = function(points5, lineWidth, orient) { - var rs = [points5[0].slice(), points5[points5.length - 1].slice()]; - var idx = orient === "horizontal" ? 0 : 1; - rs[0][idx] = rs[0][idx] - lineWidth / 2; - rs[1][idx] = rs[1][idx] + lineWidth / 2; - return rs; - }; - CalendarView3.prototype._drawSplitline = function(points5, lineStyle, group) { - var poyline = new Polyline3({ - z2: 20, - shape: { - points: points5 - }, - style: lineStyle - }); - group.add(poyline); - }; - CalendarView3.prototype._getLinePointsOfOneWeek = function(calendarModel, date, orient) { - var coordSys = calendarModel.coordinateSystem; - var parsedDate = coordSys.getDateInfo(date); - var points5 = []; - for (var i2 = 0; i2 < 7; i2++) { - var tmpD = coordSys.getNextNDay(parsedDate.time, i2); - var point = coordSys.dataToRect([tmpD.time], false); - points5[2 * tmpD.day] = point.tl; - points5[2 * tmpD.day + 1] = point[orient === "horizontal" ? "bl" : "tr"]; - } - return points5; - }; - CalendarView3.prototype._formatterLabel = function(formatter, params) { - if (isString2(formatter) && formatter) { - return formatTplSimple2(formatter, params); - } - if (isFunction2(formatter)) { - return formatter(params); - } - return params.nameMap; - }; - CalendarView3.prototype._yearTextPositionControl = function(textEl, point, orient, position3, margin) { - var x = point[0]; - var y = point[1]; - var aligns = ["center", "bottom"]; - if (position3 === "bottom") { - y += margin; - aligns = ["center", "top"]; - } else if (position3 === "left") { - x -= margin; - } else if (position3 === "right") { - x += margin; - aligns = ["center", "top"]; - } else { - y -= margin; - } - var rotate3 = 0; - if (position3 === "left" || position3 === "right") { - rotate3 = Math.PI / 2; - } - return { - rotation: rotate3, - x, - y, - style: { - align: aligns[0], - verticalAlign: aligns[1] - } - }; - }; - CalendarView3.prototype._renderYearText = function(calendarModel, rangeData, orient, group) { - var yearLabel = calendarModel.getModel("yearLabel"); - if (!yearLabel.get("show")) { - return; - } - var margin = yearLabel.get("margin"); - var pos = yearLabel.get("position"); - if (!pos) { - pos = orient !== "horizontal" ? "top" : "left"; - } - var points5 = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]]; - var xc = (points5[0][0] + points5[1][0]) / 2; - var yc = (points5[0][1] + points5[1][1]) / 2; - var idx = orient === "horizontal" ? 0 : 1; - var posPoints = { - top: [xc, points5[idx][1]], - bottom: [xc, points5[1 - idx][1]], - left: [points5[1 - idx][0], yc], - right: [points5[idx][0], yc] - }; - var name = rangeData.start.y; - if (+rangeData.end.y > +rangeData.start.y) { - name = name + "-" + rangeData.end.y; - } - var formatter = yearLabel.get("formatter"); - var params = { - start: rangeData.start.y, - end: rangeData.end.y, - nameMap: name - }; - var content = this._formatterLabel(formatter, params); - var yearText = new ZRText2({ - z2: 30, - style: createTextStyle3(yearLabel, { - text: content - }), - silent: yearLabel.get("silent") - }); - yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin)); - group.add(yearText); - }; - CalendarView3.prototype._monthTextPositionControl = function(point, isCenter, orient, position3, margin) { - var align = "left"; - var vAlign = "top"; - var x = point[0]; - var y = point[1]; - if (orient === "horizontal") { - y = y + margin; - if (isCenter) { - align = "center"; - } - if (position3 === "start") { - vAlign = "bottom"; - } - } else { - x = x + margin; - if (isCenter) { - vAlign = "middle"; - } - if (position3 === "start") { - align = "right"; - } - } - return { - x, - y, - align, - verticalAlign: vAlign - }; - }; - CalendarView3.prototype._renderMonthText = function(calendarModel, localeModel, orient, group) { - var monthLabel = calendarModel.getModel("monthLabel"); - if (!monthLabel.get("show")) { - return; - } - var nameMap = monthLabel.get("nameMap"); - var margin = monthLabel.get("margin"); - var pos = monthLabel.get("position"); - var align = monthLabel.get("align"); - var termPoints = [this._tlpoints, this._blpoints]; - if (!nameMap || isString2(nameMap)) { - if (nameMap) { - localeModel = getLocaleModel2(nameMap) || localeModel; - } - nameMap = localeModel.get(["time", "monthAbbr"]) || []; - } - var idx = pos === "start" ? 0 : 1; - var axis = orient === "horizontal" ? 0 : 1; - margin = pos === "start" ? -margin : margin; - var isCenter = align === "center"; - var labelSilent = monthLabel.get("silent"); - for (var i2 = 0; i2 < termPoints[idx].length - 1; i2++) { - var tmp = termPoints[idx][i2].slice(); - var firstDay = this._firstDayOfMonth[i2]; - if (isCenter) { - var firstDayPoints = this._firstDayPoints[i2]; - tmp[axis] = (firstDayPoints[axis] + termPoints[0][i2 + 1][axis]) / 2; - } - var formatter = monthLabel.get("formatter"); - var name_1 = nameMap[+firstDay.m - 1]; - var params = { - yyyy: firstDay.y, - yy: (firstDay.y + "").slice(2), - MM: firstDay.m, - M: +firstDay.m, - nameMap: name_1 - }; - var content = this._formatterLabel(formatter, params); - var monthText = new ZRText2({ - z2: 30, - style: extend3(createTextStyle3(monthLabel, { - text: content - }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin)), - silent: labelSilent - }); - group.add(monthText); - } - }; - CalendarView3.prototype._weekTextPositionControl = function(point, orient, position3, margin, cellSize) { - var align = "center"; - var vAlign = "middle"; - var x = point[0]; - var y = point[1]; - var isStart = position3 === "start"; - if (orient === "horizontal") { - x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2; - align = isStart ? "right" : "left"; - } else { - y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2; - vAlign = isStart ? "bottom" : "top"; - } - return { - x, - y, - align, - verticalAlign: vAlign - }; - }; - CalendarView3.prototype._renderWeekText = function(calendarModel, localeModel, rangeData, orient, group) { - var dayLabel = calendarModel.getModel("dayLabel"); - if (!dayLabel.get("show")) { - return; - } - var coordSys = calendarModel.coordinateSystem; - var pos = dayLabel.get("position"); - var nameMap = dayLabel.get("nameMap"); - var margin = dayLabel.get("margin"); - var firstDayOfWeek = coordSys.getFirstDayOfWeek(); - if (!nameMap || isString2(nameMap)) { - if (nameMap) { - localeModel = getLocaleModel2(nameMap) || localeModel; - } - var dayOfWeekShort = localeModel.get(["time", "dayOfWeekShort"]); - nameMap = dayOfWeekShort || map3(localeModel.get(["time", "dayOfWeekAbbr"]), function(val) { - return val[0]; - }); - } - var start4 = coordSys.getNextNDay(rangeData.end.time, 7 - rangeData.lweek).time; - var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()]; - margin = parsePercent$1(margin, Math.min(cellSize[1], cellSize[0])); - if (pos === "start") { - start4 = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time; - margin = -margin; - } - var labelSilent = dayLabel.get("silent"); - for (var i2 = 0; i2 < 7; i2++) { - var tmpD = coordSys.getNextNDay(start4, i2); - var point = coordSys.dataToRect([tmpD.time], false).center; - var day = i2; - day = Math.abs((i2 + firstDayOfWeek) % 7); - var weekText = new ZRText2({ - z2: 30, - style: extend3(createTextStyle3(dayLabel, { - text: nameMap[day] - }), this._weekTextPositionControl(point, orient, pos, margin, cellSize)), - silent: labelSilent - }); - group.add(weekText); - } - }; - CalendarView3.type = "calendar"; - return CalendarView3; - }(ComponentView2) - ); - var PROXIMATE_ONE_DAY2 = 864e5; - var Calendar2 = ( - /** @class */ - function() { - function Calendar3(calendarModel, ecModel, api) { - this.type = "calendar"; - this.dimensions = Calendar3.dimensions; - this.getDimensionsInfo = Calendar3.getDimensionsInfo; - this._model = calendarModel; - } - Calendar3.getDimensionsInfo = function() { - return [{ - name: "time", - type: "time" - }, "value"]; - }; - Calendar3.prototype.getRangeInfo = function() { - return this._rangeInfo; - }; - Calendar3.prototype.getModel = function() { - return this._model; - }; - Calendar3.prototype.getRect = function() { - return this._rect; - }; - Calendar3.prototype.getCellWidth = function() { - return this._sw; - }; - Calendar3.prototype.getCellHeight = function() { - return this._sh; - }; - Calendar3.prototype.getOrient = function() { - return this._orient; - }; - Calendar3.prototype.getFirstDayOfWeek = function() { - return this._firstDayOfWeek; - }; - Calendar3.prototype.getDateInfo = function(date) { - date = parseDate2(date); - var y = date.getFullYear(); - var m3 = date.getMonth() + 1; - var mStr = m3 < 10 ? "0" + m3 : "" + m3; - var d = date.getDate(); - var dStr = d < 10 ? "0" + d : "" + d; - var day = date.getDay(); - day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7); - return { - y: y + "", - m: mStr, - d: dStr, - day, - time: date.getTime(), - formatedDate: y + "-" + mStr + "-" + dStr, - date - }; - }; - Calendar3.prototype.getNextNDay = function(date, n) { - n = n || 0; - if (n === 0) { - return this.getDateInfo(date); - } - date = new Date(this.getDateInfo(date).time); - date.setDate(date.getDate() + n); - return this.getDateInfo(date); - }; - Calendar3.prototype.update = function(ecModel, api) { - this._firstDayOfWeek = +this._model.getModel("dayLabel").get("firstDay"); - this._orient = this._model.get("orient"); - this._lineWidth = this._model.getModel("itemStyle").getItemStyle().lineWidth || 0; - this._rangeInfo = this._getRangeInfo(this._initRangeOption()); - var weeks = this._rangeInfo.weeks || 1; - var whNames = ["width", "height"]; - var cellSize = this._model.getCellSize().slice(); - var layoutParams = this._model.getBoxLayoutParams(); - var cellNumbers = this._orient === "horizontal" ? [weeks, 7] : [7, weeks]; - each17([0, 1], function(idx) { - if (cellSizeSpecified(cellSize, idx)) { - layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx]; - } - }); - var whGlobal = { - width: api.getWidth(), - height: api.getHeight() - }; - var calendarRect = this._rect = getLayoutRect2(layoutParams, whGlobal); - each17([0, 1], function(idx) { - if (!cellSizeSpecified(cellSize, idx)) { - cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx]; - } - }); - function cellSizeSpecified(cellSize2, idx) { - return cellSize2[idx] != null && cellSize2[idx] !== "auto"; - } - this._sw = cellSize[0]; - this._sh = cellSize[1]; - }; - Calendar3.prototype.dataToPoint = function(data, clamp4) { - isArray3(data) && (data = data[0]); - clamp4 == null && (clamp4 = true); - var dayInfo = this.getDateInfo(data); - var range = this._rangeInfo; - var date = dayInfo.formatedDate; - if (clamp4 && !(dayInfo.time >= range.start.time && dayInfo.time < range.end.time + PROXIMATE_ONE_DAY2)) { - return [NaN, NaN]; - } - var week = dayInfo.day; - var nthWeek = this._getRangeInfo([range.start.time, date]).nthWeek; - if (this._orient === "vertical") { - return [this._rect.x + week * this._sw + this._sw / 2, this._rect.y + nthWeek * this._sh + this._sh / 2]; - } - return [this._rect.x + nthWeek * this._sw + this._sw / 2, this._rect.y + week * this._sh + this._sh / 2]; - }; - Calendar3.prototype.pointToData = function(point) { - var date = this.pointToDate(point); - return date && date.time; - }; - Calendar3.prototype.dataToRect = function(data, clamp4) { - var point = this.dataToPoint(data, clamp4); - return { - contentShape: { - x: point[0] - (this._sw - this._lineWidth) / 2, - y: point[1] - (this._sh - this._lineWidth) / 2, - width: this._sw - this._lineWidth, - height: this._sh - this._lineWidth - }, - center: point, - tl: [point[0] - this._sw / 2, point[1] - this._sh / 2], - tr: [point[0] + this._sw / 2, point[1] - this._sh / 2], - br: [point[0] + this._sw / 2, point[1] + this._sh / 2], - bl: [point[0] - this._sw / 2, point[1] + this._sh / 2] - }; - }; - Calendar3.prototype.pointToDate = function(point) { - var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1; - var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1; - var range = this._rangeInfo.range; - if (this._orient === "vertical") { - return this._getDateByWeeksAndDay(nthY, nthX - 1, range); - } - return this._getDateByWeeksAndDay(nthX, nthY - 1, range); - }; - Calendar3.prototype.convertToPixel = function(ecModel, finder, value) { - var coordSys = getCoordSys$4(finder); - return coordSys === this ? coordSys.dataToPoint(value) : null; - }; - Calendar3.prototype.convertFromPixel = function(ecModel, finder, pixel) { - var coordSys = getCoordSys$4(finder); - return coordSys === this ? coordSys.pointToData(pixel) : null; - }; - Calendar3.prototype.containPoint = function(point) { - console.warn("Not implemented."); - return false; - }; - Calendar3.prototype._initRangeOption = function() { - var range = this._model.get("range"); - var normalizedRange; - if (isArray3(range) && range.length === 1) { - range = range[0]; - } - if (!isArray3(range)) { - var rangeStr = range.toString(); - if (/^\d{4}$/.test(rangeStr)) { - normalizedRange = [rangeStr + "-01-01", rangeStr + "-12-31"]; - } - if (/^\d{4}[\/|-]\d{1,2}$/.test(rangeStr)) { - var start4 = this.getDateInfo(rangeStr); - var firstDay = start4.date; - firstDay.setMonth(firstDay.getMonth() + 1); - var end3 = this.getNextNDay(firstDay, -1); - normalizedRange = [start4.formatedDate, end3.formatedDate]; - } - if (/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(rangeStr)) { - normalizedRange = [rangeStr, rangeStr]; - } - } else { - normalizedRange = range; - } - if (!normalizedRange) { - if (true) { - logError2("Invalid date range."); - } - return range; - } - var tmp = this._getRangeInfo(normalizedRange); - if (tmp.start.time > tmp.end.time) { - normalizedRange.reverse(); - } - return normalizedRange; - }; - Calendar3.prototype._getRangeInfo = function(range) { - var parsedRange = [this.getDateInfo(range[0]), this.getDateInfo(range[1])]; - var reversed; - if (parsedRange[0].time > parsedRange[1].time) { - reversed = true; - parsedRange.reverse(); - } - var allDay = Math.floor(parsedRange[1].time / PROXIMATE_ONE_DAY2) - Math.floor(parsedRange[0].time / PROXIMATE_ONE_DAY2) + 1; - var date = new Date(parsedRange[0].time); - var startDateNum = date.getDate(); - var endDateNum = parsedRange[1].date.getDate(); - date.setDate(startDateNum + allDay - 1); - var dateNum = date.getDate(); - if (dateNum !== endDateNum) { - var sign = date.getTime() - parsedRange[1].time > 0 ? 1 : -1; - while ((dateNum = date.getDate()) !== endDateNum && (date.getTime() - parsedRange[1].time) * sign > 0) { - allDay -= sign; - date.setDate(dateNum - sign); - } - } - var weeks = Math.floor((allDay + parsedRange[0].day + 6) / 7); - var nthWeek = reversed ? -weeks + 1 : weeks - 1; - reversed && parsedRange.reverse(); - return { - range: [parsedRange[0].formatedDate, parsedRange[1].formatedDate], - start: parsedRange[0], - end: parsedRange[1], - allDay, - weeks, - // From 0. - nthWeek, - fweek: parsedRange[0].day, - lweek: parsedRange[1].day - }; - }; - Calendar3.prototype._getDateByWeeksAndDay = function(nthWeek, day, range) { - var rangeInfo = this._getRangeInfo(range); - if (nthWeek > rangeInfo.weeks || nthWeek === 0 && day < rangeInfo.fweek || nthWeek === rangeInfo.weeks && day > rangeInfo.lweek) { - return null; - } - var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day; - var date = new Date(rangeInfo.start.time); - date.setDate(+rangeInfo.start.d + nthDay); - return this.getDateInfo(date); - }; - Calendar3.create = function(ecModel, api) { - var calendarList = []; - ecModel.eachComponent("calendar", function(calendarModel) { - var calendar = new Calendar3(calendarModel, ecModel, api); - calendarList.push(calendar); - calendarModel.coordinateSystem = calendar; - }); - ecModel.eachSeries(function(calendarSeries) { - if (calendarSeries.get("coordinateSystem") === "calendar") { - calendarSeries.coordinateSystem = calendarList[calendarSeries.get("calendarIndex") || 0]; - } - }); - return calendarList; - }; - Calendar3.dimensions = ["time", "value"]; - return Calendar3; - }() - ); - function getCoordSys$4(finder) { - var calendarModel = finder.calendarModel; - var seriesModel = finder.seriesModel; - var coordSys = calendarModel ? calendarModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem : null; - return coordSys; - } - function install$w(registers) { - registers.registerComponentModel(CalendarModel2); - registers.registerComponentView(CalendarView2); - registers.registerCoordinateSystem("calendar", Calendar2); - } - function setKeyInfoToNewElOption2(resultItem, newElOption) { - var existElOption = resultItem.existing; - newElOption.id = resultItem.keyInfo.id; - !newElOption.type && existElOption && (newElOption.type = existElOption.type); - if (newElOption.parentId == null) { - var newElParentOption = newElOption.parentOption; - if (newElParentOption) { - newElOption.parentId = newElParentOption.id; - } else if (existElOption) { - newElOption.parentId = existElOption.parentId; - } - } - newElOption.parentOption = null; - } - function isSetLoc2(obj, props) { - var isSet; - each17(props, function(prop) { - obj[prop] != null && obj[prop] !== "auto" && (isSet = true); - }); - return isSet; - } - function mergeNewElOptionToExist2(existList, index, newElOption) { - var newElOptCopy = extend3({}, newElOption); - var existElOption = existList[index]; - var $action = newElOption.$action || "merge"; - if ($action === "merge") { - if (existElOption) { - if (true) { - var newType = newElOption.type; - assert2(!newType || existElOption.type === newType, 'Please set $action: "replace" to change `type`'); - } - merge2(existElOption, newElOptCopy, true); - mergeLayoutParam2(existElOption, newElOptCopy, { - ignoreSize: true - }); - copyLayoutParams2(newElOption, existElOption); - copyTransitionInfo2(newElOption, existElOption); - copyTransitionInfo2(newElOption, existElOption, "shape"); - copyTransitionInfo2(newElOption, existElOption, "style"); - copyTransitionInfo2(newElOption, existElOption, "extra"); - newElOption.clipPath = existElOption.clipPath; - } else { - existList[index] = newElOptCopy; - } - } else if ($action === "replace") { - existList[index] = newElOptCopy; - } else if ($action === "remove") { - existElOption && (existList[index] = null); - } - } - var TRANSITION_PROPS_TO_COPY2 = ["transition", "enterFrom", "leaveTo"]; - var ROOT_TRANSITION_PROPS_TO_COPY2 = TRANSITION_PROPS_TO_COPY2.concat(["enterAnimation", "updateAnimation", "leaveAnimation"]); - function copyTransitionInfo2(target, source, targetProp) { - if (targetProp) { - if (!target[targetProp] && source[targetProp]) { - target[targetProp] = {}; - } - target = target[targetProp]; - source = source[targetProp]; - } - if (!target || !source) { - return; - } - var props = targetProp ? TRANSITION_PROPS_TO_COPY2 : ROOT_TRANSITION_PROPS_TO_COPY2; - for (var i2 = 0; i2 < props.length; i2++) { - var prop = props[i2]; - if (target[prop] == null && source[prop] != null) { - target[prop] = source[prop]; - } - } - } - function setLayoutInfoToExist2(existItem, newElOption) { - if (!existItem) { - return; - } - existItem.hv = newElOption.hv = [ - // Rigid body, don't care about `width`. - isSetLoc2(newElOption, ["left", "right"]), - // Rigid body, don't care about `height`. - isSetLoc2(newElOption, ["top", "bottom"]) - ]; - if (existItem.type === "group") { - var existingGroupOpt = existItem; - var newGroupOpt = newElOption; - existingGroupOpt.width == null && (existingGroupOpt.width = newGroupOpt.width = 0); - existingGroupOpt.height == null && (existingGroupOpt.height = newGroupOpt.height = 0); - } - } - var GraphicComponentModel2 = ( - /** @class */ - function(_super) { - __extends2(GraphicComponentModel3, _super); - function GraphicComponentModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GraphicComponentModel3.type; - _this.preventAutoZ = true; - return _this; - } - GraphicComponentModel3.prototype.mergeOption = function(option, ecModel) { - var elements = this.option.elements; - this.option.elements = null; - _super.prototype.mergeOption.call(this, option, ecModel); - this.option.elements = elements; - }; - GraphicComponentModel3.prototype.optionUpdated = function(newOption, isInit) { - var thisOption = this.option; - var newList = (isInit ? thisOption : newOption).elements; - var existList = thisOption.elements = isInit ? [] : thisOption.elements; - var flattenedList = []; - this._flatten(newList, flattenedList, null); - var mappingResult = mappingToExists2(existList, flattenedList, "normalMerge"); - var elOptionsToUpdate = this._elOptionsToUpdate = []; - each17(mappingResult, function(resultItem, index) { - var newElOption = resultItem.newOption; - if (true) { - assert2(isObject5(newElOption) || resultItem.existing, "Empty graphic option definition"); - } - if (!newElOption) { - return; - } - elOptionsToUpdate.push(newElOption); - setKeyInfoToNewElOption2(resultItem, newElOption); - mergeNewElOptionToExist2(existList, index, newElOption); - setLayoutInfoToExist2(existList[index], newElOption); - }, this); - thisOption.elements = filter2(existList, function(item) { - item && delete item.$action; - return item != null; - }); - }; - GraphicComponentModel3.prototype._flatten = function(optionList, result, parentOption) { - each17(optionList, function(option) { - if (!option) { - return; - } - if (parentOption) { - option.parentOption = parentOption; - } - result.push(option); - var children = option.children; - if (children && children.length) { - this._flatten(children, result, option); - } - delete option.children; - }, this); - }; - GraphicComponentModel3.prototype.useElOptionsToUpdate = function() { - var els = this._elOptionsToUpdate; - this._elOptionsToUpdate = null; - return els; - }; - GraphicComponentModel3.type = "graphic"; - GraphicComponentModel3.defaultOption = { - elements: [] - // parentId: null - }; - return GraphicComponentModel3; - }(ComponentModel2) - ); - var nonShapeGraphicElements2 = { - // Reserved but not supported in graphic component. - path: null, - compoundPath: null, - // Supported in graphic component. - group: Group5, - image: ZRImage2, - text: ZRText2 - }; - var inner$e = makeInner2(); - var GraphicComponentView2 = ( - /** @class */ - function(_super) { - __extends2(GraphicComponentView3, _super); - function GraphicComponentView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GraphicComponentView3.type; - return _this; - } - GraphicComponentView3.prototype.init = function() { - this._elMap = createHashMap2(); - }; - GraphicComponentView3.prototype.render = function(graphicModel, ecModel, api) { - if (graphicModel !== this._lastGraphicModel) { - this._clear(); - } - this._lastGraphicModel = graphicModel; - this._updateElements(graphicModel); - this._relocate(graphicModel, api); - }; - GraphicComponentView3.prototype._updateElements = function(graphicModel) { - var elOptionsToUpdate = graphicModel.useElOptionsToUpdate(); - if (!elOptionsToUpdate) { - return; - } - var elMap = this._elMap; - var rootGroup = this.group; - var globalZ = graphicModel.get("z"); - var globalZLevel = graphicModel.get("zlevel"); - each17(elOptionsToUpdate, function(elOption) { - var id = convertOptionIdName2(elOption.id, null); - var elExisting = id != null ? elMap.get(id) : null; - var parentId = convertOptionIdName2(elOption.parentId, null); - var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup; - var elType = elOption.type; - var elOptionStyle = elOption.style; - if (elType === "text" && elOptionStyle) { - if (elOption.hv && elOption.hv[1]) { - elOptionStyle.textVerticalAlign = elOptionStyle.textBaseline = elOptionStyle.verticalAlign = elOptionStyle.align = null; - } - } - var textContentOption = elOption.textContent; - var textConfig = elOption.textConfig; - if (elOptionStyle && isEC4CompatibleStyle2(elOptionStyle, elType, !!textConfig, !!textContentOption)) { - var convertResult = convertFromEC4CompatibleStyle2(elOptionStyle, elType, true); - if (!textConfig && convertResult.textConfig) { - textConfig = elOption.textConfig = convertResult.textConfig; - } - if (!textContentOption && convertResult.textContent) { - textContentOption = convertResult.textContent; - } - } - var elOptionCleaned = getCleanedElOption2(elOption); - if (true) { - elExisting && assert2(targetElParent === elExisting.parent, "Changing parent is not supported."); - } - var $action = elOption.$action || "merge"; - var isMerge = $action === "merge"; - var isReplace = $action === "replace"; - if (isMerge) { - var isInit = !elExisting; - var el_1 = elExisting; - if (isInit) { - el_1 = createEl$1(id, targetElParent, elOption.type, elMap); - } else { - el_1 && (inner$e(el_1).isNew = false); - stopPreviousKeyframeAnimationAndRestore2(el_1); - } - if (el_1) { - applyUpdateTransition2(el_1, elOptionCleaned, graphicModel, { - isInit - }); - updateCommonAttrs2(el_1, elOption, globalZ, globalZLevel); - } - } else if (isReplace) { - removeEl3(elExisting, elOption, elMap, graphicModel); - var el_2 = createEl$1(id, targetElParent, elOption.type, elMap); - if (el_2) { - applyUpdateTransition2(el_2, elOptionCleaned, graphicModel, { - isInit: true - }); - updateCommonAttrs2(el_2, elOption, globalZ, globalZLevel); - } - } else if ($action === "remove") { - updateLeaveTo2(elExisting, elOption); - removeEl3(elExisting, elOption, elMap, graphicModel); - } - var el = elMap.get(id); - if (el && textContentOption) { - if (isMerge) { - var textContentExisting = el.getTextContent(); - textContentExisting ? textContentExisting.attr(textContentOption) : el.setTextContent(new ZRText2(textContentOption)); - } else if (isReplace) { - el.setTextContent(new ZRText2(textContentOption)); - } - } - if (el) { - var clipPathOption = elOption.clipPath; - if (clipPathOption) { - var clipPathType = clipPathOption.type; - var clipPath = void 0; - var isInit = false; - if (isMerge) { - var oldClipPath = el.getClipPath(); - isInit = !oldClipPath || inner$e(oldClipPath).type !== clipPathType; - clipPath = isInit ? newEl2(clipPathType) : oldClipPath; - } else if (isReplace) { - isInit = true; - clipPath = newEl2(clipPathType); - } - el.setClipPath(clipPath); - applyUpdateTransition2(clipPath, clipPathOption, graphicModel, { - isInit - }); - applyKeyframeAnimation2(clipPath, clipPathOption.keyframeAnimation, graphicModel); - } - var elInner = inner$e(el); - el.setTextConfig(textConfig); - elInner.option = elOption; - setEventData2(el, graphicModel, elOption); - setTooltipConfig2({ - el, - componentModel: graphicModel, - itemName: el.name, - itemTooltipOption: elOption.tooltip - }); - applyKeyframeAnimation2(el, elOption.keyframeAnimation, graphicModel); - } - }); - }; - GraphicComponentView3.prototype._relocate = function(graphicModel, api) { - var elOptions = graphicModel.option.elements; - var rootGroup = this.group; - var elMap = this._elMap; - var apiWidth = api.getWidth(); - var apiHeight = api.getHeight(); - var xy = ["x", "y"]; - for (var i2 = 0; i2 < elOptions.length; i2++) { - var elOption = elOptions[i2]; - var id = convertOptionIdName2(elOption.id, null); - var el = id != null ? elMap.get(id) : null; - if (!el || !el.isGroup) { - continue; - } - var parentEl = el.parent; - var isParentRoot = parentEl === rootGroup; - var elInner = inner$e(el); - var parentElInner = inner$e(parentEl); - elInner.width = parsePercent$1(elInner.option.width, isParentRoot ? apiWidth : parentElInner.width) || 0; - elInner.height = parsePercent$1(elInner.option.height, isParentRoot ? apiHeight : parentElInner.height) || 0; - } - for (var i2 = elOptions.length - 1; i2 >= 0; i2--) { - var elOption = elOptions[i2]; - var id = convertOptionIdName2(elOption.id, null); - var el = id != null ? elMap.get(id) : null; - if (!el) { - continue; - } - var parentEl = el.parent; - var parentElInner = inner$e(parentEl); - var containerInfo = parentEl === rootGroup ? { - width: apiWidth, - height: apiHeight - } : { - width: parentElInner.width, - height: parentElInner.height - }; - var layoutPos = {}; - var layouted = positionElement2(el, elOption, containerInfo, null, { - hv: elOption.hv, - boundingMode: elOption.bounding - }, layoutPos); - if (!inner$e(el).isNew && layouted) { - var transition = elOption.transition; - var animatePos = {}; - for (var k2 = 0; k2 < xy.length; k2++) { - var key = xy[k2]; - var val = layoutPos[key]; - if (transition && (isTransitionAll2(transition) || indexOf2(transition, key) >= 0)) { - animatePos[key] = val; - } else { - el[key] = val; - } - } - updateProps3(el, animatePos, graphicModel, 0); - } else { - el.attr(layoutPos); - } - } - }; - GraphicComponentView3.prototype._clear = function() { - var _this = this; - var elMap = this._elMap; - elMap.each(function(el) { - removeEl3(el, inner$e(el).option, elMap, _this._lastGraphicModel); - }); - this._elMap = createHashMap2(); - }; - GraphicComponentView3.prototype.dispose = function() { - this._clear(); - }; - GraphicComponentView3.type = "graphic"; - return GraphicComponentView3; - }(ComponentView2) - ); - function newEl2(graphicType) { - if (true) { - assert2(graphicType, "graphic type MUST be set"); - } - var Clz = hasOwn2(nonShapeGraphicElements2, graphicType) ? nonShapeGraphicElements2[graphicType] : getShapeClass2(graphicType); - if (true) { - assert2(Clz, "graphic type " + graphicType + " can not be found"); - } - var el = new Clz({}); - inner$e(el).type = graphicType; - return el; - } - function createEl$1(id, targetElParent, graphicType, elMap) { - var el = newEl2(graphicType); - targetElParent.add(el); - elMap.set(id, el); - inner$e(el).id = id; - inner$e(el).isNew = true; - return el; - } - function removeEl3(elExisting, elOption, elMap, graphicModel) { - var existElParent = elExisting && elExisting.parent; - if (existElParent) { - elExisting.type === "group" && elExisting.traverse(function(el) { - removeEl3(el, elOption, elMap, graphicModel); - }); - applyLeaveTransition2(elExisting, elOption, graphicModel); - elMap.removeKey(inner$e(elExisting).id); - } - } - function updateCommonAttrs2(el, elOption, defaultZ, defaultZlevel) { - if (!el.isGroup) { - each17([ - ["cursor", Displayable2.prototype.cursor], - // We should not support configure z and zlevel in the element level. - // But seems we didn't limit it previously. So here still use it to avoid breaking. - ["zlevel", defaultZlevel || 0], - ["z", defaultZ || 0], - // z2 must not be null/undefined, otherwise sort error may occur. - ["z2", 0] - ], function(item) { - var prop = item[0]; - if (hasOwn2(elOption, prop)) { - el[prop] = retrieve22(elOption[prop], item[1]); - } else if (el[prop] == null) { - el[prop] = item[1]; - } - }); - } - each17(keys2(elOption), function(key) { - if (key.indexOf("on") === 0) { - var val = elOption[key]; - el[key] = isFunction2(val) ? val : null; - } - }); - if (hasOwn2(elOption, "draggable")) { - el.draggable = elOption.draggable; - } - elOption.name != null && (el.name = elOption.name); - elOption.id != null && (el.id = elOption.id); - } - function getCleanedElOption2(elOption) { - elOption = extend3({}, elOption); - each17(["id", "parentId", "$action", "hv", "bounding", "textContent", "clipPath"].concat(LOCATION_PARAMS2), function(name) { - delete elOption[name]; - }); - return elOption; - } - function setEventData2(el, graphicModel, elOption) { - var eventData = getECData2(el).eventData; - if (!el.silent && !el.ignore && !eventData) { - eventData = getECData2(el).eventData = { - componentType: "graphic", - componentIndex: graphicModel.componentIndex, - name: el.name - }; - } - if (eventData) { - eventData.info = elOption.info; - } - } - function install$x(registers) { - registers.registerComponentModel(GraphicComponentModel2); - registers.registerComponentView(GraphicComponentView2); - registers.registerPreprocessor(function(option) { - var graphicOption = option.graphic; - if (isArray3(graphicOption)) { - if (!graphicOption[0] || !graphicOption[0].elements) { - option.graphic = [{ - elements: graphicOption - }]; - } else { - option.graphic = [option.graphic[0]]; - } - } else if (graphicOption && !graphicOption.elements) { - option.graphic = [{ - elements: [graphicOption] - }]; - } - }); - } - var DATA_ZOOM_AXIS_DIMENSIONS2 = ["x", "y", "radius", "angle", "single"]; - var SERIES_COORDS2 = ["cartesian2d", "polar", "singleAxis"]; - function isCoordSupported2(seriesModel) { - var coordType = seriesModel.get("coordinateSystem"); - return indexOf2(SERIES_COORDS2, coordType) >= 0; - } - function getAxisMainType2(axisDim) { - if (true) { - assert2(axisDim); - } - return axisDim + "Axis"; - } - function findEffectedDataZooms2(ecModel, payload) { - var axisRecords = createHashMap2(); - var effectedModels = []; - var effectedModelMap = createHashMap2(); - ecModel.eachComponent({ - mainType: "dataZoom", - query: payload - }, function(dataZoomModel) { - if (!effectedModelMap.get(dataZoomModel.uid)) { - addToEffected(dataZoomModel); - } - }); - var foundNewLink; - do { - foundNewLink = false; - ecModel.eachComponent("dataZoom", processSingle); - } while (foundNewLink); - function processSingle(dataZoomModel) { - if (!effectedModelMap.get(dataZoomModel.uid) && isLinked(dataZoomModel)) { - addToEffected(dataZoomModel); - foundNewLink = true; - } - } - function addToEffected(dataZoom) { - effectedModelMap.set(dataZoom.uid, true); - effectedModels.push(dataZoom); - markAxisControlled(dataZoom); - } - function isLinked(dataZoomModel) { - var isLink = false; - dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { - var axisIdxArr = axisRecords.get(axisDim); - if (axisIdxArr && axisIdxArr[axisIndex]) { - isLink = true; - } - }); - return isLink; - } - function markAxisControlled(dataZoomModel) { - dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { - (axisRecords.get(axisDim) || axisRecords.set(axisDim, []))[axisIndex] = true; - }); - } - return effectedModels; - } - function collectReferCoordSysModelInfo2(dataZoomModel) { - var ecModel = dataZoomModel.ecModel; - var coordSysInfoWrap = { - infoList: [], - infoMap: createHashMap2() - }; - dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { - var axisModel = ecModel.getComponent(getAxisMainType2(axisDim), axisIndex); - if (!axisModel) { - return; - } - var coordSysModel = axisModel.getCoordSysModel(); - if (!coordSysModel) { - return; - } - var coordSysUid = coordSysModel.uid; - var coordSysInfo = coordSysInfoWrap.infoMap.get(coordSysUid); - if (!coordSysInfo) { - coordSysInfo = { - model: coordSysModel, - axisModels: [] - }; - coordSysInfoWrap.infoList.push(coordSysInfo); - coordSysInfoWrap.infoMap.set(coordSysUid, coordSysInfo); - } - coordSysInfo.axisModels.push(axisModel); - }); - return coordSysInfoWrap; - } - var DataZoomAxisInfo2 = ( - /** @class */ - function() { - function DataZoomAxisInfo3() { - this.indexList = []; - this.indexMap = []; - } - DataZoomAxisInfo3.prototype.add = function(axisCmptIdx) { - if (!this.indexMap[axisCmptIdx]) { - this.indexList.push(axisCmptIdx); - this.indexMap[axisCmptIdx] = true; - } - }; - return DataZoomAxisInfo3; - }() - ); - var DataZoomModel2 = ( - /** @class */ - function(_super) { - __extends2(DataZoomModel3, _super); - function DataZoomModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = DataZoomModel3.type; - _this._autoThrottle = true; - _this._noTarget = true; - _this._rangePropMode = ["percent", "percent"]; - return _this; - } - DataZoomModel3.prototype.init = function(option, parentModel, ecModel) { - var inputRawOption = retrieveRawOption2(option); - this.settledOption = inputRawOption; - this.mergeDefaultAndTheme(option, ecModel); - this._doInit(inputRawOption); - }; - DataZoomModel3.prototype.mergeOption = function(newOption) { - var inputRawOption = retrieveRawOption2(newOption); - merge2(this.option, newOption, true); - merge2(this.settledOption, inputRawOption, true); - this._doInit(inputRawOption); - }; - DataZoomModel3.prototype._doInit = function(inputRawOption) { - var thisOption = this.option; - this._setDefaultThrottle(inputRawOption); - this._updateRangeUse(inputRawOption); - var settledOption = this.settledOption; - each17([["start", "startValue"], ["end", "endValue"]], function(names, index) { - if (this._rangePropMode[index] === "value") { - thisOption[names[0]] = settledOption[names[0]] = null; - } - }, this); - this._resetTarget(); - }; - DataZoomModel3.prototype._resetTarget = function() { - var optionOrient = this.get("orient", true); - var targetAxisIndexMap = this._targetAxisInfoMap = createHashMap2(); - var hasAxisSpecified = this._fillSpecifiedTargetAxis(targetAxisIndexMap); - if (hasAxisSpecified) { - this._orient = optionOrient || this._makeAutoOrientByTargetAxis(); - } else { - this._orient = optionOrient || "horizontal"; - this._fillAutoTargetAxisByOrient(targetAxisIndexMap, this._orient); - } - this._noTarget = true; - targetAxisIndexMap.each(function(axisInfo) { - if (axisInfo.indexList.length) { - this._noTarget = false; - } - }, this); - }; - DataZoomModel3.prototype._fillSpecifiedTargetAxis = function(targetAxisIndexMap) { - var hasAxisSpecified = false; - each17(DATA_ZOOM_AXIS_DIMENSIONS2, function(axisDim) { - var refering = this.getReferringComponents(getAxisMainType2(axisDim), MULTIPLE_REFERRING2); - if (!refering.specified) { - return; - } - hasAxisSpecified = true; - var axisInfo = new DataZoomAxisInfo2(); - each17(refering.models, function(axisModel) { - axisInfo.add(axisModel.componentIndex); - }); - targetAxisIndexMap.set(axisDim, axisInfo); - }, this); - return hasAxisSpecified; - }; - DataZoomModel3.prototype._fillAutoTargetAxisByOrient = function(targetAxisIndexMap, orient) { - var ecModel = this.ecModel; - var needAuto = true; - if (needAuto) { - var axisDim = orient === "vertical" ? "y" : "x"; - var axisModels = ecModel.findComponents({ - mainType: axisDim + "Axis" - }); - setParallelAxis(axisModels, axisDim); - } - if (needAuto) { - var axisModels = ecModel.findComponents({ - mainType: "singleAxis", - filter: function(axisModel) { - return axisModel.get("orient", true) === orient; - } - }); - setParallelAxis(axisModels, "single"); - } - function setParallelAxis(axisModels2, axisDim2) { - var axisModel = axisModels2[0]; - if (!axisModel) { - return; - } - var axisInfo = new DataZoomAxisInfo2(); - axisInfo.add(axisModel.componentIndex); - targetAxisIndexMap.set(axisDim2, axisInfo); - needAuto = false; - if (axisDim2 === "x" || axisDim2 === "y") { - var gridModel_1 = axisModel.getReferringComponents("grid", SINGLE_REFERRING2).models[0]; - gridModel_1 && each17(axisModels2, function(axModel) { - if (axisModel.componentIndex !== axModel.componentIndex && gridModel_1 === axModel.getReferringComponents("grid", SINGLE_REFERRING2).models[0]) { - axisInfo.add(axModel.componentIndex); - } - }); - } - } - if (needAuto) { - each17(DATA_ZOOM_AXIS_DIMENSIONS2, function(axisDim2) { - if (!needAuto) { - return; - } - var axisModels2 = ecModel.findComponents({ - mainType: getAxisMainType2(axisDim2), - filter: function(axisModel) { - return axisModel.get("type", true) === "category"; - } - }); - if (axisModels2[0]) { - var axisInfo = new DataZoomAxisInfo2(); - axisInfo.add(axisModels2[0].componentIndex); - targetAxisIndexMap.set(axisDim2, axisInfo); - needAuto = false; - } - }, this); - } - }; - DataZoomModel3.prototype._makeAutoOrientByTargetAxis = function() { - var dim; - this.eachTargetAxis(function(axisDim) { - !dim && (dim = axisDim); - }, this); - return dim === "y" ? "vertical" : "horizontal"; - }; - DataZoomModel3.prototype._setDefaultThrottle = function(inputRawOption) { - if (inputRawOption.hasOwnProperty("throttle")) { - this._autoThrottle = false; - } - if (this._autoThrottle) { - var globalOption = this.ecModel.option; - this.option.throttle = globalOption.animation && globalOption.animationDurationUpdate > 0 ? 100 : 20; - } - }; - DataZoomModel3.prototype._updateRangeUse = function(inputRawOption) { - var rangePropMode = this._rangePropMode; - var rangeModeInOption = this.get("rangeMode"); - each17([["start", "startValue"], ["end", "endValue"]], function(names, index) { - var percentSpecified = inputRawOption[names[0]] != null; - var valueSpecified = inputRawOption[names[1]] != null; - if (percentSpecified && !valueSpecified) { - rangePropMode[index] = "percent"; - } else if (!percentSpecified && valueSpecified) { - rangePropMode[index] = "value"; - } else if (rangeModeInOption) { - rangePropMode[index] = rangeModeInOption[index]; - } else if (percentSpecified) { - rangePropMode[index] = "percent"; - } - }); - }; - DataZoomModel3.prototype.noTarget = function() { - return this._noTarget; - }; - DataZoomModel3.prototype.getFirstTargetAxisModel = function() { - var firstAxisModel; - this.eachTargetAxis(function(axisDim, axisIndex) { - if (firstAxisModel == null) { - firstAxisModel = this.ecModel.getComponent(getAxisMainType2(axisDim), axisIndex); - } - }, this); - return firstAxisModel; - }; - DataZoomModel3.prototype.eachTargetAxis = function(callback, context) { - this._targetAxisInfoMap.each(function(axisInfo, axisDim) { - each17(axisInfo.indexList, function(axisIndex) { - callback.call(context, axisDim, axisIndex); - }); - }); - }; - DataZoomModel3.prototype.getAxisProxy = function(axisDim, axisIndex) { - var axisModel = this.getAxisModel(axisDim, axisIndex); - if (axisModel) { - return axisModel.__dzAxisProxy; - } - }; - DataZoomModel3.prototype.getAxisModel = function(axisDim, axisIndex) { - if (true) { - assert2(axisDim && axisIndex != null); - } - var axisInfo = this._targetAxisInfoMap.get(axisDim); - if (axisInfo && axisInfo.indexMap[axisIndex]) { - return this.ecModel.getComponent(getAxisMainType2(axisDim), axisIndex); - } - }; - DataZoomModel3.prototype.setRawRange = function(opt) { - var thisOption = this.option; - var settledOption = this.settledOption; - each17([["start", "startValue"], ["end", "endValue"]], function(names) { - if (opt[names[0]] != null || opt[names[1]] != null) { - thisOption[names[0]] = settledOption[names[0]] = opt[names[0]]; - thisOption[names[1]] = settledOption[names[1]] = opt[names[1]]; - } - }, this); - this._updateRangeUse(opt); - }; - DataZoomModel3.prototype.setCalculatedRange = function(opt) { - var option = this.option; - each17(["start", "startValue", "end", "endValue"], function(name) { - option[name] = opt[name]; - }); - }; - DataZoomModel3.prototype.getPercentRange = function() { - var axisProxy = this.findRepresentativeAxisProxy(); - if (axisProxy) { - return axisProxy.getDataPercentWindow(); - } - }; - DataZoomModel3.prototype.getValueRange = function(axisDim, axisIndex) { - if (axisDim == null && axisIndex == null) { - var axisProxy = this.findRepresentativeAxisProxy(); - if (axisProxy) { - return axisProxy.getDataValueWindow(); - } - } else { - return this.getAxisProxy(axisDim, axisIndex).getDataValueWindow(); - } - }; - DataZoomModel3.prototype.findRepresentativeAxisProxy = function(axisModel) { - if (axisModel) { - return axisModel.__dzAxisProxy; - } - var firstProxy; - var axisDimList = this._targetAxisInfoMap.keys(); - for (var i2 = 0; i2 < axisDimList.length; i2++) { - var axisDim = axisDimList[i2]; - var axisInfo = this._targetAxisInfoMap.get(axisDim); - for (var j = 0; j < axisInfo.indexList.length; j++) { - var proxy = this.getAxisProxy(axisDim, axisInfo.indexList[j]); - if (proxy.hostedBy(this)) { - return proxy; - } - if (!firstProxy) { - firstProxy = proxy; - } - } - } - return firstProxy; - }; - DataZoomModel3.prototype.getRangePropMode = function() { - return this._rangePropMode.slice(); - }; - DataZoomModel3.prototype.getOrient = function() { - if (true) { - assert2(this._orient); - } - return this._orient; - }; - DataZoomModel3.type = "dataZoom"; - DataZoomModel3.dependencies = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "series", "toolbox"]; - DataZoomModel3.defaultOption = { - // zlevel: 0, - z: 4, - filterMode: "filter", - start: 0, - end: 100 - }; - return DataZoomModel3; - }(ComponentModel2) - ); - function retrieveRawOption2(option) { - var ret = {}; - each17(["start", "end", "startValue", "endValue", "throttle"], function(name) { - option.hasOwnProperty(name) && (ret[name] = option[name]); - }); - return ret; - } - var SelectDataZoomModel2 = ( - /** @class */ - function(_super) { - __extends2(SelectDataZoomModel3, _super); - function SelectDataZoomModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SelectDataZoomModel3.type; - return _this; - } - SelectDataZoomModel3.type = "dataZoom.select"; - return SelectDataZoomModel3; - }(DataZoomModel2) - ); - var DataZoomView2 = ( - /** @class */ - function(_super) { - __extends2(DataZoomView3, _super); - function DataZoomView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = DataZoomView3.type; - return _this; - } - DataZoomView3.prototype.render = function(dataZoomModel, ecModel, api, payload) { - this.dataZoomModel = dataZoomModel; - this.ecModel = ecModel; - this.api = api; - }; - DataZoomView3.type = "dataZoom"; - return DataZoomView3; - }(ComponentView2) - ); - var SelectDataZoomView2 = ( - /** @class */ - function(_super) { - __extends2(SelectDataZoomView3, _super); - function SelectDataZoomView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SelectDataZoomView3.type; - return _this; - } - SelectDataZoomView3.type = "dataZoom.select"; - return SelectDataZoomView3; - }(DataZoomView2) - ); - var each$8 = each17; - var asc$1 = asc4; - var AxisProxy2 = ( - /** @class */ - function() { - function AxisProxy3(dimName, axisIndex, dataZoomModel, ecModel) { - this._dimName = dimName; - this._axisIndex = axisIndex; - this.ecModel = ecModel; - this._dataZoomModel = dataZoomModel; - } - AxisProxy3.prototype.hostedBy = function(dataZoomModel) { - return this._dataZoomModel === dataZoomModel; - }; - AxisProxy3.prototype.getDataValueWindow = function() { - return this._valueWindow.slice(); - }; - AxisProxy3.prototype.getDataPercentWindow = function() { - return this._percentWindow.slice(); - }; - AxisProxy3.prototype.getTargetSeriesModels = function() { - var seriesModels = []; - this.ecModel.eachSeries(function(seriesModel) { - if (isCoordSupported2(seriesModel)) { - var axisMainType = getAxisMainType2(this._dimName); - var axisModel = seriesModel.getReferringComponents(axisMainType, SINGLE_REFERRING2).models[0]; - if (axisModel && this._axisIndex === axisModel.componentIndex) { - seriesModels.push(seriesModel); - } - } - }, this); - return seriesModels; - }; - AxisProxy3.prototype.getAxisModel = function() { - return this.ecModel.getComponent(this._dimName + "Axis", this._axisIndex); - }; - AxisProxy3.prototype.getMinMaxSpan = function() { - return clone6(this._minMaxSpan); - }; - AxisProxy3.prototype.calculateDataWindow = function(opt) { - var dataExtent = this._dataExtent; - var axisModel = this.getAxisModel(); - var scale5 = axisModel.axis.scale; - var rangePropMode = this._dataZoomModel.getRangePropMode(); - var percentExtent = [0, 100]; - var percentWindow = []; - var valueWindow = []; - var hasPropModeValue; - each$8(["start", "end"], function(prop, idx) { - var boundPercent = opt[prop]; - var boundValue = opt[prop + "Value"]; - if (rangePropMode[idx] === "percent") { - boundPercent == null && (boundPercent = percentExtent[idx]); - boundValue = scale5.parse(linearMap4(boundPercent, percentExtent, dataExtent)); - } else { - hasPropModeValue = true; - boundValue = boundValue == null ? dataExtent[idx] : scale5.parse(boundValue); - boundPercent = linearMap4(boundValue, dataExtent, percentExtent); - } - valueWindow[idx] = boundValue == null || isNaN(boundValue) ? dataExtent[idx] : boundValue; - percentWindow[idx] = boundPercent == null || isNaN(boundPercent) ? percentExtent[idx] : boundPercent; - }); - asc$1(valueWindow); - asc$1(percentWindow); - var spans = this._minMaxSpan; - hasPropModeValue ? restrictSet(valueWindow, percentWindow, dataExtent, percentExtent, false) : restrictSet(percentWindow, valueWindow, percentExtent, dataExtent, true); - function restrictSet(fromWindow, toWindow, fromExtent, toExtent, toValue) { - var suffix = toValue ? "Span" : "ValueSpan"; - sliderMove2(0, fromWindow, fromExtent, "all", spans["min" + suffix], spans["max" + suffix]); - for (var i2 = 0; i2 < 2; i2++) { - toWindow[i2] = linearMap4(fromWindow[i2], fromExtent, toExtent, true); - toValue && (toWindow[i2] = scale5.parse(toWindow[i2])); - } - } - return { - valueWindow, - percentWindow - }; - }; - AxisProxy3.prototype.reset = function(dataZoomModel) { - if (dataZoomModel !== this._dataZoomModel) { - return; - } - var targetSeries = this.getTargetSeriesModels(); - this._dataExtent = calculateDataExtent2(this, this._dimName, targetSeries); - this._updateMinMaxSpan(); - var dataWindow = this.calculateDataWindow(dataZoomModel.settledOption); - this._valueWindow = dataWindow.valueWindow; - this._percentWindow = dataWindow.percentWindow; - this._setAxisModel(); - }; - AxisProxy3.prototype.filterData = function(dataZoomModel, api) { - if (dataZoomModel !== this._dataZoomModel) { - return; - } - var axisDim = this._dimName; - var seriesModels = this.getTargetSeriesModels(); - var filterMode = dataZoomModel.get("filterMode"); - var valueWindow = this._valueWindow; - if (filterMode === "none") { - return; - } - each$8(seriesModels, function(seriesModel) { - var seriesData = seriesModel.getData(); - var dataDims = seriesData.mapDimensionsAll(axisDim); - if (!dataDims.length) { - return; - } - if (filterMode === "weakFilter") { - var store_1 = seriesData.getStore(); - var dataDimIndices_1 = map3(dataDims, function(dim) { - return seriesData.getDimensionIndex(dim); - }, seriesData); - seriesData.filterSelf(function(dataIndex) { - var leftOut; - var rightOut; - var hasValue; - for (var i2 = 0; i2 < dataDims.length; i2++) { - var value = store_1.get(dataDimIndices_1[i2], dataIndex); - var thisHasValue = !isNaN(value); - var thisLeftOut = value < valueWindow[0]; - var thisRightOut = value > valueWindow[1]; - if (thisHasValue && !thisLeftOut && !thisRightOut) { - return true; - } - thisHasValue && (hasValue = true); - thisLeftOut && (leftOut = true); - thisRightOut && (rightOut = true); - } - return hasValue && leftOut && rightOut; - }); - } else { - each$8(dataDims, function(dim) { - if (filterMode === "empty") { - seriesModel.setData(seriesData = seriesData.map(dim, function(value) { - return !isInWindow(value) ? NaN : value; - })); - } else { - var range = {}; - range[dim] = valueWindow; - seriesData.selectRange(range); - } - }); - } - each$8(dataDims, function(dim) { - seriesData.setApproximateExtent(valueWindow, dim); - }); - }); - function isInWindow(value) { - return value >= valueWindow[0] && value <= valueWindow[1]; - } - }; - AxisProxy3.prototype._updateMinMaxSpan = function() { - var minMaxSpan = this._minMaxSpan = {}; - var dataZoomModel = this._dataZoomModel; - var dataExtent = this._dataExtent; - each$8(["min", "max"], function(minMax) { - var percentSpan = dataZoomModel.get(minMax + "Span"); - var valueSpan = dataZoomModel.get(minMax + "ValueSpan"); - valueSpan != null && (valueSpan = this.getAxisModel().axis.scale.parse(valueSpan)); - if (valueSpan != null) { - percentSpan = linearMap4(dataExtent[0] + valueSpan, dataExtent, [0, 100], true); - } else if (percentSpan != null) { - valueSpan = linearMap4(percentSpan, [0, 100], dataExtent, true) - dataExtent[0]; - } - minMaxSpan[minMax + "Span"] = percentSpan; - minMaxSpan[minMax + "ValueSpan"] = valueSpan; - }, this); - }; - AxisProxy3.prototype._setAxisModel = function() { - var axisModel = this.getAxisModel(); - var percentWindow = this._percentWindow; - var valueWindow = this._valueWindow; - if (!percentWindow) { - return; - } - var precision = getPixelPrecision2(valueWindow, [0, 500]); - precision = Math.min(precision, 20); - var rawExtentInfo = axisModel.axis.scale.rawExtentInfo; - if (percentWindow[0] !== 0) { - rawExtentInfo.setDeterminedMinMax("min", +valueWindow[0].toFixed(precision)); - } - if (percentWindow[1] !== 100) { - rawExtentInfo.setDeterminedMinMax("max", +valueWindow[1].toFixed(precision)); - } - rawExtentInfo.freeze(); - }; - return AxisProxy3; - }() - ); - function calculateDataExtent2(axisProxy, axisDim, seriesModels) { - var dataExtent = [Infinity, -Infinity]; - each$8(seriesModels, function(seriesModel) { - unionAxisExtentFromData2(dataExtent, seriesModel.getData(), axisDim); - }); - var axisModel = axisProxy.getAxisModel(); - var rawExtentResult = ensureScaleRawExtentInfo2(axisModel.axis.scale, axisModel, dataExtent).calculate(); - return [rawExtentResult.min, rawExtentResult.max]; - } - var dataZoomProcessor2 = { - // `dataZoomProcessor` will only be performed in needed series. Consider if - // there is a line series and a pie series, it is better not to update the - // line series if only pie series is needed to be updated. - getTargetSeries: function(ecModel) { - function eachAxisModel(cb) { - ecModel.eachComponent("dataZoom", function(dataZoomModel) { - dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { - var axisModel = ecModel.getComponent(getAxisMainType2(axisDim), axisIndex); - cb(axisDim, axisIndex, axisModel, dataZoomModel); - }); - }); - } - eachAxisModel(function(axisDim, axisIndex, axisModel, dataZoomModel) { - axisModel.__dzAxisProxy = null; - }); - var proxyList = []; - eachAxisModel(function(axisDim, axisIndex, axisModel, dataZoomModel) { - if (!axisModel.__dzAxisProxy) { - axisModel.__dzAxisProxy = new AxisProxy2(axisDim, axisIndex, dataZoomModel, ecModel); - proxyList.push(axisModel.__dzAxisProxy); - } - }); - var seriesModelMap = createHashMap2(); - each17(proxyList, function(axisProxy) { - each17(axisProxy.getTargetSeriesModels(), function(seriesModel) { - seriesModelMap.set(seriesModel.uid, seriesModel); - }); - }); - return seriesModelMap; - }, - // Consider appendData, where filter should be performed. Because data process is - // in block mode currently, it is not need to worry about that the overallProgress - // execute every frame. - overallReset: function(ecModel, api) { - ecModel.eachComponent("dataZoom", function(dataZoomModel) { - dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { - dataZoomModel.getAxisProxy(axisDim, axisIndex).reset(dataZoomModel); - }); - dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { - dataZoomModel.getAxisProxy(axisDim, axisIndex).filterData(dataZoomModel, api); - }); - }); - ecModel.eachComponent("dataZoom", function(dataZoomModel) { - var axisProxy = dataZoomModel.findRepresentativeAxisProxy(); - if (axisProxy) { - var percentRange = axisProxy.getDataPercentWindow(); - var valueRange = axisProxy.getDataValueWindow(); - dataZoomModel.setCalculatedRange({ - start: percentRange[0], - end: percentRange[1], - startValue: valueRange[0], - endValue: valueRange[1] - }); - } - }); - } - }; - function installDataZoomAction2(registers) { - registers.registerAction("dataZoom", function(payload, ecModel) { - var effectedModels = findEffectedDataZooms2(ecModel, payload); - each17(effectedModels, function(dataZoomModel) { - dataZoomModel.setRawRange({ - start: payload.start, - end: payload.end, - startValue: payload.startValue, - endValue: payload.endValue - }); - }); - }); - } - var installed3 = false; - function installCommon3(registers) { - if (installed3) { - return; - } - installed3 = true; - registers.registerProcessor(registers.PRIORITY.PROCESSOR.FILTER, dataZoomProcessor2); - installDataZoomAction2(registers); - registers.registerSubTypeDefaulter("dataZoom", function() { - return "slider"; - }); - } - function install$y(registers) { - registers.registerComponentModel(SelectDataZoomModel2); - registers.registerComponentView(SelectDataZoomView2); - installCommon3(registers); - } - var ToolboxFeature2 = ( - /** @class */ - /* @__PURE__ */ function() { - function ToolboxFeature3() { - } - return ToolboxFeature3; - }() - ); - var features2 = {}; - function registerFeature2(name, ctor) { - features2[name] = ctor; - } - function getFeature2(name) { - return features2[name]; - } - var ToolboxModel2 = ( - /** @class */ - function(_super) { - __extends2(ToolboxModel3, _super); - function ToolboxModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ToolboxModel3.type; - return _this; - } - ToolboxModel3.prototype.optionUpdated = function() { - _super.prototype.optionUpdated.apply(this, arguments); - var ecModel = this.ecModel; - each17(this.option.feature, function(featureOpt, featureName) { - var Feature = getFeature2(featureName); - if (Feature) { - if (Feature.getDefaultOption) { - Feature.defaultOption = Feature.getDefaultOption(ecModel); - } - merge2(featureOpt, Feature.defaultOption); - } - }); - }; - ToolboxModel3.type = "toolbox"; - ToolboxModel3.layoutMode = { - type: "box", - ignoreSize: true - }; - ToolboxModel3.defaultOption = { - show: true, - z: 6, - // zlevel: 0, - orient: "horizontal", - left: "right", - top: "top", - // right - // bottom - backgroundColor: "transparent", - borderColor: "#ccc", - borderRadius: 0, - borderWidth: 0, - padding: 5, - itemSize: 15, - itemGap: 8, - showTitle: true, - iconStyle: { - borderColor: "#666", - color: "none" - }, - emphasis: { - iconStyle: { - borderColor: "#3E98C5" - } - }, - // textStyle: {}, - // feature - tooltip: { - show: false, - position: "bottom" - } - }; - return ToolboxModel3; - }(ComponentModel2) - ); - function layout$3(group, componentModel, api) { - var boxLayoutParams = componentModel.getBoxLayoutParams(); - var padding = componentModel.get("padding"); - var viewportSize = { - width: api.getWidth(), - height: api.getHeight() - }; - var rect = getLayoutRect2(boxLayoutParams, viewportSize, padding); - box2(componentModel.get("orient"), group, componentModel.get("itemGap"), rect.width, rect.height); - positionElement2(group, boxLayoutParams, viewportSize, padding); - } - function makeBackground2(rect, componentModel) { - var padding = normalizeCssArray$1(componentModel.get("padding")); - var style = componentModel.getItemStyle(["color", "opacity"]); - style.fill = componentModel.get("backgroundColor"); - rect = new Rect4({ - shape: { - x: rect.x - padding[3], - y: rect.y - padding[0], - width: rect.width + padding[1] + padding[3], - height: rect.height + padding[0] + padding[2], - r: componentModel.get("borderRadius") - }, - style, - silent: true, - z2: -1 - }); - return rect; - } - var ToolboxView2 = ( - /** @class */ - function(_super) { - __extends2(ToolboxView3, _super); - function ToolboxView3() { - return _super !== null && _super.apply(this, arguments) || this; - } - ToolboxView3.prototype.render = function(toolboxModel, ecModel, api, payload) { - var group = this.group; - group.removeAll(); - if (!toolboxModel.get("show")) { - return; - } - var itemSize = +toolboxModel.get("itemSize"); - var isVertical = toolboxModel.get("orient") === "vertical"; - var featureOpts = toolboxModel.get("feature") || {}; - var features3 = this._features || (this._features = {}); - var featureNames = []; - each17(featureOpts, function(opt, name) { - featureNames.push(name); - }); - new DataDiffer2(this._featureNames || [], featureNames).add(processFeature).update(processFeature).remove(curry3(processFeature, null)).execute(); - this._featureNames = featureNames; - function processFeature(newIndex, oldIndex) { - var featureName = featureNames[newIndex]; - var oldName = featureNames[oldIndex]; - var featureOpt = featureOpts[featureName]; - var featureModel = new Model2(featureOpt, toolboxModel, toolboxModel.ecModel); - var feature; - if (payload && payload.newTitle != null && payload.featureName === featureName) { - featureOpt.title = payload.newTitle; - } - if (featureName && !oldName) { - if (isUserFeatureName2(featureName)) { - feature = { - onclick: featureModel.option.onclick, - featureName - }; - } else { - var Feature = getFeature2(featureName); - if (!Feature) { - return; - } - feature = new Feature(); - } - features3[featureName] = feature; - } else { - feature = features3[oldName]; - if (!feature) { - return; - } - } - feature.uid = getUID2("toolbox-feature"); - feature.model = featureModel; - feature.ecModel = ecModel; - feature.api = api; - var isToolboxFeature = feature instanceof ToolboxFeature2; - if (!featureName && oldName) { - isToolboxFeature && feature.dispose && feature.dispose(ecModel, api); - return; - } - if (!featureModel.get("show") || isToolboxFeature && feature.unusable) { - isToolboxFeature && feature.remove && feature.remove(ecModel, api); - return; - } - createIconPaths(featureModel, feature, featureName); - featureModel.setIconStatus = function(iconName, status) { - var option = this.option; - var iconPaths = this.iconPaths; - option.iconStatus = option.iconStatus || {}; - option.iconStatus[iconName] = status; - if (iconPaths[iconName]) { - (status === "emphasis" ? enterEmphasis2 : leaveEmphasis2)(iconPaths[iconName]); - } - }; - if (feature instanceof ToolboxFeature2) { - if (feature.render) { - feature.render(featureModel, ecModel, api, payload); - } - } - } - function createIconPaths(featureModel, feature, featureName) { - var iconStyleModel = featureModel.getModel("iconStyle"); - var iconStyleEmphasisModel = featureModel.getModel(["emphasis", "iconStyle"]); - var icons = feature instanceof ToolboxFeature2 && feature.getIcons ? feature.getIcons() : featureModel.get("icon"); - var titles = featureModel.get("title") || {}; - var iconsMap; - var titlesMap; - if (isString2(icons)) { - iconsMap = {}; - iconsMap[featureName] = icons; - } else { - iconsMap = icons; - } - if (isString2(titles)) { - titlesMap = {}; - titlesMap[featureName] = titles; - } else { - titlesMap = titles; - } - var iconPaths = featureModel.iconPaths = {}; - each17(iconsMap, function(iconStr, iconName) { - var path = createIcon2(iconStr, {}, { - x: -itemSize / 2, - y: -itemSize / 2, - width: itemSize, - height: itemSize - }); - path.setStyle(iconStyleModel.getItemStyle()); - var pathEmphasisState = path.ensureState("emphasis"); - pathEmphasisState.style = iconStyleEmphasisModel.getItemStyle(); - var textContent = new ZRText2({ - style: { - text: titlesMap[iconName], - align: iconStyleEmphasisModel.get("textAlign"), - borderRadius: iconStyleEmphasisModel.get("textBorderRadius"), - padding: iconStyleEmphasisModel.get("textPadding"), - fill: null, - font: getFont2({ - fontStyle: iconStyleEmphasisModel.get("textFontStyle"), - fontFamily: iconStyleEmphasisModel.get("textFontFamily"), - fontSize: iconStyleEmphasisModel.get("textFontSize"), - fontWeight: iconStyleEmphasisModel.get("textFontWeight") - }, ecModel) - }, - ignore: true - }); - path.setTextContent(textContent); - setTooltipConfig2({ - el: path, - componentModel: toolboxModel, - itemName: iconName, - formatterParamsExtra: { - title: titlesMap[iconName] - } - }); - path.__title = titlesMap[iconName]; - path.on("mouseover", function() { - var hoverStyle = iconStyleEmphasisModel.getItemStyle(); - var defaultTextPosition = isVertical ? toolboxModel.get("right") == null && toolboxModel.get("left") !== "right" ? "right" : "left" : toolboxModel.get("bottom") == null && toolboxModel.get("top") !== "bottom" ? "bottom" : "top"; - textContent.setStyle({ - fill: iconStyleEmphasisModel.get("textFill") || hoverStyle.fill || hoverStyle.stroke || "#000", - backgroundColor: iconStyleEmphasisModel.get("textBackgroundColor") - }); - path.setTextConfig({ - position: iconStyleEmphasisModel.get("textPosition") || defaultTextPosition - }); - textContent.ignore = !toolboxModel.get("showTitle"); - api.enterEmphasis(this); - }).on("mouseout", function() { - if (featureModel.get(["iconStatus", iconName]) !== "emphasis") { - api.leaveEmphasis(this); - } - textContent.hide(); - }); - (featureModel.get(["iconStatus", iconName]) === "emphasis" ? enterEmphasis2 : leaveEmphasis2)(path); - group.add(path); - path.on("click", bind3(feature.onclick, feature, ecModel, api, iconName)); - iconPaths[iconName] = path; - }); - } - layout$3(group, toolboxModel, api); - group.add(makeBackground2(group.getBoundingRect(), toolboxModel)); - isVertical || group.eachChild(function(icon) { - var titleText = icon.__title; - var emphasisState = icon.ensureState("emphasis"); - var emphasisTextConfig = emphasisState.textConfig || (emphasisState.textConfig = {}); - var textContent = icon.getTextContent(); - var emphasisTextState = textContent && textContent.ensureState("emphasis"); - if (emphasisTextState && !isFunction2(emphasisTextState) && titleText) { - var emphasisTextStyle = emphasisTextState.style || (emphasisTextState.style = {}); - var rect = getBoundingRect2(titleText, ZRText2.makeFont(emphasisTextStyle)); - var offsetX = icon.x + group.x; - var offsetY = icon.y + group.y + itemSize; - var needPutOnTop = false; - if (offsetY + rect.height > api.getHeight()) { - emphasisTextConfig.position = "top"; - needPutOnTop = true; - } - var topOffset = needPutOnTop ? -5 - rect.height : itemSize + 10; - if (offsetX + rect.width / 2 > api.getWidth()) { - emphasisTextConfig.position = ["100%", topOffset]; - emphasisTextStyle.align = "right"; - } else if (offsetX - rect.width / 2 < 0) { - emphasisTextConfig.position = [0, topOffset]; - emphasisTextStyle.align = "left"; - } - } - }); - }; - ToolboxView3.prototype.updateView = function(toolboxModel, ecModel, api, payload) { - each17(this._features, function(feature) { - feature instanceof ToolboxFeature2 && feature.updateView && feature.updateView(feature.model, ecModel, api, payload); - }); - }; - ToolboxView3.prototype.remove = function(ecModel, api) { - each17(this._features, function(feature) { - feature instanceof ToolboxFeature2 && feature.remove && feature.remove(ecModel, api); - }); - this.group.removeAll(); - }; - ToolboxView3.prototype.dispose = function(ecModel, api) { - each17(this._features, function(feature) { - feature instanceof ToolboxFeature2 && feature.dispose && feature.dispose(ecModel, api); - }); - }; - ToolboxView3.type = "toolbox"; - return ToolboxView3; - }(ComponentView2) - ); - function isUserFeatureName2(featureName) { - return featureName.indexOf("my") === 0; - } - var SaveAsImage2 = ( - /** @class */ - function(_super) { - __extends2(SaveAsImage3, _super); - function SaveAsImage3() { - return _super !== null && _super.apply(this, arguments) || this; - } - SaveAsImage3.prototype.onclick = function(ecModel, api) { - var model = this.model; - var title = model.get("name") || ecModel.get("title.0.text") || "echarts"; - var isSvg = api.getZr().painter.getType() === "svg"; - var type = isSvg ? "svg" : model.get("type", true) || "png"; - var url = api.getConnectedDataURL({ - type, - backgroundColor: model.get("backgroundColor", true) || ecModel.get("backgroundColor") || "#fff", - connectedBackgroundColor: model.get("connectedBackgroundColor"), - excludeComponents: model.get("excludeComponents"), - pixelRatio: model.get("pixelRatio") - }); - var browser = env2.browser; - if (typeof MouseEvent === "function" && (browser.newEdge || !browser.ie && !browser.edge)) { - var $a = document.createElement("a"); - $a.download = title + "." + type; - $a.target = "_blank"; - $a.href = url; - var evt = new MouseEvent("click", { - // some micro front-end framework, window maybe is a Proxy - view: document.defaultView, - bubbles: true, - cancelable: false - }); - $a.dispatchEvent(evt); - } else { - if (window.navigator.msSaveOrOpenBlob || isSvg) { - var parts = url.split(","); - var base64Encoded = parts[0].indexOf("base64") > -1; - var bstr = isSvg ? decodeURIComponent(parts[1]) : parts[1]; - base64Encoded && (bstr = window.atob(bstr)); - var filename = title + "." + type; - if (window.navigator.msSaveOrOpenBlob) { - var n = bstr.length; - var u8arr = new Uint8Array(n); - while (n--) { - u8arr[n] = bstr.charCodeAt(n); - } - var blob = new Blob([u8arr]); - window.navigator.msSaveOrOpenBlob(blob, filename); - } else { - var frame = document.createElement("iframe"); - document.body.appendChild(frame); - var cw = frame.contentWindow; - var doc = cw.document; - doc.open("image/svg+xml", "replace"); - doc.write(bstr); - doc.close(); - cw.focus(); - doc.execCommand("SaveAs", true, filename); - document.body.removeChild(frame); - } - } else { - var lang = model.get("lang"); - var html = ''; - var tab = window.open(); - tab.document.write(html); - tab.document.title = title; - } - } - }; - SaveAsImage3.getDefaultOption = function(ecModel) { - var defaultOption4 = { - show: true, - icon: "M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0", - title: ecModel.getLocaleModel().get(["toolbox", "saveAsImage", "title"]), - type: "png", - // Default use option.backgroundColor - // backgroundColor: '#fff', - connectedBackgroundColor: "#fff", - name: "", - excludeComponents: ["toolbox"], - // use current pixel ratio of device by default - // pixelRatio: 1, - lang: ecModel.getLocaleModel().get(["toolbox", "saveAsImage", "lang"]) - }; - return defaultOption4; - }; - return SaveAsImage3; - }(ToolboxFeature2) - ); - var INNER_STACK_KEYWORD2 = "__ec_magicType_stack__"; - var radioTypes2 = [["line", "bar"], ["stack"]]; - var MagicType2 = ( - /** @class */ - function(_super) { - __extends2(MagicType3, _super); - function MagicType3() { - return _super !== null && _super.apply(this, arguments) || this; - } - MagicType3.prototype.getIcons = function() { - var model = this.model; - var availableIcons = model.get("icon"); - var icons = {}; - each17(model.get("type"), function(type) { - if (availableIcons[type]) { - icons[type] = availableIcons[type]; - } - }); - return icons; - }; - MagicType3.getDefaultOption = function(ecModel) { - var defaultOption4 = { - show: true, - type: [], - // Icon group - icon: { - line: "M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4", - bar: "M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7", - // eslint-disable-next-line - stack: "M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z" - // jshint ignore:line - }, - // `line`, `bar`, `stack`, `tiled` - title: ecModel.getLocaleModel().get(["toolbox", "magicType", "title"]), - option: {}, - seriesIndex: {} - }; - return defaultOption4; - }; - MagicType3.prototype.onclick = function(ecModel, api, type) { - var model = this.model; - var seriesIndex = model.get(["seriesIndex", type]); - if (!seriesOptGenreator2[type]) { - return; - } - var newOption = { - series: [] - }; - var generateNewSeriesTypes = function(seriesModel) { - var seriesType3 = seriesModel.subType; - var seriesId = seriesModel.id; - var newSeriesOpt = seriesOptGenreator2[type](seriesType3, seriesId, seriesModel, model); - if (newSeriesOpt) { - defaults2(newSeriesOpt, seriesModel.option); - newOption.series.push(newSeriesOpt); - } - var coordSys = seriesModel.coordinateSystem; - if (coordSys && coordSys.type === "cartesian2d" && (type === "line" || type === "bar")) { - var categoryAxis3 = coordSys.getAxesByScale("ordinal")[0]; - if (categoryAxis3) { - var axisDim = categoryAxis3.dim; - var axisType = axisDim + "Axis"; - var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING2).models[0]; - var axisIndex = axisModel.componentIndex; - newOption[axisType] = newOption[axisType] || []; - for (var i2 = 0; i2 <= axisIndex; i2++) { - newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {}; - } - newOption[axisType][axisIndex].boundaryGap = type === "bar"; - } - } - }; - each17(radioTypes2, function(radio) { - if (indexOf2(radio, type) >= 0) { - each17(radio, function(item) { - model.setIconStatus(item, "normal"); - }); - } - }); - model.setIconStatus(type, "emphasis"); - ecModel.eachComponent({ - mainType: "series", - query: seriesIndex == null ? null : { - seriesIndex - } - }, generateNewSeriesTypes); - var newTitle; - var currentType = type; - if (type === "stack") { - newTitle = merge2({ - stack: model.option.title.tiled, - tiled: model.option.title.stack - }, model.option.title); - if (model.get(["iconStatus", type]) !== "emphasis") { - currentType = "tiled"; - } - } - api.dispatchAction({ - type: "changeMagicType", - currentType, - newOption, - newTitle, - featureName: "magicType" - }); - }; - return MagicType3; - }(ToolboxFeature2) - ); - var seriesOptGenreator2 = { - "line": function(seriesType3, seriesId, seriesModel, model) { - if (seriesType3 === "bar") { - return merge2({ - id: seriesId, - type: "line", - // Preserve data related option - data: seriesModel.get("data"), - stack: seriesModel.get("stack"), - markPoint: seriesModel.get("markPoint"), - markLine: seriesModel.get("markLine") - }, model.get(["option", "line"]) || {}, true); - } - }, - "bar": function(seriesType3, seriesId, seriesModel, model) { - if (seriesType3 === "line") { - return merge2({ - id: seriesId, - type: "bar", - // Preserve data related option - data: seriesModel.get("data"), - stack: seriesModel.get("stack"), - markPoint: seriesModel.get("markPoint"), - markLine: seriesModel.get("markLine") - }, model.get(["option", "bar"]) || {}, true); - } - }, - "stack": function(seriesType3, seriesId, seriesModel, model) { - var isStack = seriesModel.get("stack") === INNER_STACK_KEYWORD2; - if (seriesType3 === "line" || seriesType3 === "bar") { - model.setIconStatus("stack", isStack ? "normal" : "emphasis"); - return merge2({ - id: seriesId, - stack: isStack ? "" : INNER_STACK_KEYWORD2 - }, model.get(["option", "stack"]) || {}, true); - } - } - }; - registerAction2({ - type: "changeMagicType", - event: "magicTypeChanged", - update: "prepareAndUpdate" - }, function(payload, ecModel) { - ecModel.mergeOption(payload.newOption); - }); - var BLOCK_SPLITER2 = new Array(60).join("-"); - var ITEM_SPLITER2 = " "; - function groupSeries2(ecModel) { - var seriesGroupByCategoryAxis = {}; - var otherSeries = []; - var meta = []; - ecModel.eachRawSeries(function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - if (coordSys && (coordSys.type === "cartesian2d" || coordSys.type === "polar")) { - var baseAxis = coordSys.getBaseAxis(); - if (baseAxis.type === "category") { - var key = baseAxis.dim + "_" + baseAxis.index; - if (!seriesGroupByCategoryAxis[key]) { - seriesGroupByCategoryAxis[key] = { - categoryAxis: baseAxis, - valueAxis: coordSys.getOtherAxis(baseAxis), - series: [] - }; - meta.push({ - axisDim: baseAxis.dim, - axisIndex: baseAxis.index - }); - } - seriesGroupByCategoryAxis[key].series.push(seriesModel); - } else { - otherSeries.push(seriesModel); - } - } else { - otherSeries.push(seriesModel); - } - }); - return { - seriesGroupByCategoryAxis, - other: otherSeries, - meta - }; - } - function assembleSeriesWithCategoryAxis2(groups) { - var tables = []; - each17(groups, function(group, key) { - var categoryAxis3 = group.categoryAxis; - var valueAxis3 = group.valueAxis; - var valueAxisDim = valueAxis3.dim; - var headers = [" "].concat(map3(group.series, function(series) { - return series.name; - })); - var columns = [categoryAxis3.model.getCategories()]; - each17(group.series, function(series) { - var rawData = series.getRawData(); - columns.push(series.getRawData().mapArray(rawData.mapDimension(valueAxisDim), function(val) { - return val; - })); - }); - var lines = [headers.join(ITEM_SPLITER2)]; - for (var i2 = 0; i2 < columns[0].length; i2++) { - var items = []; - for (var j = 0; j < columns.length; j++) { - items.push(columns[j][i2]); - } - lines.push(items.join(ITEM_SPLITER2)); - } - tables.push(lines.join("\n")); - }); - return tables.join("\n\n" + BLOCK_SPLITER2 + "\n\n"); - } - function assembleOtherSeries2(series) { - return map3(series, function(series2) { - var data = series2.getRawData(); - var lines = [series2.name]; - var vals = []; - data.each(data.dimensions, function() { - var argLen = arguments.length; - var dataIndex = arguments[argLen - 1]; - var name = data.getName(dataIndex); - for (var i2 = 0; i2 < argLen - 1; i2++) { - vals[i2] = arguments[i2]; - } - lines.push((name ? name + ITEM_SPLITER2 : "") + vals.join(ITEM_SPLITER2)); - }); - return lines.join("\n"); - }).join("\n\n" + BLOCK_SPLITER2 + "\n\n"); - } - function getContentFromModel2(ecModel) { - var result = groupSeries2(ecModel); - return { - value: filter2([assembleSeriesWithCategoryAxis2(result.seriesGroupByCategoryAxis), assembleOtherSeries2(result.other)], function(str) { - return !!str.replace(/[\n\t\s]/g, ""); - }).join("\n\n" + BLOCK_SPLITER2 + "\n\n"), - meta: result.meta - }; - } - function trim$1(str) { - return str.replace(/^\s\s*/, "").replace(/\s\s*$/, ""); - } - function isTSVFormat2(block) { - var firstLine = block.slice(0, block.indexOf("\n")); - if (firstLine.indexOf(ITEM_SPLITER2) >= 0) { - return true; - } - } - var itemSplitRegex2 = new RegExp("[" + ITEM_SPLITER2 + "]+", "g"); - function parseTSVContents2(tsv) { - var tsvLines = tsv.split(/\n+/g); - var headers = trim$1(tsvLines.shift()).split(itemSplitRegex2); - var categories = []; - var series = map3(headers, function(header) { - return { - name: header, - data: [] - }; - }); - for (var i2 = 0; i2 < tsvLines.length; i2++) { - var items = trim$1(tsvLines[i2]).split(itemSplitRegex2); - categories.push(items.shift()); - for (var j = 0; j < items.length; j++) { - series[j] && (series[j].data[i2] = items[j]); - } - } - return { - series, - categories - }; - } - function parseListContents2(str) { - var lines = str.split(/\n+/g); - var seriesName = trim$1(lines.shift()); - var data = []; - for (var i2 = 0; i2 < lines.length; i2++) { - var line = trim$1(lines[i2]); - if (!line) { - continue; - } - var items = line.split(itemSplitRegex2); - var name_1 = ""; - var value = void 0; - var hasName = false; - if (isNaN(items[0])) { - hasName = true; - name_1 = items[0]; - items = items.slice(1); - data[i2] = { - name: name_1, - value: [] - }; - value = data[i2].value; - } else { - value = data[i2] = []; - } - for (var j = 0; j < items.length; j++) { - value.push(+items[j]); - } - if (value.length === 1) { - hasName ? data[i2].value = value[0] : data[i2] = value[0]; - } - } - return { - name: seriesName, - data - }; - } - function parseContents2(str, blockMetaList) { - var blocks = str.split(new RegExp("\n*" + BLOCK_SPLITER2 + "\n*", "g")); - var newOption = { - series: [] - }; - each17(blocks, function(block, idx) { - if (isTSVFormat2(block)) { - var result = parseTSVContents2(block); - var blockMeta = blockMetaList[idx]; - var axisKey = blockMeta.axisDim + "Axis"; - if (blockMeta) { - newOption[axisKey] = newOption[axisKey] || []; - newOption[axisKey][blockMeta.axisIndex] = { - data: result.categories - }; - newOption.series = newOption.series.concat(result.series); - } - } else { - var result = parseListContents2(block); - newOption.series.push(result); - } - }); - return newOption; - } - var DataView2 = ( - /** @class */ - function(_super) { - __extends2(DataView3, _super); - function DataView3() { - return _super !== null && _super.apply(this, arguments) || this; - } - DataView3.prototype.onclick = function(ecModel, api) { - setTimeout(function() { - api.dispatchAction({ - type: "hideTip" - }); - }); - var container = api.getDom(); - var model = this.model; - if (this._dom) { - container.removeChild(this._dom); - } - var root = document.createElement("div"); - root.style.cssText = "position:absolute;top:0;bottom:0;left:0;right:0;padding:5px"; - root.style.backgroundColor = model.get("backgroundColor") || "#fff"; - var header = document.createElement("h4"); - var lang = model.get("lang") || []; - header.innerHTML = lang[0] || model.get("title"); - header.style.cssText = "margin:10px 20px"; - header.style.color = model.get("textColor"); - var viewMain = document.createElement("div"); - var textarea = document.createElement("textarea"); - viewMain.style.cssText = "overflow:auto"; - var optionToContent = model.get("optionToContent"); - var contentToOption = model.get("contentToOption"); - var result = getContentFromModel2(ecModel); - if (isFunction2(optionToContent)) { - var htmlOrDom = optionToContent(api.getOption()); - if (isString2(htmlOrDom)) { - viewMain.innerHTML = htmlOrDom; - } else if (isDom2(htmlOrDom)) { - viewMain.appendChild(htmlOrDom); - } - } else { - textarea.readOnly = model.get("readOnly"); - var style = textarea.style; - style.cssText = "display:block;width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;resize:none;box-sizing:border-box;outline:none"; - style.color = model.get("textColor"); - style.borderColor = model.get("textareaBorderColor"); - style.backgroundColor = model.get("textareaColor"); - textarea.value = result.value; - viewMain.appendChild(textarea); - } - var blockMetaList = result.meta; - var buttonContainer = document.createElement("div"); - buttonContainer.style.cssText = "position:absolute;bottom:5px;left:0;right:0"; - var buttonStyle = "float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px"; - var closeButton = document.createElement("div"); - var refreshButton = document.createElement("div"); - buttonStyle += ";background-color:" + model.get("buttonColor"); - buttonStyle += ";color:" + model.get("buttonTextColor"); - var self2 = this; - function close() { - container.removeChild(root); - self2._dom = null; - } - addEventListener3(closeButton, "click", close); - addEventListener3(refreshButton, "click", function() { - if (contentToOption == null && optionToContent != null || contentToOption != null && optionToContent == null) { - if (true) { - warn2("It seems you have just provided one of `contentToOption` and `optionToContent` functions but missed the other one. Data change is ignored."); - } - close(); - return; - } - var newOption; - try { - if (isFunction2(contentToOption)) { - newOption = contentToOption(viewMain, api.getOption()); - } else { - newOption = parseContents2(textarea.value, blockMetaList); - } - } catch (e3) { - close(); - throw new Error("Data view format error " + e3); - } - if (newOption) { - api.dispatchAction({ - type: "changeDataView", - newOption - }); - } - close(); - }); - closeButton.innerHTML = lang[1]; - refreshButton.innerHTML = lang[2]; - refreshButton.style.cssText = closeButton.style.cssText = buttonStyle; - !model.get("readOnly") && buttonContainer.appendChild(refreshButton); - buttonContainer.appendChild(closeButton); - root.appendChild(header); - root.appendChild(viewMain); - root.appendChild(buttonContainer); - viewMain.style.height = container.clientHeight - 80 + "px"; - container.appendChild(root); - this._dom = root; - }; - DataView3.prototype.remove = function(ecModel, api) { - this._dom && api.getDom().removeChild(this._dom); - }; - DataView3.prototype.dispose = function(ecModel, api) { - this.remove(ecModel, api); - }; - DataView3.getDefaultOption = function(ecModel) { - var defaultOption4 = { - show: true, - readOnly: false, - optionToContent: null, - contentToOption: null, - // eslint-disable-next-line - icon: "M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28", - title: ecModel.getLocaleModel().get(["toolbox", "dataView", "title"]), - lang: ecModel.getLocaleModel().get(["toolbox", "dataView", "lang"]), - backgroundColor: "#fff", - textColor: "#000", - textareaColor: "#fff", - textareaBorderColor: "#333", - buttonColor: "#c23531", - buttonTextColor: "#fff" - }; - return defaultOption4; - }; - return DataView3; - }(ToolboxFeature2) - ); - function tryMergeDataOption2(newData, originalData) { - return map3(newData, function(newVal, idx) { - var original = originalData && originalData[idx]; - if (isObject5(original) && !isArray3(original)) { - var newValIsObject = isObject5(newVal) && !isArray3(newVal); - if (!newValIsObject) { - newVal = { - value: newVal - }; - } - var shouldDeleteName = original.name != null && newVal.name == null; - newVal = defaults2(newVal, original); - shouldDeleteName && delete newVal.name; - return newVal; - } else { - return newVal; - } - }); - } - registerAction2({ - type: "changeDataView", - event: "dataViewChanged", - update: "prepareAndUpdate" - }, function(payload, ecModel) { - var newSeriesOptList = []; - each17(payload.newOption.series, function(seriesOpt) { - var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0]; - if (!seriesModel) { - newSeriesOptList.push(extend3({ - // Default is scatter - type: "scatter" - }, seriesOpt)); - } else { - var originalData = seriesModel.get("data"); - newSeriesOptList.push({ - name: seriesOpt.name, - data: tryMergeDataOption2(seriesOpt.data, originalData) - }); - } - }); - ecModel.mergeOption(defaults2({ - series: newSeriesOptList - }, payload.newOption)); - }); - var each$9 = each17; - var inner$f = makeInner2(); - function push2(ecModel, newSnapshot) { - var storedSnapshots = getStoreSnapshots2(ecModel); - each$9(newSnapshot, function(batchItem, dataZoomId) { - var i2 = storedSnapshots.length - 1; - for (; i2 >= 0; i2--) { - var snapshot = storedSnapshots[i2]; - if (snapshot[dataZoomId]) { - break; - } - } - if (i2 < 0) { - var dataZoomModel = ecModel.queryComponents({ - mainType: "dataZoom", - subType: "select", - id: dataZoomId - })[0]; - if (dataZoomModel) { - var percentRange = dataZoomModel.getPercentRange(); - storedSnapshots[0][dataZoomId] = { - dataZoomId, - start: percentRange[0], - end: percentRange[1] - }; - } - } - }); - storedSnapshots.push(newSnapshot); - } - function pop2(ecModel) { - var storedSnapshots = getStoreSnapshots2(ecModel); - var head = storedSnapshots[storedSnapshots.length - 1]; - storedSnapshots.length > 1 && storedSnapshots.pop(); - var snapshot = {}; - each$9(head, function(batchItem, dataZoomId) { - for (var i2 = storedSnapshots.length - 1; i2 >= 0; i2--) { - batchItem = storedSnapshots[i2][dataZoomId]; - if (batchItem) { - snapshot[dataZoomId] = batchItem; - break; - } - } - }); - return snapshot; - } - function clear$1(ecModel) { - inner$f(ecModel).snapshots = null; - } - function count2(ecModel) { - return getStoreSnapshots2(ecModel).length; - } - function getStoreSnapshots2(ecModel) { - var store = inner$f(ecModel); - if (!store.snapshots) { - store.snapshots = [{}]; - } - return store.snapshots; - } - var RestoreOption2 = ( - /** @class */ - function(_super) { - __extends2(RestoreOption3, _super); - function RestoreOption3() { - return _super !== null && _super.apply(this, arguments) || this; - } - RestoreOption3.prototype.onclick = function(ecModel, api) { - clear$1(ecModel); - api.dispatchAction({ - type: "restore", - from: this.uid - }); - }; - RestoreOption3.getDefaultOption = function(ecModel) { - var defaultOption4 = { - show: true, - // eslint-disable-next-line - icon: "M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5", - title: ecModel.getLocaleModel().get(["toolbox", "restore", "title"]) - }; - return defaultOption4; - }; - return RestoreOption3; - }(ToolboxFeature2) - ); - registerAction2({ - type: "restore", - event: "restore", - update: "prepareAndUpdate" - }, function(payload, ecModel) { - ecModel.resetOption("recreate"); - }); - var INCLUDE_FINDER_MAIN_TYPES2 = ["grid", "xAxis", "yAxis", "geo", "graph", "polar", "radiusAxis", "angleAxis", "bmap"]; - var BrushTargetManager2 = ( - /** @class */ - function() { - function BrushTargetManager3(finder, ecModel, opt) { - var _this = this; - this._targetInfoList = []; - var foundCpts = parseFinder$1(ecModel, finder); - each17(targetInfoBuilders2, function(builder, type) { - if (!opt || !opt.include || indexOf2(opt.include, type) >= 0) { - builder(foundCpts, _this._targetInfoList); - } - }); - } - BrushTargetManager3.prototype.setOutputRanges = function(areas, ecModel) { - this.matchOutputRanges(areas, ecModel, function(area, coordRange, coordSys) { - (area.coordRanges || (area.coordRanges = [])).push(coordRange); - if (!area.coordRange) { - area.coordRange = coordRange; - var result = coordConvert2[area.brushType](0, coordSys, coordRange); - area.__rangeOffset = { - offset: diffProcessor2[area.brushType](result.values, area.range, [1, 1]), - xyMinMax: result.xyMinMax - }; - } - }); - return areas; - }; - BrushTargetManager3.prototype.matchOutputRanges = function(areas, ecModel, cb) { - each17(areas, function(area) { - var targetInfo = this.findTargetInfo(area, ecModel); - if (targetInfo && targetInfo !== true) { - each17(targetInfo.coordSyses, function(coordSys) { - var result = coordConvert2[area.brushType](1, coordSys, area.range, true); - cb(area, result.values, coordSys, ecModel); - }); - } - }, this); - }; - BrushTargetManager3.prototype.setInputRanges = function(areas, ecModel) { - each17(areas, function(area) { - var targetInfo = this.findTargetInfo(area, ecModel); - if (true) { - assert2(!targetInfo || targetInfo === true || area.coordRange, "coordRange must be specified when coord index specified."); - assert2(!targetInfo || targetInfo !== true || area.range, "range must be specified in global brush."); - } - area.range = area.range || []; - if (targetInfo && targetInfo !== true) { - area.panelId = targetInfo.panelId; - var result = coordConvert2[area.brushType](0, targetInfo.coordSys, area.coordRange); - var rangeOffset = area.__rangeOffset; - area.range = rangeOffset ? diffProcessor2[area.brushType](result.values, rangeOffset.offset, getScales2(result.xyMinMax, rangeOffset.xyMinMax)) : result.values; - } - }, this); - }; - BrushTargetManager3.prototype.makePanelOpts = function(api, getDefaultBrushType) { - return map3(this._targetInfoList, function(targetInfo) { - var rect = targetInfo.getPanelRect(); - return { - panelId: targetInfo.panelId, - defaultBrushType: getDefaultBrushType ? getDefaultBrushType(targetInfo) : null, - clipPath: makeRectPanelClipPath2(rect), - isTargetByCursor: makeRectIsTargetByCursor2(rect, api, targetInfo.coordSysModel), - getLinearBrushOtherExtent: makeLinearBrushOtherExtent2(rect) - }; - }); - }; - BrushTargetManager3.prototype.controlSeries = function(area, seriesModel, ecModel) { - var targetInfo = this.findTargetInfo(area, ecModel); - return targetInfo === true || targetInfo && indexOf2(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0; - }; - BrushTargetManager3.prototype.findTargetInfo = function(area, ecModel) { - var targetInfoList = this._targetInfoList; - var foundCpts = parseFinder$1(ecModel, area); - for (var i2 = 0; i2 < targetInfoList.length; i2++) { - var targetInfo = targetInfoList[i2]; - var areaPanelId = area.panelId; - if (areaPanelId) { - if (targetInfo.panelId === areaPanelId) { - return targetInfo; - } - } else { - for (var j = 0; j < targetInfoMatchers2.length; j++) { - if (targetInfoMatchers2[j](foundCpts, targetInfo)) { - return targetInfo; - } - } - } - } - return true; - }; - return BrushTargetManager3; - }() - ); - function formatMinMax2(minMax) { - minMax[0] > minMax[1] && minMax.reverse(); - return minMax; - } - function parseFinder$1(ecModel, finder) { - return parseFinder3(ecModel, finder, { - includeMainTypes: INCLUDE_FINDER_MAIN_TYPES2 - }); - } - var targetInfoBuilders2 = { - grid: function(foundCpts, targetInfoList) { - var xAxisModels = foundCpts.xAxisModels; - var yAxisModels = foundCpts.yAxisModels; - var gridModels = foundCpts.gridModels; - var gridModelMap = createHashMap2(); - var xAxesHas = {}; - var yAxesHas = {}; - if (!xAxisModels && !yAxisModels && !gridModels) { - return; - } - each17(xAxisModels, function(axisModel) { - var gridModel = axisModel.axis.grid.model; - gridModelMap.set(gridModel.id, gridModel); - xAxesHas[gridModel.id] = true; - }); - each17(yAxisModels, function(axisModel) { - var gridModel = axisModel.axis.grid.model; - gridModelMap.set(gridModel.id, gridModel); - yAxesHas[gridModel.id] = true; - }); - each17(gridModels, function(gridModel) { - gridModelMap.set(gridModel.id, gridModel); - xAxesHas[gridModel.id] = true; - yAxesHas[gridModel.id] = true; - }); - gridModelMap.each(function(gridModel) { - var grid = gridModel.coordinateSystem; - var cartesians = []; - each17(grid.getCartesians(), function(cartesian, index) { - if (indexOf2(xAxisModels, cartesian.getAxis("x").model) >= 0 || indexOf2(yAxisModels, cartesian.getAxis("y").model) >= 0) { - cartesians.push(cartesian); - } - }); - targetInfoList.push({ - panelId: "grid--" + gridModel.id, - gridModel, - coordSysModel: gridModel, - // Use the first one as the representitive coordSys. - coordSys: cartesians[0], - coordSyses: cartesians, - getPanelRect: panelRectBuilders2.grid, - xAxisDeclared: xAxesHas[gridModel.id], - yAxisDeclared: yAxesHas[gridModel.id] - }); - }); - }, - geo: function(foundCpts, targetInfoList) { - each17(foundCpts.geoModels, function(geoModel) { - var coordSys = geoModel.coordinateSystem; - targetInfoList.push({ - panelId: "geo--" + geoModel.id, - geoModel, - coordSysModel: geoModel, - coordSys, - coordSyses: [coordSys], - getPanelRect: panelRectBuilders2.geo - }); - }); - } - }; - var targetInfoMatchers2 = [ - // grid - function(foundCpts, targetInfo) { - var xAxisModel = foundCpts.xAxisModel; - var yAxisModel = foundCpts.yAxisModel; - var gridModel = foundCpts.gridModel; - !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model); - !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model); - return gridModel && gridModel === targetInfo.gridModel; - }, - // geo - function(foundCpts, targetInfo) { - var geoModel = foundCpts.geoModel; - return geoModel && geoModel === targetInfo.geoModel; - } - ]; - var panelRectBuilders2 = { - grid: function() { - return this.coordSys.master.getRect().clone(); - }, - geo: function() { - var coordSys = this.coordSys; - var rect = coordSys.getBoundingRect().clone(); - rect.applyTransform(getTransform3(coordSys)); - return rect; - } - }; - var coordConvert2 = { - lineX: curry3(axisConvert2, 0), - lineY: curry3(axisConvert2, 1), - rect: function(to, coordSys, rangeOrCoordRange, clamp4) { - var xminymin = to ? coordSys.pointToData([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]], clamp4) : coordSys.dataToPoint([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]], clamp4); - var xmaxymax = to ? coordSys.pointToData([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]], clamp4) : coordSys.dataToPoint([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]], clamp4); - var values = [formatMinMax2([xminymin[0], xmaxymax[0]]), formatMinMax2([xminymin[1], xmaxymax[1]])]; - return { - values, - xyMinMax: values - }; - }, - polygon: function(to, coordSys, rangeOrCoordRange, clamp4) { - var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]]; - var values = map3(rangeOrCoordRange, function(item) { - var p = to ? coordSys.pointToData(item, clamp4) : coordSys.dataToPoint(item, clamp4); - xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]); - xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]); - xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]); - xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]); - return p; - }); - return { - values, - xyMinMax - }; - } - }; - function axisConvert2(axisNameIndex, to, coordSys, rangeOrCoordRange) { - if (true) { - assert2(coordSys.type === "cartesian2d", "lineX/lineY brush is available only in cartesian2d."); - } - var axis = coordSys.getAxis(["x", "y"][axisNameIndex]); - var values = formatMinMax2(map3([0, 1], function(i2) { - return to ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i2]), true) : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i2])); - })); - var xyMinMax = []; - xyMinMax[axisNameIndex] = values; - xyMinMax[1 - axisNameIndex] = [NaN, NaN]; - return { - values, - xyMinMax - }; - } - var diffProcessor2 = { - lineX: curry3(axisDiffProcessor2, 0), - lineY: curry3(axisDiffProcessor2, 1), - rect: function(values, refer, scales) { - return [[values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]], [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]]; - }, - polygon: function(values, refer, scales) { - return map3(values, function(item, idx) { - return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]]; - }); - } - }; - function axisDiffProcessor2(axisNameIndex, values, refer, scales) { - return [values[0] - scales[axisNameIndex] * refer[0], values[1] - scales[axisNameIndex] * refer[1]]; - } - function getScales2(xyMinMaxCurr, xyMinMaxOrigin) { - var sizeCurr = getSize$1(xyMinMaxCurr); - var sizeOrigin = getSize$1(xyMinMaxOrigin); - var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]]; - isNaN(scales[0]) && (scales[0] = 1); - isNaN(scales[1]) && (scales[1] = 1); - return scales; - } - function getSize$1(xyMinMax) { - return xyMinMax ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]] : [NaN, NaN]; - } - var each$a = each17; - var DATA_ZOOM_ID_BASE2 = makeInternalComponentId2("toolbox-dataZoom_"); - var DataZoomFeature2 = ( - /** @class */ - function(_super) { - __extends2(DataZoomFeature3, _super); - function DataZoomFeature3() { - return _super !== null && _super.apply(this, arguments) || this; - } - DataZoomFeature3.prototype.render = function(featureModel, ecModel, api, payload) { - if (!this._brushController) { - this._brushController = new BrushController2(api.getZr()); - this._brushController.on("brush", bind3(this._onBrush, this)).mount(); - } - updateZoomBtnStatus2(featureModel, ecModel, this, payload, api); - updateBackBtnStatus2(featureModel, ecModel); - }; - DataZoomFeature3.prototype.onclick = function(ecModel, api, type) { - handlers$1[type].call(this); - }; - DataZoomFeature3.prototype.remove = function(ecModel, api) { - this._brushController && this._brushController.unmount(); - }; - DataZoomFeature3.prototype.dispose = function(ecModel, api) { - this._brushController && this._brushController.dispose(); - }; - DataZoomFeature3.prototype._onBrush = function(eventParam) { - var areas = eventParam.areas; - if (!eventParam.isEnd || !areas.length) { - return; - } - var snapshot = {}; - var ecModel = this.ecModel; - this._brushController.updateCovers([]); - var brushTargetManager = new BrushTargetManager2(makeAxisFinder2(this.model), ecModel, { - include: ["grid"] - }); - brushTargetManager.matchOutputRanges(areas, ecModel, function(area, coordRange, coordSys) { - if (coordSys.type !== "cartesian2d") { - return; - } - var brushType = area.brushType; - if (brushType === "rect") { - setBatch("x", coordSys, coordRange[0]); - setBatch("y", coordSys, coordRange[1]); - } else { - setBatch({ - lineX: "x", - lineY: "y" - }[brushType], coordSys, coordRange); - } - }); - push2(ecModel, snapshot); - this._dispatchZoomAction(snapshot); - function setBatch(dimName, coordSys, minMax) { - var axis = coordSys.getAxis(dimName); - var axisModel = axis.model; - var dataZoomModel = findDataZoom(dimName, axisModel, ecModel); - var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy(axisModel).getMinMaxSpan(); - if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) { - minMax = sliderMove2(0, minMax.slice(), axis.scale.getExtent(), 0, minMaxSpan.minValueSpan, minMaxSpan.maxValueSpan); - } - dataZoomModel && (snapshot[dataZoomModel.id] = { - dataZoomId: dataZoomModel.id, - startValue: minMax[0], - endValue: minMax[1] - }); - } - function findDataZoom(dimName, axisModel, ecModel2) { - var found; - ecModel2.eachComponent({ - mainType: "dataZoom", - subType: "select" - }, function(dzModel) { - var has4 = dzModel.getAxisModel(dimName, axisModel.componentIndex); - has4 && (found = dzModel); - }); - return found; - } - }; - DataZoomFeature3.prototype._dispatchZoomAction = function(snapshot) { - var batch = []; - each$a(snapshot, function(batchItem, dataZoomId) { - batch.push(clone6(batchItem)); - }); - batch.length && this.api.dispatchAction({ - type: "dataZoom", - from: this.uid, - batch - }); - }; - DataZoomFeature3.getDefaultOption = function(ecModel) { - var defaultOption4 = { - show: true, - filterMode: "filter", - // Icon group - icon: { - zoom: "M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1", - back: "M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26" - }, - // `zoom`, `back` - title: ecModel.getLocaleModel().get(["toolbox", "dataZoom", "title"]), - brushStyle: { - borderWidth: 0, - color: "rgba(210,219,238,0.2)" - } - }; - return defaultOption4; - }; - return DataZoomFeature3; - }(ToolboxFeature2) - ); - var handlers$1 = { - zoom: function() { - var nextActive = !this._isZoomActive; - this.api.dispatchAction({ - type: "takeGlobalCursor", - key: "dataZoomSelect", - dataZoomSelectActive: nextActive - }); - }, - back: function() { - this._dispatchZoomAction(pop2(this.ecModel)); - } - }; - function makeAxisFinder2(dzFeatureModel) { - var setting = { - xAxisIndex: dzFeatureModel.get("xAxisIndex", true), - yAxisIndex: dzFeatureModel.get("yAxisIndex", true), - xAxisId: dzFeatureModel.get("xAxisId", true), - yAxisId: dzFeatureModel.get("yAxisId", true) - }; - if (setting.xAxisIndex == null && setting.xAxisId == null) { - setting.xAxisIndex = "all"; - } - if (setting.yAxisIndex == null && setting.yAxisId == null) { - setting.yAxisIndex = "all"; - } - return setting; - } - function updateBackBtnStatus2(featureModel, ecModel) { - featureModel.setIconStatus("back", count2(ecModel) > 1 ? "emphasis" : "normal"); - } - function updateZoomBtnStatus2(featureModel, ecModel, view, payload, api) { - var zoomActive = view._isZoomActive; - if (payload && payload.type === "takeGlobalCursor") { - zoomActive = payload.key === "dataZoomSelect" ? payload.dataZoomSelectActive : false; - } - view._isZoomActive = zoomActive; - featureModel.setIconStatus("zoom", zoomActive ? "emphasis" : "normal"); - var brushTargetManager = new BrushTargetManager2(makeAxisFinder2(featureModel), ecModel, { - include: ["grid"] - }); - var panels = brushTargetManager.makePanelOpts(api, function(targetInfo) { - return targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared ? "lineX" : !targetInfo.xAxisDeclared && targetInfo.yAxisDeclared ? "lineY" : "rect"; - }); - view._brushController.setPanels(panels).enableBrush(zoomActive && panels.length ? { - brushType: "auto", - brushStyle: featureModel.getModel("brushStyle").getItemStyle() - } : false); - } - registerInternalOptionCreator2("dataZoom", function(ecModel) { - var toolboxModel = ecModel.getComponent("toolbox", 0); - var featureDataZoomPath = ["feature", "dataZoom"]; - if (!toolboxModel || toolboxModel.get(featureDataZoomPath) == null) { - return; - } - var dzFeatureModel = toolboxModel.getModel(featureDataZoomPath); - var dzOptions = []; - var finder = makeAxisFinder2(dzFeatureModel); - var finderResult = parseFinder3(ecModel, finder); - each$a(finderResult.xAxisModels, function(axisModel) { - return buildInternalOptions(axisModel, "xAxis", "xAxisIndex"); - }); - each$a(finderResult.yAxisModels, function(axisModel) { - return buildInternalOptions(axisModel, "yAxis", "yAxisIndex"); - }); - function buildInternalOptions(axisModel, axisMainType, axisIndexPropName) { - var axisIndex = axisModel.componentIndex; - var newOpt = { - type: "select", - $fromToolbox: true, - // Default to be filter - filterMode: dzFeatureModel.get("filterMode", true) || "filter", - // Id for merge mapping. - id: DATA_ZOOM_ID_BASE2 + axisMainType + axisIndex - }; - newOpt[axisIndexPropName] = axisIndex; - dzOptions.push(newOpt); - } - return dzOptions; - }); - function install$z(registers) { - registers.registerComponentModel(ToolboxModel2); - registers.registerComponentView(ToolboxView2); - registerFeature2("saveAsImage", SaveAsImage2); - registerFeature2("magicType", MagicType2); - registerFeature2("dataView", DataView2); - registerFeature2("dataZoom", DataZoomFeature2); - registerFeature2("restore", RestoreOption2); - use2(install$y); - } - var TooltipModel2 = ( - /** @class */ - function(_super) { - __extends2(TooltipModel3, _super); - function TooltipModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TooltipModel3.type; - return _this; - } - TooltipModel3.type = "tooltip"; - TooltipModel3.dependencies = ["axisPointer"]; - TooltipModel3.defaultOption = { - // zlevel: 0, - z: 60, - show: true, - // tooltip main content - showContent: true, - // 'trigger' only works on coordinate system. - // 'item' | 'axis' | 'none' - trigger: "item", - // 'click' | 'mousemove' | 'none' - triggerOn: "mousemove|click", - alwaysShowContent: false, - displayMode: "single", - renderMode: "auto", - // whether restraint content inside viewRect. - // If renderMode: 'richText', default true. - // If renderMode: 'html', defaut false (for backward compat). - confine: null, - showDelay: 0, - hideDelay: 100, - // Animation transition time, unit is second - transitionDuration: 0.4, - enterable: false, - backgroundColor: "#fff", - // box shadow - shadowBlur: 10, - shadowColor: "rgba(0, 0, 0, .2)", - shadowOffsetX: 1, - shadowOffsetY: 2, - // tooltip border radius, unit is px, default is 4 - borderRadius: 4, - // tooltip border width, unit is px, default is 0 (no border) - borderWidth: 1, - // Tooltip inside padding, default is 5 for all direction - // Array is allowed to set up, right, bottom, left, same with css - // The default value: See `tooltip/tooltipMarkup.ts#getPaddingFromTooltipModel`. - padding: null, - // Extra css text - extraCssText: "", - // axis indicator, trigger by axis - axisPointer: { - // default is line - // legal values: 'line' | 'shadow' | 'cross' - type: "line", - // Valid when type is line, appoint tooltip line locate on which line. Optional - // legal values: 'x' | 'y' | 'angle' | 'radius' | 'auto' - // default is 'auto', chose the axis which type is category. - // for multiply y axis, cartesian coord chose x axis, polar chose angle axis - axis: "auto", - animation: "auto", - animationDurationUpdate: 200, - animationEasingUpdate: "exponentialOut", - crossStyle: { - color: "#999", - width: 1, - type: "dashed", - // TODO formatter - textStyle: {} - } - // lineStyle and shadowStyle should not be specified here, - // otherwise it will always override those styles on option.axisPointer. - }, - textStyle: { - color: "#666", - fontSize: 14 - } - }; - return TooltipModel3; - }(ComponentModel2) - ); - function shouldTooltipConfine2(tooltipModel) { - var confineOption = tooltipModel.get("confine"); - return confineOption != null ? !!confineOption : tooltipModel.get("renderMode") === "richText"; - } - function testStyle2(styleProps) { - if (!env2.domSupported) { - return; - } - var style = document.documentElement.style; - for (var i2 = 0, len3 = styleProps.length; i2 < len3; i2++) { - if (styleProps[i2] in style) { - return styleProps[i2]; - } - } - } - var TRANSFORM_VENDOR2 = testStyle2(["transform", "webkitTransform", "OTransform", "MozTransform", "msTransform"]); - var TRANSITION_VENDOR2 = testStyle2(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]); - function toCSSVendorPrefix2(styleVendor, styleProp) { - if (!styleVendor) { - return styleProp; - } - styleProp = toCamelCase2(styleProp, true); - var idx = styleVendor.indexOf(styleProp); - styleVendor = idx === -1 ? styleProp : "-" + styleVendor.slice(0, idx) + "-" + styleProp; - return styleVendor.toLowerCase(); - } - function getComputedStyle3(el, style) { - var stl = el.currentStyle || document.defaultView && document.defaultView.getComputedStyle(el); - return stl ? style ? stl[style] : stl : null; - } - var CSS_TRANSITION_VENDOR2 = toCSSVendorPrefix2(TRANSITION_VENDOR2, "transition"); - var CSS_TRANSFORM_VENDOR2 = toCSSVendorPrefix2(TRANSFORM_VENDOR2, "transform"); - var gCssText2 = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;" + (env2.transform3dSupported ? "will-change:transform;" : ""); - function mirrorPos2(pos) { - pos = pos === "left" ? "right" : pos === "right" ? "left" : pos === "top" ? "bottom" : "top"; - return pos; - } - function assembleArrow2(tooltipModel, borderColor, arrowPosition) { - if (!isString2(arrowPosition) || arrowPosition === "inside") { - return ""; - } - var backgroundColor3 = tooltipModel.get("backgroundColor"); - var borderWidth = tooltipModel.get("borderWidth"); - borderColor = convertToColorString2(borderColor); - var arrowPos = mirrorPos2(arrowPosition); - var arrowSize = Math.max(Math.round(borderWidth) * 1.5, 6); - var positionStyle = ""; - var transformStyle = CSS_TRANSFORM_VENDOR2 + ":"; - var rotateDeg; - if (indexOf2(["left", "right"], arrowPos) > -1) { - positionStyle += "top:50%"; - transformStyle += "translateY(-50%) rotate(" + (rotateDeg = arrowPos === "left" ? -225 : -45) + "deg)"; - } else { - positionStyle += "left:50%"; - transformStyle += "translateX(-50%) rotate(" + (rotateDeg = arrowPos === "top" ? 225 : 45) + "deg)"; - } - var rotateRadian = rotateDeg * Math.PI / 180; - var arrowWH = arrowSize + borderWidth; - var rotatedWH = arrowWH * Math.abs(Math.cos(rotateRadian)) + arrowWH * Math.abs(Math.sin(rotateRadian)); - var arrowOffset = Math.round(((rotatedWH - Math.SQRT2 * borderWidth) / 2 + Math.SQRT2 * borderWidth - (rotatedWH - arrowWH) / 2) * 100) / 100; - positionStyle += ";" + arrowPos + ":-" + arrowOffset + "px"; - var borderStyle = borderColor + " solid " + borderWidth + "px;"; - var styleCss = ["position:absolute;width:" + arrowSize + "px;height:" + arrowSize + "px;z-index:-1;", positionStyle + ";" + transformStyle + ";", "border-bottom:" + borderStyle, "border-right:" + borderStyle, "background-color:" + backgroundColor3 + ";"]; - return '
'; - } - function assembleTransition2(duration, onlyFade) { - var transitionCurve = "cubic-bezier(0.23,1,0.32,1)"; - var transitionOption = " " + duration / 2 + "s " + transitionCurve; - var transitionText = "opacity" + transitionOption + ",visibility" + transitionOption; - if (!onlyFade) { - transitionOption = " " + duration + "s " + transitionCurve; - transitionText += env2.transformSupported ? "," + CSS_TRANSFORM_VENDOR2 + transitionOption : ",left" + transitionOption + ",top" + transitionOption; - } - return CSS_TRANSITION_VENDOR2 + ":" + transitionText; - } - function assembleTransform2(x, y, toString) { - var x0 = x.toFixed(0) + "px"; - var y0 = y.toFixed(0) + "px"; - if (!env2.transformSupported) { - return toString ? "top:" + y0 + ";left:" + x0 + ";" : [["top", y0], ["left", x0]]; - } - var is3d = env2.transform3dSupported; - var translate3 = "translate" + (is3d ? "3d" : "") + "(" + x0 + "," + y0 + (is3d ? ",0" : "") + ")"; - return toString ? "top:0;left:0;" + CSS_TRANSFORM_VENDOR2 + ":" + translate3 + ";" : [["top", 0], ["left", 0], [TRANSFORM_VENDOR2, translate3]]; - } - function assembleFont2(textStyleModel) { - var cssText = []; - var fontSize = textStyleModel.get("fontSize"); - var color2 = textStyleModel.getTextColor(); - color2 && cssText.push("color:" + color2); - cssText.push("font:" + textStyleModel.getFont()); - var lineHeight = retrieve22(textStyleModel.get("lineHeight"), Math.round(fontSize * 3 / 2)); - fontSize && cssText.push("line-height:" + lineHeight + "px"); - var shadowColor = textStyleModel.get("textShadowColor"); - var shadowBlur = textStyleModel.get("textShadowBlur") || 0; - var shadowOffsetX = textStyleModel.get("textShadowOffsetX") || 0; - var shadowOffsetY = textStyleModel.get("textShadowOffsetY") || 0; - shadowColor && shadowBlur && cssText.push("text-shadow:" + shadowOffsetX + "px " + shadowOffsetY + "px " + shadowBlur + "px " + shadowColor); - each17(["decoration", "align"], function(name) { - var val = textStyleModel.get(name); - val && cssText.push("text-" + name + ":" + val); - }); - return cssText.join(";"); - } - function assembleCssText2(tooltipModel, enableTransition, onlyFade) { - var cssText = []; - var transitionDuration = tooltipModel.get("transitionDuration"); - var backgroundColor3 = tooltipModel.get("backgroundColor"); - var shadowBlur = tooltipModel.get("shadowBlur"); - var shadowColor = tooltipModel.get("shadowColor"); - var shadowOffsetX = tooltipModel.get("shadowOffsetX"); - var shadowOffsetY = tooltipModel.get("shadowOffsetY"); - var textStyleModel = tooltipModel.getModel("textStyle"); - var padding = getPaddingFromTooltipModel2(tooltipModel, "html"); - var boxShadow = shadowOffsetX + "px " + shadowOffsetY + "px " + shadowBlur + "px " + shadowColor; - cssText.push("box-shadow:" + boxShadow); - enableTransition && transitionDuration && cssText.push(assembleTransition2(transitionDuration, onlyFade)); - if (backgroundColor3) { - cssText.push("background-color:" + backgroundColor3); - } - each17(["width", "color", "radius"], function(name) { - var borderName = "border-" + name; - var camelCase = toCamelCase2(borderName); - var val = tooltipModel.get(camelCase); - val != null && cssText.push(borderName + ":" + val + (name === "color" ? "" : "px")); - }); - cssText.push(assembleFont2(textStyleModel)); - if (padding != null) { - cssText.push("padding:" + normalizeCssArray$1(padding).join("px ") + "px"); - } - return cssText.join(";") + ";"; - } - function makeStyleCoord3(out3, zr, container, zrX, zrY) { - var zrPainter = zr && zr.painter; - if (container) { - var zrViewportRoot = zrPainter && zrPainter.getViewportRoot(); - if (zrViewportRoot) { - transformLocalCoord2(out3, zrViewportRoot, container, zrX, zrY); - } - } else { - out3[0] = zrX; - out3[1] = zrY; - var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset(); - if (viewportRootOffset) { - out3[0] += viewportRootOffset.offsetLeft; - out3[1] += viewportRootOffset.offsetTop; - } - } - out3[2] = out3[0] / zr.getWidth(); - out3[3] = out3[1] / zr.getHeight(); - } - var TooltipHTMLContent2 = ( - /** @class */ - function() { - function TooltipHTMLContent3(api, opt) { - this._show = false; - this._styleCoord = [0, 0, 0, 0]; - this._enterable = true; - this._alwaysShowContent = false; - this._firstShow = true; - this._longHide = true; - if (env2.wxa) { - return null; - } - var el = document.createElement("div"); - el.domBelongToZr = true; - this.el = el; - var zr = this._zr = api.getZr(); - var appendTo = opt.appendTo; - var container = appendTo && (isString2(appendTo) ? document.querySelector(appendTo) : isDom2(appendTo) ? appendTo : isFunction2(appendTo) && appendTo(api.getDom())); - makeStyleCoord3(this._styleCoord, zr, container, api.getWidth() / 2, api.getHeight() / 2); - (container || api.getDom()).appendChild(el); - this._api = api; - this._container = container; - var self2 = this; - el.onmouseenter = function() { - if (self2._enterable) { - clearTimeout(self2._hideTimeout); - self2._show = true; - } - self2._inContent = true; - }; - el.onmousemove = function(e3) { - e3 = e3 || window.event; - if (!self2._enterable) { - var handler = zr.handler; - var zrViewportRoot = zr.painter.getViewportRoot(); - normalizeEvent2(zrViewportRoot, e3, true); - handler.dispatch("mousemove", e3); - } - }; - el.onmouseleave = function() { - self2._inContent = false; - if (self2._enterable) { - if (self2._show) { - self2.hideLater(self2._hideDelay); - } - } - }; - } - TooltipHTMLContent3.prototype.update = function(tooltipModel) { - if (!this._container) { - var container = this._api.getDom(); - var position3 = getComputedStyle3(container, "position"); - var domStyle = container.style; - if (domStyle.position !== "absolute" && position3 !== "absolute") { - domStyle.position = "relative"; - } - } - var alwaysShowContent = tooltipModel.get("alwaysShowContent"); - alwaysShowContent && this._moveIfResized(); - this._alwaysShowContent = alwaysShowContent; - this.el.className = tooltipModel.get("className") || ""; - }; - TooltipHTMLContent3.prototype.show = function(tooltipModel, nearPointColor) { - clearTimeout(this._hideTimeout); - clearTimeout(this._longHideTimeout); - var el = this.el; - var style = el.style; - var styleCoord = this._styleCoord; - if (!el.innerHTML) { - style.display = "none"; - } else { - style.cssText = gCssText2 + assembleCssText2(tooltipModel, !this._firstShow, this._longHide) + assembleTransform2(styleCoord[0], styleCoord[1], true) + ("border-color:" + convertToColorString2(nearPointColor) + ";") + (tooltipModel.get("extraCssText") || "") + (";pointer-events:" + (this._enterable ? "auto" : "none")); - } - this._show = true; - this._firstShow = false; - this._longHide = false; - }; - TooltipHTMLContent3.prototype.setContent = function(content, markers, tooltipModel, borderColor, arrowPosition) { - var el = this.el; - if (content == null) { - el.innerHTML = ""; - return; - } - var arrow2 = ""; - if (isString2(arrowPosition) && tooltipModel.get("trigger") === "item" && !shouldTooltipConfine2(tooltipModel)) { - arrow2 = assembleArrow2(tooltipModel, borderColor, arrowPosition); - } - if (isString2(content)) { - el.innerHTML = content + arrow2; - } else if (content) { - el.innerHTML = ""; - if (!isArray3(content)) { - content = [content]; - } - for (var i2 = 0; i2 < content.length; i2++) { - if (isDom2(content[i2]) && content[i2].parentNode !== el) { - el.appendChild(content[i2]); - } - } - if (arrow2 && el.childNodes.length) { - var arrowEl = document.createElement("div"); - arrowEl.innerHTML = arrow2; - el.appendChild(arrowEl); - } - } - }; - TooltipHTMLContent3.prototype.setEnterable = function(enterable) { - this._enterable = enterable; - }; - TooltipHTMLContent3.prototype.getSize = function() { - var el = this.el; - return el ? [el.offsetWidth, el.offsetHeight] : [0, 0]; - }; - TooltipHTMLContent3.prototype.moveTo = function(zrX, zrY) { - if (!this.el) { - return; - } - var styleCoord = this._styleCoord; - makeStyleCoord3(styleCoord, this._zr, this._container, zrX, zrY); - if (styleCoord[0] != null && styleCoord[1] != null) { - var style_1 = this.el.style; - var transforms = assembleTransform2(styleCoord[0], styleCoord[1]); - each17(transforms, function(transform2) { - style_1[transform2[0]] = transform2[1]; - }); - } - }; - TooltipHTMLContent3.prototype._moveIfResized = function() { - var ratioX = this._styleCoord[2]; - var ratioY = this._styleCoord[3]; - this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight()); - }; - TooltipHTMLContent3.prototype.hide = function() { - var _this = this; - var style = this.el.style; - style.visibility = "hidden"; - style.opacity = "0"; - env2.transform3dSupported && (style.willChange = ""); - this._show = false; - this._longHideTimeout = setTimeout(function() { - return _this._longHide = true; - }, 500); - }; - TooltipHTMLContent3.prototype.hideLater = function(time2) { - if (this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent) { - if (time2) { - this._hideDelay = time2; - this._show = false; - this._hideTimeout = setTimeout(bind3(this.hide, this), time2); - } else { - this.hide(); - } - } - }; - TooltipHTMLContent3.prototype.isShow = function() { - return this._show; - }; - TooltipHTMLContent3.prototype.dispose = function() { - clearTimeout(this._hideTimeout); - clearTimeout(this._longHideTimeout); - var parentNode3 = this.el.parentNode; - parentNode3 && parentNode3.removeChild(this.el); - this.el = this._container = null; - }; - return TooltipHTMLContent3; - }() - ); - var TooltipRichContent2 = ( - /** @class */ - function() { - function TooltipRichContent3(api) { - this._show = false; - this._styleCoord = [0, 0, 0, 0]; - this._alwaysShowContent = false; - this._enterable = true; - this._zr = api.getZr(); - makeStyleCoord$1(this._styleCoord, this._zr, api.getWidth() / 2, api.getHeight() / 2); - } - TooltipRichContent3.prototype.update = function(tooltipModel) { - var alwaysShowContent = tooltipModel.get("alwaysShowContent"); - alwaysShowContent && this._moveIfResized(); - this._alwaysShowContent = alwaysShowContent; - }; - TooltipRichContent3.prototype.show = function() { - if (this._hideTimeout) { - clearTimeout(this._hideTimeout); - } - this.el.show(); - this._show = true; - }; - TooltipRichContent3.prototype.setContent = function(content, markupStyleCreator, tooltipModel, borderColor, arrowPosition) { - var _this = this; - if (isObject5(content)) { - throwError2(true ? "Passing DOM nodes as content is not supported in richText tooltip!" : ""); - } - if (this.el) { - this._zr.remove(this.el); - } - var textStyleModel = tooltipModel.getModel("textStyle"); - this.el = new ZRText2({ - style: { - rich: markupStyleCreator.richTextStyles, - text: content, - lineHeight: 22, - borderWidth: 1, - borderColor, - textShadowColor: textStyleModel.get("textShadowColor"), - fill: tooltipModel.get(["textStyle", "color"]), - padding: getPaddingFromTooltipModel2(tooltipModel, "richText"), - verticalAlign: "top", - align: "left" - }, - z: tooltipModel.get("z") - }); - each17(["backgroundColor", "borderRadius", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"], function(propName) { - _this.el.style[propName] = tooltipModel.get(propName); - }); - each17(["textShadowBlur", "textShadowOffsetX", "textShadowOffsetY"], function(propName) { - _this.el.style[propName] = textStyleModel.get(propName) || 0; - }); - this._zr.add(this.el); - var self2 = this; - this.el.on("mouseover", function() { - if (self2._enterable) { - clearTimeout(self2._hideTimeout); - self2._show = true; - } - self2._inContent = true; - }); - this.el.on("mouseout", function() { - if (self2._enterable) { - if (self2._show) { - self2.hideLater(self2._hideDelay); - } - } - self2._inContent = false; - }); - }; - TooltipRichContent3.prototype.setEnterable = function(enterable) { - this._enterable = enterable; - }; - TooltipRichContent3.prototype.getSize = function() { - var el = this.el; - var bounding = this.el.getBoundingRect(); - var shadowOuterSize = calcShadowOuterSize2(el.style); - return [bounding.width + shadowOuterSize.left + shadowOuterSize.right, bounding.height + shadowOuterSize.top + shadowOuterSize.bottom]; - }; - TooltipRichContent3.prototype.moveTo = function(x, y) { - var el = this.el; - if (el) { - var styleCoord = this._styleCoord; - makeStyleCoord$1(styleCoord, this._zr, x, y); - x = styleCoord[0]; - y = styleCoord[1]; - var style = el.style; - var borderWidth = mathMaxWith02(style.borderWidth || 0); - var shadowOuterSize = calcShadowOuterSize2(style); - el.x = x + borderWidth + shadowOuterSize.left; - el.y = y + borderWidth + shadowOuterSize.top; - el.markRedraw(); - } - }; - TooltipRichContent3.prototype._moveIfResized = function() { - var ratioX = this._styleCoord[2]; - var ratioY = this._styleCoord[3]; - this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight()); - }; - TooltipRichContent3.prototype.hide = function() { - if (this.el) { - this.el.hide(); - } - this._show = false; - }; - TooltipRichContent3.prototype.hideLater = function(time2) { - if (this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent) { - if (time2) { - this._hideDelay = time2; - this._show = false; - this._hideTimeout = setTimeout(bind3(this.hide, this), time2); - } else { - this.hide(); - } - } - }; - TooltipRichContent3.prototype.isShow = function() { - return this._show; - }; - TooltipRichContent3.prototype.dispose = function() { - this._zr.remove(this.el); - }; - return TooltipRichContent3; - }() - ); - function mathMaxWith02(val) { - return Math.max(0, val); - } - function calcShadowOuterSize2(style) { - var shadowBlur = mathMaxWith02(style.shadowBlur || 0); - var shadowOffsetX = mathMaxWith02(style.shadowOffsetX || 0); - var shadowOffsetY = mathMaxWith02(style.shadowOffsetY || 0); - return { - left: mathMaxWith02(shadowBlur - shadowOffsetX), - right: mathMaxWith02(shadowBlur + shadowOffsetX), - top: mathMaxWith02(shadowBlur - shadowOffsetY), - bottom: mathMaxWith02(shadowBlur + shadowOffsetY) - }; - } - function makeStyleCoord$1(out3, zr, zrX, zrY) { - out3[0] = zrX; - out3[1] = zrY; - out3[2] = out3[0] / zr.getWidth(); - out3[3] = out3[1] / zr.getHeight(); - } - var proxyRect2 = new Rect4({ - shape: { - x: -1, - y: -1, - width: 2, - height: 2 - } - }); - var TooltipView2 = ( - /** @class */ - function(_super) { - __extends2(TooltipView3, _super); - function TooltipView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TooltipView3.type; - return _this; - } - TooltipView3.prototype.init = function(ecModel, api) { - if (env2.node || !api.getDom()) { - return; - } - var tooltipModel = ecModel.getComponent("tooltip"); - var renderMode = this._renderMode = getTooltipRenderMode2(tooltipModel.get("renderMode")); - this._tooltipContent = renderMode === "richText" ? new TooltipRichContent2(api) : new TooltipHTMLContent2(api, { - appendTo: tooltipModel.get("appendToBody", true) ? "body" : tooltipModel.get("appendTo", true) - }); - }; - TooltipView3.prototype.render = function(tooltipModel, ecModel, api) { - if (env2.node || !api.getDom()) { - return; - } - this.group.removeAll(); - this._tooltipModel = tooltipModel; - this._ecModel = ecModel; - this._api = api; - var tooltipContent = this._tooltipContent; - tooltipContent.update(tooltipModel); - tooltipContent.setEnterable(tooltipModel.get("enterable")); - this._initGlobalListener(); - this._keepShow(); - if (this._renderMode !== "richText" && tooltipModel.get("transitionDuration")) { - createOrUpdate2(this, "_updatePosition", 50, "fixRate"); - } else { - clear3(this, "_updatePosition"); - } - }; - TooltipView3.prototype._initGlobalListener = function() { - var tooltipModel = this._tooltipModel; - var triggerOn = tooltipModel.get("triggerOn"); - register2("itemTooltip", this._api, bind3(function(currTrigger, e3, dispatchAction4) { - if (triggerOn !== "none") { - if (triggerOn.indexOf(currTrigger) >= 0) { - this._tryShow(e3, dispatchAction4); - } else if (currTrigger === "leave") { - this._hide(dispatchAction4); - } - } - }, this)); - }; - TooltipView3.prototype._keepShow = function() { - var tooltipModel = this._tooltipModel; - var ecModel = this._ecModel; - var api = this._api; - var triggerOn = tooltipModel.get("triggerOn"); - if (this._lastX != null && this._lastY != null && triggerOn !== "none" && triggerOn !== "click") { - var self_1 = this; - clearTimeout(this._refreshUpdateTimeout); - this._refreshUpdateTimeout = setTimeout(function() { - !api.isDisposed() && self_1.manuallyShowTip(tooltipModel, ecModel, api, { - x: self_1._lastX, - y: self_1._lastY, - dataByCoordSys: self_1._lastDataByCoordSys - }); - }); - } - }; - TooltipView3.prototype.manuallyShowTip = function(tooltipModel, ecModel, api, payload) { - if (payload.from === this.uid || env2.node || !api.getDom()) { - return; - } - var dispatchAction4 = makeDispatchAction$1(payload, api); - this._ticket = ""; - var dataByCoordSys = payload.dataByCoordSys; - var cmptRef = findComponentReference2(payload, ecModel, api); - if (cmptRef) { - var rect = cmptRef.el.getBoundingRect().clone(); - rect.applyTransform(cmptRef.el.transform); - this._tryShow({ - offsetX: rect.x + rect.width / 2, - offsetY: rect.y + rect.height / 2, - target: cmptRef.el, - position: payload.position, - // When manully trigger, the mouse is not on the el, so we'd better to - // position tooltip on the bottom of the el and display arrow is possible. - positionDefault: "bottom" - }, dispatchAction4); - } else if (payload.tooltip && payload.x != null && payload.y != null) { - var el = proxyRect2; - el.x = payload.x; - el.y = payload.y; - el.update(); - getECData2(el).tooltipConfig = { - name: null, - option: payload.tooltip - }; - this._tryShow({ - offsetX: payload.x, - offsetY: payload.y, - target: el - }, dispatchAction4); - } else if (dataByCoordSys) { - this._tryShow({ - offsetX: payload.x, - offsetY: payload.y, - position: payload.position, - dataByCoordSys, - tooltipOption: payload.tooltipOption - }, dispatchAction4); - } else if (payload.seriesIndex != null) { - if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) { - return; - } - var pointInfo = findPointFromSeries2(payload, ecModel); - var cx = pointInfo.point[0]; - var cy = pointInfo.point[1]; - if (cx != null && cy != null) { - this._tryShow({ - offsetX: cx, - offsetY: cy, - target: pointInfo.el, - position: payload.position, - // When manully trigger, the mouse is not on the el, so we'd better to - // position tooltip on the bottom of the el and display arrow is possible. - positionDefault: "bottom" - }, dispatchAction4); - } - } else if (payload.x != null && payload.y != null) { - api.dispatchAction({ - type: "updateAxisPointer", - x: payload.x, - y: payload.y - }); - this._tryShow({ - offsetX: payload.x, - offsetY: payload.y, - position: payload.position, - target: api.getZr().findHover(payload.x, payload.y).target - }, dispatchAction4); - } - }; - TooltipView3.prototype.manuallyHideTip = function(tooltipModel, ecModel, api, payload) { - var tooltipContent = this._tooltipContent; - if (this._tooltipModel) { - tooltipContent.hideLater(this._tooltipModel.get("hideDelay")); - } - this._lastX = this._lastY = this._lastDataByCoordSys = null; - if (payload.from !== this.uid) { - this._hide(makeDispatchAction$1(payload, api)); - } - }; - TooltipView3.prototype._manuallyAxisShowTip = function(tooltipModel, ecModel, api, payload) { - var seriesIndex = payload.seriesIndex; - var dataIndex = payload.dataIndex; - var coordSysAxesInfo = ecModel.getComponent("axisPointer").coordSysAxesInfo; - if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) { - return; - } - var seriesModel = ecModel.getSeriesByIndex(seriesIndex); - if (!seriesModel) { - return; - } - var data = seriesModel.getData(); - var tooltipCascadedModel = buildTooltipModel2([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model], this._tooltipModel); - if (tooltipCascadedModel.get("trigger") !== "axis") { - return; - } - api.dispatchAction({ - type: "updateAxisPointer", - seriesIndex, - dataIndex, - position: payload.position - }); - return true; - }; - TooltipView3.prototype._tryShow = function(e3, dispatchAction4) { - var el = e3.target; - var tooltipModel = this._tooltipModel; - if (!tooltipModel) { - return; - } - this._lastX = e3.offsetX; - this._lastY = e3.offsetY; - var dataByCoordSys = e3.dataByCoordSys; - if (dataByCoordSys && dataByCoordSys.length) { - this._showAxisTooltip(dataByCoordSys, e3); - } else if (el) { - var ecData = getECData2(el); - if (ecData.ssrType === "legend") { - return; - } - this._lastDataByCoordSys = null; - var seriesDispatcher_1; - var cmptDispatcher_1; - findEventDispatcher2(el, function(target) { - if (getECData2(target).dataIndex != null) { - seriesDispatcher_1 = target; - return true; - } - if (getECData2(target).tooltipConfig != null) { - cmptDispatcher_1 = target; - return true; - } - }, true); - if (seriesDispatcher_1) { - this._showSeriesItemTooltip(e3, seriesDispatcher_1, dispatchAction4); - } else if (cmptDispatcher_1) { - this._showComponentItemTooltip(e3, cmptDispatcher_1, dispatchAction4); - } else { - this._hide(dispatchAction4); - } - } else { - this._lastDataByCoordSys = null; - this._hide(dispatchAction4); - } - }; - TooltipView3.prototype._showOrMove = function(tooltipModel, cb) { - var delay = tooltipModel.get("showDelay"); - cb = bind3(cb, this); - clearTimeout(this._showTimout); - delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb(); - }; - TooltipView3.prototype._showAxisTooltip = function(dataByCoordSys, e3) { - var ecModel = this._ecModel; - var globalTooltipModel = this._tooltipModel; - var point = [e3.offsetX, e3.offsetY]; - var singleTooltipModel = buildTooltipModel2([e3.tooltipOption], globalTooltipModel); - var renderMode = this._renderMode; - var cbParamsList = []; - var articleMarkup = createTooltipMarkup2("section", { - blocks: [], - noHeader: true - }); - var markupTextArrLegacy = []; - var markupStyleCreator = new TooltipMarkupStyleCreator2(); - each17(dataByCoordSys, function(itemCoordSys) { - each17(itemCoordSys.dataByAxis, function(axisItem) { - var axisModel = ecModel.getComponent(axisItem.axisDim + "Axis", axisItem.axisIndex); - var axisValue = axisItem.value; - if (!axisModel || axisValue == null) { - return; - } - var axisValueLabel = getValueLabel2(axisValue, axisModel.axis, ecModel, axisItem.seriesDataIndices, axisItem.valueLabelOpt); - var axisSectionMarkup = createTooltipMarkup2("section", { - header: axisValueLabel, - noHeader: !trim3(axisValueLabel), - sortBlocks: true, - blocks: [] - }); - articleMarkup.blocks.push(axisSectionMarkup); - each17(axisItem.seriesDataIndices, function(idxItem) { - var series = ecModel.getSeriesByIndex(idxItem.seriesIndex); - var dataIndex = idxItem.dataIndexInside; - var cbParams = series.getDataParams(dataIndex); - if (cbParams.dataIndex < 0) { - return; - } - cbParams.axisDim = axisItem.axisDim; - cbParams.axisIndex = axisItem.axisIndex; - cbParams.axisType = axisItem.axisType; - cbParams.axisId = axisItem.axisId; - cbParams.axisValue = getAxisRawValue2(axisModel.axis, { - value: axisValue - }); - cbParams.axisValueLabel = axisValueLabel; - cbParams.marker = markupStyleCreator.makeTooltipMarker("item", convertToColorString2(cbParams.color), renderMode); - var seriesTooltipResult = normalizeTooltipFormatResult2(series.formatTooltip(dataIndex, true, null)); - var frag = seriesTooltipResult.frag; - if (frag) { - var valueFormatter = buildTooltipModel2([series], globalTooltipModel).get("valueFormatter"); - axisSectionMarkup.blocks.push(valueFormatter ? extend3({ - valueFormatter - }, frag) : frag); - } - if (seriesTooltipResult.text) { - markupTextArrLegacy.push(seriesTooltipResult.text); - } - cbParamsList.push(cbParams); - }); - }); - }); - articleMarkup.blocks.reverse(); - markupTextArrLegacy.reverse(); - var positionExpr = e3.position; - var orderMode = singleTooltipModel.get("order"); - var builtMarkupText = buildTooltipMarkup2(articleMarkup, markupStyleCreator, renderMode, orderMode, ecModel.get("useUTC"), singleTooltipModel.get("textStyle")); - builtMarkupText && markupTextArrLegacy.unshift(builtMarkupText); - var blockBreak = renderMode === "richText" ? "\n\n" : "
"; - var allMarkupText = markupTextArrLegacy.join(blockBreak); - this._showOrMove(singleTooltipModel, function() { - if (this._updateContentNotChangedOnAxis(dataByCoordSys, cbParamsList)) { - this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, cbParamsList); - } else { - this._showTooltipContent(singleTooltipModel, allMarkupText, cbParamsList, Math.random() + "", point[0], point[1], positionExpr, null, markupStyleCreator); - } - }); - }; - TooltipView3.prototype._showSeriesItemTooltip = function(e3, dispatcher, dispatchAction4) { - var ecModel = this._ecModel; - var ecData = getECData2(dispatcher); - var seriesIndex = ecData.seriesIndex; - var seriesModel = ecModel.getSeriesByIndex(seriesIndex); - var dataModel = ecData.dataModel || seriesModel; - var dataIndex = ecData.dataIndex; - var dataType = ecData.dataType; - var data = dataModel.getData(dataType); - var renderMode = this._renderMode; - var positionDefault = e3.positionDefault; - var tooltipModel = buildTooltipModel2([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model], this._tooltipModel, positionDefault ? { - position: positionDefault - } : null); - var tooltipTrigger = tooltipModel.get("trigger"); - if (tooltipTrigger != null && tooltipTrigger !== "item") { - return; - } - var params = dataModel.getDataParams(dataIndex, dataType); - var markupStyleCreator = new TooltipMarkupStyleCreator2(); - params.marker = markupStyleCreator.makeTooltipMarker("item", convertToColorString2(params.color), renderMode); - var seriesTooltipResult = normalizeTooltipFormatResult2(dataModel.formatTooltip(dataIndex, false, dataType)); - var orderMode = tooltipModel.get("order"); - var valueFormatter = tooltipModel.get("valueFormatter"); - var frag = seriesTooltipResult.frag; - var markupText = frag ? buildTooltipMarkup2(valueFormatter ? extend3({ - valueFormatter - }, frag) : frag, markupStyleCreator, renderMode, orderMode, ecModel.get("useUTC"), tooltipModel.get("textStyle")) : seriesTooltipResult.text; - var asyncTicket = "item_" + dataModel.name + "_" + dataIndex; - this._showOrMove(tooltipModel, function() { - this._showTooltipContent(tooltipModel, markupText, params, asyncTicket, e3.offsetX, e3.offsetY, e3.position, e3.target, markupStyleCreator); - }); - dispatchAction4({ - type: "showTip", - dataIndexInside: dataIndex, - dataIndex: data.getRawIndex(dataIndex), - seriesIndex, - from: this.uid - }); - }; - TooltipView3.prototype._showComponentItemTooltip = function(e3, el, dispatchAction4) { - var isHTMLRenderMode = this._renderMode === "html"; - var ecData = getECData2(el); - var tooltipConfig = ecData.tooltipConfig; - var tooltipOpt = tooltipConfig.option || {}; - var encodeHTMLContent = tooltipOpt.encodeHTMLContent; - if (isString2(tooltipOpt)) { - var content = tooltipOpt; - tooltipOpt = { - content, - // Fixed formatter - formatter: content - }; - encodeHTMLContent = true; - } - if (encodeHTMLContent && isHTMLRenderMode && tooltipOpt.content) { - tooltipOpt = clone6(tooltipOpt); - tooltipOpt.content = encodeHTML2(tooltipOpt.content); - } - var tooltipModelCascade = [tooltipOpt]; - var cmpt = this._ecModel.getComponent(ecData.componentMainType, ecData.componentIndex); - if (cmpt) { - tooltipModelCascade.push(cmpt); - } - tooltipModelCascade.push({ - formatter: tooltipOpt.content - }); - var positionDefault = e3.positionDefault; - var subTooltipModel = buildTooltipModel2(tooltipModelCascade, this._tooltipModel, positionDefault ? { - position: positionDefault - } : null); - var defaultHtml = subTooltipModel.get("content"); - var asyncTicket = Math.random() + ""; - var markupStyleCreator = new TooltipMarkupStyleCreator2(); - this._showOrMove(subTooltipModel, function() { - var formatterParams = clone6(subTooltipModel.get("formatterParams") || {}); - this._showTooltipContent(subTooltipModel, defaultHtml, formatterParams, asyncTicket, e3.offsetX, e3.offsetY, e3.position, el, markupStyleCreator); - }); - dispatchAction4({ - type: "showTip", - from: this.uid - }); - }; - TooltipView3.prototype._showTooltipContent = function(tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markupStyleCreator) { - this._ticket = ""; - if (!tooltipModel.get("showContent") || !tooltipModel.get("show")) { - return; - } - var tooltipContent = this._tooltipContent; - tooltipContent.setEnterable(tooltipModel.get("enterable")); - var formatter = tooltipModel.get("formatter"); - positionExpr = positionExpr || tooltipModel.get("position"); - var html = defaultHtml; - var nearPoint = this._getNearestPoint([x, y], params, tooltipModel.get("trigger"), tooltipModel.get("borderColor")); - var nearPointColor = nearPoint.color; - if (formatter) { - if (isString2(formatter)) { - var useUTC = tooltipModel.ecModel.get("useUTC"); - var params0 = isArray3(params) ? params[0] : params; - var isTimeAxis = params0 && params0.axisType && params0.axisType.indexOf("time") >= 0; - html = formatter; - if (isTimeAxis) { - html = format2(params0.axisValue, html, useUTC); - } - html = formatTpl2(html, params, true); - } else if (isFunction2(formatter)) { - var callback = bind3(function(cbTicket, html2) { - if (cbTicket === this._ticket) { - tooltipContent.setContent(html2, markupStyleCreator, tooltipModel, nearPointColor, positionExpr); - this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el); - } - }, this); - this._ticket = asyncTicket; - html = formatter(params, asyncTicket, callback); - } else { - html = formatter; - } - } - tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPointColor, positionExpr); - tooltipContent.show(tooltipModel, nearPointColor); - this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el); - }; - TooltipView3.prototype._getNearestPoint = function(point, tooltipDataParams, trigger4, borderColor) { - if (trigger4 === "axis" || isArray3(tooltipDataParams)) { - return { - color: borderColor || (this._renderMode === "html" ? "#fff" : "none") - }; - } - if (!isArray3(tooltipDataParams)) { - return { - color: borderColor || tooltipDataParams.color || tooltipDataParams.borderColor - }; - } - }; - TooltipView3.prototype._updatePosition = function(tooltipModel, positionExpr, x, y, content, params, el) { - var viewWidth = this._api.getWidth(); - var viewHeight = this._api.getHeight(); - positionExpr = positionExpr || tooltipModel.get("position"); - var contentSize = content.getSize(); - var align = tooltipModel.get("align"); - var vAlign = tooltipModel.get("verticalAlign"); - var rect = el && el.getBoundingRect().clone(); - el && rect.applyTransform(el.transform); - if (isFunction2(positionExpr)) { - positionExpr = positionExpr([x, y], params, content.el, rect, { - viewSize: [viewWidth, viewHeight], - contentSize: contentSize.slice() - }); - } - if (isArray3(positionExpr)) { - x = parsePercent$1(positionExpr[0], viewWidth); - y = parsePercent$1(positionExpr[1], viewHeight); - } else if (isObject5(positionExpr)) { - var boxLayoutPosition = positionExpr; - boxLayoutPosition.width = contentSize[0]; - boxLayoutPosition.height = contentSize[1]; - var layoutRect = getLayoutRect2(boxLayoutPosition, { - width: viewWidth, - height: viewHeight - }); - x = layoutRect.x; - y = layoutRect.y; - align = null; - vAlign = null; - } else if (isString2(positionExpr) && el) { - var pos = calcTooltipPosition2(positionExpr, rect, contentSize, tooltipModel.get("borderWidth")); - x = pos[0]; - y = pos[1]; - } else { - var pos = refixTooltipPosition2(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20); - x = pos[0]; - y = pos[1]; - } - align && (x -= isCenterAlign2(align) ? contentSize[0] / 2 : align === "right" ? contentSize[0] : 0); - vAlign && (y -= isCenterAlign2(vAlign) ? contentSize[1] / 2 : vAlign === "bottom" ? contentSize[1] : 0); - if (shouldTooltipConfine2(tooltipModel)) { - var pos = confineTooltipPosition2(x, y, content, viewWidth, viewHeight); - x = pos[0]; - y = pos[1]; - } - content.moveTo(x, y); - }; - TooltipView3.prototype._updateContentNotChangedOnAxis = function(dataByCoordSys, cbParamsList) { - var lastCoordSys = this._lastDataByCoordSys; - var lastCbParamsList = this._cbParamsList; - var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length; - contentNotChanged && each17(lastCoordSys, function(lastItemCoordSys, indexCoordSys) { - var lastDataByAxis = lastItemCoordSys.dataByAxis || []; - var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {}; - var thisDataByAxis = thisItemCoordSys.dataByAxis || []; - contentNotChanged = contentNotChanged && lastDataByAxis.length === thisDataByAxis.length; - contentNotChanged && each17(lastDataByAxis, function(lastItem, indexAxis) { - var thisItem = thisDataByAxis[indexAxis] || {}; - var lastIndices = lastItem.seriesDataIndices || []; - var newIndices = thisItem.seriesDataIndices || []; - contentNotChanged = contentNotChanged && lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length; - contentNotChanged && each17(lastIndices, function(lastIdxItem, j) { - var newIdxItem = newIndices[j]; - contentNotChanged = contentNotChanged && lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex; - }); - lastCbParamsList && each17(lastItem.seriesDataIndices, function(idxItem) { - var seriesIdx = idxItem.seriesIndex; - var cbParams = cbParamsList[seriesIdx]; - var lastCbParams = lastCbParamsList[seriesIdx]; - if (cbParams && lastCbParams && lastCbParams.data !== cbParams.data) { - contentNotChanged = false; - } - }); - }); - }); - this._lastDataByCoordSys = dataByCoordSys; - this._cbParamsList = cbParamsList; - return !!contentNotChanged; - }; - TooltipView3.prototype._hide = function(dispatchAction4) { - this._lastDataByCoordSys = null; - dispatchAction4({ - type: "hideTip", - from: this.uid - }); - }; - TooltipView3.prototype.dispose = function(ecModel, api) { - if (env2.node || !api.getDom()) { - return; - } - clear3(this, "_updatePosition"); - this._tooltipContent.dispose(); - unregister2("itemTooltip", api); - }; - TooltipView3.type = "tooltip"; - return TooltipView3; - }(ComponentView2) - ); - function buildTooltipModel2(modelCascade, globalTooltipModel, defaultTooltipOption) { - var ecModel = globalTooltipModel.ecModel; - var resultModel; - if (defaultTooltipOption) { - resultModel = new Model2(defaultTooltipOption, ecModel, ecModel); - resultModel = new Model2(globalTooltipModel.option, resultModel, ecModel); - } else { - resultModel = globalTooltipModel; - } - for (var i2 = modelCascade.length - 1; i2 >= 0; i2--) { - var tooltipOpt = modelCascade[i2]; - if (tooltipOpt) { - if (tooltipOpt instanceof Model2) { - tooltipOpt = tooltipOpt.get("tooltip", true); - } - if (isString2(tooltipOpt)) { - tooltipOpt = { - formatter: tooltipOpt - }; - } - if (tooltipOpt) { - resultModel = new Model2(tooltipOpt, resultModel, ecModel); - } - } - } - return resultModel; - } - function makeDispatchAction$1(payload, api) { - return payload.dispatchAction || bind3(api.dispatchAction, api); - } - function refixTooltipPosition2(x, y, content, viewWidth, viewHeight, gapH, gapV) { - var size2 = content.getSize(); - var width = size2[0]; - var height = size2[1]; - if (gapH != null) { - if (x + width + gapH + 2 > viewWidth) { - x -= width + gapH; - } else { - x += gapH; - } - } - if (gapV != null) { - if (y + height + gapV > viewHeight) { - y -= height + gapV; - } else { - y += gapV; - } - } - return [x, y]; - } - function confineTooltipPosition2(x, y, content, viewWidth, viewHeight) { - var size2 = content.getSize(); - var width = size2[0]; - var height = size2[1]; - x = Math.min(x + width, viewWidth) - width; - y = Math.min(y + height, viewHeight) - height; - x = Math.max(x, 0); - y = Math.max(y, 0); - return [x, y]; - } - function calcTooltipPosition2(position3, rect, contentSize, borderWidth) { - var domWidth = contentSize[0]; - var domHeight = contentSize[1]; - var offset3 = Math.ceil(Math.SQRT2 * borderWidth) + 8; - var x = 0; - var y = 0; - var rectWidth = rect.width; - var rectHeight = rect.height; - switch (position3) { - case "inside": - x = rect.x + rectWidth / 2 - domWidth / 2; - y = rect.y + rectHeight / 2 - domHeight / 2; - break; - case "top": - x = rect.x + rectWidth / 2 - domWidth / 2; - y = rect.y - domHeight - offset3; - break; - case "bottom": - x = rect.x + rectWidth / 2 - domWidth / 2; - y = rect.y + rectHeight + offset3; - break; - case "left": - x = rect.x - domWidth - offset3; - y = rect.y + rectHeight / 2 - domHeight / 2; - break; - case "right": - x = rect.x + rectWidth + offset3; - y = rect.y + rectHeight / 2 - domHeight / 2; - } - return [x, y]; - } - function isCenterAlign2(align) { - return align === "center" || align === "middle"; - } - function findComponentReference2(payload, ecModel, api) { - var queryOptionMap = preParseFinder2(payload).queryOptionMap; - var componentMainType = queryOptionMap.keys()[0]; - if (!componentMainType || componentMainType === "series") { - return; - } - var queryResult = queryReferringComponents2(ecModel, componentMainType, queryOptionMap.get(componentMainType), { - useDefault: false, - enableAll: false, - enableNone: false - }); - var model = queryResult.models[0]; - if (!model) { - return; - } - var view = api.getViewOfComponentModel(model); - var el; - view.group.traverse(function(subEl) { - var tooltipConfig = getECData2(subEl).tooltipConfig; - if (tooltipConfig && tooltipConfig.name === payload.name) { - el = subEl; - return true; - } - }); - if (el) { - return { - componentMainType, - componentIndex: model.componentIndex, - el - }; - } - } - function install$A(registers) { - use2(install$s); - registers.registerComponentModel(TooltipModel2); - registers.registerComponentView(TooltipView2); - registers.registerAction({ - type: "showTip", - event: "showTip", - update: "tooltip:manuallyShowTip" - }, noop2); - registers.registerAction({ - type: "hideTip", - event: "hideTip", - update: "tooltip:manuallyHideTip" - }, noop2); - } - var DEFAULT_TOOLBOX_BTNS2 = ["rect", "polygon", "keep", "clear"]; - function brushPreprocessor2(option, isNew) { - var brushComponents = normalizeToArray2(option ? option.brush : []); - if (!brushComponents.length) { - return; - } - var brushComponentSpecifiedBtns = []; - each17(brushComponents, function(brushOpt) { - var tbs = brushOpt.hasOwnProperty("toolbox") ? brushOpt.toolbox : []; - if (tbs instanceof Array) { - brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs); - } - }); - var toolbox = option && option.toolbox; - if (isArray3(toolbox)) { - toolbox = toolbox[0]; - } - if (!toolbox) { - toolbox = { - feature: {} - }; - option.toolbox = [toolbox]; - } - var toolboxFeature = toolbox.feature || (toolbox.feature = {}); - var toolboxBrush = toolboxFeature.brush || (toolboxFeature.brush = {}); - var brushTypes = toolboxBrush.type || (toolboxBrush.type = []); - brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns); - removeDuplicate2(brushTypes); - if (isNew && !brushTypes.length) { - brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS2); - } - } - function removeDuplicate2(arr) { - var map4 = {}; - each17(arr, function(val) { - map4[val] = 1; - }); - arr.length = 0; - each17(map4, function(flag, val) { - arr.push(val); - }); - } - var each$b = each17; - function hasKeys2(obj) { - if (obj) { - for (var name_1 in obj) { - if (obj.hasOwnProperty(name_1)) { - return true; - } - } - } - } - function createVisualMappings2(option, stateList, supplementVisualOption) { - var visualMappings = {}; - each$b(stateList, function(state) { - var mappings = visualMappings[state] = createMappings(); - each$b(option[state], function(visualData, visualType) { - if (!VisualMapping2.isValidType(visualType)) { - return; - } - var mappingOption = { - type: visualType, - visual: visualData - }; - supplementVisualOption && supplementVisualOption(mappingOption, state); - mappings[visualType] = new VisualMapping2(mappingOption); - if (visualType === "opacity") { - mappingOption = clone6(mappingOption); - mappingOption.type = "colorAlpha"; - mappings.__hidden.__alphaForOpacity = new VisualMapping2(mappingOption); - } - }); - }); - return visualMappings; - function createMappings() { - var Creater = function() { - }; - Creater.prototype.__hidden = Creater.prototype; - var obj = new Creater(); - return obj; - } - } - function replaceVisualOption2(thisOption, newOption, keys3) { - var has4; - each17(keys3, function(key) { - if (newOption.hasOwnProperty(key) && hasKeys2(newOption[key])) { - has4 = true; - } - }); - has4 && each17(keys3, function(key) { - if (newOption.hasOwnProperty(key) && hasKeys2(newOption[key])) { - thisOption[key] = clone6(newOption[key]); - } else { - delete thisOption[key]; - } - }); - } - function applyVisual2(stateList, visualMappings, data, getValueState, scope, dimension) { - var visualTypesMap = {}; - each17(stateList, function(state) { - var visualTypes = VisualMapping2.prepareVisualTypes(visualMappings[state]); - visualTypesMap[state] = visualTypes; - }); - var dataIndex; - function getVisual(key) { - return getItemVisualFromData2(data, dataIndex, key); - } - function setVisual(key, value) { - setItemVisualFromData2(data, dataIndex, key, value); - } - if (dimension == null) { - data.each(eachItem); - } else { - data.each([dimension], eachItem); - } - function eachItem(valueOrIndex, index) { - dataIndex = dimension == null ? valueOrIndex : index; - var rawDataItem = data.getRawDataItem(dataIndex); - if (rawDataItem && rawDataItem.visualMap === false) { - return; - } - var valueState = getValueState.call(scope, valueOrIndex); - var mappings = visualMappings[valueState]; - var visualTypes = visualTypesMap[valueState]; - for (var i2 = 0, len3 = visualTypes.length; i2 < len3; i2++) { - var type = visualTypes[i2]; - mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual); - } - } - } - function incrementalApplyVisual2(stateList, visualMappings, getValueState, dim) { - var visualTypesMap = {}; - each17(stateList, function(state) { - var visualTypes = VisualMapping2.prepareVisualTypes(visualMappings[state]); - visualTypesMap[state] = visualTypes; - }); - return { - progress: function progress(params, data) { - var dimIndex; - if (dim != null) { - dimIndex = data.getDimensionIndex(dim); - } - function getVisual(key) { - return getItemVisualFromData2(data, dataIndex, key); - } - function setVisual(key, value2) { - setItemVisualFromData2(data, dataIndex, key, value2); - } - var dataIndex; - var store = data.getStore(); - while ((dataIndex = params.next()) != null) { - var rawDataItem = data.getRawDataItem(dataIndex); - if (rawDataItem && rawDataItem.visualMap === false) { - continue; - } - var value = dim != null ? store.get(dimIndex, dataIndex) : dataIndex; - var valueState = getValueState(value); - var mappings = visualMappings[valueState]; - var visualTypes = visualTypesMap[valueState]; - for (var i2 = 0, len3 = visualTypes.length; i2 < len3; i2++) { - var type = visualTypes[i2]; - mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual); - } - } - } - }; - } - function makeBrushCommonSelectorForSeries2(area) { - var brushType = area.brushType; - var selectors = { - point: function(itemLayout) { - return selector2[brushType].point(itemLayout, selectors, area); - }, - rect: function(itemLayout) { - return selector2[brushType].rect(itemLayout, selectors, area); - } - }; - return selectors; - } - var selector2 = { - lineX: getLineSelectors2(0), - lineY: getLineSelectors2(1), - rect: { - point: function(itemLayout, selectors, area) { - return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]); - }, - rect: function(itemLayout, selectors, area) { - return itemLayout && area.boundingRect.intersect(itemLayout); - } - }, - polygon: { - point: function(itemLayout, selectors, area) { - return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]) && contain$2(area.range, itemLayout[0], itemLayout[1]); - }, - rect: function(itemLayout, selectors, area) { - var points5 = area.range; - if (!itemLayout || points5.length <= 1) { - return false; - } - var x = itemLayout.x; - var y = itemLayout.y; - var width = itemLayout.width; - var height = itemLayout.height; - var p = points5[0]; - if (contain$2(points5, x, y) || contain$2(points5, x + width, y) || contain$2(points5, x, y + height) || contain$2(points5, x + width, y + height) || BoundingRect2.create(itemLayout).contain(p[0], p[1]) || linePolygonIntersect2(x, y, x + width, y, points5) || linePolygonIntersect2(x, y, x, y + height, points5) || linePolygonIntersect2(x + width, y, x + width, y + height, points5) || linePolygonIntersect2(x, y + height, x + width, y + height, points5)) { - return true; - } - } - } - }; - function getLineSelectors2(xyIndex) { - var xy = ["x", "y"]; - var wh = ["width", "height"]; - return { - point: function(itemLayout, selectors, area) { - if (itemLayout) { - var range = area.range; - var p = itemLayout[xyIndex]; - return inLineRange2(p, range); - } - }, - rect: function(itemLayout, selectors, area) { - if (itemLayout) { - var range = area.range; - var layoutRange = [itemLayout[xy[xyIndex]], itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]]]; - layoutRange[1] < layoutRange[0] && layoutRange.reverse(); - return inLineRange2(layoutRange[0], range) || inLineRange2(layoutRange[1], range) || inLineRange2(range[0], layoutRange) || inLineRange2(range[1], layoutRange); - } - } - }; - } - function inLineRange2(p, range) { - return range[0] <= p && p <= range[1]; - } - var STATE_LIST2 = ["inBrush", "outOfBrush"]; - var DISPATCH_METHOD2 = "__ecBrushSelect"; - var DISPATCH_FLAG2 = "__ecInBrushSelectEvent"; - function layoutCovers2(ecModel) { - ecModel.eachComponent({ - mainType: "brush" - }, function(brushModel) { - var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager2(brushModel.option, ecModel); - brushTargetManager.setInputRanges(brushModel.areas, ecModel); - }); - } - function brushVisual2(ecModel, api, payload) { - var brushSelected = []; - var throttleType; - var throttleDelay; - ecModel.eachComponent({ - mainType: "brush" - }, function(brushModel) { - payload && payload.type === "takeGlobalCursor" && brushModel.setBrushOption(payload.key === "brush" ? payload.brushOption : { - brushType: false - }); - }); - layoutCovers2(ecModel); - ecModel.eachComponent({ - mainType: "brush" - }, function(brushModel, brushIndex) { - var thisBrushSelected = { - brushId: brushModel.id, - brushIndex, - brushName: brushModel.name, - areas: clone6(brushModel.areas), - selected: [] - }; - brushSelected.push(thisBrushSelected); - var brushOption = brushModel.option; - var brushLink = brushOption.brushLink; - var linkedSeriesMap = []; - var selectedDataIndexForLink = []; - var rangeInfoBySeries = []; - var hasBrushExists = false; - if (!brushIndex) { - throttleType = brushOption.throttleType; - throttleDelay = brushOption.throttleDelay; - } - var areas = map3(brushModel.areas, function(area) { - var builder = boundingRectBuilders2[area.brushType]; - var selectableArea = defaults2({ - boundingRect: builder ? builder(area) : void 0 - }, area); - selectableArea.selectors = makeBrushCommonSelectorForSeries2(selectableArea); - return selectableArea; - }); - var visualMappings = createVisualMappings2(brushModel.option, STATE_LIST2, function(mappingOption) { - mappingOption.mappingMethod = "fixed"; - }); - isArray3(brushLink) && each17(brushLink, function(seriesIndex) { - linkedSeriesMap[seriesIndex] = 1; - }); - function linkOthers(seriesIndex) { - return brushLink === "all" || !!linkedSeriesMap[seriesIndex]; - } - function brushed(rangeInfoList) { - return !!rangeInfoList.length; - } - ecModel.eachSeries(function(seriesModel, seriesIndex) { - var rangeInfoList = rangeInfoBySeries[seriesIndex] = []; - seriesModel.subType === "parallel" ? stepAParallel(seriesModel, seriesIndex) : stepAOthers(seriesModel, seriesIndex, rangeInfoList); - }); - function stepAParallel(seriesModel, seriesIndex) { - var coordSys = seriesModel.coordinateSystem; - hasBrushExists = hasBrushExists || coordSys.hasAxisBrushed(); - linkOthers(seriesIndex) && coordSys.eachActiveState(seriesModel.getData(), function(activeState, dataIndex) { - activeState === "active" && (selectedDataIndexForLink[dataIndex] = 1); - }); - } - function stepAOthers(seriesModel, seriesIndex, rangeInfoList) { - if (!seriesModel.brushSelector || brushModelNotControll2(brushModel, seriesIndex)) { - return; - } - each17(areas, function(area) { - if (brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel)) { - rangeInfoList.push(area); - } - hasBrushExists = hasBrushExists || brushed(rangeInfoList); - }); - if (linkOthers(seriesIndex) && brushed(rangeInfoList)) { - var data_1 = seriesModel.getData(); - data_1.each(function(dataIndex) { - if (checkInRange2(seriesModel, rangeInfoList, data_1, dataIndex)) { - selectedDataIndexForLink[dataIndex] = 1; - } - }); - } - } - ecModel.eachSeries(function(seriesModel, seriesIndex) { - var seriesBrushSelected = { - seriesId: seriesModel.id, - seriesIndex, - seriesName: seriesModel.name, - dataIndex: [] - }; - thisBrushSelected.selected.push(seriesBrushSelected); - var rangeInfoList = rangeInfoBySeries[seriesIndex]; - var data = seriesModel.getData(); - var getValueState = linkOthers(seriesIndex) ? function(dataIndex) { - return selectedDataIndexForLink[dataIndex] ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), "inBrush") : "outOfBrush"; - } : function(dataIndex) { - return checkInRange2(seriesModel, rangeInfoList, data, dataIndex) ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), "inBrush") : "outOfBrush"; - }; - (linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList)) && applyVisual2(STATE_LIST2, visualMappings, data, getValueState); - }); - }); - dispatchAction3(api, throttleType, throttleDelay, brushSelected, payload); - } - function dispatchAction3(api, throttleType, throttleDelay, brushSelected, payload) { - if (!payload) { - return; - } - var zr = api.getZr(); - if (zr[DISPATCH_FLAG2]) { - return; - } - if (!zr[DISPATCH_METHOD2]) { - zr[DISPATCH_METHOD2] = doDispatch2; - } - var fn = createOrUpdate2(zr, DISPATCH_METHOD2, throttleDelay, throttleType); - fn(api, brushSelected); - } - function doDispatch2(api, brushSelected) { - if (!api.isDisposed()) { - var zr = api.getZr(); - zr[DISPATCH_FLAG2] = true; - api.dispatchAction({ - type: "brushSelect", - batch: brushSelected - }); - zr[DISPATCH_FLAG2] = false; - } - } - function checkInRange2(seriesModel, rangeInfoList, data, dataIndex) { - for (var i2 = 0, len3 = rangeInfoList.length; i2 < len3; i2++) { - var area = rangeInfoList[i2]; - if (seriesModel.brushSelector(dataIndex, data, area.selectors, area)) { - return true; - } - } - } - function brushModelNotControll2(brushModel, seriesIndex) { - var seriesIndices = brushModel.option.seriesIndex; - return seriesIndices != null && seriesIndices !== "all" && (isArray3(seriesIndices) ? indexOf2(seriesIndices, seriesIndex) < 0 : seriesIndex !== seriesIndices); - } - var boundingRectBuilders2 = { - rect: function(area) { - return getBoundingRectFromMinMax2(area.range); - }, - polygon: function(area) { - var minMax; - var range = area.range; - for (var i2 = 0, len3 = range.length; i2 < len3; i2++) { - minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]]; - var rg = range[i2]; - rg[0] < minMax[0][0] && (minMax[0][0] = rg[0]); - rg[0] > minMax[0][1] && (minMax[0][1] = rg[0]); - rg[1] < minMax[1][0] && (minMax[1][0] = rg[1]); - rg[1] > minMax[1][1] && (minMax[1][1] = rg[1]); - } - return minMax && getBoundingRectFromMinMax2(minMax); - } - }; - function getBoundingRectFromMinMax2(minMax) { - return new BoundingRect2(minMax[0][0], minMax[1][0], minMax[0][1] - minMax[0][0], minMax[1][1] - minMax[1][0]); - } - var BrushView2 = ( - /** @class */ - function(_super) { - __extends2(BrushView3, _super); - function BrushView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = BrushView3.type; - return _this; - } - BrushView3.prototype.init = function(ecModel, api) { - this.ecModel = ecModel; - this.api = api; - this.model; - (this._brushController = new BrushController2(api.getZr())).on("brush", bind3(this._onBrush, this)).mount(); - }; - BrushView3.prototype.render = function(brushModel, ecModel, api, payload) { - this.model = brushModel; - this._updateController(brushModel, ecModel, api, payload); - }; - BrushView3.prototype.updateTransform = function(brushModel, ecModel, api, payload) { - layoutCovers2(ecModel); - this._updateController(brushModel, ecModel, api, payload); - }; - BrushView3.prototype.updateVisual = function(brushModel, ecModel, api, payload) { - this.updateTransform(brushModel, ecModel, api, payload); - }; - BrushView3.prototype.updateView = function(brushModel, ecModel, api, payload) { - this._updateController(brushModel, ecModel, api, payload); - }; - BrushView3.prototype._updateController = function(brushModel, ecModel, api, payload) { - (!payload || payload.$from !== brushModel.id) && this._brushController.setPanels(brushModel.brushTargetManager.makePanelOpts(api)).enableBrush(brushModel.brushOption).updateCovers(brushModel.areas.slice()); - }; - BrushView3.prototype.dispose = function() { - this._brushController.dispose(); - }; - BrushView3.prototype._onBrush = function(eventParam) { - var modelId = this.model.id; - var areas = this.model.brushTargetManager.setOutputRanges(eventParam.areas, this.ecModel); - (!eventParam.isEnd || eventParam.removeOnClick) && this.api.dispatchAction({ - type: "brush", - brushId: modelId, - areas: clone6(areas), - $from: modelId - }); - eventParam.isEnd && this.api.dispatchAction({ - type: "brushEnd", - brushId: modelId, - areas: clone6(areas), - $from: modelId - }); - }; - BrushView3.type = "brush"; - return BrushView3; - }(ComponentView2) - ); - var DEFAULT_OUT_OF_BRUSH_COLOR2 = "#ddd"; - var BrushModel2 = ( - /** @class */ - function(_super) { - __extends2(BrushModel3, _super); - function BrushModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = BrushModel3.type; - _this.areas = []; - _this.brushOption = {}; - return _this; - } - BrushModel3.prototype.optionUpdated = function(newOption, isInit) { - var thisOption = this.option; - !isInit && replaceVisualOption2(thisOption, newOption, ["inBrush", "outOfBrush"]); - var inBrush = thisOption.inBrush = thisOption.inBrush || {}; - thisOption.outOfBrush = thisOption.outOfBrush || { - color: DEFAULT_OUT_OF_BRUSH_COLOR2 - }; - if (!inBrush.hasOwnProperty("liftZ")) { - inBrush.liftZ = 5; - } - }; - BrushModel3.prototype.setAreas = function(areas) { - if (true) { - assert2(isArray3(areas)); - each17(areas, function(area) { - assert2(area.brushType, "Illegal areas"); - }); - } - if (!areas) { - return; - } - this.areas = map3(areas, function(area) { - return generateBrushOption2(this.option, area); - }, this); - }; - BrushModel3.prototype.setBrushOption = function(brushOption) { - this.brushOption = generateBrushOption2(this.option, brushOption); - this.brushType = this.brushOption.brushType; - }; - BrushModel3.type = "brush"; - BrushModel3.dependencies = ["geo", "grid", "xAxis", "yAxis", "parallel", "series"]; - BrushModel3.defaultOption = { - seriesIndex: "all", - brushType: "rect", - brushMode: "single", - transformable: true, - brushStyle: { - borderWidth: 1, - color: "rgba(210,219,238,0.3)", - borderColor: "#D2DBEE" - }, - throttleType: "fixRate", - throttleDelay: 0, - removeOnClick: true, - z: 1e4 - }; - return BrushModel3; - }(ComponentModel2) - ); - function generateBrushOption2(option, brushOption) { - return merge2({ - brushType: option.brushType, - brushMode: option.brushMode, - transformable: option.transformable, - brushStyle: new Model2(option.brushStyle).getItemStyle(), - removeOnClick: option.removeOnClick, - z: option.z - }, brushOption, true); - } - var ICON_TYPES2 = ["rect", "polygon", "lineX", "lineY", "keep", "clear"]; - var BrushFeature2 = ( - /** @class */ - function(_super) { - __extends2(BrushFeature3, _super); - function BrushFeature3() { - return _super !== null && _super.apply(this, arguments) || this; - } - BrushFeature3.prototype.render = function(featureModel, ecModel, api) { - var brushType; - var brushMode; - var isBrushed; - ecModel.eachComponent({ - mainType: "brush" - }, function(brushModel) { - brushType = brushModel.brushType; - brushMode = brushModel.brushOption.brushMode || "single"; - isBrushed = isBrushed || !!brushModel.areas.length; - }); - this._brushType = brushType; - this._brushMode = brushMode; - each17(featureModel.get("type", true), function(type) { - featureModel.setIconStatus(type, (type === "keep" ? brushMode === "multiple" : type === "clear" ? isBrushed : type === brushType) ? "emphasis" : "normal"); - }); - }; - BrushFeature3.prototype.updateView = function(featureModel, ecModel, api) { - this.render(featureModel, ecModel, api); - }; - BrushFeature3.prototype.getIcons = function() { - var model = this.model; - var availableIcons = model.get("icon", true); - var icons = {}; - each17(model.get("type", true), function(type) { - if (availableIcons[type]) { - icons[type] = availableIcons[type]; - } - }); - return icons; - }; - BrushFeature3.prototype.onclick = function(ecModel, api, type) { - var brushType = this._brushType; - var brushMode = this._brushMode; - if (type === "clear") { - api.dispatchAction({ - type: "axisAreaSelect", - intervals: [] - }); - api.dispatchAction({ - type: "brush", - command: "clear", - // Clear all areas of all brush components. - areas: [] - }); - } else { - api.dispatchAction({ - type: "takeGlobalCursor", - key: "brush", - brushOption: { - brushType: type === "keep" ? brushType : brushType === type ? false : type, - brushMode: type === "keep" ? brushMode === "multiple" ? "single" : "multiple" : brushMode - } - }); - } - }; - BrushFeature3.getDefaultOption = function(ecModel) { - var defaultOption4 = { - show: true, - type: ICON_TYPES2.slice(), - icon: { - /* eslint-disable */ - rect: "M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13", - polygon: "M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2", - lineX: "M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4", - lineY: "M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4", - keep: "M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z", - clear: "M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2" - // jshint ignore:line - /* eslint-enable */ - }, - // `rect`, `polygon`, `lineX`, `lineY`, `keep`, `clear` - title: ecModel.getLocaleModel().get(["toolbox", "brush", "title"]) - }; - return defaultOption4; - }; - return BrushFeature3; - }(ToolboxFeature2) - ); - function install$B(registers) { - registers.registerComponentView(BrushView2); - registers.registerComponentModel(BrushModel2); - registers.registerPreprocessor(brushPreprocessor2); - registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, brushVisual2); - registers.registerAction({ - type: "brush", - event: "brush", - update: "updateVisual" - }, function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "brush", - query: payload - }, function(brushModel) { - brushModel.setAreas(payload.areas); - }); - }); - registers.registerAction({ - type: "brushSelect", - event: "brushSelected", - update: "none" - }, noop2); - registers.registerAction({ - type: "brushEnd", - event: "brushEnd", - update: "none" - }, noop2); - registerFeature2("brush", BrushFeature2); - } - var TitleModel2 = ( - /** @class */ - function(_super) { - __extends2(TitleModel3, _super); - function TitleModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TitleModel3.type; - _this.layoutMode = { - type: "box", - ignoreSize: true - }; - return _this; - } - TitleModel3.type = "title"; - TitleModel3.defaultOption = { - // zlevel: 0, - z: 6, - show: true, - text: "", - target: "blank", - subtext: "", - subtarget: "blank", - left: 0, - top: 0, - backgroundColor: "rgba(0,0,0,0)", - borderColor: "#ccc", - borderWidth: 0, - padding: 5, - itemGap: 10, - textStyle: { - fontSize: 18, - fontWeight: "bold", - color: "#464646" - }, - subtextStyle: { - fontSize: 12, - color: "#6E7079" - } - }; - return TitleModel3; - }(ComponentModel2) - ); - var TitleView2 = ( - /** @class */ - function(_super) { - __extends2(TitleView3, _super); - function TitleView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TitleView3.type; - return _this; - } - TitleView3.prototype.render = function(titleModel, ecModel, api) { - this.group.removeAll(); - if (!titleModel.get("show")) { - return; - } - var group = this.group; - var textStyleModel = titleModel.getModel("textStyle"); - var subtextStyleModel = titleModel.getModel("subtextStyle"); - var textAlign = titleModel.get("textAlign"); - var textVerticalAlign = retrieve22(titleModel.get("textBaseline"), titleModel.get("textVerticalAlign")); - var textEl = new ZRText2({ - style: createTextStyle3(textStyleModel, { - text: titleModel.get("text"), - fill: textStyleModel.getTextColor() - }, { - disableBox: true - }), - z2: 10 - }); - var textRect = textEl.getBoundingRect(); - var subText = titleModel.get("subtext"); - var subTextEl = new ZRText2({ - style: createTextStyle3(subtextStyleModel, { - text: subText, - fill: subtextStyleModel.getTextColor(), - y: textRect.height + titleModel.get("itemGap"), - verticalAlign: "top" - }, { - disableBox: true - }), - z2: 10 - }); - var link = titleModel.get("link"); - var sublink = titleModel.get("sublink"); - var triggerEvent = titleModel.get("triggerEvent", true); - textEl.silent = !link && !triggerEvent; - subTextEl.silent = !sublink && !triggerEvent; - if (link) { - textEl.on("click", function() { - windowOpen2(link, "_" + titleModel.get("target")); - }); - } - if (sublink) { - subTextEl.on("click", function() { - windowOpen2(sublink, "_" + titleModel.get("subtarget")); - }); - } - getECData2(textEl).eventData = getECData2(subTextEl).eventData = triggerEvent ? { - componentType: "title", - componentIndex: titleModel.componentIndex - } : null; - group.add(textEl); - subText && group.add(subTextEl); - var groupRect = group.getBoundingRect(); - var layoutOption = titleModel.getBoxLayoutParams(); - layoutOption.width = groupRect.width; - layoutOption.height = groupRect.height; - var layoutRect = getLayoutRect2(layoutOption, { - width: api.getWidth(), - height: api.getHeight() - }, titleModel.get("padding")); - if (!textAlign) { - textAlign = titleModel.get("left") || titleModel.get("right"); - if (textAlign === "middle") { - textAlign = "center"; - } - if (textAlign === "right") { - layoutRect.x += layoutRect.width; - } else if (textAlign === "center") { - layoutRect.x += layoutRect.width / 2; - } - } - if (!textVerticalAlign) { - textVerticalAlign = titleModel.get("top") || titleModel.get("bottom"); - if (textVerticalAlign === "center") { - textVerticalAlign = "middle"; - } - if (textVerticalAlign === "bottom") { - layoutRect.y += layoutRect.height; - } else if (textVerticalAlign === "middle") { - layoutRect.y += layoutRect.height / 2; - } - textVerticalAlign = textVerticalAlign || "top"; - } - group.x = layoutRect.x; - group.y = layoutRect.y; - group.markRedraw(); - var alignStyle = { - align: textAlign, - verticalAlign: textVerticalAlign - }; - textEl.setStyle(alignStyle); - subTextEl.setStyle(alignStyle); - groupRect = group.getBoundingRect(); - var padding = layoutRect.margin; - var style = titleModel.getItemStyle(["color", "opacity"]); - style.fill = titleModel.get("backgroundColor"); - var rect = new Rect4({ - shape: { - x: groupRect.x - padding[3], - y: groupRect.y - padding[0], - width: groupRect.width + padding[1] + padding[3], - height: groupRect.height + padding[0] + padding[2], - r: titleModel.get("borderRadius") - }, - style, - subPixelOptimize: true, - silent: true - }); - group.add(rect); - }; - TitleView3.type = "title"; - return TitleView3; - }(ComponentView2) - ); - function install$C(registers) { - registers.registerComponentModel(TitleModel2); - registers.registerComponentView(TitleView2); - } - var TimelineModel2 = ( - /** @class */ - function(_super) { - __extends2(TimelineModel3, _super); - function TimelineModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TimelineModel3.type; - _this.layoutMode = "box"; - return _this; - } - TimelineModel3.prototype.init = function(option, parentModel, ecModel) { - this.mergeDefaultAndTheme(option, ecModel); - this._initData(); - }; - TimelineModel3.prototype.mergeOption = function(option) { - _super.prototype.mergeOption.apply(this, arguments); - this._initData(); - }; - TimelineModel3.prototype.setCurrentIndex = function(currentIndex) { - if (currentIndex == null) { - currentIndex = this.option.currentIndex; - } - var count3 = this._data.count(); - if (this.option.loop) { - currentIndex = (currentIndex % count3 + count3) % count3; - } else { - currentIndex >= count3 && (currentIndex = count3 - 1); - currentIndex < 0 && (currentIndex = 0); - } - this.option.currentIndex = currentIndex; - }; - TimelineModel3.prototype.getCurrentIndex = function() { - return this.option.currentIndex; - }; - TimelineModel3.prototype.isIndexMax = function() { - return this.getCurrentIndex() >= this._data.count() - 1; - }; - TimelineModel3.prototype.setPlayState = function(state) { - this.option.autoPlay = !!state; - }; - TimelineModel3.prototype.getPlayState = function() { - return !!this.option.autoPlay; - }; - TimelineModel3.prototype._initData = function() { - var thisOption = this.option; - var dataArr = thisOption.data || []; - var axisType = thisOption.axisType; - var names = this._names = []; - var processedDataArr; - if (axisType === "category") { - processedDataArr = []; - each17(dataArr, function(item, index) { - var value = convertOptionIdName2(getDataItemValue2(item), ""); - var newItem; - if (isObject5(item)) { - newItem = clone6(item); - newItem.value = index; - } else { - newItem = index; - } - processedDataArr.push(newItem); - names.push(value); - }); - } else { - processedDataArr = dataArr; - } - var dimType = { - category: "ordinal", - time: "time", - value: "number" - }[axisType] || "number"; - var data = this._data = new SeriesData2([{ - name: "value", - type: dimType - }], this); - data.initData(processedDataArr, names); - }; - TimelineModel3.prototype.getData = function() { - return this._data; - }; - TimelineModel3.prototype.getCategories = function() { - if (this.get("axisType") === "category") { - return this._names.slice(); - } - }; - TimelineModel3.type = "timeline"; - TimelineModel3.defaultOption = { - // zlevel: 0, // 一级层叠 - z: 4, - show: true, - axisType: "time", - realtime: true, - left: "20%", - top: null, - right: "20%", - bottom: 0, - width: null, - height: 40, - padding: 5, - controlPosition: "left", - autoPlay: false, - rewind: false, - loop: true, - playInterval: 2e3, - currentIndex: 0, - itemStyle: {}, - label: { - color: "#000" - }, - data: [] - }; - return TimelineModel3; - }(ComponentModel2) - ); - var SliderTimelineModel2 = ( - /** @class */ - function(_super) { - __extends2(SliderTimelineModel3, _super); - function SliderTimelineModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SliderTimelineModel3.type; - return _this; - } - SliderTimelineModel3.type = "timeline.slider"; - SliderTimelineModel3.defaultOption = inheritDefaultOption2(TimelineModel2.defaultOption, { - backgroundColor: "rgba(0,0,0,0)", - borderColor: "#ccc", - borderWidth: 0, - orient: "horizontal", - inverse: false, - tooltip: { - trigger: "item" - // data item may also have tootip attr. - }, - symbol: "circle", - symbolSize: 12, - lineStyle: { - show: true, - width: 2, - color: "#DAE1F5" - }, - label: { - position: "auto", - // When using number, label position is not - // restricted by viewRect. - // positive: right/bottom, negative: left/top - show: true, - interval: "auto", - rotate: 0, - // formatter: null, - // 其余属性默认使用全局文本样式,详见TEXTSTYLE - color: "#A4B1D7" - }, - itemStyle: { - color: "#A4B1D7", - borderWidth: 1 - }, - checkpointStyle: { - symbol: "circle", - symbolSize: 15, - color: "#316bf3", - borderColor: "#fff", - borderWidth: 2, - shadowBlur: 2, - shadowOffsetX: 1, - shadowOffsetY: 1, - shadowColor: "rgba(0, 0, 0, 0.3)", - // borderColor: 'rgba(194,53,49, 0.5)', - animation: true, - animationDuration: 300, - animationEasing: "quinticInOut" - }, - controlStyle: { - show: true, - showPlayBtn: true, - showPrevBtn: true, - showNextBtn: true, - itemSize: 24, - itemGap: 12, - position: "left", - playIcon: "path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z", - stopIcon: "path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z", - // eslint-disable-next-line max-len - nextIcon: "M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z", - // eslint-disable-next-line max-len - prevIcon: "M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z", - prevBtnSize: 18, - nextBtnSize: 18, - color: "#A4B1D7", - borderColor: "#A4B1D7", - borderWidth: 1 - }, - emphasis: { - label: { - show: true, - // 其余属性默认使用全局文本样式,详见TEXTSTYLE - color: "#6f778d" - }, - itemStyle: { - color: "#316BF3" - }, - controlStyle: { - color: "#316BF3", - borderColor: "#316BF3", - borderWidth: 2 - } - }, - progress: { - lineStyle: { - color: "#316BF3" - }, - itemStyle: { - color: "#316BF3" - }, - label: { - color: "#6f778d" - } - }, - data: [] - }); - return SliderTimelineModel3; - }(TimelineModel2) - ); - mixin2(SliderTimelineModel2, DataFormatMixin2.prototype); - var TimelineView2 = ( - /** @class */ - function(_super) { - __extends2(TimelineView3, _super); - function TimelineView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TimelineView3.type; - return _this; - } - TimelineView3.type = "timeline"; - return TimelineView3; - }(ComponentView2) - ); - var TimelineAxis2 = ( - /** @class */ - function(_super) { - __extends2(TimelineAxis3, _super); - function TimelineAxis3(dim, scale5, coordExtent, axisType) { - var _this = _super.call(this, dim, scale5, coordExtent) || this; - _this.type = axisType || "value"; - return _this; - } - TimelineAxis3.prototype.getLabelModel = function() { - return this.model.getModel("label"); - }; - TimelineAxis3.prototype.isHorizontal = function() { - return this.model.get("orient") === "horizontal"; - }; - return TimelineAxis3; - }(Axis2) - ); - var PI$8 = Math.PI; - var labelDataIndexStore2 = makeInner2(); - var SliderTimelineView2 = ( - /** @class */ - function(_super) { - __extends2(SliderTimelineView3, _super); - function SliderTimelineView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SliderTimelineView3.type; - return _this; - } - SliderTimelineView3.prototype.init = function(ecModel, api) { - this.api = api; - }; - SliderTimelineView3.prototype.render = function(timelineModel, ecModel, api) { - this.model = timelineModel; - this.api = api; - this.ecModel = ecModel; - this.group.removeAll(); - if (timelineModel.get("show", true)) { - var layoutInfo_1 = this._layout(timelineModel, api); - var mainGroup_1 = this._createGroup("_mainGroup"); - var labelGroup = this._createGroup("_labelGroup"); - var axis_1 = this._axis = this._createAxis(layoutInfo_1, timelineModel); - timelineModel.formatTooltip = function(dataIndex) { - var name = axis_1.scale.getLabel({ - value: dataIndex - }); - return createTooltipMarkup2("nameValue", { - noName: true, - value: name - }); - }; - each17(["AxisLine", "AxisTick", "Control", "CurrentPointer"], function(name) { - this["_render" + name](layoutInfo_1, mainGroup_1, axis_1, timelineModel); - }, this); - this._renderAxisLabel(layoutInfo_1, labelGroup, axis_1, timelineModel); - this._position(layoutInfo_1, timelineModel); - } - this._doPlayStop(); - this._updateTicksStatus(); - }; - SliderTimelineView3.prototype.remove = function() { - this._clearTimer(); - this.group.removeAll(); - }; - SliderTimelineView3.prototype.dispose = function() { - this._clearTimer(); - }; - SliderTimelineView3.prototype._layout = function(timelineModel, api) { - var labelPosOpt = timelineModel.get(["label", "position"]); - var orient = timelineModel.get("orient"); - var viewRect3 = getViewRect$5(timelineModel, api); - var parsedLabelPos; - if (labelPosOpt == null || labelPosOpt === "auto") { - parsedLabelPos = orient === "horizontal" ? viewRect3.y + viewRect3.height / 2 < api.getHeight() / 2 ? "-" : "+" : viewRect3.x + viewRect3.width / 2 < api.getWidth() / 2 ? "+" : "-"; - } else if (isString2(labelPosOpt)) { - parsedLabelPos = { - horizontal: { - top: "-", - bottom: "+" - }, - vertical: { - left: "-", - right: "+" - } - }[orient][labelPosOpt]; - } else { - parsedLabelPos = labelPosOpt; - } - var labelAlignMap = { - horizontal: "center", - vertical: parsedLabelPos >= 0 || parsedLabelPos === "+" ? "left" : "right" - }; - var labelBaselineMap = { - horizontal: parsedLabelPos >= 0 || parsedLabelPos === "+" ? "top" : "bottom", - vertical: "middle" - }; - var rotationMap = { - horizontal: 0, - vertical: PI$8 / 2 - }; - var mainLength = orient === "vertical" ? viewRect3.height : viewRect3.width; - var controlModel = timelineModel.getModel("controlStyle"); - var showControl = controlModel.get("show", true); - var controlSize = showControl ? controlModel.get("itemSize") : 0; - var controlGap = showControl ? controlModel.get("itemGap") : 0; - var sizePlusGap = controlSize + controlGap; - var labelRotation = timelineModel.get(["label", "rotate"]) || 0; - labelRotation = labelRotation * PI$8 / 180; - var playPosition; - var prevBtnPosition; - var nextBtnPosition; - var controlPosition = controlModel.get("position", true); - var showPlayBtn = showControl && controlModel.get("showPlayBtn", true); - var showPrevBtn = showControl && controlModel.get("showPrevBtn", true); - var showNextBtn = showControl && controlModel.get("showNextBtn", true); - var xLeft = 0; - var xRight = mainLength; - if (controlPosition === "left" || controlPosition === "bottom") { - showPlayBtn && (playPosition = [0, 0], xLeft += sizePlusGap); - showPrevBtn && (prevBtnPosition = [xLeft, 0], xLeft += sizePlusGap); - showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap); - } else { - showPlayBtn && (playPosition = [xRight - controlSize, 0], xRight -= sizePlusGap); - showPrevBtn && (prevBtnPosition = [0, 0], xLeft += sizePlusGap); - showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap); - } - var axisExtent = [xLeft, xRight]; - if (timelineModel.get("inverse")) { - axisExtent.reverse(); - } - return { - viewRect: viewRect3, - mainLength, - orient, - rotation: rotationMap[orient], - labelRotation, - labelPosOpt: parsedLabelPos, - labelAlign: timelineModel.get(["label", "align"]) || labelAlignMap[orient], - labelBaseline: timelineModel.get(["label", "verticalAlign"]) || timelineModel.get(["label", "baseline"]) || labelBaselineMap[orient], - // Based on mainGroup. - playPosition, - prevBtnPosition, - nextBtnPosition, - axisExtent, - controlSize, - controlGap - }; - }; - SliderTimelineView3.prototype._position = function(layoutInfo, timelineModel) { - var mainGroup = this._mainGroup; - var labelGroup = this._labelGroup; - var viewRect3 = layoutInfo.viewRect; - if (layoutInfo.orient === "vertical") { - var m3 = create$1(); - var rotateOriginX = viewRect3.x; - var rotateOriginY = viewRect3.y + viewRect3.height; - translate2(m3, m3, [-rotateOriginX, -rotateOriginY]); - rotate2(m3, m3, -PI$8 / 2); - translate2(m3, m3, [rotateOriginX, rotateOriginY]); - viewRect3 = viewRect3.clone(); - viewRect3.applyTransform(m3); - } - var viewBound = getBound(viewRect3); - var mainBound = getBound(mainGroup.getBoundingRect()); - var labelBound = getBound(labelGroup.getBoundingRect()); - var mainPosition = [mainGroup.x, mainGroup.y]; - var labelsPosition = [labelGroup.x, labelGroup.y]; - labelsPosition[0] = mainPosition[0] = viewBound[0][0]; - var labelPosOpt = layoutInfo.labelPosOpt; - if (labelPosOpt == null || isString2(labelPosOpt)) { - var mainBoundIdx = labelPosOpt === "+" ? 0 : 1; - toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx); - toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx); - } else { - var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1; - toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx); - labelsPosition[1] = mainPosition[1] + labelPosOpt; - } - mainGroup.setPosition(mainPosition); - labelGroup.setPosition(labelsPosition); - mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation; - setOrigin(mainGroup); - setOrigin(labelGroup); - function setOrigin(targetGroup) { - targetGroup.originX = viewBound[0][0] - targetGroup.x; - targetGroup.originY = viewBound[1][0] - targetGroup.y; - } - function getBound(rect) { - return [[rect.x, rect.x + rect.width], [rect.y, rect.y + rect.height]]; - } - function toBound(fromPos, from, to, dimIdx, boundIdx) { - fromPos[dimIdx] += to[dimIdx][boundIdx] - from[dimIdx][boundIdx]; - } - }; - SliderTimelineView3.prototype._createAxis = function(layoutInfo, timelineModel) { - var data = timelineModel.getData(); - var axisType = timelineModel.get("axisType"); - var scale5 = createScaleByModel$1(timelineModel, axisType); - scale5.getTicks = function() { - return data.mapArray(["value"], function(value) { - return { - value - }; - }); - }; - var dataExtent = data.getDataExtent("value"); - scale5.setExtent(dataExtent[0], dataExtent[1]); - scale5.calcNiceTicks(); - var axis = new TimelineAxis2("value", scale5, layoutInfo.axisExtent, axisType); - axis.model = timelineModel; - return axis; - }; - SliderTimelineView3.prototype._createGroup = function(key) { - var newGroup = this[key] = new Group5(); - this.group.add(newGroup); - return newGroup; - }; - SliderTimelineView3.prototype._renderAxisLine = function(layoutInfo, group, axis, timelineModel) { - var axisExtent = axis.getExtent(); - if (!timelineModel.get(["lineStyle", "show"])) { - return; - } - var line = new Line3({ - shape: { - x1: axisExtent[0], - y1: 0, - x2: axisExtent[1], - y2: 0 - }, - style: extend3({ - lineCap: "round" - }, timelineModel.getModel("lineStyle").getLineStyle()), - silent: true, - z2: 1 - }); - group.add(line); - var progressLine = this._progressLine = new Line3({ - shape: { - x1: axisExtent[0], - x2: this._currentPointer ? this._currentPointer.x : axisExtent[0], - y1: 0, - y2: 0 - }, - style: defaults2({ - lineCap: "round", - lineWidth: line.style.lineWidth - }, timelineModel.getModel(["progress", "lineStyle"]).getLineStyle()), - silent: true, - z2: 1 - }); - group.add(progressLine); - }; - SliderTimelineView3.prototype._renderAxisTick = function(layoutInfo, group, axis, timelineModel) { - var _this = this; - var data = timelineModel.getData(); - var ticks = axis.scale.getTicks(); - this._tickSymbols = []; - each17(ticks, function(tick) { - var tickCoord = axis.dataToCoord(tick.value); - var itemModel = data.getItemModel(tick.value); - var itemStyleModel = itemModel.getModel("itemStyle"); - var hoverStyleModel = itemModel.getModel(["emphasis", "itemStyle"]); - var progressStyleModel = itemModel.getModel(["progress", "itemStyle"]); - var symbolOpt = { - x: tickCoord, - y: 0, - onclick: bind3(_this._changeTimeline, _this, tick.value) - }; - var el = giveSymbol2(itemModel, itemStyleModel, group, symbolOpt); - el.ensureState("emphasis").style = hoverStyleModel.getItemStyle(); - el.ensureState("progress").style = progressStyleModel.getItemStyle(); - enableHoverEmphasis2(el); - var ecData = getECData2(el); - if (itemModel.get("tooltip")) { - ecData.dataIndex = tick.value; - ecData.dataModel = timelineModel; - } else { - ecData.dataIndex = ecData.dataModel = null; - } - _this._tickSymbols.push(el); - }); - }; - SliderTimelineView3.prototype._renderAxisLabel = function(layoutInfo, group, axis, timelineModel) { - var _this = this; - var labelModel = axis.getLabelModel(); - if (!labelModel.get("show")) { - return; - } - var data = timelineModel.getData(); - var labels = axis.getViewLabels(); - this._tickLabels = []; - each17(labels, function(labelItem) { - var dataIndex = labelItem.tickValue; - var itemModel = data.getItemModel(dataIndex); - var normalLabelModel = itemModel.getModel("label"); - var hoverLabelModel = itemModel.getModel(["emphasis", "label"]); - var progressLabelModel = itemModel.getModel(["progress", "label"]); - var tickCoord = axis.dataToCoord(labelItem.tickValue); - var textEl = new ZRText2({ - x: tickCoord, - y: 0, - rotation: layoutInfo.labelRotation - layoutInfo.rotation, - onclick: bind3(_this._changeTimeline, _this, dataIndex), - silent: false, - style: createTextStyle3(normalLabelModel, { - text: labelItem.formattedLabel, - align: layoutInfo.labelAlign, - verticalAlign: layoutInfo.labelBaseline - }) - }); - textEl.ensureState("emphasis").style = createTextStyle3(hoverLabelModel); - textEl.ensureState("progress").style = createTextStyle3(progressLabelModel); - group.add(textEl); - enableHoverEmphasis2(textEl); - labelDataIndexStore2(textEl).dataIndex = dataIndex; - _this._tickLabels.push(textEl); - }); - }; - SliderTimelineView3.prototype._renderControl = function(layoutInfo, group, axis, timelineModel) { - var controlSize = layoutInfo.controlSize; - var rotation = layoutInfo.rotation; - var itemStyle = timelineModel.getModel("controlStyle").getItemStyle(); - var hoverStyle = timelineModel.getModel(["emphasis", "controlStyle"]).getItemStyle(); - var playState = timelineModel.getPlayState(); - var inverse = timelineModel.get("inverse", true); - makeBtn(layoutInfo.nextBtnPosition, "next", bind3(this._changeTimeline, this, inverse ? "-" : "+")); - makeBtn(layoutInfo.prevBtnPosition, "prev", bind3(this._changeTimeline, this, inverse ? "+" : "-")); - makeBtn(layoutInfo.playPosition, playState ? "stop" : "play", bind3(this._handlePlayClick, this, !playState), true); - function makeBtn(position3, iconName, onclick, willRotate) { - if (!position3) { - return; - } - var iconSize = parsePercent3(retrieve22(timelineModel.get(["controlStyle", iconName + "BtnSize"]), controlSize), controlSize); - var rect = [0, -iconSize / 2, iconSize, iconSize]; - var btn = makeControlIcon2(timelineModel, iconName + "Icon", rect, { - x: position3[0], - y: position3[1], - originX: controlSize / 2, - originY: 0, - rotation: willRotate ? -rotation : 0, - rectHover: true, - style: itemStyle, - onclick - }); - btn.ensureState("emphasis").style = hoverStyle; - group.add(btn); - enableHoverEmphasis2(btn); - } - }; - SliderTimelineView3.prototype._renderCurrentPointer = function(layoutInfo, group, axis, timelineModel) { - var data = timelineModel.getData(); - var currentIndex = timelineModel.getCurrentIndex(); - var pointerModel = data.getItemModel(currentIndex).getModel("checkpointStyle"); - var me = this; - var callback = { - onCreate: function(pointer) { - pointer.draggable = true; - pointer.drift = bind3(me._handlePointerDrag, me); - pointer.ondragend = bind3(me._handlePointerDragend, me); - pointerMoveTo2(pointer, me._progressLine, currentIndex, axis, timelineModel, true); - }, - onUpdate: function(pointer) { - pointerMoveTo2(pointer, me._progressLine, currentIndex, axis, timelineModel); - } - }; - this._currentPointer = giveSymbol2(pointerModel, pointerModel, this._mainGroup, {}, this._currentPointer, callback); - }; - SliderTimelineView3.prototype._handlePlayClick = function(nextState) { - this._clearTimer(); - this.api.dispatchAction({ - type: "timelinePlayChange", - playState: nextState, - from: this.uid - }); - }; - SliderTimelineView3.prototype._handlePointerDrag = function(dx, dy, e3) { - this._clearTimer(); - this._pointerChangeTimeline([e3.offsetX, e3.offsetY]); - }; - SliderTimelineView3.prototype._handlePointerDragend = function(e3) { - this._pointerChangeTimeline([e3.offsetX, e3.offsetY], true); - }; - SliderTimelineView3.prototype._pointerChangeTimeline = function(mousePos, trigger4) { - var toCoord = this._toAxisCoord(mousePos)[0]; - var axis = this._axis; - var axisExtent = asc4(axis.getExtent().slice()); - toCoord > axisExtent[1] && (toCoord = axisExtent[1]); - toCoord < axisExtent[0] && (toCoord = axisExtent[0]); - this._currentPointer.x = toCoord; - this._currentPointer.markRedraw(); - var progressLine = this._progressLine; - if (progressLine) { - progressLine.shape.x2 = toCoord; - progressLine.dirty(); - } - var targetDataIndex = this._findNearestTick(toCoord); - var timelineModel = this.model; - if (trigger4 || targetDataIndex !== timelineModel.getCurrentIndex() && timelineModel.get("realtime")) { - this._changeTimeline(targetDataIndex); - } - }; - SliderTimelineView3.prototype._doPlayStop = function() { - var _this = this; - this._clearTimer(); - if (this.model.getPlayState()) { - this._timer = setTimeout(function() { - var timelineModel = _this.model; - _this._changeTimeline(timelineModel.getCurrentIndex() + (timelineModel.get("rewind", true) ? -1 : 1)); - }, this.model.get("playInterval")); - } - }; - SliderTimelineView3.prototype._toAxisCoord = function(vertex) { - var trans = this._mainGroup.getLocalTransform(); - return applyTransform$1(vertex, trans, true); - }; - SliderTimelineView3.prototype._findNearestTick = function(axisCoord) { - var data = this.model.getData(); - var dist4 = Infinity; - var targetDataIndex; - var axis = this._axis; - data.each(["value"], function(value, dataIndex) { - var coord = axis.dataToCoord(value); - var d = Math.abs(coord - axisCoord); - if (d < dist4) { - dist4 = d; - targetDataIndex = dataIndex; - } - }); - return targetDataIndex; - }; - SliderTimelineView3.prototype._clearTimer = function() { - if (this._timer) { - clearTimeout(this._timer); - this._timer = null; - } - }; - SliderTimelineView3.prototype._changeTimeline = function(nextIndex) { - var currentIndex = this.model.getCurrentIndex(); - if (nextIndex === "+") { - nextIndex = currentIndex + 1; - } else if (nextIndex === "-") { - nextIndex = currentIndex - 1; - } - this.api.dispatchAction({ - type: "timelineChange", - currentIndex: nextIndex, - from: this.uid - }); - }; - SliderTimelineView3.prototype._updateTicksStatus = function() { - var currentIndex = this.model.getCurrentIndex(); - var tickSymbols = this._tickSymbols; - var tickLabels = this._tickLabels; - if (tickSymbols) { - for (var i2 = 0; i2 < tickSymbols.length; i2++) { - tickSymbols && tickSymbols[i2] && tickSymbols[i2].toggleState("progress", i2 < currentIndex); - } - } - if (tickLabels) { - for (var i2 = 0; i2 < tickLabels.length; i2++) { - tickLabels && tickLabels[i2] && tickLabels[i2].toggleState("progress", labelDataIndexStore2(tickLabels[i2]).dataIndex <= currentIndex); - } - } - }; - SliderTimelineView3.type = "timeline.slider"; - return SliderTimelineView3; - }(TimelineView2) - ); - function createScaleByModel$1(model, axisType) { - axisType = axisType || model.get("type"); - if (axisType) { - switch (axisType) { - case "category": - return new OrdinalScale2({ - ordinalMeta: model.getCategories(), - extent: [Infinity, -Infinity] - }); - case "time": - return new TimeScale2({ - locale: model.ecModel.getLocaleModel(), - useUTC: model.ecModel.get("useUTC") - }); - default: - return new IntervalScale2(); - } - } - } - function getViewRect$5(model, api) { - return getLayoutRect2(model.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }, model.get("padding")); - } - function makeControlIcon2(timelineModel, objPath, rect, opts) { - var style = opts.style; - var icon = createIcon2(timelineModel.get(["controlStyle", objPath]), opts || {}, new BoundingRect2(rect[0], rect[1], rect[2], rect[3])); - if (style) { - icon.setStyle(style); - } - return icon; - } - function giveSymbol2(hostModel, itemStyleModel, group, opt, symbol, callback) { - var color2 = itemStyleModel.get("color"); - if (!symbol) { - var symbolType = hostModel.get("symbol"); - symbol = createSymbol3(symbolType, -1, -1, 2, 2, color2); - symbol.setStyle("strokeNoScale", true); - group.add(symbol); - callback && callback.onCreate(symbol); - } else { - symbol.setColor(color2); - group.add(symbol); - callback && callback.onUpdate(symbol); - } - var itemStyle = itemStyleModel.getItemStyle(["color"]); - symbol.setStyle(itemStyle); - opt = merge2({ - rectHover: true, - z2: 100 - }, opt, true); - var symbolSize = normalizeSymbolSize2(hostModel.get("symbolSize")); - opt.scaleX = symbolSize[0] / 2; - opt.scaleY = symbolSize[1] / 2; - var symbolOffset = normalizeSymbolOffset2(hostModel.get("symbolOffset"), symbolSize); - if (symbolOffset) { - opt.x = (opt.x || 0) + symbolOffset[0]; - opt.y = (opt.y || 0) + symbolOffset[1]; - } - var symbolRotate = hostModel.get("symbolRotate"); - opt.rotation = (symbolRotate || 0) * Math.PI / 180 || 0; - symbol.attr(opt); - symbol.updateTransform(); - return symbol; - } - function pointerMoveTo2(pointer, progressLine, dataIndex, axis, timelineModel, noAnimation) { - if (pointer.dragging) { - return; - } - var pointerModel = timelineModel.getModel("checkpointStyle"); - var toCoord = axis.dataToCoord(timelineModel.getData().get("value", dataIndex)); - if (noAnimation || !pointerModel.get("animation", true)) { - pointer.attr({ - x: toCoord, - y: 0 - }); - progressLine && progressLine.attr({ - shape: { - x2: toCoord - } - }); - } else { - var animationCfg = { - duration: pointerModel.get("animationDuration", true), - easing: pointerModel.get("animationEasing", true) - }; - pointer.stopAnimation(null, true); - pointer.animateTo({ - x: toCoord, - y: 0 - }, animationCfg); - progressLine && progressLine.animateTo({ - shape: { - x2: toCoord - } - }, animationCfg); - } - } - function installTimelineAction2(registers) { - registers.registerAction({ - type: "timelineChange", - event: "timelineChanged", - update: "prepareAndUpdate" - }, function(payload, ecModel, api) { - var timelineModel = ecModel.getComponent("timeline"); - if (timelineModel && payload.currentIndex != null) { - timelineModel.setCurrentIndex(payload.currentIndex); - if (!timelineModel.get("loop", true) && timelineModel.isIndexMax() && timelineModel.getPlayState()) { - timelineModel.setPlayState(false); - api.dispatchAction({ - type: "timelinePlayChange", - playState: false, - from: payload.from - }); - } - } - ecModel.resetOption("timeline", { - replaceMerge: timelineModel.get("replaceMerge", true) - }); - return defaults2({ - currentIndex: timelineModel.option.currentIndex - }, payload); - }); - registers.registerAction({ - type: "timelinePlayChange", - event: "timelinePlayChanged", - update: "update" - }, function(payload, ecModel) { - var timelineModel = ecModel.getComponent("timeline"); - if (timelineModel && payload.playState != null) { - timelineModel.setPlayState(payload.playState); - } - }); - } - function timelinePreprocessor2(option) { - var timelineOpt = option && option.timeline; - if (!isArray3(timelineOpt)) { - timelineOpt = timelineOpt ? [timelineOpt] : []; - } - each17(timelineOpt, function(opt) { - if (!opt) { - return; - } - compatibleEC22(opt); - }); - } - function compatibleEC22(opt) { - var type = opt.type; - var ec2Types = { - "number": "value", - "time": "time" - }; - if (ec2Types[type]) { - opt.axisType = ec2Types[type]; - delete opt.type; - } - transferItem2(opt); - if (has3(opt, "controlPosition")) { - var controlStyle = opt.controlStyle || (opt.controlStyle = {}); - if (!has3(controlStyle, "position")) { - controlStyle.position = opt.controlPosition; - } - if (controlStyle.position === "none" && !has3(controlStyle, "show")) { - controlStyle.show = false; - delete controlStyle.position; - } - delete opt.controlPosition; - } - each17(opt.data || [], function(dataItem) { - if (isObject5(dataItem) && !isArray3(dataItem)) { - if (!has3(dataItem, "value") && has3(dataItem, "name")) { - dataItem.value = dataItem.name; - } - transferItem2(dataItem); - } - }); - } - function transferItem2(opt) { - var itemStyle = opt.itemStyle || (opt.itemStyle = {}); - var itemStyleEmphasis = itemStyle.emphasis || (itemStyle.emphasis = {}); - var label = opt.label || opt.label || {}; - var labelNormal = label.normal || (label.normal = {}); - var excludeLabelAttr = { - normal: 1, - emphasis: 1 - }; - each17(label, function(value, name) { - if (!excludeLabelAttr[name] && !has3(labelNormal, name)) { - labelNormal[name] = value; - } - }); - if (itemStyleEmphasis.label && !has3(label, "emphasis")) { - label.emphasis = itemStyleEmphasis.label; - delete itemStyleEmphasis.label; - } - } - function has3(obj, attr) { - return obj.hasOwnProperty(attr); - } - function install$D(registers) { - registers.registerComponentModel(SliderTimelineModel2); - registers.registerComponentView(SliderTimelineView2); - registers.registerSubTypeDefaulter("timeline", function() { - return "slider"; - }); - installTimelineAction2(registers); - registers.registerPreprocessor(timelinePreprocessor2); - } - function checkMarkerInSeries2(seriesOpts, markerType) { - if (!seriesOpts) { - return false; - } - var seriesOptArr = isArray3(seriesOpts) ? seriesOpts : [seriesOpts]; - for (var idx = 0; idx < seriesOptArr.length; idx++) { - if (seriesOptArr[idx] && seriesOptArr[idx][markerType]) { - return true; - } - } - return false; - } - function fillLabel2(opt) { - defaultEmphasis2(opt, "label", ["show"]); - } - var inner$g = makeInner2(); - var MarkerModel2 = ( - /** @class */ - function(_super) { - __extends2(MarkerModel3, _super); - function MarkerModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkerModel3.type; - _this.createdBySelf = false; - return _this; - } - MarkerModel3.prototype.init = function(option, parentModel, ecModel) { - if (true) { - if (this.type === "marker") { - throw new Error("Marker component is abstract component. Use markLine, markPoint, markArea instead."); - } - } - this.mergeDefaultAndTheme(option, ecModel); - this._mergeOption(option, ecModel, false, true); - }; - MarkerModel3.prototype.isAnimationEnabled = function() { - if (env2.node) { - return false; - } - var hostSeries = this.__hostSeries; - return this.getShallow("animation") && hostSeries && hostSeries.isAnimationEnabled(); - }; - MarkerModel3.prototype.mergeOption = function(newOpt, ecModel) { - this._mergeOption(newOpt, ecModel, false, false); - }; - MarkerModel3.prototype._mergeOption = function(newOpt, ecModel, createdBySelf, isInit) { - var componentType = this.mainType; - if (!createdBySelf) { - ecModel.eachSeries(function(seriesModel) { - var markerOpt = seriesModel.get(this.mainType, true); - var markerModel = inner$g(seriesModel)[componentType]; - if (!markerOpt || !markerOpt.data) { - inner$g(seriesModel)[componentType] = null; - return; - } - if (!markerModel) { - if (isInit) { - fillLabel2(markerOpt); - } - each17(markerOpt.data, function(item) { - if (item instanceof Array) { - fillLabel2(item[0]); - fillLabel2(item[1]); - } else { - fillLabel2(item); - } - }); - markerModel = this.createMarkerModelFromSeries(markerOpt, this, ecModel); - extend3(markerModel, { - mainType: this.mainType, - // Use the same series index and name - seriesIndex: seriesModel.seriesIndex, - name: seriesModel.name, - createdBySelf: true - }); - markerModel.__hostSeries = seriesModel; - } else { - markerModel._mergeOption(markerOpt, ecModel, true); - } - inner$g(seriesModel)[componentType] = markerModel; - }, this); - } - }; - MarkerModel3.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - var data = this.getData(); - var value = this.getRawValue(dataIndex); - var itemName = data.getName(dataIndex); - return createTooltipMarkup2("section", { - header: this.name, - blocks: [createTooltipMarkup2("nameValue", { - name: itemName, - value, - noName: !itemName, - noValue: value == null - })] - }); - }; - MarkerModel3.prototype.getData = function() { - return this._data; - }; - MarkerModel3.prototype.setData = function(data) { - this._data = data; - }; - MarkerModel3.prototype.getDataParams = function(dataIndex, dataType) { - var params = DataFormatMixin2.prototype.getDataParams.call(this, dataIndex, dataType); - var hostSeries = this.__hostSeries; - if (hostSeries) { - params.seriesId = hostSeries.id; - params.seriesName = hostSeries.name; - params.seriesType = hostSeries.subType; - } - return params; - }; - MarkerModel3.getMarkerModelFromSeries = function(seriesModel, componentType) { - return inner$g(seriesModel)[componentType]; - }; - MarkerModel3.type = "marker"; - MarkerModel3.dependencies = ["series", "grid", "polar", "geo"]; - return MarkerModel3; - }(ComponentModel2) - ); - mixin2(MarkerModel2, DataFormatMixin2.prototype); - var MarkPointModel2 = ( - /** @class */ - function(_super) { - __extends2(MarkPointModel3, _super); - function MarkPointModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkPointModel3.type; - return _this; - } - MarkPointModel3.prototype.createMarkerModelFromSeries = function(markerOpt, masterMarkerModel, ecModel) { - return new MarkPointModel3(markerOpt, masterMarkerModel, ecModel); - }; - MarkPointModel3.type = "markPoint"; - MarkPointModel3.defaultOption = { - // zlevel: 0, - z: 5, - symbol: "pin", - symbolSize: 50, - // symbolRotate: 0, - // symbolOffset: [0, 0] - tooltip: { - trigger: "item" - }, - label: { - show: true, - position: "inside" - }, - itemStyle: { - borderWidth: 2 - }, - emphasis: { - label: { - show: true - } - } - }; - return MarkPointModel3; - }(MarkerModel2) - ); - function hasXOrY2(item) { - return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y))); - } - function hasXAndY2(item) { - return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y)); - } - function markerTypeCalculatorWithExtent2(markerType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) { - var coordArr = []; - var stacked = isDimensionStacked2( - data, - targetDataDim - /* , otherDataDim */ - ); - var calcDataDim = stacked ? data.getCalculationInfo("stackResultDimension") : targetDataDim; - var value = numCalculate2(data, calcDataDim, markerType); - var dataIndex = data.indicesOfNearest(calcDataDim, value)[0]; - coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex); - coordArr[targetCoordIndex] = data.get(calcDataDim, dataIndex); - var coordArrValue = data.get(targetDataDim, dataIndex); - var precision = getPrecision2(data.get(targetDataDim, dataIndex)); - precision = Math.min(precision, 20); - if (precision >= 0) { - coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision); - } - return [coordArr, coordArrValue]; - } - var markerTypeCalculator2 = { - min: curry3(markerTypeCalculatorWithExtent2, "min"), - max: curry3(markerTypeCalculatorWithExtent2, "max"), - average: curry3(markerTypeCalculatorWithExtent2, "average"), - median: curry3(markerTypeCalculatorWithExtent2, "median") - }; - function dataTransform2(seriesModel, item) { - if (!item) { - return; - } - var data = seriesModel.getData(); - var coordSys = seriesModel.coordinateSystem; - var dims = coordSys && coordSys.dimensions; - if (!hasXAndY2(item) && !isArray3(item.coord) && isArray3(dims)) { - var axisInfo = getAxisInfo$1(item, data, coordSys, seriesModel); - item = clone6(item); - if (item.type && markerTypeCalculator2[item.type] && axisInfo.baseAxis && axisInfo.valueAxis) { - var otherCoordIndex = indexOf2(dims, axisInfo.baseAxis.dim); - var targetCoordIndex = indexOf2(dims, axisInfo.valueAxis.dim); - var coordInfo = markerTypeCalculator2[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex); - item.coord = coordInfo[0]; - item.value = coordInfo[1]; - } else { - item.coord = [item.xAxis != null ? item.xAxis : item.radiusAxis, item.yAxis != null ? item.yAxis : item.angleAxis]; - } - } - if (item.coord == null || !isArray3(dims)) { - item.coord = []; - } else { - var coord = item.coord; - for (var i2 = 0; i2 < 2; i2++) { - if (markerTypeCalculator2[coord[i2]]) { - coord[i2] = numCalculate2(data, data.mapDimension(dims[i2]), coord[i2]); - } - } - } - return item; - } - function getAxisInfo$1(item, data, coordSys, seriesModel) { - var ret = {}; - if (item.valueIndex != null || item.valueDim != null) { - ret.valueDataDim = item.valueIndex != null ? data.getDimension(item.valueIndex) : item.valueDim; - ret.valueAxis = coordSys.getAxis(dataDimToCoordDim2(seriesModel, ret.valueDataDim)); - ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis); - ret.baseDataDim = data.mapDimension(ret.baseAxis.dim); - } else { - ret.baseAxis = seriesModel.getBaseAxis(); - ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis); - ret.baseDataDim = data.mapDimension(ret.baseAxis.dim); - ret.valueDataDim = data.mapDimension(ret.valueAxis.dim); - } - return ret; - } - function dataDimToCoordDim2(seriesModel, dataDim) { - var dimItem = seriesModel.getData().getDimensionInfo(dataDim); - return dimItem && dimItem.coordDim; - } - function dataFilter$1(coordSys, item) { - return coordSys && coordSys.containData && item.coord && !hasXOrY2(item) ? coordSys.containData(item.coord) : true; - } - function zoneFilter2(coordSys, item1, item2) { - return coordSys && coordSys.containZone && item1.coord && item2.coord && !hasXOrY2(item1) && !hasXOrY2(item2) ? coordSys.containZone(item1.coord, item2.coord) : true; - } - function createMarkerDimValueGetter2(inCoordSys, dims) { - return inCoordSys ? function(item, dimName, dataIndex, dimIndex) { - var rawVal = dimIndex < 2 ? item.coord && item.coord[dimIndex] : item.value; - return parseDataValue2(rawVal, dims[dimIndex]); - } : function(item, dimName, dataIndex, dimIndex) { - return parseDataValue2(item.value, dims[dimIndex]); - }; - } - function numCalculate2(data, valueDataDim, type) { - if (type === "average") { - var sum_1 = 0; - var count_1 = 0; - data.each(valueDataDim, function(val, idx) { - if (!isNaN(val)) { - sum_1 += val; - count_1++; - } - }); - return sum_1 / count_1; - } else if (type === "median") { - return data.getMedian(valueDataDim); - } else { - return data.getDataExtent(valueDataDim)[type === "max" ? 1 : 0]; - } - } - var inner$h = makeInner2(); - var MarkerView2 = ( - /** @class */ - function(_super) { - __extends2(MarkerView3, _super); - function MarkerView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkerView3.type; - return _this; - } - MarkerView3.prototype.init = function() { - this.markerGroupMap = createHashMap2(); - }; - MarkerView3.prototype.render = function(markerModel, ecModel, api) { - var _this = this; - var markerGroupMap = this.markerGroupMap; - markerGroupMap.each(function(item) { - inner$h(item).keep = false; - }); - ecModel.eachSeries(function(seriesModel) { - var markerModel2 = MarkerModel2.getMarkerModelFromSeries(seriesModel, _this.type); - markerModel2 && _this.renderSeries(seriesModel, markerModel2, ecModel, api); - }); - markerGroupMap.each(function(item) { - !inner$h(item).keep && _this.group.remove(item.group); - }); - }; - MarkerView3.prototype.markKeep = function(drawGroup) { - inner$h(drawGroup).keep = true; - }; - MarkerView3.prototype.toggleBlurSeries = function(seriesModelList, isBlur) { - var _this = this; - each17(seriesModelList, function(seriesModel) { - var markerModel = MarkerModel2.getMarkerModelFromSeries(seriesModel, _this.type); - if (markerModel) { - var data = markerModel.getData(); - data.eachItemGraphicEl(function(el) { - if (el) { - isBlur ? enterBlur2(el) : leaveBlur2(el); - } - }); - } - }); - }; - MarkerView3.type = "marker"; - return MarkerView3; - }(ComponentView2) - ); - function updateMarkerLayout2(mpData, seriesModel, api) { - var coordSys = seriesModel.coordinateSystem; - mpData.each(function(idx) { - var itemModel = mpData.getItemModel(idx); - var point; - var xPx = parsePercent$1(itemModel.get("x"), api.getWidth()); - var yPx = parsePercent$1(itemModel.get("y"), api.getHeight()); - if (!isNaN(xPx) && !isNaN(yPx)) { - point = [xPx, yPx]; - } else if (seriesModel.getMarkerPosition) { - point = seriesModel.getMarkerPosition(mpData.getValues(mpData.dimensions, idx)); - } else if (coordSys) { - var x = mpData.get(coordSys.dimensions[0], idx); - var y = mpData.get(coordSys.dimensions[1], idx); - point = coordSys.dataToPoint([x, y]); - } - if (!isNaN(xPx)) { - point[0] = xPx; - } - if (!isNaN(yPx)) { - point[1] = yPx; - } - mpData.setItemLayout(idx, point); - }); - } - var MarkPointView2 = ( - /** @class */ - function(_super) { - __extends2(MarkPointView3, _super); - function MarkPointView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkPointView3.type; - return _this; - } - MarkPointView3.prototype.updateTransform = function(markPointModel, ecModel, api) { - ecModel.eachSeries(function(seriesModel) { - var mpModel = MarkerModel2.getMarkerModelFromSeries(seriesModel, "markPoint"); - if (mpModel) { - updateMarkerLayout2(mpModel.getData(), seriesModel, api); - this.markerGroupMap.get(seriesModel.id).updateLayout(); - } - }, this); - }; - MarkPointView3.prototype.renderSeries = function(seriesModel, mpModel, ecModel, api) { - var coordSys = seriesModel.coordinateSystem; - var seriesId = seriesModel.id; - var seriesData = seriesModel.getData(); - var symbolDrawMap = this.markerGroupMap; - var symbolDraw = symbolDrawMap.get(seriesId) || symbolDrawMap.set(seriesId, new SymbolDraw2()); - var mpData = createData2(coordSys, seriesModel, mpModel); - mpModel.setData(mpData); - updateMarkerLayout2(mpModel.getData(), seriesModel, api); - mpData.each(function(idx) { - var itemModel = mpData.getItemModel(idx); - var symbol = itemModel.getShallow("symbol"); - var symbolSize = itemModel.getShallow("symbolSize"); - var symbolRotate = itemModel.getShallow("symbolRotate"); - var symbolOffset = itemModel.getShallow("symbolOffset"); - var symbolKeepAspect = itemModel.getShallow("symbolKeepAspect"); - if (isFunction2(symbol) || isFunction2(symbolSize) || isFunction2(symbolRotate) || isFunction2(symbolOffset)) { - var rawIdx = mpModel.getRawValue(idx); - var dataParams = mpModel.getDataParams(idx); - if (isFunction2(symbol)) { - symbol = symbol(rawIdx, dataParams); - } - if (isFunction2(symbolSize)) { - symbolSize = symbolSize(rawIdx, dataParams); - } - if (isFunction2(symbolRotate)) { - symbolRotate = symbolRotate(rawIdx, dataParams); - } - if (isFunction2(symbolOffset)) { - symbolOffset = symbolOffset(rawIdx, dataParams); - } - } - var style = itemModel.getModel("itemStyle").getItemStyle(); - var color2 = getVisualFromData2(seriesData, "color"); - if (!style.fill) { - style.fill = color2; - } - mpData.setItemVisual(idx, { - symbol, - symbolSize, - symbolRotate, - symbolOffset, - symbolKeepAspect, - style - }); - }); - symbolDraw.updateData(mpData); - this.group.add(symbolDraw.group); - mpData.eachItemGraphicEl(function(el) { - el.traverse(function(child) { - getECData2(child).dataModel = mpModel; - }); - }); - this.markKeep(symbolDraw); - symbolDraw.group.silent = mpModel.get("silent") || seriesModel.get("silent"); - }; - MarkPointView3.type = "markPoint"; - return MarkPointView3; - }(MarkerView2) - ); - function createData2(coordSys, seriesModel, mpModel) { - var coordDimsInfos; - if (coordSys) { - coordDimsInfos = map3(coordSys && coordSys.dimensions, function(coordDim) { - var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; - return extend3(extend3({}, info), { - name: coordDim, - // DON'T use ordinalMeta to parse and collect ordinal. - ordinalMeta: null - }); - }); - } else { - coordDimsInfos = [{ - name: "value", - type: "float" - }]; - } - var mpData = new SeriesData2(coordDimsInfos, mpModel); - var dataOpt = map3(mpModel.get("data"), curry3(dataTransform2, seriesModel)); - if (coordSys) { - dataOpt = filter2(dataOpt, curry3(dataFilter$1, coordSys)); - } - var dimValueGetter = createMarkerDimValueGetter2(!!coordSys, coordDimsInfos); - mpData.initData(dataOpt, null, dimValueGetter); - return mpData; - } - function install$E(registers) { - registers.registerComponentModel(MarkPointModel2); - registers.registerComponentView(MarkPointView2); - registers.registerPreprocessor(function(opt) { - if (checkMarkerInSeries2(opt.series, "markPoint")) { - opt.markPoint = opt.markPoint || {}; - } - }); - } - var MarkLineModel2 = ( - /** @class */ - function(_super) { - __extends2(MarkLineModel3, _super); - function MarkLineModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkLineModel3.type; - return _this; - } - MarkLineModel3.prototype.createMarkerModelFromSeries = function(markerOpt, masterMarkerModel, ecModel) { - return new MarkLineModel3(markerOpt, masterMarkerModel, ecModel); - }; - MarkLineModel3.type = "markLine"; - MarkLineModel3.defaultOption = { - // zlevel: 0, - z: 5, - symbol: ["circle", "arrow"], - symbolSize: [8, 16], - // symbolRotate: 0, - symbolOffset: 0, - precision: 2, - tooltip: { - trigger: "item" - }, - label: { - show: true, - position: "end", - distance: 5 - }, - lineStyle: { - type: "dashed" - }, - emphasis: { - label: { - show: true - }, - lineStyle: { - width: 3 - } - }, - animationEasing: "linear" - }; - return MarkLineModel3; - }(MarkerModel2) - ); - var inner$i = makeInner2(); - var markLineTransform2 = function(seriesModel, coordSys, mlModel, item) { - var data = seriesModel.getData(); - var itemArray; - if (!isArray3(item)) { - var mlType = item.type; - if (mlType === "min" || mlType === "max" || mlType === "average" || mlType === "median" || item.xAxis != null || item.yAxis != null) { - var valueAxis3 = void 0; - var value = void 0; - if (item.yAxis != null || item.xAxis != null) { - valueAxis3 = coordSys.getAxis(item.yAxis != null ? "y" : "x"); - value = retrieve4(item.yAxis, item.xAxis); - } else { - var axisInfo = getAxisInfo$1(item, data, coordSys, seriesModel); - valueAxis3 = axisInfo.valueAxis; - var valueDataDim = getStackedDimension2(data, axisInfo.valueDataDim); - value = numCalculate2(data, valueDataDim, mlType); - } - var valueIndex = valueAxis3.dim === "x" ? 0 : 1; - var baseIndex = 1 - valueIndex; - var mlFrom = clone6(item); - var mlTo = { - coord: [] - }; - mlFrom.type = null; - mlFrom.coord = []; - mlFrom.coord[baseIndex] = -Infinity; - mlTo.coord[baseIndex] = Infinity; - var precision = mlModel.get("precision"); - if (precision >= 0 && isNumber2(value)) { - value = +value.toFixed(Math.min(precision, 20)); - } - mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value; - itemArray = [mlFrom, mlTo, { - type: mlType, - valueIndex: item.valueIndex, - // Force to use the value of calculated value. - value - }]; - } else { - if (true) { - logError2("Invalid markLine data."); - } - itemArray = []; - } - } else { - itemArray = item; - } - var normalizedItem = [dataTransform2(seriesModel, itemArray[0]), dataTransform2(seriesModel, itemArray[1]), extend3({}, itemArray[2])]; - normalizedItem[2].type = normalizedItem[2].type || null; - merge2(normalizedItem[2], normalizedItem[0]); - merge2(normalizedItem[2], normalizedItem[1]); - return normalizedItem; - }; - function isInfinity3(val) { - return !isNaN(val) && !isFinite(val); - } - function ifMarkLineHasOnlyDim2(dimIndex, fromCoord, toCoord, coordSys) { - var otherDimIndex = 1 - dimIndex; - var dimName = coordSys.dimensions[dimIndex]; - return isInfinity3(fromCoord[otherDimIndex]) && isInfinity3(toCoord[otherDimIndex]) && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]); - } - function markLineFilter2(coordSys, item) { - if (coordSys.type === "cartesian2d") { - var fromCoord = item[0].coord; - var toCoord = item[1].coord; - if (fromCoord && toCoord && (ifMarkLineHasOnlyDim2(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim2(0, fromCoord, toCoord, coordSys))) { - return true; - } - } - return dataFilter$1(coordSys, item[0]) && dataFilter$1(coordSys, item[1]); - } - function updateSingleMarkerEndLayout2(data, idx, isFrom, seriesModel, api) { - var coordSys = seriesModel.coordinateSystem; - var itemModel = data.getItemModel(idx); - var point; - var xPx = parsePercent$1(itemModel.get("x"), api.getWidth()); - var yPx = parsePercent$1(itemModel.get("y"), api.getHeight()); - if (!isNaN(xPx) && !isNaN(yPx)) { - point = [xPx, yPx]; - } else { - if (seriesModel.getMarkerPosition) { - point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx)); - } else { - var dims = coordSys.dimensions; - var x = data.get(dims[0], idx); - var y = data.get(dims[1], idx); - point = coordSys.dataToPoint([x, y]); - } - if (isCoordinateSystemType2(coordSys, "cartesian2d")) { - var xAxis = coordSys.getAxis("x"); - var yAxis = coordSys.getAxis("y"); - var dims = coordSys.dimensions; - if (isInfinity3(data.get(dims[0], idx))) { - point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]); - } else if (isInfinity3(data.get(dims[1], idx))) { - point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]); - } - } - if (!isNaN(xPx)) { - point[0] = xPx; - } - if (!isNaN(yPx)) { - point[1] = yPx; - } - } - data.setItemLayout(idx, point); - } - var MarkLineView2 = ( - /** @class */ - function(_super) { - __extends2(MarkLineView3, _super); - function MarkLineView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkLineView3.type; - return _this; - } - MarkLineView3.prototype.updateTransform = function(markLineModel, ecModel, api) { - ecModel.eachSeries(function(seriesModel) { - var mlModel = MarkerModel2.getMarkerModelFromSeries(seriesModel, "markLine"); - if (mlModel) { - var mlData_1 = mlModel.getData(); - var fromData_1 = inner$i(mlModel).from; - var toData_1 = inner$i(mlModel).to; - fromData_1.each(function(idx) { - updateSingleMarkerEndLayout2(fromData_1, idx, true, seriesModel, api); - updateSingleMarkerEndLayout2(toData_1, idx, false, seriesModel, api); - }); - mlData_1.each(function(idx) { - mlData_1.setItemLayout(idx, [fromData_1.getItemLayout(idx), toData_1.getItemLayout(idx)]); - }); - this.markerGroupMap.get(seriesModel.id).updateLayout(); - } - }, this); - }; - MarkLineView3.prototype.renderSeries = function(seriesModel, mlModel, ecModel, api) { - var coordSys = seriesModel.coordinateSystem; - var seriesId = seriesModel.id; - var seriesData = seriesModel.getData(); - var lineDrawMap = this.markerGroupMap; - var lineDraw = lineDrawMap.get(seriesId) || lineDrawMap.set(seriesId, new LineDraw2()); - this.group.add(lineDraw.group); - var mlData = createList$1(coordSys, seriesModel, mlModel); - var fromData = mlData.from; - var toData = mlData.to; - var lineData = mlData.line; - inner$i(mlModel).from = fromData; - inner$i(mlModel).to = toData; - mlModel.setData(lineData); - var symbolType = mlModel.get("symbol"); - var symbolSize = mlModel.get("symbolSize"); - var symbolRotate = mlModel.get("symbolRotate"); - var symbolOffset = mlModel.get("symbolOffset"); - if (!isArray3(symbolType)) { - symbolType = [symbolType, symbolType]; - } - if (!isArray3(symbolSize)) { - symbolSize = [symbolSize, symbolSize]; - } - if (!isArray3(symbolRotate)) { - symbolRotate = [symbolRotate, symbolRotate]; - } - if (!isArray3(symbolOffset)) { - symbolOffset = [symbolOffset, symbolOffset]; - } - mlData.from.each(function(idx) { - updateDataVisualAndLayout(fromData, idx, true); - updateDataVisualAndLayout(toData, idx, false); - }); - lineData.each(function(idx) { - var lineStyle = lineData.getItemModel(idx).getModel("lineStyle").getLineStyle(); - lineData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]); - if (lineStyle.stroke == null) { - lineStyle.stroke = fromData.getItemVisual(idx, "style").fill; - } - lineData.setItemVisual(idx, { - fromSymbolKeepAspect: fromData.getItemVisual(idx, "symbolKeepAspect"), - fromSymbolOffset: fromData.getItemVisual(idx, "symbolOffset"), - fromSymbolRotate: fromData.getItemVisual(idx, "symbolRotate"), - fromSymbolSize: fromData.getItemVisual(idx, "symbolSize"), - fromSymbol: fromData.getItemVisual(idx, "symbol"), - toSymbolKeepAspect: toData.getItemVisual(idx, "symbolKeepAspect"), - toSymbolOffset: toData.getItemVisual(idx, "symbolOffset"), - toSymbolRotate: toData.getItemVisual(idx, "symbolRotate"), - toSymbolSize: toData.getItemVisual(idx, "symbolSize"), - toSymbol: toData.getItemVisual(idx, "symbol"), - style: lineStyle - }); - }); - lineDraw.updateData(lineData); - mlData.line.eachItemGraphicEl(function(el) { - getECData2(el).dataModel = mlModel; - el.traverse(function(child) { - getECData2(child).dataModel = mlModel; - }); - }); - function updateDataVisualAndLayout(data, idx, isFrom) { - var itemModel = data.getItemModel(idx); - updateSingleMarkerEndLayout2(data, idx, isFrom, seriesModel, api); - var style = itemModel.getModel("itemStyle").getItemStyle(); - if (style.fill == null) { - style.fill = getVisualFromData2(seriesData, "color"); - } - data.setItemVisual(idx, { - symbolKeepAspect: itemModel.get("symbolKeepAspect"), - // `0` should be considered as a valid value, so use `retrieve2` instead of `||` - symbolOffset: retrieve22(itemModel.get("symbolOffset", true), symbolOffset[isFrom ? 0 : 1]), - symbolRotate: retrieve22(itemModel.get("symbolRotate", true), symbolRotate[isFrom ? 0 : 1]), - // TODO: when 2d array is supported, it should ignore parent - symbolSize: retrieve22(itemModel.get("symbolSize"), symbolSize[isFrom ? 0 : 1]), - symbol: retrieve22(itemModel.get("symbol", true), symbolType[isFrom ? 0 : 1]), - style - }); - } - this.markKeep(lineDraw); - lineDraw.group.silent = mlModel.get("silent") || seriesModel.get("silent"); - }; - MarkLineView3.type = "markLine"; - return MarkLineView3; - }(MarkerView2) - ); - function createList$1(coordSys, seriesModel, mlModel) { - var coordDimsInfos; - if (coordSys) { - coordDimsInfos = map3(coordSys && coordSys.dimensions, function(coordDim) { - var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; - return extend3(extend3({}, info), { - name: coordDim, - // DON'T use ordinalMeta to parse and collect ordinal. - ordinalMeta: null - }); - }); - } else { - coordDimsInfos = [{ - name: "value", - type: "float" - }]; - } - var fromData = new SeriesData2(coordDimsInfos, mlModel); - var toData = new SeriesData2(coordDimsInfos, mlModel); - var lineData = new SeriesData2([], mlModel); - var optData = map3(mlModel.get("data"), curry3(markLineTransform2, seriesModel, coordSys, mlModel)); - if (coordSys) { - optData = filter2(optData, curry3(markLineFilter2, coordSys)); - } - var dimValueGetter = createMarkerDimValueGetter2(!!coordSys, coordDimsInfos); - fromData.initData(map3(optData, function(item) { - return item[0]; - }), null, dimValueGetter); - toData.initData(map3(optData, function(item) { - return item[1]; - }), null, dimValueGetter); - lineData.initData(map3(optData, function(item) { - return item[2]; - })); - lineData.hasItemOption = true; - return { - from: fromData, - to: toData, - line: lineData - }; - } - function install$F(registers) { - registers.registerComponentModel(MarkLineModel2); - registers.registerComponentView(MarkLineView2); - registers.registerPreprocessor(function(opt) { - if (checkMarkerInSeries2(opt.series, "markLine")) { - opt.markLine = opt.markLine || {}; - } - }); - } - var MarkAreaModel2 = ( - /** @class */ - function(_super) { - __extends2(MarkAreaModel3, _super); - function MarkAreaModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkAreaModel3.type; - return _this; - } - MarkAreaModel3.prototype.createMarkerModelFromSeries = function(markerOpt, masterMarkerModel, ecModel) { - return new MarkAreaModel3(markerOpt, masterMarkerModel, ecModel); - }; - MarkAreaModel3.type = "markArea"; - MarkAreaModel3.defaultOption = { - // zlevel: 0, - // PENDING - z: 1, - tooltip: { - trigger: "item" - }, - // markArea should fixed on the coordinate system - animation: false, - label: { - show: true, - position: "top" - }, - itemStyle: { - // color and borderColor default to use color from series - // color: 'auto' - // borderColor: 'auto' - borderWidth: 0 - }, - emphasis: { - label: { - show: true, - position: "top" - } - } - }; - return MarkAreaModel3; - }(MarkerModel2) - ); - var inner$j = makeInner2(); - var markAreaTransform2 = function(seriesModel, coordSys, maModel, item) { - var item0 = item[0]; - var item1 = item[1]; - if (!item0 || !item1) { - return; - } - var lt3 = dataTransform2(seriesModel, item0); - var rb3 = dataTransform2(seriesModel, item1); - var ltCoord = lt3.coord; - var rbCoord = rb3.coord; - ltCoord[0] = retrieve4(ltCoord[0], -Infinity); - ltCoord[1] = retrieve4(ltCoord[1], -Infinity); - rbCoord[0] = retrieve4(rbCoord[0], Infinity); - rbCoord[1] = retrieve4(rbCoord[1], Infinity); - var result = mergeAll2([{}, lt3, rb3]); - result.coord = [lt3.coord, rb3.coord]; - result.x0 = lt3.x; - result.y0 = lt3.y; - result.x1 = rb3.x; - result.y1 = rb3.y; - return result; - }; - function isInfinity$1(val) { - return !isNaN(val) && !isFinite(val); - } - function ifMarkAreaHasOnlyDim2(dimIndex, fromCoord, toCoord, coordSys) { - var otherDimIndex = 1 - dimIndex; - return isInfinity$1(fromCoord[otherDimIndex]) && isInfinity$1(toCoord[otherDimIndex]); - } - function markAreaFilter2(coordSys, item) { - var fromCoord = item.coord[0]; - var toCoord = item.coord[1]; - var item0 = { - coord: fromCoord, - x: item.x0, - y: item.y0 - }; - var item1 = { - coord: toCoord, - x: item.x1, - y: item.y1 - }; - if (isCoordinateSystemType2(coordSys, "cartesian2d")) { - if (fromCoord && toCoord && (ifMarkAreaHasOnlyDim2(1, fromCoord, toCoord) || ifMarkAreaHasOnlyDim2(0, fromCoord, toCoord))) { - return true; - } - return zoneFilter2(coordSys, item0, item1); - } - return dataFilter$1(coordSys, item0) || dataFilter$1(coordSys, item1); - } - function getSingleMarkerEndPoint2(data, idx, dims, seriesModel, api) { - var coordSys = seriesModel.coordinateSystem; - var itemModel = data.getItemModel(idx); - var point; - var xPx = parsePercent$1(itemModel.get(dims[0]), api.getWidth()); - var yPx = parsePercent$1(itemModel.get(dims[1]), api.getHeight()); - if (!isNaN(xPx) && !isNaN(yPx)) { - point = [xPx, yPx]; - } else { - if (seriesModel.getMarkerPosition) { - var pointValue0 = data.getValues(["x0", "y0"], idx); - var pointValue1 = data.getValues(["x1", "y1"], idx); - var clampPointValue0 = coordSys.clampData(pointValue0); - var clampPointValue1 = coordSys.clampData(pointValue1); - var pointValue = []; - if (dims[0] === "x0") { - pointValue[0] = clampPointValue0[0] > clampPointValue1[0] ? pointValue1[0] : pointValue0[0]; - } else { - pointValue[0] = clampPointValue0[0] > clampPointValue1[0] ? pointValue0[0] : pointValue1[0]; - } - if (dims[1] === "y0") { - pointValue[1] = clampPointValue0[1] > clampPointValue1[1] ? pointValue1[1] : pointValue0[1]; - } else { - pointValue[1] = clampPointValue0[1] > clampPointValue1[1] ? pointValue0[1] : pointValue1[1]; - } - point = seriesModel.getMarkerPosition(pointValue, dims, true); - } else { - var x = data.get(dims[0], idx); - var y = data.get(dims[1], idx); - var pt = [x, y]; - coordSys.clampData && coordSys.clampData(pt, pt); - point = coordSys.dataToPoint(pt, true); - } - if (isCoordinateSystemType2(coordSys, "cartesian2d")) { - var xAxis = coordSys.getAxis("x"); - var yAxis = coordSys.getAxis("y"); - var x = data.get(dims[0], idx); - var y = data.get(dims[1], idx); - if (isInfinity$1(x)) { - point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[dims[0] === "x0" ? 0 : 1]); - } else if (isInfinity$1(y)) { - point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[dims[1] === "y0" ? 0 : 1]); - } - } - if (!isNaN(xPx)) { - point[0] = xPx; - } - if (!isNaN(yPx)) { - point[1] = yPx; - } - } - return point; - } - var dimPermutations2 = [["x0", "y0"], ["x1", "y0"], ["x1", "y1"], ["x0", "y1"]]; - var MarkAreaView2 = ( - /** @class */ - function(_super) { - __extends2(MarkAreaView3, _super); - function MarkAreaView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkAreaView3.type; - return _this; - } - MarkAreaView3.prototype.updateTransform = function(markAreaModel, ecModel, api) { - ecModel.eachSeries(function(seriesModel) { - var maModel = MarkerModel2.getMarkerModelFromSeries(seriesModel, "markArea"); - if (maModel) { - var areaData_1 = maModel.getData(); - areaData_1.each(function(idx) { - var points5 = map3(dimPermutations2, function(dim) { - return getSingleMarkerEndPoint2(areaData_1, idx, dim, seriesModel, api); - }); - areaData_1.setItemLayout(idx, points5); - var el = areaData_1.getItemGraphicEl(idx); - el.setShape("points", points5); - }); - } - }, this); - }; - MarkAreaView3.prototype.renderSeries = function(seriesModel, maModel, ecModel, api) { - var coordSys = seriesModel.coordinateSystem; - var seriesId = seriesModel.id; - var seriesData = seriesModel.getData(); - var areaGroupMap = this.markerGroupMap; - var polygonGroup = areaGroupMap.get(seriesId) || areaGroupMap.set(seriesId, { - group: new Group5() - }); - this.group.add(polygonGroup.group); - this.markKeep(polygonGroup); - var areaData = createList$2(coordSys, seriesModel, maModel); - maModel.setData(areaData); - areaData.each(function(idx) { - var points5 = map3(dimPermutations2, function(dim) { - return getSingleMarkerEndPoint2(areaData, idx, dim, seriesModel, api); - }); - var xAxisScale = coordSys.getAxis("x").scale; - var yAxisScale = coordSys.getAxis("y").scale; - var xAxisExtent = xAxisScale.getExtent(); - var yAxisExtent = yAxisScale.getExtent(); - var xPointExtent = [xAxisScale.parse(areaData.get("x0", idx)), xAxisScale.parse(areaData.get("x1", idx))]; - var yPointExtent = [yAxisScale.parse(areaData.get("y0", idx)), yAxisScale.parse(areaData.get("y1", idx))]; - asc4(xPointExtent); - asc4(yPointExtent); - var overlapped = !(xAxisExtent[0] > xPointExtent[1] || xAxisExtent[1] < xPointExtent[0] || yAxisExtent[0] > yPointExtent[1] || yAxisExtent[1] < yPointExtent[0]); - var allClipped = !overlapped; - areaData.setItemLayout(idx, { - points: points5, - allClipped - }); - var style = areaData.getItemModel(idx).getModel("itemStyle").getItemStyle(); - var color$1 = getVisualFromData2(seriesData, "color"); - if (!style.fill) { - style.fill = color$1; - if (isString2(style.fill)) { - style.fill = modifyAlpha2(style.fill, 0.4); - } - } - if (!style.stroke) { - style.stroke = color$1; - } - areaData.setItemVisual(idx, "style", style); - }); - areaData.diff(inner$j(polygonGroup).data).add(function(idx) { - var layout6 = areaData.getItemLayout(idx); - if (!layout6.allClipped) { - var polygon = new Polygon2({ - shape: { - points: layout6.points - } - }); - areaData.setItemGraphicEl(idx, polygon); - polygonGroup.group.add(polygon); - } - }).update(function(newIdx, oldIdx) { - var polygon = inner$j(polygonGroup).data.getItemGraphicEl(oldIdx); - var layout6 = areaData.getItemLayout(newIdx); - if (!layout6.allClipped) { - if (polygon) { - updateProps3(polygon, { - shape: { - points: layout6.points - } - }, maModel, newIdx); - } else { - polygon = new Polygon2({ - shape: { - points: layout6.points - } - }); - } - areaData.setItemGraphicEl(newIdx, polygon); - polygonGroup.group.add(polygon); - } else if (polygon) { - polygonGroup.group.remove(polygon); - } - }).remove(function(idx) { - var polygon = inner$j(polygonGroup).data.getItemGraphicEl(idx); - polygonGroup.group.remove(polygon); - }).execute(); - areaData.eachItemGraphicEl(function(polygon, idx) { - var itemModel = areaData.getItemModel(idx); - var style = areaData.getItemVisual(idx, "style"); - polygon.useStyle(areaData.getItemVisual(idx, "style")); - setLabelStyle2(polygon, getLabelStatesModels2(itemModel), { - labelFetcher: maModel, - labelDataIndex: idx, - defaultText: areaData.getName(idx) || "", - inheritColor: isString2(style.fill) ? modifyAlpha2(style.fill, 1) : "#000" - }); - setStatesStylesFromModel2(polygon, itemModel); - toggleHoverEmphasis2(polygon, null, null, itemModel.get(["emphasis", "disabled"])); - getECData2(polygon).dataModel = maModel; - }); - inner$j(polygonGroup).data = areaData; - polygonGroup.group.silent = maModel.get("silent") || seriesModel.get("silent"); - }; - MarkAreaView3.type = "markArea"; - return MarkAreaView3; - }(MarkerView2) - ); - function createList$2(coordSys, seriesModel, maModel) { - var areaData; - var dataDims; - var dims = ["x0", "y0", "x1", "y1"]; - if (coordSys) { - var coordDimsInfos_1 = map3(coordSys && coordSys.dimensions, function(coordDim) { - var data = seriesModel.getData(); - var info = data.getDimensionInfo(data.mapDimension(coordDim)) || {}; - return extend3(extend3({}, info), { - name: coordDim, - // DON'T use ordinalMeta to parse and collect ordinal. - ordinalMeta: null - }); - }); - dataDims = map3(dims, function(dim, idx) { - return { - name: dim, - type: coordDimsInfos_1[idx % 2].type - }; - }); - areaData = new SeriesData2(dataDims, maModel); - } else { - dataDims = [{ - name: "value", - type: "float" - }]; - areaData = new SeriesData2(dataDims, maModel); - } - var optData = map3(maModel.get("data"), curry3(markAreaTransform2, seriesModel, coordSys, maModel)); - if (coordSys) { - optData = filter2(optData, curry3(markAreaFilter2, coordSys)); - } - var dimValueGetter = coordSys ? function(item, dimName, dataIndex, dimIndex) { - var rawVal = item.coord[Math.floor(dimIndex / 2)][dimIndex % 2]; - return parseDataValue2(rawVal, dataDims[dimIndex]); - } : function(item, dimName, dataIndex, dimIndex) { - return parseDataValue2(item.value, dataDims[dimIndex]); - }; - areaData.initData(optData, null, dimValueGetter); - areaData.hasItemOption = true; - return areaData; - } - function install$G(registers) { - registers.registerComponentModel(MarkAreaModel2); - registers.registerComponentView(MarkAreaView2); - registers.registerPreprocessor(function(opt) { - if (checkMarkerInSeries2(opt.series, "markArea")) { - opt.markArea = opt.markArea || {}; - } - }); - } - var getDefaultSelectorOptions2 = function(ecModel, type) { - if (type === "all") { - return { - type: "all", - title: ecModel.getLocaleModel().get(["legend", "selector", "all"]) - }; - } else if (type === "inverse") { - return { - type: "inverse", - title: ecModel.getLocaleModel().get(["legend", "selector", "inverse"]) - }; - } - }; - var LegendModel2 = ( - /** @class */ - function(_super) { - __extends2(LegendModel3, _super); - function LegendModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = LegendModel3.type; - _this.layoutMode = { - type: "box", - // legend.width/height are maxWidth/maxHeight actually, - // whereas real width/height is calculated by its content. - // (Setting {left: 10, right: 10} does not make sense). - // So consider the case: - // `setOption({legend: {left: 10});` - // then `setOption({legend: {right: 10});` - // The previous `left` should be cleared by setting `ignoreSize`. - ignoreSize: true - }; - return _this; - } - LegendModel3.prototype.init = function(option, parentModel, ecModel) { - this.mergeDefaultAndTheme(option, ecModel); - option.selected = option.selected || {}; - this._updateSelector(option); - }; - LegendModel3.prototype.mergeOption = function(option, ecModel) { - _super.prototype.mergeOption.call(this, option, ecModel); - this._updateSelector(option); - }; - LegendModel3.prototype._updateSelector = function(option) { - var selector3 = option.selector; - var ecModel = this.ecModel; - if (selector3 === true) { - selector3 = option.selector = ["all", "inverse"]; - } - if (isArray3(selector3)) { - each17(selector3, function(item, index) { - isString2(item) && (item = { - type: item - }); - selector3[index] = merge2(item, getDefaultSelectorOptions2(ecModel, item.type)); - }); - } - }; - LegendModel3.prototype.optionUpdated = function() { - this._updateData(this.ecModel); - var legendData = this._data; - if (legendData[0] && this.get("selectedMode") === "single") { - var hasSelected = false; - for (var i2 = 0; i2 < legendData.length; i2++) { - var name_1 = legendData[i2].get("name"); - if (this.isSelected(name_1)) { - this.select(name_1); - hasSelected = true; - break; - } - } - !hasSelected && this.select(legendData[0].get("name")); - } - }; - LegendModel3.prototype._updateData = function(ecModel) { - var potentialData = []; - var availableNames = []; - ecModel.eachRawSeries(function(seriesModel) { - var seriesName = seriesModel.name; - availableNames.push(seriesName); - var isPotential; - if (seriesModel.legendVisualProvider) { - var provider = seriesModel.legendVisualProvider; - var names = provider.getAllNames(); - if (!ecModel.isSeriesFiltered(seriesModel)) { - availableNames = availableNames.concat(names); - } - if (names.length) { - potentialData = potentialData.concat(names); - } else { - isPotential = true; - } - } else { - isPotential = true; - } - if (isPotential && isNameSpecified2(seriesModel)) { - potentialData.push(seriesModel.name); - } - }); - this._availableNames = availableNames; - var rawData = this.get("data") || potentialData; - var legendNameMap = createHashMap2(); - var legendData = map3(rawData, function(dataItem) { - if (isString2(dataItem) || isNumber2(dataItem)) { - dataItem = { - name: dataItem - }; - } - if (legendNameMap.get(dataItem.name)) { - return null; - } - legendNameMap.set(dataItem.name, true); - return new Model2(dataItem, this, this.ecModel); - }, this); - this._data = filter2(legendData, function(item) { - return !!item; - }); - }; - LegendModel3.prototype.getData = function() { - return this._data; - }; - LegendModel3.prototype.select = function(name) { - var selected = this.option.selected; - var selectedMode = this.get("selectedMode"); - if (selectedMode === "single") { - var data = this._data; - each17(data, function(dataItem) { - selected[dataItem.get("name")] = false; - }); - } - selected[name] = true; - }; - LegendModel3.prototype.unSelect = function(name) { - if (this.get("selectedMode") !== "single") { - this.option.selected[name] = false; - } - }; - LegendModel3.prototype.toggleSelected = function(name) { - var selected = this.option.selected; - if (!selected.hasOwnProperty(name)) { - selected[name] = true; - } - this[selected[name] ? "unSelect" : "select"](name); - }; - LegendModel3.prototype.allSelect = function() { - var data = this._data; - var selected = this.option.selected; - each17(data, function(dataItem) { - selected[dataItem.get("name", true)] = true; - }); - }; - LegendModel3.prototype.inverseSelect = function() { - var data = this._data; - var selected = this.option.selected; - each17(data, function(dataItem) { - var name = dataItem.get("name", true); - if (!selected.hasOwnProperty(name)) { - selected[name] = true; - } - selected[name] = !selected[name]; - }); - }; - LegendModel3.prototype.isSelected = function(name) { - var selected = this.option.selected; - return !(selected.hasOwnProperty(name) && !selected[name]) && indexOf2(this._availableNames, name) >= 0; - }; - LegendModel3.prototype.getOrient = function() { - return this.get("orient") === "vertical" ? { - index: 1, - name: "vertical" - } : { - index: 0, - name: "horizontal" - }; - }; - LegendModel3.type = "legend.plain"; - LegendModel3.dependencies = ["series"]; - LegendModel3.defaultOption = { - // zlevel: 0, - z: 4, - show: true, - orient: "horizontal", - left: "center", - // right: 'center', - top: 0, - // bottom: null, - align: "auto", - backgroundColor: "rgba(0,0,0,0)", - borderColor: "#ccc", - borderRadius: 0, - borderWidth: 0, - padding: 5, - itemGap: 10, - itemWidth: 25, - itemHeight: 14, - symbolRotate: "inherit", - symbolKeepAspect: true, - inactiveColor: "#ccc", - inactiveBorderColor: "#ccc", - inactiveBorderWidth: "auto", - itemStyle: { - color: "inherit", - opacity: "inherit", - borderColor: "inherit", - borderWidth: "auto", - borderCap: "inherit", - borderJoin: "inherit", - borderDashOffset: "inherit", - borderMiterLimit: "inherit" - }, - lineStyle: { - width: "auto", - color: "inherit", - inactiveColor: "#ccc", - inactiveWidth: 2, - opacity: "inherit", - type: "inherit", - cap: "inherit", - join: "inherit", - dashOffset: "inherit", - miterLimit: "inherit" - }, - textStyle: { - color: "#333" - }, - selectedMode: true, - selector: false, - selectorLabel: { - show: true, - borderRadius: 10, - padding: [3, 5, 3, 5], - fontSize: 12, - fontFamily: "sans-serif", - color: "#666", - borderWidth: 1, - borderColor: "#666" - }, - emphasis: { - selectorLabel: { - show: true, - color: "#eee", - backgroundColor: "#666" - } - }, - selectorPosition: "auto", - selectorItemGap: 7, - selectorButtonGap: 10, - tooltip: { - show: false - } - }; - return LegendModel3; - }(ComponentModel2) - ); - var curry$1 = curry3; - var each$c = each17; - var Group$2 = Group5; - var LegendView2 = ( - /** @class */ - function(_super) { - __extends2(LegendView3, _super); - function LegendView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = LegendView3.type; - _this.newlineDisabled = false; - return _this; - } - LegendView3.prototype.init = function() { - this.group.add(this._contentGroup = new Group$2()); - this.group.add(this._selectorGroup = new Group$2()); - this._isFirstRender = true; - }; - LegendView3.prototype.getContentGroup = function() { - return this._contentGroup; - }; - LegendView3.prototype.getSelectorGroup = function() { - return this._selectorGroup; - }; - LegendView3.prototype.render = function(legendModel, ecModel, api) { - var isFirstRender = this._isFirstRender; - this._isFirstRender = false; - this.resetInner(); - if (!legendModel.get("show", true)) { - return; - } - var itemAlign = legendModel.get("align"); - var orient = legendModel.get("orient"); - if (!itemAlign || itemAlign === "auto") { - itemAlign = legendModel.get("left") === "right" && orient === "vertical" ? "right" : "left"; - } - var selector3 = legendModel.get("selector", true); - var selectorPosition = legendModel.get("selectorPosition", true); - if (selector3 && (!selectorPosition || selectorPosition === "auto")) { - selectorPosition = orient === "horizontal" ? "end" : "start"; - } - this.renderInner(itemAlign, legendModel, ecModel, api, selector3, orient, selectorPosition); - var positionInfo = legendModel.getBoxLayoutParams(); - var viewportSize = { - width: api.getWidth(), - height: api.getHeight() - }; - var padding = legendModel.get("padding"); - var maxSize = getLayoutRect2(positionInfo, viewportSize, padding); - var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector3, selectorPosition); - var layoutRect = getLayoutRect2(defaults2({ - width: mainRect.width, - height: mainRect.height - }, positionInfo), viewportSize, padding); - this.group.x = layoutRect.x - mainRect.x; - this.group.y = layoutRect.y - mainRect.y; - this.group.markRedraw(); - this.group.add(this._backgroundEl = makeBackground2(mainRect, legendModel)); - }; - LegendView3.prototype.resetInner = function() { - this.getContentGroup().removeAll(); - this._backgroundEl && this.group.remove(this._backgroundEl); - this.getSelectorGroup().removeAll(); - }; - LegendView3.prototype.renderInner = function(itemAlign, legendModel, ecModel, api, selector3, orient, selectorPosition) { - var contentGroup = this.getContentGroup(); - var legendDrawnMap = createHashMap2(); - var selectMode = legendModel.get("selectedMode"); - var excludeSeriesId = []; - ecModel.eachRawSeries(function(seriesModel) { - !seriesModel.get("legendHoverLink") && excludeSeriesId.push(seriesModel.id); - }); - each$c(legendModel.getData(), function(legendItemModel, dataIndex) { - var name = legendItemModel.get("name"); - if (!this.newlineDisabled && (name === "" || name === "\n")) { - var g = new Group$2(); - g.newline = true; - contentGroup.add(g); - return; - } - var seriesModel = ecModel.getSeriesByName(name)[0]; - if (legendDrawnMap.get(name)) { - return; - } - if (seriesModel) { - var data = seriesModel.getData(); - var lineVisualStyle = data.getVisual("legendLineStyle") || {}; - var legendIcon = data.getVisual("legendIcon"); - var style = data.getVisual("style"); - var itemGroup = this._createItem(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, style, legendIcon, selectMode, api); - itemGroup.on("click", curry$1(dispatchSelectAction2, name, null, api, excludeSeriesId)).on("mouseover", curry$1(dispatchHighlightAction2, seriesModel.name, null, api, excludeSeriesId)).on("mouseout", curry$1(dispatchDownplayAction2, seriesModel.name, null, api, excludeSeriesId)); - if (ecModel.ssr) { - itemGroup.eachChild(function(child) { - var ecData = getECData2(child); - ecData.seriesIndex = seriesModel.seriesIndex; - ecData.dataIndex = dataIndex; - ecData.ssrType = "legend"; - }); - } - legendDrawnMap.set(name, true); - } else { - ecModel.eachRawSeries(function(seriesModel2) { - if (legendDrawnMap.get(name)) { - return; - } - if (seriesModel2.legendVisualProvider) { - var provider = seriesModel2.legendVisualProvider; - if (!provider.containName(name)) { - return; - } - var idx = provider.indexOfName(name); - var style2 = provider.getItemVisual(idx, "style"); - var legendIcon2 = provider.getItemVisual(idx, "legendIcon"); - var colorArr = parse2(style2.fill); - if (colorArr && colorArr[3] === 0) { - colorArr[3] = 0.2; - style2 = extend3(extend3({}, style2), { - fill: stringify2(colorArr, "rgba") - }); - } - var itemGroup2 = this._createItem(seriesModel2, name, dataIndex, legendItemModel, legendModel, itemAlign, {}, style2, legendIcon2, selectMode, api); - itemGroup2.on("click", curry$1(dispatchSelectAction2, null, name, api, excludeSeriesId)).on("mouseover", curry$1(dispatchHighlightAction2, null, name, api, excludeSeriesId)).on("mouseout", curry$1(dispatchDownplayAction2, null, name, api, excludeSeriesId)); - if (ecModel.ssr) { - itemGroup2.eachChild(function(child) { - var ecData = getECData2(child); - ecData.seriesIndex = seriesModel2.seriesIndex; - ecData.dataIndex = dataIndex; - ecData.ssrType = "legend"; - }); - } - legendDrawnMap.set(name, true); - } - }, this); - } - if (true) { - if (!legendDrawnMap.get(name)) { - console.warn(name + " series not exists. Legend data should be same with series name or data name."); - } - } - }, this); - if (selector3) { - this._createSelector(selector3, legendModel, api, orient, selectorPosition); - } - }; - LegendView3.prototype._createSelector = function(selector3, legendModel, api, orient, selectorPosition) { - var selectorGroup = this.getSelectorGroup(); - each$c(selector3, function createSelectorButton(selectorItem) { - var type = selectorItem.type; - var labelText = new ZRText2({ - style: { - x: 0, - y: 0, - align: "center", - verticalAlign: "middle" - }, - onclick: function() { - api.dispatchAction({ - type: type === "all" ? "legendAllSelect" : "legendInverseSelect", - legendId: legendModel.id - }); - } - }); - selectorGroup.add(labelText); - var labelModel = legendModel.getModel("selectorLabel"); - var emphasisLabelModel = legendModel.getModel(["emphasis", "selectorLabel"]); - setLabelStyle2(labelText, { - normal: labelModel, - emphasis: emphasisLabelModel - }, { - defaultText: selectorItem.title - }); - enableHoverEmphasis2(labelText); - }); - }; - LegendView3.prototype._createItem = function(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, itemVisualStyle, legendIcon, selectMode, api) { - var drawType = seriesModel.visualDrawType; - var itemWidth = legendModel.get("itemWidth"); - var itemHeight = legendModel.get("itemHeight"); - var isSelected = legendModel.isSelected(name); - var iconRotate = legendItemModel.get("symbolRotate"); - var symbolKeepAspect = legendItemModel.get("symbolKeepAspect"); - var legendIconType = legendItemModel.get("icon"); - legendIcon = legendIconType || legendIcon || "roundRect"; - var style = getLegendStyle2(legendIcon, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api); - var itemGroup = new Group$2(); - var textStyleModel = legendItemModel.getModel("textStyle"); - if (isFunction2(seriesModel.getLegendIcon) && (!legendIconType || legendIconType === "inherit")) { - itemGroup.add(seriesModel.getLegendIcon({ - itemWidth, - itemHeight, - icon: legendIcon, - iconRotate, - itemStyle: style.itemStyle, - lineStyle: style.lineStyle, - symbolKeepAspect - })); - } else { - var rotate3 = legendIconType === "inherit" && seriesModel.getData().getVisual("symbol") ? iconRotate === "inherit" ? seriesModel.getData().getVisual("symbolRotate") : iconRotate : 0; - itemGroup.add(getDefaultLegendIcon2({ - itemWidth, - itemHeight, - icon: legendIcon, - iconRotate: rotate3, - itemStyle: style.itemStyle, - lineStyle: style.lineStyle, - symbolKeepAspect - })); - } - var textX = itemAlign === "left" ? itemWidth + 5 : -5; - var textAlign = itemAlign; - var formatter = legendModel.get("formatter"); - var content = name; - if (isString2(formatter) && formatter) { - content = formatter.replace("{name}", name != null ? name : ""); - } else if (isFunction2(formatter)) { - content = formatter(name); - } - var textColor = isSelected ? textStyleModel.getTextColor() : legendItemModel.get("inactiveColor"); - itemGroup.add(new ZRText2({ - style: createTextStyle3(textStyleModel, { - text: content, - x: textX, - y: itemHeight / 2, - fill: textColor, - align: textAlign, - verticalAlign: "middle" - }, { - inheritColor: textColor - }) - })); - var hitRect = new Rect4({ - shape: itemGroup.getBoundingRect(), - style: { - // Cannot use 'invisible' because SVG SSR will miss the node - fill: "transparent" - } - }); - var tooltipModel = legendItemModel.getModel("tooltip"); - if (tooltipModel.get("show")) { - setTooltipConfig2({ - el: hitRect, - componentModel: legendModel, - itemName: name, - itemTooltipOption: tooltipModel.option - }); - } - itemGroup.add(hitRect); - itemGroup.eachChild(function(child) { - child.silent = true; - }); - hitRect.silent = !selectMode; - this.getContentGroup().add(itemGroup); - enableHoverEmphasis2(itemGroup); - itemGroup.__legendDataIndex = dataIndex; - return itemGroup; - }; - LegendView3.prototype.layoutInner = function(legendModel, itemAlign, maxSize, isFirstRender, selector3, selectorPosition) { - var contentGroup = this.getContentGroup(); - var selectorGroup = this.getSelectorGroup(); - box2(legendModel.get("orient"), contentGroup, legendModel.get("itemGap"), maxSize.width, maxSize.height); - var contentRect = contentGroup.getBoundingRect(); - var contentPos = [-contentRect.x, -contentRect.y]; - selectorGroup.markRedraw(); - contentGroup.markRedraw(); - if (selector3) { - box2( - // Buttons in selectorGroup always layout horizontally - "horizontal", - selectorGroup, - legendModel.get("selectorItemGap", true) - ); - var selectorRect = selectorGroup.getBoundingRect(); - var selectorPos = [-selectorRect.x, -selectorRect.y]; - var selectorButtonGap = legendModel.get("selectorButtonGap", true); - var orientIdx = legendModel.getOrient().index; - var wh = orientIdx === 0 ? "width" : "height"; - var hw = orientIdx === 0 ? "height" : "width"; - var yx = orientIdx === 0 ? "y" : "x"; - if (selectorPosition === "end") { - selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap; - } else { - contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap; - } - selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2; - selectorGroup.x = selectorPos[0]; - selectorGroup.y = selectorPos[1]; - contentGroup.x = contentPos[0]; - contentGroup.y = contentPos[1]; - var mainRect = { - x: 0, - y: 0 - }; - mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh]; - mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]); - mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]); - return mainRect; - } else { - contentGroup.x = contentPos[0]; - contentGroup.y = contentPos[1]; - return this.group.getBoundingRect(); - } - }; - LegendView3.prototype.remove = function() { - this.getContentGroup().removeAll(); - this._isFirstRender = true; - }; - LegendView3.type = "legend.plain"; - return LegendView3; - }(ComponentView2) - ); - function getLegendStyle2(iconType, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api) { - function handleCommonProps(style, visualStyle) { - if (style.lineWidth === "auto") { - style.lineWidth = visualStyle.lineWidth > 0 ? 2 : 0; - } - each$c(style, function(propVal, propName) { - style[propName] === "inherit" && (style[propName] = visualStyle[propName]); - }); - } - var itemStyleModel = legendItemModel.getModel("itemStyle"); - var itemStyle = itemStyleModel.getItemStyle(); - var iconBrushType = iconType.lastIndexOf("empty", 0) === 0 ? "fill" : "stroke"; - var decalStyle = itemStyleModel.getShallow("decal"); - itemStyle.decal = !decalStyle || decalStyle === "inherit" ? itemVisualStyle.decal : createOrUpdatePatternFromDecal2(decalStyle, api); - if (itemStyle.fill === "inherit") { - itemStyle.fill = itemVisualStyle[drawType]; - } - if (itemStyle.stroke === "inherit") { - itemStyle.stroke = itemVisualStyle[iconBrushType]; - } - if (itemStyle.opacity === "inherit") { - itemStyle.opacity = (drawType === "fill" ? itemVisualStyle : lineVisualStyle).opacity; - } - handleCommonProps(itemStyle, itemVisualStyle); - var legendLineModel = legendItemModel.getModel("lineStyle"); - var lineStyle = legendLineModel.getLineStyle(); - handleCommonProps(lineStyle, lineVisualStyle); - itemStyle.fill === "auto" && (itemStyle.fill = itemVisualStyle.fill); - itemStyle.stroke === "auto" && (itemStyle.stroke = itemVisualStyle.fill); - lineStyle.stroke === "auto" && (lineStyle.stroke = itemVisualStyle.fill); - if (!isSelected) { - var borderWidth = legendItemModel.get("inactiveBorderWidth"); - var visualHasBorder = itemStyle[iconBrushType]; - itemStyle.lineWidth = borderWidth === "auto" ? itemVisualStyle.lineWidth > 0 && visualHasBorder ? 2 : 0 : itemStyle.lineWidth; - itemStyle.fill = legendItemModel.get("inactiveColor"); - itemStyle.stroke = legendItemModel.get("inactiveBorderColor"); - lineStyle.stroke = legendLineModel.get("inactiveColor"); - lineStyle.lineWidth = legendLineModel.get("inactiveWidth"); - } - return { - itemStyle, - lineStyle - }; - } - function getDefaultLegendIcon2(opt) { - var symboType = opt.icon || "roundRect"; - var icon = createSymbol3(symboType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill, opt.symbolKeepAspect); - icon.setStyle(opt.itemStyle); - icon.rotation = (opt.iconRotate || 0) * Math.PI / 180; - icon.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]); - if (symboType.indexOf("empty") > -1) { - icon.style.stroke = icon.style.fill; - icon.style.fill = "#fff"; - icon.style.lineWidth = 2; - } - return icon; - } - function dispatchSelectAction2(seriesName, dataName, api, excludeSeriesId) { - dispatchDownplayAction2(seriesName, dataName, api, excludeSeriesId); - api.dispatchAction({ - type: "legendToggleSelect", - name: seriesName != null ? seriesName : dataName - }); - dispatchHighlightAction2(seriesName, dataName, api, excludeSeriesId); - } - function isUseHoverLayer2(api) { - var list = api.getZr().storage.getDisplayList(); - var emphasisState; - var i2 = 0; - var len3 = list.length; - while (i2 < len3 && !(emphasisState = list[i2].states.emphasis)) { - i2++; - } - return emphasisState && emphasisState.hoverLayer; - } - function dispatchHighlightAction2(seriesName, dataName, api, excludeSeriesId) { - if (!isUseHoverLayer2(api)) { - api.dispatchAction({ - type: "highlight", - seriesName, - name: dataName, - excludeSeriesId - }); - } - } - function dispatchDownplayAction2(seriesName, dataName, api, excludeSeriesId) { - if (!isUseHoverLayer2(api)) { - api.dispatchAction({ - type: "downplay", - seriesName, - name: dataName, - excludeSeriesId - }); - } - } - function legendFilter2(ecModel) { - var legendModels = ecModel.findComponents({ - mainType: "legend" - }); - if (legendModels && legendModels.length) { - ecModel.filterSeries(function(series) { - for (var i2 = 0; i2 < legendModels.length; i2++) { - if (!legendModels[i2].isSelected(series.name)) { - return false; - } - } - return true; - }); - } - } - function legendSelectActionHandler2(methodName, payload, ecModel) { - var isAllSelect = methodName === "allSelect" || methodName === "inverseSelect"; - var selectedMap = {}; - var actionLegendIndices = []; - ecModel.eachComponent({ - mainType: "legend", - query: payload - }, function(legendModel) { - if (isAllSelect) { - legendModel[methodName](); - } else { - legendModel[methodName](payload.name); - } - makeSelectedMap2(legendModel, selectedMap); - actionLegendIndices.push(legendModel.componentIndex); - }); - var allSelectedMap = {}; - ecModel.eachComponent("legend", function(legendModel) { - each17(selectedMap, function(isSelected, name) { - legendModel[isSelected ? "select" : "unSelect"](name); - }); - makeSelectedMap2(legendModel, allSelectedMap); - }); - return isAllSelect ? { - selected: allSelectedMap, - // return legendIndex array to tell the developers which legends are allSelect / inverseSelect - legendIndex: actionLegendIndices - } : { - name: payload.name, - selected: allSelectedMap - }; - } - function makeSelectedMap2(legendModel, out3) { - var selectedMap = out3 || {}; - each17(legendModel.getData(), function(model) { - var name = model.get("name"); - if (name === "\n" || name === "") { - return; - } - var isItemSelected = legendModel.isSelected(name); - if (hasOwn2(selectedMap, name)) { - selectedMap[name] = selectedMap[name] && isItemSelected; - } else { - selectedMap[name] = isItemSelected; - } - }); - return selectedMap; - } - function installLegendAction2(registers) { - registers.registerAction("legendToggleSelect", "legendselectchanged", curry3(legendSelectActionHandler2, "toggleSelected")); - registers.registerAction("legendAllSelect", "legendselectall", curry3(legendSelectActionHandler2, "allSelect")); - registers.registerAction("legendInverseSelect", "legendinverseselect", curry3(legendSelectActionHandler2, "inverseSelect")); - registers.registerAction("legendSelect", "legendselected", curry3(legendSelectActionHandler2, "select")); - registers.registerAction("legendUnSelect", "legendunselected", curry3(legendSelectActionHandler2, "unSelect")); - } - function install$H(registers) { - registers.registerComponentModel(LegendModel2); - registers.registerComponentView(LegendView2); - registers.registerProcessor(registers.PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter2); - registers.registerSubTypeDefaulter("legend", function() { - return "plain"; - }); - installLegendAction2(registers); - } - var ScrollableLegendModel2 = ( - /** @class */ - function(_super) { - __extends2(ScrollableLegendModel3, _super); - function ScrollableLegendModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ScrollableLegendModel3.type; - return _this; - } - ScrollableLegendModel3.prototype.setScrollDataIndex = function(scrollDataIndex) { - this.option.scrollDataIndex = scrollDataIndex; - }; - ScrollableLegendModel3.prototype.init = function(option, parentModel, ecModel) { - var inputPositionParams = getLayoutParams2(option); - _super.prototype.init.call(this, option, parentModel, ecModel); - mergeAndNormalizeLayoutParams$1(this, option, inputPositionParams); - }; - ScrollableLegendModel3.prototype.mergeOption = function(option, ecModel) { - _super.prototype.mergeOption.call(this, option, ecModel); - mergeAndNormalizeLayoutParams$1(this, this.option, option); - }; - ScrollableLegendModel3.type = "legend.scroll"; - ScrollableLegendModel3.defaultOption = inheritDefaultOption2(LegendModel2.defaultOption, { - scrollDataIndex: 0, - pageButtonItemGap: 5, - pageButtonGap: null, - pageButtonPosition: "end", - pageFormatter: "{current}/{total}", - pageIcons: { - horizontal: ["M0,0L12,-10L12,10z", "M0,0L-12,-10L-12,10z"], - vertical: ["M0,0L20,0L10,-20z", "M0,0L20,0L10,20z"] - }, - pageIconColor: "#2f4554", - pageIconInactiveColor: "#aaa", - pageIconSize: 15, - pageTextStyle: { - color: "#333" - }, - animationDurationUpdate: 800 - }); - return ScrollableLegendModel3; - }(LegendModel2) - ); - function mergeAndNormalizeLayoutParams$1(legendModel, target, raw) { - var orient = legendModel.getOrient(); - var ignoreSize = [1, 1]; - ignoreSize[orient.index] = 0; - mergeLayoutParam2(target, raw, { - type: "box", - ignoreSize: !!ignoreSize - }); - } - var Group$3 = Group5; - var WH$1 = ["width", "height"]; - var XY$1 = ["x", "y"]; - var ScrollableLegendView2 = ( - /** @class */ - function(_super) { - __extends2(ScrollableLegendView3, _super); - function ScrollableLegendView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ScrollableLegendView3.type; - _this.newlineDisabled = true; - _this._currentIndex = 0; - return _this; - } - ScrollableLegendView3.prototype.init = function() { - _super.prototype.init.call(this); - this.group.add(this._containerGroup = new Group$3()); - this._containerGroup.add(this.getContentGroup()); - this.group.add(this._controllerGroup = new Group$3()); - }; - ScrollableLegendView3.prototype.resetInner = function() { - _super.prototype.resetInner.call(this); - this._controllerGroup.removeAll(); - this._containerGroup.removeClipPath(); - this._containerGroup.__rectSize = null; - }; - ScrollableLegendView3.prototype.renderInner = function(itemAlign, legendModel, ecModel, api, selector3, orient, selectorPosition) { - var self2 = this; - _super.prototype.renderInner.call(this, itemAlign, legendModel, ecModel, api, selector3, orient, selectorPosition); - var controllerGroup = this._controllerGroup; - var pageIconSize = legendModel.get("pageIconSize", true); - var pageIconSizeArr = isArray3(pageIconSize) ? pageIconSize : [pageIconSize, pageIconSize]; - createPageButton("pagePrev", 0); - var pageTextStyleModel = legendModel.getModel("pageTextStyle"); - controllerGroup.add(new ZRText2({ - name: "pageText", - style: { - // Placeholder to calculate a proper layout. - text: "xx/xx", - fill: pageTextStyleModel.getTextColor(), - font: pageTextStyleModel.getFont(), - verticalAlign: "middle", - align: "center" - }, - silent: true - })); - createPageButton("pageNext", 1); - function createPageButton(name, iconIdx) { - var pageDataIndexName = name + "DataIndex"; - var icon = createIcon2(legendModel.get("pageIcons", true)[legendModel.getOrient().name][iconIdx], { - // Buttons will be created in each render, so we do not need - // to worry about avoiding using legendModel kept in scope. - onclick: bind3(self2._pageGo, self2, pageDataIndexName, legendModel, api) - }, { - x: -pageIconSizeArr[0] / 2, - y: -pageIconSizeArr[1] / 2, - width: pageIconSizeArr[0], - height: pageIconSizeArr[1] - }); - icon.name = name; - controllerGroup.add(icon); - } - }; - ScrollableLegendView3.prototype.layoutInner = function(legendModel, itemAlign, maxSize, isFirstRender, selector3, selectorPosition) { - var selectorGroup = this.getSelectorGroup(); - var orientIdx = legendModel.getOrient().index; - var wh = WH$1[orientIdx]; - var xy = XY$1[orientIdx]; - var hw = WH$1[1 - orientIdx]; - var yx = XY$1[1 - orientIdx]; - selector3 && box2( - // Buttons in selectorGroup always layout horizontally - "horizontal", - selectorGroup, - legendModel.get("selectorItemGap", true) - ); - var selectorButtonGap = legendModel.get("selectorButtonGap", true); - var selectorRect = selectorGroup.getBoundingRect(); - var selectorPos = [-selectorRect.x, -selectorRect.y]; - var processMaxSize = clone6(maxSize); - selector3 && (processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap); - var mainRect = this._layoutContentAndController(legendModel, isFirstRender, processMaxSize, orientIdx, wh, hw, yx, xy); - if (selector3) { - if (selectorPosition === "end") { - selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap; - } else { - var offset3 = selectorRect[wh] + selectorButtonGap; - selectorPos[orientIdx] -= offset3; - mainRect[xy] -= offset3; - } - mainRect[wh] += selectorRect[wh] + selectorButtonGap; - selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2; - mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]); - mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]); - selectorGroup.x = selectorPos[0]; - selectorGroup.y = selectorPos[1]; - selectorGroup.markRedraw(); - } - return mainRect; - }; - ScrollableLegendView3.prototype._layoutContentAndController = function(legendModel, isFirstRender, maxSize, orientIdx, wh, hw, yx, xy) { - var contentGroup = this.getContentGroup(); - var containerGroup = this._containerGroup; - var controllerGroup = this._controllerGroup; - box2(legendModel.get("orient"), contentGroup, legendModel.get("itemGap"), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height); - box2( - // Buttons in controller are layout always horizontally. - "horizontal", - controllerGroup, - legendModel.get("pageButtonItemGap", true) - ); - var contentRect = contentGroup.getBoundingRect(); - var controllerRect = controllerGroup.getBoundingRect(); - var showController = this._showController = contentRect[wh] > maxSize[wh]; - var contentPos = [-contentRect.x, -contentRect.y]; - if (!isFirstRender) { - contentPos[orientIdx] = contentGroup[xy]; - } - var containerPos = [0, 0]; - var controllerPos = [-controllerRect.x, -controllerRect.y]; - var pageButtonGap = retrieve22(legendModel.get("pageButtonGap", true), legendModel.get("itemGap", true)); - if (showController) { - var pageButtonPosition = legendModel.get("pageButtonPosition", true); - if (pageButtonPosition === "end") { - controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh]; - } else { - containerPos[orientIdx] += controllerRect[wh] + pageButtonGap; - } - } - controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2; - contentGroup.setPosition(contentPos); - containerGroup.setPosition(containerPos); - controllerGroup.setPosition(controllerPos); - var mainRect = { - x: 0, - y: 0 - }; - mainRect[wh] = showController ? maxSize[wh] : contentRect[wh]; - mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]); - mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]); - containerGroup.__rectSize = maxSize[wh]; - if (showController) { - var clipShape = { - x: 0, - y: 0 - }; - clipShape[wh] = Math.max(maxSize[wh] - controllerRect[wh] - pageButtonGap, 0); - clipShape[hw] = mainRect[hw]; - containerGroup.setClipPath(new Rect4({ - shape: clipShape - })); - containerGroup.__rectSize = clipShape[wh]; - } else { - controllerGroup.eachChild(function(child) { - child.attr({ - invisible: true, - silent: true - }); - }); - } - var pageInfo = this._getPageInfo(legendModel); - pageInfo.pageIndex != null && updateProps3( - contentGroup, - { - x: pageInfo.contentPosition[0], - y: pageInfo.contentPosition[1] - }, - // When switch from "show controller" to "not show controller", view should be - // updated immediately without animation, otherwise causes weird effect. - showController ? legendModel : null - ); - this._updatePageInfoView(legendModel, pageInfo); - return mainRect; - }; - ScrollableLegendView3.prototype._pageGo = function(to, legendModel, api) { - var scrollDataIndex = this._getPageInfo(legendModel)[to]; - scrollDataIndex != null && api.dispatchAction({ - type: "legendScroll", - scrollDataIndex, - legendId: legendModel.id - }); - }; - ScrollableLegendView3.prototype._updatePageInfoView = function(legendModel, pageInfo) { - var controllerGroup = this._controllerGroup; - each17(["pagePrev", "pageNext"], function(name) { - var key = name + "DataIndex"; - var canJump = pageInfo[key] != null; - var icon = controllerGroup.childOfName(name); - if (icon) { - icon.setStyle("fill", canJump ? legendModel.get("pageIconColor", true) : legendModel.get("pageIconInactiveColor", true)); - icon.cursor = canJump ? "pointer" : "default"; - } - }); - var pageText = controllerGroup.childOfName("pageText"); - var pageFormatter = legendModel.get("pageFormatter"); - var pageIndex = pageInfo.pageIndex; - var current = pageIndex != null ? pageIndex + 1 : 0; - var total = pageInfo.pageCount; - pageText && pageFormatter && pageText.setStyle("text", isString2(pageFormatter) ? pageFormatter.replace("{current}", current == null ? "" : current + "").replace("{total}", total == null ? "" : total + "") : pageFormatter({ - current, - total - })); - }; - ScrollableLegendView3.prototype._getPageInfo = function(legendModel) { - var scrollDataIndex = legendModel.get("scrollDataIndex", true); - var contentGroup = this.getContentGroup(); - var containerRectSize = this._containerGroup.__rectSize; - var orientIdx = legendModel.getOrient().index; - var wh = WH$1[orientIdx]; - var xy = XY$1[orientIdx]; - var targetItemIndex = this._findTargetItemIndex(scrollDataIndex); - var children = contentGroup.children(); - var targetItem = children[targetItemIndex]; - var itemCount = children.length; - var pCount = !itemCount ? 0 : 1; - var result = { - contentPosition: [contentGroup.x, contentGroup.y], - pageCount: pCount, - pageIndex: pCount - 1, - pagePrevDataIndex: null, - pageNextDataIndex: null - }; - if (!targetItem) { - return result; - } - var targetItemInfo = getItemInfo(targetItem); - result.contentPosition[orientIdx] = -targetItemInfo.s; - for (var i2 = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i2 <= itemCount; ++i2) { - currItemInfo = getItemInfo(children[i2]); - if ( - // Half of the last item is out of the window. - !currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize || currItemInfo && !intersect3(currItemInfo, winStartItemInfo.s) - ) { - if (winEndItemInfo.i > winStartItemInfo.i) { - winStartItemInfo = winEndItemInfo; - } else { - winStartItemInfo = currItemInfo; - } - if (winStartItemInfo) { - if (result.pageNextDataIndex == null) { - result.pageNextDataIndex = winStartItemInfo.i; - } - ++result.pageCount; - } - } - winEndItemInfo = currItemInfo; - } - for (var i2 = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i2 >= -1; --i2) { - currItemInfo = getItemInfo(children[i2]); - if ( - // If the the end item does not intersect with the window started - // from the current item, a page can be settled. - (!currItemInfo || !intersect3(winEndItemInfo, currItemInfo.s)) && winStartItemInfo.i < winEndItemInfo.i - ) { - winEndItemInfo = winStartItemInfo; - if (result.pagePrevDataIndex == null) { - result.pagePrevDataIndex = winStartItemInfo.i; - } - ++result.pageCount; - ++result.pageIndex; - } - winStartItemInfo = currItemInfo; - } - return result; - function getItemInfo(el) { - if (el) { - var itemRect = el.getBoundingRect(); - var start4 = itemRect[xy] + el[xy]; - return { - s: start4, - e: start4 + itemRect[wh], - i: el.__legendDataIndex - }; - } - } - function intersect3(itemInfo, winStart) { - return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize; - } - }; - ScrollableLegendView3.prototype._findTargetItemIndex = function(targetDataIndex) { - if (!this._showController) { - return 0; - } - var index; - var contentGroup = this.getContentGroup(); - var defaultIndex; - contentGroup.eachChild(function(child, idx) { - var legendDataIdx = child.__legendDataIndex; - if (defaultIndex == null && legendDataIdx != null) { - defaultIndex = idx; - } - if (legendDataIdx === targetDataIndex) { - index = idx; - } - }); - return index != null ? index : defaultIndex; - }; - ScrollableLegendView3.type = "legend.scroll"; - return ScrollableLegendView3; - }(LegendView2) - ); - function installScrollableLegendAction2(registers) { - registers.registerAction("legendScroll", "legendscroll", function(payload, ecModel) { - var scrollDataIndex = payload.scrollDataIndex; - scrollDataIndex != null && ecModel.eachComponent({ - mainType: "legend", - subType: "scroll", - query: payload - }, function(legendModel) { - legendModel.setScrollDataIndex(scrollDataIndex); - }); - }); - } - function install$I(registers) { - use2(install$H); - registers.registerComponentModel(ScrollableLegendModel2); - registers.registerComponentView(ScrollableLegendView2); - installScrollableLegendAction2(registers); - } - function install$J(registers) { - use2(install$H); - use2(install$I); - } - var InsideZoomModel2 = ( - /** @class */ - function(_super) { - __extends2(InsideZoomModel3, _super); - function InsideZoomModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = InsideZoomModel3.type; - return _this; - } - InsideZoomModel3.type = "dataZoom.inside"; - InsideZoomModel3.defaultOption = inheritDefaultOption2(DataZoomModel2.defaultOption, { - disabled: false, - zoomLock: false, - zoomOnMouseWheel: true, - moveOnMouseMove: true, - moveOnMouseWheel: false, - preventDefaultMouseMove: true - }); - return InsideZoomModel3; - }(DataZoomModel2) - ); - var inner$k = makeInner2(); - function setViewInfoToCoordSysRecord2(api, dataZoomModel, getRange) { - inner$k(api).coordSysRecordMap.each(function(coordSysRecord) { - var dzInfo = coordSysRecord.dataZoomInfoMap.get(dataZoomModel.uid); - if (dzInfo) { - dzInfo.getRange = getRange; - } - }); - } - function disposeCoordSysRecordIfNeeded2(api, dataZoomModel) { - var coordSysRecordMap = inner$k(api).coordSysRecordMap; - var coordSysKeyArr = coordSysRecordMap.keys(); - for (var i2 = 0; i2 < coordSysKeyArr.length; i2++) { - var coordSysKey = coordSysKeyArr[i2]; - var coordSysRecord = coordSysRecordMap.get(coordSysKey); - var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap; - if (dataZoomInfoMap) { - var dzUid = dataZoomModel.uid; - var dzInfo = dataZoomInfoMap.get(dzUid); - if (dzInfo) { - dataZoomInfoMap.removeKey(dzUid); - if (!dataZoomInfoMap.keys().length) { - disposeCoordSysRecord2(coordSysRecordMap, coordSysRecord); - } - } - } - } - } - function disposeCoordSysRecord2(coordSysRecordMap, coordSysRecord) { - if (coordSysRecord) { - coordSysRecordMap.removeKey(coordSysRecord.model.uid); - var controller = coordSysRecord.controller; - controller && controller.dispose(); - } - } - function createCoordSysRecord2(api, coordSysModel) { - var coordSysRecord = { - model: coordSysModel, - containsPoint: curry3(containsPoint2, coordSysModel), - dispatchAction: curry3(dispatchAction$1, api), - dataZoomInfoMap: null, - controller: null - }; - var controller = coordSysRecord.controller = new RoamController2(api.getZr()); - each17(["pan", "zoom", "scrollMove"], function(eventName) { - controller.on(eventName, function(event) { - var batch = []; - coordSysRecord.dataZoomInfoMap.each(function(dzInfo) { - if (!event.isAvailableBehavior(dzInfo.model.option)) { - return; - } - var method = (dzInfo.getRange || {})[eventName]; - var range = method && method(dzInfo.dzReferCoordSysInfo, coordSysRecord.model.mainType, coordSysRecord.controller, event); - !dzInfo.model.get("disabled", true) && range && batch.push({ - dataZoomId: dzInfo.model.id, - start: range[0], - end: range[1] - }); - }); - batch.length && coordSysRecord.dispatchAction(batch); - }); - }); - return coordSysRecord; - } - function dispatchAction$1(api, batch) { - if (!api.isDisposed()) { - api.dispatchAction({ - type: "dataZoom", - animation: { - easing: "cubicOut", - duration: 100 - }, - batch - }); - } - } - function containsPoint2(coordSysModel, e3, x, y) { - return coordSysModel.coordinateSystem.containPoint([x, y]); - } - function mergeControllerParams2(dataZoomInfoMap) { - var controlType; - var prefix = "type_"; - var typePriority = { - "type_true": 2, - "type_move": 1, - "type_false": 0, - "type_undefined": -1 - }; - var preventDefaultMouseMove = true; - dataZoomInfoMap.each(function(dataZoomInfo) { - var dataZoomModel = dataZoomInfo.model; - var oneType = dataZoomModel.get("disabled", true) ? false : dataZoomModel.get("zoomLock", true) ? "move" : true; - if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) { - controlType = oneType; - } - preventDefaultMouseMove = preventDefaultMouseMove && dataZoomModel.get("preventDefaultMouseMove", true); - }); - return { - controlType, - opt: { - // RoamController will enable all of these functionalities, - // and the final behavior is determined by its event listener - // provided by each inside zoom. - zoomOnMouseWheel: true, - moveOnMouseMove: true, - moveOnMouseWheel: true, - preventDefaultMouseMove: !!preventDefaultMouseMove - } - }; - } - function installDataZoomRoamProcessor2(registers) { - registers.registerProcessor(registers.PRIORITY.PROCESSOR.FILTER, function(ecModel, api) { - var apiInner = inner$k(api); - var coordSysRecordMap = apiInner.coordSysRecordMap || (apiInner.coordSysRecordMap = createHashMap2()); - coordSysRecordMap.each(function(coordSysRecord) { - coordSysRecord.dataZoomInfoMap = null; - }); - ecModel.eachComponent({ - mainType: "dataZoom", - subType: "inside" - }, function(dataZoomModel) { - var dzReferCoordSysWrap = collectReferCoordSysModelInfo2(dataZoomModel); - each17(dzReferCoordSysWrap.infoList, function(dzCoordSysInfo) { - var coordSysUid = dzCoordSysInfo.model.uid; - var coordSysRecord = coordSysRecordMap.get(coordSysUid) || coordSysRecordMap.set(coordSysUid, createCoordSysRecord2(api, dzCoordSysInfo.model)); - var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap || (coordSysRecord.dataZoomInfoMap = createHashMap2()); - dataZoomInfoMap.set(dataZoomModel.uid, { - dzReferCoordSysInfo: dzCoordSysInfo, - model: dataZoomModel, - getRange: null - }); - }); - }); - coordSysRecordMap.each(function(coordSysRecord) { - var controller = coordSysRecord.controller; - var firstDzInfo; - var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap; - if (dataZoomInfoMap) { - var firstDzKey = dataZoomInfoMap.keys()[0]; - if (firstDzKey != null) { - firstDzInfo = dataZoomInfoMap.get(firstDzKey); - } - } - if (!firstDzInfo) { - disposeCoordSysRecord2(coordSysRecordMap, coordSysRecord); - return; - } - var controllerParams = mergeControllerParams2(dataZoomInfoMap); - controller.enable(controllerParams.controlType, controllerParams.opt); - controller.setPointerChecker(coordSysRecord.containsPoint); - createOrUpdate2(coordSysRecord, "dispatchAction", firstDzInfo.model.get("throttle", true), "fixRate"); - }); - }); - } - var InsideZoomView2 = ( - /** @class */ - function(_super) { - __extends2(InsideZoomView3, _super); - function InsideZoomView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "dataZoom.inside"; - return _this; - } - InsideZoomView3.prototype.render = function(dataZoomModel, ecModel, api) { - _super.prototype.render.apply(this, arguments); - if (dataZoomModel.noTarget()) { - this._clear(); - return; - } - this.range = dataZoomModel.getPercentRange(); - setViewInfoToCoordSysRecord2(api, dataZoomModel, { - pan: bind3(getRangeHandlers2.pan, this), - zoom: bind3(getRangeHandlers2.zoom, this), - scrollMove: bind3(getRangeHandlers2.scrollMove, this) - }); - }; - InsideZoomView3.prototype.dispose = function() { - this._clear(); - _super.prototype.dispose.apply(this, arguments); - }; - InsideZoomView3.prototype._clear = function() { - disposeCoordSysRecordIfNeeded2(this.api, this.dataZoomModel); - this.range = null; - }; - InsideZoomView3.type = "dataZoom.inside"; - return InsideZoomView3; - }(DataZoomView2) - ); - var getRangeHandlers2 = { - zoom: function(coordSysInfo, coordSysMainType, controller, e3) { - var lastRange = this.range; - var range = lastRange.slice(); - var axisModel = coordSysInfo.axisModels[0]; - if (!axisModel) { - return; - } - var directionInfo = getDirectionInfo2[coordSysMainType](null, [e3.originX, e3.originY], axisModel, controller, coordSysInfo); - var percentPoint = (directionInfo.signal > 0 ? directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel : directionInfo.pixel - directionInfo.pixelStart) / directionInfo.pixelLength * (range[1] - range[0]) + range[0]; - var scale5 = Math.max(1 / e3.scale, 0); - range[0] = (range[0] - percentPoint) * scale5 + percentPoint; - range[1] = (range[1] - percentPoint) * scale5 + percentPoint; - var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan(); - sliderMove2(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan); - this.range = range; - if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) { - return range; - } - }, - pan: makeMover2(function(range, axisModel, coordSysInfo, coordSysMainType, controller, e3) { - var directionInfo = getDirectionInfo2[coordSysMainType]([e3.oldX, e3.oldY], [e3.newX, e3.newY], axisModel, controller, coordSysInfo); - return directionInfo.signal * (range[1] - range[0]) * directionInfo.pixel / directionInfo.pixelLength; - }), - scrollMove: makeMover2(function(range, axisModel, coordSysInfo, coordSysMainType, controller, e3) { - var directionInfo = getDirectionInfo2[coordSysMainType]([0, 0], [e3.scrollDelta, e3.scrollDelta], axisModel, controller, coordSysInfo); - return directionInfo.signal * (range[1] - range[0]) * e3.scrollDelta; - }) - }; - function makeMover2(getPercentDelta) { - return function(coordSysInfo, coordSysMainType, controller, e3) { - var lastRange = this.range; - var range = lastRange.slice(); - var axisModel = coordSysInfo.axisModels[0]; - if (!axisModel) { - return; - } - var percentDelta = getPercentDelta(range, axisModel, coordSysInfo, coordSysMainType, controller, e3); - sliderMove2(percentDelta, range, [0, 100], "all"); - this.range = range; - if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) { - return range; - } - }; - } - var getDirectionInfo2 = { - grid: function(oldPoint, newPoint, axisModel, controller, coordSysInfo) { - var axis = axisModel.axis; - var ret = {}; - var rect = coordSysInfo.model.coordinateSystem.getRect(); - oldPoint = oldPoint || [0, 0]; - if (axis.dim === "x") { - ret.pixel = newPoint[0] - oldPoint[0]; - ret.pixelLength = rect.width; - ret.pixelStart = rect.x; - ret.signal = axis.inverse ? 1 : -1; - } else { - ret.pixel = newPoint[1] - oldPoint[1]; - ret.pixelLength = rect.height; - ret.pixelStart = rect.y; - ret.signal = axis.inverse ? -1 : 1; - } - return ret; - }, - polar: function(oldPoint, newPoint, axisModel, controller, coordSysInfo) { - var axis = axisModel.axis; - var ret = {}; - var polar = coordSysInfo.model.coordinateSystem; - var radiusExtent = polar.getRadiusAxis().getExtent(); - var angleExtent = polar.getAngleAxis().getExtent(); - oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0]; - newPoint = polar.pointToCoord(newPoint); - if (axisModel.mainType === "radiusAxis") { - ret.pixel = newPoint[0] - oldPoint[0]; - ret.pixelLength = radiusExtent[1] - radiusExtent[0]; - ret.pixelStart = radiusExtent[0]; - ret.signal = axis.inverse ? 1 : -1; - } else { - ret.pixel = newPoint[1] - oldPoint[1]; - ret.pixelLength = angleExtent[1] - angleExtent[0]; - ret.pixelStart = angleExtent[0]; - ret.signal = axis.inverse ? -1 : 1; - } - return ret; - }, - singleAxis: function(oldPoint, newPoint, axisModel, controller, coordSysInfo) { - var axis = axisModel.axis; - var rect = coordSysInfo.model.coordinateSystem.getRect(); - var ret = {}; - oldPoint = oldPoint || [0, 0]; - if (axis.orient === "horizontal") { - ret.pixel = newPoint[0] - oldPoint[0]; - ret.pixelLength = rect.width; - ret.pixelStart = rect.x; - ret.signal = axis.inverse ? 1 : -1; - } else { - ret.pixel = newPoint[1] - oldPoint[1]; - ret.pixelLength = rect.height; - ret.pixelStart = rect.y; - ret.signal = axis.inverse ? -1 : 1; - } - return ret; - } - }; - function install$K(registers) { - installCommon3(registers); - registers.registerComponentModel(InsideZoomModel2); - registers.registerComponentView(InsideZoomView2); - installDataZoomRoamProcessor2(registers); - } - var SliderZoomModel2 = ( - /** @class */ - function(_super) { - __extends2(SliderZoomModel3, _super); - function SliderZoomModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SliderZoomModel3.type; - return _this; - } - SliderZoomModel3.type = "dataZoom.slider"; - SliderZoomModel3.layoutMode = "box"; - SliderZoomModel3.defaultOption = inheritDefaultOption2(DataZoomModel2.defaultOption, { - show: true, - // deault value can only be drived in view stage. - right: "ph", - top: "ph", - width: "ph", - height: "ph", - left: null, - bottom: null, - borderColor: "#d2dbee", - borderRadius: 3, - backgroundColor: "rgba(47,69,84,0)", - // dataBackgroundColor: '#ddd', - dataBackground: { - lineStyle: { - color: "#d2dbee", - width: 0.5 - }, - areaStyle: { - color: "#d2dbee", - opacity: 0.2 - } - }, - selectedDataBackground: { - lineStyle: { - color: "#8fb0f7", - width: 0.5 - }, - areaStyle: { - color: "#8fb0f7", - opacity: 0.2 - } - }, - // Color of selected window. - fillerColor: "rgba(135,175,274,0.2)", - handleIcon: "path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z", - // Percent of the slider height - handleSize: "100%", - handleStyle: { - color: "#fff", - borderColor: "#ACB8D1" - }, - moveHandleSize: 7, - moveHandleIcon: "path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z", - moveHandleStyle: { - color: "#D2DBEE", - opacity: 0.7 - }, - showDetail: true, - showDataShadow: "auto", - realtime: true, - zoomLock: false, - textStyle: { - color: "#6E7079" - }, - brushSelect: true, - brushStyle: { - color: "rgba(135,175,274,0.15)" - }, - emphasis: { - handleLabel: { - show: true - }, - handleStyle: { - borderColor: "#8FB0F7" - }, - moveHandleStyle: { - color: "#8FB0F7" - } - } - }); - return SliderZoomModel3; - }(DataZoomModel2) - ); - var Rect$2 = Rect4; - var DEFAULT_LOCATION_EDGE_GAP2 = 7; - var DEFAULT_FRAME_BORDER_WIDTH2 = 1; - var DEFAULT_FILLER_SIZE2 = 30; - var DEFAULT_MOVE_HANDLE_SIZE2 = 7; - var HORIZONTAL2 = "horizontal"; - var VERTICAL2 = "vertical"; - var LABEL_GAP2 = 5; - var SHOW_DATA_SHADOW_SERIES_TYPE2 = ["line", "bar", "candlestick", "scatter"]; - var REALTIME_ANIMATION_CONFIG2 = { - easing: "cubicOut", - duration: 100, - delay: 0 - }; - var SliderZoomView2 = ( - /** @class */ - function(_super) { - __extends2(SliderZoomView3, _super); - function SliderZoomView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SliderZoomView3.type; - _this._displayables = {}; - return _this; - } - SliderZoomView3.prototype.init = function(ecModel, api) { - this.api = api; - this._onBrush = bind3(this._onBrush, this); - this._onBrushEnd = bind3(this._onBrushEnd, this); - }; - SliderZoomView3.prototype.render = function(dataZoomModel, ecModel, api, payload) { - _super.prototype.render.apply(this, arguments); - createOrUpdate2(this, "_dispatchZoomAction", dataZoomModel.get("throttle"), "fixRate"); - this._orient = dataZoomModel.getOrient(); - if (dataZoomModel.get("show") === false) { - this.group.removeAll(); - return; - } - if (dataZoomModel.noTarget()) { - this._clear(); - this.group.removeAll(); - return; - } - if (!payload || payload.type !== "dataZoom" || payload.from !== this.uid) { - this._buildView(); - } - this._updateView(); - }; - SliderZoomView3.prototype.dispose = function() { - this._clear(); - _super.prototype.dispose.apply(this, arguments); - }; - SliderZoomView3.prototype._clear = function() { - clear3(this, "_dispatchZoomAction"); - var zr = this.api.getZr(); - zr.off("mousemove", this._onBrush); - zr.off("mouseup", this._onBrushEnd); - }; - SliderZoomView3.prototype._buildView = function() { - var thisGroup = this.group; - thisGroup.removeAll(); - this._brushing = false; - this._displayables.brushRect = null; - this._resetLocation(); - this._resetInterval(); - var barGroup = this._displayables.sliderGroup = new Group5(); - this._renderBackground(); - this._renderHandle(); - this._renderDataShadow(); - thisGroup.add(barGroup); - this._positionGroup(); - }; - SliderZoomView3.prototype._resetLocation = function() { - var dataZoomModel = this.dataZoomModel; - var api = this.api; - var showMoveHandle = dataZoomModel.get("brushSelect"); - var moveHandleSize = showMoveHandle ? DEFAULT_MOVE_HANDLE_SIZE2 : 0; - var coordRect = this._findCoordRect(); - var ecSize = { - width: api.getWidth(), - height: api.getHeight() - }; - var positionInfo = this._orient === HORIZONTAL2 ? { - // Why using 'right', because right should be used in vertical, - // and it is better to be consistent for dealing with position param merge. - right: ecSize.width - coordRect.x - coordRect.width, - top: ecSize.height - DEFAULT_FILLER_SIZE2 - DEFAULT_LOCATION_EDGE_GAP2 - moveHandleSize, - width: coordRect.width, - height: DEFAULT_FILLER_SIZE2 - } : { - right: DEFAULT_LOCATION_EDGE_GAP2, - top: coordRect.y, - width: DEFAULT_FILLER_SIZE2, - height: coordRect.height - }; - var layoutParams = getLayoutParams2(dataZoomModel.option); - each17(["right", "top", "width", "height"], function(name) { - if (layoutParams[name] === "ph") { - layoutParams[name] = positionInfo[name]; - } - }); - var layoutRect = getLayoutRect2(layoutParams, ecSize); - this._location = { - x: layoutRect.x, - y: layoutRect.y - }; - this._size = [layoutRect.width, layoutRect.height]; - this._orient === VERTICAL2 && this._size.reverse(); - }; - SliderZoomView3.prototype._positionGroup = function() { - var thisGroup = this.group; - var location2 = this._location; - var orient = this._orient; - var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel(); - var inverse = targetAxisModel && targetAxisModel.get("inverse"); - var sliderGroup = this._displayables.sliderGroup; - var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse; - sliderGroup.attr(orient === HORIZONTAL2 && !inverse ? { - scaleY: otherAxisInverse ? 1 : -1, - scaleX: 1 - } : orient === HORIZONTAL2 && inverse ? { - scaleY: otherAxisInverse ? 1 : -1, - scaleX: -1 - } : orient === VERTICAL2 && !inverse ? { - scaleY: otherAxisInverse ? -1 : 1, - scaleX: 1, - rotation: Math.PI / 2 - } : { - scaleY: otherAxisInverse ? -1 : 1, - scaleX: -1, - rotation: Math.PI / 2 - }); - var rect = thisGroup.getBoundingRect([sliderGroup]); - thisGroup.x = location2.x - rect.x; - thisGroup.y = location2.y - rect.y; - thisGroup.markRedraw(); - }; - SliderZoomView3.prototype._getViewExtent = function() { - return [0, this._size[0]]; - }; - SliderZoomView3.prototype._renderBackground = function() { - var dataZoomModel = this.dataZoomModel; - var size2 = this._size; - var barGroup = this._displayables.sliderGroup; - var brushSelect = dataZoomModel.get("brushSelect"); - barGroup.add(new Rect$2({ - silent: true, - shape: { - x: 0, - y: 0, - width: size2[0], - height: size2[1] - }, - style: { - fill: dataZoomModel.get("backgroundColor") - }, - z2: -40 - })); - var clickPanel = new Rect$2({ - shape: { - x: 0, - y: 0, - width: size2[0], - height: size2[1] - }, - style: { - fill: "transparent" - }, - z2: 0, - onclick: bind3(this._onClickPanel, this) - }); - var zr = this.api.getZr(); - if (brushSelect) { - clickPanel.on("mousedown", this._onBrushStart, this); - clickPanel.cursor = "crosshair"; - zr.on("mousemove", this._onBrush); - zr.on("mouseup", this._onBrushEnd); - } else { - zr.off("mousemove", this._onBrush); - zr.off("mouseup", this._onBrushEnd); - } - barGroup.add(clickPanel); - }; - SliderZoomView3.prototype._renderDataShadow = function() { - var info = this._dataShadowInfo = this._prepareDataShadowInfo(); - this._displayables.dataShadowSegs = []; - if (!info) { - return; - } - var size2 = this._size; - var oldSize = this._shadowSize || []; - var seriesModel = info.series; - var data = seriesModel.getRawData(); - var candlestickDim = seriesModel.getShadowDim && seriesModel.getShadowDim(); - var otherDim = candlestickDim && data.getDimensionInfo(candlestickDim) ? seriesModel.getShadowDim() : info.otherDim; - if (otherDim == null) { - return; - } - var polygonPts = this._shadowPolygonPts; - var polylinePts = this._shadowPolylinePts; - if (data !== this._shadowData || otherDim !== this._shadowDim || size2[0] !== oldSize[0] || size2[1] !== oldSize[1]) { - var otherDataExtent_1 = data.getDataExtent(otherDim); - var otherOffset = (otherDataExtent_1[1] - otherDataExtent_1[0]) * 0.3; - otherDataExtent_1 = [otherDataExtent_1[0] - otherOffset, otherDataExtent_1[1] + otherOffset]; - var otherShadowExtent_1 = [0, size2[1]]; - var thisShadowExtent = [0, size2[0]]; - var areaPoints_1 = [[size2[0], 0], [0, 0]]; - var linePoints_1 = []; - var step_1 = thisShadowExtent[1] / (data.count() - 1); - var thisCoord_1 = 0; - var stride_1 = Math.round(data.count() / size2[0]); - var lastIsEmpty_1; - data.each([otherDim], function(value, index) { - if (stride_1 > 0 && index % stride_1) { - thisCoord_1 += step_1; - return; - } - var isEmpty = value == null || isNaN(value) || value === ""; - var otherCoord = isEmpty ? 0 : linearMap4(value, otherDataExtent_1, otherShadowExtent_1, true); - if (isEmpty && !lastIsEmpty_1 && index) { - areaPoints_1.push([areaPoints_1[areaPoints_1.length - 1][0], 0]); - linePoints_1.push([linePoints_1[linePoints_1.length - 1][0], 0]); - } else if (!isEmpty && lastIsEmpty_1) { - areaPoints_1.push([thisCoord_1, 0]); - linePoints_1.push([thisCoord_1, 0]); - } - areaPoints_1.push([thisCoord_1, otherCoord]); - linePoints_1.push([thisCoord_1, otherCoord]); - thisCoord_1 += step_1; - lastIsEmpty_1 = isEmpty; - }); - polygonPts = this._shadowPolygonPts = areaPoints_1; - polylinePts = this._shadowPolylinePts = linePoints_1; - } - this._shadowData = data; - this._shadowDim = otherDim; - this._shadowSize = [size2[0], size2[1]]; - var dataZoomModel = this.dataZoomModel; - function createDataShadowGroup(isSelectedArea) { - var model = dataZoomModel.getModel(isSelectedArea ? "selectedDataBackground" : "dataBackground"); - var group2 = new Group5(); - var polygon = new Polygon2({ - shape: { - points: polygonPts - }, - segmentIgnoreThreshold: 1, - style: model.getModel("areaStyle").getAreaStyle(), - silent: true, - z2: -20 - }); - var polyline = new Polyline3({ - shape: { - points: polylinePts - }, - segmentIgnoreThreshold: 1, - style: model.getModel("lineStyle").getLineStyle(), - silent: true, - z2: -19 - }); - group2.add(polygon); - group2.add(polyline); - return group2; - } - for (var i2 = 0; i2 < 3; i2++) { - var group = createDataShadowGroup(i2 === 1); - this._displayables.sliderGroup.add(group); - this._displayables.dataShadowSegs.push(group); - } - }; - SliderZoomView3.prototype._prepareDataShadowInfo = function() { - var dataZoomModel = this.dataZoomModel; - var showDataShadow = dataZoomModel.get("showDataShadow"); - if (showDataShadow === false) { - return; - } - var result; - var ecModel = this.ecModel; - dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { - var seriesModels = dataZoomModel.getAxisProxy(axisDim, axisIndex).getTargetSeriesModels(); - each17(seriesModels, function(seriesModel) { - if (result) { - return; - } - if (showDataShadow !== true && indexOf2(SHOW_DATA_SHADOW_SERIES_TYPE2, seriesModel.get("type")) < 0) { - return; - } - var thisAxis = ecModel.getComponent(getAxisMainType2(axisDim), axisIndex).axis; - var otherDim = getOtherDim2(axisDim); - var otherAxisInverse; - var coordSys = seriesModel.coordinateSystem; - if (otherDim != null && coordSys.getOtherAxis) { - otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse; - } - otherDim = seriesModel.getData().mapDimension(otherDim); - result = { - thisAxis, - series: seriesModel, - thisDim: axisDim, - otherDim, - otherAxisInverse - }; - }, this); - }, this); - return result; - }; - SliderZoomView3.prototype._renderHandle = function() { - var thisGroup = this.group; - var displayables = this._displayables; - var handles = displayables.handles = [null, null]; - var handleLabels = displayables.handleLabels = [null, null]; - var sliderGroup = this._displayables.sliderGroup; - var size2 = this._size; - var dataZoomModel = this.dataZoomModel; - var api = this.api; - var borderRadius = dataZoomModel.get("borderRadius") || 0; - var brushSelect = dataZoomModel.get("brushSelect"); - var filler = displayables.filler = new Rect$2({ - silent: brushSelect, - style: { - fill: dataZoomModel.get("fillerColor") - }, - textConfig: { - position: "inside" - } - }); - sliderGroup.add(filler); - sliderGroup.add(new Rect$2({ - silent: true, - subPixelOptimize: true, - shape: { - x: 0, - y: 0, - width: size2[0], - height: size2[1], - r: borderRadius - }, - style: { - // deprecated option - stroke: dataZoomModel.get("dataBackgroundColor") || dataZoomModel.get("borderColor"), - lineWidth: DEFAULT_FRAME_BORDER_WIDTH2, - fill: "rgba(0,0,0,0)" - } - })); - each17([0, 1], function(handleIndex) { - var iconStr = dataZoomModel.get("handleIcon"); - if (!symbolBuildProxies2[iconStr] && iconStr.indexOf("path://") < 0 && iconStr.indexOf("image://") < 0) { - iconStr = "path://" + iconStr; - if (true) { - deprecateLog2("handleIcon now needs 'path://' prefix when using a path string"); - } - } - var path = createSymbol3(iconStr, -1, 0, 2, 2, null, true); - path.attr({ - cursor: getCursor3(this._orient), - draggable: true, - drift: bind3(this._onDragMove, this, handleIndex), - ondragend: bind3(this._onDragEnd, this), - onmouseover: bind3(this._showDataInfo, this, true), - onmouseout: bind3(this._showDataInfo, this, false), - z2: 5 - }); - var bRect = path.getBoundingRect(); - var handleSize = dataZoomModel.get("handleSize"); - this._handleHeight = parsePercent$1(handleSize, this._size[1]); - this._handleWidth = bRect.width / bRect.height * this._handleHeight; - path.setStyle(dataZoomModel.getModel("handleStyle").getItemStyle()); - path.style.strokeNoScale = true; - path.rectHover = true; - path.ensureState("emphasis").style = dataZoomModel.getModel(["emphasis", "handleStyle"]).getItemStyle(); - enableHoverEmphasis2(path); - var handleColor = dataZoomModel.get("handleColor"); - if (handleColor != null) { - path.style.fill = handleColor; - } - sliderGroup.add(handles[handleIndex] = path); - var textStyleModel = dataZoomModel.getModel("textStyle"); - var handleLabel = dataZoomModel.get("handleLabel") || {}; - var handleLabelShow = handleLabel.show || false; - thisGroup.add(handleLabels[handleIndex] = new ZRText2({ - silent: true, - invisible: !handleLabelShow, - style: createTextStyle3(textStyleModel, { - x: 0, - y: 0, - text: "", - verticalAlign: "middle", - align: "center", - fill: textStyleModel.getTextColor(), - font: textStyleModel.getFont() - }), - z2: 10 - })); - }, this); - var actualMoveZone = filler; - if (brushSelect) { - var moveHandleHeight = parsePercent$1(dataZoomModel.get("moveHandleSize"), size2[1]); - var moveHandle_1 = displayables.moveHandle = new Rect4({ - style: dataZoomModel.getModel("moveHandleStyle").getItemStyle(), - silent: true, - shape: { - r: [0, 0, 2, 2], - y: size2[1] - 0.5, - height: moveHandleHeight - } - }); - var iconSize = moveHandleHeight * 0.8; - var moveHandleIcon = displayables.moveHandleIcon = createSymbol3(dataZoomModel.get("moveHandleIcon"), -iconSize / 2, -iconSize / 2, iconSize, iconSize, "#fff", true); - moveHandleIcon.silent = true; - moveHandleIcon.y = size2[1] + moveHandleHeight / 2 - 0.5; - moveHandle_1.ensureState("emphasis").style = dataZoomModel.getModel(["emphasis", "moveHandleStyle"]).getItemStyle(); - var moveZoneExpandSize = Math.min(size2[1] / 2, Math.max(moveHandleHeight, 10)); - actualMoveZone = displayables.moveZone = new Rect4({ - invisible: true, - shape: { - y: size2[1] - moveZoneExpandSize, - height: moveHandleHeight + moveZoneExpandSize - } - }); - actualMoveZone.on("mouseover", function() { - api.enterEmphasis(moveHandle_1); - }).on("mouseout", function() { - api.leaveEmphasis(moveHandle_1); - }); - sliderGroup.add(moveHandle_1); - sliderGroup.add(moveHandleIcon); - sliderGroup.add(actualMoveZone); - } - actualMoveZone.attr({ - draggable: true, - cursor: getCursor3(this._orient), - drift: bind3(this._onDragMove, this, "all"), - ondragstart: bind3(this._showDataInfo, this, true), - ondragend: bind3(this._onDragEnd, this), - onmouseover: bind3(this._showDataInfo, this, true), - onmouseout: bind3(this._showDataInfo, this, false) - }); - }; - SliderZoomView3.prototype._resetInterval = function() { - var range = this._range = this.dataZoomModel.getPercentRange(); - var viewExtent = this._getViewExtent(); - this._handleEnds = [linearMap4(range[0], [0, 100], viewExtent, true), linearMap4(range[1], [0, 100], viewExtent, true)]; - }; - SliderZoomView3.prototype._updateInterval = function(handleIndex, delta) { - var dataZoomModel = this.dataZoomModel; - var handleEnds = this._handleEnds; - var viewExtend = this._getViewExtent(); - var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan(); - var percentExtent = [0, 100]; - sliderMove2(delta, handleEnds, viewExtend, dataZoomModel.get("zoomLock") ? "all" : handleIndex, minMaxSpan.minSpan != null ? linearMap4(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap4(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null); - var lastRange = this._range; - var range = this._range = asc4([linearMap4(handleEnds[0], viewExtend, percentExtent, true), linearMap4(handleEnds[1], viewExtend, percentExtent, true)]); - return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1]; - }; - SliderZoomView3.prototype._updateView = function(nonRealtime) { - var displaybles = this._displayables; - var handleEnds = this._handleEnds; - var handleInterval = asc4(handleEnds.slice()); - var size2 = this._size; - each17([0, 1], function(handleIndex) { - var handle = displaybles.handles[handleIndex]; - var handleHeight = this._handleHeight; - handle.attr({ - scaleX: handleHeight / 2, - scaleY: handleHeight / 2, - // This is a trick, by adding an extra tiny offset to let the default handle's end point align to the drag window. - // NOTE: It may affect some custom shapes a bit. But we prefer to have better result by default. - x: handleEnds[handleIndex] + (handleIndex ? -1 : 1), - y: size2[1] / 2 - handleHeight / 2 - }); - }, this); - displaybles.filler.setShape({ - x: handleInterval[0], - y: 0, - width: handleInterval[1] - handleInterval[0], - height: size2[1] - }); - var viewExtent = { - x: handleInterval[0], - width: handleInterval[1] - handleInterval[0] - }; - if (displaybles.moveHandle) { - displaybles.moveHandle.setShape(viewExtent); - displaybles.moveZone.setShape(viewExtent); - displaybles.moveZone.getBoundingRect(); - displaybles.moveHandleIcon && displaybles.moveHandleIcon.attr("x", viewExtent.x + viewExtent.width / 2); - } - var dataShadowSegs = displaybles.dataShadowSegs; - var segIntervals = [0, handleInterval[0], handleInterval[1], size2[0]]; - for (var i2 = 0; i2 < dataShadowSegs.length; i2++) { - var segGroup = dataShadowSegs[i2]; - var clipPath = segGroup.getClipPath(); - if (!clipPath) { - clipPath = new Rect4(); - segGroup.setClipPath(clipPath); - } - clipPath.setShape({ - x: segIntervals[i2], - y: 0, - width: segIntervals[i2 + 1] - segIntervals[i2], - height: size2[1] - }); - } - this._updateDataInfo(nonRealtime); - }; - SliderZoomView3.prototype._updateDataInfo = function(nonRealtime) { - var dataZoomModel = this.dataZoomModel; - var displaybles = this._displayables; - var handleLabels = displaybles.handleLabels; - var orient = this._orient; - var labelTexts = ["", ""]; - if (dataZoomModel.get("showDetail")) { - var axisProxy = dataZoomModel.findRepresentativeAxisProxy(); - if (axisProxy) { - var axis = axisProxy.getAxisModel().axis; - var range = this._range; - var dataInterval = nonRealtime ? axisProxy.calculateDataWindow({ - start: range[0], - end: range[1] - }).valueWindow : axisProxy.getDataValueWindow(); - labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)]; - } - } - var orderedHandleEnds = asc4(this._handleEnds.slice()); - setLabel.call(this, 0); - setLabel.call(this, 1); - function setLabel(handleIndex) { - var barTransform = getTransform3(displaybles.handles[handleIndex].parent, this.group); - var direction = transformDirection2(handleIndex === 0 ? "right" : "left", barTransform); - var offset3 = this._handleWidth / 2 + LABEL_GAP2; - var textPoint = applyTransform$1([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset3 : offset3), this._size[1] / 2], barTransform); - handleLabels[handleIndex].setStyle({ - x: textPoint[0], - y: textPoint[1], - verticalAlign: orient === HORIZONTAL2 ? "middle" : direction, - align: orient === HORIZONTAL2 ? direction : "center", - text: labelTexts[handleIndex] - }); - } - }; - SliderZoomView3.prototype._formatLabel = function(value, axis) { - var dataZoomModel = this.dataZoomModel; - var labelFormatter = dataZoomModel.get("labelFormatter"); - var labelPrecision = dataZoomModel.get("labelPrecision"); - if (labelPrecision == null || labelPrecision === "auto") { - labelPrecision = axis.getPixelPrecision(); - } - var valueStr = value == null || isNaN(value) ? "" : axis.type === "category" || axis.type === "time" ? axis.scale.getLabel({ - value: Math.round(value) - }) : value.toFixed(Math.min(labelPrecision, 20)); - return isFunction2(labelFormatter) ? labelFormatter(value, valueStr) : isString2(labelFormatter) ? labelFormatter.replace("{value}", valueStr) : valueStr; - }; - SliderZoomView3.prototype._showDataInfo = function(isEmphasis) { - var handleLabel = this.dataZoomModel.get("handleLabel") || {}; - var normalShow = handleLabel.show || false; - var emphasisHandleLabel = this.dataZoomModel.getModel(["emphasis", "handleLabel"]); - var emphasisShow = emphasisHandleLabel.get("show") || false; - var toShow = isEmphasis || this._dragging ? emphasisShow : normalShow; - var displayables = this._displayables; - var handleLabels = displayables.handleLabels; - handleLabels[0].attr("invisible", !toShow); - handleLabels[1].attr("invisible", !toShow); - displayables.moveHandle && this.api[toShow ? "enterEmphasis" : "leaveEmphasis"](displayables.moveHandle, 1); - }; - SliderZoomView3.prototype._onDragMove = function(handleIndex, dx, dy, event) { - this._dragging = true; - stop2(event.event); - var barTransform = this._displayables.sliderGroup.getLocalTransform(); - var vertex = applyTransform$1([dx, dy], barTransform, true); - var changed = this._updateInterval(handleIndex, vertex[0]); - var realtime = this.dataZoomModel.get("realtime"); - this._updateView(!realtime); - changed && realtime && this._dispatchZoomAction(true); - }; - SliderZoomView3.prototype._onDragEnd = function() { - this._dragging = false; - this._showDataInfo(false); - var realtime = this.dataZoomModel.get("realtime"); - !realtime && this._dispatchZoomAction(false); - }; - SliderZoomView3.prototype._onClickPanel = function(e3) { - var size2 = this._size; - var localPoint = this._displayables.sliderGroup.transformCoordToLocal(e3.offsetX, e3.offsetY); - if (localPoint[0] < 0 || localPoint[0] > size2[0] || localPoint[1] < 0 || localPoint[1] > size2[1]) { - return; - } - var handleEnds = this._handleEnds; - var center4 = (handleEnds[0] + handleEnds[1]) / 2; - var changed = this._updateInterval("all", localPoint[0] - center4); - this._updateView(); - changed && this._dispatchZoomAction(false); - }; - SliderZoomView3.prototype._onBrushStart = function(e3) { - var x = e3.offsetX; - var y = e3.offsetY; - this._brushStart = new Point2(x, y); - this._brushing = true; - this._brushStartTime = +/* @__PURE__ */ new Date(); - }; - SliderZoomView3.prototype._onBrushEnd = function(e3) { - if (!this._brushing) { - return; - } - var brushRect = this._displayables.brushRect; - this._brushing = false; - if (!brushRect) { - return; - } - brushRect.attr("ignore", true); - var brushShape = brushRect.shape; - var brushEndTime = +/* @__PURE__ */ new Date(); - if (brushEndTime - this._brushStartTime < 200 && Math.abs(brushShape.width) < 5) { - return; - } - var viewExtend = this._getViewExtent(); - var percentExtent = [0, 100]; - this._range = asc4([linearMap4(brushShape.x, viewExtend, percentExtent, true), linearMap4(brushShape.x + brushShape.width, viewExtend, percentExtent, true)]); - this._handleEnds = [brushShape.x, brushShape.x + brushShape.width]; - this._updateView(); - this._dispatchZoomAction(false); - }; - SliderZoomView3.prototype._onBrush = function(e3) { - if (this._brushing) { - stop2(e3.event); - this._updateBrushRect(e3.offsetX, e3.offsetY); - } - }; - SliderZoomView3.prototype._updateBrushRect = function(mouseX, mouseY) { - var displayables = this._displayables; - var dataZoomModel = this.dataZoomModel; - var brushRect = displayables.brushRect; - if (!brushRect) { - brushRect = displayables.brushRect = new Rect$2({ - silent: true, - style: dataZoomModel.getModel("brushStyle").getItemStyle() - }); - displayables.sliderGroup.add(brushRect); - } - brushRect.attr("ignore", false); - var brushStart = this._brushStart; - var sliderGroup = this._displayables.sliderGroup; - var endPoint = sliderGroup.transformCoordToLocal(mouseX, mouseY); - var startPoint = sliderGroup.transformCoordToLocal(brushStart.x, brushStart.y); - var size2 = this._size; - endPoint[0] = Math.max(Math.min(size2[0], endPoint[0]), 0); - brushRect.setShape({ - x: startPoint[0], - y: 0, - width: endPoint[0] - startPoint[0], - height: size2[1] - }); - }; - SliderZoomView3.prototype._dispatchZoomAction = function(realtime) { - var range = this._range; - this.api.dispatchAction({ - type: "dataZoom", - from: this.uid, - dataZoomId: this.dataZoomModel.id, - animation: realtime ? REALTIME_ANIMATION_CONFIG2 : null, - start: range[0], - end: range[1] - }); - }; - SliderZoomView3.prototype._findCoordRect = function() { - var rect; - var coordSysInfoList = collectReferCoordSysModelInfo2(this.dataZoomModel).infoList; - if (!rect && coordSysInfoList.length) { - var coordSys = coordSysInfoList[0].model.coordinateSystem; - rect = coordSys.getRect && coordSys.getRect(); - } - if (!rect) { - var width = this.api.getWidth(); - var height = this.api.getHeight(); - rect = { - x: width * 0.2, - y: height * 0.2, - width: width * 0.6, - height: height * 0.6 - }; - } - return rect; - }; - SliderZoomView3.type = "dataZoom.slider"; - return SliderZoomView3; - }(DataZoomView2) - ); - function getOtherDim2(thisDim) { - var map4 = { - x: "y", - y: "x", - radius: "angle", - angle: "radius" - }; - return map4[thisDim]; - } - function getCursor3(orient) { - return orient === "vertical" ? "ns-resize" : "ew-resize"; - } - function install$L(registers) { - registers.registerComponentModel(SliderZoomModel2); - registers.registerComponentView(SliderZoomView2); - installCommon3(registers); - } - function install$M(registers) { - use2(install$K); - use2(install$L); - } - var visualDefault2 = { - /** - * @public - */ - get: function(visualType, key, isCategory3) { - var value = clone6((defaultOption$1[visualType] || {})[key]); - return isCategory3 ? isArray3(value) ? value[value.length - 1] : value : value; - } - }; - var defaultOption$1 = { - color: { - active: ["#006edd", "#e0ffff"], - inactive: ["rgba(0,0,0,0)"] - }, - colorHue: { - active: [0, 360], - inactive: [0, 0] - }, - colorSaturation: { - active: [0.3, 1], - inactive: [0, 0] - }, - colorLightness: { - active: [0.9, 0.5], - inactive: [0, 0] - }, - colorAlpha: { - active: [0.3, 1], - inactive: [0, 0] - }, - opacity: { - active: [0.3, 1], - inactive: [0, 0] - }, - symbol: { - active: ["circle", "roundRect", "diamond"], - inactive: ["none"] - }, - symbolSize: { - active: [10, 50], - inactive: [0, 0] - } - }; - var mapVisual$1 = VisualMapping2.mapVisual; - var eachVisual2 = VisualMapping2.eachVisual; - var isArray$1 = isArray3; - var each$d = each17; - var asc$2 = asc4; - var linearMap$1 = linearMap4; - var VisualMapModel2 = ( - /** @class */ - function(_super) { - __extends2(VisualMapModel3, _super); - function VisualMapModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = VisualMapModel3.type; - _this.stateList = ["inRange", "outOfRange"]; - _this.replacableOptionKeys = ["inRange", "outOfRange", "target", "controller", "color"]; - _this.layoutMode = { - type: "box", - ignoreSize: true - }; - _this.dataBound = [-Infinity, Infinity]; - _this.targetVisuals = {}; - _this.controllerVisuals = {}; - return _this; - } - VisualMapModel3.prototype.init = function(option, parentModel, ecModel) { - this.mergeDefaultAndTheme(option, ecModel); - }; - VisualMapModel3.prototype.optionUpdated = function(newOption, isInit) { - var thisOption = this.option; - !isInit && replaceVisualOption2(thisOption, newOption, this.replacableOptionKeys); - this.textStyleModel = this.getModel("textStyle"); - this.resetItemSize(); - this.completeVisualOption(); - }; - VisualMapModel3.prototype.resetVisual = function(supplementVisualOption) { - var stateList = this.stateList; - supplementVisualOption = bind3(supplementVisualOption, this); - this.controllerVisuals = createVisualMappings2(this.option.controller, stateList, supplementVisualOption); - this.targetVisuals = createVisualMappings2(this.option.target, stateList, supplementVisualOption); - }; - VisualMapModel3.prototype.getItemSymbol = function() { - return null; - }; - VisualMapModel3.prototype.getTargetSeriesIndices = function() { - var optionSeriesIndex = this.option.seriesIndex; - var seriesIndices = []; - if (optionSeriesIndex == null || optionSeriesIndex === "all") { - this.ecModel.eachSeries(function(seriesModel, index) { - seriesIndices.push(index); - }); - } else { - seriesIndices = normalizeToArray2(optionSeriesIndex); - } - return seriesIndices; - }; - VisualMapModel3.prototype.eachTargetSeries = function(callback, context) { - each17(this.getTargetSeriesIndices(), function(seriesIndex) { - var seriesModel = this.ecModel.getSeriesByIndex(seriesIndex); - if (seriesModel) { - callback.call(context, seriesModel); - } - }, this); - }; - VisualMapModel3.prototype.isTargetSeries = function(seriesModel) { - var is = false; - this.eachTargetSeries(function(model) { - model === seriesModel && (is = true); - }); - return is; - }; - VisualMapModel3.prototype.formatValueText = function(value, isCategory3, edgeSymbols) { - var option = this.option; - var precision = option.precision; - var dataBound = this.dataBound; - var formatter = option.formatter; - var isMinMax; - edgeSymbols = edgeSymbols || ["<", ">"]; - if (isArray3(value)) { - value = value.slice(); - isMinMax = true; - } - var textValue = isCategory3 ? value : isMinMax ? [toFixed(value[0]), toFixed(value[1])] : toFixed(value); - if (isString2(formatter)) { - return formatter.replace("{value}", isMinMax ? textValue[0] : textValue).replace("{value2}", isMinMax ? textValue[1] : textValue); - } else if (isFunction2(formatter)) { - return isMinMax ? formatter(value[0], value[1]) : formatter(value); - } - if (isMinMax) { - if (value[0] === dataBound[0]) { - return edgeSymbols[0] + " " + textValue[1]; - } else if (value[1] === dataBound[1]) { - return edgeSymbols[1] + " " + textValue[0]; - } else { - return textValue[0] + " - " + textValue[1]; - } - } else { - return textValue; - } - function toFixed(val) { - return val === dataBound[0] ? "min" : val === dataBound[1] ? "max" : (+val).toFixed(Math.min(precision, 20)); - } - }; - VisualMapModel3.prototype.resetExtent = function() { - var thisOption = this.option; - var extent4 = asc$2([thisOption.min, thisOption.max]); - this._dataExtent = extent4; - }; - VisualMapModel3.prototype.getDataDimensionIndex = function(data) { - var optDim = this.option.dimension; - if (optDim != null) { - return data.getDimensionIndex(optDim); - } - var dimNames = data.dimensions; - for (var i2 = dimNames.length - 1; i2 >= 0; i2--) { - var dimName = dimNames[i2]; - var dimInfo = data.getDimensionInfo(dimName); - if (!dimInfo.isCalculationCoord) { - return dimInfo.storeDimIndex; - } - } - }; - VisualMapModel3.prototype.getExtent = function() { - return this._dataExtent.slice(); - }; - VisualMapModel3.prototype.completeVisualOption = function() { - var ecModel = this.ecModel; - var thisOption = this.option; - var base3 = { - inRange: thisOption.inRange, - outOfRange: thisOption.outOfRange - }; - var target = thisOption.target || (thisOption.target = {}); - var controller = thisOption.controller || (thisOption.controller = {}); - merge2(target, base3); - merge2(controller, base3); - var isCategory3 = this.isCategory(); - completeSingle.call(this, target); - completeSingle.call(this, controller); - completeInactive.call(this, target, "inRange", "outOfRange"); - completeController.call(this, controller); - function completeSingle(base4) { - if (isArray$1(thisOption.color) && !base4.inRange) { - base4.inRange = { - color: thisOption.color.slice().reverse() - }; - } - base4.inRange = base4.inRange || { - color: ecModel.get("gradientColor") - }; - } - function completeInactive(base4, stateExist, stateAbsent) { - var optExist = base4[stateExist]; - var optAbsent = base4[stateAbsent]; - if (optExist && !optAbsent) { - optAbsent = base4[stateAbsent] = {}; - each$d(optExist, function(visualData, visualType) { - if (!VisualMapping2.isValidType(visualType)) { - return; - } - var defa = visualDefault2.get(visualType, "inactive", isCategory3); - if (defa != null) { - optAbsent[visualType] = defa; - if (visualType === "color" && !optAbsent.hasOwnProperty("opacity") && !optAbsent.hasOwnProperty("colorAlpha")) { - optAbsent.opacity = [0, 0]; - } - } - }); - } - } - function completeController(controller2) { - var symbolExists = (controller2.inRange || {}).symbol || (controller2.outOfRange || {}).symbol; - var symbolSizeExists = (controller2.inRange || {}).symbolSize || (controller2.outOfRange || {}).symbolSize; - var inactiveColor = this.get("inactiveColor"); - var itemSymbol = this.getItemSymbol(); - var defaultSymbol = itemSymbol || "roundRect"; - each$d(this.stateList, function(state) { - var itemSize = this.itemSize; - var visuals = controller2[state]; - if (!visuals) { - visuals = controller2[state] = { - color: isCategory3 ? inactiveColor : [inactiveColor] - }; - } - if (visuals.symbol == null) { - visuals.symbol = symbolExists && clone6(symbolExists) || (isCategory3 ? defaultSymbol : [defaultSymbol]); - } - if (visuals.symbolSize == null) { - visuals.symbolSize = symbolSizeExists && clone6(symbolSizeExists) || (isCategory3 ? itemSize[0] : [itemSize[0], itemSize[0]]); - } - visuals.symbol = mapVisual$1(visuals.symbol, function(symbol) { - return symbol === "none" ? defaultSymbol : symbol; - }); - var symbolSize = visuals.symbolSize; - if (symbolSize != null) { - var max_1 = -Infinity; - eachVisual2(symbolSize, function(value) { - value > max_1 && (max_1 = value); - }); - visuals.symbolSize = mapVisual$1(symbolSize, function(value) { - return linearMap$1(value, [0, max_1], [0, itemSize[0]], true); - }); - } - }, this); - } - }; - VisualMapModel3.prototype.resetItemSize = function() { - this.itemSize = [parseFloat(this.get("itemWidth")), parseFloat(this.get("itemHeight"))]; - }; - VisualMapModel3.prototype.isCategory = function() { - return !!this.option.categories; - }; - VisualMapModel3.prototype.setSelected = function(selected) { - }; - VisualMapModel3.prototype.getSelected = function() { - return null; - }; - VisualMapModel3.prototype.getValueState = function(value) { - return null; - }; - VisualMapModel3.prototype.getVisualMeta = function(getColorVisual3) { - return null; - }; - VisualMapModel3.type = "visualMap"; - VisualMapModel3.dependencies = ["series"]; - VisualMapModel3.defaultOption = { - show: true, - // zlevel: 0, - z: 4, - seriesIndex: "all", - min: 0, - max: 200, - left: 0, - right: null, - top: null, - bottom: 0, - itemWidth: null, - itemHeight: null, - inverse: false, - orient: "vertical", - backgroundColor: "rgba(0,0,0,0)", - borderColor: "#ccc", - contentColor: "#5793f3", - inactiveColor: "#aaa", - borderWidth: 0, - padding: 5, - // 接受数组分别设定上右下左边距,同css - textGap: 10, - precision: 0, - textStyle: { - color: "#333" - // 值域文字颜色 - } - }; - return VisualMapModel3; - }(ComponentModel2) - ); - var DEFAULT_BAR_BOUND2 = [20, 140]; - var ContinuousModel2 = ( - /** @class */ - function(_super) { - __extends2(ContinuousModel3, _super); - function ContinuousModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ContinuousModel3.type; - return _this; - } - ContinuousModel3.prototype.optionUpdated = function(newOption, isInit) { - _super.prototype.optionUpdated.apply(this, arguments); - this.resetExtent(); - this.resetVisual(function(mappingOption) { - mappingOption.mappingMethod = "linear"; - mappingOption.dataExtent = this.getExtent(); - }); - this._resetRange(); - }; - ContinuousModel3.prototype.resetItemSize = function() { - _super.prototype.resetItemSize.apply(this, arguments); - var itemSize = this.itemSize; - (itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND2[0]); - (itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND2[1]); - }; - ContinuousModel3.prototype._resetRange = function() { - var dataExtent = this.getExtent(); - var range = this.option.range; - if (!range || range.auto) { - dataExtent.auto = 1; - this.option.range = dataExtent; - } else if (isArray3(range)) { - if (range[0] > range[1]) { - range.reverse(); - } - range[0] = Math.max(range[0], dataExtent[0]); - range[1] = Math.min(range[1], dataExtent[1]); - } - }; - ContinuousModel3.prototype.completeVisualOption = function() { - _super.prototype.completeVisualOption.apply(this, arguments); - each17(this.stateList, function(state) { - var symbolSize = this.option.controller[state].symbolSize; - if (symbolSize && symbolSize[0] !== symbolSize[1]) { - symbolSize[0] = symbolSize[1] / 3; - } - }, this); - }; - ContinuousModel3.prototype.setSelected = function(selected) { - this.option.range = selected.slice(); - this._resetRange(); - }; - ContinuousModel3.prototype.getSelected = function() { - var dataExtent = this.getExtent(); - var dataInterval = asc4((this.get("range") || []).slice()); - dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]); - dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]); - dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]); - dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]); - return dataInterval; - }; - ContinuousModel3.prototype.getValueState = function(value) { - var range = this.option.range; - var dataExtent = this.getExtent(); - return (range[0] <= dataExtent[0] || range[0] <= value) && (range[1] >= dataExtent[1] || value <= range[1]) ? "inRange" : "outOfRange"; - }; - ContinuousModel3.prototype.findTargetDataIndices = function(range) { - var result = []; - this.eachTargetSeries(function(seriesModel) { - var dataIndices = []; - var data = seriesModel.getData(); - data.each(this.getDataDimensionIndex(data), function(value, dataIndex) { - range[0] <= value && value <= range[1] && dataIndices.push(dataIndex); - }, this); - result.push({ - seriesId: seriesModel.id, - dataIndex: dataIndices - }); - }, this); - return result; - }; - ContinuousModel3.prototype.getVisualMeta = function(getColorVisual3) { - var oVals = getColorStopValues2(this, "outOfRange", this.getExtent()); - var iVals = getColorStopValues2(this, "inRange", this.option.range.slice()); - var stops = []; - function setStop(value, valueState) { - stops.push({ - value, - color: getColorVisual3(value, valueState) - }); - } - var iIdx = 0; - var oIdx = 0; - var iLen = iVals.length; - var oLen = oVals.length; - for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) { - if (oVals[oIdx] < iVals[iIdx]) { - setStop(oVals[oIdx], "outOfRange"); - } - } - for (var first = 1; iIdx < iLen; iIdx++, first = 0) { - first && stops.length && setStop(iVals[iIdx], "outOfRange"); - setStop(iVals[iIdx], "inRange"); - } - for (var first = 1; oIdx < oLen; oIdx++) { - if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) { - if (first) { - stops.length && setStop(stops[stops.length - 1].value, "outOfRange"); - first = 0; - } - setStop(oVals[oIdx], "outOfRange"); - } - } - var stopsLen = stops.length; - return { - stops, - outerColors: [stopsLen ? stops[0].color : "transparent", stopsLen ? stops[stopsLen - 1].color : "transparent"] - }; - }; - ContinuousModel3.type = "visualMap.continuous"; - ContinuousModel3.defaultOption = inheritDefaultOption2(VisualMapModel2.defaultOption, { - align: "auto", - calculable: false, - hoverLink: true, - realtime: true, - handleIcon: "path://M-11.39,9.77h0a3.5,3.5,0,0,1-3.5,3.5h-22a3.5,3.5,0,0,1-3.5-3.5h0a3.5,3.5,0,0,1,3.5-3.5h22A3.5,3.5,0,0,1-11.39,9.77Z", - handleSize: "120%", - handleStyle: { - borderColor: "#fff", - borderWidth: 1 - }, - indicatorIcon: "circle", - indicatorSize: "50%", - indicatorStyle: { - borderColor: "#fff", - borderWidth: 2, - shadowBlur: 2, - shadowOffsetX: 1, - shadowOffsetY: 1, - shadowColor: "rgba(0,0,0,0.2)" - } - // emphasis: { - // handleStyle: { - // shadowBlur: 3, - // shadowOffsetX: 1, - // shadowOffsetY: 1, - // shadowColor: 'rgba(0,0,0,0.2)' - // } - // } - }); - return ContinuousModel3; - }(VisualMapModel2) - ); - function getColorStopValues2(visualMapModel, valueState, dataExtent) { - if (dataExtent[0] === dataExtent[1]) { - return dataExtent.slice(); - } - var count3 = 200; - var step = (dataExtent[1] - dataExtent[0]) / count3; - var value = dataExtent[0]; - var stopValues = []; - for (var i2 = 0; i2 <= count3 && value < dataExtent[1]; i2++) { - stopValues.push(value); - value += step; - } - stopValues.push(dataExtent[1]); - return stopValues; - } - var VisualMapView2 = ( - /** @class */ - function(_super) { - __extends2(VisualMapView3, _super); - function VisualMapView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = VisualMapView3.type; - _this.autoPositionValues = { - left: 1, - right: 1, - top: 1, - bottom: 1 - }; - return _this; - } - VisualMapView3.prototype.init = function(ecModel, api) { - this.ecModel = ecModel; - this.api = api; - }; - VisualMapView3.prototype.render = function(visualMapModel, ecModel, api, payload) { - this.visualMapModel = visualMapModel; - if (visualMapModel.get("show") === false) { - this.group.removeAll(); - return; - } - this.doRender(visualMapModel, ecModel, api, payload); - }; - VisualMapView3.prototype.renderBackground = function(group) { - var visualMapModel = this.visualMapModel; - var padding = normalizeCssArray$1(visualMapModel.get("padding") || 0); - var rect = group.getBoundingRect(); - group.add(new Rect4({ - z2: -1, - silent: true, - shape: { - x: rect.x - padding[3], - y: rect.y - padding[0], - width: rect.width + padding[3] + padding[1], - height: rect.height + padding[0] + padding[2] - }, - style: { - fill: visualMapModel.get("backgroundColor"), - stroke: visualMapModel.get("borderColor"), - lineWidth: visualMapModel.get("borderWidth") - } - })); - }; - VisualMapView3.prototype.getControllerVisual = function(targetValue, visualCluster, opts) { - opts = opts || {}; - var forceState = opts.forceState; - var visualMapModel = this.visualMapModel; - var visualObj = {}; - if (visualCluster === "color") { - var defaultColor = visualMapModel.get("contentColor"); - visualObj.color = defaultColor; - } - function getter(key) { - return visualObj[key]; - } - function setter(key, value) { - visualObj[key] = value; - } - var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)]; - var visualTypes = VisualMapping2.prepareVisualTypes(mappings); - each17(visualTypes, function(type) { - var visualMapping = mappings[type]; - if (opts.convertOpacityToAlpha && type === "opacity") { - type = "colorAlpha"; - visualMapping = mappings.__alphaForOpacity; - } - if (VisualMapping2.dependsOn(type, visualCluster)) { - visualMapping && visualMapping.applyVisual(targetValue, getter, setter); - } - }); - return visualObj[visualCluster]; - }; - VisualMapView3.prototype.positionGroup = function(group) { - var model = this.visualMapModel; - var api = this.api; - positionElement2(group, model.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }); - }; - VisualMapView3.prototype.doRender = function(visualMapModel, ecModel, api, payload) { - }; - VisualMapView3.type = "visualMap"; - return VisualMapView3; - }(ComponentView2) - ); - var paramsSet2 = [["left", "right", "width"], ["top", "bottom", "height"]]; - function getItemAlign2(visualMapModel, api, itemSize) { - var modelOption = visualMapModel.option; - var itemAlign = modelOption.align; - if (itemAlign != null && itemAlign !== "auto") { - return itemAlign; - } - var ecSize = { - width: api.getWidth(), - height: api.getHeight() - }; - var realIndex = modelOption.orient === "horizontal" ? 1 : 0; - var reals = paramsSet2[realIndex]; - var fakeValue = [0, null, 10]; - var layoutInput = {}; - for (var i2 = 0; i2 < 3; i2++) { - layoutInput[paramsSet2[1 - realIndex][i2]] = fakeValue[i2]; - layoutInput[reals[i2]] = i2 === 2 ? itemSize[0] : modelOption[reals[i2]]; - } - var rParam = [["x", "width", 3], ["y", "height", 0]][realIndex]; - var rect = getLayoutRect2(layoutInput, ecSize, modelOption.padding); - return reals[(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5 < ecSize[rParam[1]] * 0.5 ? 0 : 1]; - } - function makeHighDownBatch2(batch, visualMapModel) { - each17(batch || [], function(batchItem) { - if (batchItem.dataIndex != null) { - batchItem.dataIndexInside = batchItem.dataIndex; - batchItem.dataIndex = null; - } - batchItem.highlightKey = "visualMap" + (visualMapModel ? visualMapModel.componentIndex : ""); - }); - return batch; - } - var linearMap$2 = linearMap4; - var each$e = each17; - var mathMin$a = Math.min; - var mathMax$a = Math.max; - var HOVER_LINK_SIZE2 = 12; - var HOVER_LINK_OUT2 = 6; - var ContinuousView2 = ( - /** @class */ - function(_super) { - __extends2(ContinuousView3, _super); - function ContinuousView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ContinuousView3.type; - _this._shapes = {}; - _this._dataInterval = []; - _this._handleEnds = []; - _this._hoverLinkDataIndices = []; - return _this; - } - ContinuousView3.prototype.init = function(ecModel, api) { - _super.prototype.init.call(this, ecModel, api); - this._hoverLinkFromSeriesMouseOver = bind3(this._hoverLinkFromSeriesMouseOver, this); - this._hideIndicator = bind3(this._hideIndicator, this); - }; - ContinuousView3.prototype.doRender = function(visualMapModel, ecModel, api, payload) { - if (!payload || payload.type !== "selectDataRange" || payload.from !== this.uid) { - this._buildView(); - } - }; - ContinuousView3.prototype._buildView = function() { - this.group.removeAll(); - var visualMapModel = this.visualMapModel; - var thisGroup = this.group; - this._orient = visualMapModel.get("orient"); - this._useHandle = visualMapModel.get("calculable"); - this._resetInterval(); - this._renderBar(thisGroup); - var dataRangeText = visualMapModel.get("text"); - this._renderEndsText(thisGroup, dataRangeText, 0); - this._renderEndsText(thisGroup, dataRangeText, 1); - this._updateView(true); - this.renderBackground(thisGroup); - this._updateView(); - this._enableHoverLinkToSeries(); - this._enableHoverLinkFromSeries(); - this.positionGroup(thisGroup); - }; - ContinuousView3.prototype._renderEndsText = function(group, dataRangeText, endsIndex) { - if (!dataRangeText) { - return; - } - var text = dataRangeText[1 - endsIndex]; - text = text != null ? text + "" : ""; - var visualMapModel = this.visualMapModel; - var textGap = visualMapModel.get("textGap"); - var itemSize = visualMapModel.itemSize; - var barGroup = this._shapes.mainGroup; - var position3 = this._applyTransform([itemSize[0] / 2, endsIndex === 0 ? -textGap : itemSize[1] + textGap], barGroup); - var align = this._applyTransform(endsIndex === 0 ? "bottom" : "top", barGroup); - var orient = this._orient; - var textStyleModel = this.visualMapModel.textStyleModel; - this.group.add(new ZRText2({ - style: createTextStyle3(textStyleModel, { - x: position3[0], - y: position3[1], - verticalAlign: orient === "horizontal" ? "middle" : align, - align: orient === "horizontal" ? align : "center", - text - }) - })); - }; - ContinuousView3.prototype._renderBar = function(targetGroup) { - var visualMapModel = this.visualMapModel; - var shapes = this._shapes; - var itemSize = visualMapModel.itemSize; - var orient = this._orient; - var useHandle = this._useHandle; - var itemAlign = getItemAlign2(visualMapModel, this.api, itemSize); - var mainGroup = shapes.mainGroup = this._createBarGroup(itemAlign); - var gradientBarGroup = new Group5(); - mainGroup.add(gradientBarGroup); - gradientBarGroup.add(shapes.outOfRange = createPolygon2()); - gradientBarGroup.add(shapes.inRange = createPolygon2(null, useHandle ? getCursor$1(this._orient) : null, bind3(this._dragHandle, this, "all", false), bind3(this._dragHandle, this, "all", true))); - gradientBarGroup.setClipPath(new Rect4({ - shape: { - x: 0, - y: 0, - width: itemSize[0], - height: itemSize[1], - r: 3 - } - })); - var textRect = visualMapModel.textStyleModel.getTextRect("\u56FD"); - var textSize = mathMax$a(textRect.width, textRect.height); - if (useHandle) { - shapes.handleThumbs = []; - shapes.handleLabels = []; - shapes.handleLabelPoints = []; - this._createHandle(visualMapModel, mainGroup, 0, itemSize, textSize, orient); - this._createHandle(visualMapModel, mainGroup, 1, itemSize, textSize, orient); - } - this._createIndicator(visualMapModel, mainGroup, itemSize, textSize, orient); - targetGroup.add(mainGroup); - }; - ContinuousView3.prototype._createHandle = function(visualMapModel, mainGroup, handleIndex, itemSize, textSize, orient) { - var onDrift = bind3(this._dragHandle, this, handleIndex, false); - var onDragEnd = bind3(this._dragHandle, this, handleIndex, true); - var handleSize = parsePercent3(visualMapModel.get("handleSize"), itemSize[0]); - var handleThumb = createSymbol3(visualMapModel.get("handleIcon"), -handleSize / 2, -handleSize / 2, handleSize, handleSize, null, true); - var cursor = getCursor$1(this._orient); - handleThumb.attr({ - cursor, - draggable: true, - drift: onDrift, - ondragend: onDragEnd, - onmousemove: function(e3) { - stop2(e3.event); - } - }); - handleThumb.x = itemSize[0] / 2; - handleThumb.useStyle(visualMapModel.getModel("handleStyle").getItemStyle()); - handleThumb.setStyle({ - strokeNoScale: true, - strokeFirst: true - }); - handleThumb.style.lineWidth *= 2; - handleThumb.ensureState("emphasis").style = visualMapModel.getModel(["emphasis", "handleStyle"]).getItemStyle(); - setAsHighDownDispatcher2(handleThumb, true); - mainGroup.add(handleThumb); - var textStyleModel = this.visualMapModel.textStyleModel; - var handleLabel = new ZRText2({ - cursor, - draggable: true, - drift: onDrift, - onmousemove: function(e3) { - stop2(e3.event); - }, - ondragend: onDragEnd, - style: createTextStyle3(textStyleModel, { - x: 0, - y: 0, - text: "" - }) - }); - handleLabel.ensureState("blur").style = { - opacity: 0.1 - }; - handleLabel.stateTransition = { - duration: 200 - }; - this.group.add(handleLabel); - var handleLabelPoint = [handleSize, 0]; - var shapes = this._shapes; - shapes.handleThumbs[handleIndex] = handleThumb; - shapes.handleLabelPoints[handleIndex] = handleLabelPoint; - shapes.handleLabels[handleIndex] = handleLabel; - }; - ContinuousView3.prototype._createIndicator = function(visualMapModel, mainGroup, itemSize, textSize, orient) { - var scale5 = parsePercent3(visualMapModel.get("indicatorSize"), itemSize[0]); - var indicator = createSymbol3(visualMapModel.get("indicatorIcon"), -scale5 / 2, -scale5 / 2, scale5, scale5, null, true); - indicator.attr({ - cursor: "move", - invisible: true, - silent: true, - x: itemSize[0] / 2 - }); - var indicatorStyle = visualMapModel.getModel("indicatorStyle").getItemStyle(); - if (indicator instanceof ZRImage2) { - var pathStyle = indicator.style; - indicator.useStyle(extend3({ - // TODO other properties like x, y ? - image: pathStyle.image, - x: pathStyle.x, - y: pathStyle.y, - width: pathStyle.width, - height: pathStyle.height - }, indicatorStyle)); - } else { - indicator.useStyle(indicatorStyle); - } - mainGroup.add(indicator); - var textStyleModel = this.visualMapModel.textStyleModel; - var indicatorLabel = new ZRText2({ - silent: true, - invisible: true, - style: createTextStyle3(textStyleModel, { - x: 0, - y: 0, - text: "" - }) - }); - this.group.add(indicatorLabel); - var indicatorLabelPoint = [(orient === "horizontal" ? textSize / 2 : HOVER_LINK_OUT2) + itemSize[0] / 2, 0]; - var shapes = this._shapes; - shapes.indicator = indicator; - shapes.indicatorLabel = indicatorLabel; - shapes.indicatorLabelPoint = indicatorLabelPoint; - this._firstShowIndicator = true; - }; - ContinuousView3.prototype._dragHandle = function(handleIndex, isEnd, dx, dy) { - if (!this._useHandle) { - return; - } - this._dragging = !isEnd; - if (!isEnd) { - var vertex = this._applyTransform([dx, dy], this._shapes.mainGroup, true); - this._updateInterval(handleIndex, vertex[1]); - this._hideIndicator(); - this._updateView(); - } - if (isEnd === !this.visualMapModel.get("realtime")) { - this.api.dispatchAction({ - type: "selectDataRange", - from: this.uid, - visualMapId: this.visualMapModel.id, - selected: this._dataInterval.slice() - }); - } - if (isEnd) { - !this._hovering && this._clearHoverLinkToSeries(); - } else if (useHoverLinkOnHandle2(this.visualMapModel)) { - this._doHoverLinkToSeries(this._handleEnds[handleIndex], false); - } - }; - ContinuousView3.prototype._resetInterval = function() { - var visualMapModel = this.visualMapModel; - var dataInterval = this._dataInterval = visualMapModel.getSelected(); - var dataExtent = visualMapModel.getExtent(); - var sizeExtent = [0, visualMapModel.itemSize[1]]; - this._handleEnds = [linearMap$2(dataInterval[0], dataExtent, sizeExtent, true), linearMap$2(dataInterval[1], dataExtent, sizeExtent, true)]; - }; - ContinuousView3.prototype._updateInterval = function(handleIndex, delta) { - delta = delta || 0; - var visualMapModel = this.visualMapModel; - var handleEnds = this._handleEnds; - var sizeExtent = [0, visualMapModel.itemSize[1]]; - sliderMove2( - delta, - handleEnds, - sizeExtent, - handleIndex, - // cross is forbidden - 0 - ); - var dataExtent = visualMapModel.getExtent(); - this._dataInterval = [linearMap$2(handleEnds[0], sizeExtent, dataExtent, true), linearMap$2(handleEnds[1], sizeExtent, dataExtent, true)]; - }; - ContinuousView3.prototype._updateView = function(forSketch) { - var visualMapModel = this.visualMapModel; - var dataExtent = visualMapModel.getExtent(); - var shapes = this._shapes; - var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]]; - var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds; - var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, "inRange"); - var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, "outOfRange"); - shapes.inRange.setStyle({ - fill: visualInRange.barColor - // opacity: visualInRange.opacity - }).setShape("points", visualInRange.barPoints); - shapes.outOfRange.setStyle({ - fill: visualOutOfRange.barColor - // opacity: visualOutOfRange.opacity - }).setShape("points", visualOutOfRange.barPoints); - this._updateHandle(inRangeHandleEnds, visualInRange); - }; - ContinuousView3.prototype._createBarVisual = function(dataInterval, dataExtent, handleEnds, forceState) { - var opts = { - forceState, - convertOpacityToAlpha: true - }; - var colorStops = this._makeColorGradient(dataInterval, opts); - var symbolSizes = [this.getControllerVisual(dataInterval[0], "symbolSize", opts), this.getControllerVisual(dataInterval[1], "symbolSize", opts)]; - var barPoints = this._createBarPoints(handleEnds, symbolSizes); - return { - barColor: new LinearGradient2(0, 0, 0, 1, colorStops), - barPoints, - handlesColor: [colorStops[0].color, colorStops[colorStops.length - 1].color] - }; - }; - ContinuousView3.prototype._makeColorGradient = function(dataInterval, opts) { - var sampleNumber = 100; - var colorStops = []; - var step = (dataInterval[1] - dataInterval[0]) / sampleNumber; - colorStops.push({ - color: this.getControllerVisual(dataInterval[0], "color", opts), - offset: 0 - }); - for (var i2 = 1; i2 < sampleNumber; i2++) { - var currValue = dataInterval[0] + step * i2; - if (currValue > dataInterval[1]) { - break; - } - colorStops.push({ - color: this.getControllerVisual(currValue, "color", opts), - offset: i2 / sampleNumber - }); - } - colorStops.push({ - color: this.getControllerVisual(dataInterval[1], "color", opts), - offset: 1 - }); - return colorStops; - }; - ContinuousView3.prototype._createBarPoints = function(handleEnds, symbolSizes) { - var itemSize = this.visualMapModel.itemSize; - return [[itemSize[0] - symbolSizes[0], handleEnds[0]], [itemSize[0], handleEnds[0]], [itemSize[0], handleEnds[1]], [itemSize[0] - symbolSizes[1], handleEnds[1]]]; - }; - ContinuousView3.prototype._createBarGroup = function(itemAlign) { - var orient = this._orient; - var inverse = this.visualMapModel.get("inverse"); - return new Group5(orient === "horizontal" && !inverse ? { - scaleX: itemAlign === "bottom" ? 1 : -1, - rotation: Math.PI / 2 - } : orient === "horizontal" && inverse ? { - scaleX: itemAlign === "bottom" ? -1 : 1, - rotation: -Math.PI / 2 - } : orient === "vertical" && !inverse ? { - scaleX: itemAlign === "left" ? 1 : -1, - scaleY: -1 - } : { - scaleX: itemAlign === "left" ? 1 : -1 - }); - }; - ContinuousView3.prototype._updateHandle = function(handleEnds, visualInRange) { - if (!this._useHandle) { - return; - } - var shapes = this._shapes; - var visualMapModel = this.visualMapModel; - var handleThumbs = shapes.handleThumbs; - var handleLabels = shapes.handleLabels; - var itemSize = visualMapModel.itemSize; - var dataExtent = visualMapModel.getExtent(); - var align = this._applyTransform("left", shapes.mainGroup); - each$e([0, 1], function(handleIndex) { - var handleThumb = handleThumbs[handleIndex]; - handleThumb.setStyle("fill", visualInRange.handlesColor[handleIndex]); - handleThumb.y = handleEnds[handleIndex]; - var val = linearMap$2(handleEnds[handleIndex], [0, itemSize[1]], dataExtent, true); - var symbolSize = this.getControllerVisual(val, "symbolSize"); - handleThumb.scaleX = handleThumb.scaleY = symbolSize / itemSize[0]; - handleThumb.x = itemSize[0] - symbolSize / 2; - var textPoint = applyTransform$1(shapes.handleLabelPoints[handleIndex], getTransform3(handleThumb, this.group)); - if (this._orient === "horizontal") { - var minimumOffset = align === "left" || align === "top" ? (itemSize[0] - symbolSize) / 2 : (itemSize[0] - symbolSize) / -2; - textPoint[1] += minimumOffset; - } - handleLabels[handleIndex].setStyle({ - x: textPoint[0], - y: textPoint[1], - text: visualMapModel.formatValueText(this._dataInterval[handleIndex]), - verticalAlign: "middle", - align: this._orient === "vertical" ? this._applyTransform("left", shapes.mainGroup) : "center" - }); - }, this); - }; - ContinuousView3.prototype._showIndicator = function(cursorValue, textValue, rangeSymbol, halfHoverLinkSize) { - var visualMapModel = this.visualMapModel; - var dataExtent = visualMapModel.getExtent(); - var itemSize = visualMapModel.itemSize; - var sizeExtent = [0, itemSize[1]]; - var shapes = this._shapes; - var indicator = shapes.indicator; - if (!indicator) { - return; - } - indicator.attr("invisible", false); - var opts = { - convertOpacityToAlpha: true - }; - var color2 = this.getControllerVisual(cursorValue, "color", opts); - var symbolSize = this.getControllerVisual(cursorValue, "symbolSize"); - var y = linearMap$2(cursorValue, dataExtent, sizeExtent, true); - var x = itemSize[0] - symbolSize / 2; - var oldIndicatorPos = { - x: indicator.x, - y: indicator.y - }; - indicator.y = y; - indicator.x = x; - var textPoint = applyTransform$1(shapes.indicatorLabelPoint, getTransform3(indicator, this.group)); - var indicatorLabel = shapes.indicatorLabel; - indicatorLabel.attr("invisible", false); - var align = this._applyTransform("left", shapes.mainGroup); - var orient = this._orient; - var isHorizontal = orient === "horizontal"; - indicatorLabel.setStyle({ - text: (rangeSymbol ? rangeSymbol : "") + visualMapModel.formatValueText(textValue), - verticalAlign: isHorizontal ? align : "middle", - align: isHorizontal ? "center" : align - }); - var indicatorNewProps = { - x, - y, - style: { - fill: color2 - } - }; - var labelNewProps = { - style: { - x: textPoint[0], - y: textPoint[1] - } - }; - if (visualMapModel.ecModel.isAnimationEnabled() && !this._firstShowIndicator) { - var animationCfg = { - duration: 100, - easing: "cubicInOut", - additive: true - }; - indicator.x = oldIndicatorPos.x; - indicator.y = oldIndicatorPos.y; - indicator.animateTo(indicatorNewProps, animationCfg); - indicatorLabel.animateTo(labelNewProps, animationCfg); - } else { - indicator.attr(indicatorNewProps); - indicatorLabel.attr(labelNewProps); - } - this._firstShowIndicator = false; - var handleLabels = this._shapes.handleLabels; - if (handleLabels) { - for (var i2 = 0; i2 < handleLabels.length; i2++) { - this.api.enterBlur(handleLabels[i2]); - } - } - }; - ContinuousView3.prototype._enableHoverLinkToSeries = function() { - var self2 = this; - this._shapes.mainGroup.on("mousemove", function(e3) { - self2._hovering = true; - if (!self2._dragging) { - var itemSize = self2.visualMapModel.itemSize; - var pos = self2._applyTransform([e3.offsetX, e3.offsetY], self2._shapes.mainGroup, true, true); - pos[1] = mathMin$a(mathMax$a(0, pos[1]), itemSize[1]); - self2._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]); - } - }).on("mouseout", function() { - self2._hovering = false; - !self2._dragging && self2._clearHoverLinkToSeries(); - }); - }; - ContinuousView3.prototype._enableHoverLinkFromSeries = function() { - var zr = this.api.getZr(); - if (this.visualMapModel.option.hoverLink) { - zr.on("mouseover", this._hoverLinkFromSeriesMouseOver, this); - zr.on("mouseout", this._hideIndicator, this); - } else { - this._clearHoverLinkFromSeries(); - } - }; - ContinuousView3.prototype._doHoverLinkToSeries = function(cursorPos, hoverOnBar) { - var visualMapModel = this.visualMapModel; - var itemSize = visualMapModel.itemSize; - if (!visualMapModel.option.hoverLink) { - return; - } - var sizeExtent = [0, itemSize[1]]; - var dataExtent = visualMapModel.getExtent(); - cursorPos = mathMin$a(mathMax$a(sizeExtent[0], cursorPos), sizeExtent[1]); - var halfHoverLinkSize = getHalfHoverLinkSize2(visualMapModel, dataExtent, sizeExtent); - var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize]; - var cursorValue = linearMap$2(cursorPos, sizeExtent, dataExtent, true); - var valueRange = [linearMap$2(hoverRange[0], sizeExtent, dataExtent, true), linearMap$2(hoverRange[1], sizeExtent, dataExtent, true)]; - hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity); - hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity); - if (hoverOnBar) { - if (valueRange[0] === -Infinity) { - this._showIndicator(cursorValue, valueRange[1], "< ", halfHoverLinkSize); - } else if (valueRange[1] === Infinity) { - this._showIndicator(cursorValue, valueRange[0], "> ", halfHoverLinkSize); - } else { - this._showIndicator(cursorValue, cursorValue, "\u2248 ", halfHoverLinkSize); - } - } - var oldBatch = this._hoverLinkDataIndices; - var newBatch = []; - if (hoverOnBar || useHoverLinkOnHandle2(visualMapModel)) { - newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange); - } - var resultBatches = compressBatches2(oldBatch, newBatch); - this._dispatchHighDown("downplay", makeHighDownBatch2(resultBatches[0], visualMapModel)); - this._dispatchHighDown("highlight", makeHighDownBatch2(resultBatches[1], visualMapModel)); - }; - ContinuousView3.prototype._hoverLinkFromSeriesMouseOver = function(e3) { - var ecData; - findEventDispatcher2(e3.target, function(target) { - var currECData = getECData2(target); - if (currECData.dataIndex != null) { - ecData = currECData; - return true; - } - }, true); - if (!ecData) { - return; - } - var dataModel = this.ecModel.getSeriesByIndex(ecData.seriesIndex); - var visualMapModel = this.visualMapModel; - if (!visualMapModel.isTargetSeries(dataModel)) { - return; - } - var data = dataModel.getData(ecData.dataType); - var value = data.getStore().get(visualMapModel.getDataDimensionIndex(data), ecData.dataIndex); - if (!isNaN(value)) { - this._showIndicator(value, value); - } - }; - ContinuousView3.prototype._hideIndicator = function() { - var shapes = this._shapes; - shapes.indicator && shapes.indicator.attr("invisible", true); - shapes.indicatorLabel && shapes.indicatorLabel.attr("invisible", true); - var handleLabels = this._shapes.handleLabels; - if (handleLabels) { - for (var i2 = 0; i2 < handleLabels.length; i2++) { - this.api.leaveBlur(handleLabels[i2]); - } - } - }; - ContinuousView3.prototype._clearHoverLinkToSeries = function() { - this._hideIndicator(); - var indices = this._hoverLinkDataIndices; - this._dispatchHighDown("downplay", makeHighDownBatch2(indices, this.visualMapModel)); - indices.length = 0; - }; - ContinuousView3.prototype._clearHoverLinkFromSeries = function() { - this._hideIndicator(); - var zr = this.api.getZr(); - zr.off("mouseover", this._hoverLinkFromSeriesMouseOver); - zr.off("mouseout", this._hideIndicator); - }; - ContinuousView3.prototype._applyTransform = function(vertex, element, inverse, global2) { - var transform2 = getTransform3(element, global2 ? null : this.group); - return isArray3(vertex) ? applyTransform$1(vertex, transform2, inverse) : transformDirection2(vertex, transform2, inverse); - }; - ContinuousView3.prototype._dispatchHighDown = function(type, batch) { - batch && batch.length && this.api.dispatchAction({ - type, - batch - }); - }; - ContinuousView3.prototype.dispose = function() { - this._clearHoverLinkFromSeries(); - this._clearHoverLinkToSeries(); - }; - ContinuousView3.type = "visualMap.continuous"; - return ContinuousView3; - }(VisualMapView2) - ); - function createPolygon2(points5, cursor, onDrift, onDragEnd) { - return new Polygon2({ - shape: { - points: points5 - }, - draggable: !!onDrift, - cursor, - drift: onDrift, - onmousemove: function(e3) { - stop2(e3.event); - }, - ondragend: onDragEnd - }); - } - function getHalfHoverLinkSize2(visualMapModel, dataExtent, sizeExtent) { - var halfHoverLinkSize = HOVER_LINK_SIZE2 / 2; - var hoverLinkDataSize = visualMapModel.get("hoverLinkDataSize"); - if (hoverLinkDataSize) { - halfHoverLinkSize = linearMap$2(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2; - } - return halfHoverLinkSize; - } - function useHoverLinkOnHandle2(visualMapModel) { - var hoverLinkOnHandle = visualMapModel.get("hoverLinkOnHandle"); - return !!(hoverLinkOnHandle == null ? visualMapModel.get("realtime") : hoverLinkOnHandle); - } - function getCursor$1(orient) { - return orient === "vertical" ? "ns-resize" : "ew-resize"; - } - var visualMapActionInfo2 = { - type: "selectDataRange", - event: "dataRangeSelected", - // FIXME use updateView appears wrong - update: "update" - }; - var visualMapActionHander2 = function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "visualMap", - query: payload - }, function(model) { - model.setSelected(payload.selected); - }); - }; - var visualMapEncodingHandlers2 = [ - { - createOnAllSeries: true, - reset: function(seriesModel, ecModel) { - var resetDefines = []; - ecModel.eachComponent("visualMap", function(visualMapModel) { - var pipelineContext = seriesModel.pipelineContext; - if (!visualMapModel.isTargetSeries(seriesModel) || pipelineContext && pipelineContext.large) { - return; - } - resetDefines.push(incrementalApplyVisual2(visualMapModel.stateList, visualMapModel.targetVisuals, bind3(visualMapModel.getValueState, visualMapModel), visualMapModel.getDataDimensionIndex(seriesModel.getData()))); - }); - return resetDefines; - } - }, - // Only support color. - { - createOnAllSeries: true, - reset: function(seriesModel, ecModel) { - var data = seriesModel.getData(); - var visualMetaList = []; - ecModel.eachComponent("visualMap", function(visualMapModel) { - if (visualMapModel.isTargetSeries(seriesModel)) { - var visualMeta = visualMapModel.getVisualMeta(bind3(getColorVisual2, null, seriesModel, visualMapModel)) || { - stops: [], - outerColors: [] - }; - var dimIdx = visualMapModel.getDataDimensionIndex(data); - if (dimIdx >= 0) { - visualMeta.dimension = dimIdx; - visualMetaList.push(visualMeta); - } - } - }); - seriesModel.getData().setVisual("visualMeta", visualMetaList); - } - } - ]; - function getColorVisual2(seriesModel, visualMapModel, value, valueState) { - var mappings = visualMapModel.targetVisuals[valueState]; - var visualTypes = VisualMapping2.prepareVisualTypes(mappings); - var resultVisual = { - color: getVisualFromData2(seriesModel.getData(), "color") - // default color. - }; - for (var i2 = 0, len3 = visualTypes.length; i2 < len3; i2++) { - var type = visualTypes[i2]; - var mapping = mappings[type === "opacity" ? "__alphaForOpacity" : type]; - mapping && mapping.applyVisual(value, getVisual, setVisual); - } - return resultVisual.color; - function getVisual(key) { - return resultVisual[key]; - } - function setVisual(key, value2) { - resultVisual[key] = value2; - } - } - var each$f = each17; - function visualMapPreprocessor2(option) { - var visualMap = option && option.visualMap; - if (!isArray3(visualMap)) { - visualMap = visualMap ? [visualMap] : []; - } - each$f(visualMap, function(opt) { - if (!opt) { - return; - } - if (has$1(opt, "splitList") && !has$1(opt, "pieces")) { - opt.pieces = opt.splitList; - delete opt.splitList; - } - var pieces = opt.pieces; - if (pieces && isArray3(pieces)) { - each$f(pieces, function(piece) { - if (isObject5(piece)) { - if (has$1(piece, "start") && !has$1(piece, "min")) { - piece.min = piece.start; - } - if (has$1(piece, "end") && !has$1(piece, "max")) { - piece.max = piece.end; - } - } - }); - } - }); - } - function has$1(obj, name) { - return obj && obj.hasOwnProperty && obj.hasOwnProperty(name); - } - var installed$1 = false; - function installCommon$1(registers) { - if (installed$1) { - return; - } - installed$1 = true; - registers.registerSubTypeDefaulter("visualMap", function(option) { - return !option.categories && (!(option.pieces ? option.pieces.length > 0 : option.splitNumber > 0) || option.calculable) ? "continuous" : "piecewise"; - }); - registers.registerAction(visualMapActionInfo2, visualMapActionHander2); - each17(visualMapEncodingHandlers2, function(handler) { - registers.registerVisual(registers.PRIORITY.VISUAL.COMPONENT, handler); - }); - registers.registerPreprocessor(visualMapPreprocessor2); - } - function install$N(registers) { - registers.registerComponentModel(ContinuousModel2); - registers.registerComponentView(ContinuousView2); - installCommon$1(registers); - } - var PiecewiseModel2 = ( - /** @class */ - function(_super) { - __extends2(PiecewiseModel3, _super); - function PiecewiseModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = PiecewiseModel3.type; - _this._pieceList = []; - return _this; - } - PiecewiseModel3.prototype.optionUpdated = function(newOption, isInit) { - _super.prototype.optionUpdated.apply(this, arguments); - this.resetExtent(); - var mode = this._mode = this._determineMode(); - this._pieceList = []; - resetMethods2[this._mode].call(this, this._pieceList); - this._resetSelected(newOption, isInit); - var categories = this.option.categories; - this.resetVisual(function(mappingOption, state) { - if (mode === "categories") { - mappingOption.mappingMethod = "category"; - mappingOption.categories = clone6(categories); - } else { - mappingOption.dataExtent = this.getExtent(); - mappingOption.mappingMethod = "piecewise"; - mappingOption.pieceList = map3(this._pieceList, function(piece) { - piece = clone6(piece); - if (state !== "inRange") { - piece.visual = null; - } - return piece; - }); - } - }); - }; - PiecewiseModel3.prototype.completeVisualOption = function() { - var option = this.option; - var visualTypesInPieces = {}; - var visualTypes = VisualMapping2.listVisualTypes(); - var isCategory3 = this.isCategory(); - each17(option.pieces, function(piece) { - each17(visualTypes, function(visualType) { - if (piece.hasOwnProperty(visualType)) { - visualTypesInPieces[visualType] = 1; - } - }); - }); - each17(visualTypesInPieces, function(v, visualType) { - var exists = false; - each17(this.stateList, function(state) { - exists = exists || has4(option, state, visualType) || has4(option.target, state, visualType); - }, this); - !exists && each17(this.stateList, function(state) { - (option[state] || (option[state] = {}))[visualType] = visualDefault2.get(visualType, state === "inRange" ? "active" : "inactive", isCategory3); - }); - }, this); - function has4(obj, state, visualType) { - return obj && obj[state] && obj[state].hasOwnProperty(visualType); - } - _super.prototype.completeVisualOption.apply(this, arguments); - }; - PiecewiseModel3.prototype._resetSelected = function(newOption, isInit) { - var thisOption = this.option; - var pieceList = this._pieceList; - var selected = (isInit ? thisOption : newOption).selected || {}; - thisOption.selected = selected; - each17(pieceList, function(piece, index) { - var key = this.getSelectedMapKey(piece); - if (!selected.hasOwnProperty(key)) { - selected[key] = true; - } - }, this); - if (thisOption.selectedMode === "single") { - var hasSel_1 = false; - each17(pieceList, function(piece, index) { - var key = this.getSelectedMapKey(piece); - if (selected[key]) { - hasSel_1 ? selected[key] = false : hasSel_1 = true; - } - }, this); - } - }; - PiecewiseModel3.prototype.getItemSymbol = function() { - return this.get("itemSymbol"); - }; - PiecewiseModel3.prototype.getSelectedMapKey = function(piece) { - return this._mode === "categories" ? piece.value + "" : piece.index + ""; - }; - PiecewiseModel3.prototype.getPieceList = function() { - return this._pieceList; - }; - PiecewiseModel3.prototype._determineMode = function() { - var option = this.option; - return option.pieces && option.pieces.length > 0 ? "pieces" : this.option.categories ? "categories" : "splitNumber"; - }; - PiecewiseModel3.prototype.setSelected = function(selected) { - this.option.selected = clone6(selected); - }; - PiecewiseModel3.prototype.getValueState = function(value) { - var index = VisualMapping2.findPieceIndex(value, this._pieceList); - return index != null ? this.option.selected[this.getSelectedMapKey(this._pieceList[index])] ? "inRange" : "outOfRange" : "outOfRange"; - }; - PiecewiseModel3.prototype.findTargetDataIndices = function(pieceIndex) { - var result = []; - var pieceList = this._pieceList; - this.eachTargetSeries(function(seriesModel) { - var dataIndices = []; - var data = seriesModel.getData(); - data.each(this.getDataDimensionIndex(data), function(value, dataIndex) { - var pIdx = VisualMapping2.findPieceIndex(value, pieceList); - pIdx === pieceIndex && dataIndices.push(dataIndex); - }, this); - result.push({ - seriesId: seriesModel.id, - dataIndex: dataIndices - }); - }, this); - return result; - }; - PiecewiseModel3.prototype.getRepresentValue = function(piece) { - var representValue; - if (this.isCategory()) { - representValue = piece.value; - } else { - if (piece.value != null) { - representValue = piece.value; - } else { - var pieceInterval = piece.interval || []; - representValue = pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity ? 0 : (pieceInterval[0] + pieceInterval[1]) / 2; - } - } - return representValue; - }; - PiecewiseModel3.prototype.getVisualMeta = function(getColorVisual3) { - if (this.isCategory()) { - return; - } - var stops = []; - var outerColors = ["", ""]; - var visualMapModel = this; - function setStop(interval, valueState) { - var representValue = visualMapModel.getRepresentValue({ - interval - }); - if (!valueState) { - valueState = visualMapModel.getValueState(representValue); - } - var color2 = getColorVisual3(representValue, valueState); - if (interval[0] === -Infinity) { - outerColors[0] = color2; - } else if (interval[1] === Infinity) { - outerColors[1] = color2; - } else { - stops.push({ - value: interval[0], - color: color2 - }, { - value: interval[1], - color: color2 - }); - } - } - var pieceList = this._pieceList.slice(); - if (!pieceList.length) { - pieceList.push({ - interval: [-Infinity, Infinity] - }); - } else { - var edge = pieceList[0].interval[0]; - edge !== -Infinity && pieceList.unshift({ - interval: [-Infinity, edge] - }); - edge = pieceList[pieceList.length - 1].interval[1]; - edge !== Infinity && pieceList.push({ - interval: [edge, Infinity] - }); - } - var curr = -Infinity; - each17(pieceList, function(piece) { - var interval = piece.interval; - if (interval) { - interval[0] > curr && setStop([curr, interval[0]], "outOfRange"); - setStop(interval.slice()); - curr = interval[1]; - } - }, this); - return { - stops, - outerColors - }; - }; - PiecewiseModel3.type = "visualMap.piecewise"; - PiecewiseModel3.defaultOption = inheritDefaultOption2(VisualMapModel2.defaultOption, { - selected: null, - minOpen: false, - maxOpen: false, - align: "auto", - itemWidth: 20, - itemHeight: 14, - itemSymbol: "roundRect", - pieces: null, - categories: null, - splitNumber: 5, - selectedMode: "multiple", - itemGap: 10, - hoverLink: true - // Enable hover highlight. - }); - return PiecewiseModel3; - }(VisualMapModel2) - ); - var resetMethods2 = { - splitNumber: function(outPieceList) { - var thisOption = this.option; - var precision = Math.min(thisOption.precision, 20); - var dataExtent = this.getExtent(); - var splitNumber = thisOption.splitNumber; - splitNumber = Math.max(parseInt(splitNumber, 10), 1); - thisOption.splitNumber = splitNumber; - var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber; - while (+splitStep.toFixed(precision) !== splitStep && precision < 5) { - precision++; - } - thisOption.precision = precision; - splitStep = +splitStep.toFixed(precision); - if (thisOption.minOpen) { - outPieceList.push({ - interval: [-Infinity, dataExtent[0]], - close: [0, 0] - }); - } - for (var index = 0, curr = dataExtent[0]; index < splitNumber; curr += splitStep, index++) { - var max5 = index === splitNumber - 1 ? dataExtent[1] : curr + splitStep; - outPieceList.push({ - interval: [curr, max5], - close: [1, 1] - }); - } - if (thisOption.maxOpen) { - outPieceList.push({ - interval: [dataExtent[1], Infinity], - close: [0, 0] - }); - } - reformIntervals2(outPieceList); - each17(outPieceList, function(piece, index2) { - piece.index = index2; - piece.text = this.formatValueText(piece.interval); - }, this); - }, - categories: function(outPieceList) { - var thisOption = this.option; - each17(thisOption.categories, function(cate) { - outPieceList.push({ - text: this.formatValueText(cate, true), - value: cate - }); - }, this); - normalizeReverse2(thisOption, outPieceList); - }, - pieces: function(outPieceList) { - var thisOption = this.option; - each17(thisOption.pieces, function(pieceListItem, index) { - if (!isObject5(pieceListItem)) { - pieceListItem = { - value: pieceListItem - }; - } - var item = { - text: "", - index - }; - if (pieceListItem.label != null) { - item.text = pieceListItem.label; - } - if (pieceListItem.hasOwnProperty("value")) { - var value = item.value = pieceListItem.value; - item.interval = [value, value]; - item.close = [1, 1]; - } else { - var interval = item.interval = []; - var close_1 = item.close = [0, 0]; - var closeList = [1, 0, 1]; - var infinityList = [-Infinity, Infinity]; - var useMinMax = []; - for (var lg = 0; lg < 2; lg++) { - var names = [["gte", "gt", "min"], ["lte", "lt", "max"]][lg]; - for (var i2 = 0; i2 < 3 && interval[lg] == null; i2++) { - interval[lg] = pieceListItem[names[i2]]; - close_1[lg] = closeList[i2]; - useMinMax[lg] = i2 === 2; - } - interval[lg] == null && (interval[lg] = infinityList[lg]); - } - useMinMax[0] && interval[1] === Infinity && (close_1[0] = 0); - useMinMax[1] && interval[0] === -Infinity && (close_1[1] = 0); - if (true) { - if (interval[0] > interval[1]) { - console.warn("Piece " + index + "is illegal: " + interval + " lower bound should not greater then uppper bound."); - } - } - if (interval[0] === interval[1] && close_1[0] && close_1[1]) { - item.value = interval[0]; - } - } - item.visual = VisualMapping2.retrieveVisuals(pieceListItem); - outPieceList.push(item); - }, this); - normalizeReverse2(thisOption, outPieceList); - reformIntervals2(outPieceList); - each17(outPieceList, function(piece) { - var close = piece.close; - var edgeSymbols = [["<", "\u2264"][close[1]], [">", "\u2265"][close[0]]]; - piece.text = piece.text || this.formatValueText(piece.value != null ? piece.value : piece.interval, false, edgeSymbols); - }, this); - } - }; - function normalizeReverse2(thisOption, pieceList) { - var inverse = thisOption.inverse; - if (thisOption.orient === "vertical" ? !inverse : inverse) { - pieceList.reverse(); - } - } - var PiecewiseVisualMapView2 = ( - /** @class */ - function(_super) { - __extends2(PiecewiseVisualMapView3, _super); - function PiecewiseVisualMapView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = PiecewiseVisualMapView3.type; - return _this; - } - PiecewiseVisualMapView3.prototype.doRender = function() { - var thisGroup = this.group; - thisGroup.removeAll(); - var visualMapModel = this.visualMapModel; - var textGap = visualMapModel.get("textGap"); - var textStyleModel = visualMapModel.textStyleModel; - var textFont = textStyleModel.getFont(); - var textFill = textStyleModel.getTextColor(); - var itemAlign = this._getItemAlign(); - var itemSize = visualMapModel.itemSize; - var viewData = this._getViewData(); - var endsText = viewData.endsText; - var showLabel = retrieve4(visualMapModel.get("showLabel", true), !endsText); - var silent = !visualMapModel.get("selectedMode"); - endsText && this._renderEndsText(thisGroup, endsText[0], itemSize, showLabel, itemAlign); - each17(viewData.viewPieceList, function(item) { - var piece = item.piece; - var itemGroup = new Group5(); - itemGroup.onclick = bind3(this._onItemClick, this, piece); - this._enableHoverLink(itemGroup, item.indexInModelPieceList); - var representValue = visualMapModel.getRepresentValue(piece); - this._createItemSymbol(itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]], silent); - if (showLabel) { - var visualState = this.visualMapModel.getValueState(representValue); - itemGroup.add(new ZRText2({ - style: { - x: itemAlign === "right" ? -textGap : itemSize[0] + textGap, - y: itemSize[1] / 2, - text: piece.text, - verticalAlign: "middle", - align: itemAlign, - font: textFont, - fill: textFill, - opacity: visualState === "outOfRange" ? 0.5 : 1 - }, - silent - })); - } - thisGroup.add(itemGroup); - }, this); - endsText && this._renderEndsText(thisGroup, endsText[1], itemSize, showLabel, itemAlign); - box2(visualMapModel.get("orient"), thisGroup, visualMapModel.get("itemGap")); - this.renderBackground(thisGroup); - this.positionGroup(thisGroup); - }; - PiecewiseVisualMapView3.prototype._enableHoverLink = function(itemGroup, pieceIndex) { - var _this = this; - itemGroup.on("mouseover", function() { - return onHoverLink("highlight"); - }).on("mouseout", function() { - return onHoverLink("downplay"); - }); - var onHoverLink = function(method) { - var visualMapModel = _this.visualMapModel; - visualMapModel.option.hoverLink && _this.api.dispatchAction({ - type: method, - batch: makeHighDownBatch2(visualMapModel.findTargetDataIndices(pieceIndex), visualMapModel) - }); - }; - }; - PiecewiseVisualMapView3.prototype._getItemAlign = function() { - var visualMapModel = this.visualMapModel; - var modelOption = visualMapModel.option; - if (modelOption.orient === "vertical") { - return getItemAlign2(visualMapModel, this.api, visualMapModel.itemSize); - } else { - var align = modelOption.align; - if (!align || align === "auto") { - align = "left"; - } - return align; - } - }; - PiecewiseVisualMapView3.prototype._renderEndsText = function(group, text, itemSize, showLabel, itemAlign) { - if (!text) { - return; - } - var itemGroup = new Group5(); - var textStyleModel = this.visualMapModel.textStyleModel; - itemGroup.add(new ZRText2({ - style: createTextStyle3(textStyleModel, { - x: showLabel ? itemAlign === "right" ? itemSize[0] : 0 : itemSize[0] / 2, - y: itemSize[1] / 2, - verticalAlign: "middle", - align: showLabel ? itemAlign : "center", - text - }) - })); - group.add(itemGroup); - }; - PiecewiseVisualMapView3.prototype._getViewData = function() { - var visualMapModel = this.visualMapModel; - var viewPieceList = map3(visualMapModel.getPieceList(), function(piece, index) { - return { - piece, - indexInModelPieceList: index - }; - }); - var endsText = visualMapModel.get("text"); - var orient = visualMapModel.get("orient"); - var inverse = visualMapModel.get("inverse"); - if (orient === "horizontal" ? inverse : !inverse) { - viewPieceList.reverse(); - } else if (endsText) { - endsText = endsText.slice().reverse(); - } - return { - viewPieceList, - endsText - }; - }; - PiecewiseVisualMapView3.prototype._createItemSymbol = function(group, representValue, shapeParam, silent) { - var itemSymbol = createSymbol3( - // symbol will be string - this.getControllerVisual(representValue, "symbol"), - shapeParam[0], - shapeParam[1], - shapeParam[2], - shapeParam[3], - // color will be string - this.getControllerVisual(representValue, "color") - ); - itemSymbol.silent = silent; - group.add(itemSymbol); - }; - PiecewiseVisualMapView3.prototype._onItemClick = function(piece) { - var visualMapModel = this.visualMapModel; - var option = visualMapModel.option; - var selectedMode = option.selectedMode; - if (!selectedMode) { - return; - } - var selected = clone6(option.selected); - var newKey = visualMapModel.getSelectedMapKey(piece); - if (selectedMode === "single" || selectedMode === true) { - selected[newKey] = true; - each17(selected, function(o, key) { - selected[key] = key === newKey; - }); - } else { - selected[newKey] = !selected[newKey]; - } - this.api.dispatchAction({ - type: "selectDataRange", - from: this.uid, - visualMapId: this.visualMapModel.id, - selected - }); - }; - PiecewiseVisualMapView3.type = "visualMap.piecewise"; - return PiecewiseVisualMapView3; - }(VisualMapView2) - ); - function install$O(registers) { - registers.registerComponentModel(PiecewiseModel2); - registers.registerComponentView(PiecewiseVisualMapView2); - installCommon$1(registers); - } - function install$P(registers) { - use2(install$N); - use2(install$O); - } - var DEFAULT_OPTION2 = { - label: { - enabled: true - }, - decal: { - show: false - } - }; - var inner$l = makeInner2(); - var decalPaletteScope2 = {}; - function ariaVisual2(ecModel, api) { - var ariaModel = ecModel.getModel("aria"); - if (!ariaModel.get("enabled")) { - return; - } - var defaultOption4 = clone6(DEFAULT_OPTION2); - merge2(defaultOption4.label, ecModel.getLocaleModel().get("aria"), false); - merge2(ariaModel.option, defaultOption4, false); - setDecal(); - setLabel(); - function setDecal() { - var decalModel = ariaModel.getModel("decal"); - var useDecal = decalModel.get("show"); - if (useDecal) { - var paletteScopeGroupByType_1 = createHashMap2(); - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.isColorBySeries()) { - return; - } - var decalScope = paletteScopeGroupByType_1.get(seriesModel.type); - if (!decalScope) { - decalScope = {}; - paletteScopeGroupByType_1.set(seriesModel.type, decalScope); - } - inner$l(seriesModel).scope = decalScope; - }); - ecModel.eachRawSeries(function(seriesModel) { - if (ecModel.isSeriesFiltered(seriesModel)) { - return; - } - if (isFunction2(seriesModel.enableAriaDecal)) { - seriesModel.enableAriaDecal(); - return; - } - var data = seriesModel.getData(); - if (!seriesModel.isColorBySeries()) { - var dataAll_1 = seriesModel.getRawData(); - var idxMap_1 = {}; - var decalScope_1 = inner$l(seriesModel).scope; - data.each(function(idx) { - var rawIdx = data.getRawIndex(idx); - idxMap_1[rawIdx] = idx; - }); - var dataCount_1 = dataAll_1.count(); - dataAll_1.each(function(rawIdx) { - var idx = idxMap_1[rawIdx]; - var name = dataAll_1.getName(rawIdx) || rawIdx + ""; - var paletteDecal2 = getDecalFromPalette2(seriesModel.ecModel, name, decalScope_1, dataCount_1); - var specifiedDecal2 = data.getItemVisual(idx, "decal"); - data.setItemVisual(idx, "decal", mergeDecal(specifiedDecal2, paletteDecal2)); - }); - } else { - var paletteDecal = getDecalFromPalette2(seriesModel.ecModel, seriesModel.name, decalPaletteScope2, ecModel.getSeriesCount()); - var specifiedDecal = data.getVisual("decal"); - data.setVisual("decal", mergeDecal(specifiedDecal, paletteDecal)); - } - function mergeDecal(specifiedDecal2, paletteDecal2) { - var resultDecal = specifiedDecal2 ? extend3(extend3({}, paletteDecal2), specifiedDecal2) : paletteDecal2; - resultDecal.dirty = true; - return resultDecal; - } - }); - } - } - function setLabel() { - var dom = api.getZr().dom; - if (!dom) { - return; - } - var labelLocale = ecModel.getLocaleModel().get("aria"); - var labelModel = ariaModel.getModel("label"); - labelModel.option = defaults2(labelModel.option, labelLocale); - if (!labelModel.get("enabled")) { - return; - } - dom.setAttribute("role", "img"); - if (labelModel.get("description")) { - dom.setAttribute("aria-label", labelModel.get("description")); - return; - } - var seriesCnt = ecModel.getSeriesCount(); - var maxDataCnt = labelModel.get(["data", "maxCount"]) || 10; - var maxSeriesCnt = labelModel.get(["series", "maxCount"]) || 10; - var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt); - var ariaLabel; - if (seriesCnt < 1) { - return; - } else { - var title = getTitle(); - if (title) { - var withTitle = labelModel.get(["general", "withTitle"]); - ariaLabel = replace(withTitle, { - title - }); - } else { - ariaLabel = labelModel.get(["general", "withoutTitle"]); - } - var seriesLabels_1 = []; - var prefix = seriesCnt > 1 ? labelModel.get(["series", "multiple", "prefix"]) : labelModel.get(["series", "single", "prefix"]); - ariaLabel += replace(prefix, { - seriesCount: seriesCnt - }); - ecModel.eachSeries(function(seriesModel, idx) { - if (idx < displaySeriesCnt) { - var seriesLabel = void 0; - var seriesName = seriesModel.get("name"); - var withName = seriesName ? "withName" : "withoutName"; - seriesLabel = seriesCnt > 1 ? labelModel.get(["series", "multiple", withName]) : labelModel.get(["series", "single", withName]); - seriesLabel = replace(seriesLabel, { - seriesId: seriesModel.seriesIndex, - seriesName: seriesModel.get("name"), - seriesType: getSeriesTypeName(seriesModel.subType) - }); - var data = seriesModel.getData(); - if (data.count() > maxDataCnt) { - var partialLabel = labelModel.get(["data", "partialData"]); - seriesLabel += replace(partialLabel, { - displayCnt: maxDataCnt - }); - } else { - seriesLabel += labelModel.get(["data", "allData"]); - } - var middleSeparator_1 = labelModel.get(["data", "separator", "middle"]); - var endSeparator_1 = labelModel.get(["data", "separator", "end"]); - var excludeDimensionId_1 = labelModel.get(["data", "excludeDimensionId"]); - var dataLabels = []; - for (var i2 = 0; i2 < data.count(); i2++) { - if (i2 < maxDataCnt) { - var name_1 = data.getName(i2); - var value = !excludeDimensionId_1 ? data.getValues(i2) : filter2(data.getValues(i2), function(v, j) { - return indexOf2(excludeDimensionId_1, j) === -1; - }); - var dataLabel = labelModel.get(["data", name_1 ? "withName" : "withoutName"]); - dataLabels.push(replace(dataLabel, { - name: name_1, - value: value.join(middleSeparator_1) - })); - } - } - seriesLabel += dataLabels.join(middleSeparator_1) + endSeparator_1; - seriesLabels_1.push(seriesLabel); - } - }); - var separatorModel = labelModel.getModel(["series", "multiple", "separator"]); - var middleSeparator = separatorModel.get("middle"); - var endSeparator = separatorModel.get("end"); - ariaLabel += seriesLabels_1.join(middleSeparator) + endSeparator; - dom.setAttribute("aria-label", ariaLabel); - } - } - function replace(str, keyValues) { - if (!isString2(str)) { - return str; - } - var result = str; - each17(keyValues, function(value, key) { - result = result.replace(new RegExp("\\{\\s*" + key + "\\s*\\}", "g"), value); - }); - return result; - } - function getTitle() { - var title = ecModel.get("title"); - if (title && title.length) { - title = title[0]; - } - return title && title.text; - } - function getSeriesTypeName(type) { - var typeNames = ecModel.getLocaleModel().get(["series", "typeNames"]); - return typeNames[type] || typeNames.chart; - } - } - function ariaPreprocessor2(option) { - if (!option || !option.aria) { - return; - } - var aria = option.aria; - if (aria.show != null) { - aria.enabled = aria.show; - } - aria.label = aria.label || {}; - each17(["description", "general", "series", "data"], function(name) { - if (aria[name] != null) { - aria.label[name] = aria[name]; - } - }); - } - function install$Q(registers) { - registers.registerPreprocessor(ariaPreprocessor2); - registers.registerVisual(registers.PRIORITY.VISUAL.ARIA, ariaVisual2); - } - var RELATIONAL_EXPRESSION_OP_ALIAS_MAP2 = { - value: "eq", - // PENDING: not good for literal semantic? - "<": "lt", - "<=": "lte", - ">": "gt", - ">=": "gte", - "=": "eq", - "!=": "ne", - "<>": "ne" - // Might be misleading for sake of the difference between '==' and '===', - // so don't support them. - // '==': 'eq', - // '===': 'seq', - // '!==': 'sne' - // PENDING: Whether support some common alias "ge", "le", "neq"? - // ge: 'gte', - // le: 'lte', - // neq: 'ne', - }; - var RegExpEvaluator2 = ( - /** @class */ - function() { - function RegExpEvaluator3(rVal) { - var condValue = this._condVal = isString2(rVal) ? new RegExp(rVal) : isRegExp2(rVal) ? rVal : null; - if (condValue == null) { - var errMsg = ""; - if (true) { - errMsg = makePrintable2("Illegal regexp", rVal, "in"); - } - throwError2(errMsg); - } - } - RegExpEvaluator3.prototype.evaluate = function(lVal) { - var type = typeof lVal; - return isString2(type) ? this._condVal.test(lVal) : isNumber2(type) ? this._condVal.test(lVal + "") : false; - }; - return RegExpEvaluator3; - }() - ); - var ConstConditionInternal2 = ( - /** @class */ - function() { - function ConstConditionInternal3() { - } - ConstConditionInternal3.prototype.evaluate = function() { - return this.value; - }; - return ConstConditionInternal3; - }() - ); - var AndConditionInternal2 = ( - /** @class */ - function() { - function AndConditionInternal3() { - } - AndConditionInternal3.prototype.evaluate = function() { - var children = this.children; - for (var i2 = 0; i2 < children.length; i2++) { - if (!children[i2].evaluate()) { - return false; - } - } - return true; - }; - return AndConditionInternal3; - }() - ); - var OrConditionInternal2 = ( - /** @class */ - function() { - function OrConditionInternal3() { - } - OrConditionInternal3.prototype.evaluate = function() { - var children = this.children; - for (var i2 = 0; i2 < children.length; i2++) { - if (children[i2].evaluate()) { - return true; - } - } - return false; - }; - return OrConditionInternal3; - }() - ); - var NotConditionInternal2 = ( - /** @class */ - function() { - function NotConditionInternal3() { - } - NotConditionInternal3.prototype.evaluate = function() { - return !this.child.evaluate(); - }; - return NotConditionInternal3; - }() - ); - var RelationalConditionInternal2 = ( - /** @class */ - function() { - function RelationalConditionInternal3() { - } - RelationalConditionInternal3.prototype.evaluate = function() { - var needParse = !!this.valueParser; - var getValue = this.getValue; - var tarValRaw = getValue(this.valueGetterParam); - var tarValParsed = needParse ? this.valueParser(tarValRaw) : null; - for (var i2 = 0; i2 < this.subCondList.length; i2++) { - if (!this.subCondList[i2].evaluate(needParse ? tarValParsed : tarValRaw)) { - return false; - } - } - return true; - }; - return RelationalConditionInternal3; - }() - ); - function parseOption2(exprOption, getters) { - if (exprOption === true || exprOption === false) { - var cond = new ConstConditionInternal2(); - cond.value = exprOption; - return cond; - } - var errMsg = ""; - if (!isObjectNotArray2(exprOption)) { - if (true) { - errMsg = makePrintable2("Illegal config. Expect a plain object but actually", exprOption); - } - throwError2(errMsg); - } - if (exprOption.and) { - return parseAndOrOption2("and", exprOption, getters); - } else if (exprOption.or) { - return parseAndOrOption2("or", exprOption, getters); - } else if (exprOption.not) { - return parseNotOption2(exprOption, getters); - } - return parseRelationalOption2(exprOption, getters); - } - function parseAndOrOption2(op, exprOption, getters) { - var subOptionArr = exprOption[op]; - var errMsg = ""; - if (true) { - errMsg = makePrintable2('"and"/"or" condition should only be `' + op + ": [...]` and must not be empty array.", "Illegal condition:", exprOption); - } - if (!isArray3(subOptionArr)) { - throwError2(errMsg); - } - if (!subOptionArr.length) { - throwError2(errMsg); - } - var cond = op === "and" ? new AndConditionInternal2() : new OrConditionInternal2(); - cond.children = map3(subOptionArr, function(subOption) { - return parseOption2(subOption, getters); - }); - if (!cond.children.length) { - throwError2(errMsg); - } - return cond; - } - function parseNotOption2(exprOption, getters) { - var subOption = exprOption.not; - var errMsg = ""; - if (true) { - errMsg = makePrintable2('"not" condition should only be `not: {}`.', "Illegal condition:", exprOption); - } - if (!isObjectNotArray2(subOption)) { - throwError2(errMsg); - } - var cond = new NotConditionInternal2(); - cond.child = parseOption2(subOption, getters); - if (!cond.child) { - throwError2(errMsg); - } - return cond; - } - function parseRelationalOption2(exprOption, getters) { - var errMsg = ""; - var valueGetterParam = getters.prepareGetValue(exprOption); - var subCondList = []; - var exprKeys = keys2(exprOption); - var parserName = exprOption.parser; - var valueParser = parserName ? getRawValueParser2(parserName) : null; - for (var i2 = 0; i2 < exprKeys.length; i2++) { - var keyRaw = exprKeys[i2]; - if (keyRaw === "parser" || getters.valueGetterAttrMap.get(keyRaw)) { - continue; - } - var op = hasOwn2(RELATIONAL_EXPRESSION_OP_ALIAS_MAP2, keyRaw) ? RELATIONAL_EXPRESSION_OP_ALIAS_MAP2[keyRaw] : keyRaw; - var condValueRaw = exprOption[keyRaw]; - var condValueParsed = valueParser ? valueParser(condValueRaw) : condValueRaw; - var evaluator = createFilterComparator2(op, condValueParsed) || op === "reg" && new RegExpEvaluator2(condValueParsed); - if (!evaluator) { - if (true) { - errMsg = makePrintable2('Illegal relational operation: "' + keyRaw + '" in condition:', exprOption); - } - throwError2(errMsg); - } - subCondList.push(evaluator); - } - if (!subCondList.length) { - if (true) { - errMsg = makePrintable2("Relational condition must have at least one operator.", "Illegal condition:", exprOption); - } - throwError2(errMsg); - } - var cond = new RelationalConditionInternal2(); - cond.valueGetterParam = valueGetterParam; - cond.valueParser = valueParser; - cond.getValue = getters.getValue; - cond.subCondList = subCondList; - return cond; - } - function isObjectNotArray2(val) { - return isObject5(val) && !isArrayLike2(val); - } - var ConditionalExpressionParsed2 = ( - /** @class */ - function() { - function ConditionalExpressionParsed3(exprOption, getters) { - this._cond = parseOption2(exprOption, getters); - } - ConditionalExpressionParsed3.prototype.evaluate = function() { - return this._cond.evaluate(); - }; - return ConditionalExpressionParsed3; - }() - ); - function parseConditionalExpression2(exprOption, getters) { - return new ConditionalExpressionParsed2(exprOption, getters); - } - var filterTransform2 = { - type: "echarts:filter", - // PENDING: enhance to filter by index rather than create new data - transform: function(params) { - var upstream = params.upstream; - var rawItem; - var condition = parseConditionalExpression2(params.config, { - valueGetterAttrMap: createHashMap2({ - dimension: true - }), - prepareGetValue: function(exprOption) { - var errMsg = ""; - var dimLoose = exprOption.dimension; - if (!hasOwn2(exprOption, "dimension")) { - if (true) { - errMsg = makePrintable2('Relation condition must has prop "dimension" specified.', "Illegal condition:", exprOption); - } - throwError2(errMsg); - } - var dimInfo = upstream.getDimensionInfo(dimLoose); - if (!dimInfo) { - if (true) { - errMsg = makePrintable2("Can not find dimension info via: " + dimLoose + ".\n", "Existing dimensions: ", upstream.cloneAllDimensionInfo(), ".\n", "Illegal condition:", exprOption, ".\n"); - } - throwError2(errMsg); - } - return { - dimIdx: dimInfo.index - }; - }, - getValue: function(param) { - return upstream.retrieveValueFromItem(rawItem, param.dimIdx); - } - }); - var resultData = []; - for (var i2 = 0, len3 = upstream.count(); i2 < len3; i2++) { - rawItem = upstream.getRawDataItem(i2); - if (condition.evaluate()) { - resultData.push(rawItem); - } - } - return { - data: resultData - }; - } - }; - var sampleLog2 = ""; - if (true) { - sampleLog2 = ["Valid config is like:", '{ dimension: "age", order: "asc" }', 'or [{ dimension: "age", order: "asc"], { dimension: "date", order: "desc" }]'].join(" "); - } - var sortTransform2 = { - type: "echarts:sort", - transform: function(params) { - var upstream = params.upstream; - var config2 = params.config; - var errMsg = ""; - var orderExprList = normalizeToArray2(config2); - if (!orderExprList.length) { - if (true) { - errMsg = "Empty `config` in sort transform."; - } - throwError2(errMsg); - } - var orderDefList = []; - each17(orderExprList, function(orderExpr) { - var dimLoose = orderExpr.dimension; - var order = orderExpr.order; - var parserName = orderExpr.parser; - var incomparable = orderExpr.incomparable; - if (dimLoose == null) { - if (true) { - errMsg = 'Sort transform config must has "dimension" specified.' + sampleLog2; - } - throwError2(errMsg); - } - if (order !== "asc" && order !== "desc") { - if (true) { - errMsg = 'Sort transform config must has "order" specified.' + sampleLog2; - } - throwError2(errMsg); - } - if (incomparable && incomparable !== "min" && incomparable !== "max") { - var errMsg_1 = ""; - if (true) { - errMsg_1 = 'incomparable must be "min" or "max" rather than "' + incomparable + '".'; - } - throwError2(errMsg_1); - } - if (order !== "asc" && order !== "desc") { - var errMsg_2 = ""; - if (true) { - errMsg_2 = 'order must be "asc" or "desc" rather than "' + order + '".'; - } - throwError2(errMsg_2); - } - var dimInfo = upstream.getDimensionInfo(dimLoose); - if (!dimInfo) { - if (true) { - errMsg = makePrintable2("Can not find dimension info via: " + dimLoose + ".\n", "Existing dimensions: ", upstream.cloneAllDimensionInfo(), ".\n", "Illegal config:", orderExpr, ".\n"); - } - throwError2(errMsg); - } - var parser = parserName ? getRawValueParser2(parserName) : null; - if (parserName && !parser) { - if (true) { - errMsg = makePrintable2("Invalid parser name " + parserName + ".\n", "Illegal config:", orderExpr, ".\n"); - } - throwError2(errMsg); - } - orderDefList.push({ - dimIdx: dimInfo.index, - parser, - comparator: new SortOrderComparator2(order, incomparable) - }); - }); - var sourceFormat = upstream.sourceFormat; - if (sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS2 && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS2) { - if (true) { - errMsg = 'sourceFormat "' + sourceFormat + '" is not supported yet'; - } - throwError2(errMsg); - } - var resultData = []; - for (var i2 = 0, len3 = upstream.count(); i2 < len3; i2++) { - resultData.push(upstream.getRawDataItem(i2)); - } - resultData.sort(function(item0, item1) { - for (var i3 = 0; i3 < orderDefList.length; i3++) { - var orderDef = orderDefList[i3]; - var val0 = upstream.retrieveValueFromItem(item0, orderDef.dimIdx); - var val1 = upstream.retrieveValueFromItem(item1, orderDef.dimIdx); - if (orderDef.parser) { - val0 = orderDef.parser(val0); - val1 = orderDef.parser(val1); - } - var result = orderDef.comparator.evaluate(val0, val1); - if (result !== 0) { - return result; - } - } - return 0; - }); - return { - data: resultData - }; - } - }; - function install$R(registers) { - registers.registerTransform(filterTransform2); - registers.registerTransform(sortTransform2); - } - var DatasetModel2 = ( - /** @class */ - function(_super) { - __extends2(DatasetModel3, _super); - function DatasetModel3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "dataset"; - return _this; - } - DatasetModel3.prototype.init = function(option, parentModel, ecModel) { - _super.prototype.init.call(this, option, parentModel, ecModel); - this._sourceManager = new SourceManager2(this); - disableTransformOptionMerge2(this); - }; - DatasetModel3.prototype.mergeOption = function(newOption, ecModel) { - _super.prototype.mergeOption.call(this, newOption, ecModel); - disableTransformOptionMerge2(this); - }; - DatasetModel3.prototype.optionUpdated = function() { - this._sourceManager.dirty(); - }; - DatasetModel3.prototype.getSourceManager = function() { - return this._sourceManager; - }; - DatasetModel3.type = "dataset"; - DatasetModel3.defaultOption = { - seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN2 - }; - return DatasetModel3; - }(ComponentModel2) - ); - var DatasetView2 = ( - /** @class */ - function(_super) { - __extends2(DatasetView3, _super); - function DatasetView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "dataset"; - return _this; - } - DatasetView3.type = "dataset"; - return DatasetView3; - }(ComponentView2) - ); - function install$S(registers) { - registers.registerComponentModel(DatasetModel2); - registers.registerComponentView(DatasetView2); - } - var CMD$4 = PathProxy2.CMD; - function aroundEqual2(a, b) { - return Math.abs(a - b) < 1e-5; - } - function pathToBezierCurves2(path) { - var data = path.data; - var len3 = path.len(); - var bezierArrayGroups = []; - var currentSubpath; - var xi = 0; - var yi = 0; - var x0 = 0; - var y0 = 0; - function createNewSubpath(x, y) { - if (currentSubpath && currentSubpath.length > 2) { - bezierArrayGroups.push(currentSubpath); - } - currentSubpath = [x, y]; - } - function addLine(x02, y02, x12, y12) { - if (!(aroundEqual2(x02, x12) && aroundEqual2(y02, y12))) { - currentSubpath.push(x02, y02, x12, y12, x12, y12); - } - } - function addArc(startAngle2, endAngle2, cx2, cy2, rx2, ry2) { - var delta = Math.abs(endAngle2 - startAngle2); - var len4 = Math.tan(delta / 4) * 4 / 3; - var dir4 = endAngle2 < startAngle2 ? -1 : 1; - var c1 = Math.cos(startAngle2); - var s1 = Math.sin(startAngle2); - var c2 = Math.cos(endAngle2); - var s2 = Math.sin(endAngle2); - var x12 = c1 * rx2 + cx2; - var y12 = s1 * ry2 + cy2; - var x4 = c2 * rx2 + cx2; - var y4 = s2 * ry2 + cy2; - var hx = rx2 * len4 * dir4; - var hy = ry2 * len4 * dir4; - currentSubpath.push(x12 - hx * s1, y12 + hy * c1, x4 + hx * s2, y4 - hy * c2, x4, y4); - } - var x1; - var y1; - var x2; - var y2; - for (var i2 = 0; i2 < len3; ) { - var cmd = data[i2++]; - var isFirst = i2 === 1; - if (isFirst) { - xi = data[i2]; - yi = data[i2 + 1]; - x0 = xi; - y0 = yi; - if (cmd === CMD$4.L || cmd === CMD$4.C || cmd === CMD$4.Q) { - currentSubpath = [x0, y0]; - } - } - switch (cmd) { - case CMD$4.M: - xi = x0 = data[i2++]; - yi = y0 = data[i2++]; - createNewSubpath(x0, y0); - break; - case CMD$4.L: - x1 = data[i2++]; - y1 = data[i2++]; - addLine(xi, yi, x1, y1); - xi = x1; - yi = y1; - break; - case CMD$4.C: - currentSubpath.push(data[i2++], data[i2++], data[i2++], data[i2++], xi = data[i2++], yi = data[i2++]); - break; - case CMD$4.Q: - x1 = data[i2++]; - y1 = data[i2++]; - x2 = data[i2++]; - y2 = data[i2++]; - currentSubpath.push(xi + 2 / 3 * (x1 - xi), yi + 2 / 3 * (y1 - yi), x2 + 2 / 3 * (x1 - x2), y2 + 2 / 3 * (y1 - y2), x2, y2); - xi = x2; - yi = y2; - break; - case CMD$4.A: - var cx = data[i2++]; - var cy = data[i2++]; - var rx = data[i2++]; - var ry = data[i2++]; - var startAngle = data[i2++]; - var endAngle = data[i2++] + startAngle; - i2 += 1; - var anticlockwise = !data[i2++]; - x1 = Math.cos(startAngle) * rx + cx; - y1 = Math.sin(startAngle) * ry + cy; - if (isFirst) { - x0 = x1; - y0 = y1; - createNewSubpath(x0, y0); - } else { - addLine(xi, yi, x1, y1); - } - xi = Math.cos(endAngle) * rx + cx; - yi = Math.sin(endAngle) * ry + cy; - var step = (anticlockwise ? -1 : 1) * Math.PI / 2; - for (var angle = startAngle; anticlockwise ? angle > endAngle : angle < endAngle; angle += step) { - var nextAngle = anticlockwise ? Math.max(angle + step, endAngle) : Math.min(angle + step, endAngle); - addArc(angle, nextAngle, cx, cy, rx, ry); - } - break; - case CMD$4.R: - x0 = xi = data[i2++]; - y0 = yi = data[i2++]; - x1 = x0 + data[i2++]; - y1 = y0 + data[i2++]; - createNewSubpath(x1, y0); - addLine(x1, y0, x1, y1); - addLine(x1, y1, x0, y1); - addLine(x0, y1, x0, y0); - addLine(x0, y0, x1, y0); - break; - case CMD$4.Z: - currentSubpath && addLine(xi, yi, x0, y0); - xi = x0; - yi = y0; - break; - } - } - if (currentSubpath && currentSubpath.length > 2) { - bezierArrayGroups.push(currentSubpath); - } - return bezierArrayGroups; - } - function adpativeBezier2(x0, y0, x1, y1, x2, y2, x3, y3, out3, scale5) { - if (aroundEqual2(x0, x1) && aroundEqual2(y0, y1) && aroundEqual2(x2, x3) && aroundEqual2(y2, y3)) { - out3.push(x3, y3); - return; - } - var PIXEL_DISTANCE = 2 / scale5; - var PIXEL_DISTANCE_SQR = PIXEL_DISTANCE * PIXEL_DISTANCE; - var dx = x3 - x0; - var dy = y3 - y0; - var d = Math.sqrt(dx * dx + dy * dy); - dx /= d; - dy /= d; - var dx1 = x1 - x0; - var dy1 = y1 - y0; - var dx2 = x2 - x3; - var dy2 = y2 - y3; - var cp1LenSqr = dx1 * dx1 + dy1 * dy1; - var cp2LenSqr = dx2 * dx2 + dy2 * dy2; - if (cp1LenSqr < PIXEL_DISTANCE_SQR && cp2LenSqr < PIXEL_DISTANCE_SQR) { - out3.push(x3, y3); - return; - } - var projLen1 = dx * dx1 + dy * dy1; - var projLen2 = -dx * dx2 - dy * dy2; - var d1Sqr = cp1LenSqr - projLen1 * projLen1; - var d2Sqr = cp2LenSqr - projLen2 * projLen2; - if (d1Sqr < PIXEL_DISTANCE_SQR && projLen1 >= 0 && d2Sqr < PIXEL_DISTANCE_SQR && projLen2 >= 0) { - out3.push(x3, y3); - return; - } - var tmpSegX = []; - var tmpSegY = []; - cubicSubdivide2(x0, x1, x2, x3, 0.5, tmpSegX); - cubicSubdivide2(y0, y1, y2, y3, 0.5, tmpSegY); - adpativeBezier2(tmpSegX[0], tmpSegY[0], tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], tmpSegX[3], tmpSegY[3], out3, scale5); - adpativeBezier2(tmpSegX[4], tmpSegY[4], tmpSegX[5], tmpSegY[5], tmpSegX[6], tmpSegY[6], tmpSegX[7], tmpSegY[7], out3, scale5); - } - function pathToPolygons2(path, scale5) { - var bezierArrayGroups = pathToBezierCurves2(path); - var polygons = []; - scale5 = scale5 || 1; - for (var i2 = 0; i2 < bezierArrayGroups.length; i2++) { - var beziers = bezierArrayGroups[i2]; - var polygon = []; - var x0 = beziers[0]; - var y0 = beziers[1]; - polygon.push(x0, y0); - for (var k2 = 2; k2 < beziers.length; ) { - var x1 = beziers[k2++]; - var y1 = beziers[k2++]; - var x2 = beziers[k2++]; - var y2 = beziers[k2++]; - var x3 = beziers[k2++]; - var y3 = beziers[k2++]; - adpativeBezier2(x0, y0, x1, y1, x2, y2, x3, y3, polygon, scale5); - x0 = x3; - y0 = y3; - } - polygons.push(polygon); - } - return polygons; - } - function getDividingGrids2(dimSize, rowDim, count3) { - var rowSize = dimSize[rowDim]; - var columnSize = dimSize[1 - rowDim]; - var ratio = Math.abs(rowSize / columnSize); - var rowCount = Math.ceil(Math.sqrt(ratio * count3)); - var columnCount = Math.floor(count3 / rowCount); - if (columnCount === 0) { - columnCount = 1; - rowCount = count3; - } - var grids = []; - for (var i2 = 0; i2 < rowCount; i2++) { - grids.push(columnCount); - } - var currentCount = rowCount * columnCount; - var remained = count3 - currentCount; - if (remained > 0) { - for (var i2 = 0; i2 < remained; i2++) { - grids[i2 % rowCount] += 1; - } - } - return grids; - } - function divideSector2(sectorShape, count3, outShapes) { - var r0 = sectorShape.r0; - var r = sectorShape.r; - var startAngle = sectorShape.startAngle; - var endAngle = sectorShape.endAngle; - var angle = Math.abs(endAngle - startAngle); - var arcLen = angle * r; - var deltaR = r - r0; - var isAngleRow = arcLen > Math.abs(deltaR); - var grids = getDividingGrids2([arcLen, deltaR], isAngleRow ? 0 : 1, count3); - var rowSize = (isAngleRow ? angle : deltaR) / grids.length; - for (var row = 0; row < grids.length; row++) { - var columnSize = (isAngleRow ? deltaR : angle) / grids[row]; - for (var column = 0; column < grids[row]; column++) { - var newShape = {}; - if (isAngleRow) { - newShape.startAngle = startAngle + rowSize * row; - newShape.endAngle = startAngle + rowSize * (row + 1); - newShape.r0 = r0 + columnSize * column; - newShape.r = r0 + columnSize * (column + 1); - } else { - newShape.startAngle = startAngle + columnSize * column; - newShape.endAngle = startAngle + columnSize * (column + 1); - newShape.r0 = r0 + rowSize * row; - newShape.r = r0 + rowSize * (row + 1); - } - newShape.clockwise = sectorShape.clockwise; - newShape.cx = sectorShape.cx; - newShape.cy = sectorShape.cy; - outShapes.push(newShape); - } - } - } - function divideRect2(rectShape, count3, outShapes) { - var width = rectShape.width; - var height = rectShape.height; - var isHorizontalRow = width > height; - var grids = getDividingGrids2([width, height], isHorizontalRow ? 0 : 1, count3); - var rowSizeDim = isHorizontalRow ? "width" : "height"; - var columnSizeDim = isHorizontalRow ? "height" : "width"; - var rowDim = isHorizontalRow ? "x" : "y"; - var columnDim = isHorizontalRow ? "y" : "x"; - var rowSize = rectShape[rowSizeDim] / grids.length; - for (var row = 0; row < grids.length; row++) { - var columnSize = rectShape[columnSizeDim] / grids[row]; - for (var column = 0; column < grids[row]; column++) { - var newShape = {}; - newShape[rowDim] = row * rowSize; - newShape[columnDim] = column * columnSize; - newShape[rowSizeDim] = rowSize; - newShape[columnSizeDim] = columnSize; - newShape.x += rectShape.x; - newShape.y += rectShape.y; - outShapes.push(newShape); - } - } - } - function crossProduct2d$1(x1, y1, x2, y2) { - return x1 * y2 - x2 * y1; - } - function lineLineIntersect$1(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) { - var mx = a2x - a1x; - var my = a2y - a1y; - var nx = b2x - b1x; - var ny = b2y - b1y; - var nmCrossProduct = crossProduct2d$1(nx, ny, mx, my); - if (Math.abs(nmCrossProduct) < 1e-6) { - return null; - } - var b1a1x = a1x - b1x; - var b1a1y = a1y - b1y; - var p = crossProduct2d$1(b1a1x, b1a1y, nx, ny) / nmCrossProduct; - if (p < 0 || p > 1) { - return null; - } - return new Point2(p * mx + a1x, p * my + a1y); - } - function projPtOnLine2(pt, lineA, lineB) { - var dir4 = new Point2(); - Point2.sub(dir4, lineB, lineA); - dir4.normalize(); - var dir23 = new Point2(); - Point2.sub(dir23, pt, lineA); - var len3 = dir23.dot(dir4); - return len3; - } - function addToPoly2(poly, pt) { - var last = poly[poly.length - 1]; - if (last && last[0] === pt[0] && last[1] === pt[1]) { - return; - } - poly.push(pt); - } - function splitPolygonByLine2(points5, lineA, lineB) { - var len3 = points5.length; - var intersections = []; - for (var i2 = 0; i2 < len3; i2++) { - var p0 = points5[i2]; - var p1 = points5[(i2 + 1) % len3]; - var intersectionPt = lineLineIntersect$1(p0[0], p0[1], p1[0], p1[1], lineA.x, lineA.y, lineB.x, lineB.y); - if (intersectionPt) { - intersections.push({ - projPt: projPtOnLine2(intersectionPt, lineA, lineB), - pt: intersectionPt, - idx: i2 - }); - } - } - if (intersections.length < 2) { - return [{ points: points5 }, { points: points5 }]; - } - intersections.sort(function(a, b) { - return a.projPt - b.projPt; - }); - var splitPt0 = intersections[0]; - var splitPt1 = intersections[intersections.length - 1]; - if (splitPt1.idx < splitPt0.idx) { - var tmp = splitPt0; - splitPt0 = splitPt1; - splitPt1 = tmp; - } - var splitPt0Arr = [splitPt0.pt.x, splitPt0.pt.y]; - var splitPt1Arr = [splitPt1.pt.x, splitPt1.pt.y]; - var newPolyA = [splitPt0Arr]; - var newPolyB = [splitPt1Arr]; - for (var i2 = splitPt0.idx + 1; i2 <= splitPt1.idx; i2++) { - addToPoly2(newPolyA, points5[i2].slice()); - } - addToPoly2(newPolyA, splitPt1Arr); - addToPoly2(newPolyA, splitPt0Arr); - for (var i2 = splitPt1.idx + 1; i2 <= splitPt0.idx + len3; i2++) { - addToPoly2(newPolyB, points5[i2 % len3].slice()); - } - addToPoly2(newPolyB, splitPt0Arr); - addToPoly2(newPolyB, splitPt1Arr); - return [{ - points: newPolyA - }, { - points: newPolyB - }]; - } - function binaryDividePolygon2(polygonShape) { - var points5 = polygonShape.points; - var min5 = []; - var max5 = []; - fromPoints2(points5, min5, max5); - var boundingRect = new BoundingRect2(min5[0], min5[1], max5[0] - min5[0], max5[1] - min5[1]); - var width = boundingRect.width; - var height = boundingRect.height; - var x = boundingRect.x; - var y = boundingRect.y; - var pt03 = new Point2(); - var pt13 = new Point2(); - if (width > height) { - pt03.x = pt13.x = x + width / 2; - pt03.y = y; - pt13.y = y + height; - } else { - pt03.y = pt13.y = y + height / 2; - pt03.x = x; - pt13.x = x + width; - } - return splitPolygonByLine2(points5, pt03, pt13); - } - function binaryDivideRecursive2(divider, shape, count3, out3) { - if (count3 === 1) { - out3.push(shape); - } else { - var mid = Math.floor(count3 / 2); - var sub3 = divider(shape); - binaryDivideRecursive2(divider, sub3[0], mid, out3); - binaryDivideRecursive2(divider, sub3[1], count3 - mid, out3); - } - return out3; - } - function clone$4(path, count3) { - var paths = []; - for (var i2 = 0; i2 < count3; i2++) { - paths.push(clonePath2(path)); - } - return paths; - } - function copyPathProps2(source, target) { - target.setStyle(source.style); - target.z = source.z; - target.z2 = source.z2; - target.zlevel = source.zlevel; - } - function polygonConvert2(points5) { - var out3 = []; - for (var i2 = 0; i2 < points5.length; ) { - out3.push([points5[i2++], points5[i2++]]); - } - return out3; - } - function split2(path, count3) { - var outShapes = []; - var shape = path.shape; - var OutShapeCtor; - switch (path.type) { - case "rect": - divideRect2(shape, count3, outShapes); - OutShapeCtor = Rect4; - break; - case "sector": - divideSector2(shape, count3, outShapes); - OutShapeCtor = Sector2; - break; - case "circle": - divideSector2({ - r0: 0, - r: shape.r, - startAngle: 0, - endAngle: Math.PI * 2, - cx: shape.cx, - cy: shape.cy - }, count3, outShapes); - OutShapeCtor = Sector2; - break; - default: - var m3 = path.getComputedTransform(); - var scale5 = m3 ? Math.sqrt(Math.max(m3[0] * m3[0] + m3[1] * m3[1], m3[2] * m3[2] + m3[3] * m3[3])) : 1; - var polygons = map3(pathToPolygons2(path.getUpdatedPathProxy(), scale5), function(poly) { - return polygonConvert2(poly); - }); - var polygonCount = polygons.length; - if (polygonCount === 0) { - binaryDivideRecursive2(binaryDividePolygon2, { - points: polygons[0] - }, count3, outShapes); - } else if (polygonCount === count3) { - for (var i2 = 0; i2 < polygonCount; i2++) { - outShapes.push({ - points: polygons[i2] - }); - } - } else { - var totalArea_1 = 0; - var items = map3(polygons, function(poly) { - var min5 = []; - var max5 = []; - fromPoints2(poly, min5, max5); - var area = (max5[1] - min5[1]) * (max5[0] - min5[0]); - totalArea_1 += area; - return { poly, area }; - }); - items.sort(function(a, b) { - return b.area - a.area; - }); - var left = count3; - for (var i2 = 0; i2 < polygonCount; i2++) { - var item = items[i2]; - if (left <= 0) { - break; - } - var selfCount = i2 === polygonCount - 1 ? left : Math.ceil(item.area / totalArea_1 * count3); - if (selfCount < 0) { - continue; - } - binaryDivideRecursive2(binaryDividePolygon2, { - points: item.poly - }, selfCount, outShapes); - left -= selfCount; - } - } - OutShapeCtor = Polygon2; - break; - } - if (!OutShapeCtor) { - return clone$4(path, count3); - } - var out3 = []; - for (var i2 = 0; i2 < outShapes.length; i2++) { - var subPath = new OutShapeCtor(); - subPath.setShape(outShapes[i2]); - copyPathProps2(path, subPath); - out3.push(subPath); - } - return out3; - } - function alignSubpath2(subpath1, subpath2) { - var len1 = subpath1.length; - var len22 = subpath2.length; - if (len1 === len22) { - return [subpath1, subpath2]; - } - var tmpSegX = []; - var tmpSegY = []; - var shorterPath = len1 < len22 ? subpath1 : subpath2; - var shorterLen = Math.min(len1, len22); - var diff = Math.abs(len22 - len1) / 6; - var shorterBezierCount = (shorterLen - 2) / 6; - var eachCurveSubDivCount = Math.ceil(diff / shorterBezierCount) + 1; - var newSubpath = [shorterPath[0], shorterPath[1]]; - var remained = diff; - for (var i2 = 2; i2 < shorterLen; ) { - var x0 = shorterPath[i2 - 2]; - var y0 = shorterPath[i2 - 1]; - var x1 = shorterPath[i2++]; - var y1 = shorterPath[i2++]; - var x2 = shorterPath[i2++]; - var y2 = shorterPath[i2++]; - var x3 = shorterPath[i2++]; - var y3 = shorterPath[i2++]; - if (remained <= 0) { - newSubpath.push(x1, y1, x2, y2, x3, y3); - continue; - } - var actualSubDivCount = Math.min(remained, eachCurveSubDivCount - 1) + 1; - for (var k2 = 1; k2 <= actualSubDivCount; k2++) { - var p = k2 / actualSubDivCount; - cubicSubdivide2(x0, x1, x2, x3, p, tmpSegX); - cubicSubdivide2(y0, y1, y2, y3, p, tmpSegY); - x0 = tmpSegX[3]; - y0 = tmpSegY[3]; - newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0); - x1 = tmpSegX[5]; - y1 = tmpSegY[5]; - x2 = tmpSegX[6]; - y2 = tmpSegY[6]; - } - remained -= actualSubDivCount - 1; - } - return shorterPath === subpath1 ? [newSubpath, subpath2] : [subpath1, newSubpath]; - } - function createSubpath2(lastSubpathSubpath, otherSubpath) { - var len3 = lastSubpathSubpath.length; - var lastX = lastSubpathSubpath[len3 - 2]; - var lastY = lastSubpathSubpath[len3 - 1]; - var newSubpath = []; - for (var i2 = 0; i2 < otherSubpath.length; ) { - newSubpath[i2++] = lastX; - newSubpath[i2++] = lastY; - } - return newSubpath; - } - function alignBezierCurves2(array1, array2) { - var _a3; - var lastSubpath1; - var lastSubpath2; - var newArray1 = []; - var newArray2 = []; - for (var i2 = 0; i2 < Math.max(array1.length, array2.length); i2++) { - var subpath1 = array1[i2]; - var subpath2 = array2[i2]; - var newSubpath1 = void 0; - var newSubpath2 = void 0; - if (!subpath1) { - newSubpath1 = createSubpath2(lastSubpath1 || subpath2, subpath2); - newSubpath2 = subpath2; - } else if (!subpath2) { - newSubpath2 = createSubpath2(lastSubpath2 || subpath1, subpath1); - newSubpath1 = subpath1; - } else { - _a3 = alignSubpath2(subpath1, subpath2), newSubpath1 = _a3[0], newSubpath2 = _a3[1]; - lastSubpath1 = newSubpath1; - lastSubpath2 = newSubpath2; - } - newArray1.push(newSubpath1); - newArray2.push(newSubpath2); - } - return [newArray1, newArray2]; - } - function centroid$1(array) { - var signedArea = 0; - var cx = 0; - var cy = 0; - var len3 = array.length; - for (var i2 = 0, j = len3 - 2; i2 < len3; j = i2, i2 += 2) { - var x0 = array[j]; - var y0 = array[j + 1]; - var x1 = array[i2]; - var y1 = array[i2 + 1]; - var a = x0 * y1 - x1 * y0; - signedArea += a; - cx += (x0 + x1) * a; - cy += (y0 + y1) * a; - } - if (signedArea === 0) { - return [array[0] || 0, array[1] || 0]; - } - return [cx / signedArea / 3, cy / signedArea / 3, signedArea]; - } - function findBestRingOffset2(fromSubBeziers, toSubBeziers, fromCp, toCp) { - var bezierCount = (fromSubBeziers.length - 2) / 6; - var bestScore = Infinity; - var bestOffset = 0; - var len3 = fromSubBeziers.length; - var len22 = len3 - 2; - for (var offset3 = 0; offset3 < bezierCount; offset3++) { - var cursorOffset = offset3 * 6; - var score = 0; - for (var k2 = 0; k2 < len3; k2 += 2) { - var idx = k2 === 0 ? cursorOffset : (cursorOffset + k2 - 2) % len22 + 2; - var x0 = fromSubBeziers[idx] - fromCp[0]; - var y0 = fromSubBeziers[idx + 1] - fromCp[1]; - var x1 = toSubBeziers[k2] - toCp[0]; - var y1 = toSubBeziers[k2 + 1] - toCp[1]; - var dx = x1 - x0; - var dy = y1 - y0; - score += dx * dx + dy * dy; - } - if (score < bestScore) { - bestScore = score; - bestOffset = offset3; - } - } - return bestOffset; - } - function reverse2(array) { - var newArr = []; - var len3 = array.length; - for (var i2 = 0; i2 < len3; i2 += 2) { - newArr[i2] = array[len3 - i2 - 2]; - newArr[i2 + 1] = array[len3 - i2 - 1]; - } - return newArr; - } - function findBestMorphingRotation2(fromArr, toArr3, searchAngleIteration, searchAngleRange) { - var result = []; - var fromNeedsReverse; - for (var i2 = 0; i2 < fromArr.length; i2++) { - var fromSubpathBezier = fromArr[i2]; - var toSubpathBezier = toArr3[i2]; - var fromCp = centroid$1(fromSubpathBezier); - var toCp = centroid$1(toSubpathBezier); - if (fromNeedsReverse == null) { - fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0; - } - var newFromSubpathBezier = []; - var newToSubpathBezier = []; - var bestAngle = 0; - var bestScore = Infinity; - var tmpArr3 = []; - var len3 = fromSubpathBezier.length; - if (fromNeedsReverse) { - fromSubpathBezier = reverse2(fromSubpathBezier); - } - var offset3 = findBestRingOffset2(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6; - var len22 = len3 - 2; - for (var k2 = 0; k2 < len22; k2 += 2) { - var idx = (offset3 + k2) % len22 + 2; - newFromSubpathBezier[k2 + 2] = fromSubpathBezier[idx] - fromCp[0]; - newFromSubpathBezier[k2 + 3] = fromSubpathBezier[idx + 1] - fromCp[1]; - } - newFromSubpathBezier[0] = fromSubpathBezier[offset3] - fromCp[0]; - newFromSubpathBezier[1] = fromSubpathBezier[offset3 + 1] - fromCp[1]; - if (searchAngleIteration > 0) { - var step = searchAngleRange / searchAngleIteration; - for (var angle = -searchAngleRange / 2; angle <= searchAngleRange / 2; angle += step) { - var sa = Math.sin(angle); - var ca = Math.cos(angle); - var score = 0; - for (var k2 = 0; k2 < fromSubpathBezier.length; k2 += 2) { - var x0 = newFromSubpathBezier[k2]; - var y0 = newFromSubpathBezier[k2 + 1]; - var x1 = toSubpathBezier[k2] - toCp[0]; - var y1 = toSubpathBezier[k2 + 1] - toCp[1]; - var newX1 = x1 * ca - y1 * sa; - var newY1 = x1 * sa + y1 * ca; - tmpArr3[k2] = newX1; - tmpArr3[k2 + 1] = newY1; - var dx = newX1 - x0; - var dy = newY1 - y0; - score += dx * dx + dy * dy; - } - if (score < bestScore) { - bestScore = score; - bestAngle = angle; - for (var m3 = 0; m3 < tmpArr3.length; m3++) { - newToSubpathBezier[m3] = tmpArr3[m3]; - } - } - } - } else { - for (var i_1 = 0; i_1 < len3; i_1 += 2) { - newToSubpathBezier[i_1] = toSubpathBezier[i_1] - toCp[0]; - newToSubpathBezier[i_1 + 1] = toSubpathBezier[i_1 + 1] - toCp[1]; - } - } - result.push({ - from: newFromSubpathBezier, - to: newToSubpathBezier, - fromCp, - toCp, - rotation: -bestAngle - }); - } - return result; - } - function isCombineMorphing2(path) { - return path.__isCombineMorphing; - } - var SAVED_METHOD_PREFIX2 = "__mOriginal_"; - function saveAndModifyMethod2(obj, methodName, modifiers) { - var savedMethodName = SAVED_METHOD_PREFIX2 + methodName; - var originalMethod = obj[savedMethodName] || obj[methodName]; - if (!obj[savedMethodName]) { - obj[savedMethodName] = obj[methodName]; - } - var replace = modifiers.replace; - var after = modifiers.after; - var before = modifiers.before; - obj[methodName] = function() { - var args = arguments; - var res; - before && before.apply(this, args); - if (replace) { - res = replace.apply(this, args); - } else { - res = originalMethod.apply(this, args); - } - after && after.apply(this, args); - return res; - }; - } - function restoreMethod2(obj, methodName) { - var savedMethodName = SAVED_METHOD_PREFIX2 + methodName; - if (obj[savedMethodName]) { - obj[methodName] = obj[savedMethodName]; - obj[savedMethodName] = null; - } - } - function applyTransformOnBeziers2(bezierCurves, mm) { - for (var i2 = 0; i2 < bezierCurves.length; i2++) { - var subBeziers = bezierCurves[i2]; - for (var k2 = 0; k2 < subBeziers.length; ) { - var x = subBeziers[k2]; - var y = subBeziers[k2 + 1]; - subBeziers[k2++] = mm[0] * x + mm[2] * y + mm[4]; - subBeziers[k2++] = mm[1] * x + mm[3] * y + mm[5]; - } - } - } - function prepareMorphPath2(fromPath, toPath) { - var fromPathProxy = fromPath.getUpdatedPathProxy(); - var toPathProxy = toPath.getUpdatedPathProxy(); - var _a3 = alignBezierCurves2(pathToBezierCurves2(fromPathProxy), pathToBezierCurves2(toPathProxy)), fromBezierCurves = _a3[0], toBezierCurves = _a3[1]; - var fromPathTransform = fromPath.getComputedTransform(); - var toPathTransform = toPath.getComputedTransform(); - function updateIdentityTransform() { - this.transform = null; - } - fromPathTransform && applyTransformOnBeziers2(fromBezierCurves, fromPathTransform); - toPathTransform && applyTransformOnBeziers2(toBezierCurves, toPathTransform); - saveAndModifyMethod2(toPath, "updateTransform", { replace: updateIdentityTransform }); - toPath.transform = null; - var morphingData = findBestMorphingRotation2(fromBezierCurves, toBezierCurves, 10, Math.PI); - var tmpArr3 = []; - saveAndModifyMethod2(toPath, "buildPath", { replace: function(path) { - var t = toPath.__morphT; - var onet = 1 - t; - var newCp = []; - for (var i2 = 0; i2 < morphingData.length; i2++) { - var item = morphingData[i2]; - var from = item.from; - var to = item.to; - var angle = item.rotation * t; - var fromCp = item.fromCp; - var toCp = item.toCp; - var sa = Math.sin(angle); - var ca = Math.cos(angle); - lerp3(newCp, fromCp, toCp, t); - for (var m3 = 0; m3 < from.length; m3 += 2) { - var x0_1 = from[m3]; - var y0_1 = from[m3 + 1]; - var x1 = to[m3]; - var y1 = to[m3 + 1]; - var x = x0_1 * onet + x1 * t; - var y = y0_1 * onet + y1 * t; - tmpArr3[m3] = x * ca - y * sa + newCp[0]; - tmpArr3[m3 + 1] = x * sa + y * ca + newCp[1]; - } - var x0 = tmpArr3[0]; - var y0 = tmpArr3[1]; - path.moveTo(x0, y0); - for (var m3 = 2; m3 < from.length; ) { - var x1 = tmpArr3[m3++]; - var y1 = tmpArr3[m3++]; - var x2 = tmpArr3[m3++]; - var y2 = tmpArr3[m3++]; - var x3 = tmpArr3[m3++]; - var y3 = tmpArr3[m3++]; - if (x0 === x1 && y0 === y1 && x2 === x3 && y2 === y3) { - path.lineTo(x3, y3); - } else { - path.bezierCurveTo(x1, y1, x2, y2, x3, y3); - } - x0 = x3; - y0 = y3; - } - } - } }); - } - function morphPath2(fromPath, toPath, animationOpts) { - if (!fromPath || !toPath) { - return toPath; - } - var oldDone = animationOpts.done; - var oldDuring = animationOpts.during; - prepareMorphPath2(fromPath, toPath); - toPath.__morphT = 0; - function restoreToPath() { - restoreMethod2(toPath, "buildPath"); - restoreMethod2(toPath, "updateTransform"); - toPath.__morphT = -1; - toPath.createPathProxy(); - toPath.dirtyShape(); - } - toPath.animateTo({ - __morphT: 1 - }, defaults2({ - during: function(p) { - toPath.dirtyShape(); - oldDuring && oldDuring(p); - }, - done: function() { - restoreToPath(); - oldDone && oldDone(); - } - }, animationOpts)); - return toPath; - } - function hilbert2(x, y, minX, minY, maxX, maxY) { - var bits = 16; - x = maxX === minX ? 0 : Math.round(32767 * (x - minX) / (maxX - minX)); - y = maxY === minY ? 0 : Math.round(32767 * (y - minY) / (maxY - minY)); - var d = 0; - var tmp; - for (var s = (1 << bits) / 2; s > 0; s /= 2) { - var rx = 0; - var ry = 0; - if ((x & s) > 0) { - rx = 1; - } - if ((y & s) > 0) { - ry = 1; - } - d += s * s * (3 * rx ^ ry); - if (ry === 0) { - if (rx === 1) { - x = s - 1 - x; - y = s - 1 - y; - } - tmp = x; - x = y; - y = tmp; - } - } - return d; - } - function sortPaths2(pathList) { - var xMin = Infinity; - var yMin = Infinity; - var xMax = -Infinity; - var yMax = -Infinity; - var cps = map3(pathList, function(path) { - var rect = path.getBoundingRect(); - var m3 = path.getComputedTransform(); - var x = rect.x + rect.width / 2 + (m3 ? m3[4] : 0); - var y = rect.y + rect.height / 2 + (m3 ? m3[5] : 0); - xMin = Math.min(x, xMin); - yMin = Math.min(y, yMin); - xMax = Math.max(x, xMax); - yMax = Math.max(y, yMax); - return [x, y]; - }); - var items = map3(cps, function(cp, idx) { - return { - cp, - z: hilbert2(cp[0], cp[1], xMin, yMin, xMax, yMax), - path: pathList[idx] - }; - }); - return items.sort(function(a, b) { - return a.z - b.z; - }).map(function(item) { - return item.path; - }); - } - function defaultDividePath2(param) { - return split2(param.path, param.count); - } - function createEmptyReturn2() { - return { - fromIndividuals: [], - toIndividuals: [], - count: 0 - }; - } - function combineMorph2(fromList, toPath, animationOpts) { - var fromPathList = []; - function addFromPath(fromList2) { - for (var i3 = 0; i3 < fromList2.length; i3++) { - var from2 = fromList2[i3]; - if (isCombineMorphing2(from2)) { - addFromPath(from2.childrenRef()); - } else if (from2 instanceof Path2) { - fromPathList.push(from2); - } - } - } - addFromPath(fromList); - var separateCount = fromPathList.length; - if (!separateCount) { - return createEmptyReturn2(); - } - var dividePath = animationOpts.dividePath || defaultDividePath2; - var toSubPathList = dividePath({ - path: toPath, - count: separateCount - }); - if (toSubPathList.length !== separateCount) { - console.error("Invalid morphing: unmatched splitted path"); - return createEmptyReturn2(); - } - fromPathList = sortPaths2(fromPathList); - toSubPathList = sortPaths2(toSubPathList); - var oldDone = animationOpts.done; - var oldDuring = animationOpts.during; - var individualDelay = animationOpts.individualDelay; - var identityTransform = new Transformable2(); - for (var i2 = 0; i2 < separateCount; i2++) { - var from = fromPathList[i2]; - var to = toSubPathList[i2]; - to.parent = toPath; - to.copyTransform(identityTransform); - if (!individualDelay) { - prepareMorphPath2(from, to); - } - } - toPath.__isCombineMorphing = true; - toPath.childrenRef = function() { - return toSubPathList; - }; - function addToSubPathListToZr(zr) { - for (var i3 = 0; i3 < toSubPathList.length; i3++) { - toSubPathList[i3].addSelfToZr(zr); - } - } - saveAndModifyMethod2(toPath, "addSelfToZr", { - after: function(zr) { - addToSubPathListToZr(zr); - } - }); - saveAndModifyMethod2(toPath, "removeSelfFromZr", { - after: function(zr) { - for (var i3 = 0; i3 < toSubPathList.length; i3++) { - toSubPathList[i3].removeSelfFromZr(zr); - } - } - }); - function restoreToPath() { - toPath.__isCombineMorphing = false; - toPath.__morphT = -1; - toPath.childrenRef = null; - restoreMethod2(toPath, "addSelfToZr"); - restoreMethod2(toPath, "removeSelfFromZr"); - } - var toLen = toSubPathList.length; - if (individualDelay) { - var animating_1 = toLen; - var eachDone = function() { - animating_1--; - if (animating_1 === 0) { - restoreToPath(); - oldDone && oldDone(); - } - }; - for (var i2 = 0; i2 < toLen; i2++) { - var indivdualAnimationOpts = individualDelay ? defaults2({ - delay: (animationOpts.delay || 0) + individualDelay(i2, toLen, fromPathList[i2], toSubPathList[i2]), - done: eachDone - }, animationOpts) : animationOpts; - morphPath2(fromPathList[i2], toSubPathList[i2], indivdualAnimationOpts); - } - } else { - toPath.__morphT = 0; - toPath.animateTo({ - __morphT: 1 - }, defaults2({ - during: function(p) { - for (var i3 = 0; i3 < toLen; i3++) { - var child = toSubPathList[i3]; - child.__morphT = toPath.__morphT; - child.dirtyShape(); - } - oldDuring && oldDuring(p); - }, - done: function() { - restoreToPath(); - for (var i3 = 0; i3 < fromList.length; i3++) { - restoreMethod2(fromList[i3], "updateTransform"); - } - oldDone && oldDone(); - } - }, animationOpts)); - } - if (toPath.__zr) { - addToSubPathListToZr(toPath.__zr); - } - return { - fromIndividuals: fromPathList, - toIndividuals: toSubPathList, - count: toLen - }; - } - function separateMorph2(fromPath, toPathList, animationOpts) { - var toLen = toPathList.length; - var fromPathList = []; - var dividePath = animationOpts.dividePath || defaultDividePath2; - function addFromPath(fromList) { - for (var i3 = 0; i3 < fromList.length; i3++) { - var from = fromList[i3]; - if (isCombineMorphing2(from)) { - addFromPath(from.childrenRef()); - } else if (from instanceof Path2) { - fromPathList.push(from); - } - } - } - if (isCombineMorphing2(fromPath)) { - addFromPath(fromPath.childrenRef()); - var fromLen = fromPathList.length; - if (fromLen < toLen) { - var k2 = 0; - for (var i2 = fromLen; i2 < toLen; i2++) { - fromPathList.push(clonePath2(fromPathList[k2++ % fromLen])); - } - } - fromPathList.length = toLen; - } else { - fromPathList = dividePath({ path: fromPath, count: toLen }); - var fromPathTransform = fromPath.getComputedTransform(); - for (var i2 = 0; i2 < fromPathList.length; i2++) { - fromPathList[i2].setLocalTransform(fromPathTransform); - } - if (fromPathList.length !== toLen) { - console.error("Invalid morphing: unmatched splitted path"); - return createEmptyReturn2(); - } - } - fromPathList = sortPaths2(fromPathList); - toPathList = sortPaths2(toPathList); - var individualDelay = animationOpts.individualDelay; - for (var i2 = 0; i2 < toLen; i2++) { - var indivdualAnimationOpts = individualDelay ? defaults2({ - delay: (animationOpts.delay || 0) + individualDelay(i2, toLen, fromPathList[i2], toPathList[i2]) - }, animationOpts) : animationOpts; - morphPath2(fromPathList[i2], toPathList[i2], indivdualAnimationOpts); - } - return { - fromIndividuals: fromPathList, - toIndividuals: toPathList, - count: toPathList.length - }; - } - function isMultiple2(elements) { - return isArray3(elements[0]); - } - function prepareMorphBatches2(one, many) { - var batches = []; - var batchCount = one.length; - for (var i2 = 0; i2 < batchCount; i2++) { - batches.push({ - one: one[i2], - many: [] - }); - } - for (var i2 = 0; i2 < many.length; i2++) { - var len3 = many[i2].length; - var k2 = void 0; - for (k2 = 0; k2 < len3; k2++) { - batches[k2 % batchCount].many.push(many[i2][k2]); - } - } - var off = 0; - for (var i2 = batchCount - 1; i2 >= 0; i2--) { - if (!batches[i2].many.length) { - var moveFrom = batches[off].many; - if (moveFrom.length <= 1) { - if (off) { - off = 0; - } else { - return batches; - } - } - var len3 = moveFrom.length; - var mid = Math.ceil(len3 / 2); - batches[i2].many = moveFrom.slice(mid, len3); - batches[off].many = moveFrom.slice(0, mid); - off++; - } - } - return batches; - } - var pathDividers2 = { - clone: function(params) { - var ret = []; - var approxOpacity = 1 - Math.pow(1 - params.path.style.opacity, 1 / params.count); - for (var i2 = 0; i2 < params.count; i2++) { - var cloned = clonePath2(params.path); - cloned.setStyle("opacity", approxOpacity); - ret.push(cloned); - } - return ret; - }, - // Use the default divider - split: null - }; - function applyMorphAnimation2(from, to, divideShape, seriesModel, dataIndex, animateOtherProps) { - if (!from.length || !to.length) { - return; - } - var updateAnimationCfg = getAnimationConfig2("update", seriesModel, dataIndex); - if (!(updateAnimationCfg && updateAnimationCfg.duration > 0)) { - return; - } - var animationDelay = seriesModel.getModel("universalTransition").get("delay"); - var animationCfg = Object.assign({ - // Need to setToFinal so the further calculation based on the style can be correct. - // Like emphasis color. - setToFinal: true - }, updateAnimationCfg); - var many; - var one; - if (isMultiple2(from)) { - many = from; - one = to; - } - if (isMultiple2(to)) { - many = to; - one = from; - } - function morphOneBatch(batch, fromIsMany2, animateIndex2, animateCount2, forceManyOne) { - var batchMany = batch.many; - var batchOne = batch.one; - if (batchMany.length === 1 && !forceManyOne) { - var batchFrom = fromIsMany2 ? batchMany[0] : batchOne; - var batchTo = fromIsMany2 ? batchOne : batchMany[0]; - if (isCombineMorphing2(batchFrom)) { - morphOneBatch({ - many: [batchFrom], - one: batchTo - }, true, animateIndex2, animateCount2, true); - } else { - var individualAnimationCfg = animationDelay ? defaults2({ - delay: animationDelay(animateIndex2, animateCount2) - }, animationCfg) : animationCfg; - morphPath2(batchFrom, batchTo, individualAnimationCfg); - animateOtherProps(batchFrom, batchTo, batchFrom, batchTo, individualAnimationCfg); - } - } else { - var separateAnimationCfg = defaults2({ - dividePath: pathDividers2[divideShape], - individualDelay: animationDelay && function(idx, count4, fromPath, toPath) { - return animationDelay(idx + animateIndex2, animateCount2); - } - }, animationCfg); - var _a3 = fromIsMany2 ? combineMorph2(batchMany, batchOne, separateAnimationCfg) : separateMorph2(batchOne, batchMany, separateAnimationCfg), fromIndividuals = _a3.fromIndividuals, toIndividuals = _a3.toIndividuals; - var count3 = fromIndividuals.length; - for (var k2 = 0; k2 < count3; k2++) { - var individualAnimationCfg = animationDelay ? defaults2({ - delay: animationDelay(k2, count3) - }, animationCfg) : animationCfg; - animateOtherProps(fromIndividuals[k2], toIndividuals[k2], fromIsMany2 ? batchMany[k2] : batch.one, fromIsMany2 ? batch.one : batchMany[k2], individualAnimationCfg); - } - } - } - var fromIsMany = many ? many === from : from.length > to.length; - var morphBatches = many ? prepareMorphBatches2(one, many) : prepareMorphBatches2(fromIsMany ? to : from, [fromIsMany ? from : to]); - var animateCount = 0; - for (var i2 = 0; i2 < morphBatches.length; i2++) { - animateCount += morphBatches[i2].many.length; - } - var animateIndex = 0; - for (var i2 = 0; i2 < morphBatches.length; i2++) { - morphOneBatch(morphBatches[i2], fromIsMany, animateIndex, animateCount); - animateIndex += morphBatches[i2].many.length; - } - } - function getPathList2(elements) { - if (!elements) { - return []; - } - if (isArray3(elements)) { - var pathList_1 = []; - for (var i2 = 0; i2 < elements.length; i2++) { - pathList_1.push(getPathList2(elements[i2])); - } - return pathList_1; - } - var pathList = []; - elements.traverse(function(el) { - if (el instanceof Path2 && !el.disableMorphing && !el.invisible && !el.ignore) { - pathList.push(el); - } - }); - return pathList; - } - var DATA_COUNT_THRESHOLD2 = 1e4; - var TRANSITION_NONE2 = 0; - var TRANSITION_P2C2 = 1; - var TRANSITION_C2P2 = 2; - var getUniversalTransitionGlobalStore2 = makeInner2(); - function getDimension2(data, visualDimension) { - var dimensions = data.dimensions; - for (var i2 = 0; i2 < dimensions.length; i2++) { - var dimInfo = data.getDimensionInfo(dimensions[i2]); - if (dimInfo && dimInfo.otherDims[visualDimension] === 0) { - return dimensions[i2]; - } - } - } - function getValueByDimension2(data, dataIndex, dimension) { - var dimInfo = data.getDimensionInfo(dimension); - var dimOrdinalMeta = dimInfo && dimInfo.ordinalMeta; - if (dimInfo) { - var value = data.get(dimInfo.name, dataIndex); - if (dimOrdinalMeta) { - return dimOrdinalMeta.categories[value] || value + ""; - } - return value + ""; - } - } - function getGroupId2(data, dataIndex, dataGroupId, isChild) { - var visualDimension = isChild ? "itemChildGroupId" : "itemGroupId"; - var groupIdDim = getDimension2(data, visualDimension); - if (groupIdDim) { - var groupId = getValueByDimension2(data, dataIndex, groupIdDim); - return groupId; - } - var rawDataItem = data.getRawDataItem(dataIndex); - var property = isChild ? "childGroupId" : "groupId"; - if (rawDataItem && rawDataItem[property]) { - return rawDataItem[property] + ""; - } - if (isChild) { - return; - } - return dataGroupId || data.getId(dataIndex); - } - function flattenDataDiffItems2(list) { - var items = []; - each17(list, function(seriesInfo) { - var data = seriesInfo.data; - var dataGroupId = seriesInfo.dataGroupId; - if (data.count() > DATA_COUNT_THRESHOLD2) { - if (true) { - warn2("Universal transition is disabled on large data > 10k."); - } - return; - } - var indices = data.getIndices(); - for (var dataIndex = 0; dataIndex < indices.length; dataIndex++) { - items.push({ - data, - groupId: getGroupId2(data, dataIndex, dataGroupId, false), - childGroupId: getGroupId2(data, dataIndex, dataGroupId, true), - divide: seriesInfo.divide, - dataIndex - }); - } - }); - return items; - } - function fadeInElement2(newEl3, newSeries, newIndex) { - newEl3.traverse(function(el) { - if (el instanceof Path2) { - initProps2(el, { - style: { - opacity: 0 - } - }, newSeries, { - dataIndex: newIndex, - isFrom: true - }); - } - }); - } - function removeEl$1(el) { - if (el.parent) { - var computedTransform = el.getComputedTransform(); - el.setLocalTransform(computedTransform); - el.parent.remove(el); - } - } - function stopAnimation2(el) { - el.stopAnimation(); - if (el.isGroup) { - el.traverse(function(child) { - child.stopAnimation(); - }); - } - } - function animateElementStyles2(el, dataIndex, seriesModel) { - var animationConfig = getAnimationConfig2("update", seriesModel, dataIndex); - animationConfig && el.traverse(function(child) { - if (child instanceof Displayable2) { - var oldStyle = getOldStyle2(child); - if (oldStyle) { - child.animateFrom({ - style: oldStyle - }, animationConfig); - } - } - }); - } - function isAllIdSame2(oldDiffItems, newDiffItems) { - var len3 = oldDiffItems.length; - if (len3 !== newDiffItems.length) { - return false; - } - for (var i2 = 0; i2 < len3; i2++) { - var oldItem = oldDiffItems[i2]; - var newItem = newDiffItems[i2]; - if (oldItem.data.getId(oldItem.dataIndex) !== newItem.data.getId(newItem.dataIndex)) { - return false; - } - } - return true; - } - function transitionBetween2(oldList, newList, api) { - var oldDiffItems = flattenDataDiffItems2(oldList); - var newDiffItems = flattenDataDiffItems2(newList); - function updateMorphingPathProps(from, to, rawFrom, rawTo, animationCfg) { - if (rawFrom || from) { - to.animateFrom({ - style: rawFrom && rawFrom !== from ? extend3(extend3({}, rawFrom.style), from.style) : from.style - }, animationCfg); - } - } - var hasMorphAnimation = false; - var direction = TRANSITION_NONE2; - var oldGroupIds = createHashMap2(); - var oldChildGroupIds = createHashMap2(); - oldDiffItems.forEach(function(item) { - item.groupId && oldGroupIds.set(item.groupId, true); - item.childGroupId && oldChildGroupIds.set(item.childGroupId, true); - }); - for (var i2 = 0; i2 < newDiffItems.length; i2++) { - var newGroupId = newDiffItems[i2].groupId; - if (oldChildGroupIds.get(newGroupId)) { - direction = TRANSITION_P2C2; - break; - } - var newChildGroupId = newDiffItems[i2].childGroupId; - if (newChildGroupId && oldGroupIds.get(newChildGroupId)) { - direction = TRANSITION_C2P2; - break; - } - } - function createKeyGetter(isOld, onlyGetId) { - return function(diffItem) { - var data = diffItem.data; - var dataIndex = diffItem.dataIndex; - if (onlyGetId) { - return data.getId(dataIndex); - } - if (isOld) { - return direction === TRANSITION_P2C2 ? diffItem.childGroupId : diffItem.groupId; - } else { - return direction === TRANSITION_C2P2 ? diffItem.childGroupId : diffItem.groupId; - } - }; - } - var useId = isAllIdSame2(oldDiffItems, newDiffItems); - var isElementStillInChart = {}; - if (!useId) { - for (var i2 = 0; i2 < newDiffItems.length; i2++) { - var newItem = newDiffItems[i2]; - var el = newItem.data.getItemGraphicEl(newItem.dataIndex); - if (el) { - isElementStillInChart[el.id] = true; - } - } - } - function updateOneToOne(newIndex, oldIndex) { - var oldItem = oldDiffItems[oldIndex]; - var newItem2 = newDiffItems[newIndex]; - var newSeries = newItem2.data.hostModel; - var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex); - var newEl3 = newItem2.data.getItemGraphicEl(newItem2.dataIndex); - if (oldEl === newEl3) { - newEl3 && animateElementStyles2(newEl3, newItem2.dataIndex, newSeries); - return; - } - if ( - // We can't use the elements that already being morphed - oldEl && isElementStillInChart[oldEl.id] - ) { - return; - } - if (newEl3) { - stopAnimation2(newEl3); - if (oldEl) { - stopAnimation2(oldEl); - removeEl$1(oldEl); - hasMorphAnimation = true; - applyMorphAnimation2(getPathList2(oldEl), getPathList2(newEl3), newItem2.divide, newSeries, newIndex, updateMorphingPathProps); - } else { - fadeInElement2(newEl3, newSeries, newIndex); - } - } - } - new DataDiffer2(oldDiffItems, newDiffItems, createKeyGetter(true, useId), createKeyGetter(false, useId), null, "multiple").update(updateOneToOne).updateManyToOne(function(newIndex, oldIndices) { - var newItem2 = newDiffItems[newIndex]; - var newData = newItem2.data; - var newSeries = newData.hostModel; - var newEl3 = newData.getItemGraphicEl(newItem2.dataIndex); - var oldElsList = filter2(map3(oldIndices, function(idx) { - return oldDiffItems[idx].data.getItemGraphicEl(oldDiffItems[idx].dataIndex); - }), function(oldEl) { - return oldEl && oldEl !== newEl3 && !isElementStillInChart[oldEl.id]; - }); - if (newEl3) { - stopAnimation2(newEl3); - if (oldElsList.length) { - each17(oldElsList, function(oldEl) { - stopAnimation2(oldEl); - removeEl$1(oldEl); - }); - hasMorphAnimation = true; - applyMorphAnimation2(getPathList2(oldElsList), getPathList2(newEl3), newItem2.divide, newSeries, newIndex, updateMorphingPathProps); - } else { - fadeInElement2(newEl3, newSeries, newItem2.dataIndex); - } - } - }).updateOneToMany(function(newIndices, oldIndex) { - var oldItem = oldDiffItems[oldIndex]; - var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex); - if (oldEl && isElementStillInChart[oldEl.id]) { - return; - } - var newElsList = filter2(map3(newIndices, function(idx) { - return newDiffItems[idx].data.getItemGraphicEl(newDiffItems[idx].dataIndex); - }), function(el2) { - return el2 && el2 !== oldEl; - }); - var newSeris = newDiffItems[newIndices[0]].data.hostModel; - if (newElsList.length) { - each17(newElsList, function(newEl3) { - return stopAnimation2(newEl3); - }); - if (oldEl) { - stopAnimation2(oldEl); - removeEl$1(oldEl); - hasMorphAnimation = true; - applyMorphAnimation2( - getPathList2(oldEl), - getPathList2(newElsList), - oldItem.divide, - // Use divide on old. - newSeris, - newIndices[0], - updateMorphingPathProps - ); - } else { - each17(newElsList, function(newEl3) { - return fadeInElement2(newEl3, newSeris, newIndices[0]); - }); - } - } - }).updateManyToMany(function(newIndices, oldIndices) { - new DataDiffer2(oldIndices, newIndices, function(rawIdx) { - return oldDiffItems[rawIdx].data.getId(oldDiffItems[rawIdx].dataIndex); - }, function(rawIdx) { - return newDiffItems[rawIdx].data.getId(newDiffItems[rawIdx].dataIndex); - }).update(function(newIndex, oldIndex) { - updateOneToOne(newIndices[newIndex], oldIndices[oldIndex]); - }).execute(); - }).execute(); - if (hasMorphAnimation) { - each17(newList, function(_a3) { - var data = _a3.data; - var seriesModel = data.hostModel; - var view = seriesModel && api.getViewOfSeriesModel(seriesModel); - var animationCfg = getAnimationConfig2("update", seriesModel, 0); - if (view && seriesModel.isAnimationEnabled() && animationCfg && animationCfg.duration > 0) { - view.group.traverse(function(el2) { - if (el2 instanceof Path2 && !el2.animators.length) { - el2.animateFrom({ - style: { - opacity: 0 - } - }, animationCfg); - } - }); - } - }); - } - } - function getSeriesTransitionKey2(series) { - var seriesKey = series.getModel("universalTransition").get("seriesKey"); - if (!seriesKey) { - return series.id; - } - return seriesKey; - } - function convertArraySeriesKeyToString2(seriesKey) { - if (isArray3(seriesKey)) { - return seriesKey.sort().join(","); - } - return seriesKey; - } - function getDivideShapeFromData2(data) { - if (data.hostModel) { - return data.hostModel.getModel("universalTransition").get("divideShape"); - } - } - function findTransitionSeriesBatches2(globalStore, params) { - var updateBatches = createHashMap2(); - var oldDataMap = createHashMap2(); - var oldDataMapForSplit = createHashMap2(); - each17(globalStore.oldSeries, function(series, idx) { - var oldDataGroupId = globalStore.oldDataGroupIds[idx]; - var oldData = globalStore.oldData[idx]; - var transitionKey = getSeriesTransitionKey2(series); - var transitionKeyStr = convertArraySeriesKeyToString2(transitionKey); - oldDataMap.set(transitionKeyStr, { - dataGroupId: oldDataGroupId, - data: oldData - }); - if (isArray3(transitionKey)) { - each17(transitionKey, function(key) { - oldDataMapForSplit.set(key, { - key: transitionKeyStr, - dataGroupId: oldDataGroupId, - data: oldData - }); - }); - } - }); - function checkTransitionSeriesKeyDuplicated(transitionKeyStr) { - if (updateBatches.get(transitionKeyStr)) { - warn2("Duplicated seriesKey in universalTransition " + transitionKeyStr); - } - } - each17(params.updatedSeries, function(series) { - if (series.isUniversalTransitionEnabled() && series.isAnimationEnabled()) { - var newDataGroupId = series.get("dataGroupId"); - var newData = series.getData(); - var transitionKey = getSeriesTransitionKey2(series); - var transitionKeyStr = convertArraySeriesKeyToString2(transitionKey); - var oldData = oldDataMap.get(transitionKeyStr); - if (oldData) { - if (true) { - checkTransitionSeriesKeyDuplicated(transitionKeyStr); - } - updateBatches.set(transitionKeyStr, { - oldSeries: [{ - dataGroupId: oldData.dataGroupId, - divide: getDivideShapeFromData2(oldData.data), - data: oldData.data - }], - newSeries: [{ - dataGroupId: newDataGroupId, - divide: getDivideShapeFromData2(newData), - data: newData - }] - }); - } else { - if (isArray3(transitionKey)) { - if (true) { - checkTransitionSeriesKeyDuplicated(transitionKeyStr); - } - var oldSeries_1 = []; - each17(transitionKey, function(key) { - var oldData2 = oldDataMap.get(key); - if (oldData2.data) { - oldSeries_1.push({ - dataGroupId: oldData2.dataGroupId, - divide: getDivideShapeFromData2(oldData2.data), - data: oldData2.data - }); - } - }); - if (oldSeries_1.length) { - updateBatches.set(transitionKeyStr, { - oldSeries: oldSeries_1, - newSeries: [{ - dataGroupId: newDataGroupId, - data: newData, - divide: getDivideShapeFromData2(newData) - }] - }); - } - } else { - var oldData_1 = oldDataMapForSplit.get(transitionKey); - if (oldData_1) { - var batch = updateBatches.get(oldData_1.key); - if (!batch) { - batch = { - oldSeries: [{ - dataGroupId: oldData_1.dataGroupId, - data: oldData_1.data, - divide: getDivideShapeFromData2(oldData_1.data) - }], - newSeries: [] - }; - updateBatches.set(oldData_1.key, batch); - } - batch.newSeries.push({ - dataGroupId: newDataGroupId, - data: newData, - divide: getDivideShapeFromData2(newData) - }); - } - } - } - } - }); - return updateBatches; - } - function querySeries2(series, finder) { - for (var i2 = 0; i2 < series.length; i2++) { - var found = finder.seriesIndex != null && finder.seriesIndex === series[i2].seriesIndex || finder.seriesId != null && finder.seriesId === series[i2].id; - if (found) { - return i2; - } - } - } - function transitionSeriesFromOpt2(transitionOpt, globalStore, params, api) { - var from = []; - var to = []; - each17(normalizeToArray2(transitionOpt.from), function(finder) { - var idx = querySeries2(globalStore.oldSeries, finder); - if (idx >= 0) { - from.push({ - dataGroupId: globalStore.oldDataGroupIds[idx], - data: globalStore.oldData[idx], - // TODO can specify divideShape in transition. - divide: getDivideShapeFromData2(globalStore.oldData[idx]), - groupIdDim: finder.dimension - }); - } - }); - each17(normalizeToArray2(transitionOpt.to), function(finder) { - var idx = querySeries2(params.updatedSeries, finder); - if (idx >= 0) { - var data = params.updatedSeries[idx].getData(); - to.push({ - dataGroupId: globalStore.oldDataGroupIds[idx], - data, - divide: getDivideShapeFromData2(data), - groupIdDim: finder.dimension - }); - } - }); - if (from.length > 0 && to.length > 0) { - transitionBetween2(from, to, api); - } - } - function installUniversalTransition2(registers) { - registers.registerUpdateLifecycle("series:beforeupdate", function(ecMOdel, api, params) { - each17(normalizeToArray2(params.seriesTransition), function(transOpt) { - each17(normalizeToArray2(transOpt.to), function(finder) { - var series = params.updatedSeries; - for (var i2 = 0; i2 < series.length; i2++) { - if (finder.seriesIndex != null && finder.seriesIndex === series[i2].seriesIndex || finder.seriesId != null && finder.seriesId === series[i2].id) { - series[i2][SERIES_UNIVERSAL_TRANSITION_PROP2] = true; - } - } - }); - }); - }); - registers.registerUpdateLifecycle("series:transition", function(ecModel, api, params) { - var globalStore = getUniversalTransitionGlobalStore2(api); - if (globalStore.oldSeries && params.updatedSeries && params.optionChanged) { - var transitionOpt = params.seriesTransition; - if (transitionOpt) { - each17(normalizeToArray2(transitionOpt), function(opt) { - transitionSeriesFromOpt2(opt, globalStore, params, api); - }); - } else { - var updateBatches_1 = findTransitionSeriesBatches2(globalStore, params); - each17(updateBatches_1.keys(), function(key) { - var batch = updateBatches_1.get(key); - transitionBetween2(batch.oldSeries, batch.newSeries, api); - }); - } - each17(params.updatedSeries, function(series) { - if (series[SERIES_UNIVERSAL_TRANSITION_PROP2]) { - series[SERIES_UNIVERSAL_TRANSITION_PROP2] = false; - } - }); - } - var allSeries = ecModel.getSeries(); - var savedSeries = globalStore.oldSeries = []; - var savedDataGroupIds = globalStore.oldDataGroupIds = []; - var savedData = globalStore.oldData = []; - for (var i2 = 0; i2 < allSeries.length; i2++) { - var data = allSeries[i2].getData(); - if (data.count() < DATA_COUNT_THRESHOLD2) { - savedSeries.push(allSeries[i2]); - savedDataGroupIds.push(allSeries[i2].get("dataGroupId")); - savedData.push(data); - } - } - }); - } - use2([install$1]); - use2([install56]); - use2([install$2, install$3, install$4, install$6, install$8, install$a, install$b, install$c, install$d, install$e, install$f, install$h, install$i, install$j, install$k, install$l, install$m, install$n, install$o, install$p, install$q, install$r]); - use2(install$t); - use2(install$u); - use2(install$9); - use2(install$v); - use2(install$g); - use2(install$w); - use2(install$x); - use2(install$z); - use2(install$A); - use2(install$s); - use2(install$B); - use2(install$C); - use2(install$D); - use2(install$E); - use2(install$F); - use2(install$G); - use2(install$J); - use2(install$M); - use2(install$K); - use2(install$L); - use2(install$P); - use2(install$N); - use2(install$O); - use2(install$Q); - use2(install$R); - use2(install$S); - use2(installUniversalTransition2); - use2(installLabelLayout2); - exports2.Axis = Axis2; - exports2.ChartView = ChartView2; - exports2.ComponentModel = ComponentModel2; - exports2.ComponentView = ComponentView2; - exports2.List = SeriesData2; - exports2.Model = Model2; - exports2.PRIORITY = PRIORITY2; - exports2.SeriesModel = SeriesModel2; - exports2.color = color; - exports2.connect = connect2; - exports2.dataTool = dataTool2; - exports2.dependencies = dependencies2; - exports2.disConnect = disConnect2; - exports2.disconnect = disconnect2; - exports2.dispose = dispose$1; - exports2.env = env2; - exports2.extendChartView = extendChartView2; - exports2.extendComponentModel = extendComponentModel2; - exports2.extendComponentView = extendComponentView2; - exports2.extendSeriesModel = extendSeriesModel2; - exports2.format = format$1; - exports2.getCoordinateSystemDimensions = getCoordinateSystemDimensions2; - exports2.getInstanceByDom = getInstanceByDom2; - exports2.getInstanceById = getInstanceById2; - exports2.getMap = getMap2; - exports2.graphic = graphic$1; - exports2.helper = helper; - exports2.init = init$1; - exports2.innerDrawElementOnCanvas = brushSingle2; - exports2.matrix = matrix; - exports2.number = number; - exports2.parseGeoJSON = parseGeoJSON2; - exports2.parseGeoJson = parseGeoJSON2; - exports2.registerAction = registerAction2; - exports2.registerCoordinateSystem = registerCoordinateSystem2; - exports2.registerLayout = registerLayout2; - exports2.registerLoading = registerLoading2; - exports2.registerLocale = registerLocale2; - exports2.registerMap = registerMap3; - exports2.registerPostInit = registerPostInit2; - exports2.registerPostUpdate = registerPostUpdate2; - exports2.registerPreprocessor = registerPreprocessor2; - exports2.registerProcessor = registerProcessor2; - exports2.registerTheme = registerTheme2; - exports2.registerTransform = registerTransform2; - exports2.registerUpdateLifecycle = registerUpdateLifecycle2; - exports2.registerVisual = registerVisual2; - exports2.setCanvasCreator = setCanvasCreator2; - exports2.setPlatformAPI = setPlatformAPI2; - exports2.throttle = throttle2; - exports2.time = time; - exports2.use = use2; - exports2.util = util$1; - exports2.vector = vector; - exports2.version = version$1; - exports2.zrUtil = util; - exports2.zrender = zrender; - Object.defineProperty(exports2, "__esModule", { value: true }); - }); - } - }); - - // app/javascript/rails_pulse/theme.js - var require_theme = __commonJS({ - "app/javascript/rails_pulse/theme.js"(exports) { - (function(root, factory) { - if (typeof define === "function" && define.amd) { - define(["exports", "echarts"], factory); - } else if (typeof exports === "object" && typeof exports.nodeName !== "string") { - factory(exports, require_echarts()); - } else { - factory({}, root.echarts); - } - })(typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : exports, function(exports2, echarts) { - var log2 = function(msg) { - if (typeof console !== "undefined") { - console && console.error && console.error(msg); - } - }; - if (!echarts) { - log2("ECharts is not Loaded"); - return; - } - echarts.registerTheme("railspulse", { - "color": [ - "#ffc91f", - "#ffde66", - "#fbedbf", - "#ffc91f", - "#ffc91f", - "#ffc91f" - ], - "backgroundColor": "rgba(255,255,255,0)", - "textStyle": {}, - "title": { - "textStyle": { - "color": "#666666" - }, - "subtextStyle": { - "color": "#999999" - } - }, - "line": { - "itemStyle": { - "borderWidth": "2" - }, - "lineStyle": { - "width": "3" - }, - "symbolSize": "8", - "symbol": "emptyCircle", - "smooth": false - }, - "radar": { - "itemStyle": { - "borderWidth": "2" - }, - "lineStyle": { - "width": "3" - }, - "symbolSize": "8", - "symbol": "emptyCircle", - "smooth": false - }, - "bar": { - "itemStyle": { - "barBorderWidth": 0, - "barBorderColor": "#ccc" - } - }, - "pie": { - "itemStyle": { - "borderWidth": 0, - "borderColor": "#ccc" - } - }, - "scatter": { - "itemStyle": { - "borderWidth": 0, - "borderColor": "#ccc" - } - }, - "boxplot": { - "itemStyle": { - "borderWidth": 0, - "borderColor": "#ccc" - } - }, - "parallel": { - "itemStyle": { - "borderWidth": 0, - "borderColor": "#ccc" - } - }, - "sankey": { - "itemStyle": { - "borderWidth": 0, - "borderColor": "#ccc" - } - }, - "funnel": { - "itemStyle": { - "borderWidth": 0, - "borderColor": "#ccc" - } - }, - "gauge": { - "itemStyle": { - "borderWidth": 0, - "borderColor": "#ccc" - } - }, - "candlestick": { - "itemStyle": { - "color": "#ffc91f", - "color0": "transparent", - "borderColor": "#ffc91f", - "borderColor0": "#ffc91f", - "borderWidth": "1" - } - }, - "graph": { - "itemStyle": { - "borderWidth": 0, - "borderColor": "#ccc" - }, - "lineStyle": { - "width": "1", - "color": "#cccccc" - }, - "symbolSize": "8", - "symbol": "emptyCircle", - "smooth": false, - "color": [ - "#ffc91f", - "#ffde66", - "#fbedbf", - "#ffc91f", - "#ffc91f", - "#ffc91f" - ], - "label": { - "color": "#ffffff" - } - }, - "map": { - "itemStyle": { - "areaColor": "#eeeeee", - "borderColor": "#999999", - "borderWidth": 0.5 - }, - "label": { - "color": "#28544e" - }, - "emphasis": { - "itemStyle": { - "areaColor": "rgba(34,195,170,0.25)", - "borderColor": "#22c3aa", - "borderWidth": 1 - }, - "label": { - "color": "#349e8e" - } - } - }, - "geo": { - "itemStyle": { - "areaColor": "#eeeeee", - "borderColor": "#999999", - "borderWidth": 0.5 - }, - "label": { - "color": "#28544e" - }, - "emphasis": { - "itemStyle": { - "areaColor": "rgba(34,195,170,0.25)", - "borderColor": "#22c3aa", - "borderWidth": 1 - }, - "label": { - "color": "#349e8e" - } - } - }, - "categoryAxis": { - "axisLine": { - "show": true, - "lineStyle": { - "color": "#cccccc" - } - }, - "axisTick": { - "show": false, - "lineStyle": { - "color": "#333" - } - }, - "axisLabel": { - "show": true, - "color": "#999999" - }, - "splitLine": { - "show": true, - "lineStyle": { - "color": [ - "#eeeeee" - ] - } - }, - "splitArea": { - "show": false, - "areaStyle": { - "color": [ - "rgba(250,250,250,0.05)", - "rgba(200,200,200,0.02)" - ] - } - } - }, - "valueAxis": { - "axisLine": { - "show": true, - "lineStyle": { - "color": "#cccccc" - } - }, - "axisTick": { - "show": false, - "lineStyle": { - "color": "#333" - } - }, - "axisLabel": { - "show": true, - "color": "#999999" - }, - "splitLine": { - "show": true, - "lineStyle": { - "color": [ - "#eeeeee" - ] - } - }, - "splitArea": { - "show": false, - "areaStyle": { - "color": [ - "rgba(250,250,250,0.05)", - "rgba(200,200,200,0.02)" - ] - } - } - }, - "logAxis": { - "axisLine": { - "show": true, - "lineStyle": { - "color": "#cccccc" - } - }, - "axisTick": { - "show": false, - "lineStyle": { - "color": "#333" - } - }, - "axisLabel": { - "show": true, - "color": "#999999" - }, - "splitLine": { - "show": true, - "lineStyle": { - "color": [ - "#eeeeee" - ] - } - }, - "splitArea": { - "show": false, - "areaStyle": { - "color": [ - "rgba(250,250,250,0.05)", - "rgba(200,200,200,0.02)" - ] - } - } - }, - "timeAxis": { - "axisLine": { - "show": true, - "lineStyle": { - "color": "#cccccc" - } - }, - "axisTick": { - "show": false, - "lineStyle": { - "color": "#333" - } - }, - "axisLabel": { - "show": true, - "color": "#999999" - }, - "splitLine": { - "show": true, - "lineStyle": { - "color": [ - "#eeeeee" - ] - } - }, - "splitArea": { - "show": false, - "areaStyle": { - "color": [ - "rgba(250,250,250,0.05)", - "rgba(200,200,200,0.02)" - ] - } - } - }, - "toolbox": { - "iconStyle": { - "borderColor": "#999999" - }, - "emphasis": { - "iconStyle": { - "borderColor": "#666666" - } - } - }, - "legend": { - "textStyle": { - "color": "#999999" - } - }, - "tooltip": { - "axisPointer": { - "lineStyle": { - "color": "#cccccc", - "width": 1 - }, - "crossStyle": { - "color": "#cccccc", - "width": 1 - } - } - }, - "timeline": { - "lineStyle": { - "color": "#ffc91f", - "width": 1 - }, - "itemStyle": { - "color": "#ffc91f", - "borderWidth": 1 - }, - "controlStyle": { - "color": "#ffc91f", - "borderColor": "#ffc91f", - "borderWidth": 0.5 - }, - "checkpointStyle": { - "color": "#ffc91f", - "borderColor": "#ffc91f" - }, - "label": { - "color": "#ffc91f" - }, - "emphasis": { - "itemStyle": { - "color": "#ffc91f" - }, - "controlStyle": { - "color": "#ffc91f", - "borderColor": "#ffc91f", - "borderWidth": 0.5 - }, - "label": { - "color": "#ffc91f" - } - } - }, - "visualMap": { - "color": [ - "#ffc91f", - "#ffc91f", - "#ffc91f" - ] - }, - "dataZoom": { - "backgroundColor": "rgba(255,255,255,0)", - "dataBackgroundColor": "rgba(222,222,222,1)", - "fillerColor": "rgba(114,230,212,0.25)", - "handleColor": "#cccccc", - "handleSize": "100%", - "textStyle": { - "color": "#999999" - } - }, - "markPoint": { - "label": { - "color": "#ffffff" - }, - "emphasis": { - "label": { - "color": "#ffffff" - } - } - } - }); - }); - } - }); - - // node_modules/echarts/index.js - var echarts_exports2 = {}; - __export(echarts_exports2, { - Axis: () => Axis_default, - ChartView: () => Chart_default, - ComponentModel: () => Component_default, - ComponentView: () => Component_default2, - List: () => SeriesData_default, - Model: () => Model_default, - PRIORITY: () => PRIORITY, - SeriesModel: () => Series_default, - color: () => color_exports, - connect: () => connect, - dataTool: () => dataTool, - dependencies: () => dependencies, - disConnect: () => disConnect, - disconnect: () => disconnect, - dispose: () => dispose2, - env: () => env_default, - extendChartView: () => extendChartView, - extendComponentModel: () => extendComponentModel, - extendComponentView: () => extendComponentView, - extendSeriesModel: () => extendSeriesModel, - format: () => format_exports2, - getCoordinateSystemDimensions: () => getCoordinateSystemDimensions, - getInstanceByDom: () => getInstanceByDom, - getInstanceById: () => getInstanceById, - getMap: () => getMap, - graphic: () => graphic_exports2, - helper: () => helper_exports2, - init: () => init2, - innerDrawElementOnCanvas: () => brushSingle, - matrix: () => matrix_exports, - number: () => number_exports2, - parseGeoJSON: () => parseGeoJSON, - parseGeoJson: () => parseGeoJSON, - registerAction: () => registerAction, - registerCoordinateSystem: () => registerCoordinateSystem, - registerLayout: () => registerLayout, - registerLoading: () => registerLoading, - registerLocale: () => registerLocale, - registerMap: () => registerMap, - registerPostInit: () => registerPostInit, - registerPostUpdate: () => registerPostUpdate, - registerPreprocessor: () => registerPreprocessor, - registerProcessor: () => registerProcessor, - registerTheme: () => registerTheme, - registerTransform: () => registerTransform, - registerUpdateLifecycle: () => registerUpdateLifecycle, - registerVisual: () => registerVisual, - setCanvasCreator: () => setCanvasCreator, - setPlatformAPI: () => setPlatformAPI, - throttle: () => throttle, - time: () => time_exports, - use: () => use, - util: () => util_exports2, - vector: () => vector_exports, - version: () => version2, - zrUtil: () => util_exports, - zrender: () => zrender_exports - }); - - // node_modules/tslib/tslib.es6.js - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { - d2.__proto__ = b2; - } || function(d2, b2) { - for (var p in b2) - if (Object.prototype.hasOwnProperty.call(b2, p)) - d2[p] = b2[p]; - }; - return extendStatics(d, b); - }; - function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { - this.constructor = d; - } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - // node_modules/zrender/lib/zrender.js - var zrender_exports = {}; - __export(zrender_exports, { - dispose: () => dispose, - disposeAll: () => disposeAll, - getElementSSRData: () => getElementSSRData, - getInstance: () => getInstance, - init: () => init, - registerPainter: () => registerPainter, - registerSSRDataGetter: () => registerSSRDataGetter, - version: () => version - }); - - // node_modules/zrender/lib/core/env.js - var Browser = /* @__PURE__ */ function() { - function Browser2() { - this.firefox = false; - this.ie = false; - this.edge = false; - this.newEdge = false; - this.weChat = false; - } - return Browser2; - }(); - var Env = /* @__PURE__ */ function() { - function Env2() { - this.browser = new Browser(); - this.node = false; - this.wxa = false; - this.worker = false; - this.svgSupported = false; - this.touchEventsSupported = false; - this.pointerEventsSupported = false; - this.domSupported = false; - this.transformSupported = false; - this.transform3dSupported = false; - this.hasGlobalWindow = typeof window !== "undefined"; - } - return Env2; - }(); - var env = new Env(); - if (typeof wx === "object" && typeof wx.getSystemInfoSync === "function") { - env.wxa = true; - env.touchEventsSupported = true; - } else if (typeof document === "undefined" && typeof self !== "undefined") { - env.worker = true; - } else if (!env.hasGlobalWindow || "Deno" in window) { - env.node = true; - env.svgSupported = true; - } else { - detect(navigator.userAgent, env); - } - function detect(ua, env2) { - var browser = env2.browser; - var firefox = ua.match(/Firefox\/([\d.]+)/); - var ie = ua.match(/MSIE\s([\d.]+)/) || ua.match(/Trident\/.+?rv:(([\d.]+))/); - var edge = ua.match(/Edge?\/([\d.]+)/); - var weChat = /micromessenger/i.test(ua); - if (firefox) { - browser.firefox = true; - browser.version = firefox[1]; - } - if (ie) { - browser.ie = true; - browser.version = ie[1]; - } - if (edge) { - browser.edge = true; - browser.version = edge[1]; - browser.newEdge = +edge[1].split(".")[0] > 18; - } - if (weChat) { - browser.weChat = true; - } - env2.svgSupported = typeof SVGRect !== "undefined"; - env2.touchEventsSupported = "ontouchstart" in window && !browser.ie && !browser.edge; - env2.pointerEventsSupported = "onpointerdown" in window && (browser.edge || browser.ie && +browser.version >= 11); - env2.domSupported = typeof document !== "undefined"; - var style = document.documentElement.style; - env2.transform3dSupported = (browser.ie && "transition" in style || browser.edge || "WebKitCSSMatrix" in window && "m11" in new WebKitCSSMatrix() || "MozPerspective" in style) && !("OTransition" in style); - env2.transformSupported = env2.transform3dSupported || browser.ie && +browser.version >= 9; - } - var env_default = env; - - // node_modules/zrender/lib/core/util.js - var util_exports = {}; - __export(util_exports, { - HashMap: () => HashMap, - RADIAN_TO_DEGREE: () => RADIAN_TO_DEGREE, - assert: () => assert, - bind: () => bind, - clone: () => clone, - concatArray: () => concatArray, - createCanvas: () => createCanvas, - createHashMap: () => createHashMap, - createObject: () => createObject, - curry: () => curry, - defaults: () => defaults, - disableUserSelect: () => disableUserSelect, - each: () => each, - eqNaN: () => eqNaN, - extend: () => extend, - filter: () => filter, - find: () => find, - guid: () => guid, - hasOwn: () => hasOwn, - indexOf: () => indexOf, - inherits: () => inherits, - isArray: () => isArray, - isArrayLike: () => isArrayLike, - isBuiltInObject: () => isBuiltInObject, - isDom: () => isDom, - isFunction: () => isFunction, - isGradientObject: () => isGradientObject, - isImagePatternObject: () => isImagePatternObject, - isNumber: () => isNumber, - isObject: () => isObject, - isPrimitive: () => isPrimitive, - isRegExp: () => isRegExp, - isString: () => isString, - isStringSafe: () => isStringSafe, - isTypedArray: () => isTypedArray, - keys: () => keys, - logError: () => logError, - map: () => map, - merge: () => merge, - mergeAll: () => mergeAll, - mixin: () => mixin, - noop: () => noop, - normalizeCssArray: () => normalizeCssArray, - reduce: () => reduce, - retrieve: () => retrieve, - retrieve2: () => retrieve2, - retrieve3: () => retrieve3, - setAsPrimitive: () => setAsPrimitive, - slice: () => slice, - trim: () => trim - }); - - // node_modules/zrender/lib/core/platform.js - var DEFAULT_FONT_SIZE = 12; - var DEFAULT_FONT_FAMILY = "sans-serif"; - var DEFAULT_FONT = DEFAULT_FONT_SIZE + "px " + DEFAULT_FONT_FAMILY; - var OFFSET = 20; - var SCALE = 100; - var defaultWidthMapStr = "007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N"; - function getTextWidthMap(mapStr) { - var map3 = {}; - if (typeof JSON === "undefined") { - return map3; - } - for (var i = 0; i < mapStr.length; i++) { - var char = String.fromCharCode(i + 32); - var size2 = (mapStr.charCodeAt(i) - OFFSET) / SCALE; - map3[char] = size2; - } - return map3; - } - var DEFAULT_TEXT_WIDTH_MAP = getTextWidthMap(defaultWidthMapStr); - var platformApi = { - createCanvas: function() { - return typeof document !== "undefined" && document.createElement("canvas"); - }, - measureText: /* @__PURE__ */ function() { - var _ctx; - var _cachedFont; - return function(text, font) { - if (!_ctx) { - var canvas = platformApi.createCanvas(); - _ctx = canvas && canvas.getContext("2d"); - } - if (_ctx) { - if (_cachedFont !== font) { - _cachedFont = _ctx.font = font || DEFAULT_FONT; - } - return _ctx.measureText(text); - } else { - text = text || ""; - font = font || DEFAULT_FONT; - var res = /((?:\d+)?\.?\d*)px/.exec(font); - var fontSize = res && +res[1] || DEFAULT_FONT_SIZE; - var width = 0; - if (font.indexOf("mono") >= 0) { - width = fontSize * text.length; - } else { - for (var i = 0; i < text.length; i++) { - var preCalcWidth = DEFAULT_TEXT_WIDTH_MAP[text[i]]; - width += preCalcWidth == null ? fontSize : preCalcWidth * fontSize; - } - } - return { width }; - } - }; - }(), - loadImage: function(src, onload, onerror) { - var image = new Image(); - image.onload = onload; - image.onerror = onerror; - image.src = src; - return image; - } - }; - function setPlatformAPI(newPlatformApis) { - for (var key in platformApi) { - if (newPlatformApis[key]) { - platformApi[key] = newPlatformApis[key]; - } - } - } - - // node_modules/zrender/lib/core/util.js - var BUILTIN_OBJECT = reduce([ - "Function", - "RegExp", - "Date", - "Error", - "CanvasGradient", - "CanvasPattern", - "Image", - "Canvas" - ], function(obj, val) { - obj["[object " + val + "]"] = true; - return obj; - }, {}); - var TYPED_ARRAY = reduce([ - "Int8", - "Uint8", - "Uint8Clamped", - "Int16", - "Uint16", - "Int32", - "Uint32", - "Float32", - "Float64" - ], function(obj, val) { - obj["[object " + val + "Array]"] = true; - return obj; - }, {}); - var objToString = Object.prototype.toString; - var arrayProto = Array.prototype; - var nativeForEach = arrayProto.forEach; - var nativeFilter = arrayProto.filter; - var nativeSlice = arrayProto.slice; - var nativeMap = arrayProto.map; - var ctorFunction = function() { - }.constructor; - var protoFunction = ctorFunction ? ctorFunction.prototype : null; - var protoKey = "__proto__"; - var idStart = 2311; - function guid() { - return idStart++; - } - function logError() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - if (typeof console !== "undefined") { - console.error.apply(console, args); - } - } - function clone(source) { - if (source == null || typeof source !== "object") { - return source; - } - var result = source; - var typeStr = objToString.call(source); - if (typeStr === "[object Array]") { - if (!isPrimitive(source)) { - result = []; - for (var i = 0, len2 = source.length; i < len2; i++) { - result[i] = clone(source[i]); - } - } - } else if (TYPED_ARRAY[typeStr]) { - if (!isPrimitive(source)) { - var Ctor = source.constructor; - if (Ctor.from) { - result = Ctor.from(source); - } else { - result = new Ctor(source.length); - for (var i = 0, len2 = source.length; i < len2; i++) { - result[i] = source[i]; - } - } - } - } else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) { - result = {}; - for (var key in source) { - if (source.hasOwnProperty(key) && key !== protoKey) { - result[key] = clone(source[key]); - } - } - } - return result; - } - function merge(target, source, overwrite) { - if (!isObject(source) || !isObject(target)) { - return overwrite ? clone(source) : target; - } - for (var key in source) { - if (source.hasOwnProperty(key) && key !== protoKey) { - var targetProp = target[key]; - var sourceProp = source[key]; - if (isObject(sourceProp) && isObject(targetProp) && !isArray(sourceProp) && !isArray(targetProp) && !isDom(sourceProp) && !isDom(targetProp) && !isBuiltInObject(sourceProp) && !isBuiltInObject(targetProp) && !isPrimitive(sourceProp) && !isPrimitive(targetProp)) { - merge(targetProp, sourceProp, overwrite); - } else if (overwrite || !(key in target)) { - target[key] = clone(source[key]); - } - } - } - return target; - } - function mergeAll(targetAndSources, overwrite) { - var result = targetAndSources[0]; - for (var i = 1, len2 = targetAndSources.length; i < len2; i++) { - result = merge(result, targetAndSources[i], overwrite); - } - return result; - } - function extend(target, source) { - if (Object.assign) { - Object.assign(target, source); - } else { - for (var key in source) { - if (source.hasOwnProperty(key) && key !== protoKey) { - target[key] = source[key]; - } - } - } - return target; - } - function defaults(target, source, overlay) { - var keysArr = keys(source); - for (var i = 0, len2 = keysArr.length; i < len2; i++) { - var key = keysArr[i]; - if (overlay ? source[key] != null : target[key] == null) { - target[key] = source[key]; - } - } - return target; - } - var createCanvas = platformApi.createCanvas; - function indexOf(array, value) { - if (array) { - if (array.indexOf) { - return array.indexOf(value); - } - for (var i = 0, len2 = array.length; i < len2; i++) { - if (array[i] === value) { - return i; - } - } - } - return -1; - } - function inherits(clazz, baseClazz) { - var clazzPrototype = clazz.prototype; - function F() { - } - F.prototype = baseClazz.prototype; - clazz.prototype = new F(); - for (var prop in clazzPrototype) { - if (clazzPrototype.hasOwnProperty(prop)) { - clazz.prototype[prop] = clazzPrototype[prop]; - } - } - clazz.prototype.constructor = clazz; - clazz.superClass = baseClazz; - } - function mixin(target, source, override) { - target = "prototype" in target ? target.prototype : target; - source = "prototype" in source ? source.prototype : source; - if (Object.getOwnPropertyNames) { - var keyList = Object.getOwnPropertyNames(source); - for (var i = 0; i < keyList.length; i++) { - var key = keyList[i]; - if (key !== "constructor") { - if (override ? source[key] != null : target[key] == null) { - target[key] = source[key]; - } - } - } - } else { - defaults(target, source, override); - } - } - function isArrayLike(data) { - if (!data) { - return false; - } - if (typeof data === "string") { - return false; - } - return typeof data.length === "number"; - } - function each(arr, cb, context) { - if (!(arr && cb)) { - return; - } - if (arr.forEach && arr.forEach === nativeForEach) { - arr.forEach(cb, context); - } else if (arr.length === +arr.length) { - for (var i = 0, len2 = arr.length; i < len2; i++) { - cb.call(context, arr[i], i, arr); - } - } else { - for (var key in arr) { - if (arr.hasOwnProperty(key)) { - cb.call(context, arr[key], key, arr); - } - } - } - } - function map(arr, cb, context) { - if (!arr) { - return []; - } - if (!cb) { - return slice(arr); - } - if (arr.map && arr.map === nativeMap) { - return arr.map(cb, context); - } else { - var result = []; - for (var i = 0, len2 = arr.length; i < len2; i++) { - result.push(cb.call(context, arr[i], i, arr)); - } - return result; - } - } - function reduce(arr, cb, memo, context) { - if (!(arr && cb)) { - return; - } - for (var i = 0, len2 = arr.length; i < len2; i++) { - memo = cb.call(context, memo, arr[i], i, arr); - } - return memo; - } - function filter(arr, cb, context) { - if (!arr) { - return []; - } - if (!cb) { - return slice(arr); - } - if (arr.filter && arr.filter === nativeFilter) { - return arr.filter(cb, context); - } else { - var result = []; - for (var i = 0, len2 = arr.length; i < len2; i++) { - if (cb.call(context, arr[i], i, arr)) { - result.push(arr[i]); - } - } - return result; - } - } - function find(arr, cb, context) { - if (!(arr && cb)) { - return; - } - for (var i = 0, len2 = arr.length; i < len2; i++) { - if (cb.call(context, arr[i], i, arr)) { - return arr[i]; - } - } - } - function keys(obj) { - if (!obj) { - return []; - } - if (Object.keys) { - return Object.keys(obj); - } - var keyList = []; - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - keyList.push(key); - } - } - return keyList; - } - function bindPolyfill(func, context) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - return function() { - return func.apply(context, args.concat(nativeSlice.call(arguments))); - }; - } - var bind = protoFunction && isFunction(protoFunction.bind) ? protoFunction.call.bind(protoFunction.bind) : bindPolyfill; - function curry(func) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - return function() { - return func.apply(this, args.concat(nativeSlice.call(arguments))); - }; - } - function isArray(value) { - if (Array.isArray) { - return Array.isArray(value); - } - return objToString.call(value) === "[object Array]"; - } - function isFunction(value) { - return typeof value === "function"; - } - function isString(value) { - return typeof value === "string"; - } - function isStringSafe(value) { - return objToString.call(value) === "[object String]"; - } - function isNumber(value) { - return typeof value === "number"; - } - function isObject(value) { - var type = typeof value; - return type === "function" || !!value && type === "object"; - } - function isBuiltInObject(value) { - return !!BUILTIN_OBJECT[objToString.call(value)]; - } - function isTypedArray(value) { - return !!TYPED_ARRAY[objToString.call(value)]; - } - function isDom(value) { - return typeof value === "object" && typeof value.nodeType === "number" && typeof value.ownerDocument === "object"; - } - function isGradientObject(value) { - return value.colorStops != null; - } - function isImagePatternObject(value) { - return value.image != null; - } - function isRegExp(value) { - return objToString.call(value) === "[object RegExp]"; - } - function eqNaN(value) { - return value !== value; - } - function retrieve() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - for (var i = 0, len2 = args.length; i < len2; i++) { - if (args[i] != null) { - return args[i]; - } - } - } - function retrieve2(value0, value1) { - return value0 != null ? value0 : value1; - } - function retrieve3(value0, value1, value2) { - return value0 != null ? value0 : value1 != null ? value1 : value2; - } - function slice(arr) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - return nativeSlice.apply(arr, args); - } - function normalizeCssArray(val) { - if (typeof val === "number") { - return [val, val, val, val]; - } - var len2 = val.length; - if (len2 === 2) { - return [val[0], val[1], val[0], val[1]]; - } else if (len2 === 3) { - return [val[0], val[1], val[2], val[1]]; - } - return val; - } - function assert(condition, message) { - if (!condition) { - throw new Error(message); - } - } - function trim(str) { - if (str == null) { - return null; - } else if (typeof str.trim === "function") { - return str.trim(); - } else { - return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); - } - } - var primitiveKey = "__ec_primitive__"; - function setAsPrimitive(obj) { - obj[primitiveKey] = true; - } - function isPrimitive(obj) { - return obj[primitiveKey]; - } - var MapPolyfill = function() { - function MapPolyfill2() { - this.data = {}; - } - MapPolyfill2.prototype["delete"] = function(key) { - var existed = this.has(key); - if (existed) { - delete this.data[key]; - } - return existed; - }; - MapPolyfill2.prototype.has = function(key) { - return this.data.hasOwnProperty(key); - }; - MapPolyfill2.prototype.get = function(key) { - return this.data[key]; - }; - MapPolyfill2.prototype.set = function(key, value) { - this.data[key] = value; - return this; - }; - MapPolyfill2.prototype.keys = function() { - return keys(this.data); - }; - MapPolyfill2.prototype.forEach = function(callback) { - var data = this.data; - for (var key in data) { - if (data.hasOwnProperty(key)) { - callback(data[key], key); - } - } - }; - return MapPolyfill2; - }(); - var isNativeMapSupported = typeof Map === "function"; - function maybeNativeMap() { - return isNativeMapSupported ? /* @__PURE__ */ new Map() : new MapPolyfill(); - } - var HashMap = function() { - function HashMap2(obj) { - var isArr = isArray(obj); - this.data = maybeNativeMap(); - var thisMap = this; - obj instanceof HashMap2 ? obj.each(visit2) : obj && each(obj, visit2); - function visit2(value, key) { - isArr ? thisMap.set(value, key) : thisMap.set(key, value); - } - } - HashMap2.prototype.hasKey = function(key) { - return this.data.has(key); - }; - HashMap2.prototype.get = function(key) { - return this.data.get(key); - }; - HashMap2.prototype.set = function(key, value) { - this.data.set(key, value); - return value; - }; - HashMap2.prototype.each = function(cb, context) { - this.data.forEach(function(value, key) { - cb.call(context, value, key); - }); - }; - HashMap2.prototype.keys = function() { - var keys2 = this.data.keys(); - return isNativeMapSupported ? Array.from(keys2) : keys2; - }; - HashMap2.prototype.removeKey = function(key) { - this.data["delete"](key); - }; - return HashMap2; - }(); - function createHashMap(obj) { - return new HashMap(obj); - } - function concatArray(a, b) { - var newArray = new a.constructor(a.length + b.length); - for (var i = 0; i < a.length; i++) { - newArray[i] = a[i]; - } - var offset3 = a.length; - for (var i = 0; i < b.length; i++) { - newArray[i + offset3] = b[i]; - } - return newArray; - } - function createObject(proto2, properties) { - var obj; - if (Object.create) { - obj = Object.create(proto2); - } else { - var StyleCtor = function() { - }; - StyleCtor.prototype = proto2; - obj = new StyleCtor(); - } - if (properties) { - extend(obj, properties); - } - return obj; - } - function disableUserSelect(dom) { - var domStyle = dom.style; - domStyle.webkitUserSelect = "none"; - domStyle.userSelect = "none"; - domStyle.webkitTapHighlightColor = "rgba(0,0,0,0)"; - domStyle["-webkit-touch-callout"] = "none"; - } - function hasOwn(own, prop) { - return own.hasOwnProperty(prop); - } - function noop() { - } - var RADIAN_TO_DEGREE = 180 / Math.PI; - - // node_modules/zrender/lib/core/vector.js - var vector_exports = {}; - __export(vector_exports, { - add: () => add, - applyTransform: () => applyTransform, - clone: () => clone2, - copy: () => copy, - create: () => create, - dist: () => dist, - distSquare: () => distSquare, - distance: () => distance, - distanceSquare: () => distanceSquare, - div: () => div, - dot: () => dot, - len: () => len, - lenSquare: () => lenSquare, - length: () => length, - lengthSquare: () => lengthSquare, - lerp: () => lerp, - max: () => max, - min: () => min, - mul: () => mul, - negate: () => negate, - normalize: () => normalize, - scale: () => scale, - scaleAndAdd: () => scaleAndAdd, - set: () => set, - sub: () => sub - }); - function create(x, y) { - if (x == null) { - x = 0; - } - if (y == null) { - y = 0; - } - return [x, y]; - } - function copy(out2, v) { - out2[0] = v[0]; - out2[1] = v[1]; - return out2; - } - function clone2(v) { - return [v[0], v[1]]; - } - function set(out2, a, b) { - out2[0] = a; - out2[1] = b; - return out2; - } - function add(out2, v12, v22) { - out2[0] = v12[0] + v22[0]; - out2[1] = v12[1] + v22[1]; - return out2; - } - function scaleAndAdd(out2, v12, v22, a) { - out2[0] = v12[0] + v22[0] * a; - out2[1] = v12[1] + v22[1] * a; - return out2; - } - function sub(out2, v12, v22) { - out2[0] = v12[0] - v22[0]; - out2[1] = v12[1] - v22[1]; - return out2; - } - function len(v) { - return Math.sqrt(lenSquare(v)); - } - var length = len; - function lenSquare(v) { - return v[0] * v[0] + v[1] * v[1]; - } - var lengthSquare = lenSquare; - function mul(out2, v12, v22) { - out2[0] = v12[0] * v22[0]; - out2[1] = v12[1] * v22[1]; - return out2; - } - function div(out2, v12, v22) { - out2[0] = v12[0] / v22[0]; - out2[1] = v12[1] / v22[1]; - return out2; - } - function dot(v12, v22) { - return v12[0] * v22[0] + v12[1] * v22[1]; - } - function scale(out2, v, s) { - out2[0] = v[0] * s; - out2[1] = v[1] * s; - return out2; - } - function normalize(out2, v) { - var d = len(v); - if (d === 0) { - out2[0] = 0; - out2[1] = 0; - } else { - out2[0] = v[0] / d; - out2[1] = v[1] / d; - } - return out2; - } - function distance(v12, v22) { - return Math.sqrt((v12[0] - v22[0]) * (v12[0] - v22[0]) + (v12[1] - v22[1]) * (v12[1] - v22[1])); - } - var dist = distance; - function distanceSquare(v12, v22) { - return (v12[0] - v22[0]) * (v12[0] - v22[0]) + (v12[1] - v22[1]) * (v12[1] - v22[1]); - } - var distSquare = distanceSquare; - function negate(out2, v) { - out2[0] = -v[0]; - out2[1] = -v[1]; - return out2; - } - function lerp(out2, v12, v22, t) { - out2[0] = v12[0] + t * (v22[0] - v12[0]); - out2[1] = v12[1] + t * (v22[1] - v12[1]); - return out2; - } - function applyTransform(out2, v, m2) { - var x = v[0]; - var y = v[1]; - out2[0] = m2[0] * x + m2[2] * y + m2[4]; - out2[1] = m2[1] * x + m2[3] * y + m2[5]; - return out2; - } - function min(out2, v12, v22) { - out2[0] = Math.min(v12[0], v22[0]); - out2[1] = Math.min(v12[1], v22[1]); - return out2; - } - function max(out2, v12, v22) { - out2[0] = Math.max(v12[0], v22[0]); - out2[1] = Math.max(v12[1], v22[1]); - return out2; - } - - // node_modules/zrender/lib/mixin/Draggable.js - var Param = /* @__PURE__ */ function() { - function Param2(target, e2) { - this.target = target; - this.topTarget = e2 && e2.topTarget; - } - return Param2; - }(); - var Draggable = function() { - function Draggable2(handler) { - this.handler = handler; - handler.on("mousedown", this._dragStart, this); - handler.on("mousemove", this._drag, this); - handler.on("mouseup", this._dragEnd, this); - } - Draggable2.prototype._dragStart = function(e2) { - var draggingTarget = e2.target; - while (draggingTarget && !draggingTarget.draggable) { - draggingTarget = draggingTarget.parent || draggingTarget.__hostTarget; - } - if (draggingTarget) { - this._draggingTarget = draggingTarget; - draggingTarget.dragging = true; - this._x = e2.offsetX; - this._y = e2.offsetY; - this.handler.dispatchToElement(new Param(draggingTarget, e2), "dragstart", e2.event); - } - }; - Draggable2.prototype._drag = function(e2) { - var draggingTarget = this._draggingTarget; - if (draggingTarget) { - var x = e2.offsetX; - var y = e2.offsetY; - var dx = x - this._x; - var dy = y - this._y; - this._x = x; - this._y = y; - draggingTarget.drift(dx, dy, e2); - this.handler.dispatchToElement(new Param(draggingTarget, e2), "drag", e2.event); - var dropTarget = this.handler.findHover(x, y, draggingTarget).target; - var lastDropTarget = this._dropTarget; - this._dropTarget = dropTarget; - if (draggingTarget !== dropTarget) { - if (lastDropTarget && dropTarget !== lastDropTarget) { - this.handler.dispatchToElement(new Param(lastDropTarget, e2), "dragleave", e2.event); - } - if (dropTarget && dropTarget !== lastDropTarget) { - this.handler.dispatchToElement(new Param(dropTarget, e2), "dragenter", e2.event); - } - } - } - }; - Draggable2.prototype._dragEnd = function(e2) { - var draggingTarget = this._draggingTarget; - if (draggingTarget) { - draggingTarget.dragging = false; - } - this.handler.dispatchToElement(new Param(draggingTarget, e2), "dragend", e2.event); - if (this._dropTarget) { - this.handler.dispatchToElement(new Param(this._dropTarget, e2), "drop", e2.event); - } - this._draggingTarget = null; - this._dropTarget = null; - }; - return Draggable2; - }(); - var Draggable_default = Draggable; - - // node_modules/zrender/lib/core/Eventful.js - var Eventful = function() { - function Eventful2(eventProcessors) { - if (eventProcessors) { - this._$eventProcessor = eventProcessors; - } - } - Eventful2.prototype.on = function(event, query, handler, context) { - if (!this._$handlers) { - this._$handlers = {}; - } - var _h = this._$handlers; - if (typeof query === "function") { - context = handler; - handler = query; - query = null; - } - if (!handler || !event) { - return this; - } - var eventProcessor = this._$eventProcessor; - if (query != null && eventProcessor && eventProcessor.normalizeQuery) { - query = eventProcessor.normalizeQuery(query); - } - if (!_h[event]) { - _h[event] = []; - } - for (var i = 0; i < _h[event].length; i++) { - if (_h[event][i].h === handler) { - return this; - } - } - var wrap = { - h: handler, - query, - ctx: context || this, - callAtLast: handler.zrEventfulCallAtLast - }; - var lastIndex = _h[event].length - 1; - var lastWrap = _h[event][lastIndex]; - lastWrap && lastWrap.callAtLast ? _h[event].splice(lastIndex, 0, wrap) : _h[event].push(wrap); - return this; - }; - Eventful2.prototype.isSilent = function(eventName) { - var _h = this._$handlers; - return !_h || !_h[eventName] || !_h[eventName].length; - }; - Eventful2.prototype.off = function(eventType, handler) { - var _h = this._$handlers; - if (!_h) { - return this; - } - if (!eventType) { - this._$handlers = {}; - return this; - } - if (handler) { - if (_h[eventType]) { - var newList = []; - for (var i = 0, l = _h[eventType].length; i < l; i++) { - if (_h[eventType][i].h !== handler) { - newList.push(_h[eventType][i]); - } - } - _h[eventType] = newList; - } - if (_h[eventType] && _h[eventType].length === 0) { - delete _h[eventType]; - } - } else { - delete _h[eventType]; - } - return this; - }; - Eventful2.prototype.trigger = function(eventType) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - if (!this._$handlers) { - return this; - } - var _h = this._$handlers[eventType]; - var eventProcessor = this._$eventProcessor; - if (_h) { - var argLen = args.length; - var len2 = _h.length; - for (var i = 0; i < len2; i++) { - var hItem = _h[i]; - if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(eventType, hItem.query)) { - continue; - } - switch (argLen) { - case 0: - hItem.h.call(hItem.ctx); - break; - case 1: - hItem.h.call(hItem.ctx, args[0]); - break; - case 2: - hItem.h.call(hItem.ctx, args[0], args[1]); - break; - default: - hItem.h.apply(hItem.ctx, args); - break; - } - } - } - eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(eventType); - return this; - }; - Eventful2.prototype.triggerWithContext = function(type) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - if (!this._$handlers) { - return this; - } - var _h = this._$handlers[type]; - var eventProcessor = this._$eventProcessor; - if (_h) { - var argLen = args.length; - var ctx = args[argLen - 1]; - var len2 = _h.length; - for (var i = 0; i < len2; i++) { - var hItem = _h[i]; - if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) { - continue; - } - switch (argLen) { - case 0: - hItem.h.call(ctx); - break; - case 1: - hItem.h.call(ctx, args[0]); - break; - case 2: - hItem.h.call(ctx, args[0], args[1]); - break; - default: - hItem.h.apply(ctx, args.slice(1, argLen - 1)); - break; - } - } - } - eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type); - return this; - }; - return Eventful2; - }(); - var Eventful_default = Eventful; - - // node_modules/zrender/lib/core/fourPointsTransform.js - var LN2 = Math.log(2); - function determinant(rows, rank, rowStart, rowMask, colMask, detCache) { - var cacheKey = rowMask + "-" + colMask; - var fullRank = rows.length; - if (detCache.hasOwnProperty(cacheKey)) { - return detCache[cacheKey]; - } - if (rank === 1) { - var colStart = Math.round(Math.log((1 << fullRank) - 1 & ~colMask) / LN2); - return rows[rowStart][colStart]; - } - var subRowMask = rowMask | 1 << rowStart; - var subRowStart = rowStart + 1; - while (rowMask & 1 << subRowStart) { - subRowStart++; - } - var sum2 = 0; - for (var j = 0, colLocalIdx = 0; j < fullRank; j++) { - var colTag = 1 << j; - if (!(colTag & colMask)) { - sum2 += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j] * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache); - colLocalIdx++; - } - } - detCache[cacheKey] = sum2; - return sum2; - } - function buildTransformer(src, dest) { - var mA = [ - [src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]], - [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]], - [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]], - [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]], - [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]], - [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]], - [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]], - [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]] - ]; - var detCache = {}; - var det = determinant(mA, 8, 0, 0, 0, detCache); - if (det === 0) { - return; - } - var vh = []; - for (var i = 0; i < 8; i++) { - for (var j = 0; j < 8; j++) { - vh[j] == null && (vh[j] = 0); - vh[j] += ((i + j) % 2 ? -1 : 1) * determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache) / det * dest[i]; - } - } - return function(out2, srcPointX, srcPointY) { - var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1; - out2[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk; - out2[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk; - }; - } - - // node_modules/zrender/lib/core/dom.js - var EVENT_SAVED_PROP = "___zrEVENTSAVED"; - var _calcOut = []; - function transformLocalCoord(out2, elFrom, elTarget, inX, inY) { - return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true) && transformCoordWithViewport(out2, elTarget, _calcOut[0], _calcOut[1]); - } - function transformCoordWithViewport(out2, el, inX, inY, inverse) { - if (el.getBoundingClientRect && env_default.domSupported && !isCanvasEl(el)) { - var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {}); - var markers = prepareCoordMarkers(el, saved); - var transformer = preparePointerTransformer(markers, saved, inverse); - if (transformer) { - transformer(out2, inX, inY); - return true; - } - } - return false; - } - function prepareCoordMarkers(el, saved) { - var markers = saved.markers; - if (markers) { - return markers; - } - markers = saved.markers = []; - var propLR = ["left", "right"]; - var propTB = ["top", "bottom"]; - for (var i = 0; i < 4; i++) { - var marker = document.createElement("div"); - var stl = marker.style; - var idxLR = i % 2; - var idxTB = (i >> 1) % 2; - stl.cssText = [ - "position: absolute", - "visibility: hidden", - "padding: 0", - "margin: 0", - "border-width: 0", - "user-select: none", - "width:0", - "height:0", - propLR[idxLR] + ":0", - propTB[idxTB] + ":0", - propLR[1 - idxLR] + ":auto", - propTB[1 - idxTB] + ":auto", - "" - ].join("!important;"); - el.appendChild(marker); - markers.push(marker); - } - return markers; - } - function preparePointerTransformer(markers, saved, inverse) { - var transformerName = inverse ? "invTrans" : "trans"; - var transformer = saved[transformerName]; - var oldSrcCoords = saved.srcCoords; - var srcCoords = []; - var destCoords = []; - var oldCoordTheSame = true; - for (var i = 0; i < 4; i++) { - var rect = markers[i].getBoundingClientRect(); - var ii = 2 * i; - var x = rect.left; - var y = rect.top; - srcCoords.push(x, y); - oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1]; - destCoords.push(markers[i].offsetLeft, markers[i].offsetTop); - } - return oldCoordTheSame && transformer ? transformer : (saved.srcCoords = srcCoords, saved[transformerName] = inverse ? buildTransformer(destCoords, srcCoords) : buildTransformer(srcCoords, destCoords)); - } - function isCanvasEl(el) { - return el.nodeName.toUpperCase() === "CANVAS"; - } - var replaceReg = /([&<>"'])/g; - var replaceMap = { - "&": "&", - "<": "<", - ">": ">", - '"': """, - "'": "'" - }; - function encodeHTML(source) { - return source == null ? "" : (source + "").replace(replaceReg, function(str, c) { - return replaceMap[c]; - }); - } - - // node_modules/zrender/lib/core/event.js - var MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/; - var _calcOut2 = []; - var firefoxNotSupportOffsetXY = env_default.browser.firefox && +env_default.browser.version.split(".")[0] < 39; - function clientToLocal(el, e2, out2, calculate) { - out2 = out2 || {}; - if (calculate) { - calculateZrXY(el, e2, out2); - } else if (firefoxNotSupportOffsetXY && e2.layerX != null && e2.layerX !== e2.offsetX) { - out2.zrX = e2.layerX; - out2.zrY = e2.layerY; - } else if (e2.offsetX != null) { - out2.zrX = e2.offsetX; - out2.zrY = e2.offsetY; - } else { - calculateZrXY(el, e2, out2); - } - return out2; - } - function calculateZrXY(el, e2, out2) { - if (env_default.domSupported && el.getBoundingClientRect) { - var ex = e2.clientX; - var ey = e2.clientY; - if (isCanvasEl(el)) { - var box2 = el.getBoundingClientRect(); - out2.zrX = ex - box2.left; - out2.zrY = ey - box2.top; - return; - } else { - if (transformCoordWithViewport(_calcOut2, el, ex, ey)) { - out2.zrX = _calcOut2[0]; - out2.zrY = _calcOut2[1]; - return; - } - } - } - out2.zrX = out2.zrY = 0; - } - function getNativeEvent(e2) { - return e2 || window.event; - } - function normalizeEvent(el, e2, calculate) { - e2 = getNativeEvent(e2); - if (e2.zrX != null) { - return e2; - } - var eventType = e2.type; - var isTouch = eventType && eventType.indexOf("touch") >= 0; - if (!isTouch) { - clientToLocal(el, e2, e2, calculate); - var wheelDelta = getWheelDeltaMayPolyfill(e2); - e2.zrDelta = wheelDelta ? wheelDelta / 120 : -(e2.detail || 0) / 3; - } else { - var touch = eventType !== "touchend" ? e2.targetTouches[0] : e2.changedTouches[0]; - touch && clientToLocal(el, touch, e2, calculate); - } - var button = e2.button; - if (e2.which == null && button !== void 0 && MOUSE_EVENT_REG.test(e2.type)) { - e2.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0; - } - return e2; - } - function getWheelDeltaMayPolyfill(e2) { - var rawWheelDelta = e2.wheelDelta; - if (rawWheelDelta) { - return rawWheelDelta; - } - var deltaX = e2.deltaX; - var deltaY = e2.deltaY; - if (deltaX == null || deltaY == null) { - return rawWheelDelta; - } - var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX); - var sign = deltaY > 0 ? -1 : deltaY < 0 ? 1 : deltaX > 0 ? -1 : 1; - return 3 * delta * sign; - } - function addEventListener2(el, name, handler, opt) { - el.addEventListener(name, handler, opt); - } - function removeEventListener2(el, name, handler, opt) { - el.removeEventListener(name, handler, opt); - } - var stop = function(e2) { - e2.preventDefault(); - e2.stopPropagation(); - e2.cancelBubble = true; - }; - function isMiddleOrRightButtonOnMouseUpDown(e2) { - return e2.which === 2 || e2.which === 3; - } - - // node_modules/zrender/lib/core/GestureMgr.js - var GestureMgr = function() { - function GestureMgr2() { - this._track = []; - } - GestureMgr2.prototype.recognize = function(event, target, root) { - this._doTrack(event, target, root); - return this._recognize(event); - }; - GestureMgr2.prototype.clear = function() { - this._track.length = 0; - return this; - }; - GestureMgr2.prototype._doTrack = function(event, target, root) { - var touches = event.touches; - if (!touches) { - return; - } - var trackItem = { - points: [], - touches: [], - target, - event - }; - for (var i = 0, len2 = touches.length; i < len2; i++) { - var touch = touches[i]; - var pos = clientToLocal(root, touch, {}); - trackItem.points.push([pos.zrX, pos.zrY]); - trackItem.touches.push(touch); - } - this._track.push(trackItem); - }; - GestureMgr2.prototype._recognize = function(event) { - for (var eventName in recognizers) { - if (recognizers.hasOwnProperty(eventName)) { - var gestureInfo = recognizers[eventName](this._track, event); - if (gestureInfo) { - return gestureInfo; - } - } - } - }; - return GestureMgr2; - }(); - function dist2(pointPair) { - var dx = pointPair[1][0] - pointPair[0][0]; - var dy = pointPair[1][1] - pointPair[0][1]; - return Math.sqrt(dx * dx + dy * dy); - } - function center(pointPair) { - return [ - (pointPair[0][0] + pointPair[1][0]) / 2, - (pointPair[0][1] + pointPair[1][1]) / 2 - ]; - } - var recognizers = { - pinch: function(tracks, event) { - var trackLen = tracks.length; - if (!trackLen) { - return; - } - var pinchEnd = (tracks[trackLen - 1] || {}).points; - var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd; - if (pinchPre && pinchPre.length > 1 && pinchEnd && pinchEnd.length > 1) { - var pinchScale = dist2(pinchEnd) / dist2(pinchPre); - !isFinite(pinchScale) && (pinchScale = 1); - event.pinchScale = pinchScale; - var pinchCenter = center(pinchEnd); - event.pinchX = pinchCenter[0]; - event.pinchY = pinchCenter[1]; - return { - type: "pinch", - target: tracks[0].target, - event - }; - } - } - }; - - // node_modules/zrender/lib/core/matrix.js - var matrix_exports = {}; - __export(matrix_exports, { - clone: () => clone3, - copy: () => copy2, - create: () => create2, - identity: () => identity, - invert: () => invert, - mul: () => mul2, - rotate: () => rotate, - scale: () => scale2, - translate: () => translate - }); - function create2() { - return [1, 0, 0, 1, 0, 0]; - } - function identity(out2) { - out2[0] = 1; - out2[1] = 0; - out2[2] = 0; - out2[3] = 1; - out2[4] = 0; - out2[5] = 0; - return out2; - } - function copy2(out2, m2) { - out2[0] = m2[0]; - out2[1] = m2[1]; - out2[2] = m2[2]; - out2[3] = m2[3]; - out2[4] = m2[4]; - out2[5] = m2[5]; - return out2; - } - function mul2(out2, m1, m2) { - var out0 = m1[0] * m2[0] + m1[2] * m2[1]; - var out1 = m1[1] * m2[0] + m1[3] * m2[1]; - var out22 = m1[0] * m2[2] + m1[2] * m2[3]; - var out3 = m1[1] * m2[2] + m1[3] * m2[3]; - var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4]; - var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5]; - out2[0] = out0; - out2[1] = out1; - out2[2] = out22; - out2[3] = out3; - out2[4] = out4; - out2[5] = out5; - return out2; - } - function translate(out2, a, v) { - out2[0] = a[0]; - out2[1] = a[1]; - out2[2] = a[2]; - out2[3] = a[3]; - out2[4] = a[4] + v[0]; - out2[5] = a[5] + v[1]; - return out2; - } - function rotate(out2, a, rad, pivot) { - if (pivot === void 0) { - pivot = [0, 0]; - } - var aa = a[0]; - var ac = a[2]; - var atx = a[4]; - var ab = a[1]; - var ad = a[3]; - var aty = a[5]; - var st = Math.sin(rad); - var ct = Math.cos(rad); - out2[0] = aa * ct + ab * st; - out2[1] = -aa * st + ab * ct; - out2[2] = ac * ct + ad * st; - out2[3] = -ac * st + ct * ad; - out2[4] = ct * (atx - pivot[0]) + st * (aty - pivot[1]) + pivot[0]; - out2[5] = ct * (aty - pivot[1]) - st * (atx - pivot[0]) + pivot[1]; - return out2; - } - function scale2(out2, a, v) { - var vx = v[0]; - var vy = v[1]; - out2[0] = a[0] * vx; - out2[1] = a[1] * vy; - out2[2] = a[2] * vx; - out2[3] = a[3] * vy; - out2[4] = a[4] * vx; - out2[5] = a[5] * vy; - return out2; - } - function invert(out2, a) { - var aa = a[0]; - var ac = a[2]; - var atx = a[4]; - var ab = a[1]; - var ad = a[3]; - var aty = a[5]; - var det = aa * ad - ab * ac; - if (!det) { - return null; - } - det = 1 / det; - out2[0] = ad * det; - out2[1] = -ab * det; - out2[2] = -ac * det; - out2[3] = aa * det; - out2[4] = (ac * aty - ad * atx) * det; - out2[5] = (ab * atx - aa * aty) * det; - return out2; - } - function clone3(a) { - var b = create2(); - copy2(b, a); - return b; - } - - // node_modules/zrender/lib/core/Point.js - var Point = function() { - function Point2(x, y) { - this.x = x || 0; - this.y = y || 0; - } - Point2.prototype.copy = function(other) { - this.x = other.x; - this.y = other.y; - return this; - }; - Point2.prototype.clone = function() { - return new Point2(this.x, this.y); - }; - Point2.prototype.set = function(x, y) { - this.x = x; - this.y = y; - return this; - }; - Point2.prototype.equal = function(other) { - return other.x === this.x && other.y === this.y; - }; - Point2.prototype.add = function(other) { - this.x += other.x; - this.y += other.y; - return this; - }; - Point2.prototype.scale = function(scalar) { - this.x *= scalar; - this.y *= scalar; - }; - Point2.prototype.scaleAndAdd = function(other, scalar) { - this.x += other.x * scalar; - this.y += other.y * scalar; - }; - Point2.prototype.sub = function(other) { - this.x -= other.x; - this.y -= other.y; - return this; - }; - Point2.prototype.dot = function(other) { - return this.x * other.x + this.y * other.y; - }; - Point2.prototype.len = function() { - return Math.sqrt(this.x * this.x + this.y * this.y); - }; - Point2.prototype.lenSquare = function() { - return this.x * this.x + this.y * this.y; - }; - Point2.prototype.normalize = function() { - var len2 = this.len(); - this.x /= len2; - this.y /= len2; - return this; - }; - Point2.prototype.distance = function(other) { - var dx = this.x - other.x; - var dy = this.y - other.y; - return Math.sqrt(dx * dx + dy * dy); - }; - Point2.prototype.distanceSquare = function(other) { - var dx = this.x - other.x; - var dy = this.y - other.y; - return dx * dx + dy * dy; - }; - Point2.prototype.negate = function() { - this.x = -this.x; - this.y = -this.y; - return this; - }; - Point2.prototype.transform = function(m2) { - if (!m2) { - return; - } - var x = this.x; - var y = this.y; - this.x = m2[0] * x + m2[2] * y + m2[4]; - this.y = m2[1] * x + m2[3] * y + m2[5]; - return this; - }; - Point2.prototype.toArray = function(out2) { - out2[0] = this.x; - out2[1] = this.y; - return out2; - }; - Point2.prototype.fromArray = function(input) { - this.x = input[0]; - this.y = input[1]; - }; - Point2.set = function(p, x, y) { - p.x = x; - p.y = y; - }; - Point2.copy = function(p, p2) { - p.x = p2.x; - p.y = p2.y; - }; - Point2.len = function(p) { - return Math.sqrt(p.x * p.x + p.y * p.y); - }; - Point2.lenSquare = function(p) { - return p.x * p.x + p.y * p.y; - }; - Point2.dot = function(p0, p1) { - return p0.x * p1.x + p0.y * p1.y; - }; - Point2.add = function(out2, p0, p1) { - out2.x = p0.x + p1.x; - out2.y = p0.y + p1.y; - }; - Point2.sub = function(out2, p0, p1) { - out2.x = p0.x - p1.x; - out2.y = p0.y - p1.y; - }; - Point2.scale = function(out2, p0, scalar) { - out2.x = p0.x * scalar; - out2.y = p0.y * scalar; - }; - Point2.scaleAndAdd = function(out2, p0, p1, scalar) { - out2.x = p0.x + p1.x * scalar; - out2.y = p0.y + p1.y * scalar; - }; - Point2.lerp = function(out2, p0, p1, t) { - var onet = 1 - t; - out2.x = onet * p0.x + t * p1.x; - out2.y = onet * p0.y + t * p1.y; - }; - return Point2; - }(); - var Point_default = Point; - - // node_modules/zrender/lib/core/BoundingRect.js - var mathMin = Math.min; - var mathMax = Math.max; - var lt = new Point_default(); - var rb = new Point_default(); - var lb = new Point_default(); - var rt = new Point_default(); - var minTv = new Point_default(); - var maxTv = new Point_default(); - var BoundingRect = function() { - function BoundingRect2(x, y, width, height) { - if (width < 0) { - x = x + width; - width = -width; - } - if (height < 0) { - y = y + height; - height = -height; - } - this.x = x; - this.y = y; - this.width = width; - this.height = height; - } - BoundingRect2.prototype.union = function(other) { - var x = mathMin(other.x, this.x); - var y = mathMin(other.y, this.y); - if (isFinite(this.x) && isFinite(this.width)) { - this.width = mathMax(other.x + other.width, this.x + this.width) - x; - } else { - this.width = other.width; - } - if (isFinite(this.y) && isFinite(this.height)) { - this.height = mathMax(other.y + other.height, this.y + this.height) - y; - } else { - this.height = other.height; - } - this.x = x; - this.y = y; - }; - BoundingRect2.prototype.applyTransform = function(m2) { - BoundingRect2.applyTransform(this, this, m2); - }; - BoundingRect2.prototype.calculateTransform = function(b) { - var a = this; - var sx = b.width / a.width; - var sy = b.height / a.height; - var m2 = create2(); - translate(m2, m2, [-a.x, -a.y]); - scale2(m2, m2, [sx, sy]); - translate(m2, m2, [b.x, b.y]); - return m2; - }; - BoundingRect2.prototype.intersect = function(b, mtv) { - if (!b) { - return false; - } - if (!(b instanceof BoundingRect2)) { - b = BoundingRect2.create(b); - } - var a = this; - var ax0 = a.x; - var ax1 = a.x + a.width; - var ay0 = a.y; - var ay1 = a.y + a.height; - var bx0 = b.x; - var bx1 = b.x + b.width; - var by0 = b.y; - var by1 = b.y + b.height; - var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0); - if (mtv) { - var dMin = Infinity; - var dMax = 0; - var d0 = Math.abs(ax1 - bx0); - var d1 = Math.abs(bx1 - ax0); - var d2 = Math.abs(ay1 - by0); - var d3 = Math.abs(by1 - ay0); - var dx = Math.min(d0, d1); - var dy = Math.min(d2, d3); - if (ax1 < bx0 || bx1 < ax0) { - if (dx > dMax) { - dMax = dx; - if (d0 < d1) { - Point_default.set(maxTv, -d0, 0); - } else { - Point_default.set(maxTv, d1, 0); - } - } - } else { - if (dx < dMin) { - dMin = dx; - if (d0 < d1) { - Point_default.set(minTv, d0, 0); - } else { - Point_default.set(minTv, -d1, 0); - } - } - } - if (ay1 < by0 || by1 < ay0) { - if (dy > dMax) { - dMax = dy; - if (d2 < d3) { - Point_default.set(maxTv, 0, -d2); - } else { - Point_default.set(maxTv, 0, d3); - } - } - } else { - if (dx < dMin) { - dMin = dx; - if (d2 < d3) { - Point_default.set(minTv, 0, d2); - } else { - Point_default.set(minTv, 0, -d3); - } - } - } - } - if (mtv) { - Point_default.copy(mtv, overlap ? minTv : maxTv); - } - return overlap; - }; - BoundingRect2.prototype.contain = function(x, y) { - var rect = this; - return x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height; - }; - BoundingRect2.prototype.clone = function() { - return new BoundingRect2(this.x, this.y, this.width, this.height); - }; - BoundingRect2.prototype.copy = function(other) { - BoundingRect2.copy(this, other); - }; - BoundingRect2.prototype.plain = function() { - return { - x: this.x, - y: this.y, - width: this.width, - height: this.height - }; - }; - BoundingRect2.prototype.isFinite = function() { - return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height); - }; - BoundingRect2.prototype.isZero = function() { - return this.width === 0 || this.height === 0; - }; - BoundingRect2.create = function(rect) { - return new BoundingRect2(rect.x, rect.y, rect.width, rect.height); - }; - BoundingRect2.copy = function(target, source) { - target.x = source.x; - target.y = source.y; - target.width = source.width; - target.height = source.height; - }; - BoundingRect2.applyTransform = function(target, source, m2) { - if (!m2) { - if (target !== source) { - BoundingRect2.copy(target, source); - } - return; - } - if (m2[1] < 1e-5 && m2[1] > -1e-5 && m2[2] < 1e-5 && m2[2] > -1e-5) { - var sx = m2[0]; - var sy = m2[3]; - var tx = m2[4]; - var ty = m2[5]; - target.x = source.x * sx + tx; - target.y = source.y * sy + ty; - target.width = source.width * sx; - target.height = source.height * sy; - if (target.width < 0) { - target.x += target.width; - target.width = -target.width; - } - if (target.height < 0) { - target.y += target.height; - target.height = -target.height; - } - return; - } - lt.x = lb.x = source.x; - lt.y = rt.y = source.y; - rb.x = rt.x = source.x + source.width; - rb.y = lb.y = source.y + source.height; - lt.transform(m2); - rt.transform(m2); - rb.transform(m2); - lb.transform(m2); - target.x = mathMin(lt.x, rb.x, lb.x, rt.x); - target.y = mathMin(lt.y, rb.y, lb.y, rt.y); - var maxX = mathMax(lt.x, rb.x, lb.x, rt.x); - var maxY = mathMax(lt.y, rb.y, lb.y, rt.y); - target.width = maxX - target.x; - target.height = maxY - target.y; - }; - return BoundingRect2; - }(); - var BoundingRect_default = BoundingRect; - - // node_modules/zrender/lib/Handler.js - var SILENT = "silent"; - function makeEventPacket(eveType, targetInfo, event) { - return { - type: eveType, - event, - target: targetInfo.target, - topTarget: targetInfo.topTarget, - cancelBubble: false, - offsetX: event.zrX, - offsetY: event.zrY, - gestureEvent: event.gestureEvent, - pinchX: event.pinchX, - pinchY: event.pinchY, - pinchScale: event.pinchScale, - wheelDelta: event.zrDelta, - zrByTouch: event.zrByTouch, - which: event.which, - stop: stopEvent - }; - } - function stopEvent() { - stop(this.event); - } - var EmptyProxy = function(_super) { - __extends(EmptyProxy2, _super); - function EmptyProxy2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.handler = null; - return _this; - } - EmptyProxy2.prototype.dispose = function() { - }; - EmptyProxy2.prototype.setCursor = function() { - }; - return EmptyProxy2; - }(Eventful_default); - var HoveredResult = /* @__PURE__ */ function() { - function HoveredResult2(x, y) { - this.x = x; - this.y = y; - } - return HoveredResult2; - }(); - var handlerNames = [ - "click", - "dblclick", - "mousewheel", - "mouseout", - "mouseup", - "mousedown", - "mousemove", - "contextmenu" - ]; - var tmpRect = new BoundingRect_default(0, 0, 0, 0); - var Handler = function(_super) { - __extends(Handler2, _super); - function Handler2(storage2, painter, proxy, painterRoot, pointerSize) { - var _this = _super.call(this) || this; - _this._hovered = new HoveredResult(0, 0); - _this.storage = storage2; - _this.painter = painter; - _this.painterRoot = painterRoot; - _this._pointerSize = pointerSize; - proxy = proxy || new EmptyProxy(); - _this.proxy = null; - _this.setHandlerProxy(proxy); - _this._draggingMgr = new Draggable_default(_this); - return _this; - } - Handler2.prototype.setHandlerProxy = function(proxy) { - if (this.proxy) { - this.proxy.dispose(); - } - if (proxy) { - each(handlerNames, function(name) { - proxy.on && proxy.on(name, this[name], this); - }, this); - proxy.handler = this; - } - this.proxy = proxy; - }; - Handler2.prototype.mousemove = function(event) { - var x = event.zrX; - var y = event.zrY; - var isOutside = isOutsideBoundary(this, x, y); - var lastHovered = this._hovered; - var lastHoveredTarget = lastHovered.target; - if (lastHoveredTarget && !lastHoveredTarget.__zr) { - lastHovered = this.findHover(lastHovered.x, lastHovered.y); - lastHoveredTarget = lastHovered.target; - } - var hovered = this._hovered = isOutside ? new HoveredResult(x, y) : this.findHover(x, y); - var hoveredTarget = hovered.target; - var proxy = this.proxy; - proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : "default"); - if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) { - this.dispatchToElement(lastHovered, "mouseout", event); - } - this.dispatchToElement(hovered, "mousemove", event); - if (hoveredTarget && hoveredTarget !== lastHoveredTarget) { - this.dispatchToElement(hovered, "mouseover", event); - } - }; - Handler2.prototype.mouseout = function(event) { - var eventControl = event.zrEventControl; - if (eventControl !== "only_globalout") { - this.dispatchToElement(this._hovered, "mouseout", event); - } - if (eventControl !== "no_globalout") { - this.trigger("globalout", { type: "globalout", event }); - } - }; - Handler2.prototype.resize = function() { - this._hovered = new HoveredResult(0, 0); - }; - Handler2.prototype.dispatch = function(eventName, eventArgs) { - var handler = this[eventName]; - handler && handler.call(this, eventArgs); - }; - Handler2.prototype.dispose = function() { - this.proxy.dispose(); - this.storage = null; - this.proxy = null; - this.painter = null; - }; - Handler2.prototype.setCursorStyle = function(cursorStyle) { - var proxy = this.proxy; - proxy.setCursor && proxy.setCursor(cursorStyle); - }; - Handler2.prototype.dispatchToElement = function(targetInfo, eventName, event) { - targetInfo = targetInfo || {}; - var el = targetInfo.target; - if (el && el.silent) { - return; - } - var eventKey = "on" + eventName; - var eventPacket = makeEventPacket(eventName, targetInfo, event); - while (el) { - el[eventKey] && (eventPacket.cancelBubble = !!el[eventKey].call(el, eventPacket)); - el.trigger(eventName, eventPacket); - el = el.__hostTarget ? el.__hostTarget : el.parent; - if (eventPacket.cancelBubble) { - break; - } - } - if (!eventPacket.cancelBubble) { - this.trigger(eventName, eventPacket); - if (this.painter && this.painter.eachOtherLayer) { - this.painter.eachOtherLayer(function(layer) { - if (typeof layer[eventKey] === "function") { - layer[eventKey].call(layer, eventPacket); - } - if (layer.trigger) { - layer.trigger(eventName, eventPacket); - } - }); - } - } - }; - Handler2.prototype.findHover = function(x, y, exclude) { - var list = this.storage.getDisplayList(); - var out2 = new HoveredResult(x, y); - setHoverTarget(list, out2, x, y, exclude); - if (this._pointerSize && !out2.target) { - var candidates = []; - var pointerSize = this._pointerSize; - var targetSizeHalf = pointerSize / 2; - var pointerRect = new BoundingRect_default(x - targetSizeHalf, y - targetSizeHalf, pointerSize, pointerSize); - for (var i = list.length - 1; i >= 0; i--) { - var el = list[i]; - if (el !== exclude && !el.ignore && !el.ignoreCoarsePointer && (!el.parent || !el.parent.ignoreCoarsePointer)) { - tmpRect.copy(el.getBoundingRect()); - if (el.transform) { - tmpRect.applyTransform(el.transform); - } - if (tmpRect.intersect(pointerRect)) { - candidates.push(el); - } - } - } - if (candidates.length) { - var rStep = 4; - var thetaStep = Math.PI / 12; - var PI210 = Math.PI * 2; - for (var r = 0; r < targetSizeHalf; r += rStep) { - for (var theta = 0; theta < PI210; theta += thetaStep) { - var x1 = x + r * Math.cos(theta); - var y1 = y + r * Math.sin(theta); - setHoverTarget(candidates, out2, x1, y1, exclude); - if (out2.target) { - return out2; - } - } - } - } - } - return out2; - }; - Handler2.prototype.processGesture = function(event, stage) { - if (!this._gestureMgr) { - this._gestureMgr = new GestureMgr(); - } - var gestureMgr = this._gestureMgr; - stage === "start" && gestureMgr.clear(); - var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom); - stage === "end" && gestureMgr.clear(); - if (gestureInfo) { - var type = gestureInfo.type; - event.gestureEvent = type; - var res = new HoveredResult(); - res.target = gestureInfo.target; - this.dispatchToElement(res, type, gestureInfo.event); - } - }; - return Handler2; - }(Eventful_default); - each(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function(name) { - Handler.prototype[name] = function(event) { - var x = event.zrX; - var y = event.zrY; - var isOutside = isOutsideBoundary(this, x, y); - var hovered; - var hoveredTarget; - if (name !== "mouseup" || !isOutside) { - hovered = this.findHover(x, y); - hoveredTarget = hovered.target; - } - if (name === "mousedown") { - this._downEl = hoveredTarget; - this._downPoint = [event.zrX, event.zrY]; - this._upEl = hoveredTarget; - } else if (name === "mouseup") { - this._upEl = hoveredTarget; - } else if (name === "click") { - if (this._downEl !== this._upEl || !this._downPoint || dist(this._downPoint, [event.zrX, event.zrY]) > 4) { - return; - } - this._downPoint = null; - } - this.dispatchToElement(hovered, name, event); - }; - }); - function isHover(displayable, x, y) { - if (displayable[displayable.rectHover ? "rectContain" : "contain"](x, y)) { - var el = displayable; - var isSilent = void 0; - var ignoreClip = false; - while (el) { - if (el.ignoreClip) { - ignoreClip = true; - } - if (!ignoreClip) { - var clipPath = el.getClipPath(); - if (clipPath && !clipPath.contain(x, y)) { - return false; - } - } - if (el.silent) { - isSilent = true; - } - var hostEl = el.__hostTarget; - el = hostEl ? hostEl : el.parent; - } - return isSilent ? SILENT : true; - } - return false; - } - function setHoverTarget(list, out2, x, y, exclude) { - for (var i = list.length - 1; i >= 0; i--) { - var el = list[i]; - var hoverCheckResult = void 0; - if (el !== exclude && !el.ignore && (hoverCheckResult = isHover(el, x, y))) { - !out2.topTarget && (out2.topTarget = el); - if (hoverCheckResult !== SILENT) { - out2.target = el; - break; - } - } - } - } - function isOutsideBoundary(handlerInstance, x, y) { - var painter = handlerInstance.painter; - return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight(); - } - var Handler_default = Handler; - - // node_modules/zrender/lib/core/timsort.js - var DEFAULT_MIN_MERGE = 32; - var DEFAULT_MIN_GALLOPING = 7; - function minRunLength(n) { - var r = 0; - while (n >= DEFAULT_MIN_MERGE) { - r |= n & 1; - n >>= 1; - } - return n + r; - } - function makeAscendingRun(array, lo, hi, compare2) { - var runHi = lo + 1; - if (runHi === hi) { - return 1; - } - if (compare2(array[runHi++], array[lo]) < 0) { - while (runHi < hi && compare2(array[runHi], array[runHi - 1]) < 0) { - runHi++; - } - reverseRun(array, lo, runHi); - } else { - while (runHi < hi && compare2(array[runHi], array[runHi - 1]) >= 0) { - runHi++; - } - } - return runHi - lo; - } - function reverseRun(array, lo, hi) { - hi--; - while (lo < hi) { - var t = array[lo]; - array[lo++] = array[hi]; - array[hi--] = t; - } - } - function binaryInsertionSort(array, lo, hi, start3, compare2) { - if (start3 === lo) { - start3++; - } - for (; start3 < hi; start3++) { - var pivot = array[start3]; - var left = lo; - var right = start3; - var mid; - while (left < right) { - mid = left + right >>> 1; - if (compare2(pivot, array[mid]) < 0) { - right = mid; - } else { - left = mid + 1; - } - } - var n = start3 - left; - switch (n) { - case 3: - array[left + 3] = array[left + 2]; - case 2: - array[left + 2] = array[left + 1]; - case 1: - array[left + 1] = array[left]; - break; - default: - while (n > 0) { - array[left + n] = array[left + n - 1]; - n--; - } - } - array[left] = pivot; - } - } - function gallopLeft(value, array, start3, length2, hint, compare2) { - var lastOffset = 0; - var maxOffset = 0; - var offset3 = 1; - if (compare2(value, array[start3 + hint]) > 0) { - maxOffset = length2 - hint; - while (offset3 < maxOffset && compare2(value, array[start3 + hint + offset3]) > 0) { - lastOffset = offset3; - offset3 = (offset3 << 1) + 1; - if (offset3 <= 0) { - offset3 = maxOffset; - } - } - if (offset3 > maxOffset) { - offset3 = maxOffset; - } - lastOffset += hint; - offset3 += hint; - } else { - maxOffset = hint + 1; - while (offset3 < maxOffset && compare2(value, array[start3 + hint - offset3]) <= 0) { - lastOffset = offset3; - offset3 = (offset3 << 1) + 1; - if (offset3 <= 0) { - offset3 = maxOffset; - } - } - if (offset3 > maxOffset) { - offset3 = maxOffset; - } - var tmp = lastOffset; - lastOffset = hint - offset3; - offset3 = hint - tmp; - } - lastOffset++; - while (lastOffset < offset3) { - var m2 = lastOffset + (offset3 - lastOffset >>> 1); - if (compare2(value, array[start3 + m2]) > 0) { - lastOffset = m2 + 1; - } else { - offset3 = m2; - } - } - return offset3; - } - function gallopRight(value, array, start3, length2, hint, compare2) { - var lastOffset = 0; - var maxOffset = 0; - var offset3 = 1; - if (compare2(value, array[start3 + hint]) < 0) { - maxOffset = hint + 1; - while (offset3 < maxOffset && compare2(value, array[start3 + hint - offset3]) < 0) { - lastOffset = offset3; - offset3 = (offset3 << 1) + 1; - if (offset3 <= 0) { - offset3 = maxOffset; - } - } - if (offset3 > maxOffset) { - offset3 = maxOffset; - } - var tmp = lastOffset; - lastOffset = hint - offset3; - offset3 = hint - tmp; - } else { - maxOffset = length2 - hint; - while (offset3 < maxOffset && compare2(value, array[start3 + hint + offset3]) >= 0) { - lastOffset = offset3; - offset3 = (offset3 << 1) + 1; - if (offset3 <= 0) { - offset3 = maxOffset; - } - } - if (offset3 > maxOffset) { - offset3 = maxOffset; - } - lastOffset += hint; - offset3 += hint; - } - lastOffset++; - while (lastOffset < offset3) { - var m2 = lastOffset + (offset3 - lastOffset >>> 1); - if (compare2(value, array[start3 + m2]) < 0) { - offset3 = m2; - } else { - lastOffset = m2 + 1; - } - } - return offset3; - } - function TimSort(array, compare2) { - var minGallop = DEFAULT_MIN_GALLOPING; - var runStart; - var runLength; - var stackSize = 0; - var tmp = []; - runStart = []; - runLength = []; - function pushRun(_runStart, _runLength) { - runStart[stackSize] = _runStart; - runLength[stackSize] = _runLength; - stackSize += 1; - } - function mergeRuns() { - while (stackSize > 1) { - var n = stackSize - 2; - if (n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1] || n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1]) { - if (runLength[n - 1] < runLength[n + 1]) { - n--; - } - } else if (runLength[n] > runLength[n + 1]) { - break; - } - mergeAt(n); - } - } - function forceMergeRuns() { - while (stackSize > 1) { - var n = stackSize - 2; - if (n > 0 && runLength[n - 1] < runLength[n + 1]) { - n--; - } - mergeAt(n); - } - } - function mergeAt(i) { - var start1 = runStart[i]; - var length1 = runLength[i]; - var start22 = runStart[i + 1]; - var length2 = runLength[i + 1]; - runLength[i] = length1 + length2; - if (i === stackSize - 3) { - runStart[i + 1] = runStart[i + 2]; - runLength[i + 1] = runLength[i + 2]; - } - stackSize--; - var k = gallopRight(array[start22], array, start1, length1, 0, compare2); - start1 += k; - length1 -= k; - if (length1 === 0) { - return; - } - length2 = gallopLeft(array[start1 + length1 - 1], array, start22, length2, length2 - 1, compare2); - if (length2 === 0) { - return; - } - if (length1 <= length2) { - mergeLow(start1, length1, start22, length2); - } else { - mergeHigh(start1, length1, start22, length2); - } - } - function mergeLow(start1, length1, start22, length2) { - var i = 0; - for (i = 0; i < length1; i++) { - tmp[i] = array[start1 + i]; - } - var cursor1 = 0; - var cursor2 = start22; - var dest = start1; - array[dest++] = array[cursor2++]; - if (--length2 === 0) { - for (i = 0; i < length1; i++) { - array[dest + i] = tmp[cursor1 + i]; - } - return; - } - if (length1 === 1) { - for (i = 0; i < length2; i++) { - array[dest + i] = array[cursor2 + i]; - } - array[dest + length2] = tmp[cursor1]; - return; - } - var _minGallop = minGallop; - var count1; - var count2; - var exit; - while (1) { - count1 = 0; - count2 = 0; - exit = false; - do { - if (compare2(array[cursor2], tmp[cursor1]) < 0) { - array[dest++] = array[cursor2++]; - count2++; - count1 = 0; - if (--length2 === 0) { - exit = true; - break; - } - } else { - array[dest++] = tmp[cursor1++]; - count1++; - count2 = 0; - if (--length1 === 1) { - exit = true; - break; - } - } - } while ((count1 | count2) < _minGallop); - if (exit) { - break; - } - do { - count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare2); - if (count1 !== 0) { - for (i = 0; i < count1; i++) { - array[dest + i] = tmp[cursor1 + i]; - } - dest += count1; - cursor1 += count1; - length1 -= count1; - if (length1 <= 1) { - exit = true; - break; - } - } - array[dest++] = array[cursor2++]; - if (--length2 === 0) { - exit = true; - break; - } - count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare2); - if (count2 !== 0) { - for (i = 0; i < count2; i++) { - array[dest + i] = array[cursor2 + i]; - } - dest += count2; - cursor2 += count2; - length2 -= count2; - if (length2 === 0) { - exit = true; - break; - } - } - array[dest++] = tmp[cursor1++]; - if (--length1 === 1) { - exit = true; - break; - } - _minGallop--; - } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING); - if (exit) { - break; - } - if (_minGallop < 0) { - _minGallop = 0; - } - _minGallop += 2; - } - minGallop = _minGallop; - minGallop < 1 && (minGallop = 1); - if (length1 === 1) { - for (i = 0; i < length2; i++) { - array[dest + i] = array[cursor2 + i]; - } - array[dest + length2] = tmp[cursor1]; - } else if (length1 === 0) { - throw new Error(); - } else { - for (i = 0; i < length1; i++) { - array[dest + i] = tmp[cursor1 + i]; - } - } - } - function mergeHigh(start1, length1, start22, length2) { - var i = 0; - for (i = 0; i < length2; i++) { - tmp[i] = array[start22 + i]; - } - var cursor1 = start1 + length1 - 1; - var cursor2 = length2 - 1; - var dest = start22 + length2 - 1; - var customCursor = 0; - var customDest = 0; - array[dest--] = array[cursor1--]; - if (--length1 === 0) { - customCursor = dest - (length2 - 1); - for (i = 0; i < length2; i++) { - array[customCursor + i] = tmp[i]; - } - return; - } - if (length2 === 1) { - dest -= length1; - cursor1 -= length1; - customDest = dest + 1; - customCursor = cursor1 + 1; - for (i = length1 - 1; i >= 0; i--) { - array[customDest + i] = array[customCursor + i]; - } - array[dest] = tmp[cursor2]; - return; - } - var _minGallop = minGallop; - while (true) { - var count1 = 0; - var count2 = 0; - var exit = false; - do { - if (compare2(tmp[cursor2], array[cursor1]) < 0) { - array[dest--] = array[cursor1--]; - count1++; - count2 = 0; - if (--length1 === 0) { - exit = true; - break; - } - } else { - array[dest--] = tmp[cursor2--]; - count2++; - count1 = 0; - if (--length2 === 1) { - exit = true; - break; - } - } - } while ((count1 | count2) < _minGallop); - if (exit) { - break; - } - do { - count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare2); - if (count1 !== 0) { - dest -= count1; - cursor1 -= count1; - length1 -= count1; - customDest = dest + 1; - customCursor = cursor1 + 1; - for (i = count1 - 1; i >= 0; i--) { - array[customDest + i] = array[customCursor + i]; - } - if (length1 === 0) { - exit = true; - break; - } - } - array[dest--] = tmp[cursor2--]; - if (--length2 === 1) { - exit = true; - break; - } - count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare2); - if (count2 !== 0) { - dest -= count2; - cursor2 -= count2; - length2 -= count2; - customDest = dest + 1; - customCursor = cursor2 + 1; - for (i = 0; i < count2; i++) { - array[customDest + i] = tmp[customCursor + i]; - } - if (length2 <= 1) { - exit = true; - break; - } - } - array[dest--] = array[cursor1--]; - if (--length1 === 0) { - exit = true; - break; - } - _minGallop--; - } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING); - if (exit) { - break; - } - if (_minGallop < 0) { - _minGallop = 0; - } - _minGallop += 2; - } - minGallop = _minGallop; - if (minGallop < 1) { - minGallop = 1; - } - if (length2 === 1) { - dest -= length1; - cursor1 -= length1; - customDest = dest + 1; - customCursor = cursor1 + 1; - for (i = length1 - 1; i >= 0; i--) { - array[customDest + i] = array[customCursor + i]; - } - array[dest] = tmp[cursor2]; - } else if (length2 === 0) { - throw new Error(); - } else { - customCursor = dest - (length2 - 1); - for (i = 0; i < length2; i++) { - array[customCursor + i] = tmp[i]; - } - } - } - return { - mergeRuns, - forceMergeRuns, - pushRun - }; - } - function sort(array, compare2, lo, hi) { - if (!lo) { - lo = 0; - } - if (!hi) { - hi = array.length; - } - var remaining = hi - lo; - if (remaining < 2) { - return; - } - var runLength = 0; - if (remaining < DEFAULT_MIN_MERGE) { - runLength = makeAscendingRun(array, lo, hi, compare2); - binaryInsertionSort(array, lo, hi, lo + runLength, compare2); - return; - } - var ts = TimSort(array, compare2); - var minRun = minRunLength(remaining); - do { - runLength = makeAscendingRun(array, lo, hi, compare2); - if (runLength < minRun) { - var force = remaining; - if (force > minRun) { - force = minRun; - } - binaryInsertionSort(array, lo, lo + force, lo + runLength, compare2); - runLength = force; - } - ts.pushRun(lo, runLength); - ts.mergeRuns(); - remaining -= runLength; - lo += runLength; - } while (remaining !== 0); - ts.forceMergeRuns(); - } - - // node_modules/zrender/lib/graphic/constants.js - var REDRAW_BIT = 1; - var STYLE_CHANGED_BIT = 2; - var SHAPE_CHANGED_BIT = 4; - - // node_modules/zrender/lib/Storage.js - var invalidZErrorLogged = false; - function logInvalidZError() { - if (invalidZErrorLogged) { - return; - } - invalidZErrorLogged = true; - console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"); - } - function shapeCompareFunc(a, b) { - if (a.zlevel === b.zlevel) { - if (a.z === b.z) { - return a.z2 - b.z2; - } - return a.z - b.z; - } - return a.zlevel - b.zlevel; - } - var Storage = function() { - function Storage2() { - this._roots = []; - this._displayList = []; - this._displayListLen = 0; - this.displayableSortFunc = shapeCompareFunc; - } - Storage2.prototype.traverse = function(cb, context) { - for (var i = 0; i < this._roots.length; i++) { - this._roots[i].traverse(cb, context); - } - }; - Storage2.prototype.getDisplayList = function(update, includeIgnore) { - includeIgnore = includeIgnore || false; - var displayList = this._displayList; - if (update || !displayList.length) { - this.updateDisplayList(includeIgnore); - } - return displayList; - }; - Storage2.prototype.updateDisplayList = function(includeIgnore) { - this._displayListLen = 0; - var roots2 = this._roots; - var displayList = this._displayList; - for (var i = 0, len2 = roots2.length; i < len2; i++) { - this._updateAndAddDisplayable(roots2[i], null, includeIgnore); - } - displayList.length = this._displayListLen; - sort(displayList, shapeCompareFunc); - }; - Storage2.prototype._updateAndAddDisplayable = function(el, clipPaths, includeIgnore) { - if (el.ignore && !includeIgnore) { - return; - } - el.beforeUpdate(); - el.update(); - el.afterUpdate(); - var userSetClipPath = el.getClipPath(); - if (el.ignoreClip) { - clipPaths = null; - } else if (userSetClipPath) { - if (clipPaths) { - clipPaths = clipPaths.slice(); - } else { - clipPaths = []; - } - var currentClipPath = userSetClipPath; - var parentClipPath = el; - while (currentClipPath) { - currentClipPath.parent = parentClipPath; - currentClipPath.updateTransform(); - clipPaths.push(currentClipPath); - parentClipPath = currentClipPath; - currentClipPath = currentClipPath.getClipPath(); - } - } - if (el.childrenRef) { - var children = el.childrenRef(); - for (var i = 0; i < children.length; i++) { - var child = children[i]; - if (el.__dirty) { - child.__dirty |= REDRAW_BIT; - } - this._updateAndAddDisplayable(child, clipPaths, includeIgnore); - } - el.__dirty = 0; - } else { - var disp = el; - if (clipPaths && clipPaths.length) { - disp.__clipPaths = clipPaths; - } else if (disp.__clipPaths && disp.__clipPaths.length > 0) { - disp.__clipPaths = []; - } - if (isNaN(disp.z)) { - logInvalidZError(); - disp.z = 0; - } - if (isNaN(disp.z2)) { - logInvalidZError(); - disp.z2 = 0; - } - if (isNaN(disp.zlevel)) { - logInvalidZError(); - disp.zlevel = 0; - } - this._displayList[this._displayListLen++] = disp; - } - var decalEl = el.getDecalElement && el.getDecalElement(); - if (decalEl) { - this._updateAndAddDisplayable(decalEl, clipPaths, includeIgnore); - } - var textGuide = el.getTextGuideLine(); - if (textGuide) { - this._updateAndAddDisplayable(textGuide, clipPaths, includeIgnore); - } - var textEl = el.getTextContent(); - if (textEl) { - this._updateAndAddDisplayable(textEl, clipPaths, includeIgnore); - } - }; - Storage2.prototype.addRoot = function(el) { - if (el.__zr && el.__zr.storage === this) { - return; - } - this._roots.push(el); - }; - Storage2.prototype.delRoot = function(el) { - if (el instanceof Array) { - for (var i = 0, l = el.length; i < l; i++) { - this.delRoot(el[i]); - } - return; - } - var idx = indexOf(this._roots, el); - if (idx >= 0) { - this._roots.splice(idx, 1); - } - }; - Storage2.prototype.delAllRoots = function() { - this._roots = []; - this._displayList = []; - this._displayListLen = 0; - return; - }; - Storage2.prototype.getRoots = function() { - return this._roots; - }; - Storage2.prototype.dispose = function() { - this._displayList = null; - this._roots = null; - }; - return Storage2; - }(); - var Storage_default = Storage; - - // node_modules/zrender/lib/animation/requestAnimationFrame.js - var requestAnimationFrame2; - requestAnimationFrame2 = env_default.hasGlobalWindow && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function(func) { - return setTimeout(func, 16); - }; - var requestAnimationFrame_default = requestAnimationFrame2; - - // node_modules/zrender/lib/animation/easing.js - var easingFuncs = { - linear: function(k) { - return k; - }, - quadraticIn: function(k) { - return k * k; - }, - quadraticOut: function(k) { - return k * (2 - k); - }, - quadraticInOut: function(k) { - if ((k *= 2) < 1) { - return 0.5 * k * k; - } - return -0.5 * (--k * (k - 2) - 1); - }, - cubicIn: function(k) { - return k * k * k; - }, - cubicOut: function(k) { - return --k * k * k + 1; - }, - cubicInOut: function(k) { - if ((k *= 2) < 1) { - return 0.5 * k * k * k; - } - return 0.5 * ((k -= 2) * k * k + 2); - }, - quarticIn: function(k) { - return k * k * k * k; - }, - quarticOut: function(k) { - return 1 - --k * k * k * k; - }, - quarticInOut: function(k) { - if ((k *= 2) < 1) { - return 0.5 * k * k * k * k; - } - return -0.5 * ((k -= 2) * k * k * k - 2); - }, - quinticIn: function(k) { - return k * k * k * k * k; - }, - quinticOut: function(k) { - return --k * k * k * k * k + 1; - }, - quinticInOut: function(k) { - if ((k *= 2) < 1) { - return 0.5 * k * k * k * k * k; - } - return 0.5 * ((k -= 2) * k * k * k * k + 2); - }, - sinusoidalIn: function(k) { - return 1 - Math.cos(k * Math.PI / 2); - }, - sinusoidalOut: function(k) { - return Math.sin(k * Math.PI / 2); - }, - sinusoidalInOut: function(k) { - return 0.5 * (1 - Math.cos(Math.PI * k)); - }, - exponentialIn: function(k) { - return k === 0 ? 0 : Math.pow(1024, k - 1); - }, - exponentialOut: function(k) { - return k === 1 ? 1 : 1 - Math.pow(2, -10 * k); - }, - exponentialInOut: function(k) { - if (k === 0) { - return 0; - } - if (k === 1) { - return 1; - } - if ((k *= 2) < 1) { - return 0.5 * Math.pow(1024, k - 1); - } - return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2); - }, - circularIn: function(k) { - return 1 - Math.sqrt(1 - k * k); - }, - circularOut: function(k) { - return Math.sqrt(1 - --k * k); - }, - circularInOut: function(k) { - if ((k *= 2) < 1) { - return -0.5 * (Math.sqrt(1 - k * k) - 1); - } - return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1); - }, - elasticIn: function(k) { - var s; - var a = 0.1; - var p = 0.4; - if (k === 0) { - return 0; - } - if (k === 1) { - return 1; - } - if (!a || a < 1) { - a = 1; - s = p / 4; - } else { - s = p * Math.asin(1 / a) / (2 * Math.PI); - } - return -(a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p)); - }, - elasticOut: function(k) { - var s; - var a = 0.1; - var p = 0.4; - if (k === 0) { - return 0; - } - if (k === 1) { - return 1; - } - if (!a || a < 1) { - a = 1; - s = p / 4; - } else { - s = p * Math.asin(1 / a) / (2 * Math.PI); - } - return a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1; - }, - elasticInOut: function(k) { - var s; - var a = 0.1; - var p = 0.4; - if (k === 0) { - return 0; - } - if (k === 1) { - return 1; - } - if (!a || a < 1) { - a = 1; - s = p / 4; - } else { - s = p * Math.asin(1 / a) / (2 * Math.PI); - } - if ((k *= 2) < 1) { - return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p)); - } - return a * Math.pow(2, -10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1; - }, - backIn: function(k) { - var s = 1.70158; - return k * k * ((s + 1) * k - s); - }, - backOut: function(k) { - var s = 1.70158; - return --k * k * ((s + 1) * k + s) + 1; - }, - backInOut: function(k) { - var s = 1.70158 * 1.525; - if ((k *= 2) < 1) { - return 0.5 * (k * k * ((s + 1) * k - s)); - } - return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2); - }, - bounceIn: function(k) { - return 1 - easingFuncs.bounceOut(1 - k); - }, - bounceOut: function(k) { - if (k < 1 / 2.75) { - return 7.5625 * k * k; - } else if (k < 2 / 2.75) { - return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75; - } else if (k < 2.5 / 2.75) { - return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375; - } else { - return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375; - } - }, - bounceInOut: function(k) { - if (k < 0.5) { - return easingFuncs.bounceIn(k * 2) * 0.5; - } - return easingFuncs.bounceOut(k * 2 - 1) * 0.5 + 0.5; - } - }; - var easing_default = easingFuncs; - - // node_modules/zrender/lib/core/curve.js - var mathPow = Math.pow; - var mathSqrt = Math.sqrt; - var EPSILON = 1e-8; - var EPSILON_NUMERIC = 1e-4; - var THREE_SQRT = mathSqrt(3); - var ONE_THIRD = 1 / 3; - var _v0 = create(); - var _v1 = create(); - var _v2 = create(); - function isAroundZero(val) { - return val > -EPSILON && val < EPSILON; - } - function isNotAroundZero(val) { - return val > EPSILON || val < -EPSILON; - } - function cubicAt(p0, p1, p2, p3, t) { - var onet = 1 - t; - return onet * onet * (onet * p0 + 3 * t * p1) + t * t * (t * p3 + 3 * onet * p2); - } - function cubicDerivativeAt(p0, p1, p2, p3, t) { - var onet = 1 - t; - return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet + (p3 - p2) * t * t); - } - function cubicRootAt(p0, p1, p2, p3, val, roots2) { - var a = p3 + 3 * (p1 - p2) - p0; - var b = 3 * (p2 - p1 * 2 + p0); - var c = 3 * (p1 - p0); - var d = p0 - val; - var A = b * b - 3 * a * c; - var B = b * c - 9 * a * d; - var C = c * c - 3 * b * d; - var n = 0; - if (isAroundZero(A) && isAroundZero(B)) { - if (isAroundZero(b)) { - roots2[0] = 0; - } else { - var t1 = -c / b; - if (t1 >= 0 && t1 <= 1) { - roots2[n++] = t1; - } - } - } else { - var disc = B * B - 4 * A * C; - if (isAroundZero(disc)) { - var K = B / A; - var t1 = -b / a + K; - var t2 = -K / 2; - if (t1 >= 0 && t1 <= 1) { - roots2[n++] = t1; - } - if (t2 >= 0 && t2 <= 1) { - roots2[n++] = t2; - } - } else if (disc > 0) { - var discSqrt = mathSqrt(disc); - var Y1 = A * b + 1.5 * a * (-B + discSqrt); - var Y2 = A * b + 1.5 * a * (-B - discSqrt); - if (Y1 < 0) { - Y1 = -mathPow(-Y1, ONE_THIRD); - } else { - Y1 = mathPow(Y1, ONE_THIRD); - } - if (Y2 < 0) { - Y2 = -mathPow(-Y2, ONE_THIRD); - } else { - Y2 = mathPow(Y2, ONE_THIRD); - } - var t1 = (-b - (Y1 + Y2)) / (3 * a); - if (t1 >= 0 && t1 <= 1) { - roots2[n++] = t1; - } - } else { - var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A)); - var theta = Math.acos(T) / 3; - var ASqrt = mathSqrt(A); - var tmp = Math.cos(theta); - var t1 = (-b - 2 * ASqrt * tmp) / (3 * a); - var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a); - var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a); - if (t1 >= 0 && t1 <= 1) { - roots2[n++] = t1; - } - if (t2 >= 0 && t2 <= 1) { - roots2[n++] = t2; - } - if (t3 >= 0 && t3 <= 1) { - roots2[n++] = t3; - } - } - } - return n; - } - function cubicExtrema(p0, p1, p2, p3, extrema2) { - var b = 6 * p2 - 12 * p1 + 6 * p0; - var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2; - var c = 3 * p1 - 3 * p0; - var n = 0; - if (isAroundZero(a)) { - if (isNotAroundZero(b)) { - var t1 = -c / b; - if (t1 >= 0 && t1 <= 1) { - extrema2[n++] = t1; - } - } - } else { - var disc = b * b - 4 * a * c; - if (isAroundZero(disc)) { - extrema2[0] = -b / (2 * a); - } else if (disc > 0) { - var discSqrt = mathSqrt(disc); - var t1 = (-b + discSqrt) / (2 * a); - var t2 = (-b - discSqrt) / (2 * a); - if (t1 >= 0 && t1 <= 1) { - extrema2[n++] = t1; - } - if (t2 >= 0 && t2 <= 1) { - extrema2[n++] = t2; - } - } - } - return n; - } - function cubicSubdivide(p0, p1, p2, p3, t, out2) { - var p01 = (p1 - p0) * t + p0; - var p12 = (p2 - p1) * t + p1; - var p23 = (p3 - p2) * t + p2; - var p012 = (p12 - p01) * t + p01; - var p123 = (p23 - p12) * t + p12; - var p0123 = (p123 - p012) * t + p012; - out2[0] = p0; - out2[1] = p01; - out2[2] = p012; - out2[3] = p0123; - out2[4] = p0123; - out2[5] = p123; - out2[6] = p23; - out2[7] = p3; - } - function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out2) { - var t; - var interval = 5e-3; - var d = Infinity; - var prev; - var next; - var d1; - var d2; - _v0[0] = x; - _v0[1] = y; - for (var _t = 0; _t < 1; _t += 0.05) { - _v1[0] = cubicAt(x0, x1, x2, x3, _t); - _v1[1] = cubicAt(y0, y1, y2, y3, _t); - d1 = distSquare(_v0, _v1); - if (d1 < d) { - t = _t; - d = d1; - } - } - d = Infinity; - for (var i = 0; i < 32; i++) { - if (interval < EPSILON_NUMERIC) { - break; - } - prev = t - interval; - next = t + interval; - _v1[0] = cubicAt(x0, x1, x2, x3, prev); - _v1[1] = cubicAt(y0, y1, y2, y3, prev); - d1 = distSquare(_v1, _v0); - if (prev >= 0 && d1 < d) { - t = prev; - d = d1; - } else { - _v2[0] = cubicAt(x0, x1, x2, x3, next); - _v2[1] = cubicAt(y0, y1, y2, y3, next); - d2 = distSquare(_v2, _v0); - if (next <= 1 && d2 < d) { - t = next; - d = d2; - } else { - interval *= 0.5; - } - } - } - if (out2) { - out2[0] = cubicAt(x0, x1, x2, x3, t); - out2[1] = cubicAt(y0, y1, y2, y3, t); - } - return mathSqrt(d); - } - function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) { - var px = x0; - var py = y0; - var d = 0; - var step = 1 / iteration; - for (var i = 1; i <= iteration; i++) { - var t = i * step; - var x = cubicAt(x0, x1, x2, x3, t); - var y = cubicAt(y0, y1, y2, y3, t); - var dx = x - px; - var dy = y - py; - d += Math.sqrt(dx * dx + dy * dy); - px = x; - py = y; - } - return d; - } - function quadraticAt(p0, p1, p2, t) { - var onet = 1 - t; - return onet * (onet * p0 + 2 * t * p1) + t * t * p2; - } - function quadraticDerivativeAt(p0, p1, p2, t) { - return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1)); - } - function quadraticRootAt(p0, p1, p2, val, roots2) { - var a = p0 - 2 * p1 + p2; - var b = 2 * (p1 - p0); - var c = p0 - val; - var n = 0; - if (isAroundZero(a)) { - if (isNotAroundZero(b)) { - var t1 = -c / b; - if (t1 >= 0 && t1 <= 1) { - roots2[n++] = t1; - } - } - } else { - var disc = b * b - 4 * a * c; - if (isAroundZero(disc)) { - var t1 = -b / (2 * a); - if (t1 >= 0 && t1 <= 1) { - roots2[n++] = t1; - } - } else if (disc > 0) { - var discSqrt = mathSqrt(disc); - var t1 = (-b + discSqrt) / (2 * a); - var t2 = (-b - discSqrt) / (2 * a); - if (t1 >= 0 && t1 <= 1) { - roots2[n++] = t1; - } - if (t2 >= 0 && t2 <= 1) { - roots2[n++] = t2; - } - } - } - return n; - } - function quadraticExtremum(p0, p1, p2) { - var divider = p0 + p2 - 2 * p1; - if (divider === 0) { - return 0.5; - } else { - return (p0 - p1) / divider; - } - } - function quadraticSubdivide(p0, p1, p2, t, out2) { - var p01 = (p1 - p0) * t + p0; - var p12 = (p2 - p1) * t + p1; - var p012 = (p12 - p01) * t + p01; - out2[0] = p0; - out2[1] = p01; - out2[2] = p012; - out2[3] = p012; - out2[4] = p12; - out2[5] = p2; - } - function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out2) { - var t; - var interval = 5e-3; - var d = Infinity; - _v0[0] = x; - _v0[1] = y; - for (var _t = 0; _t < 1; _t += 0.05) { - _v1[0] = quadraticAt(x0, x1, x2, _t); - _v1[1] = quadraticAt(y0, y1, y2, _t); - var d1 = distSquare(_v0, _v1); - if (d1 < d) { - t = _t; - d = d1; - } - } - d = Infinity; - for (var i = 0; i < 32; i++) { - if (interval < EPSILON_NUMERIC) { - break; - } - var prev = t - interval; - var next = t + interval; - _v1[0] = quadraticAt(x0, x1, x2, prev); - _v1[1] = quadraticAt(y0, y1, y2, prev); - var d1 = distSquare(_v1, _v0); - if (prev >= 0 && d1 < d) { - t = prev; - d = d1; - } else { - _v2[0] = quadraticAt(x0, x1, x2, next); - _v2[1] = quadraticAt(y0, y1, y2, next); - var d2 = distSquare(_v2, _v0); - if (next <= 1 && d2 < d) { - t = next; - d = d2; - } else { - interval *= 0.5; - } - } - } - if (out2) { - out2[0] = quadraticAt(x0, x1, x2, t); - out2[1] = quadraticAt(y0, y1, y2, t); - } - return mathSqrt(d); - } - function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) { - var px = x0; - var py = y0; - var d = 0; - var step = 1 / iteration; - for (var i = 1; i <= iteration; i++) { - var t = i * step; - var x = quadraticAt(x0, x1, x2, t); - var y = quadraticAt(y0, y1, y2, t); - var dx = x - px; - var dy = y - py; - d += Math.sqrt(dx * dx + dy * dy); - px = x; - py = y; - } - return d; - } - - // node_modules/zrender/lib/animation/cubicEasing.js - var regexp = /cubic-bezier\(([0-9,\.e ]+)\)/; - function createCubicEasingFunc(cubicEasingStr) { - var cubic = cubicEasingStr && regexp.exec(cubicEasingStr); - if (cubic) { - var points4 = cubic[1].split(","); - var a_1 = +trim(points4[0]); - var b_1 = +trim(points4[1]); - var c_1 = +trim(points4[2]); - var d_1 = +trim(points4[3]); - if (isNaN(a_1 + b_1 + c_1 + d_1)) { - return; - } - var roots_1 = []; - return function(p) { - return p <= 0 ? 0 : p >= 1 ? 1 : cubicRootAt(0, a_1, c_1, 1, p, roots_1) && cubicAt(0, b_1, d_1, 1, roots_1[0]); - }; - } - } - - // node_modules/zrender/lib/animation/Clip.js - var Clip = function() { - function Clip2(opts) { - this._inited = false; - this._startTime = 0; - this._pausedTime = 0; - this._paused = false; - this._life = opts.life || 1e3; - this._delay = opts.delay || 0; - this.loop = opts.loop || false; - this.onframe = opts.onframe || noop; - this.ondestroy = opts.ondestroy || noop; - this.onrestart = opts.onrestart || noop; - opts.easing && this.setEasing(opts.easing); - } - Clip2.prototype.step = function(globalTime, deltaTime) { - if (!this._inited) { - this._startTime = globalTime + this._delay; - this._inited = true; - } - if (this._paused) { - this._pausedTime += deltaTime; - return; - } - var life = this._life; - var elapsedTime = globalTime - this._startTime - this._pausedTime; - var percent = elapsedTime / life; - if (percent < 0) { - percent = 0; - } - percent = Math.min(percent, 1); - var easingFunc = this.easingFunc; - var schedule = easingFunc ? easingFunc(percent) : percent; - this.onframe(schedule); - if (percent === 1) { - if (this.loop) { - var remainder = elapsedTime % life; - this._startTime = globalTime - remainder; - this._pausedTime = 0; - this.onrestart(); - } else { - return true; - } - } - return false; - }; - Clip2.prototype.pause = function() { - this._paused = true; - }; - Clip2.prototype.resume = function() { - this._paused = false; - }; - Clip2.prototype.setEasing = function(easing) { - this.easing = easing; - this.easingFunc = isFunction(easing) ? easing : easing_default[easing] || createCubicEasingFunc(easing); - }; - return Clip2; - }(); - var Clip_default = Clip; - - // node_modules/zrender/lib/tool/color.js - var color_exports = {}; - __export(color_exports, { - fastLerp: () => fastLerp, - fastMapToColor: () => fastMapToColor, - lerp: () => lerp2, - lift: () => lift, - liftColor: () => liftColor, - lum: () => lum, - mapToColor: () => mapToColor, - modifyAlpha: () => modifyAlpha, - modifyHSL: () => modifyHSL, - parse: () => parse, - random: () => random, - stringify: () => stringify, - toHex: () => toHex - }); - - // node_modules/zrender/lib/core/LRU.js - var Entry = /* @__PURE__ */ function() { - function Entry2(val) { - this.value = val; - } - return Entry2; - }(); - var LinkedList = function() { - function LinkedList2() { - this._len = 0; - } - LinkedList2.prototype.insert = function(val) { - var entry = new Entry(val); - this.insertEntry(entry); - return entry; - }; - LinkedList2.prototype.insertEntry = function(entry) { - if (!this.head) { - this.head = this.tail = entry; - } else { - this.tail.next = entry; - entry.prev = this.tail; - entry.next = null; - this.tail = entry; - } - this._len++; - }; - LinkedList2.prototype.remove = function(entry) { - var prev = entry.prev; - var next = entry.next; - if (prev) { - prev.next = next; - } else { - this.head = next; - } - if (next) { - next.prev = prev; - } else { - this.tail = prev; - } - entry.next = entry.prev = null; - this._len--; - }; - LinkedList2.prototype.len = function() { - return this._len; - }; - LinkedList2.prototype.clear = function() { - this.head = this.tail = null; - this._len = 0; - }; - return LinkedList2; - }(); - var LRU = function() { - function LRU2(maxSize) { - this._list = new LinkedList(); - this._maxSize = 10; - this._map = {}; - this._maxSize = maxSize; - } - LRU2.prototype.put = function(key, value) { - var list = this._list; - var map3 = this._map; - var removed = null; - if (map3[key] == null) { - var len2 = list.len(); - var entry = this._lastRemovedEntry; - if (len2 >= this._maxSize && len2 > 0) { - var leastUsedEntry = list.head; - list.remove(leastUsedEntry); - delete map3[leastUsedEntry.key]; - removed = leastUsedEntry.value; - this._lastRemovedEntry = leastUsedEntry; - } - if (entry) { - entry.value = value; - } else { - entry = new Entry(value); - } - entry.key = key; - list.insertEntry(entry); - map3[key] = entry; - } - return removed; - }; - LRU2.prototype.get = function(key) { - var entry = this._map[key]; - var list = this._list; - if (entry != null) { - if (entry !== list.tail) { - list.remove(entry); - list.insertEntry(entry); - } - return entry.value; - } - }; - LRU2.prototype.clear = function() { - this._list.clear(); - this._map = {}; - }; - LRU2.prototype.len = function() { - return this._list.len(); - }; - return LRU2; - }(); - var LRU_default = LRU; - - // node_modules/zrender/lib/tool/color.js - var kCSSColorTable = { - "transparent": [0, 0, 0, 0], - "aliceblue": [240, 248, 255, 1], - "antiquewhite": [250, 235, 215, 1], - "aqua": [0, 255, 255, 1], - "aquamarine": [127, 255, 212, 1], - "azure": [240, 255, 255, 1], - "beige": [245, 245, 220, 1], - "bisque": [255, 228, 196, 1], - "black": [0, 0, 0, 1], - "blanchedalmond": [255, 235, 205, 1], - "blue": [0, 0, 255, 1], - "blueviolet": [138, 43, 226, 1], - "brown": [165, 42, 42, 1], - "burlywood": [222, 184, 135, 1], - "cadetblue": [95, 158, 160, 1], - "chartreuse": [127, 255, 0, 1], - "chocolate": [210, 105, 30, 1], - "coral": [255, 127, 80, 1], - "cornflowerblue": [100, 149, 237, 1], - "cornsilk": [255, 248, 220, 1], - "crimson": [220, 20, 60, 1], - "cyan": [0, 255, 255, 1], - "darkblue": [0, 0, 139, 1], - "darkcyan": [0, 139, 139, 1], - "darkgoldenrod": [184, 134, 11, 1], - "darkgray": [169, 169, 169, 1], - "darkgreen": [0, 100, 0, 1], - "darkgrey": [169, 169, 169, 1], - "darkkhaki": [189, 183, 107, 1], - "darkmagenta": [139, 0, 139, 1], - "darkolivegreen": [85, 107, 47, 1], - "darkorange": [255, 140, 0, 1], - "darkorchid": [153, 50, 204, 1], - "darkred": [139, 0, 0, 1], - "darksalmon": [233, 150, 122, 1], - "darkseagreen": [143, 188, 143, 1], - "darkslateblue": [72, 61, 139, 1], - "darkslategray": [47, 79, 79, 1], - "darkslategrey": [47, 79, 79, 1], - "darkturquoise": [0, 206, 209, 1], - "darkviolet": [148, 0, 211, 1], - "deeppink": [255, 20, 147, 1], - "deepskyblue": [0, 191, 255, 1], - "dimgray": [105, 105, 105, 1], - "dimgrey": [105, 105, 105, 1], - "dodgerblue": [30, 144, 255, 1], - "firebrick": [178, 34, 34, 1], - "floralwhite": [255, 250, 240, 1], - "forestgreen": [34, 139, 34, 1], - "fuchsia": [255, 0, 255, 1], - "gainsboro": [220, 220, 220, 1], - "ghostwhite": [248, 248, 255, 1], - "gold": [255, 215, 0, 1], - "goldenrod": [218, 165, 32, 1], - "gray": [128, 128, 128, 1], - "green": [0, 128, 0, 1], - "greenyellow": [173, 255, 47, 1], - "grey": [128, 128, 128, 1], - "honeydew": [240, 255, 240, 1], - "hotpink": [255, 105, 180, 1], - "indianred": [205, 92, 92, 1], - "indigo": [75, 0, 130, 1], - "ivory": [255, 255, 240, 1], - "khaki": [240, 230, 140, 1], - "lavender": [230, 230, 250, 1], - "lavenderblush": [255, 240, 245, 1], - "lawngreen": [124, 252, 0, 1], - "lemonchiffon": [255, 250, 205, 1], - "lightblue": [173, 216, 230, 1], - "lightcoral": [240, 128, 128, 1], - "lightcyan": [224, 255, 255, 1], - "lightgoldenrodyellow": [250, 250, 210, 1], - "lightgray": [211, 211, 211, 1], - "lightgreen": [144, 238, 144, 1], - "lightgrey": [211, 211, 211, 1], - "lightpink": [255, 182, 193, 1], - "lightsalmon": [255, 160, 122, 1], - "lightseagreen": [32, 178, 170, 1], - "lightskyblue": [135, 206, 250, 1], - "lightslategray": [119, 136, 153, 1], - "lightslategrey": [119, 136, 153, 1], - "lightsteelblue": [176, 196, 222, 1], - "lightyellow": [255, 255, 224, 1], - "lime": [0, 255, 0, 1], - "limegreen": [50, 205, 50, 1], - "linen": [250, 240, 230, 1], - "magenta": [255, 0, 255, 1], - "maroon": [128, 0, 0, 1], - "mediumaquamarine": [102, 205, 170, 1], - "mediumblue": [0, 0, 205, 1], - "mediumorchid": [186, 85, 211, 1], - "mediumpurple": [147, 112, 219, 1], - "mediumseagreen": [60, 179, 113, 1], - "mediumslateblue": [123, 104, 238, 1], - "mediumspringgreen": [0, 250, 154, 1], - "mediumturquoise": [72, 209, 204, 1], - "mediumvioletred": [199, 21, 133, 1], - "midnightblue": [25, 25, 112, 1], - "mintcream": [245, 255, 250, 1], - "mistyrose": [255, 228, 225, 1], - "moccasin": [255, 228, 181, 1], - "navajowhite": [255, 222, 173, 1], - "navy": [0, 0, 128, 1], - "oldlace": [253, 245, 230, 1], - "olive": [128, 128, 0, 1], - "olivedrab": [107, 142, 35, 1], - "orange": [255, 165, 0, 1], - "orangered": [255, 69, 0, 1], - "orchid": [218, 112, 214, 1], - "palegoldenrod": [238, 232, 170, 1], - "palegreen": [152, 251, 152, 1], - "paleturquoise": [175, 238, 238, 1], - "palevioletred": [219, 112, 147, 1], - "papayawhip": [255, 239, 213, 1], - "peachpuff": [255, 218, 185, 1], - "peru": [205, 133, 63, 1], - "pink": [255, 192, 203, 1], - "plum": [221, 160, 221, 1], - "powderblue": [176, 224, 230, 1], - "purple": [128, 0, 128, 1], - "red": [255, 0, 0, 1], - "rosybrown": [188, 143, 143, 1], - "royalblue": [65, 105, 225, 1], - "saddlebrown": [139, 69, 19, 1], - "salmon": [250, 128, 114, 1], - "sandybrown": [244, 164, 96, 1], - "seagreen": [46, 139, 87, 1], - "seashell": [255, 245, 238, 1], - "sienna": [160, 82, 45, 1], - "silver": [192, 192, 192, 1], - "skyblue": [135, 206, 235, 1], - "slateblue": [106, 90, 205, 1], - "slategray": [112, 128, 144, 1], - "slategrey": [112, 128, 144, 1], - "snow": [255, 250, 250, 1], - "springgreen": [0, 255, 127, 1], - "steelblue": [70, 130, 180, 1], - "tan": [210, 180, 140, 1], - "teal": [0, 128, 128, 1], - "thistle": [216, 191, 216, 1], - "tomato": [255, 99, 71, 1], - "turquoise": [64, 224, 208, 1], - "violet": [238, 130, 238, 1], - "wheat": [245, 222, 179, 1], - "white": [255, 255, 255, 1], - "whitesmoke": [245, 245, 245, 1], - "yellow": [255, 255, 0, 1], - "yellowgreen": [154, 205, 50, 1] - }; - function clampCssByte(i) { - i = Math.round(i); - return i < 0 ? 0 : i > 255 ? 255 : i; - } - function clampCssAngle(i) { - i = Math.round(i); - return i < 0 ? 0 : i > 360 ? 360 : i; - } - function clampCssFloat(f) { - return f < 0 ? 0 : f > 1 ? 1 : f; - } - function parseCssInt(val) { - var str = val; - if (str.length && str.charAt(str.length - 1) === "%") { - return clampCssByte(parseFloat(str) / 100 * 255); - } - return clampCssByte(parseInt(str, 10)); - } - function parseCssFloat(val) { - var str = val; - if (str.length && str.charAt(str.length - 1) === "%") { - return clampCssFloat(parseFloat(str) / 100); - } - return clampCssFloat(parseFloat(str)); - } - function cssHueToRgb(m1, m2, h) { - if (h < 0) { - h += 1; - } else if (h > 1) { - h -= 1; - } - if (h * 6 < 1) { - return m1 + (m2 - m1) * h * 6; - } - if (h * 2 < 1) { - return m2; - } - if (h * 3 < 2) { - return m1 + (m2 - m1) * (2 / 3 - h) * 6; - } - return m1; - } - function lerpNumber(a, b, p) { - return a + (b - a) * p; - } - function setRgba(out2, r, g, b, a) { - out2[0] = r; - out2[1] = g; - out2[2] = b; - out2[3] = a; - return out2; - } - function copyRgba(out2, a) { - out2[0] = a[0]; - out2[1] = a[1]; - out2[2] = a[2]; - out2[3] = a[3]; - return out2; - } - var colorCache = new LRU_default(20); - var lastRemovedArr = null; - function putToCache(colorStr, rgbaArr) { - if (lastRemovedArr) { - copyRgba(lastRemovedArr, rgbaArr); - } - lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || rgbaArr.slice()); - } - function parse(colorStr, rgbaArr) { - if (!colorStr) { - return; - } - rgbaArr = rgbaArr || []; - var cached = colorCache.get(colorStr); - if (cached) { - return copyRgba(rgbaArr, cached); - } - colorStr = colorStr + ""; - var str = colorStr.replace(/ /g, "").toLowerCase(); - if (str in kCSSColorTable) { - copyRgba(rgbaArr, kCSSColorTable[str]); - putToCache(colorStr, rgbaArr); - return rgbaArr; - } - var strLen = str.length; - if (str.charAt(0) === "#") { - if (strLen === 4 || strLen === 5) { - var iv = parseInt(str.slice(1, 4), 16); - if (!(iv >= 0 && iv <= 4095)) { - setRgba(rgbaArr, 0, 0, 0, 1); - return; - } - setRgba(rgbaArr, (iv & 3840) >> 4 | (iv & 3840) >> 8, iv & 240 | (iv & 240) >> 4, iv & 15 | (iv & 15) << 4, strLen === 5 ? parseInt(str.slice(4), 16) / 15 : 1); - putToCache(colorStr, rgbaArr); - return rgbaArr; - } else if (strLen === 7 || strLen === 9) { - var iv = parseInt(str.slice(1, 7), 16); - if (!(iv >= 0 && iv <= 16777215)) { - setRgba(rgbaArr, 0, 0, 0, 1); - return; - } - setRgba(rgbaArr, (iv & 16711680) >> 16, (iv & 65280) >> 8, iv & 255, strLen === 9 ? parseInt(str.slice(7), 16) / 255 : 1); - putToCache(colorStr, rgbaArr); - return rgbaArr; - } - return; - } - var op = str.indexOf("("); - var ep = str.indexOf(")"); - if (op !== -1 && ep + 1 === strLen) { - var fname = str.substr(0, op); - var params = str.substr(op + 1, ep - (op + 1)).split(","); - var alpha = 1; - switch (fname) { - case "rgba": - if (params.length !== 4) { - return params.length === 3 ? setRgba(rgbaArr, +params[0], +params[1], +params[2], 1) : setRgba(rgbaArr, 0, 0, 0, 1); - } - alpha = parseCssFloat(params.pop()); - case "rgb": - if (params.length >= 3) { - setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), params.length === 3 ? alpha : parseCssFloat(params[3])); - putToCache(colorStr, rgbaArr); - return rgbaArr; - } else { - setRgba(rgbaArr, 0, 0, 0, 1); - return; - } - case "hsla": - if (params.length !== 4) { - setRgba(rgbaArr, 0, 0, 0, 1); - return; - } - params[3] = parseCssFloat(params[3]); - hsla2rgba(params, rgbaArr); - putToCache(colorStr, rgbaArr); - return rgbaArr; - case "hsl": - if (params.length !== 3) { - setRgba(rgbaArr, 0, 0, 0, 1); - return; - } - hsla2rgba(params, rgbaArr); - putToCache(colorStr, rgbaArr); - return rgbaArr; - default: - return; - } - } - setRgba(rgbaArr, 0, 0, 0, 1); - return; - } - function hsla2rgba(hsla, rgba) { - var h = (parseFloat(hsla[0]) % 360 + 360) % 360 / 360; - var s = parseCssFloat(hsla[1]); - var l = parseCssFloat(hsla[2]); - var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s; - var m1 = l * 2 - m2; - rgba = rgba || []; - setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1); - if (hsla.length === 4) { - rgba[3] = hsla[3]; - } - return rgba; - } - function rgba2hsla(rgba) { - if (!rgba) { - return; - } - var R = rgba[0] / 255; - var G = rgba[1] / 255; - var B = rgba[2] / 255; - var vMin = Math.min(R, G, B); - var vMax = Math.max(R, G, B); - var delta = vMax - vMin; - var L = (vMax + vMin) / 2; - var H; - var S; - if (delta === 0) { - H = 0; - S = 0; - } else { - if (L < 0.5) { - S = delta / (vMax + vMin); - } else { - S = delta / (2 - vMax - vMin); - } - var deltaR = ((vMax - R) / 6 + delta / 2) / delta; - var deltaG = ((vMax - G) / 6 + delta / 2) / delta; - var deltaB = ((vMax - B) / 6 + delta / 2) / delta; - if (R === vMax) { - H = deltaB - deltaG; - } else if (G === vMax) { - H = 1 / 3 + deltaR - deltaB; - } else if (B === vMax) { - H = 2 / 3 + deltaG - deltaR; - } - if (H < 0) { - H += 1; - } - if (H > 1) { - H -= 1; - } - } - var hsla = [H * 360, S, L]; - if (rgba[3] != null) { - hsla.push(rgba[3]); - } - return hsla; - } - function lift(color, level) { - var colorArr = parse(color); - if (colorArr) { - for (var i = 0; i < 3; i++) { - if (level < 0) { - colorArr[i] = colorArr[i] * (1 - level) | 0; - } else { - colorArr[i] = (255 - colorArr[i]) * level + colorArr[i] | 0; - } - if (colorArr[i] > 255) { - colorArr[i] = 255; - } else if (colorArr[i] < 0) { - colorArr[i] = 0; - } - } - return stringify(colorArr, colorArr.length === 4 ? "rgba" : "rgb"); - } - } - function toHex(color) { - var colorArr = parse(color); - if (colorArr) { - return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + +colorArr[2]).toString(16).slice(1); - } - } - function fastLerp(normalizedValue, colors, out2) { - if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) { - return; - } - out2 = out2 || []; - var value = normalizedValue * (colors.length - 1); - var leftIndex = Math.floor(value); - var rightIndex = Math.ceil(value); - var leftColor = colors[leftIndex]; - var rightColor = colors[rightIndex]; - var dv = value - leftIndex; - out2[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)); - out2[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)); - out2[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)); - out2[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv)); - return out2; - } - var fastMapToColor = fastLerp; - function lerp2(normalizedValue, colors, fullOutput) { - if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) { - return; - } - var value = normalizedValue * (colors.length - 1); - var leftIndex = Math.floor(value); - var rightIndex = Math.ceil(value); - var leftColor = parse(colors[leftIndex]); - var rightColor = parse(colors[rightIndex]); - var dv = value - leftIndex; - var color = stringify([ - clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)), - clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)), - clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)), - clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv)) - ], "rgba"); - return fullOutput ? { - color, - leftIndex, - rightIndex, - value - } : color; - } - var mapToColor = lerp2; - function modifyHSL(color, h, s, l) { - var colorArr = parse(color); - if (color) { - colorArr = rgba2hsla(colorArr); - h != null && (colorArr[0] = clampCssAngle(h)); - s != null && (colorArr[1] = parseCssFloat(s)); - l != null && (colorArr[2] = parseCssFloat(l)); - return stringify(hsla2rgba(colorArr), "rgba"); - } - } - function modifyAlpha(color, alpha) { - var colorArr = parse(color); - if (colorArr && alpha != null) { - colorArr[3] = clampCssFloat(alpha); - return stringify(colorArr, "rgba"); - } - } - function stringify(arrColor, type) { - if (!arrColor || !arrColor.length) { - return; - } - var colorStr = arrColor[0] + "," + arrColor[1] + "," + arrColor[2]; - if (type === "rgba" || type === "hsva" || type === "hsla") { - colorStr += "," + arrColor[3]; - } - return type + "(" + colorStr + ")"; - } - function lum(color, backgroundLum) { - var arr = parse(color); - return arr ? (0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3] / 255 + (1 - arr[3]) * backgroundLum : 0; - } - function random() { - return stringify([ - Math.round(Math.random() * 255), - Math.round(Math.random() * 255), - Math.round(Math.random() * 255) - ], "rgb"); - } - var liftedColorCache = new LRU_default(100); - function liftColor(color) { - if (isString(color)) { - var liftedColor = liftedColorCache.get(color); - if (!liftedColor) { - liftedColor = lift(color, -0.1); - liftedColorCache.put(color, liftedColor); - } - return liftedColor; - } else if (isGradientObject(color)) { - var ret = extend({}, color); - ret.colorStops = map(color.colorStops, function(stop2) { - return { - offset: stop2.offset, - color: lift(stop2.color, -0.1) - }; - }); - return ret; - } - return color; - } - - // node_modules/zrender/lib/svg/helper.js - var mathRound = Math.round; - function normalizeColor(color) { - var opacity; - if (!color || color === "transparent") { - color = "none"; - } else if (typeof color === "string" && color.indexOf("rgba") > -1) { - var arr = parse(color); - if (arr) { - color = "rgb(" + arr[0] + "," + arr[1] + "," + arr[2] + ")"; - opacity = arr[3]; - } - } - return { - color, - opacity: opacity == null ? 1 : opacity - }; - } - var EPSILON2 = 1e-4; - function isAroundZero2(transform2) { - return transform2 < EPSILON2 && transform2 > -EPSILON2; - } - function round3(transform2) { - return mathRound(transform2 * 1e3) / 1e3; - } - function round4(transform2) { - return mathRound(transform2 * 1e4) / 1e4; - } - function getMatrixStr(m2) { - return "matrix(" + round3(m2[0]) + "," + round3(m2[1]) + "," + round3(m2[2]) + "," + round3(m2[3]) + "," + round4(m2[4]) + "," + round4(m2[5]) + ")"; - } - var TEXT_ALIGN_TO_ANCHOR = { - left: "start", - right: "end", - center: "middle", - middle: "middle" - }; - function adjustTextY(y, lineHeight, textBaseline) { - if (textBaseline === "top") { - y += lineHeight / 2; - } else if (textBaseline === "bottom") { - y -= lineHeight / 2; - } - return y; - } - function hasShadow(style) { - return style && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY); - } - function getShadowKey(displayable) { - var style = displayable.style; - var globalScale = displayable.getGlobalScale(); - return [ - style.shadowColor, - (style.shadowBlur || 0).toFixed(2), - (style.shadowOffsetX || 0).toFixed(2), - (style.shadowOffsetY || 0).toFixed(2), - globalScale[0], - globalScale[1] - ].join(","); - } - function isImagePattern(val) { - return val && !!val.image; - } - function isSVGPattern(val) { - return val && !!val.svgElement; - } - function isPattern(val) { - return isImagePattern(val) || isSVGPattern(val); - } - function isLinearGradient(val) { - return val.type === "linear"; - } - function isRadialGradient(val) { - return val.type === "radial"; - } - function isGradient(val) { - return val && (val.type === "linear" || val.type === "radial"); - } - function getIdURL(id) { - return "url(#" + id + ")"; - } - function getPathPrecision(el) { - var scale4 = el.getGlobalScale(); - var size2 = Math.max(scale4[0], scale4[1]); - return Math.max(Math.ceil(Math.log(size2) / Math.log(10)), 1); - } - function getSRTTransformString(transform2) { - var x = transform2.x || 0; - var y = transform2.y || 0; - var rotation = (transform2.rotation || 0) * RADIAN_TO_DEGREE; - var scaleX = retrieve2(transform2.scaleX, 1); - var scaleY = retrieve2(transform2.scaleY, 1); - var skewX = transform2.skewX || 0; - var skewY = transform2.skewY || 0; - var res = []; - if (x || y) { - res.push("translate(" + x + "px," + y + "px)"); - } - if (rotation) { - res.push("rotate(" + rotation + ")"); - } - if (scaleX !== 1 || scaleY !== 1) { - res.push("scale(" + scaleX + "," + scaleY + ")"); - } - if (skewX || skewY) { - res.push("skew(" + mathRound(skewX * RADIAN_TO_DEGREE) + "deg, " + mathRound(skewY * RADIAN_TO_DEGREE) + "deg)"); - } - return res.join(" "); - } - var encodeBase64 = function() { - if (env_default.hasGlobalWindow && isFunction(window.btoa)) { - return function(str) { - return window.btoa(unescape(encodeURIComponent(str))); - }; - } - if (typeof Buffer !== "undefined") { - return function(str) { - return Buffer.from(str).toString("base64"); - }; - } - return function(str) { - if (true) { - logError("Base64 isn't natively supported in the current environment."); - } - return null; - }; - }(); - - // node_modules/zrender/lib/animation/Animator.js - var arraySlice = Array.prototype.slice; - function interpolateNumber(p0, p1, percent) { - return (p1 - p0) * percent + p0; - } - function interpolate1DArray(out2, p0, p1, percent) { - var len2 = p0.length; - for (var i = 0; i < len2; i++) { - out2[i] = interpolateNumber(p0[i], p1[i], percent); - } - return out2; - } - function interpolate2DArray(out2, p0, p1, percent) { - var len2 = p0.length; - var len22 = len2 && p0[0].length; - for (var i = 0; i < len2; i++) { - if (!out2[i]) { - out2[i] = []; - } - for (var j = 0; j < len22; j++) { - out2[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent); - } - } - return out2; - } - function add1DArray(out2, p0, p1, sign) { - var len2 = p0.length; - for (var i = 0; i < len2; i++) { - out2[i] = p0[i] + p1[i] * sign; - } - return out2; - } - function add2DArray(out2, p0, p1, sign) { - var len2 = p0.length; - var len22 = len2 && p0[0].length; - for (var i = 0; i < len2; i++) { - if (!out2[i]) { - out2[i] = []; - } - for (var j = 0; j < len22; j++) { - out2[i][j] = p0[i][j] + p1[i][j] * sign; - } - } - return out2; - } - function fillColorStops(val0, val1) { - var len0 = val0.length; - var len1 = val1.length; - var shorterArr = len0 > len1 ? val1 : val0; - var shorterLen = Math.min(len0, len1); - var last = shorterArr[shorterLen - 1] || { color: [0, 0, 0, 0], offset: 0 }; - for (var i = shorterLen; i < Math.max(len0, len1); i++) { - shorterArr.push({ - offset: last.offset, - color: last.color.slice() - }); - } - } - function fillArray(val0, val1, arrDim) { - var arr0 = val0; - var arr1 = val1; - if (!arr0.push || !arr1.push) { - return; - } - var arr0Len = arr0.length; - var arr1Len = arr1.length; - if (arr0Len !== arr1Len) { - var isPreviousLarger = arr0Len > arr1Len; - if (isPreviousLarger) { - arr0.length = arr1Len; - } else { - for (var i = arr0Len; i < arr1Len; i++) { - arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i])); - } - } - } - var len2 = arr0[0] && arr0[0].length; - for (var i = 0; i < arr0.length; i++) { - if (arrDim === 1) { - if (isNaN(arr0[i])) { - arr0[i] = arr1[i]; - } - } else { - for (var j = 0; j < len2; j++) { - if (isNaN(arr0[i][j])) { - arr0[i][j] = arr1[i][j]; - } - } - } - } - } - function cloneValue(value) { - if (isArrayLike(value)) { - var len2 = value.length; - if (isArrayLike(value[0])) { - var ret = []; - for (var i = 0; i < len2; i++) { - ret.push(arraySlice.call(value[i])); - } - return ret; - } - return arraySlice.call(value); - } - return value; - } - function rgba2String(rgba) { - rgba[0] = Math.floor(rgba[0]) || 0; - rgba[1] = Math.floor(rgba[1]) || 0; - rgba[2] = Math.floor(rgba[2]) || 0; - rgba[3] = rgba[3] == null ? 1 : rgba[3]; - return "rgba(" + rgba.join(",") + ")"; - } - function guessArrayDim(value) { - return isArrayLike(value && value[0]) ? 2 : 1; - } - var VALUE_TYPE_NUMBER = 0; - var VALUE_TYPE_1D_ARRAY = 1; - var VALUE_TYPE_2D_ARRAY = 2; - var VALUE_TYPE_COLOR = 3; - var VALUE_TYPE_LINEAR_GRADIENT = 4; - var VALUE_TYPE_RADIAL_GRADIENT = 5; - var VALUE_TYPE_UNKOWN = 6; - function isGradientValueType(valType) { - return valType === VALUE_TYPE_LINEAR_GRADIENT || valType === VALUE_TYPE_RADIAL_GRADIENT; - } - function isArrayValueType(valType) { - return valType === VALUE_TYPE_1D_ARRAY || valType === VALUE_TYPE_2D_ARRAY; - } - var tmpRgba = [0, 0, 0, 0]; - var Track = function() { - function Track2(propName) { - this.keyframes = []; - this.discrete = false; - this._invalid = false; - this._needsSort = false; - this._lastFr = 0; - this._lastFrP = 0; - this.propName = propName; - } - Track2.prototype.isFinished = function() { - return this._finished; - }; - Track2.prototype.setFinished = function() { - this._finished = true; - if (this._additiveTrack) { - this._additiveTrack.setFinished(); - } - }; - Track2.prototype.needsAnimate = function() { - return this.keyframes.length >= 1; - }; - Track2.prototype.getAdditiveTrack = function() { - return this._additiveTrack; - }; - Track2.prototype.addKeyframe = function(time, rawValue, easing) { - this._needsSort = true; - var keyframes = this.keyframes; - var len2 = keyframes.length; - var discrete = false; - var valType = VALUE_TYPE_UNKOWN; - var value = rawValue; - if (isArrayLike(rawValue)) { - var arrayDim = guessArrayDim(rawValue); - valType = arrayDim; - if (arrayDim === 1 && !isNumber(rawValue[0]) || arrayDim === 2 && !isNumber(rawValue[0][0])) { - discrete = true; - } - } else { - if (isNumber(rawValue) && !eqNaN(rawValue)) { - valType = VALUE_TYPE_NUMBER; - } else if (isString(rawValue)) { - if (!isNaN(+rawValue)) { - valType = VALUE_TYPE_NUMBER; - } else { - var colorArray = parse(rawValue); - if (colorArray) { - value = colorArray; - valType = VALUE_TYPE_COLOR; - } - } - } else if (isGradientObject(rawValue)) { - var parsedGradient = extend({}, value); - parsedGradient.colorStops = map(rawValue.colorStops, function(colorStop) { - return { - offset: colorStop.offset, - color: parse(colorStop.color) - }; - }); - if (isLinearGradient(rawValue)) { - valType = VALUE_TYPE_LINEAR_GRADIENT; - } else if (isRadialGradient(rawValue)) { - valType = VALUE_TYPE_RADIAL_GRADIENT; - } - value = parsedGradient; - } - } - if (len2 === 0) { - this.valType = valType; - } else if (valType !== this.valType || valType === VALUE_TYPE_UNKOWN) { - discrete = true; - } - this.discrete = this.discrete || discrete; - var kf = { - time, - value, - rawValue, - percent: 0 - }; - if (easing) { - kf.easing = easing; - kf.easingFunc = isFunction(easing) ? easing : easing_default[easing] || createCubicEasingFunc(easing); - } - keyframes.push(kf); - return kf; - }; - Track2.prototype.prepare = function(maxTime, additiveTrack) { - var kfs = this.keyframes; - if (this._needsSort) { - kfs.sort(function(a, b) { - return a.time - b.time; - }); - } - var valType = this.valType; - var kfsLen = kfs.length; - var lastKf = kfs[kfsLen - 1]; - var isDiscrete = this.discrete; - var isArr = isArrayValueType(valType); - var isGradient2 = isGradientValueType(valType); - for (var i = 0; i < kfsLen; i++) { - var kf = kfs[i]; - var value = kf.value; - var lastValue = lastKf.value; - kf.percent = kf.time / maxTime; - if (!isDiscrete) { - if (isArr && i !== kfsLen - 1) { - fillArray(value, lastValue, valType); - } else if (isGradient2) { - fillColorStops(value.colorStops, lastValue.colorStops); - } - } - } - if (!isDiscrete && valType !== VALUE_TYPE_RADIAL_GRADIENT && additiveTrack && this.needsAnimate() && additiveTrack.needsAnimate() && valType === additiveTrack.valType && !additiveTrack._finished) { - this._additiveTrack = additiveTrack; - var startValue = kfs[0].value; - for (var i = 0; i < kfsLen; i++) { - if (valType === VALUE_TYPE_NUMBER) { - kfs[i].additiveValue = kfs[i].value - startValue; - } else if (valType === VALUE_TYPE_COLOR) { - kfs[i].additiveValue = add1DArray([], kfs[i].value, startValue, -1); - } else if (isArrayValueType(valType)) { - kfs[i].additiveValue = valType === VALUE_TYPE_1D_ARRAY ? add1DArray([], kfs[i].value, startValue, -1) : add2DArray([], kfs[i].value, startValue, -1); - } - } - } - }; - Track2.prototype.step = function(target, percent) { - if (this._finished) { - return; - } - if (this._additiveTrack && this._additiveTrack._finished) { - this._additiveTrack = null; - } - var isAdditive = this._additiveTrack != null; - var valueKey = isAdditive ? "additiveValue" : "value"; - var valType = this.valType; - var keyframes = this.keyframes; - var kfsNum = keyframes.length; - var propName = this.propName; - var isValueColor = valType === VALUE_TYPE_COLOR; - var frameIdx; - var lastFrame = this._lastFr; - var mathMin12 = Math.min; - var frame; - var nextFrame; - if (kfsNum === 1) { - frame = nextFrame = keyframes[0]; - } else { - if (percent < 0) { - frameIdx = 0; - } else if (percent < this._lastFrP) { - var start3 = mathMin12(lastFrame + 1, kfsNum - 1); - for (frameIdx = start3; frameIdx >= 0; frameIdx--) { - if (keyframes[frameIdx].percent <= percent) { - break; - } - } - frameIdx = mathMin12(frameIdx, kfsNum - 2); - } else { - for (frameIdx = lastFrame; frameIdx < kfsNum; frameIdx++) { - if (keyframes[frameIdx].percent > percent) { - break; - } - } - frameIdx = mathMin12(frameIdx - 1, kfsNum - 2); - } - nextFrame = keyframes[frameIdx + 1]; - frame = keyframes[frameIdx]; - } - if (!(frame && nextFrame)) { - return; - } - this._lastFr = frameIdx; - this._lastFrP = percent; - var interval = nextFrame.percent - frame.percent; - var w = interval === 0 ? 1 : mathMin12((percent - frame.percent) / interval, 1); - if (nextFrame.easingFunc) { - w = nextFrame.easingFunc(w); - } - var targetArr = isAdditive ? this._additiveValue : isValueColor ? tmpRgba : target[propName]; - if ((isArrayValueType(valType) || isValueColor) && !targetArr) { - targetArr = this._additiveValue = []; - } - if (this.discrete) { - target[propName] = w < 1 ? frame.rawValue : nextFrame.rawValue; - } else if (isArrayValueType(valType)) { - valType === VALUE_TYPE_1D_ARRAY ? interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w) : interpolate2DArray(targetArr, frame[valueKey], nextFrame[valueKey], w); - } else if (isGradientValueType(valType)) { - var val = frame[valueKey]; - var nextVal_1 = nextFrame[valueKey]; - var isLinearGradient_1 = valType === VALUE_TYPE_LINEAR_GRADIENT; - target[propName] = { - type: isLinearGradient_1 ? "linear" : "radial", - x: interpolateNumber(val.x, nextVal_1.x, w), - y: interpolateNumber(val.y, nextVal_1.y, w), - colorStops: map(val.colorStops, function(colorStop, idx) { - var nextColorStop = nextVal_1.colorStops[idx]; - return { - offset: interpolateNumber(colorStop.offset, nextColorStop.offset, w), - color: rgba2String(interpolate1DArray([], colorStop.color, nextColorStop.color, w)) - }; - }), - global: nextVal_1.global - }; - if (isLinearGradient_1) { - target[propName].x2 = interpolateNumber(val.x2, nextVal_1.x2, w); - target[propName].y2 = interpolateNumber(val.y2, nextVal_1.y2, w); - } else { - target[propName].r = interpolateNumber(val.r, nextVal_1.r, w); - } - } else if (isValueColor) { - interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w); - if (!isAdditive) { - target[propName] = rgba2String(targetArr); - } - } else { - var value = interpolateNumber(frame[valueKey], nextFrame[valueKey], w); - if (isAdditive) { - this._additiveValue = value; - } else { - target[propName] = value; - } - } - if (isAdditive) { - this._addToTarget(target); - } - }; - Track2.prototype._addToTarget = function(target) { - var valType = this.valType; - var propName = this.propName; - var additiveValue = this._additiveValue; - if (valType === VALUE_TYPE_NUMBER) { - target[propName] = target[propName] + additiveValue; - } else if (valType === VALUE_TYPE_COLOR) { - parse(target[propName], tmpRgba); - add1DArray(tmpRgba, tmpRgba, additiveValue, 1); - target[propName] = rgba2String(tmpRgba); - } else if (valType === VALUE_TYPE_1D_ARRAY) { - add1DArray(target[propName], target[propName], additiveValue, 1); - } else if (valType === VALUE_TYPE_2D_ARRAY) { - add2DArray(target[propName], target[propName], additiveValue, 1); - } - }; - return Track2; - }(); - var Animator = function() { - function Animator2(target, loop, allowDiscreteAnimation, additiveTo) { - this._tracks = {}; - this._trackKeys = []; - this._maxTime = 0; - this._started = 0; - this._clip = null; - this._target = target; - this._loop = loop; - if (loop && additiveTo) { - logError("Can' use additive animation on looped animation."); - return; - } - this._additiveAnimators = additiveTo; - this._allowDiscrete = allowDiscreteAnimation; - } - Animator2.prototype.getMaxTime = function() { - return this._maxTime; - }; - Animator2.prototype.getDelay = function() { - return this._delay; - }; - Animator2.prototype.getLoop = function() { - return this._loop; - }; - Animator2.prototype.getTarget = function() { - return this._target; - }; - Animator2.prototype.changeTarget = function(target) { - this._target = target; - }; - Animator2.prototype.when = function(time, props, easing) { - return this.whenWithKeys(time, props, keys(props), easing); - }; - Animator2.prototype.whenWithKeys = function(time, props, propNames, easing) { - var tracks = this._tracks; - for (var i = 0; i < propNames.length; i++) { - var propName = propNames[i]; - var track = tracks[propName]; - if (!track) { - track = tracks[propName] = new Track(propName); - var initialValue = void 0; - var additiveTrack = this._getAdditiveTrack(propName); - if (additiveTrack) { - var addtiveTrackKfs = additiveTrack.keyframes; - var lastFinalKf = addtiveTrackKfs[addtiveTrackKfs.length - 1]; - initialValue = lastFinalKf && lastFinalKf.value; - if (additiveTrack.valType === VALUE_TYPE_COLOR && initialValue) { - initialValue = rgba2String(initialValue); - } - } else { - initialValue = this._target[propName]; - } - if (initialValue == null) { - continue; - } - if (time > 0) { - track.addKeyframe(0, cloneValue(initialValue), easing); - } - this._trackKeys.push(propName); - } - track.addKeyframe(time, cloneValue(props[propName]), easing); - } - this._maxTime = Math.max(this._maxTime, time); - return this; - }; - Animator2.prototype.pause = function() { - this._clip.pause(); - this._paused = true; - }; - Animator2.prototype.resume = function() { - this._clip.resume(); - this._paused = false; - }; - Animator2.prototype.isPaused = function() { - return !!this._paused; - }; - Animator2.prototype.duration = function(duration) { - this._maxTime = duration; - this._force = true; - return this; - }; - Animator2.prototype._doneCallback = function() { - this._setTracksFinished(); - this._clip = null; - var doneList = this._doneCbs; - if (doneList) { - var len2 = doneList.length; - for (var i = 0; i < len2; i++) { - doneList[i].call(this); - } - } - }; - Animator2.prototype._abortedCallback = function() { - this._setTracksFinished(); - var animation = this.animation; - var abortedList = this._abortedCbs; - if (animation) { - animation.removeClip(this._clip); - } - this._clip = null; - if (abortedList) { - for (var i = 0; i < abortedList.length; i++) { - abortedList[i].call(this); - } - } - }; - Animator2.prototype._setTracksFinished = function() { - var tracks = this._tracks; - var tracksKeys = this._trackKeys; - for (var i = 0; i < tracksKeys.length; i++) { - tracks[tracksKeys[i]].setFinished(); - } - }; - Animator2.prototype._getAdditiveTrack = function(trackName) { - var additiveTrack; - var additiveAnimators = this._additiveAnimators; - if (additiveAnimators) { - for (var i = 0; i < additiveAnimators.length; i++) { - var track = additiveAnimators[i].getTrack(trackName); - if (track) { - additiveTrack = track; - } - } - } - return additiveTrack; - }; - Animator2.prototype.start = function(easing) { - if (this._started > 0) { - return; - } - this._started = 1; - var self2 = this; - var tracks = []; - var maxTime = this._maxTime || 0; - for (var i = 0; i < this._trackKeys.length; i++) { - var propName = this._trackKeys[i]; - var track = this._tracks[propName]; - var additiveTrack = this._getAdditiveTrack(propName); - var kfs = track.keyframes; - var kfsNum = kfs.length; - track.prepare(maxTime, additiveTrack); - if (track.needsAnimate()) { - if (!this._allowDiscrete && track.discrete) { - var lastKf = kfs[kfsNum - 1]; - if (lastKf) { - self2._target[track.propName] = lastKf.rawValue; - } - track.setFinished(); - } else { - tracks.push(track); - } - } - } - if (tracks.length || this._force) { - var clip2 = new Clip_default({ - life: maxTime, - loop: this._loop, - delay: this._delay || 0, - onframe: function(percent) { - self2._started = 2; - var additiveAnimators = self2._additiveAnimators; - if (additiveAnimators) { - var stillHasAdditiveAnimator = false; - for (var i2 = 0; i2 < additiveAnimators.length; i2++) { - if (additiveAnimators[i2]._clip) { - stillHasAdditiveAnimator = true; - break; - } - } - if (!stillHasAdditiveAnimator) { - self2._additiveAnimators = null; - } - } - for (var i2 = 0; i2 < tracks.length; i2++) { - tracks[i2].step(self2._target, percent); - } - var onframeList = self2._onframeCbs; - if (onframeList) { - for (var i2 = 0; i2 < onframeList.length; i2++) { - onframeList[i2](self2._target, percent); - } - } - }, - ondestroy: function() { - self2._doneCallback(); - } - }); - this._clip = clip2; - if (this.animation) { - this.animation.addClip(clip2); - } - if (easing) { - clip2.setEasing(easing); - } - } else { - this._doneCallback(); - } - return this; - }; - Animator2.prototype.stop = function(forwardToLast) { - if (!this._clip) { - return; - } - var clip2 = this._clip; - if (forwardToLast) { - clip2.onframe(1); - } - this._abortedCallback(); - }; - Animator2.prototype.delay = function(time) { - this._delay = time; - return this; - }; - Animator2.prototype.during = function(cb) { - if (cb) { - if (!this._onframeCbs) { - this._onframeCbs = []; - } - this._onframeCbs.push(cb); - } - return this; - }; - Animator2.prototype.done = function(cb) { - if (cb) { - if (!this._doneCbs) { - this._doneCbs = []; - } - this._doneCbs.push(cb); - } - return this; - }; - Animator2.prototype.aborted = function(cb) { - if (cb) { - if (!this._abortedCbs) { - this._abortedCbs = []; - } - this._abortedCbs.push(cb); - } - return this; - }; - Animator2.prototype.getClip = function() { - return this._clip; - }; - Animator2.prototype.getTrack = function(propName) { - return this._tracks[propName]; - }; - Animator2.prototype.getTracks = function() { - var _this = this; - return map(this._trackKeys, function(key) { - return _this._tracks[key]; - }); - }; - Animator2.prototype.stopTracks = function(propNames, forwardToLast) { - if (!propNames.length || !this._clip) { - return true; - } - var tracks = this._tracks; - var tracksKeys = this._trackKeys; - for (var i = 0; i < propNames.length; i++) { - var track = tracks[propNames[i]]; - if (track && !track.isFinished()) { - if (forwardToLast) { - track.step(this._target, 1); - } else if (this._started === 1) { - track.step(this._target, 0); - } - track.setFinished(); - } - } - var allAborted = true; - for (var i = 0; i < tracksKeys.length; i++) { - if (!tracks[tracksKeys[i]].isFinished()) { - allAborted = false; - break; - } - } - if (allAborted) { - this._abortedCallback(); - } - return allAborted; - }; - Animator2.prototype.saveTo = function(target, trackKeys, firstOrLast) { - if (!target) { - return; - } - trackKeys = trackKeys || this._trackKeys; - for (var i = 0; i < trackKeys.length; i++) { - var propName = trackKeys[i]; - var track = this._tracks[propName]; - if (!track || track.isFinished()) { - continue; - } - var kfs = track.keyframes; - var kf = kfs[firstOrLast ? 0 : kfs.length - 1]; - if (kf) { - target[propName] = cloneValue(kf.rawValue); - } - } - }; - Animator2.prototype.__changeFinalValue = function(finalProps, trackKeys) { - trackKeys = trackKeys || keys(finalProps); - for (var i = 0; i < trackKeys.length; i++) { - var propName = trackKeys[i]; - var track = this._tracks[propName]; - if (!track) { - continue; - } - var kfs = track.keyframes; - if (kfs.length > 1) { - var lastKf = kfs.pop(); - track.addKeyframe(lastKf.time, finalProps[propName]); - track.prepare(this._maxTime, track.getAdditiveTrack()); - } - } - }; - return Animator2; - }(); - var Animator_default = Animator; - - // node_modules/zrender/lib/animation/Animation.js - function getTime() { - return (/* @__PURE__ */ new Date()).getTime(); - } - var Animation = function(_super) { - __extends(Animation2, _super); - function Animation2(opts) { - var _this = _super.call(this) || this; - _this._running = false; - _this._time = 0; - _this._pausedTime = 0; - _this._pauseStart = 0; - _this._paused = false; - opts = opts || {}; - _this.stage = opts.stage || {}; - return _this; - } - Animation2.prototype.addClip = function(clip2) { - if (clip2.animation) { - this.removeClip(clip2); - } - if (!this._head) { - this._head = this._tail = clip2; - } else { - this._tail.next = clip2; - clip2.prev = this._tail; - clip2.next = null; - this._tail = clip2; - } - clip2.animation = this; - }; - Animation2.prototype.addAnimator = function(animator) { - animator.animation = this; - var clip2 = animator.getClip(); - if (clip2) { - this.addClip(clip2); - } - }; - Animation2.prototype.removeClip = function(clip2) { - if (!clip2.animation) { - return; - } - var prev = clip2.prev; - var next = clip2.next; - if (prev) { - prev.next = next; - } else { - this._head = next; - } - if (next) { - next.prev = prev; - } else { - this._tail = prev; - } - clip2.next = clip2.prev = clip2.animation = null; - }; - Animation2.prototype.removeAnimator = function(animator) { - var clip2 = animator.getClip(); - if (clip2) { - this.removeClip(clip2); - } - animator.animation = null; - }; - Animation2.prototype.update = function(notTriggerFrameAndStageUpdate) { - var time = getTime() - this._pausedTime; - var delta = time - this._time; - var clip2 = this._head; - while (clip2) { - var nextClip = clip2.next; - var finished = clip2.step(time, delta); - if (finished) { - clip2.ondestroy(); - this.removeClip(clip2); - clip2 = nextClip; - } else { - clip2 = nextClip; - } - } - this._time = time; - if (!notTriggerFrameAndStageUpdate) { - this.trigger("frame", delta); - this.stage.update && this.stage.update(); - } - }; - Animation2.prototype._startLoop = function() { - var self2 = this; - this._running = true; - function step() { - if (self2._running) { - requestAnimationFrame_default(step); - !self2._paused && self2.update(); - } - } - requestAnimationFrame_default(step); - }; - Animation2.prototype.start = function() { - if (this._running) { - return; - } - this._time = getTime(); - this._pausedTime = 0; - this._startLoop(); - }; - Animation2.prototype.stop = function() { - this._running = false; - }; - Animation2.prototype.pause = function() { - if (!this._paused) { - this._pauseStart = getTime(); - this._paused = true; - } - }; - Animation2.prototype.resume = function() { - if (this._paused) { - this._pausedTime += getTime() - this._pauseStart; - this._paused = false; - } - }; - Animation2.prototype.clear = function() { - var clip2 = this._head; - while (clip2) { - var nextClip = clip2.next; - clip2.prev = clip2.next = clip2.animation = null; - clip2 = nextClip; - } - this._head = this._tail = null; - }; - Animation2.prototype.isFinished = function() { - return this._head == null; - }; - Animation2.prototype.animate = function(target, options) { - options = options || {}; - this.start(); - var animator = new Animator_default(target, options.loop); - this.addAnimator(animator); - return animator; - }; - return Animation2; - }(Eventful_default); - var Animation_default = Animation; - - // node_modules/zrender/lib/dom/HandlerProxy.js - var TOUCH_CLICK_DELAY = 300; - var globalEventSupported = env_default.domSupported; - var localNativeListenerNames = function() { - var mouseHandlerNames = [ - "click", - "dblclick", - "mousewheel", - "wheel", - "mouseout", - "mouseup", - "mousedown", - "mousemove", - "contextmenu" - ]; - var touchHandlerNames = [ - "touchstart", - "touchend", - "touchmove" - ]; - var pointerEventNameMap = { - pointerdown: 1, - pointerup: 1, - pointermove: 1, - pointerout: 1 - }; - var pointerHandlerNames = map(mouseHandlerNames, function(name) { - var nm = name.replace("mouse", "pointer"); - return pointerEventNameMap.hasOwnProperty(nm) ? nm : name; - }); - return { - mouse: mouseHandlerNames, - touch: touchHandlerNames, - pointer: pointerHandlerNames - }; - }(); - var globalNativeListenerNames = { - mouse: ["mousemove", "mouseup"], - pointer: ["pointermove", "pointerup"] - }; - var wheelEventSupported = false; - function isPointerFromTouch(event) { - var pointerType = event.pointerType; - return pointerType === "pen" || pointerType === "touch"; - } - function setTouchTimer(scope) { - scope.touching = true; - if (scope.touchTimer != null) { - clearTimeout(scope.touchTimer); - scope.touchTimer = null; - } - scope.touchTimer = setTimeout(function() { - scope.touching = false; - scope.touchTimer = null; - }, 700); - } - function markTouch(event) { - event && (event.zrByTouch = true); - } - function normalizeGlobalEvent(instance, event) { - return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true); - } - function isLocalEl(instance, el) { - var elTmp = el; - var isLocal = false; - while (elTmp && elTmp.nodeType !== 9 && !(isLocal = elTmp.domBelongToZr || elTmp !== el && elTmp === instance.painterRoot)) { - elTmp = elTmp.parentNode; - } - return isLocal; - } - var FakeGlobalEvent = /* @__PURE__ */ function() { - function FakeGlobalEvent2(instance, event) { - this.stopPropagation = noop; - this.stopImmediatePropagation = noop; - this.preventDefault = noop; - this.type = event.type; - this.target = this.currentTarget = instance.dom; - this.pointerType = event.pointerType; - this.clientX = event.clientX; - this.clientY = event.clientY; - } - return FakeGlobalEvent2; - }(); - var localDOMHandlers = { - mousedown: function(event) { - event = normalizeEvent(this.dom, event); - this.__mayPointerCapture = [event.zrX, event.zrY]; - this.trigger("mousedown", event); - }, - mousemove: function(event) { - event = normalizeEvent(this.dom, event); - var downPoint = this.__mayPointerCapture; - if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) { - this.__togglePointerCapture(true); - } - this.trigger("mousemove", event); - }, - mouseup: function(event) { - event = normalizeEvent(this.dom, event); - this.__togglePointerCapture(false); - this.trigger("mouseup", event); - }, - mouseout: function(event) { - event = normalizeEvent(this.dom, event); - var element = event.toElement || event.relatedTarget; - if (!isLocalEl(this, element)) { - if (this.__pointerCapturing) { - event.zrEventControl = "no_globalout"; - } - this.trigger("mouseout", event); - } - }, - wheel: function(event) { - wheelEventSupported = true; - event = normalizeEvent(this.dom, event); - this.trigger("mousewheel", event); - }, - mousewheel: function(event) { - if (wheelEventSupported) { - return; - } - event = normalizeEvent(this.dom, event); - this.trigger("mousewheel", event); - }, - touchstart: function(event) { - event = normalizeEvent(this.dom, event); - markTouch(event); - this.__lastTouchMoment = /* @__PURE__ */ new Date(); - this.handler.processGesture(event, "start"); - localDOMHandlers.mousemove.call(this, event); - localDOMHandlers.mousedown.call(this, event); - }, - touchmove: function(event) { - event = normalizeEvent(this.dom, event); - markTouch(event); - this.handler.processGesture(event, "change"); - localDOMHandlers.mousemove.call(this, event); - }, - touchend: function(event) { - event = normalizeEvent(this.dom, event); - markTouch(event); - this.handler.processGesture(event, "end"); - localDOMHandlers.mouseup.call(this, event); - if (+/* @__PURE__ */ new Date() - +this.__lastTouchMoment < TOUCH_CLICK_DELAY) { - localDOMHandlers.click.call(this, event); - } - }, - pointerdown: function(event) { - localDOMHandlers.mousedown.call(this, event); - }, - pointermove: function(event) { - if (!isPointerFromTouch(event)) { - localDOMHandlers.mousemove.call(this, event); - } - }, - pointerup: function(event) { - localDOMHandlers.mouseup.call(this, event); - }, - pointerout: function(event) { - if (!isPointerFromTouch(event)) { - localDOMHandlers.mouseout.call(this, event); - } - } - }; - each(["click", "dblclick", "contextmenu"], function(name) { - localDOMHandlers[name] = function(event) { - event = normalizeEvent(this.dom, event); - this.trigger(name, event); - }; - }); - var globalDOMHandlers = { - pointermove: function(event) { - if (!isPointerFromTouch(event)) { - globalDOMHandlers.mousemove.call(this, event); - } - }, - pointerup: function(event) { - globalDOMHandlers.mouseup.call(this, event); - }, - mousemove: function(event) { - this.trigger("mousemove", event); - }, - mouseup: function(event) { - var pointerCaptureReleasing = this.__pointerCapturing; - this.__togglePointerCapture(false); - this.trigger("mouseup", event); - if (pointerCaptureReleasing) { - event.zrEventControl = "only_globalout"; - this.trigger("mouseout", event); - } - } - }; - function mountLocalDOMEventListeners(instance, scope) { - var domHandlers = scope.domHandlers; - if (env_default.pointerEventsSupported) { - each(localNativeListenerNames.pointer, function(nativeEventName) { - mountSingleDOMEventListener(scope, nativeEventName, function(event) { - domHandlers[nativeEventName].call(instance, event); - }); - }); - } else { - if (env_default.touchEventsSupported) { - each(localNativeListenerNames.touch, function(nativeEventName) { - mountSingleDOMEventListener(scope, nativeEventName, function(event) { - domHandlers[nativeEventName].call(instance, event); - setTouchTimer(scope); - }); - }); - } - each(localNativeListenerNames.mouse, function(nativeEventName) { - mountSingleDOMEventListener(scope, nativeEventName, function(event) { - event = getNativeEvent(event); - if (!scope.touching) { - domHandlers[nativeEventName].call(instance, event); - } - }); - }); - } - } - function mountGlobalDOMEventListeners(instance, scope) { - if (env_default.pointerEventsSupported) { - each(globalNativeListenerNames.pointer, mount); - } else if (!env_default.touchEventsSupported) { - each(globalNativeListenerNames.mouse, mount); - } - function mount(nativeEventName) { - function nativeEventListener(event) { - event = getNativeEvent(event); - if (!isLocalEl(instance, event.target)) { - event = normalizeGlobalEvent(instance, event); - scope.domHandlers[nativeEventName].call(instance, event); - } - } - mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, { capture: true }); - } - } - function mountSingleDOMEventListener(scope, nativeEventName, listener, opt) { - scope.mounted[nativeEventName] = listener; - scope.listenerOpts[nativeEventName] = opt; - addEventListener2(scope.domTarget, nativeEventName, listener, opt); - } - function unmountDOMEventListeners(scope) { - var mounted = scope.mounted; - for (var nativeEventName in mounted) { - if (mounted.hasOwnProperty(nativeEventName)) { - removeEventListener2(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]); - } - } - scope.mounted = {}; - } - var DOMHandlerScope = /* @__PURE__ */ function() { - function DOMHandlerScope2(domTarget, domHandlers) { - this.mounted = {}; - this.listenerOpts = {}; - this.touching = false; - this.domTarget = domTarget; - this.domHandlers = domHandlers; - } - return DOMHandlerScope2; - }(); - var HandlerDomProxy = function(_super) { - __extends(HandlerDomProxy2, _super); - function HandlerDomProxy2(dom, painterRoot) { - var _this = _super.call(this) || this; - _this.__pointerCapturing = false; - _this.dom = dom; - _this.painterRoot = painterRoot; - _this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers); - if (globalEventSupported) { - _this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers); - } - mountLocalDOMEventListeners(_this, _this._localHandlerScope); - return _this; - } - HandlerDomProxy2.prototype.dispose = function() { - unmountDOMEventListeners(this._localHandlerScope); - if (globalEventSupported) { - unmountDOMEventListeners(this._globalHandlerScope); - } - }; - HandlerDomProxy2.prototype.setCursor = function(cursorStyle) { - this.dom.style && (this.dom.style.cursor = cursorStyle || "default"); - }; - HandlerDomProxy2.prototype.__togglePointerCapture = function(isPointerCapturing) { - this.__mayPointerCapture = null; - if (globalEventSupported && +this.__pointerCapturing ^ +isPointerCapturing) { - this.__pointerCapturing = isPointerCapturing; - var globalHandlerScope = this._globalHandlerScope; - isPointerCapturing ? mountGlobalDOMEventListeners(this, globalHandlerScope) : unmountDOMEventListeners(globalHandlerScope); - } - }; - return HandlerDomProxy2; - }(Eventful_default); - var HandlerProxy_default = HandlerDomProxy; - - // node_modules/zrender/lib/config.js - var dpr = 1; - if (env_default.hasGlobalWindow) { - dpr = Math.max(window.devicePixelRatio || window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI || 1, 1); - } - var devicePixelRatio = dpr; - var DARK_MODE_THRESHOLD = 0.4; - var DARK_LABEL_COLOR = "#333"; - var LIGHT_LABEL_COLOR = "#ccc"; - var LIGHTER_LABEL_COLOR = "#eee"; - - // node_modules/zrender/lib/core/Transformable.js - var mIdentity = identity; - var EPSILON3 = 5e-5; - function isNotAroundZero2(val) { - return val > EPSILON3 || val < -EPSILON3; - } - var scaleTmp = []; - var tmpTransform = []; - var originTransform = create2(); - var abs = Math.abs; - var Transformable = function() { - function Transformable2() { - } - Transformable2.prototype.getLocalTransform = function(m2) { - return Transformable2.getLocalTransform(this, m2); - }; - Transformable2.prototype.setPosition = function(arr) { - this.x = arr[0]; - this.y = arr[1]; - }; - Transformable2.prototype.setScale = function(arr) { - this.scaleX = arr[0]; - this.scaleY = arr[1]; - }; - Transformable2.prototype.setSkew = function(arr) { - this.skewX = arr[0]; - this.skewY = arr[1]; - }; - Transformable2.prototype.setOrigin = function(arr) { - this.originX = arr[0]; - this.originY = arr[1]; - }; - Transformable2.prototype.needLocalTransform = function() { - return isNotAroundZero2(this.rotation) || isNotAroundZero2(this.x) || isNotAroundZero2(this.y) || isNotAroundZero2(this.scaleX - 1) || isNotAroundZero2(this.scaleY - 1) || isNotAroundZero2(this.skewX) || isNotAroundZero2(this.skewY); - }; - Transformable2.prototype.updateTransform = function() { - var parentTransform = this.parent && this.parent.transform; - var needLocalTransform = this.needLocalTransform(); - var m2 = this.transform; - if (!(needLocalTransform || parentTransform)) { - if (m2) { - mIdentity(m2); - this.invTransform = null; - } - return; - } - m2 = m2 || create2(); - if (needLocalTransform) { - this.getLocalTransform(m2); - } else { - mIdentity(m2); - } - if (parentTransform) { - if (needLocalTransform) { - mul2(m2, parentTransform, m2); - } else { - copy2(m2, parentTransform); - } - } - this.transform = m2; - this._resolveGlobalScaleRatio(m2); - }; - Transformable2.prototype._resolveGlobalScaleRatio = function(m2) { - var globalScaleRatio = this.globalScaleRatio; - if (globalScaleRatio != null && globalScaleRatio !== 1) { - this.getGlobalScale(scaleTmp); - var relX = scaleTmp[0] < 0 ? -1 : 1; - var relY = scaleTmp[1] < 0 ? -1 : 1; - var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0; - var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0; - m2[0] *= sx; - m2[1] *= sx; - m2[2] *= sy; - m2[3] *= sy; - } - this.invTransform = this.invTransform || create2(); - invert(this.invTransform, m2); - }; - Transformable2.prototype.getComputedTransform = function() { - var transformNode = this; - var ancestors = []; - while (transformNode) { - ancestors.push(transformNode); - transformNode = transformNode.parent; - } - while (transformNode = ancestors.pop()) { - transformNode.updateTransform(); - } - return this.transform; - }; - Transformable2.prototype.setLocalTransform = function(m2) { - if (!m2) { - return; - } - var sx = m2[0] * m2[0] + m2[1] * m2[1]; - var sy = m2[2] * m2[2] + m2[3] * m2[3]; - var rotation = Math.atan2(m2[1], m2[0]); - var shearX = Math.PI / 2 + rotation - Math.atan2(m2[3], m2[2]); - sy = Math.sqrt(sy) * Math.cos(shearX); - sx = Math.sqrt(sx); - this.skewX = shearX; - this.skewY = 0; - this.rotation = -rotation; - this.x = +m2[4]; - this.y = +m2[5]; - this.scaleX = sx; - this.scaleY = sy; - this.originX = 0; - this.originY = 0; - }; - Transformable2.prototype.decomposeTransform = function() { - if (!this.transform) { - return; - } - var parent = this.parent; - var m2 = this.transform; - if (parent && parent.transform) { - parent.invTransform = parent.invTransform || create2(); - mul2(tmpTransform, parent.invTransform, m2); - m2 = tmpTransform; - } - var ox = this.originX; - var oy = this.originY; - if (ox || oy) { - originTransform[4] = ox; - originTransform[5] = oy; - mul2(tmpTransform, m2, originTransform); - tmpTransform[4] -= ox; - tmpTransform[5] -= oy; - m2 = tmpTransform; - } - this.setLocalTransform(m2); - }; - Transformable2.prototype.getGlobalScale = function(out2) { - var m2 = this.transform; - out2 = out2 || []; - if (!m2) { - out2[0] = 1; - out2[1] = 1; - return out2; - } - out2[0] = Math.sqrt(m2[0] * m2[0] + m2[1] * m2[1]); - out2[1] = Math.sqrt(m2[2] * m2[2] + m2[3] * m2[3]); - if (m2[0] < 0) { - out2[0] = -out2[0]; - } - if (m2[3] < 0) { - out2[1] = -out2[1]; - } - return out2; - }; - Transformable2.prototype.transformCoordToLocal = function(x, y) { - var v22 = [x, y]; - var invTransform = this.invTransform; - if (invTransform) { - applyTransform(v22, v22, invTransform); - } - return v22; - }; - Transformable2.prototype.transformCoordToGlobal = function(x, y) { - var v22 = [x, y]; - var transform2 = this.transform; - if (transform2) { - applyTransform(v22, v22, transform2); - } - return v22; - }; - Transformable2.prototype.getLineScale = function() { - var m2 = this.transform; - return m2 && abs(m2[0] - 1) > 1e-10 && abs(m2[3] - 1) > 1e-10 ? Math.sqrt(abs(m2[0] * m2[3] - m2[2] * m2[1])) : 1; - }; - Transformable2.prototype.copyTransform = function(source) { - copyTransform(this, source); - }; - Transformable2.getLocalTransform = function(target, m2) { - m2 = m2 || []; - var ox = target.originX || 0; - var oy = target.originY || 0; - var sx = target.scaleX; - var sy = target.scaleY; - var ax = target.anchorX; - var ay = target.anchorY; - var rotation = target.rotation || 0; - var x = target.x; - var y = target.y; - var skewX = target.skewX ? Math.tan(target.skewX) : 0; - var skewY = target.skewY ? Math.tan(-target.skewY) : 0; - if (ox || oy || ax || ay) { - var dx = ox + ax; - var dy = oy + ay; - m2[4] = -dx * sx - skewX * dy * sy; - m2[5] = -dy * sy - skewY * dx * sx; - } else { - m2[4] = m2[5] = 0; - } - m2[0] = sx; - m2[3] = sy; - m2[1] = skewY * sx; - m2[2] = skewX * sy; - rotation && rotate(m2, m2, rotation); - m2[4] += ox + x; - m2[5] += oy + y; - return m2; - }; - Transformable2.initDefaultProps = function() { - var proto2 = Transformable2.prototype; - proto2.scaleX = proto2.scaleY = proto2.globalScaleRatio = 1; - proto2.x = proto2.y = proto2.originX = proto2.originY = proto2.skewX = proto2.skewY = proto2.rotation = proto2.anchorX = proto2.anchorY = 0; - }(); - return Transformable2; - }(); - var TRANSFORMABLE_PROPS = [ - "x", - "y", - "originX", - "originY", - "anchorX", - "anchorY", - "rotation", - "scaleX", - "scaleY", - "skewX", - "skewY" - ]; - function copyTransform(target, source) { - for (var i = 0; i < TRANSFORMABLE_PROPS.length; i++) { - var propName = TRANSFORMABLE_PROPS[i]; - target[propName] = source[propName]; - } - } - var Transformable_default = Transformable; - - // node_modules/zrender/lib/contain/text.js - var textWidthCache = {}; - function getWidth(text, font) { - font = font || DEFAULT_FONT; - var cacheOfFont = textWidthCache[font]; - if (!cacheOfFont) { - cacheOfFont = textWidthCache[font] = new LRU_default(500); - } - var width = cacheOfFont.get(text); - if (width == null) { - width = platformApi.measureText(text, font).width; - cacheOfFont.put(text, width); - } - return width; - } - function innerGetBoundingRect(text, font, textAlign, textBaseline) { - var width = getWidth(text, font); - var height = getLineHeight(font); - var x = adjustTextX(0, width, textAlign); - var y = adjustTextY2(0, height, textBaseline); - var rect = new BoundingRect_default(x, y, width, height); - return rect; - } - function getBoundingRect(text, font, textAlign, textBaseline) { - var textLines = ((text || "") + "").split("\n"); - var len2 = textLines.length; - if (len2 === 1) { - return innerGetBoundingRect(textLines[0], font, textAlign, textBaseline); - } else { - var uniondRect = new BoundingRect_default(0, 0, 0, 0); - for (var i = 0; i < textLines.length; i++) { - var rect = innerGetBoundingRect(textLines[i], font, textAlign, textBaseline); - i === 0 ? uniondRect.copy(rect) : uniondRect.union(rect); - } - return uniondRect; - } - } - function adjustTextX(x, width, textAlign) { - if (textAlign === "right") { - x -= width; - } else if (textAlign === "center") { - x -= width / 2; - } - return x; - } - function adjustTextY2(y, height, verticalAlign) { - if (verticalAlign === "middle") { - y -= height / 2; - } else if (verticalAlign === "bottom") { - y -= height; - } - return y; - } - function getLineHeight(font) { - return getWidth("\u56FD", font); - } - function parsePercent(value, maxValue) { - if (typeof value === "string") { - if (value.lastIndexOf("%") >= 0) { - return parseFloat(value) / 100 * maxValue; - } - return parseFloat(value); - } - return value; - } - function calculateTextPosition(out2, opts, rect) { - var textPosition = opts.position || "inside"; - var distance2 = opts.distance != null ? opts.distance : 5; - var height = rect.height; - var width = rect.width; - var halfHeight = height / 2; - var x = rect.x; - var y = rect.y; - var textAlign = "left"; - var textVerticalAlign = "top"; - if (textPosition instanceof Array) { - x += parsePercent(textPosition[0], rect.width); - y += parsePercent(textPosition[1], rect.height); - textAlign = null; - textVerticalAlign = null; - } else { - switch (textPosition) { - case "left": - x -= distance2; - y += halfHeight; - textAlign = "right"; - textVerticalAlign = "middle"; - break; - case "right": - x += distance2 + width; - y += halfHeight; - textVerticalAlign = "middle"; - break; - case "top": - x += width / 2; - y -= distance2; - textAlign = "center"; - textVerticalAlign = "bottom"; - break; - case "bottom": - x += width / 2; - y += height + distance2; - textAlign = "center"; - break; - case "inside": - x += width / 2; - y += halfHeight; - textAlign = "center"; - textVerticalAlign = "middle"; - break; - case "insideLeft": - x += distance2; - y += halfHeight; - textVerticalAlign = "middle"; - break; - case "insideRight": - x += width - distance2; - y += halfHeight; - textAlign = "right"; - textVerticalAlign = "middle"; - break; - case "insideTop": - x += width / 2; - y += distance2; - textAlign = "center"; - break; - case "insideBottom": - x += width / 2; - y += height - distance2; - textAlign = "center"; - textVerticalAlign = "bottom"; - break; - case "insideTopLeft": - x += distance2; - y += distance2; - break; - case "insideTopRight": - x += width - distance2; - y += distance2; - textAlign = "right"; - break; - case "insideBottomLeft": - x += distance2; - y += height - distance2; - textVerticalAlign = "bottom"; - break; - case "insideBottomRight": - x += width - distance2; - y += height - distance2; - textAlign = "right"; - textVerticalAlign = "bottom"; - break; - } - } - out2 = out2 || {}; - out2.x = x; - out2.y = y; - out2.align = textAlign; - out2.verticalAlign = textVerticalAlign; - return out2; - } - - // node_modules/zrender/lib/Element.js - var PRESERVED_NORMAL_STATE = "__zr_normal__"; - var PRIMARY_STATES_KEYS = TRANSFORMABLE_PROPS.concat(["ignore"]); - var DEFAULT_ANIMATABLE_MAP = reduce(TRANSFORMABLE_PROPS, function(obj, key) { - obj[key] = true; - return obj; - }, { ignore: false }); - var tmpTextPosCalcRes = {}; - var tmpBoundingRect = new BoundingRect_default(0, 0, 0, 0); - var Element2 = function() { - function Element3(props) { - this.id = guid(); - this.animators = []; - this.currentStates = []; - this.states = {}; - this._init(props); - } - Element3.prototype._init = function(props) { - this.attr(props); - }; - Element3.prototype.drift = function(dx, dy, e2) { - switch (this.draggable) { - case "horizontal": - dy = 0; - break; - case "vertical": - dx = 0; - break; - } - var m2 = this.transform; - if (!m2) { - m2 = this.transform = [1, 0, 0, 1, 0, 0]; - } - m2[4] += dx; - m2[5] += dy; - this.decomposeTransform(); - this.markRedraw(); - }; - Element3.prototype.beforeUpdate = function() { - }; - Element3.prototype.afterUpdate = function() { - }; - Element3.prototype.update = function() { - this.updateTransform(); - if (this.__dirty) { - this.updateInnerText(); - } - }; - Element3.prototype.updateInnerText = function(forceUpdate) { - var textEl = this._textContent; - if (textEl && (!textEl.ignore || forceUpdate)) { - if (!this.textConfig) { - this.textConfig = {}; - } - var textConfig = this.textConfig; - var isLocal = textConfig.local; - var innerTransformable = textEl.innerTransformable; - var textAlign = void 0; - var textVerticalAlign = void 0; - var textStyleChanged = false; - innerTransformable.parent = isLocal ? this : null; - var innerOrigin = false; - innerTransformable.copyTransform(textEl); - if (textConfig.position != null) { - var layoutRect = tmpBoundingRect; - if (textConfig.layoutRect) { - layoutRect.copy(textConfig.layoutRect); - } else { - layoutRect.copy(this.getBoundingRect()); - } - if (!isLocal) { - layoutRect.applyTransform(this.transform); - } - if (this.calculateTextPosition) { - this.calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect); - } else { - calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect); - } - innerTransformable.x = tmpTextPosCalcRes.x; - innerTransformable.y = tmpTextPosCalcRes.y; - textAlign = tmpTextPosCalcRes.align; - textVerticalAlign = tmpTextPosCalcRes.verticalAlign; - var textOrigin = textConfig.origin; - if (textOrigin && textConfig.rotation != null) { - var relOriginX = void 0; - var relOriginY = void 0; - if (textOrigin === "center") { - relOriginX = layoutRect.width * 0.5; - relOriginY = layoutRect.height * 0.5; - } else { - relOriginX = parsePercent(textOrigin[0], layoutRect.width); - relOriginY = parsePercent(textOrigin[1], layoutRect.height); - } - innerOrigin = true; - innerTransformable.originX = -innerTransformable.x + relOriginX + (isLocal ? 0 : layoutRect.x); - innerTransformable.originY = -innerTransformable.y + relOriginY + (isLocal ? 0 : layoutRect.y); - } - } - if (textConfig.rotation != null) { - innerTransformable.rotation = textConfig.rotation; - } - var textOffset = textConfig.offset; - if (textOffset) { - innerTransformable.x += textOffset[0]; - innerTransformable.y += textOffset[1]; - if (!innerOrigin) { - innerTransformable.originX = -textOffset[0]; - innerTransformable.originY = -textOffset[1]; - } - } - var isInside = textConfig.inside == null ? typeof textConfig.position === "string" && textConfig.position.indexOf("inside") >= 0 : textConfig.inside; - var innerTextDefaultStyle = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {}); - var textFill = void 0; - var textStroke = void 0; - var autoStroke = void 0; - if (isInside && this.canBeInsideText()) { - textFill = textConfig.insideFill; - textStroke = textConfig.insideStroke; - if (textFill == null || textFill === "auto") { - textFill = this.getInsideTextFill(); - } - if (textStroke == null || textStroke === "auto") { - textStroke = this.getInsideTextStroke(textFill); - autoStroke = true; - } - } else { - textFill = textConfig.outsideFill; - textStroke = textConfig.outsideStroke; - if (textFill == null || textFill === "auto") { - textFill = this.getOutsideFill(); - } - if (textStroke == null || textStroke === "auto") { - textStroke = this.getOutsideStroke(textFill); - autoStroke = true; - } - } - textFill = textFill || "#000"; - if (textFill !== innerTextDefaultStyle.fill || textStroke !== innerTextDefaultStyle.stroke || autoStroke !== innerTextDefaultStyle.autoStroke || textAlign !== innerTextDefaultStyle.align || textVerticalAlign !== innerTextDefaultStyle.verticalAlign) { - textStyleChanged = true; - innerTextDefaultStyle.fill = textFill; - innerTextDefaultStyle.stroke = textStroke; - innerTextDefaultStyle.autoStroke = autoStroke; - innerTextDefaultStyle.align = textAlign; - innerTextDefaultStyle.verticalAlign = textVerticalAlign; - textEl.setDefaultTextStyle(innerTextDefaultStyle); - } - textEl.__dirty |= REDRAW_BIT; - if (textStyleChanged) { - textEl.dirtyStyle(true); - } - } - }; - Element3.prototype.canBeInsideText = function() { - return true; - }; - Element3.prototype.getInsideTextFill = function() { - return "#fff"; - }; - Element3.prototype.getInsideTextStroke = function(textFill) { - return "#000"; - }; - Element3.prototype.getOutsideFill = function() { - return this.__zr && this.__zr.isDarkMode() ? LIGHT_LABEL_COLOR : DARK_LABEL_COLOR; - }; - Element3.prototype.getOutsideStroke = function(textFill) { - var backgroundColor2 = this.__zr && this.__zr.getBackgroundColor(); - var colorArr = typeof backgroundColor2 === "string" && parse(backgroundColor2); - if (!colorArr) { - colorArr = [255, 255, 255, 1]; - } - var alpha = colorArr[3]; - var isDark = this.__zr.isDarkMode(); - for (var i = 0; i < 3; i++) { - colorArr[i] = colorArr[i] * alpha + (isDark ? 0 : 255) * (1 - alpha); - } - colorArr[3] = 1; - return stringify(colorArr, "rgba"); - }; - Element3.prototype.traverse = function(cb, context) { - }; - Element3.prototype.attrKV = function(key, value) { - if (key === "textConfig") { - this.setTextConfig(value); - } else if (key === "textContent") { - this.setTextContent(value); - } else if (key === "clipPath") { - this.setClipPath(value); - } else if (key === "extra") { - this.extra = this.extra || {}; - extend(this.extra, value); - } else { - this[key] = value; - } - }; - Element3.prototype.hide = function() { - this.ignore = true; - this.markRedraw(); - }; - Element3.prototype.show = function() { - this.ignore = false; - this.markRedraw(); - }; - Element3.prototype.attr = function(keyOrObj, value) { - if (typeof keyOrObj === "string") { - this.attrKV(keyOrObj, value); - } else if (isObject(keyOrObj)) { - var obj = keyOrObj; - var keysArr = keys(obj); - for (var i = 0; i < keysArr.length; i++) { - var key = keysArr[i]; - this.attrKV(key, keyOrObj[key]); - } - } - this.markRedraw(); - return this; - }; - Element3.prototype.saveCurrentToNormalState = function(toState) { - this._innerSaveToNormal(toState); - var normalState = this._normalState; - for (var i = 0; i < this.animators.length; i++) { - var animator = this.animators[i]; - var fromStateTransition = animator.__fromStateTransition; - if (animator.getLoop() || fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE) { - continue; - } - var targetName = animator.targetName; - var target = targetName ? normalState[targetName] : normalState; - animator.saveTo(target); - } - }; - Element3.prototype._innerSaveToNormal = function(toState) { - var normalState = this._normalState; - if (!normalState) { - normalState = this._normalState = {}; - } - if (toState.textConfig && !normalState.textConfig) { - normalState.textConfig = this.textConfig; - } - this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS); - }; - Element3.prototype._savePrimaryToNormal = function(toState, normalState, primaryKeys) { - for (var i = 0; i < primaryKeys.length; i++) { - var key = primaryKeys[i]; - if (toState[key] != null && !(key in normalState)) { - normalState[key] = this[key]; - } - } - }; - Element3.prototype.hasState = function() { - return this.currentStates.length > 0; - }; - Element3.prototype.getState = function(name) { - return this.states[name]; - }; - Element3.prototype.ensureState = function(name) { - var states = this.states; - if (!states[name]) { - states[name] = {}; - } - return states[name]; - }; - Element3.prototype.clearStates = function(noAnimation) { - this.useState(PRESERVED_NORMAL_STATE, false, noAnimation); - }; - Element3.prototype.useState = function(stateName, keepCurrentStates, noAnimation, forceUseHoverLayer) { - var toNormalState = stateName === PRESERVED_NORMAL_STATE; - var hasStates = this.hasState(); - if (!hasStates && toNormalState) { - return; - } - var currentStates = this.currentStates; - var animationCfg = this.stateTransition; - if (indexOf(currentStates, stateName) >= 0 && (keepCurrentStates || currentStates.length === 1)) { - return; - } - var state; - if (this.stateProxy && !toNormalState) { - state = this.stateProxy(stateName); - } - if (!state) { - state = this.states && this.states[stateName]; - } - if (!state && !toNormalState) { - logError("State " + stateName + " not exists."); - return; - } - if (!toNormalState) { - this.saveCurrentToNormalState(state); - } - var useHoverLayer = !!(state && state.hoverLayer || forceUseHoverLayer); - if (useHoverLayer) { - this._toggleHoverLayerFlag(true); - } - this._applyStateObj(stateName, state, this._normalState, keepCurrentStates, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg); - var textContent = this._textContent; - var textGuide = this._textGuide; - if (textContent) { - textContent.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer); - } - if (textGuide) { - textGuide.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer); - } - if (toNormalState) { - this.currentStates = []; - this._normalState = {}; - } else { - if (!keepCurrentStates) { - this.currentStates = [stateName]; - } else { - this.currentStates.push(stateName); - } - } - this._updateAnimationTargets(); - this.markRedraw(); - if (!useHoverLayer && this.__inHover) { - this._toggleHoverLayerFlag(false); - this.__dirty &= ~REDRAW_BIT; - } - return state; - }; - Element3.prototype.useStates = function(states, noAnimation, forceUseHoverLayer) { - if (!states.length) { - this.clearStates(); - } else { - var stateObjects = []; - var currentStates = this.currentStates; - var len2 = states.length; - var notChange = len2 === currentStates.length; - if (notChange) { - for (var i = 0; i < len2; i++) { - if (states[i] !== currentStates[i]) { - notChange = false; - break; - } - } - } - if (notChange) { - return; - } - for (var i = 0; i < len2; i++) { - var stateName = states[i]; - var stateObj = void 0; - if (this.stateProxy) { - stateObj = this.stateProxy(stateName, states); - } - if (!stateObj) { - stateObj = this.states[stateName]; - } - if (stateObj) { - stateObjects.push(stateObj); - } - } - var lastStateObj = stateObjects[len2 - 1]; - var useHoverLayer = !!(lastStateObj && lastStateObj.hoverLayer || forceUseHoverLayer); - if (useHoverLayer) { - this._toggleHoverLayerFlag(true); - } - var mergedState = this._mergeStates(stateObjects); - var animationCfg = this.stateTransition; - this.saveCurrentToNormalState(mergedState); - this._applyStateObj(states.join(","), mergedState, this._normalState, false, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg); - var textContent = this._textContent; - var textGuide = this._textGuide; - if (textContent) { - textContent.useStates(states, noAnimation, useHoverLayer); - } - if (textGuide) { - textGuide.useStates(states, noAnimation, useHoverLayer); - } - this._updateAnimationTargets(); - this.currentStates = states.slice(); - this.markRedraw(); - if (!useHoverLayer && this.__inHover) { - this._toggleHoverLayerFlag(false); - this.__dirty &= ~REDRAW_BIT; - } - } - }; - Element3.prototype.isSilent = function() { - var isSilent = this.silent; - var ancestor = this.parent; - while (!isSilent && ancestor) { - if (ancestor.silent) { - isSilent = true; - break; - } - ancestor = ancestor.parent; - } - return isSilent; - }; - Element3.prototype._updateAnimationTargets = function() { - for (var i = 0; i < this.animators.length; i++) { - var animator = this.animators[i]; - if (animator.targetName) { - animator.changeTarget(this[animator.targetName]); - } - } - }; - Element3.prototype.removeState = function(state) { - var idx = indexOf(this.currentStates, state); - if (idx >= 0) { - var currentStates = this.currentStates.slice(); - currentStates.splice(idx, 1); - this.useStates(currentStates); - } - }; - Element3.prototype.replaceState = function(oldState, newState, forceAdd) { - var currentStates = this.currentStates.slice(); - var idx = indexOf(currentStates, oldState); - var newStateExists = indexOf(currentStates, newState) >= 0; - if (idx >= 0) { - if (!newStateExists) { - currentStates[idx] = newState; - } else { - currentStates.splice(idx, 1); - } - } else if (forceAdd && !newStateExists) { - currentStates.push(newState); - } - this.useStates(currentStates); - }; - Element3.prototype.toggleState = function(state, enable) { - if (enable) { - this.useState(state, true); - } else { - this.removeState(state); - } - }; - Element3.prototype._mergeStates = function(states) { - var mergedState = {}; - var mergedTextConfig; - for (var i = 0; i < states.length; i++) { - var state = states[i]; - extend(mergedState, state); - if (state.textConfig) { - mergedTextConfig = mergedTextConfig || {}; - extend(mergedTextConfig, state.textConfig); - } - } - if (mergedTextConfig) { - mergedState.textConfig = mergedTextConfig; - } - return mergedState; - }; - Element3.prototype._applyStateObj = function(stateName, state, normalState, keepCurrentStates, transition, animationCfg) { - var needsRestoreToNormal = !(state && keepCurrentStates); - if (state && state.textConfig) { - this.textConfig = extend({}, keepCurrentStates ? this.textConfig : normalState.textConfig); - extend(this.textConfig, state.textConfig); - } else if (needsRestoreToNormal) { - if (normalState.textConfig) { - this.textConfig = normalState.textConfig; - } - } - var transitionTarget = {}; - var hasTransition = false; - for (var i = 0; i < PRIMARY_STATES_KEYS.length; i++) { - var key = PRIMARY_STATES_KEYS[i]; - var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP[key]; - if (state && state[key] != null) { - if (propNeedsTransition) { - hasTransition = true; - transitionTarget[key] = state[key]; - } else { - this[key] = state[key]; - } - } else if (needsRestoreToNormal) { - if (normalState[key] != null) { - if (propNeedsTransition) { - hasTransition = true; - transitionTarget[key] = normalState[key]; - } else { - this[key] = normalState[key]; - } - } - } - } - if (!transition) { - for (var i = 0; i < this.animators.length; i++) { - var animator = this.animators[i]; - var targetName = animator.targetName; - if (!animator.getLoop()) { - animator.__changeFinalValue(targetName ? (state || normalState)[targetName] : state || normalState); - } - } - } - if (hasTransition) { - this._transitionState(stateName, transitionTarget, animationCfg); - } - }; - Element3.prototype._attachComponent = function(componentEl) { - if (componentEl.__zr && !componentEl.__hostTarget) { - if (true) { - throw new Error("Text element has been added to zrender."); - } - return; - } - if (componentEl === this) { - if (true) { - throw new Error("Recursive component attachment."); - } - return; - } - var zr = this.__zr; - if (zr) { - componentEl.addSelfToZr(zr); - } - componentEl.__zr = zr; - componentEl.__hostTarget = this; - }; - Element3.prototype._detachComponent = function(componentEl) { - if (componentEl.__zr) { - componentEl.removeSelfFromZr(componentEl.__zr); - } - componentEl.__zr = null; - componentEl.__hostTarget = null; - }; - Element3.prototype.getClipPath = function() { - return this._clipPath; - }; - Element3.prototype.setClipPath = function(clipPath) { - if (this._clipPath && this._clipPath !== clipPath) { - this.removeClipPath(); - } - this._attachComponent(clipPath); - this._clipPath = clipPath; - this.markRedraw(); - }; - Element3.prototype.removeClipPath = function() { - var clipPath = this._clipPath; - if (clipPath) { - this._detachComponent(clipPath); - this._clipPath = null; - this.markRedraw(); - } - }; - Element3.prototype.getTextContent = function() { - return this._textContent; - }; - Element3.prototype.setTextContent = function(textEl) { - var previousTextContent = this._textContent; - if (previousTextContent === textEl) { - return; - } - if (previousTextContent && previousTextContent !== textEl) { - this.removeTextContent(); - } - if (true) { - if (textEl.__zr && !textEl.__hostTarget) { - throw new Error("Text element has been added to zrender."); - } - } - textEl.innerTransformable = new Transformable_default(); - this._attachComponent(textEl); - this._textContent = textEl; - this.markRedraw(); - }; - Element3.prototype.setTextConfig = function(cfg) { - if (!this.textConfig) { - this.textConfig = {}; - } - extend(this.textConfig, cfg); - this.markRedraw(); - }; - Element3.prototype.removeTextConfig = function() { - this.textConfig = null; - this.markRedraw(); - }; - Element3.prototype.removeTextContent = function() { - var textEl = this._textContent; - if (textEl) { - textEl.innerTransformable = null; - this._detachComponent(textEl); - this._textContent = null; - this._innerTextDefaultStyle = null; - this.markRedraw(); - } - }; - Element3.prototype.getTextGuideLine = function() { - return this._textGuide; - }; - Element3.prototype.setTextGuideLine = function(guideLine) { - if (this._textGuide && this._textGuide !== guideLine) { - this.removeTextGuideLine(); - } - this._attachComponent(guideLine); - this._textGuide = guideLine; - this.markRedraw(); - }; - Element3.prototype.removeTextGuideLine = function() { - var textGuide = this._textGuide; - if (textGuide) { - this._detachComponent(textGuide); - this._textGuide = null; - this.markRedraw(); - } - }; - Element3.prototype.markRedraw = function() { - this.__dirty |= REDRAW_BIT; - var zr = this.__zr; - if (zr) { - if (this.__inHover) { - zr.refreshHover(); - } else { - zr.refresh(); - } - } - if (this.__hostTarget) { - this.__hostTarget.markRedraw(); - } - }; - Element3.prototype.dirty = function() { - this.markRedraw(); - }; - Element3.prototype._toggleHoverLayerFlag = function(inHover) { - this.__inHover = inHover; - var textContent = this._textContent; - var textGuide = this._textGuide; - if (textContent) { - textContent.__inHover = inHover; - } - if (textGuide) { - textGuide.__inHover = inHover; - } - }; - Element3.prototype.addSelfToZr = function(zr) { - if (this.__zr === zr) { - return; - } - this.__zr = zr; - var animators = this.animators; - if (animators) { - for (var i = 0; i < animators.length; i++) { - zr.animation.addAnimator(animators[i]); - } - } - if (this._clipPath) { - this._clipPath.addSelfToZr(zr); - } - if (this._textContent) { - this._textContent.addSelfToZr(zr); - } - if (this._textGuide) { - this._textGuide.addSelfToZr(zr); - } - }; - Element3.prototype.removeSelfFromZr = function(zr) { - if (!this.__zr) { - return; - } - this.__zr = null; - var animators = this.animators; - if (animators) { - for (var i = 0; i < animators.length; i++) { - zr.animation.removeAnimator(animators[i]); - } - } - if (this._clipPath) { - this._clipPath.removeSelfFromZr(zr); - } - if (this._textContent) { - this._textContent.removeSelfFromZr(zr); - } - if (this._textGuide) { - this._textGuide.removeSelfFromZr(zr); - } - }; - Element3.prototype.animate = function(key, loop, allowDiscreteAnimation) { - var target = key ? this[key] : this; - if (true) { - if (!target) { - logError('Property "' + key + '" is not existed in element ' + this.id); - return; - } - } - var animator = new Animator_default(target, loop, allowDiscreteAnimation); - key && (animator.targetName = key); - this.addAnimator(animator, key); - return animator; - }; - Element3.prototype.addAnimator = function(animator, key) { - var zr = this.__zr; - var el = this; - animator.during(function() { - el.updateDuringAnimation(key); - }).done(function() { - var animators = el.animators; - var idx = indexOf(animators, animator); - if (idx >= 0) { - animators.splice(idx, 1); - } - }); - this.animators.push(animator); - if (zr) { - zr.animation.addAnimator(animator); - } - zr && zr.wakeUp(); - }; - Element3.prototype.updateDuringAnimation = function(key) { - this.markRedraw(); - }; - Element3.prototype.stopAnimation = function(scope, forwardToLast) { - var animators = this.animators; - var len2 = animators.length; - var leftAnimators = []; - for (var i = 0; i < len2; i++) { - var animator = animators[i]; - if (!scope || scope === animator.scope) { - animator.stop(forwardToLast); - } else { - leftAnimators.push(animator); - } - } - this.animators = leftAnimators; - return this; - }; - Element3.prototype.animateTo = function(target, cfg, animationProps) { - animateTo(this, target, cfg, animationProps); - }; - Element3.prototype.animateFrom = function(target, cfg, animationProps) { - animateTo(this, target, cfg, animationProps, true); - }; - Element3.prototype._transitionState = function(stateName, target, cfg, animationProps) { - var animators = animateTo(this, target, cfg, animationProps); - for (var i = 0; i < animators.length; i++) { - animators[i].__fromStateTransition = stateName; - } - }; - Element3.prototype.getBoundingRect = function() { - return null; - }; - Element3.prototype.getPaintRect = function() { - return null; - }; - Element3.initDefaultProps = function() { - var elProto = Element3.prototype; - elProto.type = "element"; - elProto.name = ""; - elProto.ignore = elProto.silent = elProto.isGroup = elProto.draggable = elProto.dragging = elProto.ignoreClip = elProto.__inHover = false; - elProto.__dirty = REDRAW_BIT; - var logs = {}; - function logDeprecatedError(key, xKey, yKey) { - if (!logs[key + xKey + yKey]) { - console.warn("DEPRECATED: '" + key + "' has been deprecated. use '" + xKey + "', '" + yKey + "' instead"); - logs[key + xKey + yKey] = true; - } - } - function createLegacyProperty(key, privateKey, xKey, yKey) { - Object.defineProperty(elProto, key, { - get: function() { - if (true) { - logDeprecatedError(key, xKey, yKey); - } - if (!this[privateKey]) { - var pos = this[privateKey] = []; - enhanceArray(this, pos); - } - return this[privateKey]; - }, - set: function(pos) { - if (true) { - logDeprecatedError(key, xKey, yKey); - } - this[xKey] = pos[0]; - this[yKey] = pos[1]; - this[privateKey] = pos; - enhanceArray(this, pos); - } - }); - function enhanceArray(self2, pos) { - Object.defineProperty(pos, 0, { - get: function() { - return self2[xKey]; - }, - set: function(val) { - self2[xKey] = val; - } - }); - Object.defineProperty(pos, 1, { - get: function() { - return self2[yKey]; - }, - set: function(val) { - self2[yKey] = val; - } - }); - } - } - if (Object.defineProperty) { - createLegacyProperty("position", "_legacyPos", "x", "y"); - createLegacyProperty("scale", "_legacyScale", "scaleX", "scaleY"); - createLegacyProperty("origin", "_legacyOrigin", "originX", "originY"); - } - }(); - return Element3; - }(); - mixin(Element2, Eventful_default); - mixin(Element2, Transformable_default); - function animateTo(animatable, target, cfg, animationProps, reverse2) { - cfg = cfg || {}; - var animators = []; - animateToShallow(animatable, "", animatable, target, cfg, animationProps, animators, reverse2); - var finishCount = animators.length; - var doneHappened = false; - var cfgDone = cfg.done; - var cfgAborted = cfg.aborted; - var doneCb = function() { - doneHappened = true; - finishCount--; - if (finishCount <= 0) { - doneHappened ? cfgDone && cfgDone() : cfgAborted && cfgAborted(); - } - }; - var abortedCb = function() { - finishCount--; - if (finishCount <= 0) { - doneHappened ? cfgDone && cfgDone() : cfgAborted && cfgAborted(); - } - }; - if (!finishCount) { - cfgDone && cfgDone(); - } - if (animators.length > 0 && cfg.during) { - animators[0].during(function(target2, percent) { - cfg.during(percent); - }); - } - for (var i = 0; i < animators.length; i++) { - var animator = animators[i]; - if (doneCb) { - animator.done(doneCb); - } - if (abortedCb) { - animator.aborted(abortedCb); - } - if (cfg.force) { - animator.duration(cfg.duration); - } - animator.start(cfg.easing); - } - return animators; - } - function copyArrShallow(source, target, len2) { - for (var i = 0; i < len2; i++) { - source[i] = target[i]; - } - } - function is2DArray(value) { - return isArrayLike(value[0]); - } - function copyValue(target, source, key) { - if (isArrayLike(source[key])) { - if (!isArrayLike(target[key])) { - target[key] = []; - } - if (isTypedArray(source[key])) { - var len2 = source[key].length; - if (target[key].length !== len2) { - target[key] = new source[key].constructor(len2); - copyArrShallow(target[key], source[key], len2); - } - } else { - var sourceArr = source[key]; - var targetArr = target[key]; - var len0 = sourceArr.length; - if (is2DArray(sourceArr)) { - var len1 = sourceArr[0].length; - for (var i = 0; i < len0; i++) { - if (!targetArr[i]) { - targetArr[i] = Array.prototype.slice.call(sourceArr[i]); - } else { - copyArrShallow(targetArr[i], sourceArr[i], len1); - } - } - } else { - copyArrShallow(targetArr, sourceArr, len0); - } - targetArr.length = sourceArr.length; - } - } else { - target[key] = source[key]; - } - } - function isValueSame(val1, val2) { - return val1 === val2 || isArrayLike(val1) && isArrayLike(val2) && is1DArraySame(val1, val2); - } - function is1DArraySame(arr0, arr1) { - var len2 = arr0.length; - if (len2 !== arr1.length) { - return false; - } - for (var i = 0; i < len2; i++) { - if (arr0[i] !== arr1[i]) { - return false; - } - } - return true; - } - function animateToShallow(animatable, topKey, animateObj, target, cfg, animationProps, animators, reverse2) { - var targetKeys = keys(target); - var duration = cfg.duration; - var delay = cfg.delay; - var additive = cfg.additive; - var setToFinal = cfg.setToFinal; - var animateAll = !isObject(animationProps); - var existsAnimators = animatable.animators; - var animationKeys = []; - for (var k = 0; k < targetKeys.length; k++) { - var innerKey = targetKeys[k]; - var targetVal = target[innerKey]; - if (targetVal != null && animateObj[innerKey] != null && (animateAll || animationProps[innerKey])) { - if (isObject(targetVal) && !isArrayLike(targetVal) && !isGradientObject(targetVal)) { - if (topKey) { - if (!reverse2) { - animateObj[innerKey] = targetVal; - animatable.updateDuringAnimation(topKey); - } - continue; - } - animateToShallow(animatable, innerKey, animateObj[innerKey], targetVal, cfg, animationProps && animationProps[innerKey], animators, reverse2); - } else { - animationKeys.push(innerKey); - } - } else if (!reverse2) { - animateObj[innerKey] = targetVal; - animatable.updateDuringAnimation(topKey); - animationKeys.push(innerKey); - } - } - var keyLen = animationKeys.length; - if (!additive && keyLen) { - for (var i = 0; i < existsAnimators.length; i++) { - var animator = existsAnimators[i]; - if (animator.targetName === topKey) { - var allAborted = animator.stopTracks(animationKeys); - if (allAborted) { - var idx = indexOf(existsAnimators, animator); - existsAnimators.splice(idx, 1); - } - } - } - } - if (!cfg.force) { - animationKeys = filter(animationKeys, function(key) { - return !isValueSame(target[key], animateObj[key]); - }); - keyLen = animationKeys.length; - } - if (keyLen > 0 || cfg.force && !animators.length) { - var revertedSource = void 0; - var reversedTarget = void 0; - var sourceClone = void 0; - if (reverse2) { - reversedTarget = {}; - if (setToFinal) { - revertedSource = {}; - } - for (var i = 0; i < keyLen; i++) { - var innerKey = animationKeys[i]; - reversedTarget[innerKey] = animateObj[innerKey]; - if (setToFinal) { - revertedSource[innerKey] = target[innerKey]; - } else { - animateObj[innerKey] = target[innerKey]; - } - } - } else if (setToFinal) { - sourceClone = {}; - for (var i = 0; i < keyLen; i++) { - var innerKey = animationKeys[i]; - sourceClone[innerKey] = cloneValue(animateObj[innerKey]); - copyValue(animateObj, target, innerKey); - } - } - var animator = new Animator_default(animateObj, false, false, additive ? filter(existsAnimators, function(animator2) { - return animator2.targetName === topKey; - }) : null); - animator.targetName = topKey; - if (cfg.scope) { - animator.scope = cfg.scope; - } - if (setToFinal && revertedSource) { - animator.whenWithKeys(0, revertedSource, animationKeys); - } - if (sourceClone) { - animator.whenWithKeys(0, sourceClone, animationKeys); - } - animator.whenWithKeys(duration == null ? 500 : duration, reverse2 ? reversedTarget : target, animationKeys).delay(delay || 0); - animatable.addAnimator(animator, topKey); - animators.push(animator); - } - } - var Element_default = Element2; - - // node_modules/zrender/lib/graphic/Group.js - var Group = function(_super) { - __extends(Group5, _super); - function Group5(opts) { - var _this = _super.call(this) || this; - _this.isGroup = true; - _this._children = []; - _this.attr(opts); - return _this; - } - Group5.prototype.childrenRef = function() { - return this._children; - }; - Group5.prototype.children = function() { - return this._children.slice(); - }; - Group5.prototype.childAt = function(idx) { - return this._children[idx]; - }; - Group5.prototype.childOfName = function(name) { - var children = this._children; - for (var i = 0; i < children.length; i++) { - if (children[i].name === name) { - return children[i]; - } - } - }; - Group5.prototype.childCount = function() { - return this._children.length; - }; - Group5.prototype.add = function(child) { - if (child) { - if (child !== this && child.parent !== this) { - this._children.push(child); - this._doAdd(child); - } - if (true) { - if (child.__hostTarget) { - throw "This elemenet has been used as an attachment"; - } - } - } - return this; - }; - Group5.prototype.addBefore = function(child, nextSibling2) { - if (child && child !== this && child.parent !== this && nextSibling2 && nextSibling2.parent === this) { - var children = this._children; - var idx = children.indexOf(nextSibling2); - if (idx >= 0) { - children.splice(idx, 0, child); - this._doAdd(child); - } - } - return this; - }; - Group5.prototype.replace = function(oldChild, newChild) { - var idx = indexOf(this._children, oldChild); - if (idx >= 0) { - this.replaceAt(newChild, idx); - } - return this; - }; - Group5.prototype.replaceAt = function(child, index) { - var children = this._children; - var old = children[index]; - if (child && child !== this && child.parent !== this && child !== old) { - children[index] = child; - old.parent = null; - var zr = this.__zr; - if (zr) { - old.removeSelfFromZr(zr); - } - this._doAdd(child); - } - return this; - }; - Group5.prototype._doAdd = function(child) { - if (child.parent) { - child.parent.remove(child); - } - child.parent = this; - var zr = this.__zr; - if (zr && zr !== child.__zr) { - child.addSelfToZr(zr); - } - zr && zr.refresh(); - }; - Group5.prototype.remove = function(child) { - var zr = this.__zr; - var children = this._children; - var idx = indexOf(children, child); - if (idx < 0) { - return this; - } - children.splice(idx, 1); - child.parent = null; - if (zr) { - child.removeSelfFromZr(zr); - } - zr && zr.refresh(); - return this; - }; - Group5.prototype.removeAll = function() { - var children = this._children; - var zr = this.__zr; - for (var i = 0; i < children.length; i++) { - var child = children[i]; - if (zr) { - child.removeSelfFromZr(zr); - } - child.parent = null; - } - children.length = 0; - return this; - }; - Group5.prototype.eachChild = function(cb, context) { - var children = this._children; - for (var i = 0; i < children.length; i++) { - var child = children[i]; - cb.call(context, child, i); - } - return this; - }; - Group5.prototype.traverse = function(cb, context) { - for (var i = 0; i < this._children.length; i++) { - var child = this._children[i]; - var stopped = cb.call(context, child); - if (child.isGroup && !stopped) { - child.traverse(cb, context); - } - } - return this; - }; - Group5.prototype.addSelfToZr = function(zr) { - _super.prototype.addSelfToZr.call(this, zr); - for (var i = 0; i < this._children.length; i++) { - var child = this._children[i]; - child.addSelfToZr(zr); - } - }; - Group5.prototype.removeSelfFromZr = function(zr) { - _super.prototype.removeSelfFromZr.call(this, zr); - for (var i = 0; i < this._children.length; i++) { - var child = this._children[i]; - child.removeSelfFromZr(zr); - } - }; - Group5.prototype.getBoundingRect = function(includeChildren) { - var tmpRect3 = new BoundingRect_default(0, 0, 0, 0); - var children = includeChildren || this._children; - var tmpMat = []; - var rect = null; - for (var i = 0; i < children.length; i++) { - var child = children[i]; - if (child.ignore || child.invisible) { - continue; - } - var childRect = child.getBoundingRect(); - var transform2 = child.getLocalTransform(tmpMat); - if (transform2) { - BoundingRect_default.applyTransform(tmpRect3, childRect, transform2); - rect = rect || tmpRect3.clone(); - rect.union(tmpRect3); - } else { - rect = rect || childRect.clone(); - rect.union(childRect); - } - } - return rect || tmpRect3; - }; - return Group5; - }(Element_default); - Group.prototype.type = "group"; - var Group_default = Group; - - // node_modules/zrender/lib/zrender.js - var painterCtors = {}; - var instances = {}; - function delInstance(id) { - delete instances[id]; - } - function isDarkMode(backgroundColor2) { - if (!backgroundColor2) { - return false; - } - if (typeof backgroundColor2 === "string") { - return lum(backgroundColor2, 1) < DARK_MODE_THRESHOLD; - } else if (backgroundColor2.colorStops) { - var colorStops = backgroundColor2.colorStops; - var totalLum = 0; - var len2 = colorStops.length; - for (var i = 0; i < len2; i++) { - totalLum += lum(colorStops[i].color, 1); - } - totalLum /= len2; - return totalLum < DARK_MODE_THRESHOLD; - } - return false; - } - var ZRender = function() { - function ZRender2(id, dom, opts) { - var _this = this; - this._sleepAfterStill = 10; - this._stillFrameAccum = 0; - this._needsRefresh = true; - this._needsRefreshHover = true; - this._darkMode = false; - opts = opts || {}; - this.dom = dom; - this.id = id; - var storage2 = new Storage_default(); - var rendererType = opts.renderer || "canvas"; - if (!painterCtors[rendererType]) { - rendererType = keys(painterCtors)[0]; - } - if (true) { - if (!painterCtors[rendererType]) { - throw new Error("Renderer '" + rendererType + "' is not imported. Please import it first."); - } - } - opts.useDirtyRect = opts.useDirtyRect == null ? false : opts.useDirtyRect; - var painter = new painterCtors[rendererType](dom, storage2, opts, id); - var ssrMode = opts.ssr || painter.ssrOnly; - this.storage = storage2; - this.painter = painter; - var handlerProxy = !env_default.node && !env_default.worker && !ssrMode ? new HandlerProxy_default(painter.getViewportRoot(), painter.root) : null; - var useCoarsePointer = opts.useCoarsePointer; - var usePointerSize = useCoarsePointer == null || useCoarsePointer === "auto" ? env_default.touchEventsSupported : !!useCoarsePointer; - var defaultPointerSize = 44; - var pointerSize; - if (usePointerSize) { - pointerSize = retrieve2(opts.pointerSize, defaultPointerSize); - } - this.handler = new Handler_default(storage2, painter, handlerProxy, painter.root, pointerSize); - this.animation = new Animation_default({ - stage: { - update: ssrMode ? null : function() { - return _this._flush(true); - } - } - }); - if (!ssrMode) { - this.animation.start(); - } - } - ZRender2.prototype.add = function(el) { - if (this._disposed || !el) { - return; - } - this.storage.addRoot(el); - el.addSelfToZr(this); - this.refresh(); - }; - ZRender2.prototype.remove = function(el) { - if (this._disposed || !el) { - return; - } - this.storage.delRoot(el); - el.removeSelfFromZr(this); - this.refresh(); - }; - ZRender2.prototype.configLayer = function(zLevel, config2) { - if (this._disposed) { - return; - } - if (this.painter.configLayer) { - this.painter.configLayer(zLevel, config2); - } - this.refresh(); - }; - ZRender2.prototype.setBackgroundColor = function(backgroundColor2) { - if (this._disposed) { - return; - } - if (this.painter.setBackgroundColor) { - this.painter.setBackgroundColor(backgroundColor2); - } - this.refresh(); - this._backgroundColor = backgroundColor2; - this._darkMode = isDarkMode(backgroundColor2); - }; - ZRender2.prototype.getBackgroundColor = function() { - return this._backgroundColor; - }; - ZRender2.prototype.setDarkMode = function(darkMode) { - this._darkMode = darkMode; - }; - ZRender2.prototype.isDarkMode = function() { - return this._darkMode; - }; - ZRender2.prototype.refreshImmediately = function(fromInside) { - if (this._disposed) { - return; - } - if (!fromInside) { - this.animation.update(true); - } - this._needsRefresh = false; - this.painter.refresh(); - this._needsRefresh = false; - }; - ZRender2.prototype.refresh = function() { - if (this._disposed) { - return; - } - this._needsRefresh = true; - this.animation.start(); - }; - ZRender2.prototype.flush = function() { - if (this._disposed) { - return; - } - this._flush(false); - }; - ZRender2.prototype._flush = function(fromInside) { - var triggerRendered; - var start3 = getTime(); - if (this._needsRefresh) { - triggerRendered = true; - this.refreshImmediately(fromInside); - } - if (this._needsRefreshHover) { - triggerRendered = true; - this.refreshHoverImmediately(); - } - var end2 = getTime(); - if (triggerRendered) { - this._stillFrameAccum = 0; - this.trigger("rendered", { - elapsedTime: end2 - start3 - }); - } else if (this._sleepAfterStill > 0) { - this._stillFrameAccum++; - if (this._stillFrameAccum > this._sleepAfterStill) { - this.animation.stop(); - } - } - }; - ZRender2.prototype.setSleepAfterStill = function(stillFramesCount) { - this._sleepAfterStill = stillFramesCount; - }; - ZRender2.prototype.wakeUp = function() { - if (this._disposed) { - return; - } - this.animation.start(); - this._stillFrameAccum = 0; - }; - ZRender2.prototype.refreshHover = function() { - this._needsRefreshHover = true; - }; - ZRender2.prototype.refreshHoverImmediately = function() { - if (this._disposed) { - return; - } - this._needsRefreshHover = false; - if (this.painter.refreshHover && this.painter.getType() === "canvas") { - this.painter.refreshHover(); - } - }; - ZRender2.prototype.resize = function(opts) { - if (this._disposed) { - return; - } - opts = opts || {}; - this.painter.resize(opts.width, opts.height); - this.handler.resize(); - }; - ZRender2.prototype.clearAnimation = function() { - if (this._disposed) { - return; - } - this.animation.clear(); - }; - ZRender2.prototype.getWidth = function() { - if (this._disposed) { - return; - } - return this.painter.getWidth(); - }; - ZRender2.prototype.getHeight = function() { - if (this._disposed) { - return; - } - return this.painter.getHeight(); - }; - ZRender2.prototype.setCursorStyle = function(cursorStyle) { - if (this._disposed) { - return; - } - this.handler.setCursorStyle(cursorStyle); - }; - ZRender2.prototype.findHover = function(x, y) { - if (this._disposed) { - return; - } - return this.handler.findHover(x, y); - }; - ZRender2.prototype.on = function(eventName, eventHandler, context) { - if (!this._disposed) { - this.handler.on(eventName, eventHandler, context); - } - return this; - }; - ZRender2.prototype.off = function(eventName, eventHandler) { - if (this._disposed) { - return; - } - this.handler.off(eventName, eventHandler); - }; - ZRender2.prototype.trigger = function(eventName, event) { - if (this._disposed) { - return; - } - this.handler.trigger(eventName, event); - }; - ZRender2.prototype.clear = function() { - if (this._disposed) { - return; - } - var roots2 = this.storage.getRoots(); - for (var i = 0; i < roots2.length; i++) { - if (roots2[i] instanceof Group_default) { - roots2[i].removeSelfFromZr(this); - } - } - this.storage.delAllRoots(); - this.painter.clear(); - }; - ZRender2.prototype.dispose = function() { - if (this._disposed) { - return; - } - this.animation.stop(); - this.clear(); - this.storage.dispose(); - this.painter.dispose(); - this.handler.dispose(); - this.animation = this.storage = this.painter = this.handler = null; - this._disposed = true; - delInstance(this.id); - }; - return ZRender2; - }(); - function init(dom, opts) { - var zr = new ZRender(guid(), dom, opts); - instances[zr.id] = zr; - return zr; - } - function dispose(zr) { - zr.dispose(); - } - function disposeAll() { - for (var key in instances) { - if (instances.hasOwnProperty(key)) { - instances[key].dispose(); - } - } - instances = {}; - } - function getInstance(id) { - return instances[id]; - } - function registerPainter(name, Ctor) { - painterCtors[name] = Ctor; - } - var ssrDataGetter; - function getElementSSRData(el) { - if (typeof ssrDataGetter === "function") { - return ssrDataGetter(el); - } - } - function registerSSRDataGetter(getter) { - ssrDataGetter = getter; - } - var version = "5.6.1"; - - // node_modules/echarts/lib/util/number.js - var RADIAN_EPSILON = 1e-4; - var ROUND_SUPPORTED_PRECISION_MAX = 20; - function _trim(str) { - return str.replace(/^\s+|\s+$/g, ""); - } - function linearMap(val, domain, range, clamp3) { - var d0 = domain[0]; - var d1 = domain[1]; - var r0 = range[0]; - var r1 = range[1]; - var subDomain = d1 - d0; - var subRange = r1 - r0; - if (subDomain === 0) { - return subRange === 0 ? r0 : (r0 + r1) / 2; - } - if (clamp3) { - if (subDomain > 0) { - if (val <= d0) { - return r0; - } else if (val >= d1) { - return r1; - } - } else { - if (val >= d0) { - return r0; - } else if (val <= d1) { - return r1; - } - } - } else { - if (val === d0) { - return r0; - } - if (val === d1) { - return r1; - } - } - return (val - d0) / subDomain * subRange + r0; - } - function parsePercent2(percent, all) { - switch (percent) { - case "center": - case "middle": - percent = "50%"; - break; - case "left": - case "top": - percent = "0%"; - break; - case "right": - case "bottom": - percent = "100%"; - break; - } - if (isString(percent)) { - if (_trim(percent).match(/%$/)) { - return parseFloat(percent) / 100 * all; - } - return parseFloat(percent); - } - return percent == null ? NaN : +percent; - } - function round(x, precision, returnStr) { - if (precision == null) { - precision = 10; - } - precision = Math.min(Math.max(0, precision), ROUND_SUPPORTED_PRECISION_MAX); - x = (+x).toFixed(precision); - return returnStr ? x : +x; - } - function asc(arr) { - arr.sort(function(a, b) { - return a - b; - }); - return arr; - } - function getPrecision(val) { - val = +val; - if (isNaN(val)) { - return 0; - } - if (val > 1e-14) { - var e2 = 1; - for (var i = 0; i < 15; i++, e2 *= 10) { - if (Math.round(val * e2) / e2 === val) { - return i; - } - } - } - return getPrecisionSafe(val); - } - function getPrecisionSafe(val) { - var str = val.toString().toLowerCase(); - var eIndex = str.indexOf("e"); - var exp = eIndex > 0 ? +str.slice(eIndex + 1) : 0; - var significandPartLen = eIndex > 0 ? eIndex : str.length; - var dotIndex = str.indexOf("."); - var decimalPartLen = dotIndex < 0 ? 0 : significandPartLen - 1 - dotIndex; - return Math.max(0, decimalPartLen - exp); - } - function getPixelPrecision(dataExtent, pixelExtent) { - var log2 = Math.log; - var LN10 = Math.LN10; - var dataQuantity = Math.floor(log2(dataExtent[1] - dataExtent[0]) / LN10); - var sizeQuantity = Math.round(log2(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); - var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20); - return !isFinite(precision) ? 20 : precision; - } - function getPercentWithPrecision(valueList, idx, precision) { - if (!valueList[idx]) { - return 0; - } - var seats = getPercentSeats(valueList, precision); - return seats[idx] || 0; - } - function getPercentSeats(valueList, precision) { - var sum2 = reduce(valueList, function(acc, val) { - return acc + (isNaN(val) ? 0 : val); - }, 0); - if (sum2 === 0) { - return []; - } - var digits = Math.pow(10, precision); - var votesPerQuota = map(valueList, function(val) { - return (isNaN(val) ? 0 : val) / sum2 * digits * 100; - }); - var targetSeats = digits * 100; - var seats = map(votesPerQuota, function(votes) { - return Math.floor(votes); - }); - var currentSum = reduce(seats, function(acc, val) { - return acc + val; - }, 0); - var remainder = map(votesPerQuota, function(votes, idx) { - return votes - seats[idx]; - }); - while (currentSum < targetSeats) { - var max4 = Number.NEGATIVE_INFINITY; - var maxId = null; - for (var i = 0, len2 = remainder.length; i < len2; ++i) { - if (remainder[i] > max4) { - max4 = remainder[i]; - maxId = i; - } - } - ++seats[maxId]; - remainder[maxId] = 0; - ++currentSum; - } - return map(seats, function(seat) { - return seat / digits; - }); - } - function addSafe(val0, val1) { - var maxPrecision = Math.max(getPrecision(val0), getPrecision(val1)); - var sum2 = val0 + val1; - return maxPrecision > ROUND_SUPPORTED_PRECISION_MAX ? sum2 : round(sum2, maxPrecision); - } - var MAX_SAFE_INTEGER = 9007199254740991; - function remRadian(radian) { - var pi2 = Math.PI * 2; - return (radian % pi2 + pi2) % pi2; - } - function isRadianAroundZero(val) { - return val > -RADIAN_EPSILON && val < RADIAN_EPSILON; - } - var TIME_REG = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/; - function parseDate(value) { - if (value instanceof Date) { - return value; - } else if (isString(value)) { - var match = TIME_REG.exec(value); - if (!match) { - return /* @__PURE__ */ new Date(NaN); - } - if (!match[8]) { - return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, match[7] ? +match[7].substring(0, 3) : 0); - } else { - var hour = +match[4] || 0; - if (match[8].toUpperCase() !== "Z") { - hour -= +match[8].slice(0, 3); - } - return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, match[7] ? +match[7].substring(0, 3) : 0)); - } - } else if (value == null) { - return /* @__PURE__ */ new Date(NaN); - } - return new Date(Math.round(value)); - } - function quantity(val) { - return Math.pow(10, quantityExponent(val)); - } - function quantityExponent(val) { - if (val === 0) { - return 0; - } - var exp = Math.floor(Math.log(val) / Math.LN10); - if (val / Math.pow(10, exp) >= 10) { - exp++; - } - return exp; - } - function nice(val, round8) { - var exponent = quantityExponent(val); - var exp10 = Math.pow(10, exponent); - var f = val / exp10; - var nf; - if (round8) { - if (f < 1.5) { - nf = 1; - } else if (f < 2.5) { - nf = 2; - } else if (f < 4) { - nf = 3; - } else if (f < 7) { - nf = 5; - } else { - nf = 10; - } - } else { - if (f < 1) { - nf = 1; - } else if (f < 2) { - nf = 2; - } else if (f < 3) { - nf = 3; - } else if (f < 5) { - nf = 5; - } else { - nf = 10; - } - } - val = nf * exp10; - return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val; - } - function quantile(ascArr, p) { - var H = (ascArr.length - 1) * p + 1; - var h = Math.floor(H); - var v = +ascArr[h - 1]; - var e2 = H - h; - return e2 ? v + e2 * (ascArr[h] - v) : v; - } - function reformIntervals(list) { - list.sort(function(a, b) { - return littleThan2(a, b, 0) ? -1 : 1; - }); - var curr = -Infinity; - var currClose = 1; - for (var i = 0; i < list.length; ) { - var interval = list[i].interval; - var close_1 = list[i].close; - for (var lg = 0; lg < 2; lg++) { - if (interval[lg] <= curr) { - interval[lg] = curr; - close_1[lg] = !lg ? 1 - currClose : 1; - } - curr = interval[lg]; - currClose = close_1[lg]; - } - if (interval[0] === interval[1] && close_1[0] * close_1[1] !== 1) { - list.splice(i, 1); - } else { - i++; - } - } - return list; - function littleThan2(a, b, lg2) { - return a.interval[lg2] < b.interval[lg2] || a.interval[lg2] === b.interval[lg2] && (a.close[lg2] - b.close[lg2] === (!lg2 ? 1 : -1) || !lg2 && littleThan2(a, b, 1)); - } - } - function numericToNumber(val) { - var valFloat = parseFloat(val); - return valFloat == val && (valFloat !== 0 || !isString(val) || val.indexOf("x") <= 0) ? valFloat : NaN; - } - function isNumeric(val) { - return !isNaN(numericToNumber(val)); - } - function getRandomIdBase() { - return Math.round(Math.random() * 9); - } - function getGreatestCommonDividor(a, b) { - if (b === 0) { - return a; - } - return getGreatestCommonDividor(b, a % b); - } - function getLeastCommonMultiple(a, b) { - if (a == null) { - return b; - } - if (b == null) { - return a; - } - return a * b / getGreatestCommonDividor(a, b); - } - - // node_modules/echarts/lib/util/log.js - var ECHARTS_PREFIX = "[ECharts] "; - var storedLogs = {}; - var hasConsole = typeof console !== "undefined" && console.warn && console.log; - function outputLog(type, str, onlyOnce) { - if (hasConsole) { - if (onlyOnce) { - if (storedLogs[str]) { - return; - } - storedLogs[str] = true; - } - console[type](ECHARTS_PREFIX + str); - } - } - function log(str, onlyOnce) { - outputLog("log", str, onlyOnce); - } - function warn(str, onlyOnce) { - outputLog("warn", str, onlyOnce); - } - function error(str, onlyOnce) { - outputLog("error", str, onlyOnce); - } - function deprecateLog(str) { - if (true) { - outputLog("warn", "DEPRECATED: " + str, true); - } - } - function deprecateReplaceLog(oldOpt, newOpt, scope) { - if (true) { - deprecateLog((scope ? "[" + scope + "]" : "") + (oldOpt + " is deprecated, use " + newOpt + " instead.")); - } - } - function makePrintable() { - var hintInfo = []; - for (var _i = 0; _i < arguments.length; _i++) { - hintInfo[_i] = arguments[_i]; - } - var msg = ""; - if (true) { - var makePrintableStringIfPossible_1 = function(val) { - return val === void 0 ? "undefined" : val === Infinity ? "Infinity" : val === -Infinity ? "-Infinity" : eqNaN(val) ? "NaN" : val instanceof Date ? "Date(" + val.toISOString() + ")" : isFunction(val) ? "function () { ... }" : isRegExp(val) ? val + "" : null; - }; - msg = map(hintInfo, function(arg) { - if (isString(arg)) { - return arg; - } else { - var printableStr = makePrintableStringIfPossible_1(arg); - if (printableStr != null) { - return printableStr; - } else if (typeof JSON !== "undefined" && JSON.stringify) { - try { - return JSON.stringify(arg, function(n, val) { - var printableStr2 = makePrintableStringIfPossible_1(val); - return printableStr2 == null ? val : printableStr2; - }); - } catch (err) { - return "?"; - } - } else { - return "?"; - } - } - }).join(" "); - } - return msg; - } - function throwError(msg) { - throw new Error(msg); - } - - // node_modules/echarts/lib/util/model.js - function interpolateNumber2(p0, p1, percent) { - return (p1 - p0) * percent + p0; - } - var DUMMY_COMPONENT_NAME_PREFIX = "series\0"; - var INTERNAL_COMPONENT_ID_PREFIX = "\0_ec_\0"; - function normalizeToArray(value) { - return value instanceof Array ? value : value == null ? [] : [value]; - } - function defaultEmphasis(opt, key, subOpts) { - if (opt) { - opt[key] = opt[key] || {}; - opt.emphasis = opt.emphasis || {}; - opt.emphasis[key] = opt.emphasis[key] || {}; - for (var i = 0, len2 = subOpts.length; i < len2; i++) { - var subOptName = subOpts[i]; - if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) { - opt.emphasis[key][subOptName] = opt[key][subOptName]; - } - } - } - } - var TEXT_STYLE_OPTIONS = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor", "textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth", "borderRadius", "padding"]; - function getDataItemValue(dataItem) { - return isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem; - } - function isDataItemOption(dataItem) { - return isObject(dataItem) && !(dataItem instanceof Array); - } - function mappingToExists(existings, newCmptOptions, mode) { - var isNormalMergeMode = mode === "normalMerge"; - var isReplaceMergeMode = mode === "replaceMerge"; - var isReplaceAllMode = mode === "replaceAll"; - existings = existings || []; - newCmptOptions = (newCmptOptions || []).slice(); - var existingIdIdxMap = createHashMap(); - each(newCmptOptions, function(cmptOption, index) { - if (!isObject(cmptOption)) { - newCmptOptions[index] = null; - return; - } - if (true) { - if (cmptOption.id != null && !isValidIdOrName(cmptOption.id)) { - warnInvalidateIdOrName(cmptOption.id); - } - if (cmptOption.name != null && !isValidIdOrName(cmptOption.name)) { - warnInvalidateIdOrName(cmptOption.name); - } - } - }); - var result = prepareResult(existings, existingIdIdxMap, mode); - if (isNormalMergeMode || isReplaceMergeMode) { - mappingById(result, existings, existingIdIdxMap, newCmptOptions); - } - if (isNormalMergeMode) { - mappingByName(result, newCmptOptions); - } - if (isNormalMergeMode || isReplaceMergeMode) { - mappingByIndex(result, newCmptOptions, isReplaceMergeMode); - } else if (isReplaceAllMode) { - mappingInReplaceAllMode(result, newCmptOptions); - } - makeIdAndName(result); - return result; - } - function prepareResult(existings, existingIdIdxMap, mode) { - var result = []; - if (mode === "replaceAll") { - return result; - } - for (var index = 0; index < existings.length; index++) { - var existing = existings[index]; - if (existing && existing.id != null) { - existingIdIdxMap.set(existing.id, index); - } - result.push({ - existing: mode === "replaceMerge" || isComponentIdInternal(existing) ? null : existing, - newOption: null, - keyInfo: null, - brandNew: null - }); - } - return result; - } - function mappingById(result, existings, existingIdIdxMap, newCmptOptions) { - each(newCmptOptions, function(cmptOption, index) { - if (!cmptOption || cmptOption.id == null) { - return; - } - var optionId = makeComparableKey(cmptOption.id); - var existingIdx = existingIdIdxMap.get(optionId); - if (existingIdx != null) { - var resultItem = result[existingIdx]; - assert(!resultItem.newOption, 'Duplicated option on id "' + optionId + '".'); - resultItem.newOption = cmptOption; - resultItem.existing = existings[existingIdx]; - newCmptOptions[index] = null; - } - }); - } - function mappingByName(result, newCmptOptions) { - each(newCmptOptions, function(cmptOption, index) { - if (!cmptOption || cmptOption.name == null) { - return; - } - for (var i = 0; i < result.length; i++) { - var existing = result[i].existing; - if (!result[i].newOption && existing && (existing.id == null || cmptOption.id == null) && !isComponentIdInternal(cmptOption) && !isComponentIdInternal(existing) && keyExistAndEqual("name", existing, cmptOption)) { - result[i].newOption = cmptOption; - newCmptOptions[index] = null; - return; - } - } - }); - } - function mappingByIndex(result, newCmptOptions, brandNew) { - each(newCmptOptions, function(cmptOption) { - if (!cmptOption) { - return; - } - var resultItem; - var nextIdx = 0; - while ( - // Be `!resultItem` only when `nextIdx >= result.length`. - (resultItem = result[nextIdx]) && (resultItem.newOption || isComponentIdInternal(resultItem.existing) || // In mode "replaceMerge", here no not-mapped-non-internal-existing. - resultItem.existing && cmptOption.id != null && !keyExistAndEqual("id", cmptOption, resultItem.existing)) - ) { - nextIdx++; - } - if (resultItem) { - resultItem.newOption = cmptOption; - resultItem.brandNew = brandNew; - } else { - result.push({ - newOption: cmptOption, - brandNew, - existing: null, - keyInfo: null - }); - } - nextIdx++; - }); - } - function mappingInReplaceAllMode(result, newCmptOptions) { - each(newCmptOptions, function(cmptOption) { - result.push({ - newOption: cmptOption, - brandNew: true, - existing: null, - keyInfo: null - }); - }); - } - function makeIdAndName(mapResult) { - var idMap = createHashMap(); - each(mapResult, function(item) { - var existing = item.existing; - existing && idMap.set(existing.id, item); - }); - each(mapResult, function(item) { - var opt = item.newOption; - assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, "id duplicates: " + (opt && opt.id)); - opt && opt.id != null && idMap.set(opt.id, item); - !item.keyInfo && (item.keyInfo = {}); - }); - each(mapResult, function(item, index) { - var existing = item.existing; - var opt = item.newOption; - var keyInfo = item.keyInfo; - if (!isObject(opt)) { - return; - } - keyInfo.name = opt.name != null ? makeComparableKey(opt.name) : existing ? existing.name : DUMMY_COMPONENT_NAME_PREFIX + index; - if (existing) { - keyInfo.id = makeComparableKey(existing.id); - } else if (opt.id != null) { - keyInfo.id = makeComparableKey(opt.id); - } else { - var idNum = 0; - do { - keyInfo.id = "\0" + keyInfo.name + "\0" + idNum++; - } while (idMap.get(keyInfo.id)); - } - idMap.set(keyInfo.id, item); - }); - } - function keyExistAndEqual(attr, obj1, obj2) { - var key1 = convertOptionIdName(obj1[attr], null); - var key2 = convertOptionIdName(obj2[attr], null); - return key1 != null && key2 != null && key1 === key2; - } - function makeComparableKey(val) { - if (true) { - if (val == null) { - throw new Error(); - } - } - return convertOptionIdName(val, ""); - } - function convertOptionIdName(idOrName, defaultValue) { - if (idOrName == null) { - return defaultValue; - } - return isString(idOrName) ? idOrName : isNumber(idOrName) || isStringSafe(idOrName) ? idOrName + "" : defaultValue; - } - function warnInvalidateIdOrName(idOrName) { - if (true) { - warn("`" + idOrName + "` is invalid id or name. Must be a string or number."); - } - } - function isValidIdOrName(idOrName) { - return isStringSafe(idOrName) || isNumeric(idOrName); - } - function isNameSpecified(componentModel) { - var name = componentModel.name; - return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX)); - } - function isComponentIdInternal(cmptOption) { - return cmptOption && cmptOption.id != null && makeComparableKey(cmptOption.id).indexOf(INTERNAL_COMPONENT_ID_PREFIX) === 0; - } - function makeInternalComponentId(idSuffix) { - return INTERNAL_COMPONENT_ID_PREFIX + idSuffix; - } - function setComponentTypeToKeyInfo(mappingResult, mainType, componentModelCtor) { - each(mappingResult, function(item) { - var newOption = item.newOption; - if (isObject(newOption)) { - item.keyInfo.mainType = mainType; - item.keyInfo.subType = determineSubType(mainType, newOption, item.existing, componentModelCtor); - } - }); - } - function determineSubType(mainType, newCmptOption, existComponent, componentModelCtor) { - var subType = newCmptOption.type ? newCmptOption.type : existComponent ? existComponent.subType : componentModelCtor.determineSubType(mainType, newCmptOption); - return subType; - } - function compressBatches(batchA, batchB) { - var mapA = {}; - var mapB = {}; - makeMap(batchA || [], mapA); - makeMap(batchB || [], mapB, mapA); - return [mapToArray(mapA), mapToArray(mapB)]; - function makeMap(sourceBatch, map3, otherMap) { - for (var i = 0, len2 = sourceBatch.length; i < len2; i++) { - var seriesId = convertOptionIdName(sourceBatch[i].seriesId, null); - if (seriesId == null) { - return; - } - var dataIndices = normalizeToArray(sourceBatch[i].dataIndex); - var otherDataIndices = otherMap && otherMap[seriesId]; - for (var j = 0, lenj = dataIndices.length; j < lenj; j++) { - var dataIndex = dataIndices[j]; - if (otherDataIndices && otherDataIndices[dataIndex]) { - otherDataIndices[dataIndex] = null; - } else { - (map3[seriesId] || (map3[seriesId] = {}))[dataIndex] = 1; - } - } - } - } - function mapToArray(map3, isData) { - var result = []; - for (var i in map3) { - if (map3.hasOwnProperty(i) && map3[i] != null) { - if (isData) { - result.push(+i); - } else { - var dataIndices = mapToArray(map3[i], true); - dataIndices.length && result.push({ - seriesId: i, - dataIndex: dataIndices - }); - } - } - } - return result; - } - } - function queryDataIndex(data, payload) { - if (payload.dataIndexInside != null) { - return payload.dataIndexInside; - } else if (payload.dataIndex != null) { - return isArray(payload.dataIndex) ? map(payload.dataIndex, function(value) { - return data.indexOfRawIndex(value); - }) : data.indexOfRawIndex(payload.dataIndex); - } else if (payload.name != null) { - return isArray(payload.name) ? map(payload.name, function(value) { - return data.indexOfName(value); - }) : data.indexOfName(payload.name); - } - } - function makeInner() { - var key = "__ec_inner_" + innerUniqueIndex++; - return function(hostObj) { - return hostObj[key] || (hostObj[key] = {}); - }; - } - var innerUniqueIndex = getRandomIdBase(); - function parseFinder(ecModel, finderInput, opt) { - var _a2 = preParseFinder(finderInput, opt), mainTypeSpecified = _a2.mainTypeSpecified, queryOptionMap = _a2.queryOptionMap, others = _a2.others; - var result = others; - var defaultMainType = opt ? opt.defaultMainType : null; - if (!mainTypeSpecified && defaultMainType) { - queryOptionMap.set(defaultMainType, {}); - } - queryOptionMap.each(function(queryOption, mainType) { - var queryResult = queryReferringComponents(ecModel, mainType, queryOption, { - useDefault: defaultMainType === mainType, - enableAll: opt && opt.enableAll != null ? opt.enableAll : true, - enableNone: opt && opt.enableNone != null ? opt.enableNone : true - }); - result[mainType + "Models"] = queryResult.models; - result[mainType + "Model"] = queryResult.models[0]; - }); - return result; - } - function preParseFinder(finderInput, opt) { - var finder; - if (isString(finderInput)) { - var obj = {}; - obj[finderInput + "Index"] = 0; - finder = obj; - } else { - finder = finderInput; - } - var queryOptionMap = createHashMap(); - var others = {}; - var mainTypeSpecified = false; - each(finder, function(value, key) { - if (key === "dataIndex" || key === "dataIndexInside") { - others[key] = value; - return; - } - var parsedKey = key.match(/^(\w+)(Index|Id|Name)$/) || []; - var mainType = parsedKey[1]; - var queryType = (parsedKey[2] || "").toLowerCase(); - if (!mainType || !queryType || opt && opt.includeMainTypes && indexOf(opt.includeMainTypes, mainType) < 0) { - return; - } - mainTypeSpecified = mainTypeSpecified || !!mainType; - var queryOption = queryOptionMap.get(mainType) || queryOptionMap.set(mainType, {}); - queryOption[queryType] = value; - }); - return { - mainTypeSpecified, - queryOptionMap, - others - }; - } - var SINGLE_REFERRING = { - useDefault: true, - enableAll: false, - enableNone: false - }; - var MULTIPLE_REFERRING = { - useDefault: false, - enableAll: true, - enableNone: true - }; - function queryReferringComponents(ecModel, mainType, userOption, opt) { - opt = opt || SINGLE_REFERRING; - var indexOption = userOption.index; - var idOption = userOption.id; - var nameOption = userOption.name; - var result = { - models: null, - specified: indexOption != null || idOption != null || nameOption != null - }; - if (!result.specified) { - var firstCmpt = void 0; - result.models = opt.useDefault && (firstCmpt = ecModel.getComponent(mainType)) ? [firstCmpt] : []; - return result; - } - if (indexOption === "none" || indexOption === false) { - assert(opt.enableNone, '`"none"` or `false` is not a valid value on index option.'); - result.models = []; - return result; - } - if (indexOption === "all") { - assert(opt.enableAll, '`"all"` is not a valid value on index option.'); - indexOption = idOption = nameOption = null; - } - result.models = ecModel.queryComponents({ - mainType, - index: indexOption, - id: idOption, - name: nameOption - }); - return result; - } - function setAttribute(dom, key, value) { - dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value; - } - function getAttribute(dom, key) { - return dom.getAttribute ? dom.getAttribute(key) : dom[key]; - } - function getTooltipRenderMode(renderModeOption) { - if (renderModeOption === "auto") { - return env_default.domSupported ? "html" : "richText"; - } else { - return renderModeOption || "html"; - } - } - function groupData(array, getKey2) { - var buckets = createHashMap(); - var keys2 = []; - each(array, function(item) { - var key = getKey2(item); - (buckets.get(key) || (keys2.push(key), buckets.set(key, []))).push(item); - }); - return { - keys: keys2, - buckets - }; - } - function interpolateRawValues(data, precision, sourceValue, targetValue, percent) { - var isAutoPrecision = precision == null || precision === "auto"; - if (targetValue == null) { - return targetValue; - } - if (isNumber(targetValue)) { - var value = interpolateNumber2(sourceValue || 0, targetValue, percent); - return round(value, isAutoPrecision ? Math.max(getPrecision(sourceValue || 0), getPrecision(targetValue)) : precision); - } else if (isString(targetValue)) { - return percent < 1 ? sourceValue : targetValue; - } else { - var interpolated = []; - var leftArr = sourceValue; - var rightArr = targetValue; - var length_1 = Math.max(leftArr ? leftArr.length : 0, rightArr.length); - for (var i = 0; i < length_1; ++i) { - var info = data.getDimensionInfo(i); - if (info && info.type === "ordinal") { - interpolated[i] = (percent < 1 && leftArr ? leftArr : rightArr)[i]; - } else { - var leftVal = leftArr && leftArr[i] ? leftArr[i] : 0; - var rightVal = rightArr[i]; - var value = interpolateNumber2(leftVal, rightVal, percent); - interpolated[i] = round(value, isAutoPrecision ? Math.max(getPrecision(leftVal), getPrecision(rightVal)) : precision); - } - } - return interpolated; - } - } - - // node_modules/echarts/lib/util/clazz.js - var TYPE_DELIMITER = "."; - var IS_CONTAINER = "___EC__COMPONENT__CONTAINER___"; - var IS_EXTENDED_CLASS = "___EC__EXTENDED_CLASS___"; - function parseClassType(componentType) { - var ret = { - main: "", - sub: "" - }; - if (componentType) { - var typeArr = componentType.split(TYPE_DELIMITER); - ret.main = typeArr[0] || ""; - ret.sub = typeArr[1] || ""; - } - return ret; - } - function checkClassType(componentType) { - assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType "' + componentType + '" illegal'); - } - function isExtendedClass(clz) { - return !!(clz && clz[IS_EXTENDED_CLASS]); - } - function enableClassExtend(rootClz, mandatoryMethods) { - rootClz.$constructor = rootClz; - rootClz.extend = function(proto2) { - if (true) { - each(mandatoryMethods, function(method) { - if (!proto2[method]) { - console.warn("Method `" + method + "` should be implemented" + (proto2.type ? " in " + proto2.type : "") + "."); - } - }); - } - var superClass = this; - var ExtendedClass; - if (isESClass(superClass)) { - ExtendedClass = /** @class */ - function(_super) { - __extends(class_1, _super); - function class_1() { - return _super.apply(this, arguments) || this; - } - return class_1; - }(superClass); - } else { - ExtendedClass = function() { - (proto2.$constructor || superClass).apply(this, arguments); - }; - inherits(ExtendedClass, this); - } - extend(ExtendedClass.prototype, proto2); - ExtendedClass[IS_EXTENDED_CLASS] = true; - ExtendedClass.extend = this.extend; - ExtendedClass.superCall = superCall; - ExtendedClass.superApply = superApply; - ExtendedClass.superClass = superClass; - return ExtendedClass; - }; - } - function isESClass(fn) { - return isFunction(fn) && /^class\s/.test(Function.prototype.toString.call(fn)); - } - function mountExtend(SubClz, SupperClz) { - SubClz.extend = SupperClz.extend; - } - var classBase = Math.round(Math.random() * 10); - function enableClassCheck(target) { - var classAttr = ["__\0is_clz", classBase++].join("_"); - target.prototype[classAttr] = true; - if (true) { - assert(!target.isInstance, 'The method "is" can not be defined.'); - } - target.isInstance = function(obj) { - return !!(obj && obj[classAttr]); - }; - } - function superCall(context, methodName) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - return this.superClass.prototype[methodName].apply(context, args); - } - function superApply(context, methodName, args) { - return this.superClass.prototype[methodName].apply(context, args); - } - function enableClassManagement(target) { - var storage2 = {}; - target.registerClass = function(clz) { - var componentFullType = clz.type || clz.prototype.type; - if (componentFullType) { - checkClassType(componentFullType); - clz.prototype.type = componentFullType; - var componentTypeInfo = parseClassType(componentFullType); - if (!componentTypeInfo.sub) { - if (true) { - if (storage2[componentTypeInfo.main]) { - console.warn(componentTypeInfo.main + " exists."); - } - } - storage2[componentTypeInfo.main] = clz; - } else if (componentTypeInfo.sub !== IS_CONTAINER) { - var container = makeContainer(componentTypeInfo); - container[componentTypeInfo.sub] = clz; - } - } - return clz; - }; - target.getClass = function(mainType, subType, throwWhenNotFound) { - var clz = storage2[mainType]; - if (clz && clz[IS_CONTAINER]) { - clz = subType ? clz[subType] : null; - } - if (throwWhenNotFound && !clz) { - throw new Error(!subType ? mainType + ".type should be specified." : "Component " + mainType + "." + (subType || "") + " is used but not imported."); - } - return clz; - }; - target.getClassesByMainType = function(componentType) { - var componentTypeInfo = parseClassType(componentType); - var result = []; - var obj = storage2[componentTypeInfo.main]; - if (obj && obj[IS_CONTAINER]) { - each(obj, function(o, type) { - type !== IS_CONTAINER && result.push(o); - }); - } else { - result.push(obj); - } - return result; - }; - target.hasClass = function(componentType) { - var componentTypeInfo = parseClassType(componentType); - return !!storage2[componentTypeInfo.main]; - }; - target.getAllClassMainTypes = function() { - var types = []; - each(storage2, function(obj, type) { - types.push(type); - }); - return types; - }; - target.hasSubTypes = function(componentType) { - var componentTypeInfo = parseClassType(componentType); - var obj = storage2[componentTypeInfo.main]; - return obj && obj[IS_CONTAINER]; - }; - function makeContainer(componentTypeInfo) { - var container = storage2[componentTypeInfo.main]; - if (!container || !container[IS_CONTAINER]) { - container = storage2[componentTypeInfo.main] = {}; - container[IS_CONTAINER] = true; - } - return container; - } - } - - // node_modules/echarts/lib/model/mixin/makeStyleMapper.js - function makeStyleMapper(properties, ignoreParent) { - for (var i = 0; i < properties.length; i++) { - if (!properties[i][1]) { - properties[i][1] = properties[i][0]; - } - } - ignoreParent = ignoreParent || false; - return function(model, excludes, includes) { - var style = {}; - for (var i2 = 0; i2 < properties.length; i2++) { - var propName = properties[i2][1]; - if (excludes && indexOf(excludes, propName) >= 0 || includes && indexOf(includes, propName) < 0) { - continue; - } - var val = model.getShallow(propName, ignoreParent); - if (val != null) { - style[properties[i2][0]] = val; - } - } - return style; - }; - } - - // node_modules/echarts/lib/model/mixin/areaStyle.js - var AREA_STYLE_KEY_MAP = [ - ["fill", "color"], - ["shadowBlur"], - ["shadowOffsetX"], - ["shadowOffsetY"], - ["opacity"], - ["shadowColor"] - // Option decal is in `DecalObject` but style.decal is in `PatternObject`. - // So do not transfer decal directly. - ]; - var getAreaStyle = makeStyleMapper(AREA_STYLE_KEY_MAP); - var AreaStyleMixin = ( - /** @class */ - function() { - function AreaStyleMixin2() { - } - AreaStyleMixin2.prototype.getAreaStyle = function(excludes, includes) { - return getAreaStyle(this, excludes, includes); - }; - return AreaStyleMixin2; - }() - ); - - // node_modules/zrender/lib/graphic/helper/image.js - var globalImageCache = new LRU_default(50); - function findExistImage(newImageOrSrc) { - if (typeof newImageOrSrc === "string") { - var cachedImgObj = globalImageCache.get(newImageOrSrc); - return cachedImgObj && cachedImgObj.image; - } else { - return newImageOrSrc; - } - } - function createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) { - if (!newImageOrSrc) { - return image; - } else if (typeof newImageOrSrc === "string") { - if (image && image.__zrImageSrc === newImageOrSrc || !hostEl) { - return image; - } - var cachedImgObj = globalImageCache.get(newImageOrSrc); - var pendingWrap = { hostEl, cb: onload, cbPayload }; - if (cachedImgObj) { - image = cachedImgObj.image; - !isImageReady(image) && cachedImgObj.pending.push(pendingWrap); - } else { - image = platformApi.loadImage(newImageOrSrc, imageOnLoad, imageOnLoad); - image.__zrImageSrc = newImageOrSrc; - globalImageCache.put(newImageOrSrc, image.__cachedImgObj = { - image, - pending: [pendingWrap] - }); - } - return image; - } else { - return newImageOrSrc; - } - } - function imageOnLoad() { - var cachedImgObj = this.__cachedImgObj; - this.onload = this.onerror = this.__cachedImgObj = null; - for (var i = 0; i < cachedImgObj.pending.length; i++) { - var pendingWrap = cachedImgObj.pending[i]; - var cb = pendingWrap.cb; - cb && cb(this, pendingWrap.cbPayload); - pendingWrap.hostEl.dirty(); - } - cachedImgObj.pending.length = 0; - } - function isImageReady(image) { - return image && image.width && image.height; - } - - // node_modules/zrender/lib/graphic/helper/parseText.js - var STYLE_REG = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g; - function truncateText(text, containerWidth, font, ellipsis, options) { - var out2 = {}; - truncateText2(out2, text, containerWidth, font, ellipsis, options); - return out2.text; - } - function truncateText2(out2, text, containerWidth, font, ellipsis, options) { - if (!containerWidth) { - out2.text = ""; - out2.isTruncated = false; - return; - } - var textLines = (text + "").split("\n"); - options = prepareTruncateOptions(containerWidth, font, ellipsis, options); - var isTruncated = false; - var truncateOut = {}; - for (var i = 0, len2 = textLines.length; i < len2; i++) { - truncateSingleLine(truncateOut, textLines[i], options); - textLines[i] = truncateOut.textLine; - isTruncated = isTruncated || truncateOut.isTruncated; - } - out2.text = textLines.join("\n"); - out2.isTruncated = isTruncated; - } - function prepareTruncateOptions(containerWidth, font, ellipsis, options) { - options = options || {}; - var preparedOpts = extend({}, options); - preparedOpts.font = font; - ellipsis = retrieve2(ellipsis, "..."); - preparedOpts.maxIterations = retrieve2(options.maxIterations, 2); - var minChar = preparedOpts.minChar = retrieve2(options.minChar, 0); - preparedOpts.cnCharWidth = getWidth("\u56FD", font); - var ascCharWidth = preparedOpts.ascCharWidth = getWidth("a", font); - preparedOpts.placeholder = retrieve2(options.placeholder, ""); - var contentWidth = containerWidth = Math.max(0, containerWidth - 1); - for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) { - contentWidth -= ascCharWidth; - } - var ellipsisWidth = getWidth(ellipsis, font); - if (ellipsisWidth > contentWidth) { - ellipsis = ""; - ellipsisWidth = 0; - } - contentWidth = containerWidth - ellipsisWidth; - preparedOpts.ellipsis = ellipsis; - preparedOpts.ellipsisWidth = ellipsisWidth; - preparedOpts.contentWidth = contentWidth; - preparedOpts.containerWidth = containerWidth; - return preparedOpts; - } - function truncateSingleLine(out2, textLine, options) { - var containerWidth = options.containerWidth; - var font = options.font; - var contentWidth = options.contentWidth; - if (!containerWidth) { - out2.textLine = ""; - out2.isTruncated = false; - return; - } - var lineWidth = getWidth(textLine, font); - if (lineWidth <= containerWidth) { - out2.textLine = textLine; - out2.isTruncated = false; - return; - } - for (var j = 0; ; j++) { - if (lineWidth <= contentWidth || j >= options.maxIterations) { - textLine += options.ellipsis; - break; - } - var subLength = j === 0 ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth) : lineWidth > 0 ? Math.floor(textLine.length * contentWidth / lineWidth) : 0; - textLine = textLine.substr(0, subLength); - lineWidth = getWidth(textLine, font); - } - if (textLine === "") { - textLine = options.placeholder; - } - out2.textLine = textLine; - out2.isTruncated = true; - } - function estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) { - var width = 0; - var i = 0; - for (var len2 = text.length; i < len2 && width < contentWidth; i++) { - var charCode = text.charCodeAt(i); - width += 0 <= charCode && charCode <= 127 ? ascCharWidth : cnCharWidth; - } - return i; - } - function parsePlainText(text, style) { - text != null && (text += ""); - var overflow = style.overflow; - var padding = style.padding; - var font = style.font; - var truncate = overflow === "truncate"; - var calculatedLineHeight = getLineHeight(font); - var lineHeight = retrieve2(style.lineHeight, calculatedLineHeight); - var bgColorDrawn = !!style.backgroundColor; - var truncateLineOverflow = style.lineOverflow === "truncate"; - var isTruncated = false; - var width = style.width; - var lines; - if (width != null && (overflow === "break" || overflow === "breakAll")) { - lines = text ? wrapText(text, style.font, width, overflow === "breakAll", 0).lines : []; - } else { - lines = text ? text.split("\n") : []; - } - var contentHeight = lines.length * lineHeight; - var height = retrieve2(style.height, contentHeight); - if (contentHeight > height && truncateLineOverflow) { - var lineCount = Math.floor(height / lineHeight); - isTruncated = isTruncated || lines.length > lineCount; - lines = lines.slice(0, lineCount); - } - if (text && truncate && width != null) { - var options = prepareTruncateOptions(width, font, style.ellipsis, { - minChar: style.truncateMinChar, - placeholder: style.placeholder - }); - var singleOut = {}; - for (var i = 0; i < lines.length; i++) { - truncateSingleLine(singleOut, lines[i], options); - lines[i] = singleOut.textLine; - isTruncated = isTruncated || singleOut.isTruncated; - } - } - var outerHeight = height; - var contentWidth = 0; - for (var i = 0; i < lines.length; i++) { - contentWidth = Math.max(getWidth(lines[i], font), contentWidth); - } - if (width == null) { - width = contentWidth; - } - var outerWidth = contentWidth; - if (padding) { - outerHeight += padding[0] + padding[2]; - outerWidth += padding[1] + padding[3]; - width += padding[1] + padding[3]; - } - if (bgColorDrawn) { - outerWidth = width; - } - return { - lines, - height, - outerWidth, - outerHeight, - lineHeight, - calculatedLineHeight, - contentWidth, - contentHeight, - width, - isTruncated - }; - } - var RichTextToken = /* @__PURE__ */ function() { - function RichTextToken2() { - } - return RichTextToken2; - }(); - var RichTextLine = /* @__PURE__ */ function() { - function RichTextLine2(tokens) { - this.tokens = []; - if (tokens) { - this.tokens = tokens; - } - } - return RichTextLine2; - }(); - var RichTextContentBlock = /* @__PURE__ */ function() { - function RichTextContentBlock2() { - this.width = 0; - this.height = 0; - this.contentWidth = 0; - this.contentHeight = 0; - this.outerWidth = 0; - this.outerHeight = 0; - this.lines = []; - this.isTruncated = false; - } - return RichTextContentBlock2; - }(); - function parseRichText(text, style) { - var contentBlock = new RichTextContentBlock(); - text != null && (text += ""); - if (!text) { - return contentBlock; - } - var topWidth = style.width; - var topHeight = style.height; - var overflow = style.overflow; - var wrapInfo = (overflow === "break" || overflow === "breakAll") && topWidth != null ? { width: topWidth, accumWidth: 0, breakAll: overflow === "breakAll" } : null; - var lastIndex = STYLE_REG.lastIndex = 0; - var result; - while ((result = STYLE_REG.exec(text)) != null) { - var matchedIndex = result.index; - if (matchedIndex > lastIndex) { - pushTokens(contentBlock, text.substring(lastIndex, matchedIndex), style, wrapInfo); - } - pushTokens(contentBlock, result[2], style, wrapInfo, result[1]); - lastIndex = STYLE_REG.lastIndex; - } - if (lastIndex < text.length) { - pushTokens(contentBlock, text.substring(lastIndex, text.length), style, wrapInfo); - } - var pendingList = []; - var calculatedHeight = 0; - var calculatedWidth = 0; - var stlPadding = style.padding; - var truncate = overflow === "truncate"; - var truncateLine = style.lineOverflow === "truncate"; - var tmpTruncateOut = {}; - function finishLine(line2, lineWidth2, lineHeight2) { - line2.width = lineWidth2; - line2.lineHeight = lineHeight2; - calculatedHeight += lineHeight2; - calculatedWidth = Math.max(calculatedWidth, lineWidth2); - } - outer: - for (var i = 0; i < contentBlock.lines.length; i++) { - var line = contentBlock.lines[i]; - var lineHeight = 0; - var lineWidth = 0; - for (var j = 0; j < line.tokens.length; j++) { - var token = line.tokens[j]; - var tokenStyle = token.styleName && style.rich[token.styleName] || {}; - var textPadding = token.textPadding = tokenStyle.padding; - var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0; - var font = token.font = tokenStyle.font || style.font; - token.contentHeight = getLineHeight(font); - var tokenHeight = retrieve2(tokenStyle.height, token.contentHeight); - token.innerHeight = tokenHeight; - textPadding && (tokenHeight += textPadding[0] + textPadding[2]); - token.height = tokenHeight; - token.lineHeight = retrieve3(tokenStyle.lineHeight, style.lineHeight, tokenHeight); - token.align = tokenStyle && tokenStyle.align || style.align; - token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || "middle"; - if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) { - var originalLength = contentBlock.lines.length; - if (j > 0) { - line.tokens = line.tokens.slice(0, j); - finishLine(line, lineWidth, lineHeight); - contentBlock.lines = contentBlock.lines.slice(0, i + 1); - } else { - contentBlock.lines = contentBlock.lines.slice(0, i); - } - contentBlock.isTruncated = contentBlock.isTruncated || contentBlock.lines.length < originalLength; - break outer; - } - var styleTokenWidth = tokenStyle.width; - var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === "auto"; - if (typeof styleTokenWidth === "string" && styleTokenWidth.charAt(styleTokenWidth.length - 1) === "%") { - token.percentWidth = styleTokenWidth; - pendingList.push(token); - token.contentWidth = getWidth(token.text, font); - } else { - if (tokenWidthNotSpecified) { - var textBackgroundColor = tokenStyle.backgroundColor; - var bgImg = textBackgroundColor && textBackgroundColor.image; - if (bgImg) { - bgImg = findExistImage(bgImg); - if (isImageReady(bgImg)) { - token.width = Math.max(token.width, bgImg.width * tokenHeight / bgImg.height); - } - } - } - var remainTruncWidth = truncate && topWidth != null ? topWidth - lineWidth : null; - if (remainTruncWidth != null && remainTruncWidth < token.width) { - if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) { - token.text = ""; - token.width = token.contentWidth = 0; - } else { - truncateText2(tmpTruncateOut, token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar }); - token.text = tmpTruncateOut.text; - contentBlock.isTruncated = contentBlock.isTruncated || tmpTruncateOut.isTruncated; - token.width = token.contentWidth = getWidth(token.text, font); - } - } else { - token.contentWidth = getWidth(token.text, font); - } - } - token.width += paddingH; - lineWidth += token.width; - tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight)); - } - finishLine(line, lineWidth, lineHeight); - } - contentBlock.outerWidth = contentBlock.width = retrieve2(topWidth, calculatedWidth); - contentBlock.outerHeight = contentBlock.height = retrieve2(topHeight, calculatedHeight); - contentBlock.contentHeight = calculatedHeight; - contentBlock.contentWidth = calculatedWidth; - if (stlPadding) { - contentBlock.outerWidth += stlPadding[1] + stlPadding[3]; - contentBlock.outerHeight += stlPadding[0] + stlPadding[2]; - } - for (var i = 0; i < pendingList.length; i++) { - var token = pendingList[i]; - var percentWidth = token.percentWidth; - token.width = parseInt(percentWidth, 10) / 100 * contentBlock.width; - } - return contentBlock; - } - function pushTokens(block, str, style, wrapInfo, styleName) { - var isEmptyStr = str === ""; - var tokenStyle = styleName && style.rich[styleName] || {}; - var lines = block.lines; - var font = tokenStyle.font || style.font; - var newLine = false; - var strLines; - var linesWidths; - if (wrapInfo) { - var tokenPadding = tokenStyle.padding; - var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0; - if (tokenStyle.width != null && tokenStyle.width !== "auto") { - var outerWidth_1 = parsePercent(tokenStyle.width, wrapInfo.width) + tokenPaddingH; - if (lines.length > 0) { - if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) { - strLines = str.split("\n"); - newLine = true; - } - } - wrapInfo.accumWidth = outerWidth_1; - } else { - var res = wrapText(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth); - wrapInfo.accumWidth = res.accumWidth + tokenPaddingH; - linesWidths = res.linesWidths; - strLines = res.lines; - } - } else { - strLines = str.split("\n"); - } - for (var i = 0; i < strLines.length; i++) { - var text = strLines[i]; - var token = new RichTextToken(); - token.styleName = styleName; - token.text = text; - token.isLineHolder = !text && !isEmptyStr; - if (typeof tokenStyle.width === "number") { - token.width = tokenStyle.width; - } else { - token.width = linesWidths ? linesWidths[i] : getWidth(text, font); - } - if (!i && !newLine) { - var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine())).tokens; - var tokensLen = tokens.length; - tokensLen === 1 && tokens[0].isLineHolder ? tokens[0] = token : (text || !tokensLen || isEmptyStr) && tokens.push(token); - } else { - lines.push(new RichTextLine([token])); - } - } - } - function isAlphabeticLetter(ch) { - var code = ch.charCodeAt(0); - return code >= 32 && code <= 591 || code >= 880 && code <= 4351 || code >= 4608 && code <= 5119 || code >= 7680 && code <= 8303; - } - var breakCharMap = reduce(",&?/;] ".split(""), function(obj, ch) { - obj[ch] = true; - return obj; - }, {}); - function isWordBreakChar(ch) { - if (isAlphabeticLetter(ch)) { - if (breakCharMap[ch]) { - return true; - } - return false; - } - return true; - } - function wrapText(text, font, lineWidth, isBreakAll, lastAccumWidth) { - var lines = []; - var linesWidths = []; - var line = ""; - var currentWord = ""; - var currentWordWidth = 0; - var accumWidth = 0; - for (var i = 0; i < text.length; i++) { - var ch = text.charAt(i); - if (ch === "\n") { - if (currentWord) { - line += currentWord; - accumWidth += currentWordWidth; - } - lines.push(line); - linesWidths.push(accumWidth); - line = ""; - currentWord = ""; - currentWordWidth = 0; - accumWidth = 0; - continue; - } - var chWidth = getWidth(ch, font); - var inWord = isBreakAll ? false : !isWordBreakChar(ch); - if (!lines.length ? lastAccumWidth + accumWidth + chWidth > lineWidth : accumWidth + chWidth > lineWidth) { - if (!accumWidth) { - if (inWord) { - lines.push(currentWord); - linesWidths.push(currentWordWidth); - currentWord = ch; - currentWordWidth = chWidth; - } else { - lines.push(ch); - linesWidths.push(chWidth); - } - } else if (line || currentWord) { - if (inWord) { - if (!line) { - line = currentWord; - currentWord = ""; - currentWordWidth = 0; - accumWidth = currentWordWidth; - } - lines.push(line); - linesWidths.push(accumWidth - currentWordWidth); - currentWord += ch; - currentWordWidth += chWidth; - line = ""; - accumWidth = currentWordWidth; - } else { - if (currentWord) { - line += currentWord; - currentWord = ""; - currentWordWidth = 0; - } - lines.push(line); - linesWidths.push(accumWidth); - line = ch; - accumWidth = chWidth; - } - } - continue; - } - accumWidth += chWidth; - if (inWord) { - currentWord += ch; - currentWordWidth += chWidth; - } else { - if (currentWord) { - line += currentWord; - currentWord = ""; - currentWordWidth = 0; - } - line += ch; - } - } - if (!lines.length && !line) { - line = text; - currentWord = ""; - currentWordWidth = 0; - } - if (currentWord) { - line += currentWord; - } - if (line) { - lines.push(line); - linesWidths.push(accumWidth); - } - if (lines.length === 1) { - accumWidth += lastAccumWidth; - } - return { - accumWidth, - lines, - linesWidths - }; - } - - // node_modules/zrender/lib/graphic/Displayable.js - var STYLE_MAGIC_KEY = "__zr_style_" + Math.round(Math.random() * 10); - var DEFAULT_COMMON_STYLE = { - shadowBlur: 0, - shadowOffsetX: 0, - shadowOffsetY: 0, - shadowColor: "#000", - opacity: 1, - blend: "source-over" - }; - var DEFAULT_COMMON_ANIMATION_PROPS = { - style: { - shadowBlur: true, - shadowOffsetX: true, - shadowOffsetY: true, - shadowColor: true, - opacity: true - } - }; - DEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true; - var PRIMARY_STATES_KEYS2 = ["z", "z2", "invisible"]; - var PRIMARY_STATES_KEYS_IN_HOVER_LAYER = ["invisible"]; - var Displayable = function(_super) { - __extends(Displayable2, _super); - function Displayable2(props) { - return _super.call(this, props) || this; - } - Displayable2.prototype._init = function(props) { - var keysArr = keys(props); - for (var i = 0; i < keysArr.length; i++) { - var key = keysArr[i]; - if (key === "style") { - this.useStyle(props[key]); - } else { - _super.prototype.attrKV.call(this, key, props[key]); - } - } - if (!this.style) { - this.useStyle({}); - } - }; - Displayable2.prototype.beforeBrush = function() { - }; - Displayable2.prototype.afterBrush = function() { - }; - Displayable2.prototype.innerBeforeBrush = function() { - }; - Displayable2.prototype.innerAfterBrush = function() { - }; - Displayable2.prototype.shouldBePainted = function(viewWidth, viewHeight, considerClipPath, considerAncestors) { - var m2 = this.transform; - if (this.ignore || this.invisible || this.style.opacity === 0 || this.culling && isDisplayableCulled(this, viewWidth, viewHeight) || m2 && !m2[0] && !m2[3]) { - return false; - } - if (considerClipPath && this.__clipPaths) { - for (var i = 0; i < this.__clipPaths.length; ++i) { - if (this.__clipPaths[i].isZeroArea()) { - return false; - } - } - } - if (considerAncestors && this.parent) { - var parent_1 = this.parent; - while (parent_1) { - if (parent_1.ignore) { - return false; - } - parent_1 = parent_1.parent; - } - } - return true; - }; - Displayable2.prototype.contain = function(x, y) { - return this.rectContain(x, y); - }; - Displayable2.prototype.traverse = function(cb, context) { - cb.call(context, this); - }; - Displayable2.prototype.rectContain = function(x, y) { - var coord = this.transformCoordToLocal(x, y); - var rect = this.getBoundingRect(); - return rect.contain(coord[0], coord[1]); - }; - Displayable2.prototype.getPaintRect = function() { - var rect = this._paintRect; - if (!this._paintRect || this.__dirty) { - var transform2 = this.transform; - var elRect = this.getBoundingRect(); - var style = this.style; - var shadowSize = style.shadowBlur || 0; - var shadowOffsetX = style.shadowOffsetX || 0; - var shadowOffsetY = style.shadowOffsetY || 0; - rect = this._paintRect || (this._paintRect = new BoundingRect_default(0, 0, 0, 0)); - if (transform2) { - BoundingRect_default.applyTransform(rect, elRect, transform2); - } else { - rect.copy(elRect); - } - if (shadowSize || shadowOffsetX || shadowOffsetY) { - rect.width += shadowSize * 2 + Math.abs(shadowOffsetX); - rect.height += shadowSize * 2 + Math.abs(shadowOffsetY); - rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize); - rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize); - } - var tolerance = this.dirtyRectTolerance; - if (!rect.isZero()) { - rect.x = Math.floor(rect.x - tolerance); - rect.y = Math.floor(rect.y - tolerance); - rect.width = Math.ceil(rect.width + 1 + tolerance * 2); - rect.height = Math.ceil(rect.height + 1 + tolerance * 2); - } - } - return rect; - }; - Displayable2.prototype.setPrevPaintRect = function(paintRect) { - if (paintRect) { - this._prevPaintRect = this._prevPaintRect || new BoundingRect_default(0, 0, 0, 0); - this._prevPaintRect.copy(paintRect); - } else { - this._prevPaintRect = null; - } - }; - Displayable2.prototype.getPrevPaintRect = function() { - return this._prevPaintRect; - }; - Displayable2.prototype.animateStyle = function(loop) { - return this.animate("style", loop); - }; - Displayable2.prototype.updateDuringAnimation = function(targetKey) { - if (targetKey === "style") { - this.dirtyStyle(); - } else { - this.markRedraw(); - } - }; - Displayable2.prototype.attrKV = function(key, value) { - if (key !== "style") { - _super.prototype.attrKV.call(this, key, value); - } else { - if (!this.style) { - this.useStyle(value); - } else { - this.setStyle(value); - } - } - }; - Displayable2.prototype.setStyle = function(keyOrObj, value) { - if (typeof keyOrObj === "string") { - this.style[keyOrObj] = value; - } else { - extend(this.style, keyOrObj); - } - this.dirtyStyle(); - return this; - }; - Displayable2.prototype.dirtyStyle = function(notRedraw) { - if (!notRedraw) { - this.markRedraw(); - } - this.__dirty |= STYLE_CHANGED_BIT; - if (this._rect) { - this._rect = null; - } - }; - Displayable2.prototype.dirty = function() { - this.dirtyStyle(); - }; - Displayable2.prototype.styleChanged = function() { - return !!(this.__dirty & STYLE_CHANGED_BIT); - }; - Displayable2.prototype.styleUpdated = function() { - this.__dirty &= ~STYLE_CHANGED_BIT; - }; - Displayable2.prototype.createStyle = function(obj) { - return createObject(DEFAULT_COMMON_STYLE, obj); - }; - Displayable2.prototype.useStyle = function(obj) { - if (!obj[STYLE_MAGIC_KEY]) { - obj = this.createStyle(obj); - } - if (this.__inHover) { - this.__hoverStyle = obj; - } else { - this.style = obj; - } - this.dirtyStyle(); - }; - Displayable2.prototype.isStyleObject = function(obj) { - return obj[STYLE_MAGIC_KEY]; - }; - Displayable2.prototype._innerSaveToNormal = function(toState) { - _super.prototype._innerSaveToNormal.call(this, toState); - var normalState = this._normalState; - if (toState.style && !normalState.style) { - normalState.style = this._mergeStyle(this.createStyle(), this.style); - } - this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS2); - }; - Displayable2.prototype._applyStateObj = function(stateName, state, normalState, keepCurrentStates, transition, animationCfg) { - _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg); - var needsRestoreToNormal = !(state && keepCurrentStates); - var targetStyle; - if (state && state.style) { - if (transition) { - if (keepCurrentStates) { - targetStyle = state.style; - } else { - targetStyle = this._mergeStyle(this.createStyle(), normalState.style); - this._mergeStyle(targetStyle, state.style); - } - } else { - targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style); - this._mergeStyle(targetStyle, state.style); - } - } else if (needsRestoreToNormal) { - targetStyle = normalState.style; - } - if (targetStyle) { - if (transition) { - var sourceStyle = this.style; - this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle); - if (needsRestoreToNormal) { - var changedKeys = keys(sourceStyle); - for (var i = 0; i < changedKeys.length; i++) { - var key = changedKeys[i]; - if (key in targetStyle) { - targetStyle[key] = targetStyle[key]; - this.style[key] = sourceStyle[key]; - } - } - } - var targetKeys = keys(targetStyle); - for (var i = 0; i < targetKeys.length; i++) { - var key = targetKeys[i]; - this.style[key] = this.style[key]; - } - this._transitionState(stateName, { - style: targetStyle - }, animationCfg, this.getAnimationStyleProps()); - } else { - this.useStyle(targetStyle); - } - } - var statesKeys = this.__inHover ? PRIMARY_STATES_KEYS_IN_HOVER_LAYER : PRIMARY_STATES_KEYS2; - for (var i = 0; i < statesKeys.length; i++) { - var key = statesKeys[i]; - if (state && state[key] != null) { - this[key] = state[key]; - } else if (needsRestoreToNormal) { - if (normalState[key] != null) { - this[key] = normalState[key]; - } - } - } - }; - Displayable2.prototype._mergeStates = function(states) { - var mergedState = _super.prototype._mergeStates.call(this, states); - var mergedStyle; - for (var i = 0; i < states.length; i++) { - var state = states[i]; - if (state.style) { - mergedStyle = mergedStyle || {}; - this._mergeStyle(mergedStyle, state.style); - } - } - if (mergedStyle) { - mergedState.style = mergedStyle; - } - return mergedState; - }; - Displayable2.prototype._mergeStyle = function(targetStyle, sourceStyle) { - extend(targetStyle, sourceStyle); - return targetStyle; - }; - Displayable2.prototype.getAnimationStyleProps = function() { - return DEFAULT_COMMON_ANIMATION_PROPS; - }; - Displayable2.initDefaultProps = function() { - var dispProto = Displayable2.prototype; - dispProto.type = "displayable"; - dispProto.invisible = false; - dispProto.z = 0; - dispProto.z2 = 0; - dispProto.zlevel = 0; - dispProto.culling = false; - dispProto.cursor = "pointer"; - dispProto.rectHover = false; - dispProto.incremental = false; - dispProto._rect = null; - dispProto.dirtyRectTolerance = 0; - dispProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT; - }(); - return Displayable2; - }(Element_default); - var tmpRect2 = new BoundingRect_default(0, 0, 0, 0); - var viewRect = new BoundingRect_default(0, 0, 0, 0); - function isDisplayableCulled(el, width, height) { - tmpRect2.copy(el.getBoundingRect()); - if (el.transform) { - tmpRect2.applyTransform(el.transform); - } - viewRect.width = width; - viewRect.height = height; - return !tmpRect2.intersect(viewRect); - } - var Displayable_default = Displayable; - - // node_modules/zrender/lib/core/bbox.js - var mathMin2 = Math.min; - var mathMax2 = Math.max; - var mathSin = Math.sin; - var mathCos = Math.cos; - var PI2 = Math.PI * 2; - var start = create(); - var end = create(); - var extremity = create(); - function fromPoints(points4, min4, max4) { - if (points4.length === 0) { - return; - } - var p = points4[0]; - var left = p[0]; - var right = p[0]; - var top = p[1]; - var bottom = p[1]; - for (var i = 1; i < points4.length; i++) { - p = points4[i]; - left = mathMin2(left, p[0]); - right = mathMax2(right, p[0]); - top = mathMin2(top, p[1]); - bottom = mathMax2(bottom, p[1]); - } - min4[0] = left; - min4[1] = top; - max4[0] = right; - max4[1] = bottom; - } - function fromLine(x0, y0, x1, y1, min4, max4) { - min4[0] = mathMin2(x0, x1); - min4[1] = mathMin2(y0, y1); - max4[0] = mathMax2(x0, x1); - max4[1] = mathMax2(y0, y1); - } - var xDim = []; - var yDim = []; - function fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min4, max4) { - var cubicExtrema2 = cubicExtrema; - var cubicAt2 = cubicAt; - var n = cubicExtrema2(x0, x1, x2, x3, xDim); - min4[0] = Infinity; - min4[1] = Infinity; - max4[0] = -Infinity; - max4[1] = -Infinity; - for (var i = 0; i < n; i++) { - var x = cubicAt2(x0, x1, x2, x3, xDim[i]); - min4[0] = mathMin2(x, min4[0]); - max4[0] = mathMax2(x, max4[0]); - } - n = cubicExtrema2(y0, y1, y2, y3, yDim); - for (var i = 0; i < n; i++) { - var y = cubicAt2(y0, y1, y2, y3, yDim[i]); - min4[1] = mathMin2(y, min4[1]); - max4[1] = mathMax2(y, max4[1]); - } - min4[0] = mathMin2(x0, min4[0]); - max4[0] = mathMax2(x0, max4[0]); - min4[0] = mathMin2(x3, min4[0]); - max4[0] = mathMax2(x3, max4[0]); - min4[1] = mathMin2(y0, min4[1]); - max4[1] = mathMax2(y0, max4[1]); - min4[1] = mathMin2(y3, min4[1]); - max4[1] = mathMax2(y3, max4[1]); - } - function fromQuadratic(x0, y0, x1, y1, x2, y2, min4, max4) { - var quadraticExtremum2 = quadraticExtremum; - var quadraticAt3 = quadraticAt; - var tx = mathMax2(mathMin2(quadraticExtremum2(x0, x1, x2), 1), 0); - var ty = mathMax2(mathMin2(quadraticExtremum2(y0, y1, y2), 1), 0); - var x = quadraticAt3(x0, x1, x2, tx); - var y = quadraticAt3(y0, y1, y2, ty); - min4[0] = mathMin2(x0, x2, x); - min4[1] = mathMin2(y0, y2, y); - max4[0] = mathMax2(x0, x2, x); - max4[1] = mathMax2(y0, y2, y); - } - function fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min4, max4) { - var vec2Min = min; - var vec2Max = max; - var diff = Math.abs(startAngle - endAngle); - if (diff % PI2 < 1e-4 && diff > 1e-4) { - min4[0] = x - rx; - min4[1] = y - ry; - max4[0] = x + rx; - max4[1] = y + ry; - return; - } - start[0] = mathCos(startAngle) * rx + x; - start[1] = mathSin(startAngle) * ry + y; - end[0] = mathCos(endAngle) * rx + x; - end[1] = mathSin(endAngle) * ry + y; - vec2Min(min4, start, end); - vec2Max(max4, start, end); - startAngle = startAngle % PI2; - if (startAngle < 0) { - startAngle = startAngle + PI2; - } - endAngle = endAngle % PI2; - if (endAngle < 0) { - endAngle = endAngle + PI2; - } - if (startAngle > endAngle && !anticlockwise) { - endAngle += PI2; - } else if (startAngle < endAngle && anticlockwise) { - startAngle += PI2; - } - if (anticlockwise) { - var tmp = endAngle; - endAngle = startAngle; - startAngle = tmp; - } - for (var angle = 0; angle < endAngle; angle += Math.PI / 2) { - if (angle > startAngle) { - extremity[0] = mathCos(angle) * rx + x; - extremity[1] = mathSin(angle) * ry + y; - vec2Min(min4, extremity, min4); - vec2Max(max4, extremity, max4); - } - } - } - - // node_modules/zrender/lib/core/PathProxy.js - var CMD = { - M: 1, - L: 2, - C: 3, - Q: 4, - A: 5, - Z: 6, - R: 7 - }; - var tmpOutX = []; - var tmpOutY = []; - var min2 = []; - var max2 = []; - var min22 = []; - var max22 = []; - var mathMin3 = Math.min; - var mathMax3 = Math.max; - var mathCos2 = Math.cos; - var mathSin2 = Math.sin; - var mathAbs = Math.abs; - var PI = Math.PI; - var PI22 = PI * 2; - var hasTypedArray = typeof Float32Array !== "undefined"; - var tmpAngles = []; - function modPI2(radian) { - var n = Math.round(radian / PI * 1e8) / 1e8; - return n % 2 * PI; - } - function normalizeArcAngles(angles, anticlockwise) { - var newStartAngle = modPI2(angles[0]); - if (newStartAngle < 0) { - newStartAngle += PI22; - } - var delta = newStartAngle - angles[0]; - var newEndAngle = angles[1]; - newEndAngle += delta; - if (!anticlockwise && newEndAngle - newStartAngle >= PI22) { - newEndAngle = newStartAngle + PI22; - } else if (anticlockwise && newStartAngle - newEndAngle >= PI22) { - newEndAngle = newStartAngle - PI22; - } else if (!anticlockwise && newStartAngle > newEndAngle) { - newEndAngle = newStartAngle + (PI22 - modPI2(newStartAngle - newEndAngle)); - } else if (anticlockwise && newStartAngle < newEndAngle) { - newEndAngle = newStartAngle - (PI22 - modPI2(newEndAngle - newStartAngle)); - } - angles[0] = newStartAngle; - angles[1] = newEndAngle; - } - var PathProxy = function() { - function PathProxy2(notSaveData) { - this.dpr = 1; - this._xi = 0; - this._yi = 0; - this._x0 = 0; - this._y0 = 0; - this._len = 0; - if (notSaveData) { - this._saveData = false; - } - if (this._saveData) { - this.data = []; - } - } - PathProxy2.prototype.increaseVersion = function() { - this._version++; - }; - PathProxy2.prototype.getVersion = function() { - return this._version; - }; - PathProxy2.prototype.setScale = function(sx, sy, segmentIgnoreThreshold) { - segmentIgnoreThreshold = segmentIgnoreThreshold || 0; - if (segmentIgnoreThreshold > 0) { - this._ux = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sx) || 0; - this._uy = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sy) || 0; - } - }; - PathProxy2.prototype.setDPR = function(dpr2) { - this.dpr = dpr2; - }; - PathProxy2.prototype.setContext = function(ctx) { - this._ctx = ctx; - }; - PathProxy2.prototype.getContext = function() { - return this._ctx; - }; - PathProxy2.prototype.beginPath = function() { - this._ctx && this._ctx.beginPath(); - this.reset(); - return this; - }; - PathProxy2.prototype.reset = function() { - if (this._saveData) { - this._len = 0; - } - if (this._pathSegLen) { - this._pathSegLen = null; - this._pathLen = 0; - } - this._version++; - }; - PathProxy2.prototype.moveTo = function(x, y) { - this._drawPendingPt(); - this.addData(CMD.M, x, y); - this._ctx && this._ctx.moveTo(x, y); - this._x0 = x; - this._y0 = y; - this._xi = x; - this._yi = y; - return this; - }; - PathProxy2.prototype.lineTo = function(x, y) { - var dx = mathAbs(x - this._xi); - var dy = mathAbs(y - this._yi); - var exceedUnit = dx > this._ux || dy > this._uy; - this.addData(CMD.L, x, y); - if (this._ctx && exceedUnit) { - this._ctx.lineTo(x, y); - } - if (exceedUnit) { - this._xi = x; - this._yi = y; - this._pendingPtDist = 0; - } else { - var d2 = dx * dx + dy * dy; - if (d2 > this._pendingPtDist) { - this._pendingPtX = x; - this._pendingPtY = y; - this._pendingPtDist = d2; - } - } - return this; - }; - PathProxy2.prototype.bezierCurveTo = function(x1, y1, x2, y2, x3, y3) { - this._drawPendingPt(); - this.addData(CMD.C, x1, y1, x2, y2, x3, y3); - if (this._ctx) { - this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3); - } - this._xi = x3; - this._yi = y3; - return this; - }; - PathProxy2.prototype.quadraticCurveTo = function(x1, y1, x2, y2) { - this._drawPendingPt(); - this.addData(CMD.Q, x1, y1, x2, y2); - if (this._ctx) { - this._ctx.quadraticCurveTo(x1, y1, x2, y2); - } - this._xi = x2; - this._yi = y2; - return this; - }; - PathProxy2.prototype.arc = function(cx, cy, r, startAngle, endAngle, anticlockwise) { - this._drawPendingPt(); - tmpAngles[0] = startAngle; - tmpAngles[1] = endAngle; - normalizeArcAngles(tmpAngles, anticlockwise); - startAngle = tmpAngles[0]; - endAngle = tmpAngles[1]; - var delta = endAngle - startAngle; - this.addData(CMD.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1); - this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise); - this._xi = mathCos2(endAngle) * r + cx; - this._yi = mathSin2(endAngle) * r + cy; - return this; - }; - PathProxy2.prototype.arcTo = function(x1, y1, x2, y2, radius) { - this._drawPendingPt(); - if (this._ctx) { - this._ctx.arcTo(x1, y1, x2, y2, radius); - } - return this; - }; - PathProxy2.prototype.rect = function(x, y, w, h) { - this._drawPendingPt(); - this._ctx && this._ctx.rect(x, y, w, h); - this.addData(CMD.R, x, y, w, h); - return this; - }; - PathProxy2.prototype.closePath = function() { - this._drawPendingPt(); - this.addData(CMD.Z); - var ctx = this._ctx; - var x0 = this._x0; - var y0 = this._y0; - if (ctx) { - ctx.closePath(); - } - this._xi = x0; - this._yi = y0; - return this; - }; - PathProxy2.prototype.fill = function(ctx) { - ctx && ctx.fill(); - this.toStatic(); - }; - PathProxy2.prototype.stroke = function(ctx) { - ctx && ctx.stroke(); - this.toStatic(); - }; - PathProxy2.prototype.len = function() { - return this._len; - }; - PathProxy2.prototype.setData = function(data) { - var len2 = data.length; - if (!(this.data && this.data.length === len2) && hasTypedArray) { - this.data = new Float32Array(len2); - } - for (var i = 0; i < len2; i++) { - this.data[i] = data[i]; - } - this._len = len2; - }; - PathProxy2.prototype.appendPath = function(path) { - if (!(path instanceof Array)) { - path = [path]; - } - var len2 = path.length; - var appendSize = 0; - var offset3 = this._len; - for (var i = 0; i < len2; i++) { - appendSize += path[i].len(); - } - if (hasTypedArray && this.data instanceof Float32Array) { - this.data = new Float32Array(offset3 + appendSize); - } - for (var i = 0; i < len2; i++) { - var appendPathData = path[i].data; - for (var k = 0; k < appendPathData.length; k++) { - this.data[offset3++] = appendPathData[k]; - } - } - this._len = offset3; - }; - PathProxy2.prototype.addData = function(cmd, a, b, c, d, e2, f, g, h) { - if (!this._saveData) { - return; - } - var data = this.data; - if (this._len + arguments.length > data.length) { - this._expandData(); - data = this.data; - } - for (var i = 0; i < arguments.length; i++) { - data[this._len++] = arguments[i]; - } - }; - PathProxy2.prototype._drawPendingPt = function() { - if (this._pendingPtDist > 0) { - this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY); - this._pendingPtDist = 0; - } - }; - PathProxy2.prototype._expandData = function() { - if (!(this.data instanceof Array)) { - var newData = []; - for (var i = 0; i < this._len; i++) { - newData[i] = this.data[i]; - } - this.data = newData; - } - }; - PathProxy2.prototype.toStatic = function() { - if (!this._saveData) { - return; - } - this._drawPendingPt(); - var data = this.data; - if (data instanceof Array) { - data.length = this._len; - if (hasTypedArray && this._len > 11) { - this.data = new Float32Array(data); - } - } - }; - PathProxy2.prototype.getBoundingRect = function() { - min2[0] = min2[1] = min22[0] = min22[1] = Number.MAX_VALUE; - max2[0] = max2[1] = max22[0] = max22[1] = -Number.MAX_VALUE; - var data = this.data; - var xi = 0; - var yi = 0; - var x0 = 0; - var y0 = 0; - var i; - for (i = 0; i < this._len; ) { - var cmd = data[i++]; - var isFirst = i === 1; - if (isFirst) { - xi = data[i]; - yi = data[i + 1]; - x0 = xi; - y0 = yi; - } - switch (cmd) { - case CMD.M: - xi = x0 = data[i++]; - yi = y0 = data[i++]; - min22[0] = x0; - min22[1] = y0; - max22[0] = x0; - max22[1] = y0; - break; - case CMD.L: - fromLine(xi, yi, data[i], data[i + 1], min22, max22); - xi = data[i++]; - yi = data[i++]; - break; - case CMD.C: - fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min22, max22); - xi = data[i++]; - yi = data[i++]; - break; - case CMD.Q: - fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min22, max22); - xi = data[i++]; - yi = data[i++]; - break; - case CMD.A: - var cx = data[i++]; - var cy = data[i++]; - var rx = data[i++]; - var ry = data[i++]; - var startAngle = data[i++]; - var endAngle = data[i++] + startAngle; - i += 1; - var anticlockwise = !data[i++]; - if (isFirst) { - x0 = mathCos2(startAngle) * rx + cx; - y0 = mathSin2(startAngle) * ry + cy; - } - fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min22, max22); - xi = mathCos2(endAngle) * rx + cx; - yi = mathSin2(endAngle) * ry + cy; - break; - case CMD.R: - x0 = xi = data[i++]; - y0 = yi = data[i++]; - var width = data[i++]; - var height = data[i++]; - fromLine(x0, y0, x0 + width, y0 + height, min22, max22); - break; - case CMD.Z: - xi = x0; - yi = y0; - break; - } - min(min2, min2, min22); - max(max2, max2, max22); - } - if (i === 0) { - min2[0] = min2[1] = max2[0] = max2[1] = 0; - } - return new BoundingRect_default(min2[0], min2[1], max2[0] - min2[0], max2[1] - min2[1]); - }; - PathProxy2.prototype._calculateLength = function() { - var data = this.data; - var len2 = this._len; - var ux = this._ux; - var uy = this._uy; - var xi = 0; - var yi = 0; - var x0 = 0; - var y0 = 0; - if (!this._pathSegLen) { - this._pathSegLen = []; - } - var pathSegLen = this._pathSegLen; - var pathTotalLen = 0; - var segCount = 0; - for (var i = 0; i < len2; ) { - var cmd = data[i++]; - var isFirst = i === 1; - if (isFirst) { - xi = data[i]; - yi = data[i + 1]; - x0 = xi; - y0 = yi; - } - var l = -1; - switch (cmd) { - case CMD.M: - xi = x0 = data[i++]; - yi = y0 = data[i++]; - break; - case CMD.L: { - var x2 = data[i++]; - var y2 = data[i++]; - var dx = x2 - xi; - var dy = y2 - yi; - if (mathAbs(dx) > ux || mathAbs(dy) > uy || i === len2 - 1) { - l = Math.sqrt(dx * dx + dy * dy); - xi = x2; - yi = y2; - } - break; - } - case CMD.C: { - var x1 = data[i++]; - var y1 = data[i++]; - var x2 = data[i++]; - var y2 = data[i++]; - var x3 = data[i++]; - var y3 = data[i++]; - l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10); - xi = x3; - yi = y3; - break; - } - case CMD.Q: { - var x1 = data[i++]; - var y1 = data[i++]; - var x2 = data[i++]; - var y2 = data[i++]; - l = quadraticLength(xi, yi, x1, y1, x2, y2, 10); - xi = x2; - yi = y2; - break; - } - case CMD.A: - var cx = data[i++]; - var cy = data[i++]; - var rx = data[i++]; - var ry = data[i++]; - var startAngle = data[i++]; - var delta = data[i++]; - var endAngle = delta + startAngle; - i += 1; - if (isFirst) { - x0 = mathCos2(startAngle) * rx + cx; - y0 = mathSin2(startAngle) * ry + cy; - } - l = mathMax3(rx, ry) * mathMin3(PI22, Math.abs(delta)); - xi = mathCos2(endAngle) * rx + cx; - yi = mathSin2(endAngle) * ry + cy; - break; - case CMD.R: { - x0 = xi = data[i++]; - y0 = yi = data[i++]; - var width = data[i++]; - var height = data[i++]; - l = width * 2 + height * 2; - break; - } - case CMD.Z: { - var dx = x0 - xi; - var dy = y0 - yi; - l = Math.sqrt(dx * dx + dy * dy); - xi = x0; - yi = y0; - break; - } - } - if (l >= 0) { - pathSegLen[segCount++] = l; - pathTotalLen += l; - } - } - this._pathLen = pathTotalLen; - return pathTotalLen; - }; - PathProxy2.prototype.rebuildPath = function(ctx, percent) { - var d = this.data; - var ux = this._ux; - var uy = this._uy; - var len2 = this._len; - var x0; - var y0; - var xi; - var yi; - var x; - var y; - var drawPart = percent < 1; - var pathSegLen; - var pathTotalLen; - var accumLength = 0; - var segCount = 0; - var displayedLength; - var pendingPtDist = 0; - var pendingPtX; - var pendingPtY; - if (drawPart) { - if (!this._pathSegLen) { - this._calculateLength(); - } - pathSegLen = this._pathSegLen; - pathTotalLen = this._pathLen; - displayedLength = percent * pathTotalLen; - if (!displayedLength) { - return; - } - } - lo: - for (var i = 0; i < len2; ) { - var cmd = d[i++]; - var isFirst = i === 1; - if (isFirst) { - xi = d[i]; - yi = d[i + 1]; - x0 = xi; - y0 = yi; - } - if (cmd !== CMD.L && pendingPtDist > 0) { - ctx.lineTo(pendingPtX, pendingPtY); - pendingPtDist = 0; - } - switch (cmd) { - case CMD.M: - x0 = xi = d[i++]; - y0 = yi = d[i++]; - ctx.moveTo(xi, yi); - break; - case CMD.L: { - x = d[i++]; - y = d[i++]; - var dx = mathAbs(x - xi); - var dy = mathAbs(y - yi); - if (dx > ux || dy > uy) { - if (drawPart) { - var l = pathSegLen[segCount++]; - if (accumLength + l > displayedLength) { - var t = (displayedLength - accumLength) / l; - ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t); - break lo; - } - accumLength += l; - } - ctx.lineTo(x, y); - xi = x; - yi = y; - pendingPtDist = 0; - } else { - var d2 = dx * dx + dy * dy; - if (d2 > pendingPtDist) { - pendingPtX = x; - pendingPtY = y; - pendingPtDist = d2; - } - } - break; - } - case CMD.C: { - var x1 = d[i++]; - var y1 = d[i++]; - var x2 = d[i++]; - var y2 = d[i++]; - var x3 = d[i++]; - var y3 = d[i++]; - if (drawPart) { - var l = pathSegLen[segCount++]; - if (accumLength + l > displayedLength) { - var t = (displayedLength - accumLength) / l; - cubicSubdivide(xi, x1, x2, x3, t, tmpOutX); - cubicSubdivide(yi, y1, y2, y3, t, tmpOutY); - ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]); - break lo; - } - accumLength += l; - } - ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3); - xi = x3; - yi = y3; - break; - } - case CMD.Q: { - var x1 = d[i++]; - var y1 = d[i++]; - var x2 = d[i++]; - var y2 = d[i++]; - if (drawPart) { - var l = pathSegLen[segCount++]; - if (accumLength + l > displayedLength) { - var t = (displayedLength - accumLength) / l; - quadraticSubdivide(xi, x1, x2, t, tmpOutX); - quadraticSubdivide(yi, y1, y2, t, tmpOutY); - ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]); - break lo; - } - accumLength += l; - } - ctx.quadraticCurveTo(x1, y1, x2, y2); - xi = x2; - yi = y2; - break; - } - case CMD.A: - var cx = d[i++]; - var cy = d[i++]; - var rx = d[i++]; - var ry = d[i++]; - var startAngle = d[i++]; - var delta = d[i++]; - var psi = d[i++]; - var anticlockwise = !d[i++]; - var r = rx > ry ? rx : ry; - var isEllipse = mathAbs(rx - ry) > 1e-3; - var endAngle = startAngle + delta; - var breakBuild = false; - if (drawPart) { - var l = pathSegLen[segCount++]; - if (accumLength + l > displayedLength) { - endAngle = startAngle + delta * (displayedLength - accumLength) / l; - breakBuild = true; - } - accumLength += l; - } - if (isEllipse && ctx.ellipse) { - ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise); - } else { - ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise); - } - if (breakBuild) { - break lo; - } - if (isFirst) { - x0 = mathCos2(startAngle) * rx + cx; - y0 = mathSin2(startAngle) * ry + cy; - } - xi = mathCos2(endAngle) * rx + cx; - yi = mathSin2(endAngle) * ry + cy; - break; - case CMD.R: - x0 = xi = d[i]; - y0 = yi = d[i + 1]; - x = d[i++]; - y = d[i++]; - var width = d[i++]; - var height = d[i++]; - if (drawPart) { - var l = pathSegLen[segCount++]; - if (accumLength + l > displayedLength) { - var d_1 = displayedLength - accumLength; - ctx.moveTo(x, y); - ctx.lineTo(x + mathMin3(d_1, width), y); - d_1 -= width; - if (d_1 > 0) { - ctx.lineTo(x + width, y + mathMin3(d_1, height)); - } - d_1 -= height; - if (d_1 > 0) { - ctx.lineTo(x + mathMax3(width - d_1, 0), y + height); - } - d_1 -= width; - if (d_1 > 0) { - ctx.lineTo(x, y + mathMax3(height - d_1, 0)); - } - break lo; - } - accumLength += l; - } - ctx.rect(x, y, width, height); - break; - case CMD.Z: - if (drawPart) { - var l = pathSegLen[segCount++]; - if (accumLength + l > displayedLength) { - var t = (displayedLength - accumLength) / l; - ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t); - break lo; - } - accumLength += l; - } - ctx.closePath(); - xi = x0; - yi = y0; - } - } - }; - PathProxy2.prototype.clone = function() { - var newProxy = new PathProxy2(); - var data = this.data; - newProxy.data = data.slice ? data.slice() : Array.prototype.slice.call(data); - newProxy._len = this._len; - return newProxy; - }; - PathProxy2.CMD = CMD; - PathProxy2.initDefaultProps = function() { - var proto2 = PathProxy2.prototype; - proto2._saveData = true; - proto2._ux = 0; - proto2._uy = 0; - proto2._pendingPtDist = 0; - proto2._version = 0; - }(); - return PathProxy2; - }(); - var PathProxy_default = PathProxy; - - // node_modules/zrender/lib/contain/line.js - function containStroke(x0, y0, x1, y1, lineWidth, x, y) { - if (lineWidth === 0) { - return false; - } - var _l = lineWidth; - var _a2 = 0; - var _b2 = x0; - if (y > y0 + _l && y > y1 + _l || y < y0 - _l && y < y1 - _l || x > x0 + _l && x > x1 + _l || x < x0 - _l && x < x1 - _l) { - return false; - } - if (x0 !== x1) { - _a2 = (y0 - y1) / (x0 - x1); - _b2 = (x0 * y1 - x1 * y0) / (x0 - x1); - } else { - return Math.abs(x - x0) <= _l / 2; - } - var tmp = _a2 * x - y + _b2; - var _s = tmp * tmp / (_a2 * _a2 + 1); - return _s <= _l / 2 * _l / 2; - } - - // node_modules/zrender/lib/contain/cubic.js - function containStroke2(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) { - if (lineWidth === 0) { - return false; - } - var _l = lineWidth; - if (y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l) { - return false; - } - var d = cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null); - return d <= _l / 2; - } - - // node_modules/zrender/lib/contain/quadratic.js - function containStroke3(x0, y0, x1, y1, x2, y2, lineWidth, x, y) { - if (lineWidth === 0) { - return false; - } - var _l = lineWidth; - if (y > y0 + _l && y > y1 + _l && y > y2 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l) { - return false; - } - var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null); - return d <= _l / 2; - } - - // node_modules/zrender/lib/contain/util.js - var PI23 = Math.PI * 2; - function normalizeRadian(angle) { - angle %= PI23; - if (angle < 0) { - angle += PI23; - } - return angle; - } - - // node_modules/zrender/lib/contain/arc.js - var PI24 = Math.PI * 2; - function containStroke4(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) { - if (lineWidth === 0) { - return false; - } - var _l = lineWidth; - x -= cx; - y -= cy; - var d = Math.sqrt(x * x + y * y); - if (d - _l > r || d + _l < r) { - return false; - } - if (Math.abs(startAngle - endAngle) % PI24 < 1e-4) { - return true; - } - if (anticlockwise) { - var tmp = startAngle; - startAngle = normalizeRadian(endAngle); - endAngle = normalizeRadian(tmp); - } else { - startAngle = normalizeRadian(startAngle); - endAngle = normalizeRadian(endAngle); - } - if (startAngle > endAngle) { - endAngle += PI24; - } - var angle = Math.atan2(y, x); - if (angle < 0) { - angle += PI24; - } - return angle >= startAngle && angle <= endAngle || angle + PI24 >= startAngle && angle + PI24 <= endAngle; - } - - // node_modules/zrender/lib/contain/windingLine.js - function windingLine(x0, y0, x1, y1, x, y) { - if (y > y0 && y > y1 || y < y0 && y < y1) { - return 0; - } - if (y1 === y0) { - return 0; - } - var t = (y - y0) / (y1 - y0); - var dir3 = y1 < y0 ? 1 : -1; - if (t === 1 || t === 0) { - dir3 = y1 < y0 ? 0.5 : -0.5; - } - var x_ = t * (x1 - x0) + x0; - return x_ === x ? Infinity : x_ > x ? dir3 : 0; - } - - // node_modules/zrender/lib/contain/path.js - var CMD2 = PathProxy_default.CMD; - var PI25 = Math.PI * 2; - var EPSILON4 = 1e-4; - function isAroundEqual(a, b) { - return Math.abs(a - b) < EPSILON4; - } - var roots = [-1, -1, -1]; - var extrema = [-1, -1]; - function swapExtrema() { - var tmp = extrema[0]; - extrema[0] = extrema[1]; - extrema[1] = tmp; - } - function windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) { - if (y > y0 && y > y1 && y > y2 && y > y3 || y < y0 && y < y1 && y < y2 && y < y3) { - return 0; - } - var nRoots = cubicRootAt(y0, y1, y2, y3, y, roots); - if (nRoots === 0) { - return 0; - } else { - var w = 0; - var nExtrema = -1; - var y0_ = void 0; - var y1_ = void 0; - for (var i = 0; i < nRoots; i++) { - var t = roots[i]; - var unit = t === 0 || t === 1 ? 0.5 : 1; - var x_ = cubicAt(x0, x1, x2, x3, t); - if (x_ < x) { - continue; - } - if (nExtrema < 0) { - nExtrema = cubicExtrema(y0, y1, y2, y3, extrema); - if (extrema[1] < extrema[0] && nExtrema > 1) { - swapExtrema(); - } - y0_ = cubicAt(y0, y1, y2, y3, extrema[0]); - if (nExtrema > 1) { - y1_ = cubicAt(y0, y1, y2, y3, extrema[1]); - } - } - if (nExtrema === 2) { - if (t < extrema[0]) { - w += y0_ < y0 ? unit : -unit; - } else if (t < extrema[1]) { - w += y1_ < y0_ ? unit : -unit; - } else { - w += y3 < y1_ ? unit : -unit; - } - } else { - if (t < extrema[0]) { - w += y0_ < y0 ? unit : -unit; - } else { - w += y3 < y0_ ? unit : -unit; - } - } - } - return w; - } - } - function windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) { - if (y > y0 && y > y1 && y > y2 || y < y0 && y < y1 && y < y2) { - return 0; - } - var nRoots = quadraticRootAt(y0, y1, y2, y, roots); - if (nRoots === 0) { - return 0; - } else { - var t = quadraticExtremum(y0, y1, y2); - if (t >= 0 && t <= 1) { - var w = 0; - var y_ = quadraticAt(y0, y1, y2, t); - for (var i = 0; i < nRoots; i++) { - var unit = roots[i] === 0 || roots[i] === 1 ? 0.5 : 1; - var x_ = quadraticAt(x0, x1, x2, roots[i]); - if (x_ < x) { - continue; - } - if (roots[i] < t) { - w += y_ < y0 ? unit : -unit; - } else { - w += y2 < y_ ? unit : -unit; - } - } - return w; - } else { - var unit = roots[0] === 0 || roots[0] === 1 ? 0.5 : 1; - var x_ = quadraticAt(x0, x1, x2, roots[0]); - if (x_ < x) { - return 0; - } - return y2 < y0 ? unit : -unit; - } - } - } - function windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) { - y -= cy; - if (y > r || y < -r) { - return 0; - } - var tmp = Math.sqrt(r * r - y * y); - roots[0] = -tmp; - roots[1] = tmp; - var dTheta = Math.abs(startAngle - endAngle); - if (dTheta < 1e-4) { - return 0; - } - if (dTheta >= PI25 - 1e-4) { - startAngle = 0; - endAngle = PI25; - var dir3 = anticlockwise ? 1 : -1; - if (x >= roots[0] + cx && x <= roots[1] + cx) { - return dir3; - } else { - return 0; - } - } - if (startAngle > endAngle) { - var tmp_1 = startAngle; - startAngle = endAngle; - endAngle = tmp_1; - } - if (startAngle < 0) { - startAngle += PI25; - endAngle += PI25; - } - var w = 0; - for (var i = 0; i < 2; i++) { - var x_ = roots[i]; - if (x_ + cx > x) { - var angle = Math.atan2(y, x_); - var dir3 = anticlockwise ? 1 : -1; - if (angle < 0) { - angle = PI25 + angle; - } - if (angle >= startAngle && angle <= endAngle || angle + PI25 >= startAngle && angle + PI25 <= endAngle) { - if (angle > Math.PI / 2 && angle < Math.PI * 1.5) { - dir3 = -dir3; - } - w += dir3; - } - } - } - return w; - } - function containPath(path, lineWidth, isStroke, x, y) { - var data = path.data; - var len2 = path.len(); - var w = 0; - var xi = 0; - var yi = 0; - var x0 = 0; - var y0 = 0; - var x1; - var y1; - for (var i = 0; i < len2; ) { - var cmd = data[i++]; - var isFirst = i === 1; - if (cmd === CMD2.M && i > 1) { - if (!isStroke) { - w += windingLine(xi, yi, x0, y0, x, y); - } - } - if (isFirst) { - xi = data[i]; - yi = data[i + 1]; - x0 = xi; - y0 = yi; - } - switch (cmd) { - case CMD2.M: - x0 = data[i++]; - y0 = data[i++]; - xi = x0; - yi = y0; - break; - case CMD2.L: - if (isStroke) { - if (containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) { - return true; - } - } else { - w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0; - } - xi = data[i++]; - yi = data[i++]; - break; - case CMD2.C: - if (isStroke) { - if (containStroke2(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) { - return true; - } - } else { - w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0; - } - xi = data[i++]; - yi = data[i++]; - break; - case CMD2.Q: - if (isStroke) { - if (containStroke3(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) { - return true; - } - } else { - w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0; - } - xi = data[i++]; - yi = data[i++]; - break; - case CMD2.A: - var cx = data[i++]; - var cy = data[i++]; - var rx = data[i++]; - var ry = data[i++]; - var theta = data[i++]; - var dTheta = data[i++]; - i += 1; - var anticlockwise = !!(1 - data[i++]); - x1 = Math.cos(theta) * rx + cx; - y1 = Math.sin(theta) * ry + cy; - if (!isFirst) { - w += windingLine(xi, yi, x1, y1, x, y); - } else { - x0 = x1; - y0 = y1; - } - var _x = (x - cx) * ry / rx + cx; - if (isStroke) { - if (containStroke4(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) { - return true; - } - } else { - w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y); - } - xi = Math.cos(theta + dTheta) * rx + cx; - yi = Math.sin(theta + dTheta) * ry + cy; - break; - case CMD2.R: - x0 = xi = data[i++]; - y0 = yi = data[i++]; - var width = data[i++]; - var height = data[i++]; - x1 = x0 + width; - y1 = y0 + height; - if (isStroke) { - if (containStroke(x0, y0, x1, y0, lineWidth, x, y) || containStroke(x1, y0, x1, y1, lineWidth, x, y) || containStroke(x1, y1, x0, y1, lineWidth, x, y) || containStroke(x0, y1, x0, y0, lineWidth, x, y)) { - return true; - } - } else { - w += windingLine(x1, y0, x1, y1, x, y); - w += windingLine(x0, y1, x0, y0, x, y); - } - break; - case CMD2.Z: - if (isStroke) { - if (containStroke(xi, yi, x0, y0, lineWidth, x, y)) { - return true; - } - } else { - w += windingLine(xi, yi, x0, y0, x, y); - } - xi = x0; - yi = y0; - break; - } - } - if (!isStroke && !isAroundEqual(yi, y0)) { - w += windingLine(xi, yi, x0, y0, x, y) || 0; - } - return w !== 0; - } - function contain(pathProxy, x, y) { - return containPath(pathProxy, 0, false, x, y); - } - function containStroke5(pathProxy, lineWidth, x, y) { - return containPath(pathProxy, lineWidth, true, x, y); - } - - // node_modules/zrender/lib/graphic/Path.js - var DEFAULT_PATH_STYLE = defaults({ - fill: "#000", - stroke: null, - strokePercent: 1, - fillOpacity: 1, - strokeOpacity: 1, - lineDashOffset: 0, - lineWidth: 1, - lineCap: "butt", - miterLimit: 10, - strokeNoScale: false, - strokeFirst: false - }, DEFAULT_COMMON_STYLE); - var DEFAULT_PATH_ANIMATION_PROPS = { - style: defaults({ - fill: true, - stroke: true, - strokePercent: true, - fillOpacity: true, - strokeOpacity: true, - lineDashOffset: true, - lineWidth: true, - miterLimit: true - }, DEFAULT_COMMON_ANIMATION_PROPS.style) - }; - var pathCopyParams = TRANSFORMABLE_PROPS.concat([ - "invisible", - "culling", - "z", - "z2", - "zlevel", - "parent" - ]); - var Path = function(_super) { - __extends(Path2, _super); - function Path2(opts) { - return _super.call(this, opts) || this; - } - Path2.prototype.update = function() { - var _this = this; - _super.prototype.update.call(this); - var style = this.style; - if (style.decal) { - var decalEl = this._decalEl = this._decalEl || new Path2(); - if (decalEl.buildPath === Path2.prototype.buildPath) { - decalEl.buildPath = function(ctx) { - _this.buildPath(ctx, _this.shape); - }; - } - decalEl.silent = true; - var decalElStyle = decalEl.style; - for (var key in style) { - if (decalElStyle[key] !== style[key]) { - decalElStyle[key] = style[key]; - } - } - decalElStyle.fill = style.fill ? style.decal : null; - decalElStyle.decal = null; - decalElStyle.shadowColor = null; - style.strokeFirst && (decalElStyle.stroke = null); - for (var i = 0; i < pathCopyParams.length; ++i) { - decalEl[pathCopyParams[i]] = this[pathCopyParams[i]]; - } - decalEl.__dirty |= REDRAW_BIT; - } else if (this._decalEl) { - this._decalEl = null; - } - }; - Path2.prototype.getDecalElement = function() { - return this._decalEl; - }; - Path2.prototype._init = function(props) { - var keysArr = keys(props); - this.shape = this.getDefaultShape(); - var defaultStyle = this.getDefaultStyle(); - if (defaultStyle) { - this.useStyle(defaultStyle); - } - for (var i = 0; i < keysArr.length; i++) { - var key = keysArr[i]; - var value = props[key]; - if (key === "style") { - if (!this.style) { - this.useStyle(value); - } else { - extend(this.style, value); - } - } else if (key === "shape") { - extend(this.shape, value); - } else { - _super.prototype.attrKV.call(this, key, value); - } - } - if (!this.style) { - this.useStyle({}); - } - }; - Path2.prototype.getDefaultStyle = function() { - return null; - }; - Path2.prototype.getDefaultShape = function() { - return {}; - }; - Path2.prototype.canBeInsideText = function() { - return this.hasFill(); - }; - Path2.prototype.getInsideTextFill = function() { - var pathFill = this.style.fill; - if (pathFill !== "none") { - if (isString(pathFill)) { - var fillLum = lum(pathFill, 0); - if (fillLum > 0.5) { - return DARK_LABEL_COLOR; - } else if (fillLum > 0.2) { - return LIGHTER_LABEL_COLOR; - } - return LIGHT_LABEL_COLOR; - } else if (pathFill) { - return LIGHT_LABEL_COLOR; - } - } - return DARK_LABEL_COLOR; - }; - Path2.prototype.getInsideTextStroke = function(textFill) { - var pathFill = this.style.fill; - if (isString(pathFill)) { - var zr = this.__zr; - var isDarkMode2 = !!(zr && zr.isDarkMode()); - var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD; - if (isDarkMode2 === isDarkLabel) { - return pathFill; - } - } - }; - Path2.prototype.buildPath = function(ctx, shapeCfg, inBatch) { - }; - Path2.prototype.pathUpdated = function() { - this.__dirty &= ~SHAPE_CHANGED_BIT; - }; - Path2.prototype.getUpdatedPathProxy = function(inBatch) { - !this.path && this.createPathProxy(); - this.path.beginPath(); - this.buildPath(this.path, this.shape, inBatch); - return this.path; - }; - Path2.prototype.createPathProxy = function() { - this.path = new PathProxy_default(false); - }; - Path2.prototype.hasStroke = function() { - var style = this.style; - var stroke = style.stroke; - return !(stroke == null || stroke === "none" || !(style.lineWidth > 0)); - }; - Path2.prototype.hasFill = function() { - var style = this.style; - var fill = style.fill; - return fill != null && fill !== "none"; - }; - Path2.prototype.getBoundingRect = function() { - var rect = this._rect; - var style = this.style; - var needsUpdateRect = !rect; - if (needsUpdateRect) { - var firstInvoke = false; - if (!this.path) { - firstInvoke = true; - this.createPathProxy(); - } - var path = this.path; - if (firstInvoke || this.__dirty & SHAPE_CHANGED_BIT) { - path.beginPath(); - this.buildPath(path, this.shape, false); - this.pathUpdated(); - } - rect = path.getBoundingRect(); - } - this._rect = rect; - if (this.hasStroke() && this.path && this.path.len() > 0) { - var rectStroke = this._rectStroke || (this._rectStroke = rect.clone()); - if (this.__dirty || needsUpdateRect) { - rectStroke.copy(rect); - var lineScale = style.strokeNoScale ? this.getLineScale() : 1; - var w = style.lineWidth; - if (!this.hasFill()) { - var strokeContainThreshold = this.strokeContainThreshold; - w = Math.max(w, strokeContainThreshold == null ? 4 : strokeContainThreshold); - } - if (lineScale > 1e-10) { - rectStroke.width += w / lineScale; - rectStroke.height += w / lineScale; - rectStroke.x -= w / lineScale / 2; - rectStroke.y -= w / lineScale / 2; - } - } - return rectStroke; - } - return rect; - }; - Path2.prototype.contain = function(x, y) { - var localPos = this.transformCoordToLocal(x, y); - var rect = this.getBoundingRect(); - var style = this.style; - x = localPos[0]; - y = localPos[1]; - if (rect.contain(x, y)) { - var pathProxy = this.path; - if (this.hasStroke()) { - var lineWidth = style.lineWidth; - var lineScale = style.strokeNoScale ? this.getLineScale() : 1; - if (lineScale > 1e-10) { - if (!this.hasFill()) { - lineWidth = Math.max(lineWidth, this.strokeContainThreshold); - } - if (containStroke5(pathProxy, lineWidth / lineScale, x, y)) { - return true; - } - } - } - if (this.hasFill()) { - return contain(pathProxy, x, y); - } - } - return false; - }; - Path2.prototype.dirtyShape = function() { - this.__dirty |= SHAPE_CHANGED_BIT; - if (this._rect) { - this._rect = null; - } - if (this._decalEl) { - this._decalEl.dirtyShape(); - } - this.markRedraw(); - }; - Path2.prototype.dirty = function() { - this.dirtyStyle(); - this.dirtyShape(); - }; - Path2.prototype.animateShape = function(loop) { - return this.animate("shape", loop); - }; - Path2.prototype.updateDuringAnimation = function(targetKey) { - if (targetKey === "style") { - this.dirtyStyle(); - } else if (targetKey === "shape") { - this.dirtyShape(); - } else { - this.markRedraw(); - } - }; - Path2.prototype.attrKV = function(key, value) { - if (key === "shape") { - this.setShape(value); - } else { - _super.prototype.attrKV.call(this, key, value); - } - }; - Path2.prototype.setShape = function(keyOrObj, value) { - var shape = this.shape; - if (!shape) { - shape = this.shape = {}; - } - if (typeof keyOrObj === "string") { - shape[keyOrObj] = value; - } else { - extend(shape, keyOrObj); - } - this.dirtyShape(); - return this; - }; - Path2.prototype.shapeChanged = function() { - return !!(this.__dirty & SHAPE_CHANGED_BIT); - }; - Path2.prototype.createStyle = function(obj) { - return createObject(DEFAULT_PATH_STYLE, obj); - }; - Path2.prototype._innerSaveToNormal = function(toState) { - _super.prototype._innerSaveToNormal.call(this, toState); - var normalState = this._normalState; - if (toState.shape && !normalState.shape) { - normalState.shape = extend({}, this.shape); - } - }; - Path2.prototype._applyStateObj = function(stateName, state, normalState, keepCurrentStates, transition, animationCfg) { - _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg); - var needsRestoreToNormal = !(state && keepCurrentStates); - var targetShape; - if (state && state.shape) { - if (transition) { - if (keepCurrentStates) { - targetShape = state.shape; - } else { - targetShape = extend({}, normalState.shape); - extend(targetShape, state.shape); - } - } else { - targetShape = extend({}, keepCurrentStates ? this.shape : normalState.shape); - extend(targetShape, state.shape); - } - } else if (needsRestoreToNormal) { - targetShape = normalState.shape; - } - if (targetShape) { - if (transition) { - this.shape = extend({}, this.shape); - var targetShapePrimaryProps = {}; - var shapeKeys = keys(targetShape); - for (var i = 0; i < shapeKeys.length; i++) { - var key = shapeKeys[i]; - if (typeof targetShape[key] === "object") { - this.shape[key] = targetShape[key]; - } else { - targetShapePrimaryProps[key] = targetShape[key]; - } - } - this._transitionState(stateName, { - shape: targetShapePrimaryProps - }, animationCfg); - } else { - this.shape = targetShape; - this.dirtyShape(); - } - } - }; - Path2.prototype._mergeStates = function(states) { - var mergedState = _super.prototype._mergeStates.call(this, states); - var mergedShape; - for (var i = 0; i < states.length; i++) { - var state = states[i]; - if (state.shape) { - mergedShape = mergedShape || {}; - this._mergeStyle(mergedShape, state.shape); - } - } - if (mergedShape) { - mergedState.shape = mergedShape; - } - return mergedState; - }; - Path2.prototype.getAnimationStyleProps = function() { - return DEFAULT_PATH_ANIMATION_PROPS; - }; - Path2.prototype.isZeroArea = function() { - return false; - }; - Path2.extend = function(defaultProps) { - var Sub = function(_super2) { - __extends(Sub2, _super2); - function Sub2(opts) { - var _this = _super2.call(this, opts) || this; - defaultProps.init && defaultProps.init.call(_this, opts); - return _this; - } - Sub2.prototype.getDefaultStyle = function() { - return clone(defaultProps.style); - }; - Sub2.prototype.getDefaultShape = function() { - return clone(defaultProps.shape); - }; - return Sub2; - }(Path2); - for (var key in defaultProps) { - if (typeof defaultProps[key] === "function") { - Sub.prototype[key] = defaultProps[key]; - } - } - return Sub; - }; - Path2.initDefaultProps = function() { - var pathProto = Path2.prototype; - pathProto.type = "path"; - pathProto.strokeContainThreshold = 5; - pathProto.segmentIgnoreThreshold = 0; - pathProto.subPixelOptimize = false; - pathProto.autoBatch = false; - pathProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT | SHAPE_CHANGED_BIT; - }(); - return Path2; - }(Displayable_default); - var Path_default = Path; - - // node_modules/zrender/lib/graphic/TSpan.js - var DEFAULT_TSPAN_STYLE = defaults({ - strokeFirst: true, - font: DEFAULT_FONT, - x: 0, - y: 0, - textAlign: "left", - textBaseline: "top", - miterLimit: 2 - }, DEFAULT_PATH_STYLE); - var TSpan = function(_super) { - __extends(TSpan2, _super); - function TSpan2() { - return _super !== null && _super.apply(this, arguments) || this; - } - TSpan2.prototype.hasStroke = function() { - var style = this.style; - var stroke = style.stroke; - return stroke != null && stroke !== "none" && style.lineWidth > 0; - }; - TSpan2.prototype.hasFill = function() { - var style = this.style; - var fill = style.fill; - return fill != null && fill !== "none"; - }; - TSpan2.prototype.createStyle = function(obj) { - return createObject(DEFAULT_TSPAN_STYLE, obj); - }; - TSpan2.prototype.setBoundingRect = function(rect) { - this._rect = rect; - }; - TSpan2.prototype.getBoundingRect = function() { - var style = this.style; - if (!this._rect) { - var text = style.text; - text != null ? text += "" : text = ""; - var rect = getBoundingRect(text, style.font, style.textAlign, style.textBaseline); - rect.x += style.x || 0; - rect.y += style.y || 0; - if (this.hasStroke()) { - var w = style.lineWidth; - rect.x -= w / 2; - rect.y -= w / 2; - rect.width += w; - rect.height += w; - } - this._rect = rect; - } - return this._rect; - }; - TSpan2.initDefaultProps = function() { - var tspanProto = TSpan2.prototype; - tspanProto.dirtyRectTolerance = 10; - }(); - return TSpan2; - }(Displayable_default); - TSpan.prototype.type = "tspan"; - var TSpan_default = TSpan; - - // node_modules/zrender/lib/graphic/Image.js - var DEFAULT_IMAGE_STYLE = defaults({ - x: 0, - y: 0 - }, DEFAULT_COMMON_STYLE); - var DEFAULT_IMAGE_ANIMATION_PROPS = { - style: defaults({ - x: true, - y: true, - width: true, - height: true, - sx: true, - sy: true, - sWidth: true, - sHeight: true - }, DEFAULT_COMMON_ANIMATION_PROPS.style) - }; - function isImageLike(source) { - return !!(source && typeof source !== "string" && source.width && source.height); - } - var ZRImage = function(_super) { - __extends(ZRImage2, _super); - function ZRImage2() { - return _super !== null && _super.apply(this, arguments) || this; - } - ZRImage2.prototype.createStyle = function(obj) { - return createObject(DEFAULT_IMAGE_STYLE, obj); - }; - ZRImage2.prototype._getSize = function(dim) { - var style = this.style; - var size2 = style[dim]; - if (size2 != null) { - return size2; - } - var imageSource = isImageLike(style.image) ? style.image : this.__image; - if (!imageSource) { - return 0; - } - var otherDim = dim === "width" ? "height" : "width"; - var otherDimSize = style[otherDim]; - if (otherDimSize == null) { - return imageSource[dim]; - } else { - return imageSource[dim] / imageSource[otherDim] * otherDimSize; - } - }; - ZRImage2.prototype.getWidth = function() { - return this._getSize("width"); - }; - ZRImage2.prototype.getHeight = function() { - return this._getSize("height"); - }; - ZRImage2.prototype.getAnimationStyleProps = function() { - return DEFAULT_IMAGE_ANIMATION_PROPS; - }; - ZRImage2.prototype.getBoundingRect = function() { - var style = this.style; - if (!this._rect) { - this._rect = new BoundingRect_default(style.x || 0, style.y || 0, this.getWidth(), this.getHeight()); - } - return this._rect; - }; - return ZRImage2; - }(Displayable_default); - ZRImage.prototype.type = "image"; - var Image_default = ZRImage; - - // node_modules/zrender/lib/graphic/helper/roundRect.js - function buildPath(ctx, shape) { - var x = shape.x; - var y = shape.y; - var width = shape.width; - var height = shape.height; - var r = shape.r; - var r1; - var r2; - var r3; - var r4; - if (width < 0) { - x = x + width; - width = -width; - } - if (height < 0) { - y = y + height; - height = -height; - } - if (typeof r === "number") { - r1 = r2 = r3 = r4 = r; - } else if (r instanceof Array) { - if (r.length === 1) { - r1 = r2 = r3 = r4 = r[0]; - } else if (r.length === 2) { - r1 = r3 = r[0]; - r2 = r4 = r[1]; - } else if (r.length === 3) { - r1 = r[0]; - r2 = r4 = r[1]; - r3 = r[2]; - } else { - r1 = r[0]; - r2 = r[1]; - r3 = r[2]; - r4 = r[3]; - } - } else { - r1 = r2 = r3 = r4 = 0; - } - var total; - if (r1 + r2 > width) { - total = r1 + r2; - r1 *= width / total; - r2 *= width / total; - } - if (r3 + r4 > width) { - total = r3 + r4; - r3 *= width / total; - r4 *= width / total; - } - if (r2 + r3 > height) { - total = r2 + r3; - r2 *= height / total; - r3 *= height / total; - } - if (r1 + r4 > height) { - total = r1 + r4; - r1 *= height / total; - r4 *= height / total; - } - ctx.moveTo(x + r1, y); - ctx.lineTo(x + width - r2, y); - r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0); - ctx.lineTo(x + width, y + height - r3); - r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2); - ctx.lineTo(x + r4, y + height); - r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI); - ctx.lineTo(x, y + r1); - r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5); - } - - // node_modules/zrender/lib/graphic/helper/subPixelOptimize.js - var round2 = Math.round; - function subPixelOptimizeLine(outputShape, inputShape, style) { - if (!inputShape) { - return; - } - var x1 = inputShape.x1; - var x2 = inputShape.x2; - var y1 = inputShape.y1; - var y2 = inputShape.y2; - outputShape.x1 = x1; - outputShape.x2 = x2; - outputShape.y1 = y1; - outputShape.y2 = y2; - var lineWidth = style && style.lineWidth; - if (!lineWidth) { - return outputShape; - } - if (round2(x1 * 2) === round2(x2 * 2)) { - outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true); - } - if (round2(y1 * 2) === round2(y2 * 2)) { - outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true); - } - return outputShape; - } - function subPixelOptimizeRect(outputShape, inputShape, style) { - if (!inputShape) { - return; - } - var originX = inputShape.x; - var originY = inputShape.y; - var originWidth = inputShape.width; - var originHeight = inputShape.height; - outputShape.x = originX; - outputShape.y = originY; - outputShape.width = originWidth; - outputShape.height = originHeight; - var lineWidth = style && style.lineWidth; - if (!lineWidth) { - return outputShape; - } - outputShape.x = subPixelOptimize(originX, lineWidth, true); - outputShape.y = subPixelOptimize(originY, lineWidth, true); - outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1); - outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1); - return outputShape; - } - function subPixelOptimize(position2, lineWidth, positiveOrNegative) { - if (!lineWidth) { - return position2; - } - var doubledPosition = round2(position2 * 2); - return (doubledPosition + round2(lineWidth)) % 2 === 0 ? doubledPosition / 2 : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2; - } - - // node_modules/zrender/lib/graphic/shape/Rect.js - var RectShape = /* @__PURE__ */ function() { - function RectShape2() { - this.x = 0; - this.y = 0; - this.width = 0; - this.height = 0; - } - return RectShape2; - }(); - var subPixelOptimizeOutputShape = {}; - var Rect = function(_super) { - __extends(Rect4, _super); - function Rect4(opts) { - return _super.call(this, opts) || this; - } - Rect4.prototype.getDefaultShape = function() { - return new RectShape(); - }; - Rect4.prototype.buildPath = function(ctx, shape) { - var x; - var y; - var width; - var height; - if (this.subPixelOptimize) { - var optimizedShape = subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style); - x = optimizedShape.x; - y = optimizedShape.y; - width = optimizedShape.width; - height = optimizedShape.height; - optimizedShape.r = shape.r; - shape = optimizedShape; - } else { - x = shape.x; - y = shape.y; - width = shape.width; - height = shape.height; - } - if (!shape.r) { - ctx.rect(x, y, width, height); - } else { - buildPath(ctx, shape); - } - }; - Rect4.prototype.isZeroArea = function() { - return !this.shape.width || !this.shape.height; - }; - return Rect4; - }(Path_default); - Rect.prototype.type = "rect"; - var Rect_default = Rect; - - // node_modules/zrender/lib/graphic/Text.js - var DEFAULT_RICH_TEXT_COLOR = { - fill: "#000" - }; - var DEFAULT_STROKE_LINE_WIDTH = 2; - var DEFAULT_TEXT_ANIMATION_PROPS = { - style: defaults({ - fill: true, - stroke: true, - fillOpacity: true, - strokeOpacity: true, - lineWidth: true, - fontSize: true, - lineHeight: true, - width: true, - height: true, - textShadowColor: true, - textShadowBlur: true, - textShadowOffsetX: true, - textShadowOffsetY: true, - backgroundColor: true, - padding: true, - borderColor: true, - borderWidth: true, - borderRadius: true - }, DEFAULT_COMMON_ANIMATION_PROPS.style) - }; - var ZRText = function(_super) { - __extends(ZRText2, _super); - function ZRText2(opts) { - var _this = _super.call(this) || this; - _this.type = "text"; - _this._children = []; - _this._defaultStyle = DEFAULT_RICH_TEXT_COLOR; - _this.attr(opts); - return _this; - } - ZRText2.prototype.childrenRef = function() { - return this._children; - }; - ZRText2.prototype.update = function() { - _super.prototype.update.call(this); - if (this.styleChanged()) { - this._updateSubTexts(); - } - for (var i = 0; i < this._children.length; i++) { - var child = this._children[i]; - child.zlevel = this.zlevel; - child.z = this.z; - child.z2 = this.z2; - child.culling = this.culling; - child.cursor = this.cursor; - child.invisible = this.invisible; - } - }; - ZRText2.prototype.updateTransform = function() { - var innerTransformable = this.innerTransformable; - if (innerTransformable) { - innerTransformable.updateTransform(); - if (innerTransformable.transform) { - this.transform = innerTransformable.transform; - } - } else { - _super.prototype.updateTransform.call(this); - } - }; - ZRText2.prototype.getLocalTransform = function(m2) { - var innerTransformable = this.innerTransformable; - return innerTransformable ? innerTransformable.getLocalTransform(m2) : _super.prototype.getLocalTransform.call(this, m2); - }; - ZRText2.prototype.getComputedTransform = function() { - if (this.__hostTarget) { - this.__hostTarget.getComputedTransform(); - this.__hostTarget.updateInnerText(true); - } - return _super.prototype.getComputedTransform.call(this); - }; - ZRText2.prototype._updateSubTexts = function() { - this._childCursor = 0; - normalizeTextStyle(this.style); - this.style.rich ? this._updateRichTexts() : this._updatePlainTexts(); - this._children.length = this._childCursor; - this.styleUpdated(); - }; - ZRText2.prototype.addSelfToZr = function(zr) { - _super.prototype.addSelfToZr.call(this, zr); - for (var i = 0; i < this._children.length; i++) { - this._children[i].__zr = zr; - } - }; - ZRText2.prototype.removeSelfFromZr = function(zr) { - _super.prototype.removeSelfFromZr.call(this, zr); - for (var i = 0; i < this._children.length; i++) { - this._children[i].__zr = null; - } - }; - ZRText2.prototype.getBoundingRect = function() { - if (this.styleChanged()) { - this._updateSubTexts(); - } - if (!this._rect) { - var tmpRect3 = new BoundingRect_default(0, 0, 0, 0); - var children = this._children; - var tmpMat = []; - var rect = null; - for (var i = 0; i < children.length; i++) { - var child = children[i]; - var childRect = child.getBoundingRect(); - var transform2 = child.getLocalTransform(tmpMat); - if (transform2) { - tmpRect3.copy(childRect); - tmpRect3.applyTransform(transform2); - rect = rect || tmpRect3.clone(); - rect.union(tmpRect3); - } else { - rect = rect || childRect.clone(); - rect.union(childRect); - } - } - this._rect = rect || tmpRect3; - } - return this._rect; - }; - ZRText2.prototype.setDefaultTextStyle = function(defaultTextStyle) { - this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR; - }; - ZRText2.prototype.setTextContent = function(textContent) { - if (true) { - throw new Error("Can't attach text on another text"); - } - }; - ZRText2.prototype._mergeStyle = function(targetStyle, sourceStyle) { - if (!sourceStyle) { - return targetStyle; - } - var sourceRich = sourceStyle.rich; - var targetRich = targetStyle.rich || sourceRich && {}; - extend(targetStyle, sourceStyle); - if (sourceRich && targetRich) { - this._mergeRich(targetRich, sourceRich); - targetStyle.rich = targetRich; - } else if (targetRich) { - targetStyle.rich = targetRich; - } - return targetStyle; - }; - ZRText2.prototype._mergeRich = function(targetRich, sourceRich) { - var richNames = keys(sourceRich); - for (var i = 0; i < richNames.length; i++) { - var richName = richNames[i]; - targetRich[richName] = targetRich[richName] || {}; - extend(targetRich[richName], sourceRich[richName]); - } - }; - ZRText2.prototype.getAnimationStyleProps = function() { - return DEFAULT_TEXT_ANIMATION_PROPS; - }; - ZRText2.prototype._getOrCreateChild = function(Ctor) { - var child = this._children[this._childCursor]; - if (!child || !(child instanceof Ctor)) { - child = new Ctor(); - } - this._children[this._childCursor++] = child; - child.__zr = this.__zr; - child.parent = this; - return child; - }; - ZRText2.prototype._updatePlainTexts = function() { - var style = this.style; - var textFont = style.font || DEFAULT_FONT; - var textPadding = style.padding; - var text = getStyleText(style); - var contentBlock = parsePlainText(text, style); - var needDrawBg = needDrawBackground(style); - var bgColorDrawn = !!style.backgroundColor; - var outerHeight = contentBlock.outerHeight; - var outerWidth = contentBlock.outerWidth; - var contentWidth = contentBlock.contentWidth; - var textLines = contentBlock.lines; - var lineHeight = contentBlock.lineHeight; - var defaultStyle = this._defaultStyle; - this.isTruncated = !!contentBlock.isTruncated; - var baseX = style.x || 0; - var baseY = style.y || 0; - var textAlign = style.align || defaultStyle.align || "left"; - var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign || "top"; - var textX = baseX; - var textY = adjustTextY2(baseY, contentBlock.contentHeight, verticalAlign); - if (needDrawBg || textPadding) { - var boxX = adjustTextX(baseX, outerWidth, textAlign); - var boxY = adjustTextY2(baseY, outerHeight, verticalAlign); - needDrawBg && this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight); - } - textY += lineHeight / 2; - if (textPadding) { - textX = getTextXForPadding(baseX, textAlign, textPadding); - if (verticalAlign === "top") { - textY += textPadding[0]; - } else if (verticalAlign === "bottom") { - textY -= textPadding[2]; - } - } - var defaultLineWidth = 0; - var useDefaultFill = false; - var textFill = getFill("fill" in style ? style.fill : (useDefaultFill = true, defaultStyle.fill)); - var textStroke = getStroke("stroke" in style ? style.stroke : !bgColorDrawn && (!defaultStyle.autoStroke || useDefaultFill) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke) : null); - var hasShadow2 = style.textShadowBlur > 0; - var fixedBoundingRect = style.width != null && (style.overflow === "truncate" || style.overflow === "break" || style.overflow === "breakAll"); - var calculatedLineHeight = contentBlock.calculatedLineHeight; - for (var i = 0; i < textLines.length; i++) { - var el = this._getOrCreateChild(TSpan_default); - var subElStyle = el.createStyle(); - el.useStyle(subElStyle); - subElStyle.text = textLines[i]; - subElStyle.x = textX; - subElStyle.y = textY; - if (textAlign) { - subElStyle.textAlign = textAlign; - } - subElStyle.textBaseline = "middle"; - subElStyle.opacity = style.opacity; - subElStyle.strokeFirst = true; - if (hasShadow2) { - subElStyle.shadowBlur = style.textShadowBlur || 0; - subElStyle.shadowColor = style.textShadowColor || "transparent"; - subElStyle.shadowOffsetX = style.textShadowOffsetX || 0; - subElStyle.shadowOffsetY = style.textShadowOffsetY || 0; - } - subElStyle.stroke = textStroke; - subElStyle.fill = textFill; - if (textStroke) { - subElStyle.lineWidth = style.lineWidth || defaultLineWidth; - subElStyle.lineDash = style.lineDash; - subElStyle.lineDashOffset = style.lineDashOffset || 0; - } - subElStyle.font = textFont; - setSeparateFont(subElStyle, style); - textY += lineHeight; - if (fixedBoundingRect) { - el.setBoundingRect(new BoundingRect_default(adjustTextX(subElStyle.x, contentWidth, subElStyle.textAlign), adjustTextY2(subElStyle.y, calculatedLineHeight, subElStyle.textBaseline), contentWidth, calculatedLineHeight)); - } - } - }; - ZRText2.prototype._updateRichTexts = function() { - var style = this.style; - var text = getStyleText(style); - var contentBlock = parseRichText(text, style); - var contentWidth = contentBlock.width; - var outerWidth = contentBlock.outerWidth; - var outerHeight = contentBlock.outerHeight; - var textPadding = style.padding; - var baseX = style.x || 0; - var baseY = style.y || 0; - var defaultStyle = this._defaultStyle; - var textAlign = style.align || defaultStyle.align; - var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign; - this.isTruncated = !!contentBlock.isTruncated; - var boxX = adjustTextX(baseX, outerWidth, textAlign); - var boxY = adjustTextY2(baseY, outerHeight, verticalAlign); - var xLeft = boxX; - var lineTop = boxY; - if (textPadding) { - xLeft += textPadding[3]; - lineTop += textPadding[0]; - } - var xRight = xLeft + contentWidth; - if (needDrawBackground(style)) { - this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight); - } - var bgColorDrawn = !!style.backgroundColor; - for (var i = 0; i < contentBlock.lines.length; i++) { - var line = contentBlock.lines[i]; - var tokens = line.tokens; - var tokenCount = tokens.length; - var lineHeight = line.lineHeight; - var remainedWidth = line.width; - var leftIndex = 0; - var lineXLeft = xLeft; - var lineXRight = xRight; - var rightIndex = tokenCount - 1; - var token = void 0; - while (leftIndex < tokenCount && (token = tokens[leftIndex], !token.align || token.align === "left")) { - this._placeToken(token, style, lineHeight, lineTop, lineXLeft, "left", bgColorDrawn); - remainedWidth -= token.width; - lineXLeft += token.width; - leftIndex++; - } - while (rightIndex >= 0 && (token = tokens[rightIndex], token.align === "right")) { - this._placeToken(token, style, lineHeight, lineTop, lineXRight, "right", bgColorDrawn); - remainedWidth -= token.width; - lineXRight -= token.width; - rightIndex--; - } - lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2; - while (leftIndex <= rightIndex) { - token = tokens[leftIndex]; - this._placeToken(token, style, lineHeight, lineTop, lineXLeft + token.width / 2, "center", bgColorDrawn); - lineXLeft += token.width; - leftIndex++; - } - lineTop += lineHeight; - } - }; - ZRText2.prototype._placeToken = function(token, style, lineHeight, lineTop, x, textAlign, parentBgColorDrawn) { - var tokenStyle = style.rich[token.styleName] || {}; - tokenStyle.text = token.text; - var verticalAlign = token.verticalAlign; - var y = lineTop + lineHeight / 2; - if (verticalAlign === "top") { - y = lineTop + token.height / 2; - } else if (verticalAlign === "bottom") { - y = lineTop + lineHeight - token.height / 2; - } - var needDrawBg = !token.isLineHolder && needDrawBackground(tokenStyle); - needDrawBg && this._renderBackground(tokenStyle, style, textAlign === "right" ? x - token.width : textAlign === "center" ? x - token.width / 2 : x, y - token.height / 2, token.width, token.height); - var bgColorDrawn = !!tokenStyle.backgroundColor; - var textPadding = token.textPadding; - if (textPadding) { - x = getTextXForPadding(x, textAlign, textPadding); - y -= token.height / 2 - textPadding[0] - token.innerHeight / 2; - } - var el = this._getOrCreateChild(TSpan_default); - var subElStyle = el.createStyle(); - el.useStyle(subElStyle); - var defaultStyle = this._defaultStyle; - var useDefaultFill = false; - var defaultLineWidth = 0; - var textFill = getFill("fill" in tokenStyle ? tokenStyle.fill : "fill" in style ? style.fill : (useDefaultFill = true, defaultStyle.fill)); - var textStroke = getStroke("stroke" in tokenStyle ? tokenStyle.stroke : "stroke" in style ? style.stroke : !bgColorDrawn && !parentBgColorDrawn && (!defaultStyle.autoStroke || useDefaultFill) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke) : null); - var hasShadow2 = tokenStyle.textShadowBlur > 0 || style.textShadowBlur > 0; - subElStyle.text = token.text; - subElStyle.x = x; - subElStyle.y = y; - if (hasShadow2) { - subElStyle.shadowBlur = tokenStyle.textShadowBlur || style.textShadowBlur || 0; - subElStyle.shadowColor = tokenStyle.textShadowColor || style.textShadowColor || "transparent"; - subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style.textShadowOffsetX || 0; - subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style.textShadowOffsetY || 0; - } - subElStyle.textAlign = textAlign; - subElStyle.textBaseline = "middle"; - subElStyle.font = token.font || DEFAULT_FONT; - subElStyle.opacity = retrieve3(tokenStyle.opacity, style.opacity, 1); - setSeparateFont(subElStyle, tokenStyle); - if (textStroke) { - subElStyle.lineWidth = retrieve3(tokenStyle.lineWidth, style.lineWidth, defaultLineWidth); - subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style.lineDash); - subElStyle.lineDashOffset = style.lineDashOffset || 0; - subElStyle.stroke = textStroke; - } - if (textFill) { - subElStyle.fill = textFill; - } - var textWidth = token.contentWidth; - var textHeight = token.contentHeight; - el.setBoundingRect(new BoundingRect_default(adjustTextX(subElStyle.x, textWidth, subElStyle.textAlign), adjustTextY2(subElStyle.y, textHeight, subElStyle.textBaseline), textWidth, textHeight)); - }; - ZRText2.prototype._renderBackground = function(style, topStyle, x, y, width, height) { - var textBackgroundColor = style.backgroundColor; - var textBorderWidth = style.borderWidth; - var textBorderColor = style.borderColor; - var isImageBg = textBackgroundColor && textBackgroundColor.image; - var isPlainOrGradientBg = textBackgroundColor && !isImageBg; - var textBorderRadius = style.borderRadius; - var self2 = this; - var rectEl; - var imgEl; - if (isPlainOrGradientBg || style.lineHeight || textBorderWidth && textBorderColor) { - rectEl = this._getOrCreateChild(Rect_default); - rectEl.useStyle(rectEl.createStyle()); - rectEl.style.fill = null; - var rectShape = rectEl.shape; - rectShape.x = x; - rectShape.y = y; - rectShape.width = width; - rectShape.height = height; - rectShape.r = textBorderRadius; - rectEl.dirtyShape(); - } - if (isPlainOrGradientBg) { - var rectStyle = rectEl.style; - rectStyle.fill = textBackgroundColor || null; - rectStyle.fillOpacity = retrieve2(style.fillOpacity, 1); - } else if (isImageBg) { - imgEl = this._getOrCreateChild(Image_default); - imgEl.onload = function() { - self2.dirtyStyle(); - }; - var imgStyle = imgEl.style; - imgStyle.image = textBackgroundColor.image; - imgStyle.x = x; - imgStyle.y = y; - imgStyle.width = width; - imgStyle.height = height; - } - if (textBorderWidth && textBorderColor) { - var rectStyle = rectEl.style; - rectStyle.lineWidth = textBorderWidth; - rectStyle.stroke = textBorderColor; - rectStyle.strokeOpacity = retrieve2(style.strokeOpacity, 1); - rectStyle.lineDash = style.borderDash; - rectStyle.lineDashOffset = style.borderDashOffset || 0; - rectEl.strokeContainThreshold = 0; - if (rectEl.hasFill() && rectEl.hasStroke()) { - rectStyle.strokeFirst = true; - rectStyle.lineWidth *= 2; - } - } - var commonStyle = (rectEl || imgEl).style; - commonStyle.shadowBlur = style.shadowBlur || 0; - commonStyle.shadowColor = style.shadowColor || "transparent"; - commonStyle.shadowOffsetX = style.shadowOffsetX || 0; - commonStyle.shadowOffsetY = style.shadowOffsetY || 0; - commonStyle.opacity = retrieve3(style.opacity, topStyle.opacity, 1); - }; - ZRText2.makeFont = function(style) { - var font = ""; - if (hasSeparateFont(style)) { - font = [ - style.fontStyle, - style.fontWeight, - parseFontSize(style.fontSize), - style.fontFamily || "sans-serif" - ].join(" "); - } - return font && trim(font) || style.textFont || style.font; - }; - return ZRText2; - }(Displayable_default); - var VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 }; - var VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 }; - var FONT_PARTS = ["fontStyle", "fontWeight", "fontSize", "fontFamily"]; - function parseFontSize(fontSize) { - if (typeof fontSize === "string" && (fontSize.indexOf("px") !== -1 || fontSize.indexOf("rem") !== -1 || fontSize.indexOf("em") !== -1)) { - return fontSize; - } else if (!isNaN(+fontSize)) { - return fontSize + "px"; - } else { - return DEFAULT_FONT_SIZE + "px"; - } - } - function setSeparateFont(targetStyle, sourceStyle) { - for (var i = 0; i < FONT_PARTS.length; i++) { - var fontProp = FONT_PARTS[i]; - var val = sourceStyle[fontProp]; - if (val != null) { - targetStyle[fontProp] = val; - } - } - } - function hasSeparateFont(style) { - return style.fontSize != null || style.fontFamily || style.fontWeight; - } - function normalizeTextStyle(style) { - normalizeStyle(style); - each(style.rich, normalizeStyle); - return style; - } - function normalizeStyle(style) { - if (style) { - style.font = ZRText.makeFont(style); - var textAlign = style.align; - textAlign === "middle" && (textAlign = "center"); - style.align = textAlign == null || VALID_TEXT_ALIGN[textAlign] ? textAlign : "left"; - var verticalAlign = style.verticalAlign; - verticalAlign === "center" && (verticalAlign = "middle"); - style.verticalAlign = verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign] ? verticalAlign : "top"; - var textPadding = style.padding; - if (textPadding) { - style.padding = normalizeCssArray(style.padding); - } - } - } - function getStroke(stroke, lineWidth) { - return stroke == null || lineWidth <= 0 || stroke === "transparent" || stroke === "none" ? null : stroke.image || stroke.colorStops ? "#000" : stroke; - } - function getFill(fill) { - return fill == null || fill === "none" ? null : fill.image || fill.colorStops ? "#000" : fill; - } - function getTextXForPadding(x, textAlign, textPadding) { - return textAlign === "right" ? x - textPadding[1] : textAlign === "center" ? x + textPadding[3] / 2 - textPadding[1] / 2 : x + textPadding[3]; - } - function getStyleText(style) { - var text = style.text; - text != null && (text += ""); - return text; - } - function needDrawBackground(style) { - return !!(style.backgroundColor || style.lineHeight || style.borderWidth && style.borderColor); - } - var Text_default = ZRText; - - // node_modules/echarts/lib/util/innerStore.js - var getECData = makeInner(); - var setCommonECData = function(seriesIndex, dataType, dataIdx, el) { - if (el) { - var ecData = getECData(el); - ecData.dataIndex = dataIdx; - ecData.dataType = dataType; - ecData.seriesIndex = seriesIndex; - ecData.ssrType = "chart"; - if (el.type === "group") { - el.traverse(function(child) { - var childECData = getECData(child); - childECData.seriesIndex = seriesIndex; - childECData.dataIndex = dataIdx; - childECData.dataType = dataType; - childECData.ssrType = "chart"; - }); - } - } - }; - - // node_modules/echarts/lib/util/states.js - var _highlightNextDigit = 1; - var _highlightKeyMap = {}; - var getSavedStates = makeInner(); - var getComponentStates = makeInner(); - var HOVER_STATE_NORMAL = 0; - var HOVER_STATE_BLUR = 1; - var HOVER_STATE_EMPHASIS = 2; - var SPECIAL_STATES = ["emphasis", "blur", "select"]; - var DISPLAY_STATES = ["normal", "emphasis", "blur", "select"]; - var Z2_EMPHASIS_LIFT = 10; - var Z2_SELECT_LIFT = 9; - var HIGHLIGHT_ACTION_TYPE = "highlight"; - var DOWNPLAY_ACTION_TYPE = "downplay"; - var SELECT_ACTION_TYPE = "select"; - var UNSELECT_ACTION_TYPE = "unselect"; - var TOGGLE_SELECT_ACTION_TYPE = "toggleSelect"; - function hasFillOrStroke(fillOrStroke) { - return fillOrStroke != null && fillOrStroke !== "none"; - } - function doChangeHoverState(el, stateName, hoverStateEnum) { - if (el.onHoverStateChange && (el.hoverState || 0) !== hoverStateEnum) { - el.onHoverStateChange(stateName); - } - el.hoverState = hoverStateEnum; - } - function singleEnterEmphasis(el) { - doChangeHoverState(el, "emphasis", HOVER_STATE_EMPHASIS); - } - function singleLeaveEmphasis(el) { - if (el.hoverState === HOVER_STATE_EMPHASIS) { - doChangeHoverState(el, "normal", HOVER_STATE_NORMAL); - } - } - function singleEnterBlur(el) { - doChangeHoverState(el, "blur", HOVER_STATE_BLUR); - } - function singleLeaveBlur(el) { - if (el.hoverState === HOVER_STATE_BLUR) { - doChangeHoverState(el, "normal", HOVER_STATE_NORMAL); - } - } - function singleEnterSelect(el) { - el.selected = true; - } - function singleLeaveSelect(el) { - el.selected = false; - } - function updateElementState(el, updater, commonParam) { - updater(el, commonParam); - } - function traverseUpdateState(el, updater, commonParam) { - updateElementState(el, updater, commonParam); - el.isGroup && el.traverse(function(child) { - updateElementState(child, updater, commonParam); - }); - } - function setStatesFlag(el, stateName) { - switch (stateName) { - case "emphasis": - el.hoverState = HOVER_STATE_EMPHASIS; - break; - case "normal": - el.hoverState = HOVER_STATE_NORMAL; - break; - case "blur": - el.hoverState = HOVER_STATE_BLUR; - break; - case "select": - el.selected = true; - } - } - function getFromStateStyle(el, props, toStateName, defaultValue) { - var style = el.style; - var fromState = {}; - for (var i = 0; i < props.length; i++) { - var propName = props[i]; - var val = style[propName]; - fromState[propName] = val == null ? defaultValue && defaultValue[propName] : val; - } - for (var i = 0; i < el.animators.length; i++) { - var animator = el.animators[i]; - if (animator.__fromStateTransition && animator.__fromStateTransition.indexOf(toStateName) < 0 && animator.targetName === "style") { - animator.saveTo(fromState, props); - } - } - return fromState; - } - function createEmphasisDefaultState(el, stateName, targetStates, state) { - var hasSelect = targetStates && indexOf(targetStates, "select") >= 0; - var cloned = false; - if (el instanceof Path_default) { - var store = getSavedStates(el); - var fromFill = hasSelect ? store.selectFill || store.normalFill : store.normalFill; - var fromStroke = hasSelect ? store.selectStroke || store.normalStroke : store.normalStroke; - if (hasFillOrStroke(fromFill) || hasFillOrStroke(fromStroke)) { - state = state || {}; - var emphasisStyle = state.style || {}; - if (emphasisStyle.fill === "inherit") { - cloned = true; - state = extend({}, state); - emphasisStyle = extend({}, emphasisStyle); - emphasisStyle.fill = fromFill; - } else if (!hasFillOrStroke(emphasisStyle.fill) && hasFillOrStroke(fromFill)) { - cloned = true; - state = extend({}, state); - emphasisStyle = extend({}, emphasisStyle); - emphasisStyle.fill = liftColor(fromFill); - } else if (!hasFillOrStroke(emphasisStyle.stroke) && hasFillOrStroke(fromStroke)) { - if (!cloned) { - state = extend({}, state); - emphasisStyle = extend({}, emphasisStyle); - } - emphasisStyle.stroke = liftColor(fromStroke); - } - state.style = emphasisStyle; - } - } - if (state) { - if (state.z2 == null) { - if (!cloned) { - state = extend({}, state); - } - var z2EmphasisLift = el.z2EmphasisLift; - state.z2 = el.z2 + (z2EmphasisLift != null ? z2EmphasisLift : Z2_EMPHASIS_LIFT); - } - } - return state; - } - function createSelectDefaultState(el, stateName, state) { - if (state) { - if (state.z2 == null) { - state = extend({}, state); - var z2SelectLift = el.z2SelectLift; - state.z2 = el.z2 + (z2SelectLift != null ? z2SelectLift : Z2_SELECT_LIFT); - } - } - return state; - } - function createBlurDefaultState(el, stateName, state) { - var hasBlur = indexOf(el.currentStates, stateName) >= 0; - var currentOpacity = el.style.opacity; - var fromState = !hasBlur ? getFromStateStyle(el, ["opacity"], stateName, { - opacity: 1 - }) : null; - state = state || {}; - var blurStyle = state.style || {}; - if (blurStyle.opacity == null) { - state = extend({}, state); - blurStyle = extend({ - // Already being applied 'emphasis'. DON'T mul opacity multiple times. - opacity: hasBlur ? currentOpacity : fromState.opacity * 0.1 - }, blurStyle); - state.style = blurStyle; - } - return state; - } - function elementStateProxy(stateName, targetStates) { - var state = this.states[stateName]; - if (this.style) { - if (stateName === "emphasis") { - return createEmphasisDefaultState(this, stateName, targetStates, state); - } else if (stateName === "blur") { - return createBlurDefaultState(this, stateName, state); - } else if (stateName === "select") { - return createSelectDefaultState(this, stateName, state); - } - } - return state; - } - function setDefaultStateProxy(el) { - el.stateProxy = elementStateProxy; - var textContent = el.getTextContent(); - var textGuide = el.getTextGuideLine(); - if (textContent) { - textContent.stateProxy = elementStateProxy; - } - if (textGuide) { - textGuide.stateProxy = elementStateProxy; - } - } - function enterEmphasisWhenMouseOver(el, e2) { - !shouldSilent(el, e2) && !el.__highByOuter && traverseUpdateState(el, singleEnterEmphasis); - } - function leaveEmphasisWhenMouseOut(el, e2) { - !shouldSilent(el, e2) && !el.__highByOuter && traverseUpdateState(el, singleLeaveEmphasis); - } - function enterEmphasis(el, highlightDigit) { - el.__highByOuter |= 1 << (highlightDigit || 0); - traverseUpdateState(el, singleEnterEmphasis); - } - function leaveEmphasis(el, highlightDigit) { - !(el.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdateState(el, singleLeaveEmphasis); - } - function enterBlur(el) { - traverseUpdateState(el, singleEnterBlur); - } - function leaveBlur(el) { - traverseUpdateState(el, singleLeaveBlur); - } - function enterSelect(el) { - traverseUpdateState(el, singleEnterSelect); - } - function leaveSelect(el) { - traverseUpdateState(el, singleLeaveSelect); - } - function shouldSilent(el, e2) { - return el.__highDownSilentOnTouch && e2.zrByTouch; - } - function allLeaveBlur(api) { - var model = api.getModel(); - var leaveBlurredSeries = []; - var allComponentViews = []; - model.eachComponent(function(componentType, componentModel) { - var componentStates = getComponentStates(componentModel); - var isSeries2 = componentType === "series"; - var view = isSeries2 ? api.getViewOfSeriesModel(componentModel) : api.getViewOfComponentModel(componentModel); - !isSeries2 && allComponentViews.push(view); - if (componentStates.isBlured) { - view.group.traverse(function(child) { - singleLeaveBlur(child); - }); - isSeries2 && leaveBlurredSeries.push(componentModel); - } - componentStates.isBlured = false; - }); - each(allComponentViews, function(view) { - if (view && view.toggleBlurSeries) { - view.toggleBlurSeries(leaveBlurredSeries, false, model); - } - }); - } - function blurSeries(targetSeriesIndex, focus, blurScope, api) { - var ecModel = api.getModel(); - blurScope = blurScope || "coordinateSystem"; - function leaveBlurOfIndices(data, dataIndices) { - for (var i = 0; i < dataIndices.length; i++) { - var itemEl = data.getItemGraphicEl(dataIndices[i]); - itemEl && leaveBlur(itemEl); - } - } - if (targetSeriesIndex == null) { - return; - } - if (!focus || focus === "none") { - return; - } - var targetSeriesModel = ecModel.getSeriesByIndex(targetSeriesIndex); - var targetCoordSys = targetSeriesModel.coordinateSystem; - if (targetCoordSys && targetCoordSys.master) { - targetCoordSys = targetCoordSys.master; - } - var blurredSeries = []; - ecModel.eachSeries(function(seriesModel) { - var sameSeries = targetSeriesModel === seriesModel; - var coordSys = seriesModel.coordinateSystem; - if (coordSys && coordSys.master) { - coordSys = coordSys.master; - } - var sameCoordSys = coordSys && targetCoordSys ? coordSys === targetCoordSys : sameSeries; - if (!// Not blur other series if blurScope series - (blurScope === "series" && !sameSeries || blurScope === "coordinateSystem" && !sameCoordSys || focus === "series" && sameSeries)) { - var view = api.getViewOfSeriesModel(seriesModel); - view.group.traverse(function(child) { - if (child.__highByOuter && sameSeries && focus === "self") { - return; - } - singleEnterBlur(child); - }); - if (isArrayLike(focus)) { - leaveBlurOfIndices(seriesModel.getData(), focus); - } else if (isObject(focus)) { - var dataTypes = keys(focus); - for (var d = 0; d < dataTypes.length; d++) { - leaveBlurOfIndices(seriesModel.getData(dataTypes[d]), focus[dataTypes[d]]); - } - } - blurredSeries.push(seriesModel); - getComponentStates(seriesModel).isBlured = true; - } - }); - ecModel.eachComponent(function(componentType, componentModel) { - if (componentType === "series") { - return; - } - var view = api.getViewOfComponentModel(componentModel); - if (view && view.toggleBlurSeries) { - view.toggleBlurSeries(blurredSeries, true, ecModel); - } - }); - } - function blurComponent(componentMainType, componentIndex, api) { - if (componentMainType == null || componentIndex == null) { - return; - } - var componentModel = api.getModel().getComponent(componentMainType, componentIndex); - if (!componentModel) { - return; - } - getComponentStates(componentModel).isBlured = true; - var view = api.getViewOfComponentModel(componentModel); - if (!view || !view.focusBlurEnabled) { - return; - } - view.group.traverse(function(child) { - singleEnterBlur(child); - }); - } - function blurSeriesFromHighlightPayload(seriesModel, payload, api) { - var seriesIndex = seriesModel.seriesIndex; - var data = seriesModel.getData(payload.dataType); - if (!data) { - if (true) { - error("Unknown dataType " + payload.dataType); - } - return; - } - var dataIndex = queryDataIndex(data, payload); - dataIndex = (isArray(dataIndex) ? dataIndex[0] : dataIndex) || 0; - var el = data.getItemGraphicEl(dataIndex); - if (!el) { - var count2 = data.count(); - var current = 0; - while (!el && current < count2) { - el = data.getItemGraphicEl(current++); - } - } - if (el) { - var ecData = getECData(el); - blurSeries(seriesIndex, ecData.focus, ecData.blurScope, api); - } else { - var focus_1 = seriesModel.get(["emphasis", "focus"]); - var blurScope = seriesModel.get(["emphasis", "blurScope"]); - if (focus_1 != null) { - blurSeries(seriesIndex, focus_1, blurScope, api); - } - } - } - function findComponentHighDownDispatchers(componentMainType, componentIndex, name, api) { - var ret = { - focusSelf: false, - dispatchers: null - }; - if (componentMainType == null || componentMainType === "series" || componentIndex == null || name == null) { - return ret; - } - var componentModel = api.getModel().getComponent(componentMainType, componentIndex); - if (!componentModel) { - return ret; - } - var view = api.getViewOfComponentModel(componentModel); - if (!view || !view.findHighDownDispatchers) { - return ret; - } - var dispatchers = view.findHighDownDispatchers(name); - var focusSelf; - for (var i = 0; i < dispatchers.length; i++) { - if (!isHighDownDispatcher(dispatchers[i])) { - error("param should be highDownDispatcher"); - } - if (getECData(dispatchers[i]).focus === "self") { - focusSelf = true; - break; - } - } - return { - focusSelf, - dispatchers - }; - } - function handleGlobalMouseOverForHighDown(dispatcher, e2, api) { - if (!isHighDownDispatcher(dispatcher)) { - error("param should be highDownDispatcher"); - } - var ecData = getECData(dispatcher); - var _a2 = findComponentHighDownDispatchers(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api), dispatchers = _a2.dispatchers, focusSelf = _a2.focusSelf; - if (dispatchers) { - if (focusSelf) { - blurComponent(ecData.componentMainType, ecData.componentIndex, api); - } - each(dispatchers, function(dispatcher2) { - return enterEmphasisWhenMouseOver(dispatcher2, e2); - }); - } else { - blurSeries(ecData.seriesIndex, ecData.focus, ecData.blurScope, api); - if (ecData.focus === "self") { - blurComponent(ecData.componentMainType, ecData.componentIndex, api); - } - enterEmphasisWhenMouseOver(dispatcher, e2); - } - } - function handleGlobalMouseOutForHighDown(dispatcher, e2, api) { - if (!isHighDownDispatcher(dispatcher)) { - error("param should be highDownDispatcher"); - } - allLeaveBlur(api); - var ecData = getECData(dispatcher); - var dispatchers = findComponentHighDownDispatchers(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api).dispatchers; - if (dispatchers) { - each(dispatchers, function(dispatcher2) { - return leaveEmphasisWhenMouseOut(dispatcher2, e2); - }); - } else { - leaveEmphasisWhenMouseOut(dispatcher, e2); - } - } - function toggleSelectionFromPayload(seriesModel, payload, api) { - if (!isSelectChangePayload(payload)) { - return; - } - var dataType = payload.dataType; - var data = seriesModel.getData(dataType); - var dataIndex = queryDataIndex(data, payload); - if (!isArray(dataIndex)) { - dataIndex = [dataIndex]; - } - seriesModel[payload.type === TOGGLE_SELECT_ACTION_TYPE ? "toggleSelect" : payload.type === SELECT_ACTION_TYPE ? "select" : "unselect"](dataIndex, dataType); - } - function updateSeriesElementSelection(seriesModel) { - var allData = seriesModel.getAllData(); - each(allData, function(_a2) { - var data = _a2.data, type = _a2.type; - data.eachItemGraphicEl(function(el, idx) { - seriesModel.isSelected(idx, type) ? enterSelect(el) : leaveSelect(el); - }); - }); - } - function getAllSelectedIndices(ecModel) { - var ret = []; - ecModel.eachSeries(function(seriesModel) { - var allData = seriesModel.getAllData(); - each(allData, function(_a2) { - var data = _a2.data, type = _a2.type; - var dataIndices = seriesModel.getSelectedDataIndices(); - if (dataIndices.length > 0) { - var item = { - dataIndex: dataIndices, - seriesIndex: seriesModel.seriesIndex - }; - if (type != null) { - item.dataType = type; - } - ret.push(item); - } - }); - }); - return ret; - } - function enableHoverEmphasis(el, focus, blurScope) { - setAsHighDownDispatcher(el, true); - traverseUpdateState(el, setDefaultStateProxy); - enableHoverFocus(el, focus, blurScope); - } - function disableHoverEmphasis(el) { - setAsHighDownDispatcher(el, false); - } - function toggleHoverEmphasis(el, focus, blurScope, isDisabled) { - isDisabled ? disableHoverEmphasis(el) : enableHoverEmphasis(el, focus, blurScope); - } - function enableHoverFocus(el, focus, blurScope) { - var ecData = getECData(el); - if (focus != null) { - ecData.focus = focus; - ecData.blurScope = blurScope; - } else if (ecData.focus) { - ecData.focus = null; - } - } - var OTHER_STATES = ["emphasis", "blur", "select"]; - var defaultStyleGetterMap = { - itemStyle: "getItemStyle", - lineStyle: "getLineStyle", - areaStyle: "getAreaStyle" - }; - function setStatesStylesFromModel(el, itemModel, styleType, getter) { - styleType = styleType || "itemStyle"; - for (var i = 0; i < OTHER_STATES.length; i++) { - var stateName = OTHER_STATES[i]; - var model = itemModel.getModel([stateName, styleType]); - var state = el.ensureState(stateName); - state.style = getter ? getter(model) : model[defaultStyleGetterMap[styleType]](); - } - } - function setAsHighDownDispatcher(el, asDispatcher) { - var disable = asDispatcher === false; - var extendedEl = el; - if (el.highDownSilentOnTouch) { - extendedEl.__highDownSilentOnTouch = el.highDownSilentOnTouch; - } - if (!disable || extendedEl.__highDownDispatcher) { - extendedEl.__highByOuter = extendedEl.__highByOuter || 0; - extendedEl.__highDownDispatcher = !disable; - } - } - function isHighDownDispatcher(el) { - return !!(el && el.__highDownDispatcher); - } - function enableComponentHighDownFeatures(el, componentModel, componentHighDownName) { - var ecData = getECData(el); - ecData.componentMainType = componentModel.mainType; - ecData.componentIndex = componentModel.componentIndex; - ecData.componentHighDownName = componentHighDownName; - } - function getHighlightDigit(highlightKey) { - var highlightDigit = _highlightKeyMap[highlightKey]; - if (highlightDigit == null && _highlightNextDigit <= 32) { - highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++; - } - return highlightDigit; - } - function isSelectChangePayload(payload) { - var payloadType = payload.type; - return payloadType === SELECT_ACTION_TYPE || payloadType === UNSELECT_ACTION_TYPE || payloadType === TOGGLE_SELECT_ACTION_TYPE; - } - function isHighDownPayload(payload) { - var payloadType = payload.type; - return payloadType === HIGHLIGHT_ACTION_TYPE || payloadType === DOWNPLAY_ACTION_TYPE; - } - function savePathStates(el) { - var store = getSavedStates(el); - store.normalFill = el.style.fill; - store.normalStroke = el.style.stroke; - var selectState = el.states.select || {}; - store.selectFill = selectState.style && selectState.style.fill || null; - store.selectStroke = selectState.style && selectState.style.stroke || null; - } - - // node_modules/echarts/lib/util/graphic.js - var graphic_exports = {}; - __export(graphic_exports, { - Arc: () => Arc_default, - BezierCurve: () => BezierCurve_default, - BoundingRect: () => BoundingRect_default, - Circle: () => Circle_default, - CompoundPath: () => CompoundPath_default, - Ellipse: () => Ellipse_default, - Group: () => Group_default, - Image: () => Image_default, - IncrementalDisplayable: () => IncrementalDisplayable_default, - Line: () => Line_default, - LinearGradient: () => LinearGradient_default, - OrientedBoundingRect: () => OrientedBoundingRect_default, - Path: () => Path_default, - Point: () => Point_default, - Polygon: () => Polygon_default, - Polyline: () => Polyline_default, - RadialGradient: () => RadialGradient_default, - Rect: () => Rect_default, - Ring: () => Ring_default, - Sector: () => Sector_default, - Text: () => Text_default, - applyTransform: () => applyTransform2, - clipPointsByRect: () => clipPointsByRect, - clipRectByRect: () => clipRectByRect, - createIcon: () => createIcon, - extendPath: () => extendPath, - extendShape: () => extendShape, - getShapeClass: () => getShapeClass, - getTransform: () => getTransform, - groupTransition: () => groupTransition, - initProps: () => initProps, - isElementRemoved: () => isElementRemoved, - lineLineIntersect: () => lineLineIntersect, - linePolygonIntersect: () => linePolygonIntersect, - makeImage: () => makeImage, - makePath: () => makePath, - mergePath: () => mergePath2, - registerShape: () => registerShape, - removeElement: () => removeElement, - removeElementWithFadeOut: () => removeElementWithFadeOut, - resizePath: () => resizePath, - setTooltipConfig: () => setTooltipConfig, - subPixelOptimize: () => subPixelOptimize2, - subPixelOptimizeLine: () => subPixelOptimizeLine2, - subPixelOptimizeRect: () => subPixelOptimizeRect2, - transformDirection: () => transformDirection, - traverseElements: () => traverseElements, - updateProps: () => updateProps - }); - - // node_modules/zrender/lib/tool/transformPath.js - var CMD3 = PathProxy_default.CMD; - var points = [[], [], []]; - var mathSqrt2 = Math.sqrt; - var mathAtan2 = Math.atan2; - function transformPath(path, m2) { - if (!m2) { - return; - } - var data = path.data; - var len2 = path.len(); - var cmd; - var nPoint; - var i; - var j; - var k; - var p; - var M = CMD3.M; - var C = CMD3.C; - var L = CMD3.L; - var R = CMD3.R; - var A = CMD3.A; - var Q = CMD3.Q; - for (i = 0, j = 0; i < len2; ) { - cmd = data[i++]; - j = i; - nPoint = 0; - switch (cmd) { - case M: - nPoint = 1; - break; - case L: - nPoint = 1; - break; - case C: - nPoint = 3; - break; - case Q: - nPoint = 2; - break; - case A: - var x = m2[4]; - var y = m2[5]; - var sx = mathSqrt2(m2[0] * m2[0] + m2[1] * m2[1]); - var sy = mathSqrt2(m2[2] * m2[2] + m2[3] * m2[3]); - var angle = mathAtan2(-m2[1] / sy, m2[0] / sx); - data[i] *= sx; - data[i++] += x; - data[i] *= sy; - data[i++] += y; - data[i++] *= sx; - data[i++] *= sy; - data[i++] += angle; - data[i++] += angle; - i += 2; - j = i; - break; - case R: - p[0] = data[i++]; - p[1] = data[i++]; - applyTransform(p, p, m2); - data[j++] = p[0]; - data[j++] = p[1]; - p[0] += data[i++]; - p[1] += data[i++]; - applyTransform(p, p, m2); - data[j++] = p[0]; - data[j++] = p[1]; - } - for (k = 0; k < nPoint; k++) { - var p_1 = points[k]; - p_1[0] = data[i++]; - p_1[1] = data[i++]; - applyTransform(p_1, p_1, m2); - data[j++] = p_1[0]; - data[j++] = p_1[1]; - } - } - path.increaseVersion(); - } - - // node_modules/zrender/lib/tool/path.js - var mathSqrt3 = Math.sqrt; - var mathSin3 = Math.sin; - var mathCos3 = Math.cos; - var PI3 = Math.PI; - function vMag(v) { - return Math.sqrt(v[0] * v[0] + v[1] * v[1]); - } - function vRatio(u, v) { - return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)); - } - function vAngle(u, v) { - return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v)); - } - function processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) { - var psi = psiDeg * (PI3 / 180); - var xp = mathCos3(psi) * (x1 - x2) / 2 + mathSin3(psi) * (y1 - y2) / 2; - var yp = -1 * mathSin3(psi) * (x1 - x2) / 2 + mathCos3(psi) * (y1 - y2) / 2; - var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry); - if (lambda > 1) { - rx *= mathSqrt3(lambda); - ry *= mathSqrt3(lambda); - } - var f = (fa === fs ? -1 : 1) * mathSqrt3((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp))) || 0; - var cxp = f * rx * yp / ry; - var cyp = f * -ry * xp / rx; - var cx = (x1 + x2) / 2 + mathCos3(psi) * cxp - mathSin3(psi) * cyp; - var cy = (y1 + y2) / 2 + mathSin3(psi) * cxp + mathCos3(psi) * cyp; - var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]); - var u = [(xp - cxp) / rx, (yp - cyp) / ry]; - var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry]; - var dTheta = vAngle(u, v); - if (vRatio(u, v) <= -1) { - dTheta = PI3; - } - if (vRatio(u, v) >= 1) { - dTheta = 0; - } - if (dTheta < 0) { - var n = Math.round(dTheta / PI3 * 1e6) / 1e6; - dTheta = PI3 * 2 + n % 2 * PI3; - } - path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs); - } - var commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig; - var numberReg = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g; - function createPathProxyFromString(data) { - var path = new PathProxy_default(); - if (!data) { - return path; - } - var cpx = 0; - var cpy = 0; - var subpathX = cpx; - var subpathY = cpy; - var prevCmd; - var CMD6 = PathProxy_default.CMD; - var cmdList = data.match(commandReg); - if (!cmdList) { - return path; - } - for (var l = 0; l < cmdList.length; l++) { - var cmdText = cmdList[l]; - var cmdStr = cmdText.charAt(0); - var cmd = void 0; - var p = cmdText.match(numberReg) || []; - var pLen = p.length; - for (var i = 0; i < pLen; i++) { - p[i] = parseFloat(p[i]); - } - var off = 0; - while (off < pLen) { - var ctlPtx = void 0; - var ctlPty = void 0; - var rx = void 0; - var ry = void 0; - var psi = void 0; - var fa = void 0; - var fs = void 0; - var x1 = cpx; - var y1 = cpy; - var len2 = void 0; - var pathData = void 0; - switch (cmdStr) { - case "l": - cpx += p[off++]; - cpy += p[off++]; - cmd = CMD6.L; - path.addData(cmd, cpx, cpy); - break; - case "L": - cpx = p[off++]; - cpy = p[off++]; - cmd = CMD6.L; - path.addData(cmd, cpx, cpy); - break; - case "m": - cpx += p[off++]; - cpy += p[off++]; - cmd = CMD6.M; - path.addData(cmd, cpx, cpy); - subpathX = cpx; - subpathY = cpy; - cmdStr = "l"; - break; - case "M": - cpx = p[off++]; - cpy = p[off++]; - cmd = CMD6.M; - path.addData(cmd, cpx, cpy); - subpathX = cpx; - subpathY = cpy; - cmdStr = "L"; - break; - case "h": - cpx += p[off++]; - cmd = CMD6.L; - path.addData(cmd, cpx, cpy); - break; - case "H": - cpx = p[off++]; - cmd = CMD6.L; - path.addData(cmd, cpx, cpy); - break; - case "v": - cpy += p[off++]; - cmd = CMD6.L; - path.addData(cmd, cpx, cpy); - break; - case "V": - cpy = p[off++]; - cmd = CMD6.L; - path.addData(cmd, cpx, cpy); - break; - case "C": - cmd = CMD6.C; - path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]); - cpx = p[off - 2]; - cpy = p[off - 1]; - break; - case "c": - cmd = CMD6.C; - path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy); - cpx += p[off - 2]; - cpy += p[off - 1]; - break; - case "S": - ctlPtx = cpx; - ctlPty = cpy; - len2 = path.len(); - pathData = path.data; - if (prevCmd === CMD6.C) { - ctlPtx += cpx - pathData[len2 - 4]; - ctlPty += cpy - pathData[len2 - 3]; - } - cmd = CMD6.C; - x1 = p[off++]; - y1 = p[off++]; - cpx = p[off++]; - cpy = p[off++]; - path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy); - break; - case "s": - ctlPtx = cpx; - ctlPty = cpy; - len2 = path.len(); - pathData = path.data; - if (prevCmd === CMD6.C) { - ctlPtx += cpx - pathData[len2 - 4]; - ctlPty += cpy - pathData[len2 - 3]; - } - cmd = CMD6.C; - x1 = cpx + p[off++]; - y1 = cpy + p[off++]; - cpx += p[off++]; - cpy += p[off++]; - path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy); - break; - case "Q": - x1 = p[off++]; - y1 = p[off++]; - cpx = p[off++]; - cpy = p[off++]; - cmd = CMD6.Q; - path.addData(cmd, x1, y1, cpx, cpy); - break; - case "q": - x1 = p[off++] + cpx; - y1 = p[off++] + cpy; - cpx += p[off++]; - cpy += p[off++]; - cmd = CMD6.Q; - path.addData(cmd, x1, y1, cpx, cpy); - break; - case "T": - ctlPtx = cpx; - ctlPty = cpy; - len2 = path.len(); - pathData = path.data; - if (prevCmd === CMD6.Q) { - ctlPtx += cpx - pathData[len2 - 4]; - ctlPty += cpy - pathData[len2 - 3]; - } - cpx = p[off++]; - cpy = p[off++]; - cmd = CMD6.Q; - path.addData(cmd, ctlPtx, ctlPty, cpx, cpy); - break; - case "t": - ctlPtx = cpx; - ctlPty = cpy; - len2 = path.len(); - pathData = path.data; - if (prevCmd === CMD6.Q) { - ctlPtx += cpx - pathData[len2 - 4]; - ctlPty += cpy - pathData[len2 - 3]; - } - cpx += p[off++]; - cpy += p[off++]; - cmd = CMD6.Q; - path.addData(cmd, ctlPtx, ctlPty, cpx, cpy); - break; - case "A": - rx = p[off++]; - ry = p[off++]; - psi = p[off++]; - fa = p[off++]; - fs = p[off++]; - x1 = cpx, y1 = cpy; - cpx = p[off++]; - cpy = p[off++]; - cmd = CMD6.A; - processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path); - break; - case "a": - rx = p[off++]; - ry = p[off++]; - psi = p[off++]; - fa = p[off++]; - fs = p[off++]; - x1 = cpx, y1 = cpy; - cpx += p[off++]; - cpy += p[off++]; - cmd = CMD6.A; - processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path); - break; - } - } - if (cmdStr === "z" || cmdStr === "Z") { - cmd = CMD6.Z; - path.addData(cmd); - cpx = subpathX; - cpy = subpathY; - } - prevCmd = cmd; - } - path.toStatic(); - return path; - } - var SVGPath = function(_super) { - __extends(SVGPath2, _super); - function SVGPath2() { - return _super !== null && _super.apply(this, arguments) || this; - } - SVGPath2.prototype.applyTransform = function(m2) { - }; - return SVGPath2; - }(Path_default); - function isPathProxy(path) { - return path.setData != null; - } - function createPathOptions(str, opts) { - var pathProxy = createPathProxyFromString(str); - var innerOpts = extend({}, opts); - innerOpts.buildPath = function(path) { - if (isPathProxy(path)) { - path.setData(pathProxy.data); - var ctx = path.getContext(); - if (ctx) { - path.rebuildPath(ctx, 1); - } - } else { - var ctx = path; - pathProxy.rebuildPath(ctx, 1); - } - }; - innerOpts.applyTransform = function(m2) { - transformPath(pathProxy, m2); - this.dirtyShape(); - }; - return innerOpts; - } - function createFromString(str, opts) { - return new SVGPath(createPathOptions(str, opts)); - } - function extendFromString(str, defaultOpts) { - var innerOpts = createPathOptions(str, defaultOpts); - var Sub = function(_super) { - __extends(Sub2, _super); - function Sub2(opts) { - var _this = _super.call(this, opts) || this; - _this.applyTransform = innerOpts.applyTransform; - _this.buildPath = innerOpts.buildPath; - return _this; - } - return Sub2; - }(SVGPath); - return Sub; - } - function mergePath(pathEls, opts) { - var pathList = []; - var len2 = pathEls.length; - for (var i = 0; i < len2; i++) { - var pathEl = pathEls[i]; - pathList.push(pathEl.getUpdatedPathProxy(true)); - } - var pathBundle = new Path_default(opts); - pathBundle.createPathProxy(); - pathBundle.buildPath = function(path) { - if (isPathProxy(path)) { - path.appendPath(pathList); - var ctx = path.getContext(); - if (ctx) { - path.rebuildPath(ctx, 1); - } - } - }; - return pathBundle; - } - function clonePath(sourcePath, opts) { - opts = opts || {}; - var path = new Path_default(); - if (sourcePath.shape) { - path.setShape(sourcePath.shape); - } - path.setStyle(sourcePath.style); - if (opts.bakeTransform) { - transformPath(path.path, sourcePath.getComputedTransform()); - } else { - if (opts.toLocal) { - path.setLocalTransform(sourcePath.getComputedTransform()); - } else { - path.copyTransform(sourcePath); - } - } - path.buildPath = sourcePath.buildPath; - path.applyTransform = path.applyTransform; - path.z = sourcePath.z; - path.z2 = sourcePath.z2; - path.zlevel = sourcePath.zlevel; - return path; - } - - // node_modules/zrender/lib/graphic/shape/Circle.js - var CircleShape = /* @__PURE__ */ function() { - function CircleShape2() { - this.cx = 0; - this.cy = 0; - this.r = 0; - } - return CircleShape2; - }(); - var Circle = function(_super) { - __extends(Circle2, _super); - function Circle2(opts) { - return _super.call(this, opts) || this; - } - Circle2.prototype.getDefaultShape = function() { - return new CircleShape(); - }; - Circle2.prototype.buildPath = function(ctx, shape) { - ctx.moveTo(shape.cx + shape.r, shape.cy); - ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2); - }; - return Circle2; - }(Path_default); - Circle.prototype.type = "circle"; - var Circle_default = Circle; - - // node_modules/zrender/lib/graphic/shape/Ellipse.js - var EllipseShape = /* @__PURE__ */ function() { - function EllipseShape2() { - this.cx = 0; - this.cy = 0; - this.rx = 0; - this.ry = 0; - } - return EllipseShape2; - }(); - var Ellipse = function(_super) { - __extends(Ellipse2, _super); - function Ellipse2(opts) { - return _super.call(this, opts) || this; - } - Ellipse2.prototype.getDefaultShape = function() { - return new EllipseShape(); - }; - Ellipse2.prototype.buildPath = function(ctx, shape) { - var k = 0.5522848; - var x = shape.cx; - var y = shape.cy; - var a = shape.rx; - var b = shape.ry; - var ox = a * k; - var oy = b * k; - ctx.moveTo(x - a, y); - ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b); - ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y); - ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b); - ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y); - ctx.closePath(); - }; - return Ellipse2; - }(Path_default); - Ellipse.prototype.type = "ellipse"; - var Ellipse_default = Ellipse; - - // node_modules/zrender/lib/graphic/helper/roundSector.js - var PI4 = Math.PI; - var PI26 = PI4 * 2; - var mathSin4 = Math.sin; - var mathCos4 = Math.cos; - var mathACos = Math.acos; - var mathATan2 = Math.atan2; - var mathAbs2 = Math.abs; - var mathSqrt4 = Math.sqrt; - var mathMax4 = Math.max; - var mathMin4 = Math.min; - var e = 1e-4; - function intersect(x0, y0, x1, y1, x2, y2, x3, y3) { - var dx10 = x1 - x0; - var dy10 = y1 - y0; - var dx32 = x3 - x2; - var dy32 = y3 - y2; - var t = dy32 * dx10 - dx32 * dy10; - if (t * t < e) { - return; - } - t = (dx32 * (y0 - y2) - dy32 * (x0 - x2)) / t; - return [x0 + t * dx10, y0 + t * dy10]; - } - function computeCornerTangents(x0, y0, x1, y1, radius, cr, clockwise) { - var x01 = x0 - x1; - var y01 = y0 - y1; - var lo = (clockwise ? cr : -cr) / mathSqrt4(x01 * x01 + y01 * y01); - var ox = lo * y01; - var oy = -lo * x01; - var x11 = x0 + ox; - var y11 = y0 + oy; - var x10 = x1 + ox; - var y10 = y1 + oy; - var x00 = (x11 + x10) / 2; - var y00 = (y11 + y10) / 2; - var dx = x10 - x11; - var dy = y10 - y11; - var d2 = dx * dx + dy * dy; - var r = radius - cr; - var s = x11 * y10 - x10 * y11; - var d = (dy < 0 ? -1 : 1) * mathSqrt4(mathMax4(0, r * r * d2 - s * s)); - var cx0 = (s * dy - dx * d) / d2; - var cy0 = (-s * dx - dy * d) / d2; - var cx1 = (s * dy + dx * d) / d2; - var cy1 = (-s * dx + dy * d) / d2; - var dx0 = cx0 - x00; - var dy0 = cy0 - y00; - var dx1 = cx1 - x00; - var dy1 = cy1 - y00; - if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) { - cx0 = cx1; - cy0 = cy1; - } - return { - cx: cx0, - cy: cy0, - x0: -ox, - y0: -oy, - x1: cx0 * (radius / r - 1), - y1: cy0 * (radius / r - 1) - }; - } - function normalizeCornerRadius(cr) { - var arr; - if (isArray(cr)) { - var len2 = cr.length; - if (!len2) { - return cr; - } - if (len2 === 1) { - arr = [cr[0], cr[0], 0, 0]; - } else if (len2 === 2) { - arr = [cr[0], cr[0], cr[1], cr[1]]; - } else if (len2 === 3) { - arr = cr.concat(cr[2]); - } else { - arr = cr; - } - } else { - arr = [cr, cr, cr, cr]; - } - return arr; - } - function buildPath2(ctx, shape) { - var _a2; - var radius = mathMax4(shape.r, 0); - var innerRadius = mathMax4(shape.r0 || 0, 0); - var hasRadius = radius > 0; - var hasInnerRadius = innerRadius > 0; - if (!hasRadius && !hasInnerRadius) { - return; - } - if (!hasRadius) { - radius = innerRadius; - innerRadius = 0; - } - if (innerRadius > radius) { - var tmp = radius; - radius = innerRadius; - innerRadius = tmp; - } - var startAngle = shape.startAngle, endAngle = shape.endAngle; - if (isNaN(startAngle) || isNaN(endAngle)) { - return; - } - var cx = shape.cx, cy = shape.cy; - var clockwise = !!shape.clockwise; - var arc = mathAbs2(endAngle - startAngle); - var mod = arc > PI26 && arc % PI26; - mod > e && (arc = mod); - if (!(radius > e)) { - ctx.moveTo(cx, cy); - } else if (arc > PI26 - e) { - ctx.moveTo(cx + radius * mathCos4(startAngle), cy + radius * mathSin4(startAngle)); - ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise); - if (innerRadius > e) { - ctx.moveTo(cx + innerRadius * mathCos4(endAngle), cy + innerRadius * mathSin4(endAngle)); - ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise); - } - } else { - var icrStart = void 0; - var icrEnd = void 0; - var ocrStart = void 0; - var ocrEnd = void 0; - var ocrs = void 0; - var ocre = void 0; - var icrs = void 0; - var icre = void 0; - var ocrMax = void 0; - var icrMax = void 0; - var limitedOcrMax = void 0; - var limitedIcrMax = void 0; - var xre = void 0; - var yre = void 0; - var xirs = void 0; - var yirs = void 0; - var xrs = radius * mathCos4(startAngle); - var yrs = radius * mathSin4(startAngle); - var xire = innerRadius * mathCos4(endAngle); - var yire = innerRadius * mathSin4(endAngle); - var hasArc = arc > e; - if (hasArc) { - var cornerRadius = shape.cornerRadius; - if (cornerRadius) { - _a2 = normalizeCornerRadius(cornerRadius), icrStart = _a2[0], icrEnd = _a2[1], ocrStart = _a2[2], ocrEnd = _a2[3]; - } - var halfRd = mathAbs2(radius - innerRadius) / 2; - ocrs = mathMin4(halfRd, ocrStart); - ocre = mathMin4(halfRd, ocrEnd); - icrs = mathMin4(halfRd, icrStart); - icre = mathMin4(halfRd, icrEnd); - limitedOcrMax = ocrMax = mathMax4(ocrs, ocre); - limitedIcrMax = icrMax = mathMax4(icrs, icre); - if (ocrMax > e || icrMax > e) { - xre = radius * mathCos4(endAngle); - yre = radius * mathSin4(endAngle); - xirs = innerRadius * mathCos4(startAngle); - yirs = innerRadius * mathSin4(startAngle); - if (arc < PI4) { - var it_1 = intersect(xrs, yrs, xirs, yirs, xre, yre, xire, yire); - if (it_1) { - var x0 = xrs - it_1[0]; - var y0 = yrs - it_1[1]; - var x1 = xre - it_1[0]; - var y1 = yre - it_1[1]; - var a = 1 / mathSin4(mathACos((x0 * x1 + y0 * y1) / (mathSqrt4(x0 * x0 + y0 * y0) * mathSqrt4(x1 * x1 + y1 * y1))) / 2); - var b = mathSqrt4(it_1[0] * it_1[0] + it_1[1] * it_1[1]); - limitedOcrMax = mathMin4(ocrMax, (radius - b) / (a + 1)); - limitedIcrMax = mathMin4(icrMax, (innerRadius - b) / (a - 1)); - } - } - } - } - if (!hasArc) { - ctx.moveTo(cx + xrs, cy + yrs); - } else if (limitedOcrMax > e) { - var crStart = mathMin4(ocrStart, limitedOcrMax); - var crEnd = mathMin4(ocrEnd, limitedOcrMax); - var ct0 = computeCornerTangents(xirs, yirs, xrs, yrs, radius, crStart, clockwise); - var ct1 = computeCornerTangents(xre, yre, xire, yire, radius, crEnd, clockwise); - ctx.moveTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0); - if (limitedOcrMax < ocrMax && crStart === crEnd) { - ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedOcrMax, mathATan2(ct0.y0, ct0.x0), mathATan2(ct1.y0, ct1.x0), !clockwise); - } else { - crStart > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crStart, mathATan2(ct0.y0, ct0.x0), mathATan2(ct0.y1, ct0.x1), !clockwise); - ctx.arc(cx, cy, radius, mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1), !clockwise); - crEnd > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crEnd, mathATan2(ct1.y1, ct1.x1), mathATan2(ct1.y0, ct1.x0), !clockwise); - } - } else { - ctx.moveTo(cx + xrs, cy + yrs); - ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise); - } - if (!(innerRadius > e) || !hasArc) { - ctx.lineTo(cx + xire, cy + yire); - } else if (limitedIcrMax > e) { - var crStart = mathMin4(icrStart, limitedIcrMax); - var crEnd = mathMin4(icrEnd, limitedIcrMax); - var ct0 = computeCornerTangents(xire, yire, xre, yre, innerRadius, -crEnd, clockwise); - var ct1 = computeCornerTangents(xrs, yrs, xirs, yirs, innerRadius, -crStart, clockwise); - ctx.lineTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0); - if (limitedIcrMax < icrMax && crStart === crEnd) { - ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedIcrMax, mathATan2(ct0.y0, ct0.x0), mathATan2(ct1.y0, ct1.x0), !clockwise); - } else { - crEnd > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crEnd, mathATan2(ct0.y0, ct0.x0), mathATan2(ct0.y1, ct0.x1), !clockwise); - ctx.arc(cx, cy, innerRadius, mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1), clockwise); - crStart > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crStart, mathATan2(ct1.y1, ct1.x1), mathATan2(ct1.y0, ct1.x0), !clockwise); - } - } else { - ctx.lineTo(cx + xire, cy + yire); - ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise); - } - } - ctx.closePath(); - } - - // node_modules/zrender/lib/graphic/shape/Sector.js - var SectorShape = /* @__PURE__ */ function() { - function SectorShape2() { - this.cx = 0; - this.cy = 0; - this.r0 = 0; - this.r = 0; - this.startAngle = 0; - this.endAngle = Math.PI * 2; - this.clockwise = true; - this.cornerRadius = 0; - } - return SectorShape2; - }(); - var Sector = function(_super) { - __extends(Sector2, _super); - function Sector2(opts) { - return _super.call(this, opts) || this; - } - Sector2.prototype.getDefaultShape = function() { - return new SectorShape(); - }; - Sector2.prototype.buildPath = function(ctx, shape) { - buildPath2(ctx, shape); - }; - Sector2.prototype.isZeroArea = function() { - return this.shape.startAngle === this.shape.endAngle || this.shape.r === this.shape.r0; - }; - return Sector2; - }(Path_default); - Sector.prototype.type = "sector"; - var Sector_default = Sector; - - // node_modules/zrender/lib/graphic/shape/Ring.js - var RingShape = /* @__PURE__ */ function() { - function RingShape2() { - this.cx = 0; - this.cy = 0; - this.r = 0; - this.r0 = 0; - } - return RingShape2; - }(); - var Ring = function(_super) { - __extends(Ring2, _super); - function Ring2(opts) { - return _super.call(this, opts) || this; - } - Ring2.prototype.getDefaultShape = function() { - return new RingShape(); - }; - Ring2.prototype.buildPath = function(ctx, shape) { - var x = shape.cx; - var y = shape.cy; - var PI210 = Math.PI * 2; - ctx.moveTo(x + shape.r, y); - ctx.arc(x, y, shape.r, 0, PI210, false); - ctx.moveTo(x + shape.r0, y); - ctx.arc(x, y, shape.r0, 0, PI210, true); - }; - return Ring2; - }(Path_default); - Ring.prototype.type = "ring"; - var Ring_default = Ring; - - // node_modules/zrender/lib/graphic/helper/smoothBezier.js - function smoothBezier(points4, smooth, isLoop, constraint) { - var cps = []; - var v = []; - var v12 = []; - var v22 = []; - var prevPoint; - var nextPoint; - var min4; - var max4; - if (constraint) { - min4 = [Infinity, Infinity]; - max4 = [-Infinity, -Infinity]; - for (var i = 0, len2 = points4.length; i < len2; i++) { - min(min4, min4, points4[i]); - max(max4, max4, points4[i]); - } - min(min4, min4, constraint[0]); - max(max4, max4, constraint[1]); - } - for (var i = 0, len2 = points4.length; i < len2; i++) { - var point = points4[i]; - if (isLoop) { - prevPoint = points4[i ? i - 1 : len2 - 1]; - nextPoint = points4[(i + 1) % len2]; - } else { - if (i === 0 || i === len2 - 1) { - cps.push(clone2(points4[i])); - continue; - } else { - prevPoint = points4[i - 1]; - nextPoint = points4[i + 1]; - } - } - sub(v, nextPoint, prevPoint); - scale(v, v, smooth); - var d0 = distance(point, prevPoint); - var d1 = distance(point, nextPoint); - var sum2 = d0 + d1; - if (sum2 !== 0) { - d0 /= sum2; - d1 /= sum2; - } - scale(v12, v, -d0); - scale(v22, v, d1); - var cp0 = add([], point, v12); - var cp1 = add([], point, v22); - if (constraint) { - max(cp0, cp0, min4); - min(cp0, cp0, max4); - max(cp1, cp1, min4); - min(cp1, cp1, max4); - } - cps.push(cp0); - cps.push(cp1); - } - if (isLoop) { - cps.push(cps.shift()); - } - return cps; - } - - // node_modules/zrender/lib/graphic/helper/poly.js - function buildPath3(ctx, shape, closePath) { - var smooth = shape.smooth; - var points4 = shape.points; - if (points4 && points4.length >= 2) { - if (smooth) { - var controlPoints = smoothBezier(points4, smooth, closePath, shape.smoothConstraint); - ctx.moveTo(points4[0][0], points4[0][1]); - var len2 = points4.length; - for (var i = 0; i < (closePath ? len2 : len2 - 1); i++) { - var cp1 = controlPoints[i * 2]; - var cp2 = controlPoints[i * 2 + 1]; - var p = points4[(i + 1) % len2]; - ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]); - } - } else { - ctx.moveTo(points4[0][0], points4[0][1]); - for (var i = 1, l = points4.length; i < l; i++) { - ctx.lineTo(points4[i][0], points4[i][1]); - } - } - closePath && ctx.closePath(); - } - } - - // node_modules/zrender/lib/graphic/shape/Polygon.js - var PolygonShape = /* @__PURE__ */ function() { - function PolygonShape2() { - this.points = null; - this.smooth = 0; - this.smoothConstraint = null; - } - return PolygonShape2; - }(); - var Polygon = function(_super) { - __extends(Polygon2, _super); - function Polygon2(opts) { - return _super.call(this, opts) || this; - } - Polygon2.prototype.getDefaultShape = function() { - return new PolygonShape(); - }; - Polygon2.prototype.buildPath = function(ctx, shape) { - buildPath3(ctx, shape, true); - }; - return Polygon2; - }(Path_default); - Polygon.prototype.type = "polygon"; - var Polygon_default = Polygon; - - // node_modules/zrender/lib/graphic/shape/Polyline.js - var PolylineShape = /* @__PURE__ */ function() { - function PolylineShape2() { - this.points = null; - this.percent = 1; - this.smooth = 0; - this.smoothConstraint = null; - } - return PolylineShape2; - }(); - var Polyline = function(_super) { - __extends(Polyline3, _super); - function Polyline3(opts) { - return _super.call(this, opts) || this; - } - Polyline3.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - Polyline3.prototype.getDefaultShape = function() { - return new PolylineShape(); - }; - Polyline3.prototype.buildPath = function(ctx, shape) { - buildPath3(ctx, shape, false); - }; - return Polyline3; - }(Path_default); - Polyline.prototype.type = "polyline"; - var Polyline_default = Polyline; - - // node_modules/zrender/lib/graphic/shape/Line.js - var subPixelOptimizeOutputShape2 = {}; - var LineShape = /* @__PURE__ */ function() { - function LineShape2() { - this.x1 = 0; - this.y1 = 0; - this.x2 = 0; - this.y2 = 0; - this.percent = 1; - } - return LineShape2; - }(); - var Line = function(_super) { - __extends(Line3, _super); - function Line3(opts) { - return _super.call(this, opts) || this; - } - Line3.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - Line3.prototype.getDefaultShape = function() { - return new LineShape(); - }; - Line3.prototype.buildPath = function(ctx, shape) { - var x1; - var y1; - var x2; - var y2; - if (this.subPixelOptimize) { - var optimizedShape = subPixelOptimizeLine(subPixelOptimizeOutputShape2, shape, this.style); - x1 = optimizedShape.x1; - y1 = optimizedShape.y1; - x2 = optimizedShape.x2; - y2 = optimizedShape.y2; - } else { - x1 = shape.x1; - y1 = shape.y1; - x2 = shape.x2; - y2 = shape.y2; - } - var percent = shape.percent; - if (percent === 0) { - return; - } - ctx.moveTo(x1, y1); - if (percent < 1) { - x2 = x1 * (1 - percent) + x2 * percent; - y2 = y1 * (1 - percent) + y2 * percent; - } - ctx.lineTo(x2, y2); - }; - Line3.prototype.pointAt = function(p) { - var shape = this.shape; - return [ - shape.x1 * (1 - p) + shape.x2 * p, - shape.y1 * (1 - p) + shape.y2 * p - ]; - }; - return Line3; - }(Path_default); - Line.prototype.type = "line"; - var Line_default = Line; - - // node_modules/zrender/lib/graphic/shape/BezierCurve.js - var out = []; - var BezierCurveShape = /* @__PURE__ */ function() { - function BezierCurveShape2() { - this.x1 = 0; - this.y1 = 0; - this.x2 = 0; - this.y2 = 0; - this.cpx1 = 0; - this.cpy1 = 0; - this.percent = 1; - } - return BezierCurveShape2; - }(); - function someVectorAt(shape, t, isTangent) { - var cpx2 = shape.cpx2; - var cpy2 = shape.cpy2; - if (cpx2 != null || cpy2 != null) { - return [ - (isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t), - (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t) - ]; - } else { - return [ - (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t), - (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t) - ]; - } - } - var BezierCurve = function(_super) { - __extends(BezierCurve2, _super); - function BezierCurve2(opts) { - return _super.call(this, opts) || this; - } - BezierCurve2.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - BezierCurve2.prototype.getDefaultShape = function() { - return new BezierCurveShape(); - }; - BezierCurve2.prototype.buildPath = function(ctx, shape) { - var x1 = shape.x1; - var y1 = shape.y1; - var x2 = shape.x2; - var y2 = shape.y2; - var cpx1 = shape.cpx1; - var cpy1 = shape.cpy1; - var cpx2 = shape.cpx2; - var cpy2 = shape.cpy2; - var percent = shape.percent; - if (percent === 0) { - return; - } - ctx.moveTo(x1, y1); - if (cpx2 == null || cpy2 == null) { - if (percent < 1) { - quadraticSubdivide(x1, cpx1, x2, percent, out); - cpx1 = out[1]; - x2 = out[2]; - quadraticSubdivide(y1, cpy1, y2, percent, out); - cpy1 = out[1]; - y2 = out[2]; - } - ctx.quadraticCurveTo(cpx1, cpy1, x2, y2); - } else { - if (percent < 1) { - cubicSubdivide(x1, cpx1, cpx2, x2, percent, out); - cpx1 = out[1]; - cpx2 = out[2]; - x2 = out[3]; - cubicSubdivide(y1, cpy1, cpy2, y2, percent, out); - cpy1 = out[1]; - cpy2 = out[2]; - y2 = out[3]; - } - ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2); - } - }; - BezierCurve2.prototype.pointAt = function(t) { - return someVectorAt(this.shape, t, false); - }; - BezierCurve2.prototype.tangentAt = function(t) { - var p = someVectorAt(this.shape, t, true); - return normalize(p, p); - }; - return BezierCurve2; - }(Path_default); - BezierCurve.prototype.type = "bezier-curve"; - var BezierCurve_default = BezierCurve; - - // node_modules/zrender/lib/graphic/shape/Arc.js - var ArcShape = /* @__PURE__ */ function() { - function ArcShape2() { - this.cx = 0; - this.cy = 0; - this.r = 0; - this.startAngle = 0; - this.endAngle = Math.PI * 2; - this.clockwise = true; - } - return ArcShape2; - }(); - var Arc = function(_super) { - __extends(Arc2, _super); - function Arc2(opts) { - return _super.call(this, opts) || this; - } - Arc2.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - Arc2.prototype.getDefaultShape = function() { - return new ArcShape(); - }; - Arc2.prototype.buildPath = function(ctx, shape) { - var x = shape.cx; - var y = shape.cy; - var r = Math.max(shape.r, 0); - var startAngle = shape.startAngle; - var endAngle = shape.endAngle; - var clockwise = shape.clockwise; - var unitX = Math.cos(startAngle); - var unitY = Math.sin(startAngle); - ctx.moveTo(unitX * r + x, unitY * r + y); - ctx.arc(x, y, r, startAngle, endAngle, !clockwise); - }; - return Arc2; - }(Path_default); - Arc.prototype.type = "arc"; - var Arc_default = Arc; - - // node_modules/zrender/lib/graphic/CompoundPath.js - var CompoundPath = function(_super) { - __extends(CompoundPath2, _super); - function CompoundPath2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "compound"; - return _this; - } - CompoundPath2.prototype._updatePathDirty = function() { - var paths = this.shape.paths; - var dirtyPath = this.shapeChanged(); - for (var i = 0; i < paths.length; i++) { - dirtyPath = dirtyPath || paths[i].shapeChanged(); - } - if (dirtyPath) { - this.dirtyShape(); - } - }; - CompoundPath2.prototype.beforeBrush = function() { - this._updatePathDirty(); - var paths = this.shape.paths || []; - var scale4 = this.getGlobalScale(); - for (var i = 0; i < paths.length; i++) { - if (!paths[i].path) { - paths[i].createPathProxy(); - } - paths[i].path.setScale(scale4[0], scale4[1], paths[i].segmentIgnoreThreshold); - } - }; - CompoundPath2.prototype.buildPath = function(ctx, shape) { - var paths = shape.paths || []; - for (var i = 0; i < paths.length; i++) { - paths[i].buildPath(ctx, paths[i].shape, true); - } - }; - CompoundPath2.prototype.afterBrush = function() { - var paths = this.shape.paths || []; - for (var i = 0; i < paths.length; i++) { - paths[i].pathUpdated(); - } - }; - CompoundPath2.prototype.getBoundingRect = function() { - this._updatePathDirty.call(this); - return Path_default.prototype.getBoundingRect.call(this); - }; - return CompoundPath2; - }(Path_default); - var CompoundPath_default = CompoundPath; - - // node_modules/zrender/lib/graphic/Gradient.js - var Gradient = function() { - function Gradient2(colorStops) { - this.colorStops = colorStops || []; - } - Gradient2.prototype.addColorStop = function(offset3, color) { - this.colorStops.push({ - offset: offset3, - color - }); - }; - return Gradient2; - }(); - var Gradient_default = Gradient; - - // node_modules/zrender/lib/graphic/LinearGradient.js - var LinearGradient = function(_super) { - __extends(LinearGradient2, _super); - function LinearGradient2(x, y, x2, y2, colorStops, globalCoord) { - var _this = _super.call(this, colorStops) || this; - _this.x = x == null ? 0 : x; - _this.y = y == null ? 0 : y; - _this.x2 = x2 == null ? 1 : x2; - _this.y2 = y2 == null ? 0 : y2; - _this.type = "linear"; - _this.global = globalCoord || false; - return _this; - } - return LinearGradient2; - }(Gradient_default); - var LinearGradient_default = LinearGradient; - - // node_modules/zrender/lib/graphic/RadialGradient.js - var RadialGradient = function(_super) { - __extends(RadialGradient2, _super); - function RadialGradient2(x, y, r, colorStops, globalCoord) { - var _this = _super.call(this, colorStops) || this; - _this.x = x == null ? 0.5 : x; - _this.y = y == null ? 0.5 : y; - _this.r = r == null ? 0.5 : r; - _this.type = "radial"; - _this.global = globalCoord || false; - return _this; - } - return RadialGradient2; - }(Gradient_default); - var RadialGradient_default = RadialGradient; - - // node_modules/zrender/lib/core/OrientedBoundingRect.js - var extent = [0, 0]; - var extent2 = [0, 0]; - var minTv2 = new Point_default(); - var maxTv2 = new Point_default(); - var OrientedBoundingRect = function() { - function OrientedBoundingRect2(rect, transform2) { - this._corners = []; - this._axes = []; - this._origin = [0, 0]; - for (var i = 0; i < 4; i++) { - this._corners[i] = new Point_default(); - } - for (var i = 0; i < 2; i++) { - this._axes[i] = new Point_default(); - } - if (rect) { - this.fromBoundingRect(rect, transform2); - } - } - OrientedBoundingRect2.prototype.fromBoundingRect = function(rect, transform2) { - var corners = this._corners; - var axes = this._axes; - var x = rect.x; - var y = rect.y; - var x2 = x + rect.width; - var y2 = y + rect.height; - corners[0].set(x, y); - corners[1].set(x2, y); - corners[2].set(x2, y2); - corners[3].set(x, y2); - if (transform2) { - for (var i = 0; i < 4; i++) { - corners[i].transform(transform2); - } - } - Point_default.sub(axes[0], corners[1], corners[0]); - Point_default.sub(axes[1], corners[3], corners[0]); - axes[0].normalize(); - axes[1].normalize(); - for (var i = 0; i < 2; i++) { - this._origin[i] = axes[i].dot(corners[0]); - } - }; - OrientedBoundingRect2.prototype.intersect = function(other, mtv) { - var overlapped = true; - var noMtv = !mtv; - minTv2.set(Infinity, Infinity); - maxTv2.set(0, 0); - if (!this._intersectCheckOneSide(this, other, minTv2, maxTv2, noMtv, 1)) { - overlapped = false; - if (noMtv) { - return overlapped; - } - } - if (!this._intersectCheckOneSide(other, this, minTv2, maxTv2, noMtv, -1)) { - overlapped = false; - if (noMtv) { - return overlapped; - } - } - if (!noMtv) { - Point_default.copy(mtv, overlapped ? minTv2 : maxTv2); - } - return overlapped; - }; - OrientedBoundingRect2.prototype._intersectCheckOneSide = function(self2, other, minTv3, maxTv3, noMtv, inverse) { - var overlapped = true; - for (var i = 0; i < 2; i++) { - var axis = this._axes[i]; - this._getProjMinMaxOnAxis(i, self2._corners, extent); - this._getProjMinMaxOnAxis(i, other._corners, extent2); - if (extent[1] < extent2[0] || extent[0] > extent2[1]) { - overlapped = false; - if (noMtv) { - return overlapped; - } - var dist0 = Math.abs(extent2[0] - extent[1]); - var dist1 = Math.abs(extent[0] - extent2[1]); - if (Math.min(dist0, dist1) > maxTv3.len()) { - if (dist0 < dist1) { - Point_default.scale(maxTv3, axis, -dist0 * inverse); - } else { - Point_default.scale(maxTv3, axis, dist1 * inverse); - } - } - } else if (minTv3) { - var dist0 = Math.abs(extent2[0] - extent[1]); - var dist1 = Math.abs(extent[0] - extent2[1]); - if (Math.min(dist0, dist1) < minTv3.len()) { - if (dist0 < dist1) { - Point_default.scale(minTv3, axis, dist0 * inverse); - } else { - Point_default.scale(minTv3, axis, -dist1 * inverse); - } - } - } - } - return overlapped; - }; - OrientedBoundingRect2.prototype._getProjMinMaxOnAxis = function(dim, corners, out2) { - var axis = this._axes[dim]; - var origin = this._origin; - var proj = corners[0].dot(axis) + origin[dim]; - var min4 = proj; - var max4 = proj; - for (var i = 1; i < corners.length; i++) { - var proj_1 = corners[i].dot(axis) + origin[dim]; - min4 = Math.min(proj_1, min4); - max4 = Math.max(proj_1, max4); - } - out2[0] = min4; - out2[1] = max4; - }; - return OrientedBoundingRect2; - }(); - var OrientedBoundingRect_default = OrientedBoundingRect; - - // node_modules/zrender/lib/graphic/IncrementalDisplayable.js - var m = []; - var IncrementalDisplayable = function(_super) { - __extends(IncrementalDisplayable2, _super); - function IncrementalDisplayable2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.notClear = true; - _this.incremental = true; - _this._displayables = []; - _this._temporaryDisplayables = []; - _this._cursor = 0; - return _this; - } - IncrementalDisplayable2.prototype.traverse = function(cb, context) { - cb.call(context, this); - }; - IncrementalDisplayable2.prototype.useStyle = function() { - this.style = {}; - }; - IncrementalDisplayable2.prototype.getCursor = function() { - return this._cursor; - }; - IncrementalDisplayable2.prototype.innerAfterBrush = function() { - this._cursor = this._displayables.length; - }; - IncrementalDisplayable2.prototype.clearDisplaybles = function() { - this._displayables = []; - this._temporaryDisplayables = []; - this._cursor = 0; - this.markRedraw(); - this.notClear = false; - }; - IncrementalDisplayable2.prototype.clearTemporalDisplayables = function() { - this._temporaryDisplayables = []; - }; - IncrementalDisplayable2.prototype.addDisplayable = function(displayable, notPersistent) { - if (notPersistent) { - this._temporaryDisplayables.push(displayable); - } else { - this._displayables.push(displayable); - } - this.markRedraw(); - }; - IncrementalDisplayable2.prototype.addDisplayables = function(displayables, notPersistent) { - notPersistent = notPersistent || false; - for (var i = 0; i < displayables.length; i++) { - this.addDisplayable(displayables[i], notPersistent); - } - }; - IncrementalDisplayable2.prototype.getDisplayables = function() { - return this._displayables; - }; - IncrementalDisplayable2.prototype.getTemporalDisplayables = function() { - return this._temporaryDisplayables; - }; - IncrementalDisplayable2.prototype.eachPendingDisplayable = function(cb) { - for (var i = this._cursor; i < this._displayables.length; i++) { - cb && cb(this._displayables[i]); - } - for (var i = 0; i < this._temporaryDisplayables.length; i++) { - cb && cb(this._temporaryDisplayables[i]); - } - }; - IncrementalDisplayable2.prototype.update = function() { - this.updateTransform(); - for (var i = this._cursor; i < this._displayables.length; i++) { - var displayable = this._displayables[i]; - displayable.parent = this; - displayable.update(); - displayable.parent = null; - } - for (var i = 0; i < this._temporaryDisplayables.length; i++) { - var displayable = this._temporaryDisplayables[i]; - displayable.parent = this; - displayable.update(); - displayable.parent = null; - } - }; - IncrementalDisplayable2.prototype.getBoundingRect = function() { - if (!this._rect) { - var rect = new BoundingRect_default(Infinity, Infinity, -Infinity, -Infinity); - for (var i = 0; i < this._displayables.length; i++) { - var displayable = this._displayables[i]; - var childRect = displayable.getBoundingRect().clone(); - if (displayable.needLocalTransform()) { - childRect.applyTransform(displayable.getLocalTransform(m)); - } - rect.union(childRect); - } - this._rect = rect; - } - return this._rect; - }; - IncrementalDisplayable2.prototype.contain = function(x, y) { - var localPos = this.transformCoordToLocal(x, y); - var rect = this.getBoundingRect(); - if (rect.contain(localPos[0], localPos[1])) { - for (var i = 0; i < this._displayables.length; i++) { - var displayable = this._displayables[i]; - if (displayable.contain(x, y)) { - return true; - } - } - } - return false; - }; - return IncrementalDisplayable2; - }(Displayable_default); - var IncrementalDisplayable_default = IncrementalDisplayable; - - // node_modules/echarts/lib/animation/basicTransition.js - var transitionStore = makeInner(); - function getAnimationConfig(animationType, animatableModel, dataIndex, extraOpts, extraDelayParams) { - var animationPayload; - if (animatableModel && animatableModel.ecModel) { - var updatePayload = animatableModel.ecModel.getUpdatePayload(); - animationPayload = updatePayload && updatePayload.animation; - } - var animationEnabled = animatableModel && animatableModel.isAnimationEnabled(); - var isUpdate = animationType === "update"; - if (animationEnabled) { - var duration = void 0; - var easing = void 0; - var delay = void 0; - if (extraOpts) { - duration = retrieve2(extraOpts.duration, 200); - easing = retrieve2(extraOpts.easing, "cubicOut"); - delay = 0; - } else { - duration = animatableModel.getShallow(isUpdate ? "animationDurationUpdate" : "animationDuration"); - easing = animatableModel.getShallow(isUpdate ? "animationEasingUpdate" : "animationEasing"); - delay = animatableModel.getShallow(isUpdate ? "animationDelayUpdate" : "animationDelay"); - } - if (animationPayload) { - animationPayload.duration != null && (duration = animationPayload.duration); - animationPayload.easing != null && (easing = animationPayload.easing); - animationPayload.delay != null && (delay = animationPayload.delay); - } - if (isFunction(delay)) { - delay = delay(dataIndex, extraDelayParams); - } - if (isFunction(duration)) { - duration = duration(dataIndex); - } - var config2 = { - duration: duration || 0, - delay, - easing - }; - return config2; - } else { - return null; - } - } - function animateOrSetProps(animationType, el, props, animatableModel, dataIndex, cb, during) { - var isFrom = false; - var removeOpt; - if (isFunction(dataIndex)) { - during = cb; - cb = dataIndex; - dataIndex = null; - } else if (isObject(dataIndex)) { - cb = dataIndex.cb; - during = dataIndex.during; - isFrom = dataIndex.isFrom; - removeOpt = dataIndex.removeOpt; - dataIndex = dataIndex.dataIndex; - } - var isRemove = animationType === "leave"; - if (!isRemove) { - el.stopAnimation("leave"); - } - var animationConfig = getAnimationConfig(animationType, animatableModel, dataIndex, isRemove ? removeOpt || {} : null, animatableModel && animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null); - if (animationConfig && animationConfig.duration > 0) { - var duration = animationConfig.duration; - var animationDelay = animationConfig.delay; - var animationEasing = animationConfig.easing; - var animateConfig = { - duration, - delay: animationDelay || 0, - easing: animationEasing, - done: cb, - force: !!cb || !!during, - // Set to final state in update/init animation. - // So the post processing based on the path shape can be done correctly. - setToFinal: !isRemove, - scope: animationType, - during - }; - isFrom ? el.animateFrom(props, animateConfig) : el.animateTo(props, animateConfig); - } else { - el.stopAnimation(); - !isFrom && el.attr(props); - during && during(1); - cb && cb(); - } - } - function updateProps(el, props, animatableModel, dataIndex, cb, during) { - animateOrSetProps("update", el, props, animatableModel, dataIndex, cb, during); - } - function initProps(el, props, animatableModel, dataIndex, cb, during) { - animateOrSetProps("enter", el, props, animatableModel, dataIndex, cb, during); - } - function isElementRemoved(el) { - if (!el.__zr) { - return true; - } - for (var i = 0; i < el.animators.length; i++) { - var animator = el.animators[i]; - if (animator.scope === "leave") { - return true; - } - } - return false; - } - function removeElement(el, props, animatableModel, dataIndex, cb, during) { - if (isElementRemoved(el)) { - return; - } - animateOrSetProps("leave", el, props, animatableModel, dataIndex, cb, during); - } - function fadeOutDisplayable(el, animatableModel, dataIndex, done) { - el.removeTextContent(); - el.removeTextGuideLine(); - removeElement(el, { - style: { - opacity: 0 - } - }, animatableModel, dataIndex, done); - } - function removeElementWithFadeOut(el, animatableModel, dataIndex) { - function doRemove() { - el.parent && el.parent.remove(el); - } - if (!el.isGroup) { - fadeOutDisplayable(el, animatableModel, dataIndex, doRemove); - } else { - el.traverse(function(disp) { - if (!disp.isGroup) { - fadeOutDisplayable(disp, animatableModel, dataIndex, doRemove); - } - }); - } - } - function saveOldStyle(el) { - transitionStore(el).oldStyle = el.style; - } - function getOldStyle(el) { - return transitionStore(el).oldStyle; - } - - // node_modules/echarts/lib/util/graphic.js - var mathMax5 = Math.max; - var mathMin5 = Math.min; - var _customShapeMap = {}; - function extendShape(opts) { - return Path_default.extend(opts); - } - var extendPathFromString = extendFromString; - function extendPath(pathData, opts) { - return extendPathFromString(pathData, opts); - } - function registerShape(name, ShapeClass) { - _customShapeMap[name] = ShapeClass; - } - function getShapeClass(name) { - if (_customShapeMap.hasOwnProperty(name)) { - return _customShapeMap[name]; - } - } - function makePath(pathData, opts, rect, layout5) { - var path = createFromString(pathData, opts); - if (rect) { - if (layout5 === "center") { - rect = centerGraphic(rect, path.getBoundingRect()); - } - resizePath(path, rect); - } - return path; - } - function makeImage(imageUrl, rect, layout5) { - var zrImg = new Image_default({ - style: { - image: imageUrl, - x: rect.x, - y: rect.y, - width: rect.width, - height: rect.height - }, - onload: function(img) { - if (layout5 === "center") { - var boundingRect = { - width: img.width, - height: img.height - }; - zrImg.setStyle(centerGraphic(rect, boundingRect)); - } - } - }); - return zrImg; - } - function centerGraphic(rect, boundingRect) { - var aspect = boundingRect.width / boundingRect.height; - var width = rect.height * aspect; - var height; - if (width <= rect.width) { - height = rect.height; - } else { - width = rect.width; - height = width / aspect; - } - var cx = rect.x + rect.width / 2; - var cy = rect.y + rect.height / 2; - return { - x: cx - width / 2, - y: cy - height / 2, - width, - height - }; - } - var mergePath2 = mergePath; - function resizePath(path, rect) { - if (!path.applyTransform) { - return; - } - var pathRect = path.getBoundingRect(); - var m2 = pathRect.calculateTransform(rect); - path.applyTransform(m2); - } - function subPixelOptimizeLine2(shape, lineWidth) { - subPixelOptimizeLine(shape, shape, { - lineWidth - }); - return shape; - } - function subPixelOptimizeRect2(param) { - subPixelOptimizeRect(param.shape, param.shape, param.style); - return param; - } - var subPixelOptimize2 = subPixelOptimize; - function getTransform(target, ancestor) { - var mat = identity([]); - while (target && target !== ancestor) { - mul2(mat, target.getLocalTransform(), mat); - target = target.parent; - } - return mat; - } - function applyTransform2(target, transform2, invert2) { - if (transform2 && !isArrayLike(transform2)) { - transform2 = Transformable_default.getLocalTransform(transform2); - } - if (invert2) { - transform2 = invert([], transform2); - } - return applyTransform([], target, transform2); - } - function transformDirection(direction, transform2, invert2) { - var hBase = transform2[4] === 0 || transform2[5] === 0 || transform2[0] === 0 ? 1 : Math.abs(2 * transform2[4] / transform2[0]); - var vBase = transform2[4] === 0 || transform2[5] === 0 || transform2[2] === 0 ? 1 : Math.abs(2 * transform2[4] / transform2[2]); - var vertex = [direction === "left" ? -hBase : direction === "right" ? hBase : 0, direction === "top" ? -vBase : direction === "bottom" ? vBase : 0]; - vertex = applyTransform2(vertex, transform2, invert2); - return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? "right" : "left" : vertex[1] > 0 ? "bottom" : "top"; - } - function isNotGroup(el) { - return !el.isGroup; - } - function isPath(el) { - return el.shape != null; - } - function groupTransition(g1, g2, animatableModel) { - if (!g1 || !g2) { - return; - } - function getElMap(g) { - var elMap = {}; - g.traverse(function(el) { - if (isNotGroup(el) && el.anid) { - elMap[el.anid] = el; - } - }); - return elMap; - } - function getAnimatableProps(el) { - var obj = { - x: el.x, - y: el.y, - rotation: el.rotation - }; - if (isPath(el)) { - obj.shape = extend({}, el.shape); - } - return obj; - } - var elMap1 = getElMap(g1); - g2.traverse(function(el) { - if (isNotGroup(el) && el.anid) { - var oldEl = elMap1[el.anid]; - if (oldEl) { - var newProp = getAnimatableProps(el); - el.attr(getAnimatableProps(oldEl)); - updateProps(el, newProp, animatableModel, getECData(el).dataIndex); - } - } - }); - } - function clipPointsByRect(points4, rect) { - return map(points4, function(point) { - var x = point[0]; - x = mathMax5(x, rect.x); - x = mathMin5(x, rect.x + rect.width); - var y = point[1]; - y = mathMax5(y, rect.y); - y = mathMin5(y, rect.y + rect.height); - return [x, y]; - }); - } - function clipRectByRect(targetRect, rect) { - var x = mathMax5(targetRect.x, rect.x); - var x2 = mathMin5(targetRect.x + targetRect.width, rect.x + rect.width); - var y = mathMax5(targetRect.y, rect.y); - var y2 = mathMin5(targetRect.y + targetRect.height, rect.y + rect.height); - if (x2 >= x && y2 >= y) { - return { - x, - y, - width: x2 - x, - height: y2 - y - }; - } - } - function createIcon(iconStr, opt, rect) { - var innerOpts = extend({ - rectHover: true - }, opt); - var style = innerOpts.style = { - strokeNoScale: true - }; - rect = rect || { - x: -1, - y: -1, - width: 2, - height: 2 - }; - if (iconStr) { - return iconStr.indexOf("image://") === 0 ? (style.image = iconStr.slice(8), defaults(style, rect), new Image_default(innerOpts)) : makePath(iconStr.replace("path://", ""), innerOpts, rect, "center"); - } - } - function linePolygonIntersect(a1x, a1y, a2x, a2y, points4) { - for (var i = 0, p2 = points4[points4.length - 1]; i < points4.length; i++) { - var p = points4[i]; - if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) { - return true; - } - p2 = p; - } - } - function lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) { - var mx = a2x - a1x; - var my = a2y - a1y; - var nx = b2x - b1x; - var ny = b2y - b1y; - var nmCrossProduct = crossProduct2d(nx, ny, mx, my); - if (nearZero(nmCrossProduct)) { - return false; - } - var b1a1x = a1x - b1x; - var b1a1y = a1y - b1y; - var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct; - if (q < 0 || q > 1) { - return false; - } - var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct; - if (p < 0 || p > 1) { - return false; - } - return true; - } - function crossProduct2d(x1, y1, x2, y2) { - return x1 * y2 - x2 * y1; - } - function nearZero(val) { - return val <= 1e-6 && val >= -1e-6; - } - function setTooltipConfig(opt) { - var itemTooltipOption = opt.itemTooltipOption; - var componentModel = opt.componentModel; - var itemName = opt.itemName; - var itemTooltipOptionObj = isString(itemTooltipOption) ? { - formatter: itemTooltipOption - } : itemTooltipOption; - var mainType = componentModel.mainType; - var componentIndex = componentModel.componentIndex; - var formatterParams = { - componentType: mainType, - name: itemName, - $vars: ["name"] - }; - formatterParams[mainType + "Index"] = componentIndex; - var formatterParamsExtra = opt.formatterParamsExtra; - if (formatterParamsExtra) { - each(keys(formatterParamsExtra), function(key) { - if (!hasOwn(formatterParams, key)) { - formatterParams[key] = formatterParamsExtra[key]; - formatterParams.$vars.push(key); - } - }); - } - var ecData = getECData(opt.el); - ecData.componentMainType = mainType; - ecData.componentIndex = componentIndex; - ecData.tooltipConfig = { - name: itemName, - option: defaults({ - content: itemName, - encodeHTMLContent: true, - formatterParams - }, itemTooltipOptionObj) - }; - } - function traverseElement(el, cb) { - var stopped; - if (el.isGroup) { - stopped = cb(el); - } - if (!stopped) { - el.traverse(cb); - } - } - function traverseElements(els, cb) { - if (els) { - if (isArray(els)) { - for (var i = 0; i < els.length; i++) { - traverseElement(els[i], cb); - } - } else { - traverseElement(els, cb); - } - } - } - registerShape("circle", Circle_default); - registerShape("ellipse", Ellipse_default); - registerShape("sector", Sector_default); - registerShape("ring", Ring_default); - registerShape("polygon", Polygon_default); - registerShape("polyline", Polyline_default); - registerShape("rect", Rect_default); - registerShape("line", Line_default); - registerShape("bezierCurve", BezierCurve_default); - registerShape("arc", Arc_default); - - // node_modules/echarts/lib/label/labelStyle.js - var EMPTY_OBJ = {}; - function setLabelText(label, labelTexts) { - for (var i = 0; i < SPECIAL_STATES.length; i++) { - var stateName = SPECIAL_STATES[i]; - var text = labelTexts[stateName]; - var state = label.ensureState(stateName); - state.style = state.style || {}; - state.style.text = text; - } - var oldStates = label.currentStates.slice(); - label.clearStates(true); - label.setStyle({ - text: labelTexts.normal - }); - label.useStates(oldStates, true); - } - function getLabelText(opt, stateModels, interpolatedValue) { - var labelFetcher = opt.labelFetcher; - var labelDataIndex = opt.labelDataIndex; - var labelDimIndex = opt.labelDimIndex; - var normalModel = stateModels.normal; - var baseText; - if (labelFetcher) { - baseText = labelFetcher.getFormattedLabel(labelDataIndex, "normal", null, labelDimIndex, normalModel && normalModel.get("formatter"), interpolatedValue != null ? { - interpolatedValue - } : null); - } - if (baseText == null) { - baseText = isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt, interpolatedValue) : opt.defaultText; - } - var statesText = { - normal: baseText - }; - for (var i = 0; i < SPECIAL_STATES.length; i++) { - var stateName = SPECIAL_STATES[i]; - var stateModel = stateModels[stateName]; - statesText[stateName] = retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, stateName, null, labelDimIndex, stateModel && stateModel.get("formatter")) : null, baseText); - } - return statesText; - } - function setLabelStyle(targetEl, labelStatesModels, opt, stateSpecified) { - opt = opt || EMPTY_OBJ; - var isSetOnText = targetEl instanceof Text_default; - var needsCreateText = false; - for (var i = 0; i < DISPLAY_STATES.length; i++) { - var stateModel = labelStatesModels[DISPLAY_STATES[i]]; - if (stateModel && stateModel.getShallow("show")) { - needsCreateText = true; - break; - } - } - var textContent = isSetOnText ? targetEl : targetEl.getTextContent(); - if (needsCreateText) { - if (!isSetOnText) { - if (!textContent) { - textContent = new Text_default(); - targetEl.setTextContent(textContent); - } - if (targetEl.stateProxy) { - textContent.stateProxy = targetEl.stateProxy; - } - } - var labelStatesTexts = getLabelText(opt, labelStatesModels); - var normalModel = labelStatesModels.normal; - var showNormal = !!normalModel.getShallow("show"); - var normalStyle = createTextStyle(normalModel, stateSpecified && stateSpecified.normal, opt, false, !isSetOnText); - normalStyle.text = labelStatesTexts.normal; - if (!isSetOnText) { - targetEl.setTextConfig(createTextConfig(normalModel, opt, false)); - } - for (var i = 0; i < SPECIAL_STATES.length; i++) { - var stateName = SPECIAL_STATES[i]; - var stateModel = labelStatesModels[stateName]; - if (stateModel) { - var stateObj = textContent.ensureState(stateName); - var stateShow = !!retrieve2(stateModel.getShallow("show"), showNormal); - if (stateShow !== showNormal) { - stateObj.ignore = !stateShow; - } - stateObj.style = createTextStyle(stateModel, stateSpecified && stateSpecified[stateName], opt, true, !isSetOnText); - stateObj.style.text = labelStatesTexts[stateName]; - if (!isSetOnText) { - var targetElEmphasisState = targetEl.ensureState(stateName); - targetElEmphasisState.textConfig = createTextConfig(stateModel, opt, true); - } - } - } - textContent.silent = !!normalModel.getShallow("silent"); - if (textContent.style.x != null) { - normalStyle.x = textContent.style.x; - } - if (textContent.style.y != null) { - normalStyle.y = textContent.style.y; - } - textContent.ignore = !showNormal; - textContent.useStyle(normalStyle); - textContent.dirty(); - if (opt.enableTextSetter) { - labelInner(textContent).setLabelText = function(interpolatedValue) { - var labelStatesTexts2 = getLabelText(opt, labelStatesModels, interpolatedValue); - setLabelText(textContent, labelStatesTexts2); - }; - } - } else if (textContent) { - textContent.ignore = true; - } - targetEl.dirty(); - } - function getLabelStatesModels(itemModel, labelName) { - labelName = labelName || "label"; - var statesModels = { - normal: itemModel.getModel(labelName) - }; - for (var i = 0; i < SPECIAL_STATES.length; i++) { - var stateName = SPECIAL_STATES[i]; - statesModels[stateName] = itemModel.getModel([stateName, labelName]); - } - return statesModels; - } - function createTextStyle(textStyleModel, specifiedTextStyle, opt, isNotNormal, isAttached) { - var textStyle = {}; - setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached); - specifiedTextStyle && extend(textStyle, specifiedTextStyle); - return textStyle; - } - function createTextConfig(textStyleModel, opt, isNotNormal) { - opt = opt || {}; - var textConfig = {}; - var labelPosition; - var labelRotate = textStyleModel.getShallow("rotate"); - var labelDistance = retrieve2(textStyleModel.getShallow("distance"), isNotNormal ? null : 5); - var labelOffset = textStyleModel.getShallow("offset"); - labelPosition = textStyleModel.getShallow("position") || (isNotNormal ? null : "inside"); - labelPosition === "outside" && (labelPosition = opt.defaultOutsidePosition || "top"); - if (labelPosition != null) { - textConfig.position = labelPosition; - } - if (labelOffset != null) { - textConfig.offset = labelOffset; - } - if (labelRotate != null) { - labelRotate *= Math.PI / 180; - textConfig.rotation = labelRotate; - } - if (labelDistance != null) { - textConfig.distance = labelDistance; - } - textConfig.outsideFill = textStyleModel.get("color") === "inherit" ? opt.inheritColor || null : "auto"; - return textConfig; - } - function setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached) { - opt = opt || EMPTY_OBJ; - var ecModel = textStyleModel.ecModel; - var globalTextStyle = ecModel && ecModel.option.textStyle; - var richItemNames = getRichItemNames(textStyleModel); - var richResult; - if (richItemNames) { - richResult = {}; - for (var name_1 in richItemNames) { - if (richItemNames.hasOwnProperty(name_1)) { - var richTextStyle = textStyleModel.getModel(["rich", name_1]); - setTokenTextStyle(richResult[name_1] = {}, richTextStyle, globalTextStyle, opt, isNotNormal, isAttached, false, true); - } - } - } - if (richResult) { - textStyle.rich = richResult; - } - var overflow = textStyleModel.get("overflow"); - if (overflow) { - textStyle.overflow = overflow; - } - var margin = textStyleModel.get("minMargin"); - if (margin != null) { - textStyle.margin = margin; - } - setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, true, false); - } - function getRichItemNames(textStyleModel) { - var richItemNameMap; - while (textStyleModel && textStyleModel !== textStyleModel.ecModel) { - var rich = (textStyleModel.option || EMPTY_OBJ).rich; - if (rich) { - richItemNameMap = richItemNameMap || {}; - var richKeys = keys(rich); - for (var i = 0; i < richKeys.length; i++) { - var richKey = richKeys[i]; - richItemNameMap[richKey] = 1; - } - } - textStyleModel = textStyleModel.parentModel; - } - return richItemNameMap; - } - var TEXT_PROPS_WITH_GLOBAL = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY"]; - var TEXT_PROPS_SELF = ["align", "lineHeight", "width", "height", "tag", "verticalAlign", "ellipsis"]; - var TEXT_PROPS_BOX = ["padding", "borderWidth", "borderRadius", "borderDashOffset", "backgroundColor", "borderColor", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"]; - function setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, isBlock, inRich) { - globalTextStyle = !isNotNormal && globalTextStyle || EMPTY_OBJ; - var inheritColor = opt && opt.inheritColor; - var fillColor = textStyleModel.getShallow("color"); - var strokeColor = textStyleModel.getShallow("textBorderColor"); - var opacity = retrieve2(textStyleModel.getShallow("opacity"), globalTextStyle.opacity); - if (fillColor === "inherit" || fillColor === "auto") { - if (true) { - if (fillColor === "auto") { - deprecateReplaceLog("color: 'auto'", "color: 'inherit'"); - } - } - if (inheritColor) { - fillColor = inheritColor; - } else { - fillColor = null; - } - } - if (strokeColor === "inherit" || strokeColor === "auto") { - if (true) { - if (strokeColor === "auto") { - deprecateReplaceLog("color: 'auto'", "color: 'inherit'"); - } - } - if (inheritColor) { - strokeColor = inheritColor; - } else { - strokeColor = null; - } - } - if (!isAttached) { - fillColor = fillColor || globalTextStyle.color; - strokeColor = strokeColor || globalTextStyle.textBorderColor; - } - if (fillColor != null) { - textStyle.fill = fillColor; - } - if (strokeColor != null) { - textStyle.stroke = strokeColor; - } - var textBorderWidth = retrieve2(textStyleModel.getShallow("textBorderWidth"), globalTextStyle.textBorderWidth); - if (textBorderWidth != null) { - textStyle.lineWidth = textBorderWidth; - } - var textBorderType = retrieve2(textStyleModel.getShallow("textBorderType"), globalTextStyle.textBorderType); - if (textBorderType != null) { - textStyle.lineDash = textBorderType; - } - var textBorderDashOffset = retrieve2(textStyleModel.getShallow("textBorderDashOffset"), globalTextStyle.textBorderDashOffset); - if (textBorderDashOffset != null) { - textStyle.lineDashOffset = textBorderDashOffset; - } - if (!isNotNormal && opacity == null && !inRich) { - opacity = opt && opt.defaultOpacity; - } - if (opacity != null) { - textStyle.opacity = opacity; - } - if (!isNotNormal && !isAttached) { - if (textStyle.fill == null && opt.inheritColor) { - textStyle.fill = opt.inheritColor; - } - } - for (var i = 0; i < TEXT_PROPS_WITH_GLOBAL.length; i++) { - var key = TEXT_PROPS_WITH_GLOBAL[i]; - var val = retrieve2(textStyleModel.getShallow(key), globalTextStyle[key]); - if (val != null) { - textStyle[key] = val; - } - } - for (var i = 0; i < TEXT_PROPS_SELF.length; i++) { - var key = TEXT_PROPS_SELF[i]; - var val = textStyleModel.getShallow(key); - if (val != null) { - textStyle[key] = val; - } - } - if (textStyle.verticalAlign == null) { - var baseline = textStyleModel.getShallow("baseline"); - if (baseline != null) { - textStyle.verticalAlign = baseline; - } - } - if (!isBlock || !opt.disableBox) { - for (var i = 0; i < TEXT_PROPS_BOX.length; i++) { - var key = TEXT_PROPS_BOX[i]; - var val = textStyleModel.getShallow(key); - if (val != null) { - textStyle[key] = val; - } - } - var borderType = textStyleModel.getShallow("borderType"); - if (borderType != null) { - textStyle.borderDash = borderType; - } - if ((textStyle.backgroundColor === "auto" || textStyle.backgroundColor === "inherit") && inheritColor) { - if (true) { - if (textStyle.backgroundColor === "auto") { - deprecateReplaceLog("backgroundColor: 'auto'", "backgroundColor: 'inherit'"); - } - } - textStyle.backgroundColor = inheritColor; - } - if ((textStyle.borderColor === "auto" || textStyle.borderColor === "inherit") && inheritColor) { - if (true) { - if (textStyle.borderColor === "auto") { - deprecateReplaceLog("borderColor: 'auto'", "borderColor: 'inherit'"); - } - } - textStyle.borderColor = inheritColor; - } - } - } - function getFont(opt, ecModel) { - var gTextStyleModel = ecModel && ecModel.getModel("textStyle"); - return trim([ - // FIXME in node-canvas fontWeight is before fontStyle - opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow("fontStyle") || "", - opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow("fontWeight") || "", - (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow("fontSize") || 12) + "px", - opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow("fontFamily") || "sans-serif" - ].join(" ")); - } - var labelInner = makeInner(); - function setLabelValueAnimation(label, labelStatesModels, value, getDefaultText) { - if (!label) { - return; - } - var obj = labelInner(label); - obj.prevValue = obj.value; - obj.value = value; - var normalLabelModel = labelStatesModels.normal; - obj.valueAnimation = normalLabelModel.get("valueAnimation"); - if (obj.valueAnimation) { - obj.precision = normalLabelModel.get("precision"); - obj.defaultInterpolatedText = getDefaultText; - obj.statesModels = labelStatesModels; - } - } - function animateLabelValue(textEl, dataIndex, data, animatableModel, labelFetcher) { - var labelInnerStore = labelInner(textEl); - if (!labelInnerStore.valueAnimation || labelInnerStore.prevValue === labelInnerStore.value) { - return; - } - var defaultInterpolatedText = labelInnerStore.defaultInterpolatedText; - var currValue = retrieve2(labelInnerStore.interpolatedValue, labelInnerStore.prevValue); - var targetValue = labelInnerStore.value; - function during(percent) { - var interpolated = interpolateRawValues(data, labelInnerStore.precision, currValue, targetValue, percent); - labelInnerStore.interpolatedValue = percent === 1 ? null : interpolated; - var labelText = getLabelText({ - labelDataIndex: dataIndex, - labelFetcher, - defaultText: defaultInterpolatedText ? defaultInterpolatedText(interpolated) : interpolated + "" - }, labelInnerStore.statesModels, interpolated); - setLabelText(textEl, labelText); - } - textEl.percent = 0; - (labelInnerStore.prevValue == null ? initProps : updateProps)(textEl, { - // percent is used to prevent animation from being aborted #15916 - percent: 1 - }, animatableModel, dataIndex, null, during); - } - - // node_modules/echarts/lib/model/mixin/textStyle.js - var PATH_COLOR = ["textStyle", "color"]; - var textStyleParams = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "padding", "lineHeight", "rich", "width", "height", "overflow"]; - var tmpText = new Text_default(); - var TextStyleMixin = ( - /** @class */ - function() { - function TextStyleMixin2() { - } - TextStyleMixin2.prototype.getTextColor = function(isEmphasis) { - var ecModel = this.ecModel; - return this.getShallow("color") || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null); - }; - TextStyleMixin2.prototype.getFont = function() { - return getFont({ - fontStyle: this.getShallow("fontStyle"), - fontWeight: this.getShallow("fontWeight"), - fontSize: this.getShallow("fontSize"), - fontFamily: this.getShallow("fontFamily") - }, this.ecModel); - }; - TextStyleMixin2.prototype.getTextRect = function(text) { - var style = { - text, - verticalAlign: this.getShallow("verticalAlign") || this.getShallow("baseline") - }; - for (var i = 0; i < textStyleParams.length; i++) { - style[textStyleParams[i]] = this.getShallow(textStyleParams[i]); - } - tmpText.useStyle(style); - tmpText.update(); - return tmpText.getBoundingRect(); - }; - return TextStyleMixin2; - }() - ); - var textStyle_default = TextStyleMixin; - - // node_modules/echarts/lib/model/mixin/lineStyle.js - var LINE_STYLE_KEY_MAP = [ - ["lineWidth", "width"], - ["stroke", "color"], - ["opacity"], - ["shadowBlur"], - ["shadowOffsetX"], - ["shadowOffsetY"], - ["shadowColor"], - ["lineDash", "type"], - ["lineDashOffset", "dashOffset"], - ["lineCap", "cap"], - ["lineJoin", "join"], - ["miterLimit"] - // Option decal is in `DecalObject` but style.decal is in `PatternObject`. - // So do not transfer decal directly. - ]; - var getLineStyle = makeStyleMapper(LINE_STYLE_KEY_MAP); - var LineStyleMixin = ( - /** @class */ - function() { - function LineStyleMixin2() { - } - LineStyleMixin2.prototype.getLineStyle = function(excludes) { - return getLineStyle(this, excludes); - }; - return LineStyleMixin2; - }() - ); - - // node_modules/echarts/lib/model/mixin/itemStyle.js - var ITEM_STYLE_KEY_MAP = [ - ["fill", "color"], - ["stroke", "borderColor"], - ["lineWidth", "borderWidth"], - ["opacity"], - ["shadowBlur"], - ["shadowOffsetX"], - ["shadowOffsetY"], - ["shadowColor"], - ["lineDash", "borderType"], - ["lineDashOffset", "borderDashOffset"], - ["lineCap", "borderCap"], - ["lineJoin", "borderJoin"], - ["miterLimit", "borderMiterLimit"] - // Option decal is in `DecalObject` but style.decal is in `PatternObject`. - // So do not transfer decal directly. - ]; - var getItemStyle = makeStyleMapper(ITEM_STYLE_KEY_MAP); - var ItemStyleMixin = ( - /** @class */ - function() { - function ItemStyleMixin2() { - } - ItemStyleMixin2.prototype.getItemStyle = function(excludes, includes) { - return getItemStyle(this, excludes, includes); - }; - return ItemStyleMixin2; - }() - ); - - // node_modules/echarts/lib/model/Model.js - var Model = ( - /** @class */ - function() { - function Model2(option, parentModel, ecModel) { - this.parentModel = parentModel; - this.ecModel = ecModel; - this.option = option; - } - Model2.prototype.init = function(option, parentModel, ecModel) { - var rest = []; - for (var _i = 3; _i < arguments.length; _i++) { - rest[_i - 3] = arguments[_i]; - } - }; - Model2.prototype.mergeOption = function(option, ecModel) { - merge(this.option, option, true); - }; - Model2.prototype.get = function(path, ignoreParent) { - if (path == null) { - return this.option; - } - return this._doGet(this.parsePath(path), !ignoreParent && this.parentModel); - }; - Model2.prototype.getShallow = function(key, ignoreParent) { - var option = this.option; - var val = option == null ? option : option[key]; - if (val == null && !ignoreParent) { - var parentModel = this.parentModel; - if (parentModel) { - val = parentModel.getShallow(key); - } - } - return val; - }; - Model2.prototype.getModel = function(path, parentModel) { - var hasPath = path != null; - var pathFinal = hasPath ? this.parsePath(path) : null; - var obj = hasPath ? this._doGet(pathFinal) : this.option; - parentModel = parentModel || this.parentModel && this.parentModel.getModel(this.resolveParentPath(pathFinal)); - return new Model2(obj, parentModel, this.ecModel); - }; - Model2.prototype.isEmpty = function() { - return this.option == null; - }; - Model2.prototype.restoreData = function() { - }; - Model2.prototype.clone = function() { - var Ctor = this.constructor; - return new Ctor(clone(this.option)); - }; - Model2.prototype.parsePath = function(path) { - if (typeof path === "string") { - return path.split("."); - } - return path; - }; - Model2.prototype.resolveParentPath = function(path) { - return path; - }; - Model2.prototype.isAnimationEnabled = function() { - if (!env_default.node && this.option) { - if (this.option.animation != null) { - return !!this.option.animation; - } else if (this.parentModel) { - return this.parentModel.isAnimationEnabled(); - } - } - }; - Model2.prototype._doGet = function(pathArr, parentModel) { - var obj = this.option; - if (!pathArr) { - return obj; - } - for (var i = 0; i < pathArr.length; i++) { - if (!pathArr[i]) { - continue; - } - obj = obj && typeof obj === "object" ? obj[pathArr[i]] : null; - if (obj == null) { - break; - } - } - if (obj == null && parentModel) { - obj = parentModel._doGet(this.resolveParentPath(pathArr), parentModel.parentModel); - } - return obj; - }; - return Model2; - }() - ); - enableClassExtend(Model); - enableClassCheck(Model); - mixin(Model, LineStyleMixin); - mixin(Model, ItemStyleMixin); - mixin(Model, AreaStyleMixin); - mixin(Model, textStyle_default); - var Model_default = Model; - - // node_modules/echarts/lib/util/component.js - var base = Math.round(Math.random() * 10); - function getUID(type) { - return [type || "", base++].join("_"); - } - function enableSubTypeDefaulter(target) { - var subTypeDefaulters = {}; - target.registerSubTypeDefaulter = function(componentType, defaulter) { - var componentTypeInfo = parseClassType(componentType); - subTypeDefaulters[componentTypeInfo.main] = defaulter; - }; - target.determineSubType = function(componentType, option) { - var type = option.type; - if (!type) { - var componentTypeMain = parseClassType(componentType).main; - if (target.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) { - type = subTypeDefaulters[componentTypeMain](option); - } - } - return type; - }; - } - function enableTopologicalTravel(entity, dependencyGetter) { - entity.topologicalTravel = function(targetNameList, fullNameList, callback, context) { - if (!targetNameList.length) { - return; - } - var result = makeDepndencyGraph(fullNameList); - var graph = result.graph; - var noEntryList = result.noEntryList; - var targetNameSet = {}; - each(targetNameList, function(name) { - targetNameSet[name] = true; - }); - while (noEntryList.length) { - var currComponentType = noEntryList.pop(); - var currVertex = graph[currComponentType]; - var isInTargetNameSet = !!targetNameSet[currComponentType]; - if (isInTargetNameSet) { - callback.call(context, currComponentType, currVertex.originalDeps.slice()); - delete targetNameSet[currComponentType]; - } - each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge); - } - each(targetNameSet, function() { - var errMsg = ""; - if (true) { - errMsg = makePrintable("Circular dependency may exists: ", targetNameSet, targetNameList, fullNameList); - } - throw new Error(errMsg); - }); - function removeEdge(succComponentType) { - graph[succComponentType].entryCount--; - if (graph[succComponentType].entryCount === 0) { - noEntryList.push(succComponentType); - } - } - function removeEdgeAndAdd(succComponentType) { - targetNameSet[succComponentType] = true; - removeEdge(succComponentType); - } - }; - function makeDepndencyGraph(fullNameList) { - var graph = {}; - var noEntryList = []; - each(fullNameList, function(name) { - var thisItem = createDependencyGraphItem(graph, name); - var originalDeps = thisItem.originalDeps = dependencyGetter(name); - var availableDeps = getAvailableDependencies(originalDeps, fullNameList); - thisItem.entryCount = availableDeps.length; - if (thisItem.entryCount === 0) { - noEntryList.push(name); - } - each(availableDeps, function(dependentName) { - if (indexOf(thisItem.predecessor, dependentName) < 0) { - thisItem.predecessor.push(dependentName); - } - var thatItem = createDependencyGraphItem(graph, dependentName); - if (indexOf(thatItem.successor, dependentName) < 0) { - thatItem.successor.push(name); - } - }); - }); - return { - graph, - noEntryList - }; - } - function createDependencyGraphItem(graph, name) { - if (!graph[name]) { - graph[name] = { - predecessor: [], - successor: [] - }; - } - return graph[name]; - } - function getAvailableDependencies(originalDeps, fullNameList) { - var availableDeps = []; - each(originalDeps, function(dep) { - indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep); - }); - return availableDeps; - } - } - function inheritDefaultOption(superOption, subOption) { - return merge(merge({}, superOption, true), subOption, true); - } - - // node_modules/echarts/lib/i18n/langEN.js - var langEN_default = { - time: { - month: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - monthAbbr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - dayOfWeekAbbr: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] - }, - legend: { - selector: { - all: "All", - inverse: "Inv" - } - }, - toolbox: { - brush: { - title: { - rect: "Box Select", - polygon: "Lasso Select", - lineX: "Horizontally Select", - lineY: "Vertically Select", - keep: "Keep Selections", - clear: "Clear Selections" - } - }, - dataView: { - title: "Data View", - lang: ["Data View", "Close", "Refresh"] - }, - dataZoom: { - title: { - zoom: "Zoom", - back: "Zoom Reset" - } - }, - magicType: { - title: { - line: "Switch to Line Chart", - bar: "Switch to Bar Chart", - stack: "Stack", - tiled: "Tile" - } - }, - restore: { - title: "Restore" - }, - saveAsImage: { - title: "Save as Image", - lang: ["Right Click to Save Image"] - } - }, - series: { - typeNames: { - pie: "Pie chart", - bar: "Bar chart", - line: "Line chart", - scatter: "Scatter plot", - effectScatter: "Ripple scatter plot", - radar: "Radar chart", - tree: "Tree", - treemap: "Treemap", - boxplot: "Boxplot", - candlestick: "Candlestick", - k: "K line chart", - heatmap: "Heat map", - map: "Map", - parallel: "Parallel coordinate map", - lines: "Line graph", - graph: "Relationship graph", - sankey: "Sankey diagram", - funnel: "Funnel chart", - gauge: "Gauge", - pictorialBar: "Pictorial bar", - themeRiver: "Theme River Map", - sunburst: "Sunburst", - custom: "Custom chart", - chart: "Chart" - } - }, - aria: { - general: { - withTitle: 'This is a chart about "{title}"', - withoutTitle: "This is a chart" - }, - series: { - single: { - prefix: "", - withName: " with type {seriesType} named {seriesName}.", - withoutName: " with type {seriesType}." - }, - multiple: { - prefix: ". It consists of {seriesCount} series count.", - withName: " The {seriesId} series is a {seriesType} representing {seriesName}.", - withoutName: " The {seriesId} series is a {seriesType}.", - separator: { - middle: "", - end: "" - } - } - }, - data: { - allData: "The data is as follows: ", - partialData: "The first {displayCnt} items are: ", - withName: "the data for {name} is {value}", - withoutName: "{value}", - separator: { - middle: ", ", - end: ". " - } - } - } - }; - - // node_modules/echarts/lib/i18n/langZH.js - var langZH_default = { - time: { - month: ["\u4E00\u6708", "\u4E8C\u6708", "\u4E09\u6708", "\u56DB\u6708", "\u4E94\u6708", "\u516D\u6708", "\u4E03\u6708", "\u516B\u6708", "\u4E5D\u6708", "\u5341\u6708", "\u5341\u4E00\u6708", "\u5341\u4E8C\u6708"], - monthAbbr: ["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], - dayOfWeek: ["\u661F\u671F\u65E5", "\u661F\u671F\u4E00", "\u661F\u671F\u4E8C", "\u661F\u671F\u4E09", "\u661F\u671F\u56DB", "\u661F\u671F\u4E94", "\u661F\u671F\u516D"], - dayOfWeekAbbr: ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"] - }, - legend: { - selector: { - all: "\u5168\u9009", - inverse: "\u53CD\u9009" - } - }, - toolbox: { - brush: { - title: { - rect: "\u77E9\u5F62\u9009\u62E9", - polygon: "\u5708\u9009", - lineX: "\u6A2A\u5411\u9009\u62E9", - lineY: "\u7EB5\u5411\u9009\u62E9", - keep: "\u4FDD\u6301\u9009\u62E9", - clear: "\u6E05\u9664\u9009\u62E9" - } - }, - dataView: { - title: "\u6570\u636E\u89C6\u56FE", - lang: ["\u6570\u636E\u89C6\u56FE", "\u5173\u95ED", "\u5237\u65B0"] - }, - dataZoom: { - title: { - zoom: "\u533A\u57DF\u7F29\u653E", - back: "\u533A\u57DF\u7F29\u653E\u8FD8\u539F" - } - }, - magicType: { - title: { - line: "\u5207\u6362\u4E3A\u6298\u7EBF\u56FE", - bar: "\u5207\u6362\u4E3A\u67F1\u72B6\u56FE", - stack: "\u5207\u6362\u4E3A\u5806\u53E0", - tiled: "\u5207\u6362\u4E3A\u5E73\u94FA" - } - }, - restore: { - title: "\u8FD8\u539F" - }, - saveAsImage: { - title: "\u4FDD\u5B58\u4E3A\u56FE\u7247", - lang: ["\u53F3\u952E\u53E6\u5B58\u4E3A\u56FE\u7247"] - } - }, - series: { - typeNames: { - pie: "\u997C\u56FE", - bar: "\u67F1\u72B6\u56FE", - line: "\u6298\u7EBF\u56FE", - scatter: "\u6563\u70B9\u56FE", - effectScatter: "\u6D9F\u6F2A\u6563\u70B9\u56FE", - radar: "\u96F7\u8FBE\u56FE", - tree: "\u6811\u56FE", - treemap: "\u77E9\u5F62\u6811\u56FE", - boxplot: "\u7BB1\u578B\u56FE", - candlestick: "K\u7EBF\u56FE", - k: "K\u7EBF\u56FE", - heatmap: "\u70ED\u529B\u56FE", - map: "\u5730\u56FE", - parallel: "\u5E73\u884C\u5750\u6807\u56FE", - lines: "\u7EBF\u56FE", - graph: "\u5173\u7CFB\u56FE", - sankey: "\u6851\u57FA\u56FE", - funnel: "\u6F0F\u6597\u56FE", - gauge: "\u4EEA\u8868\u76D8\u56FE", - pictorialBar: "\u8C61\u5F62\u67F1\u56FE", - themeRiver: "\u4E3B\u9898\u6CB3\u6D41\u56FE", - sunburst: "\u65ED\u65E5\u56FE", - custom: "\u81EA\u5B9A\u4E49\u56FE\u8868", - chart: "\u56FE\u8868" - } - }, - aria: { - general: { - withTitle: "\u8FD9\u662F\u4E00\u4E2A\u5173\u4E8E\u201C{title}\u201D\u7684\u56FE\u8868\u3002", - withoutTitle: "\u8FD9\u662F\u4E00\u4E2A\u56FE\u8868\uFF0C" - }, - series: { - single: { - prefix: "", - withName: "\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\uFF0C\u8868\u793A{seriesName}\u3002", - withoutName: "\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\u3002" - }, - multiple: { - prefix: "\u5B83\u7531{seriesCount}\u4E2A\u56FE\u8868\u7CFB\u5217\u7EC4\u6210\u3002", - withName: "\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A\u8868\u793A{seriesName}\u7684{seriesType}\uFF0C", - withoutName: "\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A{seriesType}\uFF0C", - separator: { - middle: "\uFF1B", - end: "\u3002" - } - } - }, - data: { - allData: "\u5176\u6570\u636E\u662F\u2014\u2014", - partialData: "\u5176\u4E2D\uFF0C\u524D{displayCnt}\u9879\u662F\u2014\u2014", - withName: "{name}\u7684\u6570\u636E\u662F{value}", - withoutName: "{value}", - separator: { - middle: "\uFF0C", - end: "" - } - } - } - }; - - // node_modules/echarts/lib/core/locale.js - var LOCALE_ZH = "ZH"; - var LOCALE_EN = "EN"; - var DEFAULT_LOCALE = LOCALE_EN; - var localeStorage = {}; - var localeModels = {}; - var SYSTEM_LANG = !env_default.domSupported ? DEFAULT_LOCALE : function() { - var langStr = ( - /* eslint-disable-next-line */ - (document.documentElement.lang || navigator.language || navigator.browserLanguage || DEFAULT_LOCALE).toUpperCase() - ); - return langStr.indexOf(LOCALE_ZH) > -1 ? LOCALE_ZH : DEFAULT_LOCALE; - }(); - function registerLocale(locale, localeObj) { - locale = locale.toUpperCase(); - localeModels[locale] = new Model_default(localeObj); - localeStorage[locale] = localeObj; - } - function createLocaleObject(locale) { - if (isString(locale)) { - var localeObj = localeStorage[locale.toUpperCase()] || {}; - if (locale === LOCALE_ZH || locale === LOCALE_EN) { - return clone(localeObj); - } else { - return merge(clone(localeObj), clone(localeStorage[DEFAULT_LOCALE]), false); - } - } else { - return merge(clone(locale), clone(localeStorage[DEFAULT_LOCALE]), false); - } - } - function getLocaleModel(lang) { - return localeModels[lang]; - } - function getDefaultLocaleModel() { - return localeModels[DEFAULT_LOCALE]; - } - registerLocale(LOCALE_EN, langEN_default); - registerLocale(LOCALE_ZH, langZH_default); - - // node_modules/echarts/lib/util/time.js - var ONE_SECOND = 1e3; - var ONE_MINUTE = ONE_SECOND * 60; - var ONE_HOUR = ONE_MINUTE * 60; - var ONE_DAY = ONE_HOUR * 24; - var ONE_YEAR = ONE_DAY * 365; - var defaultLeveledFormatter = { - year: "{yyyy}", - month: "{MMM}", - day: "{d}", - hour: "{HH}:{mm}", - minute: "{HH}:{mm}", - second: "{HH}:{mm}:{ss}", - millisecond: "{HH}:{mm}:{ss} {SSS}", - none: "{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}" - }; - var fullDayFormatter = "{yyyy}-{MM}-{dd}"; - var fullLeveledFormatter = { - year: "{yyyy}", - month: "{yyyy}-{MM}", - day: fullDayFormatter, - hour: fullDayFormatter + " " + defaultLeveledFormatter.hour, - minute: fullDayFormatter + " " + defaultLeveledFormatter.minute, - second: fullDayFormatter + " " + defaultLeveledFormatter.second, - millisecond: defaultLeveledFormatter.none - }; - var primaryTimeUnits = ["year", "month", "day", "hour", "minute", "second", "millisecond"]; - var timeUnits = ["year", "half-year", "quarter", "month", "week", "half-week", "day", "half-day", "quarter-day", "hour", "minute", "second", "millisecond"]; - function pad(str, len2) { - str += ""; - return "0000".substr(0, len2 - str.length) + str; - } - function getPrimaryTimeUnit(timeUnit) { - switch (timeUnit) { - case "half-year": - case "quarter": - return "month"; - case "week": - case "half-week": - return "day"; - case "half-day": - case "quarter-day": - return "hour"; - default: - return timeUnit; - } - } - function isPrimaryTimeUnit(timeUnit) { - return timeUnit === getPrimaryTimeUnit(timeUnit); - } - function getDefaultFormatPrecisionOfInterval(timeUnit) { - switch (timeUnit) { - case "year": - case "month": - return "day"; - case "millisecond": - return "millisecond"; - default: - return "second"; - } - } - function format(time, template, isUTC, lang) { - var date = parseDate(time); - var y = date[fullYearGetterName(isUTC)](); - var M = date[monthGetterName(isUTC)]() + 1; - var q = Math.floor((M - 1) / 3) + 1; - var d = date[dateGetterName(isUTC)](); - var e2 = date["get" + (isUTC ? "UTC" : "") + "Day"](); - var H = date[hoursGetterName(isUTC)](); - var h = (H - 1) % 12 + 1; - var m2 = date[minutesGetterName(isUTC)](); - var s = date[secondsGetterName(isUTC)](); - var S = date[millisecondsGetterName(isUTC)](); - var a = H >= 12 ? "pm" : "am"; - var A = a.toUpperCase(); - var localeModel = lang instanceof Model_default ? lang : getLocaleModel(lang || SYSTEM_LANG) || getDefaultLocaleModel(); - var timeModel = localeModel.getModel("time"); - var month = timeModel.get("month"); - var monthAbbr = timeModel.get("monthAbbr"); - var dayOfWeek = timeModel.get("dayOfWeek"); - var dayOfWeekAbbr = timeModel.get("dayOfWeekAbbr"); - return (template || "").replace(/{a}/g, a + "").replace(/{A}/g, A + "").replace(/{yyyy}/g, y + "").replace(/{yy}/g, pad(y % 100 + "", 2)).replace(/{Q}/g, q + "").replace(/{MMMM}/g, month[M - 1]).replace(/{MMM}/g, monthAbbr[M - 1]).replace(/{MM}/g, pad(M, 2)).replace(/{M}/g, M + "").replace(/{dd}/g, pad(d, 2)).replace(/{d}/g, d + "").replace(/{eeee}/g, dayOfWeek[e2]).replace(/{ee}/g, dayOfWeekAbbr[e2]).replace(/{e}/g, e2 + "").replace(/{HH}/g, pad(H, 2)).replace(/{H}/g, H + "").replace(/{hh}/g, pad(h + "", 2)).replace(/{h}/g, h + "").replace(/{mm}/g, pad(m2, 2)).replace(/{m}/g, m2 + "").replace(/{ss}/g, pad(s, 2)).replace(/{s}/g, s + "").replace(/{SSS}/g, pad(S, 3)).replace(/{S}/g, S + ""); - } - function leveledFormat(tick, idx, formatter, lang, isUTC) { - var template = null; - if (isString(formatter)) { - template = formatter; - } else if (isFunction(formatter)) { - template = formatter(tick.value, idx, { - level: tick.level - }); - } else { - var defaults2 = extend({}, defaultLeveledFormatter); - if (tick.level > 0) { - for (var i = 0; i < primaryTimeUnits.length; ++i) { - defaults2[primaryTimeUnits[i]] = "{primary|" + defaults2[primaryTimeUnits[i]] + "}"; - } - } - var mergedFormatter = formatter ? formatter.inherit === false ? formatter : defaults(formatter, defaults2) : defaults2; - var unit = getUnitFromValue(tick.value, isUTC); - if (mergedFormatter[unit]) { - template = mergedFormatter[unit]; - } else if (mergedFormatter.inherit) { - var targetId = timeUnits.indexOf(unit); - for (var i = targetId - 1; i >= 0; --i) { - if (mergedFormatter[unit]) { - template = mergedFormatter[unit]; - break; - } - } - template = template || defaults2.none; - } - if (isArray(template)) { - var levelId = tick.level == null ? 0 : tick.level >= 0 ? tick.level : template.length + tick.level; - levelId = Math.min(levelId, template.length - 1); - template = template[levelId]; - } - } - return format(new Date(tick.value), template, isUTC, lang); - } - function getUnitFromValue(value, isUTC) { - var date = parseDate(value); - var M = date[monthGetterName(isUTC)]() + 1; - var d = date[dateGetterName(isUTC)](); - var h = date[hoursGetterName(isUTC)](); - var m2 = date[minutesGetterName(isUTC)](); - var s = date[secondsGetterName(isUTC)](); - var S = date[millisecondsGetterName(isUTC)](); - var isSecond = S === 0; - var isMinute = isSecond && s === 0; - var isHour = isMinute && m2 === 0; - var isDay = isHour && h === 0; - var isMonth = isDay && d === 1; - var isYear = isMonth && M === 1; - if (isYear) { - return "year"; - } else if (isMonth) { - return "month"; - } else if (isDay) { - return "day"; - } else if (isHour) { - return "hour"; - } else if (isMinute) { - return "minute"; - } else if (isSecond) { - return "second"; - } else { - return "millisecond"; - } - } - function getUnitValue(value, unit, isUTC) { - var date = isNumber(value) ? parseDate(value) : value; - unit = unit || getUnitFromValue(value, isUTC); - switch (unit) { - case "year": - return date[fullYearGetterName(isUTC)](); - case "half-year": - return date[monthGetterName(isUTC)]() >= 6 ? 1 : 0; - case "quarter": - return Math.floor((date[monthGetterName(isUTC)]() + 1) / 4); - case "month": - return date[monthGetterName(isUTC)](); - case "day": - return date[dateGetterName(isUTC)](); - case "half-day": - return date[hoursGetterName(isUTC)]() / 24; - case "hour": - return date[hoursGetterName(isUTC)](); - case "minute": - return date[minutesGetterName(isUTC)](); - case "second": - return date[secondsGetterName(isUTC)](); - case "millisecond": - return date[millisecondsGetterName(isUTC)](); - } - } - function fullYearGetterName(isUTC) { - return isUTC ? "getUTCFullYear" : "getFullYear"; - } - function monthGetterName(isUTC) { - return isUTC ? "getUTCMonth" : "getMonth"; - } - function dateGetterName(isUTC) { - return isUTC ? "getUTCDate" : "getDate"; - } - function hoursGetterName(isUTC) { - return isUTC ? "getUTCHours" : "getHours"; - } - function minutesGetterName(isUTC) { - return isUTC ? "getUTCMinutes" : "getMinutes"; - } - function secondsGetterName(isUTC) { - return isUTC ? "getUTCSeconds" : "getSeconds"; - } - function millisecondsGetterName(isUTC) { - return isUTC ? "getUTCMilliseconds" : "getMilliseconds"; - } - function fullYearSetterName(isUTC) { - return isUTC ? "setUTCFullYear" : "setFullYear"; - } - function monthSetterName(isUTC) { - return isUTC ? "setUTCMonth" : "setMonth"; - } - function dateSetterName(isUTC) { - return isUTC ? "setUTCDate" : "setDate"; - } - function hoursSetterName(isUTC) { - return isUTC ? "setUTCHours" : "setHours"; - } - function minutesSetterName(isUTC) { - return isUTC ? "setUTCMinutes" : "setMinutes"; - } - function secondsSetterName(isUTC) { - return isUTC ? "setUTCSeconds" : "setSeconds"; - } - function millisecondsSetterName(isUTC) { - return isUTC ? "setUTCMilliseconds" : "setMilliseconds"; - } - - // node_modules/echarts/lib/legacy/getTextRect.js - function getTextRect(text, font, align, verticalAlign, padding, rich, truncate, lineHeight) { - var textEl = new Text_default({ - style: { - text, - font, - align, - verticalAlign, - padding, - rich, - overflow: truncate ? "truncate" : null, - lineHeight - } - }); - return textEl.getBoundingRect(); - } - - // node_modules/echarts/lib/util/format.js - function addCommas(x) { - if (!isNumeric(x)) { - return isString(x) ? x : "-"; - } - var parts = (x + "").split("."); - return parts[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (parts.length > 1 ? "." + parts[1] : ""); - } - function toCamelCase(str, upperCaseFirst) { - str = (str || "").toLowerCase().replace(/-(.)/g, function(match, group1) { - return group1.toUpperCase(); - }); - if (upperCaseFirst && str) { - str = str.charAt(0).toUpperCase() + str.slice(1); - } - return str; - } - var normalizeCssArray2 = normalizeCssArray; - function makeValueReadable(value, valueType, useUTC) { - var USER_READABLE_DEFUALT_TIME_PATTERN = "{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}"; - function stringToUserReadable(str) { - return str && trim(str) ? str : "-"; - } - function isNumberUserReadable(num) { - return !!(num != null && !isNaN(num) && isFinite(num)); - } - var isTypeTime = valueType === "time"; - var isValueDate = value instanceof Date; - if (isTypeTime || isValueDate) { - var date = isTypeTime ? parseDate(value) : value; - if (!isNaN(+date)) { - return format(date, USER_READABLE_DEFUALT_TIME_PATTERN, useUTC); - } else if (isValueDate) { - return "-"; - } - } - if (valueType === "ordinal") { - return isStringSafe(value) ? stringToUserReadable(value) : isNumber(value) ? isNumberUserReadable(value) ? value + "" : "-" : "-"; - } - var numericResult = numericToNumber(value); - return isNumberUserReadable(numericResult) ? addCommas(numericResult) : isStringSafe(value) ? stringToUserReadable(value) : typeof value === "boolean" ? value + "" : "-"; - } - var TPL_VAR_ALIAS = ["a", "b", "c", "d", "e", "f", "g"]; - var wrapVar = function(varName, seriesIdx) { - return "{" + varName + (seriesIdx == null ? "" : seriesIdx) + "}"; - }; - function formatTpl(tpl, paramsList, encode) { - if (!isArray(paramsList)) { - paramsList = [paramsList]; - } - var seriesLen = paramsList.length; - if (!seriesLen) { - return ""; - } - var $vars = paramsList[0].$vars || []; - for (var i = 0; i < $vars.length; i++) { - var alias = TPL_VAR_ALIAS[i]; - tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0)); - } - for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) { - for (var k = 0; k < $vars.length; k++) { - var val = paramsList[seriesIdx][$vars[k]]; - tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val); - } - } - return tpl; - } - function formatTplSimple(tpl, param, encode) { - each(param, function(value, key) { - tpl = tpl.replace("{" + key + "}", encode ? encodeHTML(value) : value); - }); - return tpl; - } - function getTooltipMarker(inOpt, extraCssText) { - var opt = isString(inOpt) ? { - color: inOpt, - extraCssText - } : inOpt || {}; - var color = opt.color; - var type = opt.type; - extraCssText = opt.extraCssText; - var renderMode = opt.renderMode || "html"; - if (!color) { - return ""; - } - if (renderMode === "html") { - return type === "subItem" ? '' : ''; - } else { - var markerId = opt.markerId || "markerX"; - return { - renderMode, - content: "{" + markerId + "|} ", - style: type === "subItem" ? { - width: 4, - height: 4, - borderRadius: 2, - backgroundColor: color - } : { - width: 10, - height: 10, - borderRadius: 5, - backgroundColor: color - } - }; - } - } - function formatTime(tpl, value, isUTC) { - if (true) { - deprecateReplaceLog("echarts.format.formatTime", "echarts.time.format"); - } - if (tpl === "week" || tpl === "month" || tpl === "quarter" || tpl === "half-year" || tpl === "year") { - tpl = "MM-dd\nyyyy"; - } - var date = parseDate(value); - var getUTC = isUTC ? "getUTC" : "get"; - var y = date[getUTC + "FullYear"](); - var M = date[getUTC + "Month"]() + 1; - var d = date[getUTC + "Date"](); - var h = date[getUTC + "Hours"](); - var m2 = date[getUTC + "Minutes"](); - var s = date[getUTC + "Seconds"](); - var S = date[getUTC + "Milliseconds"](); - tpl = tpl.replace("MM", pad(M, 2)).replace("M", M).replace("yyyy", y).replace("yy", pad(y % 100 + "", 2)).replace("dd", pad(d, 2)).replace("d", d).replace("hh", pad(h, 2)).replace("h", h).replace("mm", pad(m2, 2)).replace("m", m2).replace("ss", pad(s, 2)).replace("s", s).replace("SSS", pad(S, 3)); - return tpl; - } - function capitalFirst(str) { - return str ? str.charAt(0).toUpperCase() + str.substr(1) : str; - } - function convertToColorString(color, defaultColor) { - defaultColor = defaultColor || "transparent"; - return isString(color) ? color : isObject(color) ? color.colorStops && (color.colorStops[0] || {}).color || defaultColor : defaultColor; - } - function windowOpen(link, target) { - if (target === "_blank" || target === "blank") { - var blank = window.open(); - blank.opener = null; - blank.location.href = link; - } else { - window.open(link, target); - } - } - - // node_modules/echarts/lib/util/layout.js - var each2 = each; - var LOCATION_PARAMS = ["left", "right", "top", "bottom", "width", "height"]; - var HV_NAMES = [["width", "left", "right"], ["height", "top", "bottom"]]; - function boxLayout(orient, group, gap, maxWidth, maxHeight) { - var x = 0; - var y = 0; - if (maxWidth == null) { - maxWidth = Infinity; - } - if (maxHeight == null) { - maxHeight = Infinity; - } - var currentLineMaxSize = 0; - group.eachChild(function(child, idx) { - var rect = child.getBoundingRect(); - var nextChild = group.childAt(idx + 1); - var nextChildRect = nextChild && nextChild.getBoundingRect(); - var nextX; - var nextY; - if (orient === "horizontal") { - var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0); - nextX = x + moveX; - if (nextX > maxWidth || child.newline) { - x = 0; - nextX = moveX; - y += currentLineMaxSize + gap; - currentLineMaxSize = rect.height; - } else { - currentLineMaxSize = Math.max(currentLineMaxSize, rect.height); - } - } else { - var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0); - nextY = y + moveY; - if (nextY > maxHeight || child.newline) { - x += currentLineMaxSize + gap; - y = 0; - nextY = moveY; - currentLineMaxSize = rect.width; - } else { - currentLineMaxSize = Math.max(currentLineMaxSize, rect.width); - } - } - if (child.newline) { - return; - } - child.x = x; - child.y = y; - child.markRedraw(); - orient === "horizontal" ? x = nextX + gap : y = nextY + gap; - }); - } - var box = boxLayout; - var vbox = curry(boxLayout, "vertical"); - var hbox = curry(boxLayout, "horizontal"); - function getAvailableSize(positionInfo, containerRect, margin) { - var containerWidth = containerRect.width; - var containerHeight = containerRect.height; - var x = parsePercent2(positionInfo.left, containerWidth); - var y = parsePercent2(positionInfo.top, containerHeight); - var x2 = parsePercent2(positionInfo.right, containerWidth); - var y2 = parsePercent2(positionInfo.bottom, containerHeight); - (isNaN(x) || isNaN(parseFloat(positionInfo.left))) && (x = 0); - (isNaN(x2) || isNaN(parseFloat(positionInfo.right))) && (x2 = containerWidth); - (isNaN(y) || isNaN(parseFloat(positionInfo.top))) && (y = 0); - (isNaN(y2) || isNaN(parseFloat(positionInfo.bottom))) && (y2 = containerHeight); - margin = normalizeCssArray2(margin || 0); - return { - width: Math.max(x2 - x - margin[1] - margin[3], 0), - height: Math.max(y2 - y - margin[0] - margin[2], 0) - }; - } - function getLayoutRect(positionInfo, containerRect, margin) { - margin = normalizeCssArray2(margin || 0); - var containerWidth = containerRect.width; - var containerHeight = containerRect.height; - var left = parsePercent2(positionInfo.left, containerWidth); - var top = parsePercent2(positionInfo.top, containerHeight); - var right = parsePercent2(positionInfo.right, containerWidth); - var bottom = parsePercent2(positionInfo.bottom, containerHeight); - var width = parsePercent2(positionInfo.width, containerWidth); - var height = parsePercent2(positionInfo.height, containerHeight); - var verticalMargin = margin[2] + margin[0]; - var horizontalMargin = margin[1] + margin[3]; - var aspect = positionInfo.aspect; - if (isNaN(width)) { - width = containerWidth - right - horizontalMargin - left; - } - if (isNaN(height)) { - height = containerHeight - bottom - verticalMargin - top; - } - if (aspect != null) { - if (isNaN(width) && isNaN(height)) { - if (aspect > containerWidth / containerHeight) { - width = containerWidth * 0.8; - } else { - height = containerHeight * 0.8; - } - } - if (isNaN(width)) { - width = aspect * height; - } - if (isNaN(height)) { - height = width / aspect; - } - } - if (isNaN(left)) { - left = containerWidth - right - width - horizontalMargin; - } - if (isNaN(top)) { - top = containerHeight - bottom - height - verticalMargin; - } - switch (positionInfo.left || positionInfo.right) { - case "center": - left = containerWidth / 2 - width / 2 - margin[3]; - break; - case "right": - left = containerWidth - width - horizontalMargin; - break; - } - switch (positionInfo.top || positionInfo.bottom) { - case "middle": - case "center": - top = containerHeight / 2 - height / 2 - margin[0]; - break; - case "bottom": - top = containerHeight - height - verticalMargin; - break; - } - left = left || 0; - top = top || 0; - if (isNaN(width)) { - width = containerWidth - horizontalMargin - left - (right || 0); - } - if (isNaN(height)) { - height = containerHeight - verticalMargin - top - (bottom || 0); - } - var rect = new BoundingRect_default(left + margin[3], top + margin[0], width, height); - rect.margin = margin; - return rect; - } - function positionElement(el, positionInfo, containerRect, margin, opt, out2) { - var h = !opt || !opt.hv || opt.hv[0]; - var v = !opt || !opt.hv || opt.hv[1]; - var boundingMode = opt && opt.boundingMode || "all"; - out2 = out2 || el; - out2.x = el.x; - out2.y = el.y; - if (!h && !v) { - return false; - } - var rect; - if (boundingMode === "raw") { - rect = el.type === "group" ? new BoundingRect_default(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) : el.getBoundingRect(); - } else { - rect = el.getBoundingRect(); - if (el.needLocalTransform()) { - var transform2 = el.getLocalTransform(); - rect = rect.clone(); - rect.applyTransform(transform2); - } - } - var layoutRect = getLayoutRect(defaults({ - width: rect.width, - height: rect.height - }, positionInfo), containerRect, margin); - var dx = h ? layoutRect.x - rect.x : 0; - var dy = v ? layoutRect.y - rect.y : 0; - if (boundingMode === "raw") { - out2.x = dx; - out2.y = dy; - } else { - out2.x += dx; - out2.y += dy; - } - if (out2 === el) { - el.markRedraw(); - } - return true; - } - function sizeCalculable(option, hvIdx) { - return option[HV_NAMES[hvIdx][0]] != null || option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null; - } - function fetchLayoutMode(ins) { - var layoutMode = ins.layoutMode || ins.constructor.layoutMode; - return isObject(layoutMode) ? layoutMode : layoutMode ? { - type: layoutMode - } : null; - } - function mergeLayoutParam(targetOption, newOption, opt) { - var ignoreSize = opt && opt.ignoreSize; - !isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]); - var hResult = merge2(HV_NAMES[0], 0); - var vResult = merge2(HV_NAMES[1], 1); - copy3(HV_NAMES[0], targetOption, hResult); - copy3(HV_NAMES[1], targetOption, vResult); - function merge2(names, hvIdx) { - var newParams = {}; - var newValueCount = 0; - var merged = {}; - var mergedValueCount = 0; - var enoughParamNumber = 2; - each2(names, function(name) { - merged[name] = targetOption[name]; - }); - each2(names, function(name) { - hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]); - hasValue(newParams, name) && newValueCount++; - hasValue(merged, name) && mergedValueCount++; - }); - if (ignoreSize[hvIdx]) { - if (hasValue(newOption, names[1])) { - merged[names[2]] = null; - } else if (hasValue(newOption, names[2])) { - merged[names[1]] = null; - } - return merged; - } - if (mergedValueCount === enoughParamNumber || !newValueCount) { - return merged; - } else if (newValueCount >= enoughParamNumber) { - return newParams; - } else { - for (var i = 0; i < names.length; i++) { - var name_1 = names[i]; - if (!hasProp(newParams, name_1) && hasProp(targetOption, name_1)) { - newParams[name_1] = targetOption[name_1]; - break; - } - } - return newParams; - } - } - function hasProp(obj, name) { - return obj.hasOwnProperty(name); - } - function hasValue(obj, name) { - return obj[name] != null && obj[name] !== "auto"; - } - function copy3(names, target, source) { - each2(names, function(name) { - target[name] = source[name]; - }); - } - } - function getLayoutParams(source) { - return copyLayoutParams({}, source); - } - function copyLayoutParams(target, source) { - source && target && each2(LOCATION_PARAMS, function(name) { - source.hasOwnProperty(name) && (target[name] = source[name]); - }); - return target; - } - - // node_modules/echarts/lib/model/Component.js - var inner = makeInner(); - var ComponentModel = ( - /** @class */ - function(_super) { - __extends(ComponentModel2, _super); - function ComponentModel2(option, parentModel, ecModel) { - var _this = _super.call(this, option, parentModel, ecModel) || this; - _this.uid = getUID("ec_cpt_model"); - return _this; - } - ComponentModel2.prototype.init = function(option, parentModel, ecModel) { - this.mergeDefaultAndTheme(option, ecModel); - }; - ComponentModel2.prototype.mergeDefaultAndTheme = function(option, ecModel) { - var layoutMode = fetchLayoutMode(this); - var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; - var themeModel = ecModel.getTheme(); - merge(option, themeModel.get(this.mainType)); - merge(option, this.getDefaultOption()); - if (layoutMode) { - mergeLayoutParam(option, inputPositionParams, layoutMode); - } - }; - ComponentModel2.prototype.mergeOption = function(option, ecModel) { - merge(this.option, option, true); - var layoutMode = fetchLayoutMode(this); - if (layoutMode) { - mergeLayoutParam(this.option, option, layoutMode); - } - }; - ComponentModel2.prototype.optionUpdated = function(newCptOption, isInit) { - }; - ComponentModel2.prototype.getDefaultOption = function() { - var ctor = this.constructor; - if (!isExtendedClass(ctor)) { - return ctor.defaultOption; - } - var fields = inner(this); - if (!fields.defaultOption) { - var optList = []; - var clz = ctor; - while (clz) { - var opt = clz.prototype.defaultOption; - opt && optList.push(opt); - clz = clz.superClass; - } - var defaultOption3 = {}; - for (var i = optList.length - 1; i >= 0; i--) { - defaultOption3 = merge(defaultOption3, optList[i], true); - } - fields.defaultOption = defaultOption3; - } - return fields.defaultOption; - }; - ComponentModel2.prototype.getReferringComponents = function(mainType, opt) { - var indexKey = mainType + "Index"; - var idKey = mainType + "Id"; - return queryReferringComponents(this.ecModel, mainType, { - index: this.get(indexKey, true), - id: this.get(idKey, true) - }, opt); - }; - ComponentModel2.prototype.getBoxLayoutParams = function() { - var boxLayoutModel = this; - return { - left: boxLayoutModel.get("left"), - top: boxLayoutModel.get("top"), - right: boxLayoutModel.get("right"), - bottom: boxLayoutModel.get("bottom"), - width: boxLayoutModel.get("width"), - height: boxLayoutModel.get("height") - }; - }; - ComponentModel2.prototype.getZLevelKey = function() { - return ""; - }; - ComponentModel2.prototype.setZLevel = function(zlevel) { - this.option.zlevel = zlevel; - }; - ComponentModel2.protoInitialize = function() { - var proto2 = ComponentModel2.prototype; - proto2.type = "component"; - proto2.id = ""; - proto2.name = ""; - proto2.mainType = ""; - proto2.subType = ""; - proto2.componentIndex = 0; - }(); - return ComponentModel2; - }(Model_default) - ); - mountExtend(ComponentModel, Model_default); - enableClassManagement(ComponentModel); - enableSubTypeDefaulter(ComponentModel); - enableTopologicalTravel(ComponentModel, getDependencies); - function getDependencies(componentType) { - var deps = []; - each(ComponentModel.getClassesByMainType(componentType), function(clz) { - deps = deps.concat(clz.dependencies || clz.prototype.dependencies || []); - }); - deps = map(deps, function(type) { - return parseClassType(type).main; - }); - if (componentType !== "dataset" && indexOf(deps, "dataset") <= 0) { - deps.unshift("dataset"); - } - return deps; - } - var Component_default = ComponentModel; - - // node_modules/echarts/lib/model/globalDefault.js - var platform = ""; - if (typeof navigator !== "undefined") { - platform = navigator.platform || ""; - } - var decalColor = "rgba(0, 0, 0, 0.2)"; - var globalDefault_default = { - darkMode: "auto", - // backgroundColor: 'rgba(0,0,0,0)', - colorBy: "series", - color: ["#5470c6", "#91cc75", "#fac858", "#ee6666", "#73c0de", "#3ba272", "#fc8452", "#9a60b4", "#ea7ccc"], - gradientColor: ["#f6efa6", "#d88273", "#bf444c"], - aria: { - decal: { - decals: [{ - color: decalColor, - dashArrayX: [1, 0], - dashArrayY: [2, 5], - symbolSize: 1, - rotation: Math.PI / 6 - }, { - color: decalColor, - symbol: "circle", - dashArrayX: [[8, 8], [0, 8, 8, 0]], - dashArrayY: [6, 0], - symbolSize: 0.8 - }, { - color: decalColor, - dashArrayX: [1, 0], - dashArrayY: [4, 3], - rotation: -Math.PI / 4 - }, { - color: decalColor, - dashArrayX: [[6, 6], [0, 6, 6, 0]], - dashArrayY: [6, 0] - }, { - color: decalColor, - dashArrayX: [[1, 0], [1, 6]], - dashArrayY: [1, 0, 6, 0], - rotation: Math.PI / 4 - }, { - color: decalColor, - symbol: "triangle", - dashArrayX: [[9, 9], [0, 9, 9, 0]], - dashArrayY: [7, 2], - symbolSize: 0.75 - }] - } - }, - // If xAxis and yAxis declared, grid is created by default. - // grid: {}, - textStyle: { - // color: '#000', - // decoration: 'none', - // PENDING - fontFamily: platform.match(/^Win/) ? "Microsoft YaHei" : "sans-serif", - // fontFamily: 'Arial, Verdana, sans-serif', - fontSize: 12, - fontStyle: "normal", - fontWeight: "normal" - }, - // http://blogs.adobe.com/webplatform/2014/02/24/using-blend-modes-in-html-canvas/ - // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation - // Default is source-over - blendMode: null, - stateAnimation: { - duration: 300, - easing: "cubicOut" - }, - animation: "auto", - animationDuration: 1e3, - animationDurationUpdate: 500, - animationEasing: "cubicInOut", - animationEasingUpdate: "cubicInOut", - animationThreshold: 2e3, - // Configuration for progressive/incremental rendering - progressiveThreshold: 3e3, - progressive: 400, - // Threshold of if use single hover layer to optimize. - // It is recommended that `hoverLayerThreshold` is equivalent to or less than - // `progressiveThreshold`, otherwise hover will cause restart of progressive, - // which is unexpected. - // see example . - hoverLayerThreshold: 3e3, - // See: module:echarts/scale/Time - useUTC: false - }; - - // node_modules/echarts/lib/util/types.js - var VISUAL_DIMENSIONS = createHashMap(["tooltip", "label", "itemName", "itemId", "itemGroupId", "itemChildGroupId", "seriesName"]); - var SOURCE_FORMAT_ORIGINAL = "original"; - var SOURCE_FORMAT_ARRAY_ROWS = "arrayRows"; - var SOURCE_FORMAT_OBJECT_ROWS = "objectRows"; - var SOURCE_FORMAT_KEYED_COLUMNS = "keyedColumns"; - var SOURCE_FORMAT_TYPED_ARRAY = "typedArray"; - var SOURCE_FORMAT_UNKNOWN = "unknown"; - var SERIES_LAYOUT_BY_COLUMN = "column"; - var SERIES_LAYOUT_BY_ROW = "row"; - - // node_modules/echarts/lib/data/helper/sourceHelper.js - var BE_ORDINAL = { - Must: 1, - Might: 2, - Not: 3 - // Other cases - }; - var innerGlobalModel = makeInner(); - function resetSourceDefaulter(ecModel) { - innerGlobalModel(ecModel).datasetMap = createHashMap(); - } - function makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) { - var encode = {}; - var datasetModel = querySeriesUpstreamDatasetModel(seriesModel); - if (!datasetModel || !coordDimensions) { - return encode; - } - var encodeItemName = []; - var encodeSeriesName = []; - var ecModel = seriesModel.ecModel; - var datasetMap = innerGlobalModel(ecModel).datasetMap; - var key = datasetModel.uid + "_" + source.seriesLayoutBy; - var baseCategoryDimIndex; - var categoryWayValueDimStart; - coordDimensions = coordDimensions.slice(); - each(coordDimensions, function(coordDimInfoLoose, coordDimIdx) { - var coordDimInfo = isObject(coordDimInfoLoose) ? coordDimInfoLoose : coordDimensions[coordDimIdx] = { - name: coordDimInfoLoose - }; - if (coordDimInfo.type === "ordinal" && baseCategoryDimIndex == null) { - baseCategoryDimIndex = coordDimIdx; - categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimInfo); - } - encode[coordDimInfo.name] = []; - }); - var datasetRecord = datasetMap.get(key) || datasetMap.set(key, { - categoryWayDim: categoryWayValueDimStart, - valueWayDim: 0 - }); - each(coordDimensions, function(coordDimInfo, coordDimIdx) { - var coordDimName = coordDimInfo.name; - var count2 = getDataDimCountOnCoordDim(coordDimInfo); - if (baseCategoryDimIndex == null) { - var start3 = datasetRecord.valueWayDim; - pushDim(encode[coordDimName], start3, count2); - pushDim(encodeSeriesName, start3, count2); - datasetRecord.valueWayDim += count2; - } else if (baseCategoryDimIndex === coordDimIdx) { - pushDim(encode[coordDimName], 0, count2); - pushDim(encodeItemName, 0, count2); - } else { - var start3 = datasetRecord.categoryWayDim; - pushDim(encode[coordDimName], start3, count2); - pushDim(encodeSeriesName, start3, count2); - datasetRecord.categoryWayDim += count2; - } - }); - function pushDim(dimIdxArr, idxFrom, idxCount) { - for (var i = 0; i < idxCount; i++) { - dimIdxArr.push(idxFrom + i); - } - } - function getDataDimCountOnCoordDim(coordDimInfo) { - var dimsDef = coordDimInfo.dimsDef; - return dimsDef ? dimsDef.length : 1; - } - encodeItemName.length && (encode.itemName = encodeItemName); - encodeSeriesName.length && (encode.seriesName = encodeSeriesName); - return encode; - } - function makeSeriesEncodeForNameBased(seriesModel, source, dimCount) { - var encode = {}; - var datasetModel = querySeriesUpstreamDatasetModel(seriesModel); - if (!datasetModel) { - return encode; - } - var sourceFormat = source.sourceFormat; - var dimensionsDefine = source.dimensionsDefine; - var potentialNameDimIndex; - if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) { - each(dimensionsDefine, function(dim, idx) { - if ((isObject(dim) ? dim.name : dim) === "name") { - potentialNameDimIndex = idx; - } - }); - } - var idxResult = function() { - var idxRes0 = {}; - var idxRes1 = {}; - var guessRecords = []; - for (var i = 0, len2 = Math.min(5, dimCount); i < len2; i++) { - var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i); - guessRecords.push(guessResult); - var isPureNumber = guessResult === BE_ORDINAL.Not; - if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) { - idxRes0.v = i; - } - if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not) { - idxRes0.n = i; - } - if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) { - return idxRes0; - } - if (!isPureNumber) { - if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) { - idxRes1.v = i; - } - if (idxRes1.n == null || idxRes1.n === idxRes1.v) { - idxRes1.n = i; - } - } - } - function fulfilled(idxResult2) { - return idxResult2.v != null && idxResult2.n != null; - } - return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null; - }(); - if (idxResult) { - encode.value = [idxResult.v]; - var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n; - encode.itemName = [nameDimIndex]; - encode.seriesName = [nameDimIndex]; - } - return encode; - } - function querySeriesUpstreamDatasetModel(seriesModel) { - var thisData = seriesModel.get("data", true); - if (!thisData) { - return queryReferringComponents(seriesModel.ecModel, "dataset", { - index: seriesModel.get("datasetIndex", true), - id: seriesModel.get("datasetId", true) - }, SINGLE_REFERRING).models[0]; - } - } - function queryDatasetUpstreamDatasetModels(datasetModel) { - if (!datasetModel.get("transform", true) && !datasetModel.get("fromTransformResult", true)) { - return []; - } - return queryReferringComponents(datasetModel.ecModel, "dataset", { - index: datasetModel.get("fromDatasetIndex", true), - id: datasetModel.get("fromDatasetId", true) - }, SINGLE_REFERRING).models; - } - function guessOrdinal(source, dimIndex) { - return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex); - } - function doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) { - var result; - var maxLoop = 5; - if (isTypedArray(data)) { - return BE_ORDINAL.Not; - } - var dimName; - var dimType; - if (dimensionsDefine) { - var dimDefItem = dimensionsDefine[dimIndex]; - if (isObject(dimDefItem)) { - dimName = dimDefItem.name; - dimType = dimDefItem.type; - } else if (isString(dimDefItem)) { - dimName = dimDefItem; - } - } - if (dimType != null) { - return dimType === "ordinal" ? BE_ORDINAL.Must : BE_ORDINAL.Not; - } - if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) { - var dataArrayRows = data; - if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) { - var sample = dataArrayRows[dimIndex]; - for (var i = 0; i < (sample || []).length && i < maxLoop; i++) { - if ((result = detectValue(sample[startIndex + i])) != null) { - return result; - } - } - } else { - for (var i = 0; i < dataArrayRows.length && i < maxLoop; i++) { - var row = dataArrayRows[startIndex + i]; - if (row && (result = detectValue(row[dimIndex])) != null) { - return result; - } - } - } - } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) { - var dataObjectRows = data; - if (!dimName) { - return BE_ORDINAL.Not; - } - for (var i = 0; i < dataObjectRows.length && i < maxLoop; i++) { - var item = dataObjectRows[i]; - if (item && (result = detectValue(item[dimName])) != null) { - return result; - } - } - } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) { - var dataKeyedColumns = data; - if (!dimName) { - return BE_ORDINAL.Not; - } - var sample = dataKeyedColumns[dimName]; - if (!sample || isTypedArray(sample)) { - return BE_ORDINAL.Not; - } - for (var i = 0; i < sample.length && i < maxLoop; i++) { - if ((result = detectValue(sample[i])) != null) { - return result; - } - } - } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) { - var dataOriginal = data; - for (var i = 0; i < dataOriginal.length && i < maxLoop; i++) { - var item = dataOriginal[i]; - var val = getDataItemValue(item); - if (!isArray(val)) { - return BE_ORDINAL.Not; - } - if ((result = detectValue(val[dimIndex])) != null) { - return result; - } - } - } - function detectValue(val2) { - var beStr = isString(val2); - if (val2 != null && Number.isFinite(Number(val2)) && val2 !== "") { - return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not; - } else if (beStr && val2 !== "-") { - return BE_ORDINAL.Must; - } - } - return BE_ORDINAL.Not; - } - - // node_modules/echarts/lib/model/internalComponentCreator.js - var internalOptionCreatorMap = createHashMap(); - function registerInternalOptionCreator(mainType, creator) { - assert(internalOptionCreatorMap.get(mainType) == null && creator); - internalOptionCreatorMap.set(mainType, creator); - } - function concatInternalOptions(ecModel, mainType, newCmptOptionList) { - var internalOptionCreator = internalOptionCreatorMap.get(mainType); - if (!internalOptionCreator) { - return newCmptOptionList; - } - var internalOptions = internalOptionCreator(ecModel); - if (!internalOptions) { - return newCmptOptionList; - } - if (true) { - for (var i = 0; i < internalOptions.length; i++) { - assert(isComponentIdInternal(internalOptions[i])); - } - } - return newCmptOptionList.concat(internalOptions); - } - - // node_modules/echarts/lib/model/mixin/palette.js - var innerColor = makeInner(); - var innerDecal = makeInner(); - var PaletteMixin = ( - /** @class */ - function() { - function PaletteMixin2() { - } - PaletteMixin2.prototype.getColorFromPalette = function(name, scope, requestNum) { - var defaultPalette = normalizeToArray(this.get("color", true)); - var layeredPalette = this.get("colorLayer", true); - return getFromPalette(this, innerColor, defaultPalette, layeredPalette, name, scope, requestNum); - }; - PaletteMixin2.prototype.clearColorPalette = function() { - clearPalette(this, innerColor); - }; - return PaletteMixin2; - }() - ); - function getDecalFromPalette(ecModel, name, scope, requestNum) { - var defaultDecals = normalizeToArray(ecModel.get(["aria", "decal", "decals"])); - return getFromPalette(ecModel, innerDecal, defaultDecals, null, name, scope, requestNum); - } - function getNearestPalette(palettes, requestColorNum) { - var paletteNum = palettes.length; - for (var i = 0; i < paletteNum; i++) { - if (palettes[i].length > requestColorNum) { - return palettes[i]; - } - } - return palettes[paletteNum - 1]; - } - function getFromPalette(that, inner23, defaultPalette, layeredPalette, name, scope, requestNum) { - scope = scope || that; - var scopeFields = inner23(scope); - var paletteIdx = scopeFields.paletteIdx || 0; - var paletteNameMap = scopeFields.paletteNameMap = scopeFields.paletteNameMap || {}; - if (paletteNameMap.hasOwnProperty(name)) { - return paletteNameMap[name]; - } - var palette = requestNum == null || !layeredPalette ? defaultPalette : getNearestPalette(layeredPalette, requestNum); - palette = palette || defaultPalette; - if (!palette || !palette.length) { - return; - } - var pickedPaletteItem = palette[paletteIdx]; - if (name) { - paletteNameMap[name] = pickedPaletteItem; - } - scopeFields.paletteIdx = (paletteIdx + 1) % palette.length; - return pickedPaletteItem; - } - function clearPalette(that, inner23) { - inner23(that).paletteIdx = 0; - inner23(that).paletteNameMap = {}; - } - - // node_modules/echarts/lib/model/Global.js - var reCreateSeriesIndices; - var assertSeriesInitialized; - var initBase; - var OPTION_INNER_KEY = "\0_ec_inner"; - var OPTION_INNER_VALUE = 1; - var BUITIN_COMPONENTS_MAP = { - grid: "GridComponent", - polar: "PolarComponent", - geo: "GeoComponent", - singleAxis: "SingleAxisComponent", - parallel: "ParallelComponent", - calendar: "CalendarComponent", - graphic: "GraphicComponent", - toolbox: "ToolboxComponent", - tooltip: "TooltipComponent", - axisPointer: "AxisPointerComponent", - brush: "BrushComponent", - title: "TitleComponent", - timeline: "TimelineComponent", - markPoint: "MarkPointComponent", - markLine: "MarkLineComponent", - markArea: "MarkAreaComponent", - legend: "LegendComponent", - dataZoom: "DataZoomComponent", - visualMap: "VisualMapComponent", - // aria: 'AriaComponent', - // dataset: 'DatasetComponent', - // Dependencies - xAxis: "GridComponent", - yAxis: "GridComponent", - angleAxis: "PolarComponent", - radiusAxis: "PolarComponent" - }; - var BUILTIN_CHARTS_MAP = { - line: "LineChart", - bar: "BarChart", - pie: "PieChart", - scatter: "ScatterChart", - radar: "RadarChart", - map: "MapChart", - tree: "TreeChart", - treemap: "TreemapChart", - graph: "GraphChart", - gauge: "GaugeChart", - funnel: "FunnelChart", - parallel: "ParallelChart", - sankey: "SankeyChart", - boxplot: "BoxplotChart", - candlestick: "CandlestickChart", - effectScatter: "EffectScatterChart", - lines: "LinesChart", - heatmap: "HeatmapChart", - pictorialBar: "PictorialBarChart", - themeRiver: "ThemeRiverChart", - sunburst: "SunburstChart", - custom: "CustomChart" - }; - var componetsMissingLogPrinted = {}; - function checkMissingComponents(option) { - each(option, function(componentOption, mainType) { - if (!Component_default.hasClass(mainType)) { - var componentImportName = BUITIN_COMPONENTS_MAP[mainType]; - if (componentImportName && !componetsMissingLogPrinted[componentImportName]) { - error("Component " + mainType + " is used but not imported.\nimport { " + componentImportName + " } from 'echarts/components';\necharts.use([" + componentImportName + "]);"); - componetsMissingLogPrinted[componentImportName] = true; - } - } - }); - } - var GlobalModel = ( - /** @class */ - function(_super) { - __extends(GlobalModel2, _super); - function GlobalModel2() { - return _super !== null && _super.apply(this, arguments) || this; - } - GlobalModel2.prototype.init = function(option, parentModel, ecModel, theme2, locale, optionManager) { - theme2 = theme2 || {}; - this.option = null; - this._theme = new Model_default(theme2); - this._locale = new Model_default(locale); - this._optionManager = optionManager; - }; - GlobalModel2.prototype.setOption = function(option, opts, optionPreprocessorFuncs2) { - if (true) { - assert(option != null, "option is null/undefined"); - assert(option[OPTION_INNER_KEY] !== OPTION_INNER_VALUE, "please use chart.getOption()"); - } - var innerOpt = normalizeSetOptionInput(opts); - this._optionManager.setOption(option, optionPreprocessorFuncs2, innerOpt); - this._resetOption(null, innerOpt); - }; - GlobalModel2.prototype.resetOption = function(type, opt) { - return this._resetOption(type, normalizeSetOptionInput(opt)); - }; - GlobalModel2.prototype._resetOption = function(type, opt) { - var optionChanged = false; - var optionManager = this._optionManager; - if (!type || type === "recreate") { - var baseOption = optionManager.mountOption(type === "recreate"); - if (true) { - checkMissingComponents(baseOption); - } - if (!this.option || type === "recreate") { - initBase(this, baseOption); - } else { - this.restoreData(); - this._mergeOption(baseOption, opt); - } - optionChanged = true; - } - if (type === "timeline" || type === "media") { - this.restoreData(); - } - if (!type || type === "recreate" || type === "timeline") { - var timelineOption = optionManager.getTimelineOption(this); - if (timelineOption) { - optionChanged = true; - this._mergeOption(timelineOption, opt); - } - } - if (!type || type === "recreate" || type === "media") { - var mediaOptions = optionManager.getMediaOption(this); - if (mediaOptions.length) { - each(mediaOptions, function(mediaOption) { - optionChanged = true; - this._mergeOption(mediaOption, opt); - }, this); - } - } - return optionChanged; - }; - GlobalModel2.prototype.mergeOption = function(option) { - this._mergeOption(option, null); - }; - GlobalModel2.prototype._mergeOption = function(newOption, opt) { - var option = this.option; - var componentsMap = this._componentsMap; - var componentsCount = this._componentsCount; - var newCmptTypes = []; - var newCmptTypeMap = createHashMap(); - var replaceMergeMainTypeMap = opt && opt.replaceMergeMainTypeMap; - resetSourceDefaulter(this); - each(newOption, function(componentOption, mainType) { - if (componentOption == null) { - return; - } - if (!Component_default.hasClass(mainType)) { - option[mainType] = option[mainType] == null ? clone(componentOption) : merge(option[mainType], componentOption, true); - } else if (mainType) { - newCmptTypes.push(mainType); - newCmptTypeMap.set(mainType, true); - } - }); - if (replaceMergeMainTypeMap) { - replaceMergeMainTypeMap.each(function(val, mainTypeInReplaceMerge) { - if (Component_default.hasClass(mainTypeInReplaceMerge) && !newCmptTypeMap.get(mainTypeInReplaceMerge)) { - newCmptTypes.push(mainTypeInReplaceMerge); - newCmptTypeMap.set(mainTypeInReplaceMerge, true); - } - }); - } - Component_default.topologicalTravel(newCmptTypes, Component_default.getAllClassMainTypes(), visitComponent, this); - function visitComponent(mainType) { - var newCmptOptionList = concatInternalOptions(this, mainType, normalizeToArray(newOption[mainType])); - var oldCmptList = componentsMap.get(mainType); - var mergeMode = ( - // `!oldCmptList` means init. See the comment in `mappingToExists` - !oldCmptList ? "replaceAll" : replaceMergeMainTypeMap && replaceMergeMainTypeMap.get(mainType) ? "replaceMerge" : "normalMerge" - ); - var mappingResult = mappingToExists(oldCmptList, newCmptOptionList, mergeMode); - setComponentTypeToKeyInfo(mappingResult, mainType, Component_default); - option[mainType] = null; - componentsMap.set(mainType, null); - componentsCount.set(mainType, 0); - var optionsByMainType = []; - var cmptsByMainType = []; - var cmptsCountByMainType = 0; - var tooltipExists; - var tooltipWarningLogged; - each(mappingResult, function(resultItem, index) { - var componentModel = resultItem.existing; - var newCmptOption = resultItem.newOption; - if (!newCmptOption) { - if (componentModel) { - componentModel.mergeOption({}, this); - componentModel.optionUpdated({}, false); - } - } else { - var isSeriesType = mainType === "series"; - var ComponentModelClass = Component_default.getClass( - mainType, - resultItem.keyInfo.subType, - !isSeriesType - // Give a more detailed warn later if series don't exists - ); - if (!ComponentModelClass) { - if (true) { - var subType = resultItem.keyInfo.subType; - var seriesImportName = BUILTIN_CHARTS_MAP[subType]; - if (!componetsMissingLogPrinted[subType]) { - componetsMissingLogPrinted[subType] = true; - if (seriesImportName) { - error("Series " + subType + " is used but not imported.\nimport { " + seriesImportName + " } from 'echarts/charts';\necharts.use([" + seriesImportName + "]);"); - } else { - error("Unknown series " + subType); - } - } - } - return; - } - if (mainType === "tooltip") { - if (tooltipExists) { - if (true) { - if (!tooltipWarningLogged) { - warn("Currently only one tooltip component is allowed."); - tooltipWarningLogged = true; - } - } - return; - } - tooltipExists = true; - } - if (componentModel && componentModel.constructor === ComponentModelClass) { - componentModel.name = resultItem.keyInfo.name; - componentModel.mergeOption(newCmptOption, this); - componentModel.optionUpdated(newCmptOption, false); - } else { - var extraOpt = extend({ - componentIndex: index - }, resultItem.keyInfo); - componentModel = new ComponentModelClass(newCmptOption, this, this, extraOpt); - extend(componentModel, extraOpt); - if (resultItem.brandNew) { - componentModel.__requireNewView = true; - } - componentModel.init(newCmptOption, this, this); - componentModel.optionUpdated(null, true); - } - } - if (componentModel) { - optionsByMainType.push(componentModel.option); - cmptsByMainType.push(componentModel); - cmptsCountByMainType++; - } else { - optionsByMainType.push(void 0); - cmptsByMainType.push(void 0); - } - }, this); - option[mainType] = optionsByMainType; - componentsMap.set(mainType, cmptsByMainType); - componentsCount.set(mainType, cmptsCountByMainType); - if (mainType === "series") { - reCreateSeriesIndices(this); - } - } - if (!this._seriesIndices) { - reCreateSeriesIndices(this); - } - }; - GlobalModel2.prototype.getOption = function() { - var option = clone(this.option); - each(option, function(optInMainType, mainType) { - if (Component_default.hasClass(mainType)) { - var opts = normalizeToArray(optInMainType); - var realLen = opts.length; - var metNonInner = false; - for (var i = realLen - 1; i >= 0; i--) { - if (opts[i] && !isComponentIdInternal(opts[i])) { - metNonInner = true; - } else { - opts[i] = null; - !metNonInner && realLen--; - } - } - opts.length = realLen; - option[mainType] = opts; - } - }); - delete option[OPTION_INNER_KEY]; - return option; - }; - GlobalModel2.prototype.getTheme = function() { - return this._theme; - }; - GlobalModel2.prototype.getLocaleModel = function() { - return this._locale; - }; - GlobalModel2.prototype.setUpdatePayload = function(payload) { - this._payload = payload; - }; - GlobalModel2.prototype.getUpdatePayload = function() { - return this._payload; - }; - GlobalModel2.prototype.getComponent = function(mainType, idx) { - var list = this._componentsMap.get(mainType); - if (list) { - var cmpt = list[idx || 0]; - if (cmpt) { - return cmpt; - } else if (idx == null) { - for (var i = 0; i < list.length; i++) { - if (list[i]) { - return list[i]; - } - } - } - } - }; - GlobalModel2.prototype.queryComponents = function(condition) { - var mainType = condition.mainType; - if (!mainType) { - return []; - } - var index = condition.index; - var id = condition.id; - var name = condition.name; - var cmpts = this._componentsMap.get(mainType); - if (!cmpts || !cmpts.length) { - return []; - } - var result; - if (index != null) { - result = []; - each(normalizeToArray(index), function(idx) { - cmpts[idx] && result.push(cmpts[idx]); - }); - } else if (id != null) { - result = queryByIdOrName("id", id, cmpts); - } else if (name != null) { - result = queryByIdOrName("name", name, cmpts); - } else { - result = filter(cmpts, function(cmpt) { - return !!cmpt; - }); - } - return filterBySubType(result, condition); - }; - GlobalModel2.prototype.findComponents = function(condition) { - var query = condition.query; - var mainType = condition.mainType; - var queryCond = getQueryCond(query); - var result = queryCond ? this.queryComponents(queryCond) : filter(this._componentsMap.get(mainType), function(cmpt) { - return !!cmpt; - }); - return doFilter(filterBySubType(result, condition)); - function getQueryCond(q) { - var indexAttr = mainType + "Index"; - var idAttr = mainType + "Id"; - var nameAttr = mainType + "Name"; - return q && (q[indexAttr] != null || q[idAttr] != null || q[nameAttr] != null) ? { - mainType, - // subType will be filtered finally. - index: q[indexAttr], - id: q[idAttr], - name: q[nameAttr] - } : null; - } - function doFilter(res) { - return condition.filter ? filter(res, condition.filter) : res; - } - }; - GlobalModel2.prototype.eachComponent = function(mainType, cb, context) { - var componentsMap = this._componentsMap; - if (isFunction(mainType)) { - var ctxForAll_1 = cb; - var cbForAll_1 = mainType; - componentsMap.each(function(cmpts2, componentType) { - for (var i2 = 0; cmpts2 && i2 < cmpts2.length; i2++) { - var cmpt2 = cmpts2[i2]; - cmpt2 && cbForAll_1.call(ctxForAll_1, componentType, cmpt2, cmpt2.componentIndex); - } - }); - } else { - var cmpts = isString(mainType) ? componentsMap.get(mainType) : isObject(mainType) ? this.findComponents(mainType) : null; - for (var i = 0; cmpts && i < cmpts.length; i++) { - var cmpt = cmpts[i]; - cmpt && cb.call(context, cmpt, cmpt.componentIndex); - } - } - }; - GlobalModel2.prototype.getSeriesByName = function(name) { - var nameStr = convertOptionIdName(name, null); - return filter(this._componentsMap.get("series"), function(oneSeries) { - return !!oneSeries && nameStr != null && oneSeries.name === nameStr; - }); - }; - GlobalModel2.prototype.getSeriesByIndex = function(seriesIndex) { - return this._componentsMap.get("series")[seriesIndex]; - }; - GlobalModel2.prototype.getSeriesByType = function(subType) { - return filter(this._componentsMap.get("series"), function(oneSeries) { - return !!oneSeries && oneSeries.subType === subType; - }); - }; - GlobalModel2.prototype.getSeries = function() { - return filter(this._componentsMap.get("series"), function(oneSeries) { - return !!oneSeries; - }); - }; - GlobalModel2.prototype.getSeriesCount = function() { - return this._componentsCount.get("series"); - }; - GlobalModel2.prototype.eachSeries = function(cb, context) { - assertSeriesInitialized(this); - each(this._seriesIndices, function(rawSeriesIndex) { - var series = this._componentsMap.get("series")[rawSeriesIndex]; - cb.call(context, series, rawSeriesIndex); - }, this); - }; - GlobalModel2.prototype.eachRawSeries = function(cb, context) { - each(this._componentsMap.get("series"), function(series) { - series && cb.call(context, series, series.componentIndex); - }); - }; - GlobalModel2.prototype.eachSeriesByType = function(subType, cb, context) { - assertSeriesInitialized(this); - each(this._seriesIndices, function(rawSeriesIndex) { - var series = this._componentsMap.get("series")[rawSeriesIndex]; - if (series.subType === subType) { - cb.call(context, series, rawSeriesIndex); - } - }, this); - }; - GlobalModel2.prototype.eachRawSeriesByType = function(subType, cb, context) { - return each(this.getSeriesByType(subType), cb, context); - }; - GlobalModel2.prototype.isSeriesFiltered = function(seriesModel) { - assertSeriesInitialized(this); - return this._seriesIndicesMap.get(seriesModel.componentIndex) == null; - }; - GlobalModel2.prototype.getCurrentSeriesIndices = function() { - return (this._seriesIndices || []).slice(); - }; - GlobalModel2.prototype.filterSeries = function(cb, context) { - assertSeriesInitialized(this); - var newSeriesIndices = []; - each(this._seriesIndices, function(seriesRawIdx) { - var series = this._componentsMap.get("series")[seriesRawIdx]; - cb.call(context, series, seriesRawIdx) && newSeriesIndices.push(seriesRawIdx); - }, this); - this._seriesIndices = newSeriesIndices; - this._seriesIndicesMap = createHashMap(newSeriesIndices); - }; - GlobalModel2.prototype.restoreData = function(payload) { - reCreateSeriesIndices(this); - var componentsMap = this._componentsMap; - var componentTypes = []; - componentsMap.each(function(components, componentType) { - if (Component_default.hasClass(componentType)) { - componentTypes.push(componentType); - } - }); - Component_default.topologicalTravel(componentTypes, Component_default.getAllClassMainTypes(), function(componentType) { - each(componentsMap.get(componentType), function(component) { - if (component && (componentType !== "series" || !isNotTargetSeries(component, payload))) { - component.restoreData(); - } - }); - }); - }; - GlobalModel2.internalField = function() { - reCreateSeriesIndices = function(ecModel) { - var seriesIndices = ecModel._seriesIndices = []; - each(ecModel._componentsMap.get("series"), function(series) { - series && seriesIndices.push(series.componentIndex); - }); - ecModel._seriesIndicesMap = createHashMap(seriesIndices); - }; - assertSeriesInitialized = function(ecModel) { - if (true) { - if (!ecModel._seriesIndices) { - throw new Error("Option should contains series."); - } - } - }; - initBase = function(ecModel, baseOption) { - ecModel.option = {}; - ecModel.option[OPTION_INNER_KEY] = OPTION_INNER_VALUE; - ecModel._componentsMap = createHashMap({ - series: [] - }); - ecModel._componentsCount = createHashMap(); - var airaOption = baseOption.aria; - if (isObject(airaOption) && airaOption.enabled == null) { - airaOption.enabled = true; - } - mergeTheme(baseOption, ecModel._theme.option); - merge(baseOption, globalDefault_default, false); - ecModel._mergeOption(baseOption, null); - }; - }(); - return GlobalModel2; - }(Model_default) - ); - function isNotTargetSeries(seriesModel, payload) { - if (payload) { - var index = payload.seriesIndex; - var id = payload.seriesId; - var name_1 = payload.seriesName; - return index != null && seriesModel.componentIndex !== index || id != null && seriesModel.id !== id || name_1 != null && seriesModel.name !== name_1; - } - } - function mergeTheme(option, theme2) { - var notMergeColorLayer = option.color && !option.colorLayer; - each(theme2, function(themeItem, name) { - if (name === "colorLayer" && notMergeColorLayer) { - return; - } - if (!Component_default.hasClass(name)) { - if (typeof themeItem === "object") { - option[name] = !option[name] ? clone(themeItem) : merge(option[name], themeItem, false); - } else { - if (option[name] == null) { - option[name] = themeItem; - } - } - } - }); - } - function queryByIdOrName(attr, idOrName, cmpts) { - if (isArray(idOrName)) { - var keyMap_1 = createHashMap(); - each(idOrName, function(idOrNameItem) { - if (idOrNameItem != null) { - var idName = convertOptionIdName(idOrNameItem, null); - idName != null && keyMap_1.set(idOrNameItem, true); - } - }); - return filter(cmpts, function(cmpt) { - return cmpt && keyMap_1.get(cmpt[attr]); - }); - } else { - var idName_1 = convertOptionIdName(idOrName, null); - return filter(cmpts, function(cmpt) { - return cmpt && idName_1 != null && cmpt[attr] === idName_1; - }); - } - } - function filterBySubType(components, condition) { - return condition.hasOwnProperty("subType") ? filter(components, function(cmpt) { - return cmpt && cmpt.subType === condition.subType; - }) : components; - } - function normalizeSetOptionInput(opts) { - var replaceMergeMainTypeMap = createHashMap(); - opts && each(normalizeToArray(opts.replaceMerge), function(mainType) { - if (true) { - assert(Component_default.hasClass(mainType), '"' + mainType + '" is not valid component main type in "replaceMerge"'); - } - replaceMergeMainTypeMap.set(mainType, true); - }); - return { - replaceMergeMainTypeMap - }; - } - mixin(GlobalModel, PaletteMixin); - var Global_default = GlobalModel; - - // node_modules/echarts/lib/core/ExtensionAPI.js - var availableMethods = [ - "getDom", - "getZr", - "getWidth", - "getHeight", - "getDevicePixelRatio", - "dispatchAction", - "isSSR", - "isDisposed", - "on", - "off", - "getDataURL", - "getConnectedDataURL", - // 'getModel', - "getOption", - // 'getViewOfComponentModel', - // 'getViewOfSeriesModel', - "getId", - "updateLabelLayout" - ]; - var ExtensionAPI = ( - /** @class */ - /* @__PURE__ */ function() { - function ExtensionAPI2(ecInstance) { - each(availableMethods, function(methodName) { - this[methodName] = bind(ecInstance[methodName], ecInstance); - }, this); - } - return ExtensionAPI2; - }() - ); - var ExtensionAPI_default = ExtensionAPI; - - // node_modules/echarts/lib/core/CoordinateSystem.js - var coordinateSystemCreators = {}; - var CoordinateSystemManager = ( - /** @class */ - function() { - function CoordinateSystemManager2() { - this._coordinateSystems = []; - } - CoordinateSystemManager2.prototype.create = function(ecModel, api) { - var coordinateSystems = []; - each(coordinateSystemCreators, function(creator, type) { - var list = creator.create(ecModel, api); - coordinateSystems = coordinateSystems.concat(list || []); - }); - this._coordinateSystems = coordinateSystems; - }; - CoordinateSystemManager2.prototype.update = function(ecModel, api) { - each(this._coordinateSystems, function(coordSys) { - coordSys.update && coordSys.update(ecModel, api); - }); - }; - CoordinateSystemManager2.prototype.getCoordinateSystems = function() { - return this._coordinateSystems.slice(); - }; - CoordinateSystemManager2.register = function(type, creator) { - coordinateSystemCreators[type] = creator; - }; - CoordinateSystemManager2.get = function(type) { - return coordinateSystemCreators[type]; - }; - return CoordinateSystemManager2; - }() - ); - var CoordinateSystem_default = CoordinateSystemManager; - - // node_modules/echarts/lib/model/OptionManager.js - var QUERY_REG = /^(min|max)?(.+)$/; - var OptionManager = ( - /** @class */ - function() { - function OptionManager2(api) { - this._timelineOptions = []; - this._mediaList = []; - this._currentMediaIndices = []; - this._api = api; - } - OptionManager2.prototype.setOption = function(rawOption, optionPreprocessorFuncs2, opt) { - if (rawOption) { - each(normalizeToArray(rawOption.series), function(series) { - series && series.data && isTypedArray(series.data) && setAsPrimitive(series.data); - }); - each(normalizeToArray(rawOption.dataset), function(dataset) { - dataset && dataset.source && isTypedArray(dataset.source) && setAsPrimitive(dataset.source); - }); - } - rawOption = clone(rawOption); - var optionBackup = this._optionBackup; - var newParsedOption = parseRawOption(rawOption, optionPreprocessorFuncs2, !optionBackup); - this._newBaseOption = newParsedOption.baseOption; - if (optionBackup) { - if (newParsedOption.timelineOptions.length) { - optionBackup.timelineOptions = newParsedOption.timelineOptions; - } - if (newParsedOption.mediaList.length) { - optionBackup.mediaList = newParsedOption.mediaList; - } - if (newParsedOption.mediaDefault) { - optionBackup.mediaDefault = newParsedOption.mediaDefault; - } - } else { - this._optionBackup = newParsedOption; - } - }; - OptionManager2.prototype.mountOption = function(isRecreate) { - var optionBackup = this._optionBackup; - this._timelineOptions = optionBackup.timelineOptions; - this._mediaList = optionBackup.mediaList; - this._mediaDefault = optionBackup.mediaDefault; - this._currentMediaIndices = []; - return clone(isRecreate ? optionBackup.baseOption : this._newBaseOption); - }; - OptionManager2.prototype.getTimelineOption = function(ecModel) { - var option; - var timelineOptions = this._timelineOptions; - if (timelineOptions.length) { - var timelineModel = ecModel.getComponent("timeline"); - if (timelineModel) { - option = clone( - // FIXME:TS as TimelineModel or quivlant interface - timelineOptions[timelineModel.getCurrentIndex()] - ); - } - } - return option; - }; - OptionManager2.prototype.getMediaOption = function(ecModel) { - var ecWidth = this._api.getWidth(); - var ecHeight = this._api.getHeight(); - var mediaList = this._mediaList; - var mediaDefault = this._mediaDefault; - var indices = []; - var result = []; - if (!mediaList.length && !mediaDefault) { - return result; - } - for (var i = 0, len2 = mediaList.length; i < len2; i++) { - if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) { - indices.push(i); - } - } - if (!indices.length && mediaDefault) { - indices = [-1]; - } - if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) { - result = map(indices, function(index) { - return clone(index === -1 ? mediaDefault.option : mediaList[index].option); - }); - } - this._currentMediaIndices = indices; - return result; - }; - return OptionManager2; - }() - ); - function parseRawOption(rawOption, optionPreprocessorFuncs2, isNew) { - var mediaList = []; - var mediaDefault; - var baseOption; - var declaredBaseOption = rawOption.baseOption; - var timelineOnRoot = rawOption.timeline; - var timelineOptionsOnRoot = rawOption.options; - var mediaOnRoot = rawOption.media; - var hasMedia = !!rawOption.media; - var hasTimeline = !!(timelineOptionsOnRoot || timelineOnRoot || declaredBaseOption && declaredBaseOption.timeline); - if (declaredBaseOption) { - baseOption = declaredBaseOption; - if (!baseOption.timeline) { - baseOption.timeline = timelineOnRoot; - } - } else { - if (hasTimeline || hasMedia) { - rawOption.options = rawOption.media = null; - } - baseOption = rawOption; - } - if (hasMedia) { - if (isArray(mediaOnRoot)) { - each(mediaOnRoot, function(singleMedia) { - if (true) { - if (singleMedia && !singleMedia.option && isObject(singleMedia.query) && isObject(singleMedia.query.option)) { - error("Illegal media option. Must be like { media: [ { query: {}, option: {} } ] }"); - } - } - if (singleMedia && singleMedia.option) { - if (singleMedia.query) { - mediaList.push(singleMedia); - } else if (!mediaDefault) { - mediaDefault = singleMedia; - } - } - }); - } else { - if (true) { - error("Illegal media option. Must be an array. Like { media: [ {...}, {...} ] }"); - } - } - } - doPreprocess(baseOption); - each(timelineOptionsOnRoot, function(option) { - return doPreprocess(option); - }); - each(mediaList, function(media) { - return doPreprocess(media.option); - }); - function doPreprocess(option) { - each(optionPreprocessorFuncs2, function(preProcess) { - preProcess(option, isNew); - }); - } - return { - baseOption, - timelineOptions: timelineOptionsOnRoot || [], - mediaDefault, - mediaList - }; - } - function applyMediaQuery(query, ecWidth, ecHeight) { - var realMap = { - width: ecWidth, - height: ecHeight, - aspectratio: ecWidth / ecHeight - // lower case for convenience. - }; - var applicable = true; - each(query, function(value, attr) { - var matched = attr.match(QUERY_REG); - if (!matched || !matched[1] || !matched[2]) { - return; - } - var operator = matched[1]; - var realAttr = matched[2].toLowerCase(); - if (!compare(realMap[realAttr], value, operator)) { - applicable = false; - } - }); - return applicable; - } - function compare(real, expect, operator) { - if (operator === "min") { - return real >= expect; - } else if (operator === "max") { - return real <= expect; - } else { - return real === expect; - } - } - function indicesEquals(indices1, indices2) { - return indices1.join(",") === indices2.join(","); - } - var OptionManager_default = OptionManager; - - // node_modules/echarts/lib/preprocessor/helper/compatStyle.js - var each3 = each; - var isObject2 = isObject; - var POSSIBLE_STYLES = ["areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine"]; - function compatEC2ItemStyle(opt) { - var itemStyleOpt = opt && opt.itemStyle; - if (!itemStyleOpt) { - return; - } - for (var i = 0, len2 = POSSIBLE_STYLES.length; i < len2; i++) { - var styleName = POSSIBLE_STYLES[i]; - var normalItemStyleOpt = itemStyleOpt.normal; - var emphasisItemStyleOpt = itemStyleOpt.emphasis; - if (normalItemStyleOpt && normalItemStyleOpt[styleName]) { - if (true) { - deprecateReplaceLog("itemStyle.normal." + styleName, styleName); - } - opt[styleName] = opt[styleName] || {}; - if (!opt[styleName].normal) { - opt[styleName].normal = normalItemStyleOpt[styleName]; - } else { - merge(opt[styleName].normal, normalItemStyleOpt[styleName]); - } - normalItemStyleOpt[styleName] = null; - } - if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) { - if (true) { - deprecateReplaceLog("itemStyle.emphasis." + styleName, "emphasis." + styleName); - } - opt[styleName] = opt[styleName] || {}; - if (!opt[styleName].emphasis) { - opt[styleName].emphasis = emphasisItemStyleOpt[styleName]; - } else { - merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]); - } - emphasisItemStyleOpt[styleName] = null; - } - } - } - function convertNormalEmphasis(opt, optType, useExtend) { - if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) { - var normalOpt = opt[optType].normal; - var emphasisOpt = opt[optType].emphasis; - if (normalOpt) { - if (true) { - deprecateLog("'normal' hierarchy in " + optType + " has been removed since 4.0. All style properties are configured in " + optType + " directly now."); - } - if (useExtend) { - opt[optType].normal = opt[optType].emphasis = null; - defaults(opt[optType], normalOpt); - } else { - opt[optType] = normalOpt; - } - } - if (emphasisOpt) { - if (true) { - deprecateLog(optType + ".emphasis has been changed to emphasis." + optType + " since 4.0"); - } - opt.emphasis = opt.emphasis || {}; - opt.emphasis[optType] = emphasisOpt; - if (emphasisOpt.focus) { - opt.emphasis.focus = emphasisOpt.focus; - } - if (emphasisOpt.blurScope) { - opt.emphasis.blurScope = emphasisOpt.blurScope; - } - } - } - } - function removeEC3NormalStatus(opt) { - convertNormalEmphasis(opt, "itemStyle"); - convertNormalEmphasis(opt, "lineStyle"); - convertNormalEmphasis(opt, "areaStyle"); - convertNormalEmphasis(opt, "label"); - convertNormalEmphasis(opt, "labelLine"); - convertNormalEmphasis(opt, "upperLabel"); - convertNormalEmphasis(opt, "edgeLabel"); - } - function compatTextStyle(opt, propName) { - var labelOptSingle = isObject2(opt) && opt[propName]; - var textStyle = isObject2(labelOptSingle) && labelOptSingle.textStyle; - if (textStyle) { - if (true) { - deprecateLog("textStyle hierarchy in " + propName + " has been removed since 4.0. All textStyle properties are configured in " + propName + " directly now."); - } - for (var i = 0, len2 = TEXT_STYLE_OPTIONS.length; i < len2; i++) { - var textPropName = TEXT_STYLE_OPTIONS[i]; - if (textStyle.hasOwnProperty(textPropName)) { - labelOptSingle[textPropName] = textStyle[textPropName]; - } - } - } - } - function compatEC3CommonStyles(opt) { - if (opt) { - removeEC3NormalStatus(opt); - compatTextStyle(opt, "label"); - opt.emphasis && compatTextStyle(opt.emphasis, "label"); - } - } - function processSeries(seriesOpt) { - if (!isObject2(seriesOpt)) { - return; - } - compatEC2ItemStyle(seriesOpt); - removeEC3NormalStatus(seriesOpt); - compatTextStyle(seriesOpt, "label"); - compatTextStyle(seriesOpt, "upperLabel"); - compatTextStyle(seriesOpt, "edgeLabel"); - if (seriesOpt.emphasis) { - compatTextStyle(seriesOpt.emphasis, "label"); - compatTextStyle(seriesOpt.emphasis, "upperLabel"); - compatTextStyle(seriesOpt.emphasis, "edgeLabel"); - } - var markPoint = seriesOpt.markPoint; - if (markPoint) { - compatEC2ItemStyle(markPoint); - compatEC3CommonStyles(markPoint); - } - var markLine = seriesOpt.markLine; - if (markLine) { - compatEC2ItemStyle(markLine); - compatEC3CommonStyles(markLine); - } - var markArea = seriesOpt.markArea; - if (markArea) { - compatEC3CommonStyles(markArea); - } - var data = seriesOpt.data; - if (seriesOpt.type === "graph") { - data = data || seriesOpt.nodes; - var edgeData = seriesOpt.links || seriesOpt.edges; - if (edgeData && !isTypedArray(edgeData)) { - for (var i = 0; i < edgeData.length; i++) { - compatEC3CommonStyles(edgeData[i]); - } - } - each(seriesOpt.categories, function(opt) { - removeEC3NormalStatus(opt); - }); - } - if (data && !isTypedArray(data)) { - for (var i = 0; i < data.length; i++) { - compatEC3CommonStyles(data[i]); - } - } - markPoint = seriesOpt.markPoint; - if (markPoint && markPoint.data) { - var mpData = markPoint.data; - for (var i = 0; i < mpData.length; i++) { - compatEC3CommonStyles(mpData[i]); - } - } - markLine = seriesOpt.markLine; - if (markLine && markLine.data) { - var mlData = markLine.data; - for (var i = 0; i < mlData.length; i++) { - if (isArray(mlData[i])) { - compatEC3CommonStyles(mlData[i][0]); - compatEC3CommonStyles(mlData[i][1]); - } else { - compatEC3CommonStyles(mlData[i]); - } - } - } - if (seriesOpt.type === "gauge") { - compatTextStyle(seriesOpt, "axisLabel"); - compatTextStyle(seriesOpt, "title"); - compatTextStyle(seriesOpt, "detail"); - } else if (seriesOpt.type === "treemap") { - convertNormalEmphasis(seriesOpt.breadcrumb, "itemStyle"); - each(seriesOpt.levels, function(opt) { - removeEC3NormalStatus(opt); - }); - } else if (seriesOpt.type === "tree") { - removeEC3NormalStatus(seriesOpt.leaves); - } - } - function toArr(o) { - return isArray(o) ? o : o ? [o] : []; - } - function toObj(o) { - return (isArray(o) ? o[0] : o) || {}; - } - function globalCompatStyle(option, isTheme) { - each3(toArr(option.series), function(seriesOpt) { - isObject2(seriesOpt) && processSeries(seriesOpt); - }); - var axes = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar"]; - isTheme && axes.push("valueAxis", "categoryAxis", "logAxis", "timeAxis"); - each3(axes, function(axisName) { - each3(toArr(option[axisName]), function(axisOpt) { - if (axisOpt) { - compatTextStyle(axisOpt, "axisLabel"); - compatTextStyle(axisOpt.axisPointer, "label"); - } - }); - }); - each3(toArr(option.parallel), function(parallelOpt) { - var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault; - compatTextStyle(parallelAxisDefault, "axisLabel"); - compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, "label"); - }); - each3(toArr(option.calendar), function(calendarOpt) { - convertNormalEmphasis(calendarOpt, "itemStyle"); - compatTextStyle(calendarOpt, "dayLabel"); - compatTextStyle(calendarOpt, "monthLabel"); - compatTextStyle(calendarOpt, "yearLabel"); - }); - each3(toArr(option.radar), function(radarOpt) { - compatTextStyle(radarOpt, "name"); - if (radarOpt.name && radarOpt.axisName == null) { - radarOpt.axisName = radarOpt.name; - delete radarOpt.name; - if (true) { - deprecateLog("name property in radar component has been changed to axisName"); - } - } - if (radarOpt.nameGap != null && radarOpt.axisNameGap == null) { - radarOpt.axisNameGap = radarOpt.nameGap; - delete radarOpt.nameGap; - if (true) { - deprecateLog("nameGap property in radar component has been changed to axisNameGap"); - } - } - if (true) { - each3(radarOpt.indicator, function(indicatorOpt) { - if (indicatorOpt.text) { - deprecateReplaceLog("text", "name", "radar.indicator"); - } - }); - } - }); - each3(toArr(option.geo), function(geoOpt) { - if (isObject2(geoOpt)) { - compatEC3CommonStyles(geoOpt); - each3(toArr(geoOpt.regions), function(regionObj) { - compatEC3CommonStyles(regionObj); - }); - } - }); - each3(toArr(option.timeline), function(timelineOpt) { - compatEC3CommonStyles(timelineOpt); - convertNormalEmphasis(timelineOpt, "label"); - convertNormalEmphasis(timelineOpt, "itemStyle"); - convertNormalEmphasis(timelineOpt, "controlStyle", true); - var data = timelineOpt.data; - isArray(data) && each(data, function(item) { - if (isObject(item)) { - convertNormalEmphasis(item, "label"); - convertNormalEmphasis(item, "itemStyle"); - } - }); - }); - each3(toArr(option.toolbox), function(toolboxOpt) { - convertNormalEmphasis(toolboxOpt, "iconStyle"); - each3(toolboxOpt.feature, function(featureOpt) { - convertNormalEmphasis(featureOpt, "iconStyle"); - }); - }); - compatTextStyle(toObj(option.axisPointer), "label"); - compatTextStyle(toObj(option.tooltip).axisPointer, "label"); - } - - // node_modules/echarts/lib/preprocessor/backwardCompat.js - function get(opt, path) { - var pathArr = path.split(","); - var obj = opt; - for (var i = 0; i < pathArr.length; i++) { - obj = obj && obj[pathArr[i]]; - if (obj == null) { - break; - } - } - return obj; - } - function set2(opt, path, val, overwrite) { - var pathArr = path.split(","); - var obj = opt; - var key; - var i = 0; - for (; i < pathArr.length - 1; i++) { - key = pathArr[i]; - if (obj[key] == null) { - obj[key] = {}; - } - obj = obj[key]; - } - if (overwrite || obj[pathArr[i]] == null) { - obj[pathArr[i]] = val; - } - } - function compatLayoutProperties(option) { - option && each(LAYOUT_PROPERTIES, function(prop) { - if (prop[0] in option && !(prop[1] in option)) { - option[prop[1]] = option[prop[0]]; - } - }); - } - var LAYOUT_PROPERTIES = [["x", "left"], ["y", "top"], ["x2", "right"], ["y2", "bottom"]]; - var COMPATITABLE_COMPONENTS = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"]; - var BAR_ITEM_STYLE_MAP = [["borderRadius", "barBorderRadius"], ["borderColor", "barBorderColor"], ["borderWidth", "barBorderWidth"]]; - function compatBarItemStyle(option) { - var itemStyle = option && option.itemStyle; - if (itemStyle) { - for (var i = 0; i < BAR_ITEM_STYLE_MAP.length; i++) { - var oldName = BAR_ITEM_STYLE_MAP[i][1]; - var newName = BAR_ITEM_STYLE_MAP[i][0]; - if (itemStyle[oldName] != null) { - itemStyle[newName] = itemStyle[oldName]; - if (true) { - deprecateReplaceLog(oldName, newName); - } - } - } - } - } - function compatPieLabel(option) { - if (!option) { - return; - } - if (option.alignTo === "edge" && option.margin != null && option.edgeDistance == null) { - if (true) { - deprecateReplaceLog("label.margin", "label.edgeDistance", "pie"); - } - option.edgeDistance = option.margin; - } - } - function compatSunburstState(option) { - if (!option) { - return; - } - if (option.downplay && !option.blur) { - option.blur = option.downplay; - if (true) { - deprecateReplaceLog("downplay", "blur", "sunburst"); - } - } - } - function compatGraphFocus(option) { - if (!option) { - return; - } - if (option.focusNodeAdjacency != null) { - option.emphasis = option.emphasis || {}; - if (option.emphasis.focus == null) { - if (true) { - deprecateReplaceLog("focusNodeAdjacency", "emphasis: { focus: 'adjacency'}", "graph/sankey"); - } - option.emphasis.focus = "adjacency"; - } - } - } - function traverseTree(data, cb) { - if (data) { - for (var i = 0; i < data.length; i++) { - cb(data[i]); - data[i] && traverseTree(data[i].children, cb); - } - } - } - function globalBackwardCompat(option, isTheme) { - globalCompatStyle(option, isTheme); - option.series = normalizeToArray(option.series); - each(option.series, function(seriesOpt) { - if (!isObject(seriesOpt)) { - return; - } - var seriesType2 = seriesOpt.type; - if (seriesType2 === "line") { - if (seriesOpt.clipOverflow != null) { - seriesOpt.clip = seriesOpt.clipOverflow; - if (true) { - deprecateReplaceLog("clipOverflow", "clip", "line"); - } - } - } else if (seriesType2 === "pie" || seriesType2 === "gauge") { - if (seriesOpt.clockWise != null) { - seriesOpt.clockwise = seriesOpt.clockWise; - if (true) { - deprecateReplaceLog("clockWise", "clockwise"); - } - } - compatPieLabel(seriesOpt.label); - var data = seriesOpt.data; - if (data && !isTypedArray(data)) { - for (var i = 0; i < data.length; i++) { - compatPieLabel(data[i]); - } - } - if (seriesOpt.hoverOffset != null) { - seriesOpt.emphasis = seriesOpt.emphasis || {}; - if (seriesOpt.emphasis.scaleSize = null) { - if (true) { - deprecateReplaceLog("hoverOffset", "emphasis.scaleSize"); - } - seriesOpt.emphasis.scaleSize = seriesOpt.hoverOffset; - } - } - } else if (seriesType2 === "gauge") { - var pointerColor = get(seriesOpt, "pointer.color"); - pointerColor != null && set2(seriesOpt, "itemStyle.color", pointerColor); - } else if (seriesType2 === "bar") { - compatBarItemStyle(seriesOpt); - compatBarItemStyle(seriesOpt.backgroundStyle); - compatBarItemStyle(seriesOpt.emphasis); - var data = seriesOpt.data; - if (data && !isTypedArray(data)) { - for (var i = 0; i < data.length; i++) { - if (typeof data[i] === "object") { - compatBarItemStyle(data[i]); - compatBarItemStyle(data[i] && data[i].emphasis); - } - } - } - } else if (seriesType2 === "sunburst") { - var highlightPolicy = seriesOpt.highlightPolicy; - if (highlightPolicy) { - seriesOpt.emphasis = seriesOpt.emphasis || {}; - if (!seriesOpt.emphasis.focus) { - seriesOpt.emphasis.focus = highlightPolicy; - if (true) { - deprecateReplaceLog("highlightPolicy", "emphasis.focus", "sunburst"); - } - } - } - compatSunburstState(seriesOpt); - traverseTree(seriesOpt.data, compatSunburstState); - } else if (seriesType2 === "graph" || seriesType2 === "sankey") { - compatGraphFocus(seriesOpt); - } else if (seriesType2 === "map") { - if (seriesOpt.mapType && !seriesOpt.map) { - if (true) { - deprecateReplaceLog("mapType", "map", "map"); - } - seriesOpt.map = seriesOpt.mapType; - } - if (seriesOpt.mapLocation) { - if (true) { - deprecateLog("`mapLocation` is not used anymore."); - } - defaults(seriesOpt, seriesOpt.mapLocation); - } - } - if (seriesOpt.hoverAnimation != null) { - seriesOpt.emphasis = seriesOpt.emphasis || {}; - if (seriesOpt.emphasis && seriesOpt.emphasis.scale == null) { - if (true) { - deprecateReplaceLog("hoverAnimation", "emphasis.scale"); - } - seriesOpt.emphasis.scale = seriesOpt.hoverAnimation; - } - } - compatLayoutProperties(seriesOpt); - }); - if (option.dataRange) { - option.visualMap = option.dataRange; - } - each(COMPATITABLE_COMPONENTS, function(componentName) { - var options = option[componentName]; - if (options) { - if (!isArray(options)) { - options = [options]; - } - each(options, function(option2) { - compatLayoutProperties(option2); - }); - } - }); - } - - // node_modules/echarts/lib/processor/dataStack.js - function dataStack(ecModel) { - var stackInfoMap = createHashMap(); - ecModel.eachSeries(function(seriesModel) { - var stack = seriesModel.get("stack"); - if (stack) { - var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []); - var data = seriesModel.getData(); - var stackInfo = { - // Used for calculate axis extent automatically. - // TODO: Type getCalculationInfo return more specific type? - stackResultDimension: data.getCalculationInfo("stackResultDimension"), - stackedOverDimension: data.getCalculationInfo("stackedOverDimension"), - stackedDimension: data.getCalculationInfo("stackedDimension"), - stackedByDimension: data.getCalculationInfo("stackedByDimension"), - isStackedByIndex: data.getCalculationInfo("isStackedByIndex"), - data, - seriesModel - }; - if (!stackInfo.stackedDimension || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) { - return; - } - stackInfoList.length && data.setCalculationInfo("stackedOnSeries", stackInfoList[stackInfoList.length - 1].seriesModel); - stackInfoList.push(stackInfo); - } - }); - stackInfoMap.each(calculateStack); - } - function calculateStack(stackInfoList) { - each(stackInfoList, function(targetStackInfo, idxInStack) { - var resultVal = []; - var resultNaN = [NaN, NaN]; - var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension]; - var targetData = targetStackInfo.data; - var isStackedByIndex = targetStackInfo.isStackedByIndex; - var stackStrategy = targetStackInfo.seriesModel.get("stackStrategy") || "samesign"; - targetData.modify(dims, function(v0, v12, dataIndex) { - var sum2 = targetData.get(targetStackInfo.stackedDimension, dataIndex); - if (isNaN(sum2)) { - return resultNaN; - } - var byValue; - var stackedDataRawIndex; - if (isStackedByIndex) { - stackedDataRawIndex = targetData.getRawIndex(dataIndex); - } else { - byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex); - } - var stackedOver = NaN; - for (var j = idxInStack - 1; j >= 0; j--) { - var stackInfo = stackInfoList[j]; - if (!isStackedByIndex) { - stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue); - } - if (stackedDataRawIndex >= 0) { - var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex); - if (stackStrategy === "all" || stackStrategy === "positive" && val > 0 || stackStrategy === "negative" && val < 0 || stackStrategy === "samesign" && sum2 >= 0 && val > 0 || stackStrategy === "samesign" && sum2 <= 0 && val < 0) { - sum2 = addSafe(sum2, val); - stackedOver = val; - break; - } - } - } - resultVal[0] = sum2; - resultVal[1] = stackedOver; - return resultVal; - }); - }); - } - - // node_modules/echarts/lib/data/Source.js - var SourceImpl = ( - /** @class */ - /* @__PURE__ */ function() { - function SourceImpl2(fields) { - this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []); - this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN; - this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN; - this.startIndex = fields.startIndex || 0; - this.dimensionsDetectedCount = fields.dimensionsDetectedCount; - this.metaRawOption = fields.metaRawOption; - var dimensionsDefine = this.dimensionsDefine = fields.dimensionsDefine; - if (dimensionsDefine) { - for (var i = 0; i < dimensionsDefine.length; i++) { - var dim = dimensionsDefine[i]; - if (dim.type == null) { - if (guessOrdinal(this, i) === BE_ORDINAL.Must) { - dim.type = "ordinal"; - } - } - } - } - } - return SourceImpl2; - }() - ); - function isSourceInstance(val) { - return val instanceof SourceImpl; - } - function createSource(sourceData, thisMetaRawOption, sourceFormat) { - sourceFormat = sourceFormat || detectSourceFormat(sourceData); - var seriesLayoutBy = thisMetaRawOption.seriesLayoutBy; - var determined = determineSourceDimensions(sourceData, sourceFormat, seriesLayoutBy, thisMetaRawOption.sourceHeader, thisMetaRawOption.dimensions); - var source = new SourceImpl({ - data: sourceData, - sourceFormat, - seriesLayoutBy, - dimensionsDefine: determined.dimensionsDefine, - startIndex: determined.startIndex, - dimensionsDetectedCount: determined.dimensionsDetectedCount, - metaRawOption: clone(thisMetaRawOption) - }); - return source; - } - function createSourceFromSeriesDataOption(data) { - return new SourceImpl({ - data, - sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL - }); - } - function cloneSourceShallow(source) { - return new SourceImpl({ - data: source.data, - sourceFormat: source.sourceFormat, - seriesLayoutBy: source.seriesLayoutBy, - dimensionsDefine: clone(source.dimensionsDefine), - startIndex: source.startIndex, - dimensionsDetectedCount: source.dimensionsDetectedCount - }); - } - function detectSourceFormat(data) { - var sourceFormat = SOURCE_FORMAT_UNKNOWN; - if (isTypedArray(data)) { - sourceFormat = SOURCE_FORMAT_TYPED_ARRAY; - } else if (isArray(data)) { - if (data.length === 0) { - sourceFormat = SOURCE_FORMAT_ARRAY_ROWS; - } - for (var i = 0, len2 = data.length; i < len2; i++) { - var item = data[i]; - if (item == null) { - continue; - } else if (isArray(item) || isTypedArray(item)) { - sourceFormat = SOURCE_FORMAT_ARRAY_ROWS; - break; - } else if (isObject(item)) { - sourceFormat = SOURCE_FORMAT_OBJECT_ROWS; - break; - } - } - } else if (isObject(data)) { - for (var key in data) { - if (hasOwn(data, key) && isArrayLike(data[key])) { - sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS; - break; - } - } - } - return sourceFormat; - } - function determineSourceDimensions(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) { - var dimensionsDetectedCount; - var startIndex; - if (!data) { - return { - dimensionsDefine: normalizeDimensionsOption(dimensionsDefine), - startIndex, - dimensionsDetectedCount - }; - } - if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) { - var dataArrayRows = data; - if (sourceHeader === "auto" || sourceHeader == null) { - arrayRowsTravelFirst(function(val) { - if (val != null && val !== "-") { - if (isString(val)) { - startIndex == null && (startIndex = 1); - } else { - startIndex = 0; - } - } - }, seriesLayoutBy, dataArrayRows, 10); - } else { - startIndex = isNumber(sourceHeader) ? sourceHeader : sourceHeader ? 1 : 0; - } - if (!dimensionsDefine && startIndex === 1) { - dimensionsDefine = []; - arrayRowsTravelFirst(function(val, index) { - dimensionsDefine[index] = val != null ? val + "" : ""; - }, seriesLayoutBy, dataArrayRows, Infinity); - } - dimensionsDetectedCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW ? dataArrayRows.length : dataArrayRows[0] ? dataArrayRows[0].length : null; - } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) { - if (!dimensionsDefine) { - dimensionsDefine = objectRowsCollectDimensions(data); - } - } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) { - if (!dimensionsDefine) { - dimensionsDefine = []; - each(data, function(colArr, key) { - dimensionsDefine.push(key); - }); - } - } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) { - var value0 = getDataItemValue(data[0]); - dimensionsDetectedCount = isArray(value0) && value0.length || 1; - } else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) { - if (true) { - assert(!!dimensionsDefine, "dimensions must be given if data is TypedArray."); - } - } - return { - startIndex, - dimensionsDefine: normalizeDimensionsOption(dimensionsDefine), - dimensionsDetectedCount - }; - } - function objectRowsCollectDimensions(data) { - var firstIndex = 0; - var obj; - while (firstIndex < data.length && !(obj = data[firstIndex++])) { - } - if (obj) { - return keys(obj); - } - } - function normalizeDimensionsOption(dimensionsDefine) { - if (!dimensionsDefine) { - return; - } - var nameMap = createHashMap(); - return map(dimensionsDefine, function(rawItem, index) { - rawItem = isObject(rawItem) ? rawItem : { - name: rawItem - }; - var item = { - name: rawItem.name, - displayName: rawItem.displayName, - type: rawItem.type - }; - if (item.name == null) { - return item; - } - item.name += ""; - if (item.displayName == null) { - item.displayName = item.name; - } - var exist = nameMap.get(item.name); - if (!exist) { - nameMap.set(item.name, { - count: 1 - }); - } else { - item.name += "-" + exist.count++; - } - return item; - }); - } - function arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) { - if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) { - for (var i = 0; i < data.length && i < maxLoop; i++) { - cb(data[i] ? data[i][0] : null, i); - } - } else { - var value0 = data[0] || []; - for (var i = 0; i < value0.length && i < maxLoop; i++) { - cb(value0[i], i); - } - } - } - function shouldRetrieveDataByName(source) { - var sourceFormat = source.sourceFormat; - return sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS; - } - - // node_modules/echarts/lib/data/helper/dataProvider.js - var _a; - var _b; - var _c; - var providerMethods; - var mountMethods; - var DefaultDataProvider = ( - /** @class */ - function() { - function DefaultDataProvider2(sourceParam, dimSize) { - var source = !isSourceInstance(sourceParam) ? createSourceFromSeriesDataOption(sourceParam) : sourceParam; - this._source = source; - var data = this._data = source.data; - if (source.sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) { - if (true) { - if (dimSize == null) { - throw new Error("Typed array data must specify dimension size"); - } - } - this._offset = 0; - this._dimSize = dimSize; - this._data = data; - } - mountMethods(this, data, source); - } - DefaultDataProvider2.prototype.getSource = function() { - return this._source; - }; - DefaultDataProvider2.prototype.count = function() { - return 0; - }; - DefaultDataProvider2.prototype.getItem = function(idx, out2) { - return; - }; - DefaultDataProvider2.prototype.appendData = function(newData) { - }; - DefaultDataProvider2.prototype.clean = function() { - }; - DefaultDataProvider2.protoInitialize = function() { - var proto2 = DefaultDataProvider2.prototype; - proto2.pure = false; - proto2.persistent = true; - }(); - DefaultDataProvider2.internalField = function() { - var _a2; - mountMethods = function(provider, data, source) { - var sourceFormat = source.sourceFormat; - var seriesLayoutBy = source.seriesLayoutBy; - var startIndex = source.startIndex; - var dimsDef = source.dimensionsDefine; - var methods = providerMethods[getMethodMapKey(sourceFormat, seriesLayoutBy)]; - if (true) { - assert(methods, "Invalide sourceFormat: " + sourceFormat); - } - extend(provider, methods); - if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) { - provider.getItem = getItemForTypedArray; - provider.count = countForTypedArray; - provider.fillStorage = fillStorageForTypedArray; - } else { - var rawItemGetter = getRawSourceItemGetter(sourceFormat, seriesLayoutBy); - provider.getItem = bind(rawItemGetter, null, data, startIndex, dimsDef); - var rawCounter = getRawSourceDataCounter(sourceFormat, seriesLayoutBy); - provider.count = bind(rawCounter, null, data, startIndex, dimsDef); - } - }; - var getItemForTypedArray = function(idx, out2) { - idx = idx - this._offset; - out2 = out2 || []; - var data = this._data; - var dimSize = this._dimSize; - var offset3 = dimSize * idx; - for (var i = 0; i < dimSize; i++) { - out2[i] = data[offset3 + i]; - } - return out2; - }; - var fillStorageForTypedArray = function(start3, end2, storage2, extent3) { - var data = this._data; - var dimSize = this._dimSize; - for (var dim = 0; dim < dimSize; dim++) { - var dimExtent = extent3[dim]; - var min4 = dimExtent[0] == null ? Infinity : dimExtent[0]; - var max4 = dimExtent[1] == null ? -Infinity : dimExtent[1]; - var count2 = end2 - start3; - var arr = storage2[dim]; - for (var i = 0; i < count2; i++) { - var val = data[i * dimSize + dim]; - arr[start3 + i] = val; - val < min4 && (min4 = val); - val > max4 && (max4 = val); - } - dimExtent[0] = min4; - dimExtent[1] = max4; - } - }; - var countForTypedArray = function() { - return this._data ? this._data.length / this._dimSize : 0; - }; - providerMethods = (_a2 = {}, _a2[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_COLUMN] = { - pure: true, - appendData: appendDataSimply - }, _a2[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_ROW] = { - pure: true, - appendData: function() { - throw new Error('Do not support appendData when set seriesLayoutBy: "row".'); - } - }, _a2[SOURCE_FORMAT_OBJECT_ROWS] = { - pure: true, - appendData: appendDataSimply - }, _a2[SOURCE_FORMAT_KEYED_COLUMNS] = { - pure: true, - appendData: function(newData) { - var data = this._data; - each(newData, function(newCol, key) { - var oldCol = data[key] || (data[key] = []); - for (var i = 0; i < (newCol || []).length; i++) { - oldCol.push(newCol[i]); - } - }); - } - }, _a2[SOURCE_FORMAT_ORIGINAL] = { - appendData: appendDataSimply - }, _a2[SOURCE_FORMAT_TYPED_ARRAY] = { - persistent: false, - pure: true, - appendData: function(newData) { - if (true) { - assert(isTypedArray(newData), "Added data must be TypedArray if data in initialization is TypedArray"); - } - this._data = newData; - }, - // Clean self if data is already used. - clean: function() { - this._offset += this.count(); - this._data = null; - } - }, _a2); - function appendDataSimply(newData) { - for (var i = 0; i < newData.length; i++) { - this._data.push(newData[i]); - } - } - }(); - return DefaultDataProvider2; - }() - ); - var getItemSimply = function(rawData, startIndex, dimsDef, idx) { - return rawData[idx]; - }; - var rawSourceItemGetterMap = (_a = {}, _a[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_COLUMN] = function(rawData, startIndex, dimsDef, idx) { - return rawData[idx + startIndex]; - }, _a[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_ROW] = function(rawData, startIndex, dimsDef, idx, out2) { - idx += startIndex; - var item = out2 || []; - var data = rawData; - for (var i = 0; i < data.length; i++) { - var row = data[i]; - item[i] = row ? row[idx] : null; - } - return item; - }, _a[SOURCE_FORMAT_OBJECT_ROWS] = getItemSimply, _a[SOURCE_FORMAT_KEYED_COLUMNS] = function(rawData, startIndex, dimsDef, idx, out2) { - var item = out2 || []; - for (var i = 0; i < dimsDef.length; i++) { - var dimName = dimsDef[i].name; - if (true) { - if (dimName == null) { - throw new Error(); - } - } - var col = rawData[dimName]; - item[i] = col ? col[idx] : null; - } - return item; - }, _a[SOURCE_FORMAT_ORIGINAL] = getItemSimply, _a); - function getRawSourceItemGetter(sourceFormat, seriesLayoutBy) { - var method = rawSourceItemGetterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)]; - if (true) { - assert(method, 'Do not support get item on "' + sourceFormat + '", "' + seriesLayoutBy + '".'); - } - return method; - } - var countSimply = function(rawData, startIndex, dimsDef) { - return rawData.length; - }; - var rawSourceDataCounterMap = (_b = {}, _b[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_COLUMN] = function(rawData, startIndex, dimsDef) { - return Math.max(0, rawData.length - startIndex); - }, _b[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_ROW] = function(rawData, startIndex, dimsDef) { - var row = rawData[0]; - return row ? Math.max(0, row.length - startIndex) : 0; - }, _b[SOURCE_FORMAT_OBJECT_ROWS] = countSimply, _b[SOURCE_FORMAT_KEYED_COLUMNS] = function(rawData, startIndex, dimsDef) { - var dimName = dimsDef[0].name; - if (true) { - if (dimName == null) { - throw new Error(); - } - } - var col = rawData[dimName]; - return col ? col.length : 0; - }, _b[SOURCE_FORMAT_ORIGINAL] = countSimply, _b); - function getRawSourceDataCounter(sourceFormat, seriesLayoutBy) { - var method = rawSourceDataCounterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)]; - if (true) { - assert(method, 'Do not support count on "' + sourceFormat + '", "' + seriesLayoutBy + '".'); - } - return method; - } - var getRawValueSimply = function(dataItem, dimIndex, property) { - return dataItem[dimIndex]; - }; - var rawSourceValueGetterMap = (_c = {}, _c[SOURCE_FORMAT_ARRAY_ROWS] = getRawValueSimply, _c[SOURCE_FORMAT_OBJECT_ROWS] = function(dataItem, dimIndex, property) { - return dataItem[property]; - }, _c[SOURCE_FORMAT_KEYED_COLUMNS] = getRawValueSimply, _c[SOURCE_FORMAT_ORIGINAL] = function(dataItem, dimIndex, property) { - var value = getDataItemValue(dataItem); - return !(value instanceof Array) ? value : value[dimIndex]; - }, _c[SOURCE_FORMAT_TYPED_ARRAY] = getRawValueSimply, _c); - function getRawSourceValueGetter(sourceFormat) { - var method = rawSourceValueGetterMap[sourceFormat]; - if (true) { - assert(method, 'Do not support get value on "' + sourceFormat + '".'); - } - return method; - } - function getMethodMapKey(sourceFormat, seriesLayoutBy) { - return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + "_" + seriesLayoutBy : sourceFormat; - } - function retrieveRawValue(data, dataIndex, dim) { - if (!data) { - return; - } - var dataItem = data.getRawDataItem(dataIndex); - if (dataItem == null) { - return; - } - var store = data.getStore(); - var sourceFormat = store.getSource().sourceFormat; - if (dim != null) { - var dimIndex = data.getDimensionIndex(dim); - var property = store.getDimensionProperty(dimIndex); - return getRawSourceValueGetter(sourceFormat)(dataItem, dimIndex, property); - } else { - var result = dataItem; - if (sourceFormat === SOURCE_FORMAT_ORIGINAL) { - result = getDataItemValue(dataItem); - } - return result; - } - } - - // node_modules/echarts/lib/model/mixin/dataFormat.js - var DIMENSION_LABEL_REG = /\{@(.+?)\}/g; - var DataFormatMixin = ( - /** @class */ - function() { - function DataFormatMixin2() { - } - DataFormatMixin2.prototype.getDataParams = function(dataIndex, dataType) { - var data = this.getData(dataType); - var rawValue = this.getRawValue(dataIndex, dataType); - var rawDataIndex = data.getRawIndex(dataIndex); - var name = data.getName(dataIndex); - var itemOpt = data.getRawDataItem(dataIndex); - var style = data.getItemVisual(dataIndex, "style"); - var color = style && style[data.getItemVisual(dataIndex, "drawType") || "fill"]; - var borderColor = style && style.stroke; - var mainType = this.mainType; - var isSeries2 = mainType === "series"; - var userOutput = data.userOutput && data.userOutput.get(); - return { - componentType: mainType, - componentSubType: this.subType, - componentIndex: this.componentIndex, - seriesType: isSeries2 ? this.subType : null, - seriesIndex: this.seriesIndex, - seriesId: isSeries2 ? this.id : null, - seriesName: isSeries2 ? this.name : null, - name, - dataIndex: rawDataIndex, - data: itemOpt, - dataType, - value: rawValue, - color, - borderColor, - dimensionNames: userOutput ? userOutput.fullDimensions : null, - encode: userOutput ? userOutput.encode : null, - // Param name list for mapping `a`, `b`, `c`, `d`, `e` - $vars: ["seriesName", "name", "value"] - }; - }; - DataFormatMixin2.prototype.getFormattedLabel = function(dataIndex, status, dataType, labelDimIndex, formatter, extendParams) { - status = status || "normal"; - var data = this.getData(dataType); - var params = this.getDataParams(dataIndex, dataType); - if (extendParams) { - params.value = extendParams.interpolatedValue; - } - if (labelDimIndex != null && isArray(params.value)) { - params.value = params.value[labelDimIndex]; - } - if (!formatter) { - var itemModel = data.getItemModel(dataIndex); - formatter = itemModel.get(status === "normal" ? ["label", "formatter"] : [status, "label", "formatter"]); - } - if (isFunction(formatter)) { - params.status = status; - params.dimensionIndex = labelDimIndex; - return formatter(params); - } else if (isString(formatter)) { - var str = formatTpl(formatter, params); - return str.replace(DIMENSION_LABEL_REG, function(origin, dimStr) { - var len2 = dimStr.length; - var dimLoose = dimStr; - if (dimLoose.charAt(0) === "[" && dimLoose.charAt(len2 - 1) === "]") { - dimLoose = +dimLoose.slice(1, len2 - 1); - if (true) { - if (isNaN(dimLoose)) { - error("Invalide label formatter: @" + dimStr + ", only support @[0], @[1], @[2], ..."); - } - } - } - var val = retrieveRawValue(data, dataIndex, dimLoose); - if (extendParams && isArray(extendParams.interpolatedValue)) { - var dimIndex = data.getDimensionIndex(dimLoose); - if (dimIndex >= 0) { - val = extendParams.interpolatedValue[dimIndex]; - } - } - return val != null ? val + "" : ""; - }); - } - }; - DataFormatMixin2.prototype.getRawValue = function(idx, dataType) { - return retrieveRawValue(this.getData(dataType), idx); - }; - DataFormatMixin2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - return; - }; - return DataFormatMixin2; - }() - ); - function normalizeTooltipFormatResult(result) { - var markupText; - var markupFragment; - if (isObject(result)) { - if (result.type) { - markupFragment = result; - } else { - if (true) { - console.warn("The return type of `formatTooltip` is not supported: " + makePrintable(result)); - } - } - } else { - markupText = result; - } - return { - text: markupText, - // markers: markers || markersExisting, - frag: markupFragment - }; - } - - // node_modules/echarts/lib/core/task.js - function createTask(define2) { - return new Task(define2); - } - var Task = ( - /** @class */ - function() { - function Task2(define2) { - define2 = define2 || {}; - this._reset = define2.reset; - this._plan = define2.plan; - this._count = define2.count; - this._onDirty = define2.onDirty; - this._dirty = true; - } - Task2.prototype.perform = function(performArgs) { - var upTask = this._upstream; - var skip = performArgs && performArgs.skip; - if (this._dirty && upTask) { - var context = this.context; - context.data = context.outputData = upTask.context.outputData; - } - if (this.__pipeline) { - this.__pipeline.currentTask = this; - } - var planResult; - if (this._plan && !skip) { - planResult = this._plan(this.context); - } - var lastModBy = normalizeModBy(this._modBy); - var lastModDataCount = this._modDataCount || 0; - var modBy = normalizeModBy(performArgs && performArgs.modBy); - var modDataCount = performArgs && performArgs.modDataCount || 0; - if (lastModBy !== modBy || lastModDataCount !== modDataCount) { - planResult = "reset"; - } - function normalizeModBy(val) { - !(val >= 1) && (val = 1); - return val; - } - var forceFirstProgress; - if (this._dirty || planResult === "reset") { - this._dirty = false; - forceFirstProgress = this._doReset(skip); - } - this._modBy = modBy; - this._modDataCount = modDataCount; - var step = performArgs && performArgs.step; - if (upTask) { - if (true) { - assert(upTask._outputDueEnd != null); - } - this._dueEnd = upTask._outputDueEnd; - } else { - if (true) { - assert(!this._progress || this._count); - } - this._dueEnd = this._count ? this._count(this.context) : Infinity; - } - if (this._progress) { - var start3 = this._dueIndex; - var end2 = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd); - if (!skip && (forceFirstProgress || start3 < end2)) { - var progress = this._progress; - if (isArray(progress)) { - for (var i = 0; i < progress.length; i++) { - this._doProgress(progress[i], start3, end2, modBy, modDataCount); - } - } else { - this._doProgress(progress, start3, end2, modBy, modDataCount); - } - } - this._dueIndex = end2; - var outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : end2; - if (true) { - assert(outputDueEnd >= this._outputDueEnd); - } - this._outputDueEnd = outputDueEnd; - } else { - this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd; - } - return this.unfinished(); - }; - Task2.prototype.dirty = function() { - this._dirty = true; - this._onDirty && this._onDirty(this.context); - }; - Task2.prototype._doProgress = function(progress, start3, end2, modBy, modDataCount) { - iterator.reset(start3, end2, modBy, modDataCount); - this._callingProgress = progress; - this._callingProgress({ - start: start3, - end: end2, - count: end2 - start3, - next: iterator.next - }, this.context); - }; - Task2.prototype._doReset = function(skip) { - this._dueIndex = this._outputDueEnd = this._dueEnd = 0; - this._settedOutputEnd = null; - var progress; - var forceFirstProgress; - if (!skip && this._reset) { - progress = this._reset(this.context); - if (progress && progress.progress) { - forceFirstProgress = progress.forceFirstProgress; - progress = progress.progress; - } - if (isArray(progress) && !progress.length) { - progress = null; - } - } - this._progress = progress; - this._modBy = this._modDataCount = null; - var downstream = this._downstream; - downstream && downstream.dirty(); - return forceFirstProgress; - }; - Task2.prototype.unfinished = function() { - return this._progress && this._dueIndex < this._dueEnd; - }; - Task2.prototype.pipe = function(downTask) { - if (true) { - assert(downTask && !downTask._disposed && downTask !== this); - } - if (this._downstream !== downTask || this._dirty) { - this._downstream = downTask; - downTask._upstream = this; - downTask.dirty(); - } - }; - Task2.prototype.dispose = function() { - if (this._disposed) { - return; - } - this._upstream && (this._upstream._downstream = null); - this._downstream && (this._downstream._upstream = null); - this._dirty = false; - this._disposed = true; - }; - Task2.prototype.getUpstream = function() { - return this._upstream; - }; - Task2.prototype.getDownstream = function() { - return this._downstream; - }; - Task2.prototype.setOutputEnd = function(end2) { - this._outputDueEnd = this._settedOutputEnd = end2; - }; - return Task2; - }() - ); - var iterator = /* @__PURE__ */ function() { - var end2; - var current; - var modBy; - var modDataCount; - var winCount; - var it = { - reset: function(s, e2, sStep, sCount) { - current = s; - end2 = e2; - modBy = sStep; - modDataCount = sCount; - winCount = Math.ceil(modDataCount / modBy); - it.next = modBy > 1 && modDataCount > 0 ? modNext : sequentialNext; - } - }; - return it; - function sequentialNext() { - return current < end2 ? current++ : null; - } - function modNext() { - var dataIndex = current % winCount * modBy + Math.ceil(current / winCount); - var result = current >= end2 ? null : dataIndex < modDataCount ? dataIndex : current; - current++; - return result; - } - }(); - - // node_modules/echarts/lib/data/helper/dataValueHelper.js - function parseDataValue(value, opt) { - var dimType = opt && opt.type; - if (dimType === "ordinal") { - return value; - } - if (dimType === "time" && !isNumber(value) && value != null && value !== "-") { - value = +parseDate(value); - } - return value == null || value === "" ? NaN : Number(value); - } - var valueParserMap = createHashMap({ - "number": function(val) { - return parseFloat(val); - }, - "time": function(val) { - return +parseDate(val); - }, - "trim": function(val) { - return isString(val) ? trim(val) : val; - } - }); - function getRawValueParser(type) { - return valueParserMap.get(type); - } - var ORDER_COMPARISON_OP_MAP = { - lt: function(lval, rval) { - return lval < rval; - }, - lte: function(lval, rval) { - return lval <= rval; - }, - gt: function(lval, rval) { - return lval > rval; - }, - gte: function(lval, rval) { - return lval >= rval; - } - }; - var FilterOrderComparator = ( - /** @class */ - function() { - function FilterOrderComparator2(op, rval) { - if (!isNumber(rval)) { - var errMsg = ""; - if (true) { - errMsg = 'rvalue of "<", ">", "<=", ">=" can only be number in filter.'; - } - throwError(errMsg); - } - this._opFn = ORDER_COMPARISON_OP_MAP[op]; - this._rvalFloat = numericToNumber(rval); - } - FilterOrderComparator2.prototype.evaluate = function(lval) { - return isNumber(lval) ? this._opFn(lval, this._rvalFloat) : this._opFn(numericToNumber(lval), this._rvalFloat); - }; - return FilterOrderComparator2; - }() - ); - var SortOrderComparator = ( - /** @class */ - function() { - function SortOrderComparator2(order, incomparable) { - var isDesc = order === "desc"; - this._resultLT = isDesc ? 1 : -1; - if (incomparable == null) { - incomparable = isDesc ? "min" : "max"; - } - this._incomparable = incomparable === "min" ? -Infinity : Infinity; - } - SortOrderComparator2.prototype.evaluate = function(lval, rval) { - var lvalFloat = isNumber(lval) ? lval : numericToNumber(lval); - var rvalFloat = isNumber(rval) ? rval : numericToNumber(rval); - var lvalNotNumeric = isNaN(lvalFloat); - var rvalNotNumeric = isNaN(rvalFloat); - if (lvalNotNumeric) { - lvalFloat = this._incomparable; - } - if (rvalNotNumeric) { - rvalFloat = this._incomparable; - } - if (lvalNotNumeric && rvalNotNumeric) { - var lvalIsStr = isString(lval); - var rvalIsStr = isString(rval); - if (lvalIsStr) { - lvalFloat = rvalIsStr ? lval : 0; - } - if (rvalIsStr) { - rvalFloat = lvalIsStr ? rval : 0; - } - } - return lvalFloat < rvalFloat ? this._resultLT : lvalFloat > rvalFloat ? -this._resultLT : 0; - }; - return SortOrderComparator2; - }() - ); - var FilterEqualityComparator = ( - /** @class */ - function() { - function FilterEqualityComparator2(isEq, rval) { - this._rval = rval; - this._isEQ = isEq; - this._rvalTypeof = typeof rval; - this._rvalFloat = numericToNumber(rval); - } - FilterEqualityComparator2.prototype.evaluate = function(lval) { - var eqResult = lval === this._rval; - if (!eqResult) { - var lvalTypeof = typeof lval; - if (lvalTypeof !== this._rvalTypeof && (lvalTypeof === "number" || this._rvalTypeof === "number")) { - eqResult = numericToNumber(lval) === this._rvalFloat; - } - } - return this._isEQ ? eqResult : !eqResult; - }; - return FilterEqualityComparator2; - }() - ); - function createFilterComparator(op, rval) { - return op === "eq" || op === "ne" ? new FilterEqualityComparator(op === "eq", rval) : hasOwn(ORDER_COMPARISON_OP_MAP, op) ? new FilterOrderComparator(op, rval) : null; - } - - // node_modules/echarts/lib/data/helper/transform.js - var ExternalSource = ( - /** @class */ - function() { - function ExternalSource2() { - } - ExternalSource2.prototype.getRawData = function() { - throw new Error("not supported"); - }; - ExternalSource2.prototype.getRawDataItem = function(dataIndex) { - throw new Error("not supported"); - }; - ExternalSource2.prototype.cloneRawData = function() { - return; - }; - ExternalSource2.prototype.getDimensionInfo = function(dim) { - return; - }; - ExternalSource2.prototype.cloneAllDimensionInfo = function() { - return; - }; - ExternalSource2.prototype.count = function() { - return; - }; - ExternalSource2.prototype.retrieveValue = function(dataIndex, dimIndex) { - return; - }; - ExternalSource2.prototype.retrieveValueFromItem = function(dataItem, dimIndex) { - return; - }; - ExternalSource2.prototype.convertValue = function(rawVal, dimInfo) { - return parseDataValue(rawVal, dimInfo); - }; - return ExternalSource2; - }() - ); - function createExternalSource(internalSource, externalTransform) { - var extSource = new ExternalSource(); - var data = internalSource.data; - var sourceFormat = extSource.sourceFormat = internalSource.sourceFormat; - var sourceHeaderCount = internalSource.startIndex; - var errMsg = ""; - if (internalSource.seriesLayoutBy !== SERIES_LAYOUT_BY_COLUMN) { - if (true) { - errMsg = '`seriesLayoutBy` of upstream dataset can only be "column" in data transform.'; - } - throwError(errMsg); - } - var dimensions = []; - var dimsByName = {}; - var dimsDef = internalSource.dimensionsDefine; - if (dimsDef) { - each(dimsDef, function(dimDef, idx) { - var name = dimDef.name; - var dimDefExt = { - index: idx, - name, - displayName: dimDef.displayName - }; - dimensions.push(dimDefExt); - if (name != null) { - var errMsg_1 = ""; - if (hasOwn(dimsByName, name)) { - if (true) { - errMsg_1 = 'dimension name "' + name + '" duplicated.'; - } - throwError(errMsg_1); - } - dimsByName[name] = dimDefExt; - } - }); - } else { - for (var i = 0; i < internalSource.dimensionsDetectedCount || 0; i++) { - dimensions.push({ - index: i - }); - } - } - var rawItemGetter = getRawSourceItemGetter(sourceFormat, SERIES_LAYOUT_BY_COLUMN); - if (externalTransform.__isBuiltIn) { - extSource.getRawDataItem = function(dataIndex) { - return rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex); - }; - extSource.getRawData = bind(getRawData, null, internalSource); - } - extSource.cloneRawData = bind(cloneRawData, null, internalSource); - var rawCounter = getRawSourceDataCounter(sourceFormat, SERIES_LAYOUT_BY_COLUMN); - extSource.count = bind(rawCounter, null, data, sourceHeaderCount, dimensions); - var rawValueGetter = getRawSourceValueGetter(sourceFormat); - extSource.retrieveValue = function(dataIndex, dimIndex) { - var rawItem = rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex); - return retrieveValueFromItem(rawItem, dimIndex); - }; - var retrieveValueFromItem = extSource.retrieveValueFromItem = function(dataItem, dimIndex) { - if (dataItem == null) { - return; - } - var dimDef = dimensions[dimIndex]; - if (dimDef) { - return rawValueGetter(dataItem, dimIndex, dimDef.name); - } - }; - extSource.getDimensionInfo = bind(getDimensionInfo, null, dimensions, dimsByName); - extSource.cloneAllDimensionInfo = bind(cloneAllDimensionInfo, null, dimensions); - return extSource; - } - function getRawData(upstream) { - var sourceFormat = upstream.sourceFormat; - if (!isSupportedSourceFormat(sourceFormat)) { - var errMsg = ""; - if (true) { - errMsg = "`getRawData` is not supported in source format " + sourceFormat; - } - throwError(errMsg); - } - return upstream.data; - } - function cloneRawData(upstream) { - var sourceFormat = upstream.sourceFormat; - var data = upstream.data; - if (!isSupportedSourceFormat(sourceFormat)) { - var errMsg = ""; - if (true) { - errMsg = "`cloneRawData` is not supported in source format " + sourceFormat; - } - throwError(errMsg); - } - if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) { - var result = []; - for (var i = 0, len2 = data.length; i < len2; i++) { - result.push(data[i].slice()); - } - return result; - } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) { - var result = []; - for (var i = 0, len2 = data.length; i < len2; i++) { - result.push(extend({}, data[i])); - } - return result; - } - } - function getDimensionInfo(dimensions, dimsByName, dim) { - if (dim == null) { - return; - } - if (isNumber(dim) || !isNaN(dim) && !hasOwn(dimsByName, dim)) { - return dimensions[dim]; - } else if (hasOwn(dimsByName, dim)) { - return dimsByName[dim]; - } - } - function cloneAllDimensionInfo(dimensions) { - return clone(dimensions); - } - var externalTransformMap = createHashMap(); - function registerExternalTransform(externalTransform) { - externalTransform = clone(externalTransform); - var type = externalTransform.type; - var errMsg = ""; - if (!type) { - if (true) { - errMsg = "Must have a `type` when `registerTransform`."; - } - throwError(errMsg); - } - var typeParsed = type.split(":"); - if (typeParsed.length !== 2) { - if (true) { - errMsg = 'Name must include namespace like "ns:regression".'; - } - throwError(errMsg); - } - var isBuiltIn = false; - if (typeParsed[0] === "echarts") { - type = typeParsed[1]; - isBuiltIn = true; - } - externalTransform.__isBuiltIn = isBuiltIn; - externalTransformMap.set(type, externalTransform); - } - function applyDataTransform(rawTransOption, sourceList, infoForPrint) { - var pipedTransOption = normalizeToArray(rawTransOption); - var pipeLen = pipedTransOption.length; - var errMsg = ""; - if (!pipeLen) { - if (true) { - errMsg = "If `transform` declared, it should at least contain one transform."; - } - throwError(errMsg); - } - for (var i = 0, len2 = pipeLen; i < len2; i++) { - var transOption = pipedTransOption[i]; - sourceList = applySingleDataTransform(transOption, sourceList, infoForPrint, pipeLen === 1 ? null : i); - if (i !== len2 - 1) { - sourceList.length = Math.max(sourceList.length, 1); - } - } - return sourceList; - } - function applySingleDataTransform(transOption, upSourceList, infoForPrint, pipeIndex) { - var errMsg = ""; - if (!upSourceList.length) { - if (true) { - errMsg = "Must have at least one upstream dataset."; - } - throwError(errMsg); - } - if (!isObject(transOption)) { - if (true) { - errMsg = "transform declaration must be an object rather than " + typeof transOption + "."; - } - throwError(errMsg); - } - var transType = transOption.type; - var externalTransform = externalTransformMap.get(transType); - if (!externalTransform) { - if (true) { - errMsg = 'Can not find transform on type "' + transType + '".'; - } - throwError(errMsg); - } - var extUpSourceList = map(upSourceList, function(upSource) { - return createExternalSource(upSource, externalTransform); - }); - var resultList = normalizeToArray(externalTransform.transform({ - upstream: extUpSourceList[0], - upstreamList: extUpSourceList, - config: clone(transOption.config) - })); - if (true) { - if (transOption.print) { - var printStrArr = map(resultList, function(extSource) { - var pipeIndexStr = pipeIndex != null ? " === pipe index: " + pipeIndex : ""; - return ["=== dataset index: " + infoForPrint.datasetIndex + pipeIndexStr + " ===", "- transform result data:", makePrintable(extSource.data), "- transform result dimensions:", makePrintable(extSource.dimensions)].join("\n"); - }).join("\n"); - log(printStrArr); - } - } - return map(resultList, function(result, resultIndex) { - var errMsg2 = ""; - if (!isObject(result)) { - if (true) { - errMsg2 = "A transform should not return some empty results."; - } - throwError(errMsg2); - } - if (!result.data) { - if (true) { - errMsg2 = "Transform result data should be not be null or undefined"; - } - throwError(errMsg2); - } - var sourceFormat = detectSourceFormat(result.data); - if (!isSupportedSourceFormat(sourceFormat)) { - if (true) { - errMsg2 = "Transform result data should be array rows or object rows."; - } - throwError(errMsg2); - } - var resultMetaRawOption; - var firstUpSource = upSourceList[0]; - if (firstUpSource && resultIndex === 0 && !result.dimensions) { - var startIndex = firstUpSource.startIndex; - if (startIndex) { - result.data = firstUpSource.data.slice(0, startIndex).concat(result.data); - } - resultMetaRawOption = { - seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN, - sourceHeader: startIndex, - dimensions: firstUpSource.metaRawOption.dimensions - }; - } else { - resultMetaRawOption = { - seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN, - sourceHeader: 0, - dimensions: result.dimensions - }; - } - return createSource(result.data, resultMetaRawOption, null); - }); - } - function isSupportedSourceFormat(sourceFormat) { - return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS || sourceFormat === SOURCE_FORMAT_OBJECT_ROWS; - } - - // node_modules/echarts/lib/data/DataStore.js - var UNDEFINED = "undefined"; - var CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array; - var CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array; - var CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array; - var CtorFloat64Array = typeof Float64Array === UNDEFINED ? Array : Float64Array; - var dataCtors = { - "float": CtorFloat64Array, - "int": CtorInt32Array, - // Ordinal data type can be string or int - "ordinal": Array, - "number": Array, - "time": CtorFloat64Array - }; - var defaultDimValueGetters; - function getIndicesCtor(rawCount) { - return rawCount > 65535 ? CtorUint32Array : CtorUint16Array; - } - function getInitialExtent() { - return [Infinity, -Infinity]; - } - function cloneChunk(originalChunk) { - var Ctor = originalChunk.constructor; - return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk); - } - function prepareStore(store, dimIdx, dimType, end2, append) { - var DataCtor = dataCtors[dimType || "float"]; - if (append) { - var oldStore = store[dimIdx]; - var oldLen = oldStore && oldStore.length; - if (!(oldLen === end2)) { - var newStore = new DataCtor(end2); - for (var j = 0; j < oldLen; j++) { - newStore[j] = oldStore[j]; - } - store[dimIdx] = newStore; - } - } else { - store[dimIdx] = new DataCtor(end2); - } - } - var DataStore = ( - /** @class */ - function() { - function DataStore2() { - this._chunks = []; - this._rawExtent = []; - this._extent = []; - this._count = 0; - this._rawCount = 0; - this._calcDimNameToIdx = createHashMap(); - } - DataStore2.prototype.initData = function(provider, inputDimensions, dimValueGetter) { - if (true) { - assert(isFunction(provider.getItem) && isFunction(provider.count), "Invalid data provider."); - } - this._provider = provider; - this._chunks = []; - this._indices = null; - this.getRawIndex = this._getRawIdxIdentity; - var source = provider.getSource(); - var defaultGetter = this.defaultDimValueGetter = defaultDimValueGetters[source.sourceFormat]; - this._dimValueGetter = dimValueGetter || defaultGetter; - this._rawExtent = []; - var willRetrieveDataByName = shouldRetrieveDataByName(source); - this._dimensions = map(inputDimensions, function(dim) { - if (true) { - if (willRetrieveDataByName) { - assert(dim.property != null); - } - } - return { - // Only pick these two props. Not leak other properties like orderMeta. - type: dim.type, - property: dim.property - }; - }); - this._initDataFromProvider(0, provider.count()); - }; - DataStore2.prototype.getProvider = function() { - return this._provider; - }; - DataStore2.prototype.getSource = function() { - return this._provider.getSource(); - }; - DataStore2.prototype.ensureCalculationDimension = function(dimName, type) { - var calcDimNameToIdx = this._calcDimNameToIdx; - var dimensions = this._dimensions; - var calcDimIdx = calcDimNameToIdx.get(dimName); - if (calcDimIdx != null) { - if (dimensions[calcDimIdx].type === type) { - return calcDimIdx; - } - } else { - calcDimIdx = dimensions.length; - } - dimensions[calcDimIdx] = { - type - }; - calcDimNameToIdx.set(dimName, calcDimIdx); - this._chunks[calcDimIdx] = new dataCtors[type || "float"](this._rawCount); - this._rawExtent[calcDimIdx] = getInitialExtent(); - return calcDimIdx; - }; - DataStore2.prototype.collectOrdinalMeta = function(dimIdx, ordinalMeta) { - var chunk = this._chunks[dimIdx]; - var dim = this._dimensions[dimIdx]; - var rawExtents = this._rawExtent; - var offset3 = dim.ordinalOffset || 0; - var len2 = chunk.length; - if (offset3 === 0) { - rawExtents[dimIdx] = getInitialExtent(); - } - var dimRawExtent = rawExtents[dimIdx]; - for (var i = offset3; i < len2; i++) { - var val = chunk[i] = ordinalMeta.parseAndCollect(chunk[i]); - if (!isNaN(val)) { - dimRawExtent[0] = Math.min(val, dimRawExtent[0]); - dimRawExtent[1] = Math.max(val, dimRawExtent[1]); - } - } - dim.ordinalMeta = ordinalMeta; - dim.ordinalOffset = len2; - dim.type = "ordinal"; - }; - DataStore2.prototype.getOrdinalMeta = function(dimIdx) { - var dimInfo = this._dimensions[dimIdx]; - var ordinalMeta = dimInfo.ordinalMeta; - return ordinalMeta; - }; - DataStore2.prototype.getDimensionProperty = function(dimIndex) { - var item = this._dimensions[dimIndex]; - return item && item.property; - }; - DataStore2.prototype.appendData = function(data) { - if (true) { - assert(!this._indices, "appendData can only be called on raw data."); - } - var provider = this._provider; - var start3 = this.count(); - provider.appendData(data); - var end2 = provider.count(); - if (!provider.persistent) { - end2 += start3; - } - if (start3 < end2) { - this._initDataFromProvider(start3, end2, true); - } - return [start3, end2]; - }; - DataStore2.prototype.appendValues = function(values, minFillLen) { - var chunks = this._chunks; - var dimensions = this._dimensions; - var dimLen = dimensions.length; - var rawExtent = this._rawExtent; - var start3 = this.count(); - var end2 = start3 + Math.max(values.length, minFillLen || 0); - for (var i = 0; i < dimLen; i++) { - var dim = dimensions[i]; - prepareStore(chunks, i, dim.type, end2, true); - } - var emptyDataItem = []; - for (var idx = start3; idx < end2; idx++) { - var sourceIdx = idx - start3; - for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) { - var dim = dimensions[dimIdx]; - var val = defaultDimValueGetters.arrayRows.call(this, values[sourceIdx] || emptyDataItem, dim.property, sourceIdx, dimIdx); - chunks[dimIdx][idx] = val; - var dimRawExtent = rawExtent[dimIdx]; - val < dimRawExtent[0] && (dimRawExtent[0] = val); - val > dimRawExtent[1] && (dimRawExtent[1] = val); - } - } - this._rawCount = this._count = end2; - return { - start: start3, - end: end2 - }; - }; - DataStore2.prototype._initDataFromProvider = function(start3, end2, append) { - var provider = this._provider; - var chunks = this._chunks; - var dimensions = this._dimensions; - var dimLen = dimensions.length; - var rawExtent = this._rawExtent; - var dimNames = map(dimensions, function(dim2) { - return dim2.property; - }); - for (var i = 0; i < dimLen; i++) { - var dim = dimensions[i]; - if (!rawExtent[i]) { - rawExtent[i] = getInitialExtent(); - } - prepareStore(chunks, i, dim.type, end2, append); - } - if (provider.fillStorage) { - provider.fillStorage(start3, end2, chunks, rawExtent); - } else { - var dataItem = []; - for (var idx = start3; idx < end2; idx++) { - dataItem = provider.getItem(idx, dataItem); - for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) { - var dimStorage = chunks[dimIdx]; - var val = this._dimValueGetter(dataItem, dimNames[dimIdx], idx, dimIdx); - dimStorage[idx] = val; - var dimRawExtent = rawExtent[dimIdx]; - val < dimRawExtent[0] && (dimRawExtent[0] = val); - val > dimRawExtent[1] && (dimRawExtent[1] = val); - } - } - } - if (!provider.persistent && provider.clean) { - provider.clean(); - } - this._rawCount = this._count = end2; - this._extent = []; - }; - DataStore2.prototype.count = function() { - return this._count; - }; - DataStore2.prototype.get = function(dim, idx) { - if (!(idx >= 0 && idx < this._count)) { - return NaN; - } - var dimStore = this._chunks[dim]; - return dimStore ? dimStore[this.getRawIndex(idx)] : NaN; - }; - DataStore2.prototype.getValues = function(dimensions, idx) { - var values = []; - var dimArr = []; - if (idx == null) { - idx = dimensions; - dimensions = []; - for (var i = 0; i < this._dimensions.length; i++) { - dimArr.push(i); - } - } else { - dimArr = dimensions; - } - for (var i = 0, len2 = dimArr.length; i < len2; i++) { - values.push(this.get(dimArr[i], idx)); - } - return values; - }; - DataStore2.prototype.getByRawIndex = function(dim, rawIdx) { - if (!(rawIdx >= 0 && rawIdx < this._rawCount)) { - return NaN; - } - var dimStore = this._chunks[dim]; - return dimStore ? dimStore[rawIdx] : NaN; - }; - DataStore2.prototype.getSum = function(dim) { - var dimData = this._chunks[dim]; - var sum2 = 0; - if (dimData) { - for (var i = 0, len2 = this.count(); i < len2; i++) { - var value = this.get(dim, i); - if (!isNaN(value)) { - sum2 += value; - } - } - } - return sum2; - }; - DataStore2.prototype.getMedian = function(dim) { - var dimDataArray = []; - this.each([dim], function(val) { - if (!isNaN(val)) { - dimDataArray.push(val); - } - }); - var sortedDimDataArray = dimDataArray.sort(function(a, b) { - return a - b; - }); - var len2 = this.count(); - return len2 === 0 ? 0 : len2 % 2 === 1 ? sortedDimDataArray[(len2 - 1) / 2] : (sortedDimDataArray[len2 / 2] + sortedDimDataArray[len2 / 2 - 1]) / 2; - }; - DataStore2.prototype.indexOfRawIndex = function(rawIndex) { - if (rawIndex >= this._rawCount || rawIndex < 0) { - return -1; - } - if (!this._indices) { - return rawIndex; - } - var indices = this._indices; - var rawDataIndex = indices[rawIndex]; - if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) { - return rawIndex; - } - var left = 0; - var right = this._count - 1; - while (left <= right) { - var mid = (left + right) / 2 | 0; - if (indices[mid] < rawIndex) { - left = mid + 1; - } else if (indices[mid] > rawIndex) { - right = mid - 1; - } else { - return mid; - } - } - return -1; - }; - DataStore2.prototype.indicesOfNearest = function(dim, value, maxDistance) { - var chunks = this._chunks; - var dimData = chunks[dim]; - var nearestIndices = []; - if (!dimData) { - return nearestIndices; - } - if (maxDistance == null) { - maxDistance = Infinity; - } - var minDist = Infinity; - var minDiff = -1; - var nearestIndicesLen = 0; - for (var i = 0, len2 = this.count(); i < len2; i++) { - var dataIndex = this.getRawIndex(i); - var diff = value - dimData[dataIndex]; - var dist3 = Math.abs(diff); - if (dist3 <= maxDistance) { - if (dist3 < minDist || dist3 === minDist && diff >= 0 && minDiff < 0) { - minDist = dist3; - minDiff = diff; - nearestIndicesLen = 0; - } - if (diff === minDiff) { - nearestIndices[nearestIndicesLen++] = i; - } - } - } - nearestIndices.length = nearestIndicesLen; - return nearestIndices; - }; - DataStore2.prototype.getIndices = function() { - var newIndices; - var indices = this._indices; - if (indices) { - var Ctor = indices.constructor; - var thisCount = this._count; - if (Ctor === Array) { - newIndices = new Ctor(thisCount); - for (var i = 0; i < thisCount; i++) { - newIndices[i] = indices[i]; - } - } else { - newIndices = new Ctor(indices.buffer, 0, thisCount); - } - } else { - var Ctor = getIndicesCtor(this._rawCount); - newIndices = new Ctor(this.count()); - for (var i = 0; i < newIndices.length; i++) { - newIndices[i] = i; - } - } - return newIndices; - }; - DataStore2.prototype.filter = function(dims, cb) { - if (!this._count) { - return this; - } - var newStore = this.clone(); - var count2 = newStore.count(); - var Ctor = getIndicesCtor(newStore._rawCount); - var newIndices = new Ctor(count2); - var value = []; - var dimSize = dims.length; - var offset3 = 0; - var dim0 = dims[0]; - var chunks = newStore._chunks; - for (var i = 0; i < count2; i++) { - var keep = void 0; - var rawIdx = newStore.getRawIndex(i); - if (dimSize === 0) { - keep = cb(i); - } else if (dimSize === 1) { - var val = chunks[dim0][rawIdx]; - keep = cb(val, i); - } else { - var k = 0; - for (; k < dimSize; k++) { - value[k] = chunks[dims[k]][rawIdx]; - } - value[k] = i; - keep = cb.apply(null, value); - } - if (keep) { - newIndices[offset3++] = rawIdx; - } - } - if (offset3 < count2) { - newStore._indices = newIndices; - } - newStore._count = offset3; - newStore._extent = []; - newStore._updateGetRawIdx(); - return newStore; - }; - DataStore2.prototype.selectRange = function(range) { - var newStore = this.clone(); - var len2 = newStore._count; - if (!len2) { - return this; - } - var dims = keys(range); - var dimSize = dims.length; - if (!dimSize) { - return this; - } - var originalCount = newStore.count(); - var Ctor = getIndicesCtor(newStore._rawCount); - var newIndices = new Ctor(originalCount); - var offset3 = 0; - var dim0 = dims[0]; - var min4 = range[dim0][0]; - var max4 = range[dim0][1]; - var storeArr = newStore._chunks; - var quickFinished = false; - if (!newStore._indices) { - var idx = 0; - if (dimSize === 1) { - var dimStorage = storeArr[dims[0]]; - for (var i = 0; i < len2; i++) { - var val = dimStorage[i]; - if (val >= min4 && val <= max4 || isNaN(val)) { - newIndices[offset3++] = idx; - } - idx++; - } - quickFinished = true; - } else if (dimSize === 2) { - var dimStorage = storeArr[dims[0]]; - var dimStorage2 = storeArr[dims[1]]; - var min23 = range[dims[1]][0]; - var max23 = range[dims[1]][1]; - for (var i = 0; i < len2; i++) { - var val = dimStorage[i]; - var val2 = dimStorage2[i]; - if ((val >= min4 && val <= max4 || isNaN(val)) && (val2 >= min23 && val2 <= max23 || isNaN(val2))) { - newIndices[offset3++] = idx; - } - idx++; - } - quickFinished = true; - } - } - if (!quickFinished) { - if (dimSize === 1) { - for (var i = 0; i < originalCount; i++) { - var rawIndex = newStore.getRawIndex(i); - var val = storeArr[dims[0]][rawIndex]; - if (val >= min4 && val <= max4 || isNaN(val)) { - newIndices[offset3++] = rawIndex; - } - } - } else { - for (var i = 0; i < originalCount; i++) { - var keep = true; - var rawIndex = newStore.getRawIndex(i); - for (var k = 0; k < dimSize; k++) { - var dimk = dims[k]; - var val = storeArr[dimk][rawIndex]; - if (val < range[dimk][0] || val > range[dimk][1]) { - keep = false; - } - } - if (keep) { - newIndices[offset3++] = newStore.getRawIndex(i); - } - } - } - } - if (offset3 < originalCount) { - newStore._indices = newIndices; - } - newStore._count = offset3; - newStore._extent = []; - newStore._updateGetRawIdx(); - return newStore; - }; - DataStore2.prototype.map = function(dims, cb) { - var target = this.clone(dims); - this._updateDims(target, dims, cb); - return target; - }; - DataStore2.prototype.modify = function(dims, cb) { - this._updateDims(this, dims, cb); - }; - DataStore2.prototype._updateDims = function(target, dims, cb) { - var targetChunks = target._chunks; - var tmpRetValue = []; - var dimSize = dims.length; - var dataCount = target.count(); - var values = []; - var rawExtent = target._rawExtent; - for (var i = 0; i < dims.length; i++) { - rawExtent[dims[i]] = getInitialExtent(); - } - for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) { - var rawIndex = target.getRawIndex(dataIndex); - for (var k = 0; k < dimSize; k++) { - values[k] = targetChunks[dims[k]][rawIndex]; - } - values[dimSize] = dataIndex; - var retValue = cb && cb.apply(null, values); - if (retValue != null) { - if (typeof retValue !== "object") { - tmpRetValue[0] = retValue; - retValue = tmpRetValue; - } - for (var i = 0; i < retValue.length; i++) { - var dim = dims[i]; - var val = retValue[i]; - var rawExtentOnDim = rawExtent[dim]; - var dimStore = targetChunks[dim]; - if (dimStore) { - dimStore[rawIndex] = val; - } - if (val < rawExtentOnDim[0]) { - rawExtentOnDim[0] = val; - } - if (val > rawExtentOnDim[1]) { - rawExtentOnDim[1] = val; - } - } - } - } - }; - DataStore2.prototype.lttbDownSample = function(valueDimension, rate) { - var target = this.clone([valueDimension], true); - var targetStorage = target._chunks; - var dimStore = targetStorage[valueDimension]; - var len2 = this.count(); - var sampledIndex = 0; - var frameSize = Math.floor(1 / rate); - var currentRawIndex = this.getRawIndex(0); - var maxArea; - var area; - var nextRawIndex; - var newIndices = new (getIndicesCtor(this._rawCount))(Math.min((Math.ceil(len2 / frameSize) + 2) * 2, len2)); - newIndices[sampledIndex++] = currentRawIndex; - for (var i = 1; i < len2 - 1; i += frameSize) { - var nextFrameStart = Math.min(i + frameSize, len2 - 1); - var nextFrameEnd = Math.min(i + frameSize * 2, len2); - var avgX = (nextFrameEnd + nextFrameStart) / 2; - var avgY = 0; - for (var idx = nextFrameStart; idx < nextFrameEnd; idx++) { - var rawIndex = this.getRawIndex(idx); - var y = dimStore[rawIndex]; - if (isNaN(y)) { - continue; - } - avgY += y; - } - avgY /= nextFrameEnd - nextFrameStart; - var frameStart = i; - var frameEnd = Math.min(i + frameSize, len2); - var pointAX = i - 1; - var pointAY = dimStore[currentRawIndex]; - maxArea = -1; - nextRawIndex = frameStart; - var firstNaNIndex = -1; - var countNaN = 0; - for (var idx = frameStart; idx < frameEnd; idx++) { - var rawIndex = this.getRawIndex(idx); - var y = dimStore[rawIndex]; - if (isNaN(y)) { - countNaN++; - if (firstNaNIndex < 0) { - firstNaNIndex = rawIndex; - } - continue; - } - area = Math.abs((pointAX - avgX) * (y - pointAY) - (pointAX - idx) * (avgY - pointAY)); - if (area > maxArea) { - maxArea = area; - nextRawIndex = rawIndex; - } - } - if (countNaN > 0 && countNaN < frameEnd - frameStart) { - newIndices[sampledIndex++] = Math.min(firstNaNIndex, nextRawIndex); - nextRawIndex = Math.max(firstNaNIndex, nextRawIndex); - } - newIndices[sampledIndex++] = nextRawIndex; - currentRawIndex = nextRawIndex; - } - newIndices[sampledIndex++] = this.getRawIndex(len2 - 1); - target._count = sampledIndex; - target._indices = newIndices; - target.getRawIndex = this._getRawIdx; - return target; - }; - DataStore2.prototype.minmaxDownSample = function(valueDimension, rate) { - var target = this.clone([valueDimension], true); - var targetStorage = target._chunks; - var frameSize = Math.floor(1 / rate); - var dimStore = targetStorage[valueDimension]; - var len2 = this.count(); - var newIndices = new (getIndicesCtor(this._rawCount))(Math.ceil(len2 / frameSize) * 2); - var offset3 = 0; - for (var i = 0; i < len2; i += frameSize) { - var minIndex = i; - var minValue = dimStore[this.getRawIndex(minIndex)]; - var maxIndex = i; - var maxValue = dimStore[this.getRawIndex(maxIndex)]; - var thisFrameSize = frameSize; - if (i + frameSize > len2) { - thisFrameSize = len2 - i; - } - for (var k = 0; k < thisFrameSize; k++) { - var rawIndex = this.getRawIndex(i + k); - var value = dimStore[rawIndex]; - if (value < minValue) { - minValue = value; - minIndex = i + k; - } - if (value > maxValue) { - maxValue = value; - maxIndex = i + k; - } - } - var rawMinIndex = this.getRawIndex(minIndex); - var rawMaxIndex = this.getRawIndex(maxIndex); - if (minIndex < maxIndex) { - newIndices[offset3++] = rawMinIndex; - newIndices[offset3++] = rawMaxIndex; - } else { - newIndices[offset3++] = rawMaxIndex; - newIndices[offset3++] = rawMinIndex; - } - } - target._count = offset3; - target._indices = newIndices; - target._updateGetRawIdx(); - return target; - }; - DataStore2.prototype.downSample = function(dimension, rate, sampleValue, sampleIndex) { - var target = this.clone([dimension], true); - var targetStorage = target._chunks; - var frameValues = []; - var frameSize = Math.floor(1 / rate); - var dimStore = targetStorage[dimension]; - var len2 = this.count(); - var rawExtentOnDim = target._rawExtent[dimension] = getInitialExtent(); - var newIndices = new (getIndicesCtor(this._rawCount))(Math.ceil(len2 / frameSize)); - var offset3 = 0; - for (var i = 0; i < len2; i += frameSize) { - if (frameSize > len2 - i) { - frameSize = len2 - i; - frameValues.length = frameSize; - } - for (var k = 0; k < frameSize; k++) { - var dataIdx = this.getRawIndex(i + k); - frameValues[k] = dimStore[dataIdx]; - } - var value = sampleValue(frameValues); - var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len2 - 1)); - dimStore[sampleFrameIdx] = value; - if (value < rawExtentOnDim[0]) { - rawExtentOnDim[0] = value; - } - if (value > rawExtentOnDim[1]) { - rawExtentOnDim[1] = value; - } - newIndices[offset3++] = sampleFrameIdx; - } - target._count = offset3; - target._indices = newIndices; - target._updateGetRawIdx(); - return target; - }; - DataStore2.prototype.each = function(dims, cb) { - if (!this._count) { - return; - } - var dimSize = dims.length; - var chunks = this._chunks; - for (var i = 0, len2 = this.count(); i < len2; i++) { - var rawIdx = this.getRawIndex(i); - switch (dimSize) { - case 0: - cb(i); - break; - case 1: - cb(chunks[dims[0]][rawIdx], i); - break; - case 2: - cb(chunks[dims[0]][rawIdx], chunks[dims[1]][rawIdx], i); - break; - default: - var k = 0; - var value = []; - for (; k < dimSize; k++) { - value[k] = chunks[dims[k]][rawIdx]; - } - value[k] = i; - cb.apply(null, value); - } - } - }; - DataStore2.prototype.getDataExtent = function(dim) { - var dimData = this._chunks[dim]; - var initialExtent = getInitialExtent(); - if (!dimData) { - return initialExtent; - } - var currEnd = this.count(); - var useRaw = !this._indices; - var dimExtent; - if (useRaw) { - return this._rawExtent[dim].slice(); - } - dimExtent = this._extent[dim]; - if (dimExtent) { - return dimExtent.slice(); - } - dimExtent = initialExtent; - var min4 = dimExtent[0]; - var max4 = dimExtent[1]; - for (var i = 0; i < currEnd; i++) { - var rawIdx = this.getRawIndex(i); - var value = dimData[rawIdx]; - value < min4 && (min4 = value); - value > max4 && (max4 = value); - } - dimExtent = [min4, max4]; - this._extent[dim] = dimExtent; - return dimExtent; - }; - DataStore2.prototype.getRawDataItem = function(idx) { - var rawIdx = this.getRawIndex(idx); - if (!this._provider.persistent) { - var val = []; - var chunks = this._chunks; - for (var i = 0; i < chunks.length; i++) { - val.push(chunks[i][rawIdx]); - } - return val; - } else { - return this._provider.getItem(rawIdx); - } - }; - DataStore2.prototype.clone = function(clonedDims, ignoreIndices) { - var target = new DataStore2(); - var chunks = this._chunks; - var clonedDimsMap = clonedDims && reduce(clonedDims, function(obj, dimIdx) { - obj[dimIdx] = true; - return obj; - }, {}); - if (clonedDimsMap) { - for (var i = 0; i < chunks.length; i++) { - target._chunks[i] = !clonedDimsMap[i] ? chunks[i] : cloneChunk(chunks[i]); - } - } else { - target._chunks = chunks; - } - this._copyCommonProps(target); - if (!ignoreIndices) { - target._indices = this._cloneIndices(); - } - target._updateGetRawIdx(); - return target; - }; - DataStore2.prototype._copyCommonProps = function(target) { - target._count = this._count; - target._rawCount = this._rawCount; - target._provider = this._provider; - target._dimensions = this._dimensions; - target._extent = clone(this._extent); - target._rawExtent = clone(this._rawExtent); - }; - DataStore2.prototype._cloneIndices = function() { - if (this._indices) { - var Ctor = this._indices.constructor; - var indices = void 0; - if (Ctor === Array) { - var thisCount = this._indices.length; - indices = new Ctor(thisCount); - for (var i = 0; i < thisCount; i++) { - indices[i] = this._indices[i]; - } - } else { - indices = new Ctor(this._indices); - } - return indices; - } - return null; - }; - DataStore2.prototype._getRawIdxIdentity = function(idx) { - return idx; - }; - DataStore2.prototype._getRawIdx = function(idx) { - if (idx < this._count && idx >= 0) { - return this._indices[idx]; - } - return -1; - }; - DataStore2.prototype._updateGetRawIdx = function() { - this.getRawIndex = this._indices ? this._getRawIdx : this._getRawIdxIdentity; - }; - DataStore2.internalField = function() { - function getDimValueSimply(dataItem, property, dataIndex, dimIndex) { - return parseDataValue(dataItem[dimIndex], this._dimensions[dimIndex]); - } - defaultDimValueGetters = { - arrayRows: getDimValueSimply, - objectRows: function(dataItem, property, dataIndex, dimIndex) { - return parseDataValue(dataItem[property], this._dimensions[dimIndex]); - }, - keyedColumns: getDimValueSimply, - original: function(dataItem, property, dataIndex, dimIndex) { - var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value); - return parseDataValue(value instanceof Array ? value[dimIndex] : value, this._dimensions[dimIndex]); - }, - typedArray: function(dataItem, property, dataIndex, dimIndex) { - return dataItem[dimIndex]; - } - }; - }(); - return DataStore2; - }() - ); - var DataStore_default = DataStore; - - // node_modules/echarts/lib/data/helper/sourceManager.js - var SourceManager = ( - /** @class */ - function() { - function SourceManager2(sourceHost) { - this._sourceList = []; - this._storeList = []; - this._upstreamSignList = []; - this._versionSignBase = 0; - this._dirty = true; - this._sourceHost = sourceHost; - } - SourceManager2.prototype.dirty = function() { - this._setLocalSource([], []); - this._storeList = []; - this._dirty = true; - }; - SourceManager2.prototype._setLocalSource = function(sourceList, upstreamSignList) { - this._sourceList = sourceList; - this._upstreamSignList = upstreamSignList; - this._versionSignBase++; - if (this._versionSignBase > 9e10) { - this._versionSignBase = 0; - } - }; - SourceManager2.prototype._getVersionSign = function() { - return this._sourceHost.uid + "_" + this._versionSignBase; - }; - SourceManager2.prototype.prepareSource = function() { - if (this._isDirty()) { - this._createSource(); - this._dirty = false; - } - }; - SourceManager2.prototype._createSource = function() { - this._setLocalSource([], []); - var sourceHost = this._sourceHost; - var upSourceMgrList = this._getUpstreamSourceManagers(); - var hasUpstream = !!upSourceMgrList.length; - var resultSourceList; - var upstreamSignList; - if (isSeries(sourceHost)) { - var seriesModel = sourceHost; - var data = void 0; - var sourceFormat = void 0; - var upSource = void 0; - if (hasUpstream) { - var upSourceMgr = upSourceMgrList[0]; - upSourceMgr.prepareSource(); - upSource = upSourceMgr.getSource(); - data = upSource.data; - sourceFormat = upSource.sourceFormat; - upstreamSignList = [upSourceMgr._getVersionSign()]; - } else { - data = seriesModel.get("data", true); - sourceFormat = isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL; - upstreamSignList = []; - } - var newMetaRawOption = this._getSourceMetaRawOption() || {}; - var upMetaRawOption = upSource && upSource.metaRawOption || {}; - var seriesLayoutBy = retrieve2(newMetaRawOption.seriesLayoutBy, upMetaRawOption.seriesLayoutBy) || null; - var sourceHeader = retrieve2(newMetaRawOption.sourceHeader, upMetaRawOption.sourceHeader); - var dimensions = retrieve2(newMetaRawOption.dimensions, upMetaRawOption.dimensions); - var needsCreateSource = seriesLayoutBy !== upMetaRawOption.seriesLayoutBy || !!sourceHeader !== !!upMetaRawOption.sourceHeader || dimensions; - resultSourceList = needsCreateSource ? [createSource(data, { - seriesLayoutBy, - sourceHeader, - dimensions - }, sourceFormat)] : []; - } else { - var datasetModel = sourceHost; - if (hasUpstream) { - var result = this._applyTransform(upSourceMgrList); - resultSourceList = result.sourceList; - upstreamSignList = result.upstreamSignList; - } else { - var sourceData = datasetModel.get("source", true); - resultSourceList = [createSource(sourceData, this._getSourceMetaRawOption(), null)]; - upstreamSignList = []; - } - } - if (true) { - assert(resultSourceList && upstreamSignList); - } - this._setLocalSource(resultSourceList, upstreamSignList); - }; - SourceManager2.prototype._applyTransform = function(upMgrList) { - var datasetModel = this._sourceHost; - var transformOption = datasetModel.get("transform", true); - var fromTransformResult = datasetModel.get("fromTransformResult", true); - if (true) { - assert(fromTransformResult != null || transformOption != null); - } - if (fromTransformResult != null) { - var errMsg = ""; - if (upMgrList.length !== 1) { - if (true) { - errMsg = "When using `fromTransformResult`, there should be only one upstream dataset"; - } - doThrow(errMsg); - } - } - var sourceList; - var upSourceList = []; - var upstreamSignList = []; - each(upMgrList, function(upMgr) { - upMgr.prepareSource(); - var upSource = upMgr.getSource(fromTransformResult || 0); - var errMsg2 = ""; - if (fromTransformResult != null && !upSource) { - if (true) { - errMsg2 = "Can not retrieve result by `fromTransformResult`: " + fromTransformResult; - } - doThrow(errMsg2); - } - upSourceList.push(upSource); - upstreamSignList.push(upMgr._getVersionSign()); - }); - if (transformOption) { - sourceList = applyDataTransform(transformOption, upSourceList, { - datasetIndex: datasetModel.componentIndex - }); - } else if (fromTransformResult != null) { - sourceList = [cloneSourceShallow(upSourceList[0])]; - } - return { - sourceList, - upstreamSignList - }; - }; - SourceManager2.prototype._isDirty = function() { - if (this._dirty) { - return true; - } - var upSourceMgrList = this._getUpstreamSourceManagers(); - for (var i = 0; i < upSourceMgrList.length; i++) { - var upSrcMgr = upSourceMgrList[i]; - if ( - // Consider the case that there is ancestor diry, call it recursively. - // The performance is probably not an issue because usually the chain is not long. - upSrcMgr._isDirty() || this._upstreamSignList[i] !== upSrcMgr._getVersionSign() - ) { - return true; - } - } - }; - SourceManager2.prototype.getSource = function(sourceIndex) { - sourceIndex = sourceIndex || 0; - var source = this._sourceList[sourceIndex]; - if (!source) { - var upSourceMgrList = this._getUpstreamSourceManagers(); - return upSourceMgrList[0] && upSourceMgrList[0].getSource(sourceIndex); - } - return source; - }; - SourceManager2.prototype.getSharedDataStore = function(seriesDimRequest) { - if (true) { - assert(isSeries(this._sourceHost), "Can only call getDataStore on series source manager."); - } - var schema = seriesDimRequest.makeStoreSchema(); - return this._innerGetDataStore(schema.dimensions, seriesDimRequest.source, schema.hash); - }; - SourceManager2.prototype._innerGetDataStore = function(storeDims, seriesSource, sourceReadKey) { - var sourceIndex = 0; - var storeList = this._storeList; - var cachedStoreMap = storeList[sourceIndex]; - if (!cachedStoreMap) { - cachedStoreMap = storeList[sourceIndex] = {}; - } - var cachedStore = cachedStoreMap[sourceReadKey]; - if (!cachedStore) { - var upSourceMgr = this._getUpstreamSourceManagers()[0]; - if (isSeries(this._sourceHost) && upSourceMgr) { - cachedStore = upSourceMgr._innerGetDataStore(storeDims, seriesSource, sourceReadKey); - } else { - cachedStore = new DataStore_default(); - cachedStore.initData(new DefaultDataProvider(seriesSource, storeDims.length), storeDims); - } - cachedStoreMap[sourceReadKey] = cachedStore; - } - return cachedStore; - }; - SourceManager2.prototype._getUpstreamSourceManagers = function() { - var sourceHost = this._sourceHost; - if (isSeries(sourceHost)) { - var datasetModel = querySeriesUpstreamDatasetModel(sourceHost); - return !datasetModel ? [] : [datasetModel.getSourceManager()]; - } else { - return map(queryDatasetUpstreamDatasetModels(sourceHost), function(datasetModel2) { - return datasetModel2.getSourceManager(); - }); - } - }; - SourceManager2.prototype._getSourceMetaRawOption = function() { - var sourceHost = this._sourceHost; - var seriesLayoutBy; - var sourceHeader; - var dimensions; - if (isSeries(sourceHost)) { - seriesLayoutBy = sourceHost.get("seriesLayoutBy", true); - sourceHeader = sourceHost.get("sourceHeader", true); - dimensions = sourceHost.get("dimensions", true); - } else if (!this._getUpstreamSourceManagers().length) { - var model = sourceHost; - seriesLayoutBy = model.get("seriesLayoutBy", true); - sourceHeader = model.get("sourceHeader", true); - dimensions = model.get("dimensions", true); - } - return { - seriesLayoutBy, - sourceHeader, - dimensions - }; - }; - return SourceManager2; - }() - ); - function disableTransformOptionMerge(datasetModel) { - var transformOption = datasetModel.option.transform; - transformOption && setAsPrimitive(datasetModel.option.transform); - } - function isSeries(sourceHost) { - return sourceHost.mainType === "series"; - } - function doThrow(errMsg) { - throw new Error(errMsg); - } - - // node_modules/echarts/lib/component/tooltip/tooltipMarkup.js - var TOOLTIP_LINE_HEIGHT_CSS = "line-height:1"; - function getTooltipLineHeight(textStyle) { - var lineHeight = textStyle.lineHeight; - if (lineHeight == null) { - return TOOLTIP_LINE_HEIGHT_CSS; - } else { - return "line-height:" + encodeHTML(lineHeight + "") + "px"; - } - } - function getTooltipTextStyle(textStyle, renderMode) { - var nameFontColor = textStyle.color || "#6e7079"; - var nameFontSize = textStyle.fontSize || 12; - var nameFontWeight = textStyle.fontWeight || "400"; - var valueFontColor = textStyle.color || "#464646"; - var valueFontSize = textStyle.fontSize || 14; - var valueFontWeight = textStyle.fontWeight || "900"; - if (renderMode === "html") { - return { - // eslint-disable-next-line max-len - nameStyle: "font-size:" + encodeHTML(nameFontSize + "") + "px;color:" + encodeHTML(nameFontColor) + ";font-weight:" + encodeHTML(nameFontWeight + ""), - // eslint-disable-next-line max-len - valueStyle: "font-size:" + encodeHTML(valueFontSize + "") + "px;color:" + encodeHTML(valueFontColor) + ";font-weight:" + encodeHTML(valueFontWeight + "") - }; - } else { - return { - nameStyle: { - fontSize: nameFontSize, - fill: nameFontColor, - fontWeight: nameFontWeight - }, - valueStyle: { - fontSize: valueFontSize, - fill: valueFontColor, - fontWeight: valueFontWeight - } - }; - } - } - var HTML_GAPS = [0, 10, 20, 30]; - var RICH_TEXT_GAPS = ["", "\n", "\n\n", "\n\n\n"]; - function createTooltipMarkup(type, option) { - option.type = type; - return option; - } - function isSectionFragment(frag) { - return frag.type === "section"; - } - function getBuilder(frag) { - return isSectionFragment(frag) ? buildSection : buildNameValue; - } - function getBlockGapLevel(frag) { - if (isSectionFragment(frag)) { - var gapLevel_1 = 0; - var subBlockLen = frag.blocks.length; - var hasInnerGap_1 = subBlockLen > 1 || subBlockLen > 0 && !frag.noHeader; - each(frag.blocks, function(subBlock) { - var subGapLevel = getBlockGapLevel(subBlock); - if (subGapLevel >= gapLevel_1) { - gapLevel_1 = subGapLevel + +(hasInnerGap_1 && // 0 always can not be readable gap level. - (!subGapLevel || isSectionFragment(subBlock) && !subBlock.noHeader)); - } - }); - return gapLevel_1; - } - return 0; - } - function buildSection(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) { - var noHeader = fragment.noHeader; - var gaps = getGap(getBlockGapLevel(fragment)); - var subMarkupTextList = []; - var subBlocks = fragment.blocks || []; - assert(!subBlocks || isArray(subBlocks)); - subBlocks = subBlocks || []; - var orderMode = ctx.orderMode; - if (fragment.sortBlocks && orderMode) { - subBlocks = subBlocks.slice(); - var orderMap = { - valueAsc: "asc", - valueDesc: "desc" - }; - if (hasOwn(orderMap, orderMode)) { - var comparator_1 = new SortOrderComparator(orderMap[orderMode], null); - subBlocks.sort(function(a, b) { - return comparator_1.evaluate(a.sortParam, b.sortParam); - }); - } else if (orderMode === "seriesDesc") { - subBlocks.reverse(); - } - } - each(subBlocks, function(subBlock, idx) { - var valueFormatter = fragment.valueFormatter; - var subMarkupText2 = getBuilder(subBlock)( - // Inherit valueFormatter - valueFormatter ? extend(extend({}, ctx), { - valueFormatter - }) : ctx, - subBlock, - idx > 0 ? gaps.html : 0, - toolTipTextStyle - ); - subMarkupText2 != null && subMarkupTextList.push(subMarkupText2); - }); - var subMarkupText = ctx.renderMode === "richText" ? subMarkupTextList.join(gaps.richText) : wrapBlockHTML(toolTipTextStyle, subMarkupTextList.join(""), noHeader ? topMarginForOuterGap : gaps.html); - if (noHeader) { - return subMarkupText; - } - var displayableHeader = makeValueReadable(fragment.header, "ordinal", ctx.useUTC); - var nameStyle = getTooltipTextStyle(toolTipTextStyle, ctx.renderMode).nameStyle; - var tooltipLineHeight = getTooltipLineHeight(toolTipTextStyle); - if (ctx.renderMode === "richText") { - return wrapInlineNameRichText(ctx, displayableHeader, nameStyle) + gaps.richText + subMarkupText; - } else { - return wrapBlockHTML(toolTipTextStyle, '
' + encodeHTML(displayableHeader) + "
" + subMarkupText, topMarginForOuterGap); - } - } - function buildNameValue(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) { - var renderMode = ctx.renderMode; - var noName = fragment.noName; - var noValue = fragment.noValue; - var noMarker = !fragment.markerType; - var name = fragment.name; - var useUTC = ctx.useUTC; - var valueFormatter = fragment.valueFormatter || ctx.valueFormatter || function(value) { - value = isArray(value) ? value : [value]; - return map(value, function(val, idx) { - return makeValueReadable(val, isArray(valueTypeOption) ? valueTypeOption[idx] : valueTypeOption, useUTC); - }); - }; - if (noName && noValue) { - return; - } - var markerStr = noMarker ? "" : ctx.markupStyleCreator.makeTooltipMarker(fragment.markerType, fragment.markerColor || "#333", renderMode); - var readableName = noName ? "" : makeValueReadable(name, "ordinal", useUTC); - var valueTypeOption = fragment.valueType; - var readableValueList = noValue ? [] : valueFormatter(fragment.value, fragment.dataIndex); - var valueAlignRight = !noMarker || !noName; - var valueCloseToMarker = !noMarker && noName; - var _a2 = getTooltipTextStyle(toolTipTextStyle, renderMode), nameStyle = _a2.nameStyle, valueStyle = _a2.valueStyle; - return renderMode === "richText" ? (noMarker ? "" : markerStr) + (noName ? "" : wrapInlineNameRichText(ctx, readableName, nameStyle)) + (noValue ? "" : wrapInlineValueRichText(ctx, readableValueList, valueAlignRight, valueCloseToMarker, valueStyle)) : wrapBlockHTML(toolTipTextStyle, (noMarker ? "" : markerStr) + (noName ? "" : wrapInlineNameHTML(readableName, !noMarker, nameStyle)) + (noValue ? "" : wrapInlineValueHTML(readableValueList, valueAlignRight, valueCloseToMarker, valueStyle)), topMarginForOuterGap); - } - function buildTooltipMarkup(fragment, markupStyleCreator, renderMode, orderMode, useUTC, toolTipTextStyle) { - if (!fragment) { - return; - } - var builder = getBuilder(fragment); - var ctx = { - useUTC, - renderMode, - orderMode, - markupStyleCreator, - valueFormatter: fragment.valueFormatter - }; - return builder(ctx, fragment, 0, toolTipTextStyle); - } - function getGap(gapLevel) { - return { - html: HTML_GAPS[gapLevel], - richText: RICH_TEXT_GAPS[gapLevel] - }; - } - function wrapBlockHTML(textStyle, encodedContent, topGap) { - var clearfix = '
'; - var marginCSS = "margin: " + topGap + "px 0 0"; - var tooltipLineHeight = getTooltipLineHeight(textStyle); - return '
' + encodedContent + clearfix + "
"; - } - function wrapInlineNameHTML(name, leftHasMarker, style) { - var marginCss = leftHasMarker ? "margin-left:2px" : ""; - return '' + encodeHTML(name) + ""; - } - function wrapInlineValueHTML(valueList, alignRight, valueCloseToMarker, style) { - var paddingStr = valueCloseToMarker ? "10px" : "20px"; - var alignCSS = alignRight ? "float:right;margin-left:" + paddingStr : ""; - valueList = isArray(valueList) ? valueList : [valueList]; - return '' + map(valueList, function(value) { - return encodeHTML(value); - }).join("  ") + ""; - } - function wrapInlineNameRichText(ctx, name, style) { - return ctx.markupStyleCreator.wrapRichTextStyle(name, style); - } - function wrapInlineValueRichText(ctx, values, alignRight, valueCloseToMarker, style) { - var styles = [style]; - var paddingLeft = valueCloseToMarker ? 10 : 20; - alignRight && styles.push({ - padding: [0, 0, 0, paddingLeft], - align: "right" - }); - return ctx.markupStyleCreator.wrapRichTextStyle(isArray(values) ? values.join(" ") : values, styles); - } - function retrieveVisualColorForTooltipMarker(series, dataIndex) { - var style = series.getData().getItemVisual(dataIndex, "style"); - var color = style[series.visualDrawType]; - return convertToColorString(color); - } - function getPaddingFromTooltipModel(model, renderMode) { - var padding = model.get("padding"); - return padding != null ? padding : renderMode === "richText" ? [8, 10] : 10; - } - var TooltipMarkupStyleCreator = ( - /** @class */ - function() { - function TooltipMarkupStyleCreator2() { - this.richTextStyles = {}; - this._nextStyleNameId = getRandomIdBase(); - } - TooltipMarkupStyleCreator2.prototype._generateStyleName = function() { - return "__EC_aUTo_" + this._nextStyleNameId++; - }; - TooltipMarkupStyleCreator2.prototype.makeTooltipMarker = function(markerType, colorStr, renderMode) { - var markerId = renderMode === "richText" ? this._generateStyleName() : null; - var marker = getTooltipMarker({ - color: colorStr, - type: markerType, - renderMode, - markerId - }); - if (isString(marker)) { - return marker; - } else { - if (true) { - assert(markerId); - } - this.richTextStyles[markerId] = marker.style; - return marker.content; - } - }; - TooltipMarkupStyleCreator2.prototype.wrapRichTextStyle = function(text, styles) { - var finalStl = {}; - if (isArray(styles)) { - each(styles, function(stl) { - return extend(finalStl, stl); - }); - } else { - extend(finalStl, styles); - } - var styleName = this._generateStyleName(); - this.richTextStyles[styleName] = finalStl; - return "{" + styleName + "|" + text + "}"; - }; - return TooltipMarkupStyleCreator2; - }() - ); - - // node_modules/echarts/lib/component/tooltip/seriesFormatTooltip.js - function defaultSeriesFormatTooltip(opt) { - var series = opt.series; - var dataIndex = opt.dataIndex; - var multipleSeries = opt.multipleSeries; - var data = series.getData(); - var tooltipDims = data.mapDimensionsAll("defaultedTooltip"); - var tooltipDimLen = tooltipDims.length; - var value = series.getRawValue(dataIndex); - var isValueArr = isArray(value); - var markerColor = retrieveVisualColorForTooltipMarker(series, dataIndex); - var inlineValue; - var inlineValueType; - var subBlocks; - var sortParam; - if (tooltipDimLen > 1 || isValueArr && !tooltipDimLen) { - var formatArrResult = formatTooltipArrayValue(value, series, dataIndex, tooltipDims, markerColor); - inlineValue = formatArrResult.inlineValues; - inlineValueType = formatArrResult.inlineValueTypes; - subBlocks = formatArrResult.blocks; - sortParam = formatArrResult.inlineValues[0]; - } else if (tooltipDimLen) { - var dimInfo = data.getDimensionInfo(tooltipDims[0]); - sortParam = inlineValue = retrieveRawValue(data, dataIndex, tooltipDims[0]); - inlineValueType = dimInfo.type; - } else { - sortParam = inlineValue = isValueArr ? value[0] : value; - } - var seriesNameSpecified = isNameSpecified(series); - var seriesName = seriesNameSpecified && series.name || ""; - var itemName = data.getName(dataIndex); - var inlineName = multipleSeries ? seriesName : itemName; - return createTooltipMarkup("section", { - header: seriesName, - // When series name is not specified, do not show a header line with only '-'. - // This case always happens in tooltip.trigger: 'item'. - noHeader: multipleSeries || !seriesNameSpecified, - sortParam, - blocks: [createTooltipMarkup("nameValue", { - markerType: "item", - markerColor, - // Do not mix display seriesName and itemName in one tooltip, - // which might confuses users. - name: inlineName, - // name dimension might be auto assigned, where the name might - // be not readable. So we check trim here. - noName: !trim(inlineName), - value: inlineValue, - valueType: inlineValueType, - dataIndex - })].concat(subBlocks || []) - }); - } - function formatTooltipArrayValue(value, series, dataIndex, tooltipDims, colorStr) { - var data = series.getData(); - var isValueMultipleLine = reduce(value, function(isValueMultipleLine2, val, idx) { - var dimItem = data.getDimensionInfo(idx); - return isValueMultipleLine2 = isValueMultipleLine2 || dimItem && dimItem.tooltip !== false && dimItem.displayName != null; - }, false); - var inlineValues = []; - var inlineValueTypes = []; - var blocks = []; - tooltipDims.length ? each(tooltipDims, function(dim) { - setEachItem(retrieveRawValue(data, dataIndex, dim), dim); - }) : each(value, setEachItem); - function setEachItem(val, dim) { - var dimInfo = data.getDimensionInfo(dim); - if (!dimInfo || dimInfo.otherDims.tooltip === false) { - return; - } - if (isValueMultipleLine) { - blocks.push(createTooltipMarkup("nameValue", { - markerType: "subItem", - markerColor: colorStr, - name: dimInfo.displayName, - value: val, - valueType: dimInfo.type - })); - } else { - inlineValues.push(val); - inlineValueTypes.push(dimInfo.type); - } - } - return { - inlineValues, - inlineValueTypes, - blocks - }; - } - - // node_modules/echarts/lib/model/Series.js - var inner2 = makeInner(); - function getSelectionKey(data, dataIndex) { - return data.getName(dataIndex) || data.getId(dataIndex); - } - var SERIES_UNIVERSAL_TRANSITION_PROP = "__universalTransitionEnabled"; - var SeriesModel = ( - /** @class */ - function(_super) { - __extends(SeriesModel2, _super); - function SeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._selectedDataIndicesMap = {}; - return _this; - } - SeriesModel2.prototype.init = function(option, parentModel, ecModel) { - this.seriesIndex = this.componentIndex; - this.dataTask = createTask({ - count: dataTaskCount, - reset: dataTaskReset - }); - this.dataTask.context = { - model: this - }; - this.mergeDefaultAndTheme(option, ecModel); - var sourceManager = inner2(this).sourceManager = new SourceManager(this); - sourceManager.prepareSource(); - var data = this.getInitialData(option, ecModel); - wrapData(data, this); - this.dataTask.context.data = data; - if (true) { - assert(data, "getInitialData returned invalid data."); - } - inner2(this).dataBeforeProcessed = data; - autoSeriesName(this); - this._initSelectedMapFromData(data); - }; - SeriesModel2.prototype.mergeDefaultAndTheme = function(option, ecModel) { - var layoutMode = fetchLayoutMode(this); - var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; - var themeSubType = this.subType; - if (Component_default.hasClass(themeSubType)) { - themeSubType += "Series"; - } - merge(option, ecModel.getTheme().get(this.subType)); - merge(option, this.getDefaultOption()); - defaultEmphasis(option, "label", ["show"]); - this.fillDataTextStyle(option.data); - if (layoutMode) { - mergeLayoutParam(option, inputPositionParams, layoutMode); - } - }; - SeriesModel2.prototype.mergeOption = function(newSeriesOption, ecModel) { - newSeriesOption = merge(this.option, newSeriesOption, true); - this.fillDataTextStyle(newSeriesOption.data); - var layoutMode = fetchLayoutMode(this); - if (layoutMode) { - mergeLayoutParam(this.option, newSeriesOption, layoutMode); - } - var sourceManager = inner2(this).sourceManager; - sourceManager.dirty(); - sourceManager.prepareSource(); - var data = this.getInitialData(newSeriesOption, ecModel); - wrapData(data, this); - this.dataTask.dirty(); - this.dataTask.context.data = data; - inner2(this).dataBeforeProcessed = data; - autoSeriesName(this); - this._initSelectedMapFromData(data); - }; - SeriesModel2.prototype.fillDataTextStyle = function(data) { - if (data && !isTypedArray(data)) { - var props = ["show"]; - for (var i = 0; i < data.length; i++) { - if (data[i] && data[i].label) { - defaultEmphasis(data[i], "label", props); - } - } - } - }; - SeriesModel2.prototype.getInitialData = function(option, ecModel) { - return; - }; - SeriesModel2.prototype.appendData = function(params) { - var data = this.getRawData(); - data.appendData(params.data); - }; - SeriesModel2.prototype.getData = function(dataType) { - var task = getCurrentTask(this); - if (task) { - var data = task.context.data; - return dataType == null || !data.getLinkedData ? data : data.getLinkedData(dataType); - } else { - return inner2(this).data; - } - }; - SeriesModel2.prototype.getAllData = function() { - var mainData = this.getData(); - return mainData && mainData.getLinkedDataAll ? mainData.getLinkedDataAll() : [{ - data: mainData - }]; - }; - SeriesModel2.prototype.setData = function(data) { - var task = getCurrentTask(this); - if (task) { - var context = task.context; - context.outputData = data; - if (task !== this.dataTask) { - context.data = data; - } - } - inner2(this).data = data; - }; - SeriesModel2.prototype.getEncode = function() { - var encode = this.get("encode", true); - if (encode) { - return createHashMap(encode); - } - }; - SeriesModel2.prototype.getSourceManager = function() { - return inner2(this).sourceManager; - }; - SeriesModel2.prototype.getSource = function() { - return this.getSourceManager().getSource(); - }; - SeriesModel2.prototype.getRawData = function() { - return inner2(this).dataBeforeProcessed; - }; - SeriesModel2.prototype.getColorBy = function() { - var colorBy = this.get("colorBy"); - return colorBy || "series"; - }; - SeriesModel2.prototype.isColorBySeries = function() { - return this.getColorBy() === "series"; - }; - SeriesModel2.prototype.getBaseAxis = function() { - var coordSys = this.coordinateSystem; - return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis(); - }; - SeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - return defaultSeriesFormatTooltip({ - series: this, - dataIndex, - multipleSeries - }); - }; - SeriesModel2.prototype.isAnimationEnabled = function() { - var ecModel = this.ecModel; - if (env_default.node && !(ecModel && ecModel.ssr)) { - return false; - } - var animationEnabled = this.getShallow("animation"); - if (animationEnabled) { - if (this.getData().count() > this.getShallow("animationThreshold")) { - animationEnabled = false; - } - } - return !!animationEnabled; - }; - SeriesModel2.prototype.restoreData = function() { - this.dataTask.dirty(); - }; - SeriesModel2.prototype.getColorFromPalette = function(name, scope, requestColorNum) { - var ecModel = this.ecModel; - var color = PaletteMixin.prototype.getColorFromPalette.call(this, name, scope, requestColorNum); - if (!color) { - color = ecModel.getColorFromPalette(name, scope, requestColorNum); - } - return color; - }; - SeriesModel2.prototype.coordDimToDataDim = function(coordDim) { - return this.getRawData().mapDimensionsAll(coordDim); - }; - SeriesModel2.prototype.getProgressive = function() { - return this.get("progressive"); - }; - SeriesModel2.prototype.getProgressiveThreshold = function() { - return this.get("progressiveThreshold"); - }; - SeriesModel2.prototype.select = function(innerDataIndices, dataType) { - this._innerSelect(this.getData(dataType), innerDataIndices); - }; - SeriesModel2.prototype.unselect = function(innerDataIndices, dataType) { - var selectedMap = this.option.selectedMap; - if (!selectedMap) { - return; - } - var selectedMode = this.option.selectedMode; - var data = this.getData(dataType); - if (selectedMode === "series" || selectedMap === "all") { - this.option.selectedMap = {}; - this._selectedDataIndicesMap = {}; - return; - } - for (var i = 0; i < innerDataIndices.length; i++) { - var dataIndex = innerDataIndices[i]; - var nameOrId = getSelectionKey(data, dataIndex); - selectedMap[nameOrId] = false; - this._selectedDataIndicesMap[nameOrId] = -1; - } - }; - SeriesModel2.prototype.toggleSelect = function(innerDataIndices, dataType) { - var tmpArr2 = []; - for (var i = 0; i < innerDataIndices.length; i++) { - tmpArr2[0] = innerDataIndices[i]; - this.isSelected(innerDataIndices[i], dataType) ? this.unselect(tmpArr2, dataType) : this.select(tmpArr2, dataType); - } - }; - SeriesModel2.prototype.getSelectedDataIndices = function() { - if (this.option.selectedMap === "all") { - return [].slice.call(this.getData().getIndices()); - } - var selectedDataIndicesMap = this._selectedDataIndicesMap; - var nameOrIds = keys(selectedDataIndicesMap); - var dataIndices = []; - for (var i = 0; i < nameOrIds.length; i++) { - var dataIndex = selectedDataIndicesMap[nameOrIds[i]]; - if (dataIndex >= 0) { - dataIndices.push(dataIndex); - } - } - return dataIndices; - }; - SeriesModel2.prototype.isSelected = function(dataIndex, dataType) { - var selectedMap = this.option.selectedMap; - if (!selectedMap) { - return false; - } - var data = this.getData(dataType); - return (selectedMap === "all" || selectedMap[getSelectionKey(data, dataIndex)]) && !data.getItemModel(dataIndex).get(["select", "disabled"]); - }; - SeriesModel2.prototype.isUniversalTransitionEnabled = function() { - if (this[SERIES_UNIVERSAL_TRANSITION_PROP]) { - return true; - } - var universalTransitionOpt = this.option.universalTransition; - if (!universalTransitionOpt) { - return false; - } - if (universalTransitionOpt === true) { - return true; - } - return universalTransitionOpt && universalTransitionOpt.enabled; - }; - SeriesModel2.prototype._innerSelect = function(data, innerDataIndices) { - var _a2, _b2; - var option = this.option; - var selectedMode = option.selectedMode; - var len2 = innerDataIndices.length; - if (!selectedMode || !len2) { - return; - } - if (selectedMode === "series") { - option.selectedMap = "all"; - } else if (selectedMode === "multiple") { - if (!isObject(option.selectedMap)) { - option.selectedMap = {}; - } - var selectedMap = option.selectedMap; - for (var i = 0; i < len2; i++) { - var dataIndex = innerDataIndices[i]; - var nameOrId = getSelectionKey(data, dataIndex); - selectedMap[nameOrId] = true; - this._selectedDataIndicesMap[nameOrId] = data.getRawIndex(dataIndex); - } - } else if (selectedMode === "single" || selectedMode === true) { - var lastDataIndex = innerDataIndices[len2 - 1]; - var nameOrId = getSelectionKey(data, lastDataIndex); - option.selectedMap = (_a2 = {}, _a2[nameOrId] = true, _a2); - this._selectedDataIndicesMap = (_b2 = {}, _b2[nameOrId] = data.getRawIndex(lastDataIndex), _b2); - } - }; - SeriesModel2.prototype._initSelectedMapFromData = function(data) { - if (this.option.selectedMap) { - return; - } - var dataIndices = []; - if (data.hasItemOption) { - data.each(function(idx) { - var rawItem = data.getRawDataItem(idx); - if (rawItem && rawItem.selected) { - dataIndices.push(idx); - } - }); - } - if (dataIndices.length > 0) { - this._innerSelect(data, dataIndices); - } - }; - SeriesModel2.registerClass = function(clz) { - return Component_default.registerClass(clz); - }; - SeriesModel2.protoInitialize = function() { - var proto2 = SeriesModel2.prototype; - proto2.type = "series.__base__"; - proto2.seriesIndex = 0; - proto2.ignoreStyleOnData = false; - proto2.hasSymbolVisual = false; - proto2.defaultSymbol = "circle"; - proto2.visualStyleAccessPath = "itemStyle"; - proto2.visualDrawType = "fill"; - }(); - return SeriesModel2; - }(Component_default) - ); - mixin(SeriesModel, DataFormatMixin); - mixin(SeriesModel, PaletteMixin); - mountExtend(SeriesModel, Component_default); - function autoSeriesName(seriesModel) { - var name = seriesModel.name; - if (!isNameSpecified(seriesModel)) { - seriesModel.name = getSeriesAutoName(seriesModel) || name; - } - } - function getSeriesAutoName(seriesModel) { - var data = seriesModel.getRawData(); - var dataDims = data.mapDimensionsAll("seriesName"); - var nameArr = []; - each(dataDims, function(dataDim) { - var dimInfo = data.getDimensionInfo(dataDim); - dimInfo.displayName && nameArr.push(dimInfo.displayName); - }); - return nameArr.join(" "); - } - function dataTaskCount(context) { - return context.model.getRawData().count(); - } - function dataTaskReset(context) { - var seriesModel = context.model; - seriesModel.setData(seriesModel.getRawData().cloneShallow()); - return dataTaskProgress; - } - function dataTaskProgress(param, context) { - if (context.outputData && param.end > context.outputData.count()) { - context.model.getRawData().cloneShallow(context.outputData); - } - } - function wrapData(data, seriesModel) { - each(concatArray(data.CHANGABLE_METHODS, data.DOWNSAMPLE_METHODS), function(methodName) { - data.wrapMethod(methodName, curry(onDataChange, seriesModel)); - }); - } - function onDataChange(seriesModel, newList) { - var task = getCurrentTask(seriesModel); - if (task) { - task.setOutputEnd((newList || this).count()); - } - return newList; - } - function getCurrentTask(seriesModel) { - var scheduler = (seriesModel.ecModel || {}).scheduler; - var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid); - if (pipeline) { - var task = pipeline.currentTask; - if (task) { - var agentStubMap = task.agentStubMap; - if (agentStubMap) { - task = agentStubMap.get(seriesModel.uid); - } - } - return task; - } - } - var Series_default = SeriesModel; - - // node_modules/echarts/lib/view/Component.js - var ComponentView = ( - /** @class */ - function() { - function ComponentView2() { - this.group = new Group_default(); - this.uid = getUID("viewComponent"); - } - ComponentView2.prototype.init = function(ecModel, api) { - }; - ComponentView2.prototype.render = function(model, ecModel, api, payload) { - }; - ComponentView2.prototype.dispose = function(ecModel, api) { - }; - ComponentView2.prototype.updateView = function(model, ecModel, api, payload) { - }; - ComponentView2.prototype.updateLayout = function(model, ecModel, api, payload) { - }; - ComponentView2.prototype.updateVisual = function(model, ecModel, api, payload) { - }; - ComponentView2.prototype.toggleBlurSeries = function(seriesModels, isBlur, ecModel) { - }; - ComponentView2.prototype.eachRendered = function(cb) { - var group = this.group; - if (group) { - group.traverse(cb); - } - }; - return ComponentView2; - }() - ); - enableClassExtend(ComponentView); - enableClassManagement(ComponentView); - var Component_default2 = ComponentView; - - // node_modules/echarts/lib/chart/helper/createRenderPlanner.js - function createRenderPlanner() { - var inner23 = makeInner(); - return function(seriesModel) { - var fields = inner23(seriesModel); - var pipelineContext = seriesModel.pipelineContext; - var originalLarge = !!fields.large; - var originalProgressive = !!fields.progressiveRender; - var large = fields.large = !!(pipelineContext && pipelineContext.large); - var progressive = fields.progressiveRender = !!(pipelineContext && pipelineContext.progressiveRender); - return !!(originalLarge !== large || originalProgressive !== progressive) && "reset"; - }; - } - - // node_modules/echarts/lib/view/Chart.js - var inner3 = makeInner(); - var renderPlanner = createRenderPlanner(); - var ChartView = ( - /** @class */ - function() { - function ChartView2() { - this.group = new Group_default(); - this.uid = getUID("viewChart"); - this.renderTask = createTask({ - plan: renderTaskPlan, - reset: renderTaskReset - }); - this.renderTask.context = { - view: this - }; - } - ChartView2.prototype.init = function(ecModel, api) { - }; - ChartView2.prototype.render = function(seriesModel, ecModel, api, payload) { - if (true) { - throw new Error("render method must been implemented"); - } - }; - ChartView2.prototype.highlight = function(seriesModel, ecModel, api, payload) { - var data = seriesModel.getData(payload && payload.dataType); - if (!data) { - if (true) { - error("Unknown dataType " + payload.dataType); - } - return; - } - toggleHighlight(data, payload, "emphasis"); - }; - ChartView2.prototype.downplay = function(seriesModel, ecModel, api, payload) { - var data = seriesModel.getData(payload && payload.dataType); - if (!data) { - if (true) { - error("Unknown dataType " + payload.dataType); - } - return; - } - toggleHighlight(data, payload, "normal"); - }; - ChartView2.prototype.remove = function(ecModel, api) { - this.group.removeAll(); - }; - ChartView2.prototype.dispose = function(ecModel, api) { - }; - ChartView2.prototype.updateView = function(seriesModel, ecModel, api, payload) { - this.render(seriesModel, ecModel, api, payload); - }; - ChartView2.prototype.updateLayout = function(seriesModel, ecModel, api, payload) { - this.render(seriesModel, ecModel, api, payload); - }; - ChartView2.prototype.updateVisual = function(seriesModel, ecModel, api, payload) { - this.render(seriesModel, ecModel, api, payload); - }; - ChartView2.prototype.eachRendered = function(cb) { - traverseElements(this.group, cb); - }; - ChartView2.markUpdateMethod = function(payload, methodName) { - inner3(payload).updateMethod = methodName; - }; - ChartView2.protoInitialize = function() { - var proto2 = ChartView2.prototype; - proto2.type = "chart"; - }(); - return ChartView2; - }() - ); - function elSetState(el, state, highlightDigit) { - if (el && isHighDownDispatcher(el)) { - (state === "emphasis" ? enterEmphasis : leaveEmphasis)(el, highlightDigit); - } - } - function toggleHighlight(data, payload, state) { - var dataIndex = queryDataIndex(data, payload); - var highlightDigit = payload && payload.highlightKey != null ? getHighlightDigit(payload.highlightKey) : null; - if (dataIndex != null) { - each(normalizeToArray(dataIndex), function(dataIdx) { - elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit); - }); - } else { - data.eachItemGraphicEl(function(el) { - elSetState(el, state, highlightDigit); - }); - } - } - enableClassExtend(ChartView, ["dispose"]); - enableClassManagement(ChartView); - function renderTaskPlan(context) { - return renderPlanner(context.model); - } - function renderTaskReset(context) { - var seriesModel = context.model; - var ecModel = context.ecModel; - var api = context.api; - var payload = context.payload; - var progressiveRender = seriesModel.pipelineContext.progressiveRender; - var view = context.view; - var updateMethod = payload && inner3(payload).updateMethod; - var methodName = progressiveRender ? "incrementalPrepareRender" : updateMethod && view[updateMethod] ? updateMethod : "render"; - if (methodName !== "render") { - view[methodName](seriesModel, ecModel, api, payload); - } - return progressMethodMap[methodName]; - } - var progressMethodMap = { - incrementalPrepareRender: { - progress: function(params, context) { - context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload); - } - }, - render: { - // Put view.render in `progress` to support appendData. But in this case - // view.render should not be called in reset, otherwise it will be called - // twise. Use `forceFirstProgress` to make sure that view.render is called - // in any cases. - forceFirstProgress: true, - progress: function(params, context) { - context.view.render(context.model, context.ecModel, context.api, context.payload); - } - } - }; - var Chart_default = ChartView; - - // node_modules/echarts/lib/util/throttle.js - var ORIGIN_METHOD = "\0__throttleOriginMethod"; - var RATE = "\0__throttleRate"; - var THROTTLE_TYPE = "\0__throttleType"; - function throttle(fn, delay, debounce2) { - var currCall; - var lastCall = 0; - var lastExec = 0; - var timer = null; - var diff; - var scope; - var args; - var debounceNextCall; - delay = delay || 0; - function exec() { - lastExec = (/* @__PURE__ */ new Date()).getTime(); - timer = null; - fn.apply(scope, args || []); - } - var cb = function() { - var cbArgs = []; - for (var _i = 0; _i < arguments.length; _i++) { - cbArgs[_i] = arguments[_i]; - } - currCall = (/* @__PURE__ */ new Date()).getTime(); - scope = this; - args = cbArgs; - var thisDelay = debounceNextCall || delay; - var thisDebounce = debounceNextCall || debounce2; - debounceNextCall = null; - diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay; - clearTimeout(timer); - if (thisDebounce) { - timer = setTimeout(exec, thisDelay); - } else { - if (diff >= 0) { - exec(); - } else { - timer = setTimeout(exec, -diff); - } - } - lastCall = currCall; - }; - cb.clear = function() { - if (timer) { - clearTimeout(timer); - timer = null; - } - }; - cb.debounceNextCall = function(debounceDelay) { - debounceNextCall = debounceDelay; - }; - return cb; - } - function createOrUpdate(obj, fnAttr, rate, throttleType) { - var fn = obj[fnAttr]; - if (!fn) { - return; - } - var originFn = fn[ORIGIN_METHOD] || fn; - var lastThrottleType = fn[THROTTLE_TYPE]; - var lastRate = fn[RATE]; - if (lastRate !== rate || lastThrottleType !== throttleType) { - if (rate == null || !throttleType) { - return obj[fnAttr] = originFn; - } - fn = obj[fnAttr] = throttle(originFn, rate, throttleType === "debounce"); - fn[ORIGIN_METHOD] = originFn; - fn[THROTTLE_TYPE] = throttleType; - fn[RATE] = rate; - } - return fn; - } - function clear(obj, fnAttr) { - var fn = obj[fnAttr]; - if (fn && fn[ORIGIN_METHOD]) { - fn.clear && fn.clear(); - obj[fnAttr] = fn[ORIGIN_METHOD]; - } - } - - // node_modules/echarts/lib/visual/style.js - var inner4 = makeInner(); - var defaultStyleMappers = { - itemStyle: makeStyleMapper(ITEM_STYLE_KEY_MAP, true), - lineStyle: makeStyleMapper(LINE_STYLE_KEY_MAP, true) - }; - var defaultColorKey = { - lineStyle: "stroke", - itemStyle: "fill" - }; - function getStyleMapper(seriesModel, stylePath) { - var styleMapper = seriesModel.visualStyleMapper || defaultStyleMappers[stylePath]; - if (!styleMapper) { - console.warn("Unknown style type '" + stylePath + "'."); - return defaultStyleMappers.itemStyle; - } - return styleMapper; - } - function getDefaultColorKey(seriesModel, stylePath) { - var colorKey = seriesModel.visualDrawType || defaultColorKey[stylePath]; - if (!colorKey) { - console.warn("Unknown style type '" + stylePath + "'."); - return "fill"; - } - return colorKey; - } - var seriesStyleTask = { - createOnAllSeries: true, - performRawSeries: true, - reset: function(seriesModel, ecModel) { - var data = seriesModel.getData(); - var stylePath = seriesModel.visualStyleAccessPath || "itemStyle"; - var styleModel = seriesModel.getModel(stylePath); - var getStyle2 = getStyleMapper(seriesModel, stylePath); - var globalStyle = getStyle2(styleModel); - var decalOption = styleModel.getShallow("decal"); - if (decalOption) { - data.setVisual("decal", decalOption); - decalOption.dirty = true; - } - var colorKey = getDefaultColorKey(seriesModel, stylePath); - var color = globalStyle[colorKey]; - var colorCallback = isFunction(color) ? color : null; - var hasAutoColor = globalStyle.fill === "auto" || globalStyle.stroke === "auto"; - if (!globalStyle[colorKey] || colorCallback || hasAutoColor) { - var colorPalette2 = seriesModel.getColorFromPalette( - // TODO series count changed. - seriesModel.name, - null, - ecModel.getSeriesCount() - ); - if (!globalStyle[colorKey]) { - globalStyle[colorKey] = colorPalette2; - data.setVisual("colorFromPalette", true); - } - globalStyle.fill = globalStyle.fill === "auto" || isFunction(globalStyle.fill) ? colorPalette2 : globalStyle.fill; - globalStyle.stroke = globalStyle.stroke === "auto" || isFunction(globalStyle.stroke) ? colorPalette2 : globalStyle.stroke; - } - data.setVisual("style", globalStyle); - data.setVisual("drawType", colorKey); - if (!ecModel.isSeriesFiltered(seriesModel) && colorCallback) { - data.setVisual("colorFromPalette", false); - return { - dataEach: function(data2, idx) { - var dataParams = seriesModel.getDataParams(idx); - var itemStyle = extend({}, globalStyle); - itemStyle[colorKey] = colorCallback(dataParams); - data2.setItemVisual(idx, "style", itemStyle); - } - }; - } - } - }; - var sharedModel = new Model_default(); - var dataStyleTask = { - createOnAllSeries: true, - performRawSeries: true, - reset: function(seriesModel, ecModel) { - if (seriesModel.ignoreStyleOnData || ecModel.isSeriesFiltered(seriesModel)) { - return; - } - var data = seriesModel.getData(); - var stylePath = seriesModel.visualStyleAccessPath || "itemStyle"; - var getStyle2 = getStyleMapper(seriesModel, stylePath); - var colorKey = data.getVisual("drawType"); - return { - dataEach: data.hasItemOption ? function(data2, idx) { - var rawItem = data2.getRawDataItem(idx); - if (rawItem && rawItem[stylePath]) { - sharedModel.option = rawItem[stylePath]; - var style = getStyle2(sharedModel); - var existsStyle = data2.ensureUniqueItemVisual(idx, "style"); - extend(existsStyle, style); - if (sharedModel.option.decal) { - data2.setItemVisual(idx, "decal", sharedModel.option.decal); - sharedModel.option.decal.dirty = true; - } - if (colorKey in style) { - data2.setItemVisual(idx, "colorFromPalette", false); - } - } - } : null - }; - } - }; - var dataColorPaletteTask = { - performRawSeries: true, - overallReset: function(ecModel) { - var paletteScopeGroupByType = createHashMap(); - ecModel.eachSeries(function(seriesModel) { - var colorBy = seriesModel.getColorBy(); - if (seriesModel.isColorBySeries()) { - return; - } - var key = seriesModel.type + "-" + colorBy; - var colorScope = paletteScopeGroupByType.get(key); - if (!colorScope) { - colorScope = {}; - paletteScopeGroupByType.set(key, colorScope); - } - inner4(seriesModel).scope = colorScope; - }); - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.isColorBySeries() || ecModel.isSeriesFiltered(seriesModel)) { - return; - } - var dataAll = seriesModel.getRawData(); - var idxMap = {}; - var data = seriesModel.getData(); - var colorScope = inner4(seriesModel).scope; - var stylePath = seriesModel.visualStyleAccessPath || "itemStyle"; - var colorKey = getDefaultColorKey(seriesModel, stylePath); - data.each(function(idx) { - var rawIdx = data.getRawIndex(idx); - idxMap[rawIdx] = idx; - }); - dataAll.each(function(rawIdx) { - var idx = idxMap[rawIdx]; - var fromPalette = data.getItemVisual(idx, "colorFromPalette"); - if (fromPalette) { - var itemStyle = data.ensureUniqueItemVisual(idx, "style"); - var name_1 = dataAll.getName(rawIdx) || rawIdx + ""; - var dataCount = dataAll.count(); - itemStyle[colorKey] = seriesModel.getColorFromPalette(name_1, colorScope, dataCount); - } - }); - }); - } - }; - - // node_modules/echarts/lib/loading/default.js - var PI5 = Math.PI; - function defaultLoading(api, opts) { - opts = opts || {}; - defaults(opts, { - text: "loading", - textColor: "#000", - fontSize: 12, - fontWeight: "normal", - fontStyle: "normal", - fontFamily: "sans-serif", - maskColor: "rgba(255, 255, 255, 0.8)", - showSpinner: true, - color: "#5470c6", - spinnerRadius: 10, - lineWidth: 5, - zlevel: 0 - }); - var group = new Group_default(); - var mask = new Rect_default({ - style: { - fill: opts.maskColor - }, - zlevel: opts.zlevel, - z: 1e4 - }); - group.add(mask); - var textContent = new Text_default({ - style: { - text: opts.text, - fill: opts.textColor, - fontSize: opts.fontSize, - fontWeight: opts.fontWeight, - fontStyle: opts.fontStyle, - fontFamily: opts.fontFamily - }, - zlevel: opts.zlevel, - z: 10001 - }); - var labelRect = new Rect_default({ - style: { - fill: "none" - }, - textContent, - textConfig: { - position: "right", - distance: 10 - }, - zlevel: opts.zlevel, - z: 10001 - }); - group.add(labelRect); - var arc; - if (opts.showSpinner) { - arc = new Arc_default({ - shape: { - startAngle: -PI5 / 2, - endAngle: -PI5 / 2 + 0.1, - r: opts.spinnerRadius - }, - style: { - stroke: opts.color, - lineCap: "round", - lineWidth: opts.lineWidth - }, - zlevel: opts.zlevel, - z: 10001 - }); - arc.animateShape(true).when(1e3, { - endAngle: PI5 * 3 / 2 - }).start("circularInOut"); - arc.animateShape(true).when(1e3, { - startAngle: PI5 * 3 / 2 - }).delay(300).start("circularInOut"); - group.add(arc); - } - group.resize = function() { - var textWidth = textContent.getBoundingRect().width; - var r = opts.showSpinner ? opts.spinnerRadius : 0; - var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2 - (opts.showSpinner && textWidth ? 0 : 5 + textWidth / 2) + (opts.showSpinner ? 0 : textWidth / 2) + (textWidth ? 0 : r); - var cy = api.getHeight() / 2; - opts.showSpinner && arc.setShape({ - cx, - cy - }); - labelRect.setShape({ - x: cx - r, - y: cy - r, - width: r * 2, - height: r * 2 - }); - mask.setShape({ - x: 0, - y: 0, - width: api.getWidth(), - height: api.getHeight() - }); - }; - group.resize(); - return group; - } - - // node_modules/echarts/lib/core/Scheduler.js - var Scheduler = ( - /** @class */ - function() { - function Scheduler2(ecInstance, api, dataProcessorHandlers, visualHandlers) { - this._stageTaskMap = createHashMap(); - this.ecInstance = ecInstance; - this.api = api; - dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice(); - visualHandlers = this._visualHandlers = visualHandlers.slice(); - this._allHandlers = dataProcessorHandlers.concat(visualHandlers); - } - Scheduler2.prototype.restoreData = function(ecModel, payload) { - ecModel.restoreData(payload); - this._stageTaskMap.each(function(taskRecord) { - var overallTask = taskRecord.overallTask; - overallTask && overallTask.dirty(); - }); - }; - Scheduler2.prototype.getPerformArgs = function(task, isBlock) { - if (!task.__pipeline) { - return; - } - var pipeline = this._pipelineMap.get(task.__pipeline.id); - var pCtx = pipeline.context; - var incremental = !isBlock && pipeline.progressiveEnabled && (!pCtx || pCtx.progressiveRender) && task.__idxInPipeline > pipeline.blockIndex; - var step = incremental ? pipeline.step : null; - var modDataCount = pCtx && pCtx.modDataCount; - var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null; - return { - step, - modBy, - modDataCount - }; - }; - Scheduler2.prototype.getPipeline = function(pipelineId) { - return this._pipelineMap.get(pipelineId); - }; - Scheduler2.prototype.updateStreamModes = function(seriesModel, view) { - var pipeline = this._pipelineMap.get(seriesModel.uid); - var data = seriesModel.getData(); - var dataLen = data.count(); - var progressiveRender = pipeline.progressiveEnabled && view.incrementalPrepareRender && dataLen >= pipeline.threshold; - var large = seriesModel.get("large") && dataLen >= seriesModel.get("largeThreshold"); - var modDataCount = seriesModel.get("progressiveChunkMode") === "mod" ? dataLen : null; - seriesModel.pipelineContext = pipeline.context = { - progressiveRender, - modDataCount, - large - }; - }; - Scheduler2.prototype.restorePipelines = function(ecModel) { - var scheduler = this; - var pipelineMap = scheduler._pipelineMap = createHashMap(); - ecModel.eachSeries(function(seriesModel) { - var progressive = seriesModel.getProgressive(); - var pipelineId = seriesModel.uid; - pipelineMap.set(pipelineId, { - id: pipelineId, - head: null, - tail: null, - threshold: seriesModel.getProgressiveThreshold(), - progressiveEnabled: progressive && !(seriesModel.preventIncremental && seriesModel.preventIncremental()), - blockIndex: -1, - step: Math.round(progressive || 700), - count: 0 - }); - scheduler._pipe(seriesModel, seriesModel.dataTask); - }); - }; - Scheduler2.prototype.prepareStageTasks = function() { - var stageTaskMap = this._stageTaskMap; - var ecModel = this.api.getModel(); - var api = this.api; - each(this._allHandlers, function(handler) { - var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, {}); - var errMsg = ""; - if (true) { - errMsg = '"reset" and "overallReset" must not be both specified.'; - } - assert(!(handler.reset && handler.overallReset), errMsg); - handler.reset && this._createSeriesStageTask(handler, record, ecModel, api); - handler.overallReset && this._createOverallStageTask(handler, record, ecModel, api); - }, this); - }; - Scheduler2.prototype.prepareView = function(view, model, ecModel, api) { - var renderTask = view.renderTask; - var context = renderTask.context; - context.model = model; - context.ecModel = ecModel; - context.api = api; - renderTask.__block = !view.incrementalPrepareRender; - this._pipe(model, renderTask); - }; - Scheduler2.prototype.performDataProcessorTasks = function(ecModel, payload) { - this._performStageTasks(this._dataProcessorHandlers, ecModel, payload, { - block: true - }); - }; - Scheduler2.prototype.performVisualTasks = function(ecModel, payload, opt) { - this._performStageTasks(this._visualHandlers, ecModel, payload, opt); - }; - Scheduler2.prototype._performStageTasks = function(stageHandlers, ecModel, payload, opt) { - opt = opt || {}; - var unfinished = false; - var scheduler = this; - each(stageHandlers, function(stageHandler, idx) { - if (opt.visualType && opt.visualType !== stageHandler.visualType) { - return; - } - var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid); - var seriesTaskMap = stageHandlerRecord.seriesTaskMap; - var overallTask = stageHandlerRecord.overallTask; - if (overallTask) { - var overallNeedDirty_1; - var agentStubMap = overallTask.agentStubMap; - agentStubMap.each(function(stub) { - if (needSetDirty(opt, stub)) { - stub.dirty(); - overallNeedDirty_1 = true; - } - }); - overallNeedDirty_1 && overallTask.dirty(); - scheduler.updatePayload(overallTask, payload); - var performArgs_1 = scheduler.getPerformArgs(overallTask, opt.block); - agentStubMap.each(function(stub) { - stub.perform(performArgs_1); - }); - if (overallTask.perform(performArgs_1)) { - unfinished = true; - } - } else if (seriesTaskMap) { - seriesTaskMap.each(function(task, pipelineId) { - if (needSetDirty(opt, task)) { - task.dirty(); - } - var performArgs = scheduler.getPerformArgs(task, opt.block); - performArgs.skip = !stageHandler.performRawSeries && ecModel.isSeriesFiltered(task.context.model); - scheduler.updatePayload(task, payload); - if (task.perform(performArgs)) { - unfinished = true; - } - }); - } - }); - function needSetDirty(opt2, task) { - return opt2.setDirty && (!opt2.dirtyMap || opt2.dirtyMap.get(task.__pipeline.id)); - } - this.unfinished = unfinished || this.unfinished; - }; - Scheduler2.prototype.performSeriesTasks = function(ecModel) { - var unfinished; - ecModel.eachSeries(function(seriesModel) { - unfinished = seriesModel.dataTask.perform() || unfinished; - }); - this.unfinished = unfinished || this.unfinished; - }; - Scheduler2.prototype.plan = function() { - this._pipelineMap.each(function(pipeline) { - var task = pipeline.tail; - do { - if (task.__block) { - pipeline.blockIndex = task.__idxInPipeline; - break; - } - task = task.getUpstream(); - } while (task); - }); - }; - Scheduler2.prototype.updatePayload = function(task, payload) { - payload !== "remain" && (task.context.payload = payload); - }; - Scheduler2.prototype._createSeriesStageTask = function(stageHandler, stageHandlerRecord, ecModel, api) { - var scheduler = this; - var oldSeriesTaskMap = stageHandlerRecord.seriesTaskMap; - var newSeriesTaskMap = stageHandlerRecord.seriesTaskMap = createHashMap(); - var seriesType2 = stageHandler.seriesType; - var getTargetSeries = stageHandler.getTargetSeries; - if (stageHandler.createOnAllSeries) { - ecModel.eachRawSeries(create4); - } else if (seriesType2) { - ecModel.eachRawSeriesByType(seriesType2, create4); - } else if (getTargetSeries) { - getTargetSeries(ecModel, api).each(create4); - } - function create4(seriesModel) { - var pipelineId = seriesModel.uid; - var task = newSeriesTaskMap.set(pipelineId, oldSeriesTaskMap && oldSeriesTaskMap.get(pipelineId) || createTask({ - plan: seriesTaskPlan, - reset: seriesTaskReset, - count: seriesTaskCount - })); - task.context = { - model: seriesModel, - ecModel, - api, - // PENDING: `useClearVisual` not used? - useClearVisual: stageHandler.isVisual && !stageHandler.isLayout, - plan: stageHandler.plan, - reset: stageHandler.reset, - scheduler - }; - scheduler._pipe(seriesModel, task); - } - }; - Scheduler2.prototype._createOverallStageTask = function(stageHandler, stageHandlerRecord, ecModel, api) { - var scheduler = this; - var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask || createTask({ - reset: overallTaskReset - }); - overallTask.context = { - ecModel, - api, - overallReset: stageHandler.overallReset, - scheduler - }; - var oldAgentStubMap = overallTask.agentStubMap; - var newAgentStubMap = overallTask.agentStubMap = createHashMap(); - var seriesType2 = stageHandler.seriesType; - var getTargetSeries = stageHandler.getTargetSeries; - var overallProgress = true; - var shouldOverallTaskDirty = false; - var errMsg = ""; - if (true) { - errMsg = '"createOnAllSeries" is not supported for "overallReset", because it will block all streams.'; - } - assert(!stageHandler.createOnAllSeries, errMsg); - if (seriesType2) { - ecModel.eachRawSeriesByType(seriesType2, createStub); - } else if (getTargetSeries) { - getTargetSeries(ecModel, api).each(createStub); - } else { - overallProgress = false; - each(ecModel.getSeries(), createStub); - } - function createStub(seriesModel) { - var pipelineId = seriesModel.uid; - var stub = newAgentStubMap.set(pipelineId, oldAgentStubMap && oldAgentStubMap.get(pipelineId) || // When the result of `getTargetSeries` changed, the overallTask - // should be set as dirty and re-performed. - (shouldOverallTaskDirty = true, createTask({ - reset: stubReset, - onDirty: stubOnDirty - }))); - stub.context = { - model: seriesModel, - overallProgress - // FIXME:TS never used, so comment it - // modifyOutputEnd: modifyOutputEnd - }; - stub.agent = overallTask; - stub.__block = overallProgress; - scheduler._pipe(seriesModel, stub); - } - if (shouldOverallTaskDirty) { - overallTask.dirty(); - } - }; - Scheduler2.prototype._pipe = function(seriesModel, task) { - var pipelineId = seriesModel.uid; - var pipeline = this._pipelineMap.get(pipelineId); - !pipeline.head && (pipeline.head = task); - pipeline.tail && pipeline.tail.pipe(task); - pipeline.tail = task; - task.__idxInPipeline = pipeline.count++; - task.__pipeline = pipeline; - }; - Scheduler2.wrapStageHandler = function(stageHandler, visualType) { - if (isFunction(stageHandler)) { - stageHandler = { - overallReset: stageHandler, - seriesType: detectSeriseType(stageHandler) - }; - } - stageHandler.uid = getUID("stageHandler"); - visualType && (stageHandler.visualType = visualType); - return stageHandler; - }; - ; - return Scheduler2; - }() - ); - function overallTaskReset(context) { - context.overallReset(context.ecModel, context.api, context.payload); - } - function stubReset(context) { - return context.overallProgress && stubProgress; - } - function stubProgress() { - this.agent.dirty(); - this.getDownstream().dirty(); - } - function stubOnDirty() { - this.agent && this.agent.dirty(); - } - function seriesTaskPlan(context) { - return context.plan ? context.plan(context.model, context.ecModel, context.api, context.payload) : null; - } - function seriesTaskReset(context) { - if (context.useClearVisual) { - context.data.clearAllVisual(); - } - var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload)); - return resetDefines.length > 1 ? map(resetDefines, function(v, idx) { - return makeSeriesTaskProgress(idx); - }) : singleSeriesTaskProgress; - } - var singleSeriesTaskProgress = makeSeriesTaskProgress(0); - function makeSeriesTaskProgress(resetDefineIdx) { - return function(params, context) { - var data = context.data; - var resetDefine = context.resetDefines[resetDefineIdx]; - if (resetDefine && resetDefine.dataEach) { - for (var i = params.start; i < params.end; i++) { - resetDefine.dataEach(data, i); - } - } else if (resetDefine && resetDefine.progress) { - resetDefine.progress(params, data); - } - }; - } - function seriesTaskCount(context) { - return context.data.count(); - } - function detectSeriseType(legacyFunc) { - seriesType = null; - try { - legacyFunc(ecModelMock, apiMock); - } catch (e2) { - } - return seriesType; - } - var ecModelMock = {}; - var apiMock = {}; - var seriesType; - mockMethods(ecModelMock, Global_default); - mockMethods(apiMock, ExtensionAPI_default); - ecModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function(type) { - seriesType = type; - }; - ecModelMock.eachComponent = function(cond) { - if (cond.mainType === "series" && cond.subType) { - seriesType = cond.subType; - } - }; - function mockMethods(target, Clz) { - for (var name_1 in Clz.prototype) { - target[name_1] = noop; - } - } - var Scheduler_default = Scheduler; - - // node_modules/echarts/lib/theme/light.js - var colorAll = ["#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF"]; - var light_default = { - color: colorAll, - colorLayer: [["#37A2DA", "#ffd85c", "#fd7b5f"], ["#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5"], ["#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF"], colorAll] - }; - - // node_modules/echarts/lib/theme/dark.js - var contrastColor = "#B9B8CE"; - var backgroundColor = "#100C2A"; - var axisCommon = function() { - return { - axisLine: { - lineStyle: { - color: contrastColor - } - }, - splitLine: { - lineStyle: { - color: "#484753" - } - }, - splitArea: { - areaStyle: { - color: ["rgba(255,255,255,0.02)", "rgba(255,255,255,0.05)"] - } - }, - minorSplitLine: { - lineStyle: { - color: "#20203B" - } - } - }; - }; - var colorPalette = ["#4992ff", "#7cffb2", "#fddd60", "#ff6e76", "#58d9f9", "#05c091", "#ff8a45", "#8d48e3", "#dd79ff"]; - var theme = { - darkMode: true, - color: colorPalette, - backgroundColor, - axisPointer: { - lineStyle: { - color: "#817f91" - }, - crossStyle: { - color: "#817f91" - }, - label: { - // TODO Contrast of label backgorundColor - color: "#fff" - } - }, - legend: { - textStyle: { - color: contrastColor - }, - pageTextStyle: { - color: contrastColor - } - }, - textStyle: { - color: contrastColor - }, - title: { - textStyle: { - color: "#EEF1FA" - }, - subtextStyle: { - color: "#B9B8CE" - } - }, - toolbox: { - iconStyle: { - borderColor: contrastColor - } - }, - dataZoom: { - borderColor: "#71708A", - textStyle: { - color: contrastColor - }, - brushStyle: { - color: "rgba(135,163,206,0.3)" - }, - handleStyle: { - color: "#353450", - borderColor: "#C5CBE3" - }, - moveHandleStyle: { - color: "#B0B6C3", - opacity: 0.3 - }, - fillerColor: "rgba(135,163,206,0.2)", - emphasis: { - handleStyle: { - borderColor: "#91B7F2", - color: "#4D587D" - }, - moveHandleStyle: { - color: "#636D9A", - opacity: 0.7 - } - }, - dataBackground: { - lineStyle: { - color: "#71708A", - width: 1 - }, - areaStyle: { - color: "#71708A" - } - }, - selectedDataBackground: { - lineStyle: { - color: "#87A3CE" - }, - areaStyle: { - color: "#87A3CE" - } - } - }, - visualMap: { - textStyle: { - color: contrastColor - } - }, - timeline: { - lineStyle: { - color: contrastColor - }, - label: { - color: contrastColor - }, - controlStyle: { - color: contrastColor, - borderColor: contrastColor - } - }, - calendar: { - itemStyle: { - color: backgroundColor - }, - dayLabel: { - color: contrastColor - }, - monthLabel: { - color: contrastColor - }, - yearLabel: { - color: contrastColor - } - }, - timeAxis: axisCommon(), - logAxis: axisCommon(), - valueAxis: axisCommon(), - categoryAxis: axisCommon(), - line: { - symbol: "circle" - }, - graph: { - color: colorPalette - }, - gauge: { - title: { - color: contrastColor - }, - axisLine: { - lineStyle: { - color: [[1, "rgba(207,212,219,0.2)"]] - } - }, - axisLabel: { - color: contrastColor - }, - detail: { - color: "#EEF1FA" - } - }, - candlestick: { - itemStyle: { - color: "#f64e56", - color0: "#54ea92", - borderColor: "#f64e56", - borderColor0: "#54ea92" - // borderColor: '#ca2824', - // borderColor0: '#09a443' - } - } - }; - theme.categoryAxis.splitLine.show = false; - var dark_default = theme; - - // node_modules/echarts/lib/util/ECEventProcessor.js - var ECEventProcessor = ( - /** @class */ - function() { - function ECEventProcessor2() { - } - ECEventProcessor2.prototype.normalizeQuery = function(query) { - var cptQuery = {}; - var dataQuery = {}; - var otherQuery = {}; - if (isString(query)) { - var condCptType = parseClassType(query); - cptQuery.mainType = condCptType.main || null; - cptQuery.subType = condCptType.sub || null; - } else { - var suffixes_1 = ["Index", "Name", "Id"]; - var dataKeys_1 = { - name: 1, - dataIndex: 1, - dataType: 1 - }; - each(query, function(val, key) { - var reserved = false; - for (var i = 0; i < suffixes_1.length; i++) { - var propSuffix = suffixes_1[i]; - var suffixPos = key.lastIndexOf(propSuffix); - if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) { - var mainType = key.slice(0, suffixPos); - if (mainType !== "data") { - cptQuery.mainType = mainType; - cptQuery[propSuffix.toLowerCase()] = val; - reserved = true; - } - } - } - if (dataKeys_1.hasOwnProperty(key)) { - dataQuery[key] = val; - reserved = true; - } - if (!reserved) { - otherQuery[key] = val; - } - }); - } - return { - cptQuery, - dataQuery, - otherQuery - }; - }; - ECEventProcessor2.prototype.filter = function(eventType, query) { - var eventInfo = this.eventInfo; - if (!eventInfo) { - return true; - } - var targetEl = eventInfo.targetEl; - var packedEvent = eventInfo.packedEvent; - var model = eventInfo.model; - var view = eventInfo.view; - if (!model || !view) { - return true; - } - var cptQuery = query.cptQuery; - var dataQuery = query.dataQuery; - return check(cptQuery, model, "mainType") && check(cptQuery, model, "subType") && check(cptQuery, model, "index", "componentIndex") && check(cptQuery, model, "name") && check(cptQuery, model, "id") && check(dataQuery, packedEvent, "name") && check(dataQuery, packedEvent, "dataIndex") && check(dataQuery, packedEvent, "dataType") && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent)); - function check(query2, host, prop, propOnHost) { - return query2[prop] == null || host[propOnHost || prop] === query2[prop]; - } - }; - ECEventProcessor2.prototype.afterTrigger = function() { - this.eventInfo = null; - }; - return ECEventProcessor2; - }() - ); - - // node_modules/echarts/lib/visual/symbol.js - var SYMBOL_PROPS_WITH_CB = ["symbol", "symbolSize", "symbolRotate", "symbolOffset"]; - var SYMBOL_PROPS = SYMBOL_PROPS_WITH_CB.concat(["symbolKeepAspect"]); - var seriesSymbolTask = { - createOnAllSeries: true, - // For legend. - performRawSeries: true, - reset: function(seriesModel, ecModel) { - var data = seriesModel.getData(); - if (seriesModel.legendIcon) { - data.setVisual("legendIcon", seriesModel.legendIcon); - } - if (!seriesModel.hasSymbolVisual) { - return; - } - var symbolOptions = {}; - var symbolOptionsCb = {}; - var hasCallback = false; - for (var i = 0; i < SYMBOL_PROPS_WITH_CB.length; i++) { - var symbolPropName = SYMBOL_PROPS_WITH_CB[i]; - var val = seriesModel.get(symbolPropName); - if (isFunction(val)) { - hasCallback = true; - symbolOptionsCb[symbolPropName] = val; - } else { - symbolOptions[symbolPropName] = val; - } - } - symbolOptions.symbol = symbolOptions.symbol || seriesModel.defaultSymbol; - data.setVisual(extend({ - legendIcon: seriesModel.legendIcon || symbolOptions.symbol, - symbolKeepAspect: seriesModel.get("symbolKeepAspect") - }, symbolOptions)); - if (ecModel.isSeriesFiltered(seriesModel)) { - return; - } - var symbolPropsCb = keys(symbolOptionsCb); - function dataEach(data2, idx) { - var rawValue = seriesModel.getRawValue(idx); - var params = seriesModel.getDataParams(idx); - for (var i2 = 0; i2 < symbolPropsCb.length; i2++) { - var symbolPropName2 = symbolPropsCb[i2]; - data2.setItemVisual(idx, symbolPropName2, symbolOptionsCb[symbolPropName2](rawValue, params)); - } - } - return { - dataEach: hasCallback ? dataEach : null - }; - } - }; - var dataSymbolTask = { - createOnAllSeries: true, - // For legend. - performRawSeries: true, - reset: function(seriesModel, ecModel) { - if (!seriesModel.hasSymbolVisual) { - return; - } - if (ecModel.isSeriesFiltered(seriesModel)) { - return; - } - var data = seriesModel.getData(); - function dataEach(data2, idx) { - var itemModel = data2.getItemModel(idx); - for (var i = 0; i < SYMBOL_PROPS.length; i++) { - var symbolPropName = SYMBOL_PROPS[i]; - var val = itemModel.getShallow(symbolPropName, true); - if (val != null) { - data2.setItemVisual(idx, symbolPropName, val); - } - } - } - return { - dataEach: data.hasItemOption ? dataEach : null - }; - } - }; - - // node_modules/echarts/lib/visual/helper.js - function getItemVisualFromData(data, dataIndex, key) { - switch (key) { - case "color": - var style = data.getItemVisual(dataIndex, "style"); - return style[data.getVisual("drawType")]; - case "opacity": - return data.getItemVisual(dataIndex, "style").opacity; - case "symbol": - case "symbolSize": - case "liftZ": - return data.getItemVisual(dataIndex, key); - default: - if (true) { - console.warn("Unknown visual type " + key); - } - } - } - function getVisualFromData(data, key) { - switch (key) { - case "color": - var style = data.getVisual("style"); - return style[data.getVisual("drawType")]; - case "opacity": - return data.getVisual("style").opacity; - case "symbol": - case "symbolSize": - case "liftZ": - return data.getVisual(key); - default: - if (true) { - console.warn("Unknown visual type " + key); - } - } - } - function setItemVisualFromData(data, dataIndex, key, value) { - switch (key) { - case "color": - var style = data.ensureUniqueItemVisual(dataIndex, "style"); - style[data.getVisual("drawType")] = value; - data.setItemVisual(dataIndex, "colorFromPalette", false); - break; - case "opacity": - data.ensureUniqueItemVisual(dataIndex, "style").opacity = value; - break; - case "symbol": - case "symbolSize": - case "liftZ": - data.setItemVisual(dataIndex, key, value); - break; - default: - if (true) { - console.warn("Unknown visual type " + key); - } - } - } - - // node_modules/echarts/lib/legacy/dataSelectAction.js - function createLegacyDataSelectAction(seriesType2, ecRegisterAction) { - function getSeriesIndices(ecModel, payload) { - var seriesIndices = []; - ecModel.eachComponent({ - mainType: "series", - subType: seriesType2, - query: payload - }, function(seriesModel) { - seriesIndices.push(seriesModel.seriesIndex); - }); - return seriesIndices; - } - each([[seriesType2 + "ToggleSelect", "toggleSelect"], [seriesType2 + "Select", "select"], [seriesType2 + "UnSelect", "unselect"]], function(eventsMap) { - ecRegisterAction(eventsMap[0], function(payload, ecModel, api) { - payload = extend({}, payload); - if (true) { - deprecateReplaceLog(payload.type, eventsMap[1]); - } - api.dispatchAction(extend(payload, { - type: eventsMap[1], - seriesIndex: getSeriesIndices(ecModel, payload) - })); - }); - }); - } - function handleSeriesLegacySelectEvents(type, eventPostfix, ecIns, ecModel, payload) { - var legacyEventName = type + eventPostfix; - if (!ecIns.isSilent(legacyEventName)) { - if (true) { - deprecateLog("event " + legacyEventName + " is deprecated."); - } - ecModel.eachComponent({ - mainType: "series", - subType: "pie" - }, function(seriesModel) { - var seriesIndex = seriesModel.seriesIndex; - var selectedMap = seriesModel.option.selectedMap; - var selected = payload.selected; - for (var i = 0; i < selected.length; i++) { - if (selected[i].seriesIndex === seriesIndex) { - var data = seriesModel.getData(); - var dataIndex = queryDataIndex(data, payload.fromActionPayload); - ecIns.trigger(legacyEventName, { - type: legacyEventName, - seriesId: seriesModel.id, - name: isArray(dataIndex) ? data.getName(dataIndex[0]) : data.getName(dataIndex), - selected: isString(selectedMap) ? selectedMap : extend({}, selectedMap) - }); - } - } - }); - } - } - function handleLegacySelectEvents(messageCenter, ecIns, api) { - messageCenter.on("selectchanged", function(params) { - var ecModel = api.getModel(); - if (params.isFromClick) { - handleSeriesLegacySelectEvents("map", "selectchanged", ecIns, ecModel, params); - handleSeriesLegacySelectEvents("pie", "selectchanged", ecIns, ecModel, params); - } else if (params.fromAction === "select") { - handleSeriesLegacySelectEvents("map", "selected", ecIns, ecModel, params); - handleSeriesLegacySelectEvents("pie", "selected", ecIns, ecModel, params); - } else if (params.fromAction === "unselect") { - handleSeriesLegacySelectEvents("map", "unselected", ecIns, ecModel, params); - handleSeriesLegacySelectEvents("pie", "unselected", ecIns, ecModel, params); - } - }); - } - - // node_modules/echarts/lib/util/event.js - function findEventDispatcher(target, det, returnFirstMatch) { - var found; - while (target) { - if (det(target)) { - found = target; - if (returnFirstMatch) { - break; - } - } - target = target.__hostTarget || target.parent; - } - return found; - } - - // node_modules/zrender/lib/core/WeakMap.js - var wmUniqueIndex = Math.round(Math.random() * 9); - var supportDefineProperty = typeof Object.defineProperty === "function"; - var WeakMap2 = function() { - function WeakMap3() { - this._id = "__ec_inner_" + wmUniqueIndex++; - } - WeakMap3.prototype.get = function(key) { - return this._guard(key)[this._id]; - }; - WeakMap3.prototype.set = function(key, value) { - var target = this._guard(key); - if (supportDefineProperty) { - Object.defineProperty(target, this._id, { - value, - enumerable: false, - configurable: true - }); - } else { - target[this._id] = value; - } - return this; - }; - WeakMap3.prototype["delete"] = function(key) { - if (this.has(key)) { - delete this._guard(key)[this._id]; - return true; - } - return false; - }; - WeakMap3.prototype.has = function(key) { - return !!this._guard(key)[this._id]; - }; - WeakMap3.prototype._guard = function(key) { - if (key !== Object(key)) { - throw TypeError("Value of WeakMap is not a non-null object."); - } - return key; - }; - return WeakMap3; - }(); - var WeakMap_default = WeakMap2; - - // node_modules/echarts/lib/util/symbol.js - var Triangle = Path_default.extend({ - type: "triangle", - shape: { - cx: 0, - cy: 0, - width: 0, - height: 0 - }, - buildPath: function(path, shape) { - var cx = shape.cx; - var cy = shape.cy; - var width = shape.width / 2; - var height = shape.height / 2; - path.moveTo(cx, cy - height); - path.lineTo(cx + width, cy + height); - path.lineTo(cx - width, cy + height); - path.closePath(); - } - }); - var Diamond = Path_default.extend({ - type: "diamond", - shape: { - cx: 0, - cy: 0, - width: 0, - height: 0 - }, - buildPath: function(path, shape) { - var cx = shape.cx; - var cy = shape.cy; - var width = shape.width / 2; - var height = shape.height / 2; - path.moveTo(cx, cy - height); - path.lineTo(cx + width, cy); - path.lineTo(cx, cy + height); - path.lineTo(cx - width, cy); - path.closePath(); - } - }); - var Pin = Path_default.extend({ - type: "pin", - shape: { - // x, y on the cusp - x: 0, - y: 0, - width: 0, - height: 0 - }, - buildPath: function(path, shape) { - var x = shape.x; - var y = shape.y; - var w = shape.width / 5 * 3; - var h = Math.max(w, shape.height); - var r = w / 2; - var dy = r * r / (h - r); - var cy = y - h + r + dy; - var angle = Math.asin(dy / r); - var dx = Math.cos(angle) * r; - var tanX = Math.sin(angle); - var tanY = Math.cos(angle); - var cpLen = r * 0.6; - var cpLen2 = r * 0.7; - path.moveTo(x - dx, cy + dy); - path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle); - path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y); - path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy); - path.closePath(); - } - }); - var Arrow = Path_default.extend({ - type: "arrow", - shape: { - x: 0, - y: 0, - width: 0, - height: 0 - }, - buildPath: function(ctx, shape) { - var height = shape.height; - var width = shape.width; - var x = shape.x; - var y = shape.y; - var dx = width / 3 * 2; - ctx.moveTo(x, y); - ctx.lineTo(x + dx, y + height); - ctx.lineTo(x, y + height / 4 * 3); - ctx.lineTo(x - dx, y + height); - ctx.lineTo(x, y); - ctx.closePath(); - } - }); - var symbolCtors = { - line: Line_default, - rect: Rect_default, - roundRect: Rect_default, - square: Rect_default, - circle: Circle_default, - diamond: Diamond, - pin: Pin, - arrow: Arrow, - triangle: Triangle - }; - var symbolShapeMakers = { - line: function(x, y, w, h, shape) { - shape.x1 = x; - shape.y1 = y + h / 2; - shape.x2 = x + w; - shape.y2 = y + h / 2; - }, - rect: function(x, y, w, h, shape) { - shape.x = x; - shape.y = y; - shape.width = w; - shape.height = h; - }, - roundRect: function(x, y, w, h, shape) { - shape.x = x; - shape.y = y; - shape.width = w; - shape.height = h; - shape.r = Math.min(w, h) / 4; - }, - square: function(x, y, w, h, shape) { - var size2 = Math.min(w, h); - shape.x = x; - shape.y = y; - shape.width = size2; - shape.height = size2; - }, - circle: function(x, y, w, h, shape) { - shape.cx = x + w / 2; - shape.cy = y + h / 2; - shape.r = Math.min(w, h) / 2; - }, - diamond: function(x, y, w, h, shape) { - shape.cx = x + w / 2; - shape.cy = y + h / 2; - shape.width = w; - shape.height = h; - }, - pin: function(x, y, w, h, shape) { - shape.x = x + w / 2; - shape.y = y + h / 2; - shape.width = w; - shape.height = h; - }, - arrow: function(x, y, w, h, shape) { - shape.x = x + w / 2; - shape.y = y + h / 2; - shape.width = w; - shape.height = h; - }, - triangle: function(x, y, w, h, shape) { - shape.cx = x + w / 2; - shape.cy = y + h / 2; - shape.width = w; - shape.height = h; - } - }; - var symbolBuildProxies = {}; - each(symbolCtors, function(Ctor, name) { - symbolBuildProxies[name] = new Ctor(); - }); - var SymbolClz = Path_default.extend({ - type: "symbol", - shape: { - symbolType: "", - x: 0, - y: 0, - width: 0, - height: 0 - }, - calculateTextPosition: function(out2, config2, rect) { - var res = calculateTextPosition(out2, config2, rect); - var shape = this.shape; - if (shape && shape.symbolType === "pin" && config2.position === "inside") { - res.y = rect.y + rect.height * 0.4; - } - return res; - }, - buildPath: function(ctx, shape, inBundle) { - var symbolType = shape.symbolType; - if (symbolType !== "none") { - var proxySymbol = symbolBuildProxies[symbolType]; - if (!proxySymbol) { - symbolType = "rect"; - proxySymbol = symbolBuildProxies[symbolType]; - } - symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape); - proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle); - } - } - }); - function symbolPathSetColor(color, innerColor2) { - if (this.type !== "image") { - var symbolStyle = this.style; - if (this.__isEmptyBrush) { - symbolStyle.stroke = color; - symbolStyle.fill = innerColor2 || "#fff"; - symbolStyle.lineWidth = 2; - } else if (this.shape.symbolType === "line") { - symbolStyle.stroke = color; - } else { - symbolStyle.fill = color; - } - this.markRedraw(); - } - } - function createSymbol(symbolType, x, y, w, h, color, keepAspect) { - var isEmpty = symbolType.indexOf("empty") === 0; - if (isEmpty) { - symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6); - } - var symbolPath; - if (symbolType.indexOf("image://") === 0) { - symbolPath = makeImage(symbolType.slice(8), new BoundingRect_default(x, y, w, h), keepAspect ? "center" : "cover"); - } else if (symbolType.indexOf("path://") === 0) { - symbolPath = makePath(symbolType.slice(7), {}, new BoundingRect_default(x, y, w, h), keepAspect ? "center" : "cover"); - } else { - symbolPath = new SymbolClz({ - shape: { - symbolType, - x, - y, - width: w, - height: h - } - }); - } - symbolPath.__isEmptyBrush = isEmpty; - symbolPath.setColor = symbolPathSetColor; - if (color) { - symbolPath.setColor(color); - } - return symbolPath; - } - function normalizeSymbolSize(symbolSize) { - if (!isArray(symbolSize)) { - symbolSize = [+symbolSize, +symbolSize]; - } - return [symbolSize[0] || 0, symbolSize[1] || 0]; - } - function normalizeSymbolOffset(symbolOffset, symbolSize) { - if (symbolOffset == null) { - return; - } - if (!isArray(symbolOffset)) { - symbolOffset = [symbolOffset, symbolOffset]; - } - return [parsePercent2(symbolOffset[0], symbolSize[0]) || 0, parsePercent2(retrieve2(symbolOffset[1], symbolOffset[0]), symbolSize[1]) || 0]; - } - - // node_modules/zrender/lib/canvas/helper.js - function isSafeNum(num) { - return isFinite(num); - } - function createLinearGradient(ctx, obj, rect) { - var x = obj.x == null ? 0 : obj.x; - var x2 = obj.x2 == null ? 1 : obj.x2; - var y = obj.y == null ? 0 : obj.y; - var y2 = obj.y2 == null ? 0 : obj.y2; - if (!obj.global) { - x = x * rect.width + rect.x; - x2 = x2 * rect.width + rect.x; - y = y * rect.height + rect.y; - y2 = y2 * rect.height + rect.y; - } - x = isSafeNum(x) ? x : 0; - x2 = isSafeNum(x2) ? x2 : 1; - y = isSafeNum(y) ? y : 0; - y2 = isSafeNum(y2) ? y2 : 0; - var canvasGradient = ctx.createLinearGradient(x, y, x2, y2); - return canvasGradient; - } - function createRadialGradient(ctx, obj, rect) { - var width = rect.width; - var height = rect.height; - var min4 = Math.min(width, height); - var x = obj.x == null ? 0.5 : obj.x; - var y = obj.y == null ? 0.5 : obj.y; - var r = obj.r == null ? 0.5 : obj.r; - if (!obj.global) { - x = x * width + rect.x; - y = y * height + rect.y; - r = r * min4; - } - x = isSafeNum(x) ? x : 0.5; - y = isSafeNum(y) ? y : 0.5; - r = r >= 0 && isSafeNum(r) ? r : 0.5; - var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r); - return canvasGradient; - } - function getCanvasGradient(ctx, obj, rect) { - var canvasGradient = obj.type === "radial" ? createRadialGradient(ctx, obj, rect) : createLinearGradient(ctx, obj, rect); - var colorStops = obj.colorStops; - for (var i = 0; i < colorStops.length; i++) { - canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color); - } - return canvasGradient; - } - function isClipPathChanged(clipPaths, prevClipPaths) { - if (clipPaths === prevClipPaths || !clipPaths && !prevClipPaths) { - return false; - } - if (!clipPaths || !prevClipPaths || clipPaths.length !== prevClipPaths.length) { - return true; - } - for (var i = 0; i < clipPaths.length; i++) { - if (clipPaths[i] !== prevClipPaths[i]) { - return true; - } - } - return false; - } - function parseInt10(val) { - return parseInt(val, 10); - } - function getSize(root, whIdx, opts) { - var wh = ["width", "height"][whIdx]; - var cwh = ["clientWidth", "clientHeight"][whIdx]; - var plt = ["paddingLeft", "paddingTop"][whIdx]; - var prb = ["paddingRight", "paddingBottom"][whIdx]; - if (opts[wh] != null && opts[wh] !== "auto") { - return parseFloat(opts[wh]); - } - var stl = document.defaultView.getComputedStyle(root); - return (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0; - } - - // node_modules/zrender/lib/canvas/dashStyle.js - function normalizeLineDash(lineType, lineWidth) { - if (!lineType || lineType === "solid" || !(lineWidth > 0)) { - return null; - } - return lineType === "dashed" ? [4 * lineWidth, 2 * lineWidth] : lineType === "dotted" ? [lineWidth] : isNumber(lineType) ? [lineType] : isArray(lineType) ? lineType : null; - } - function getLineDash(el) { - var style = el.style; - var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth); - var lineDashOffset = style.lineDashOffset; - if (lineDash) { - var lineScale_1 = style.strokeNoScale && el.getLineScale ? el.getLineScale() : 1; - if (lineScale_1 && lineScale_1 !== 1) { - lineDash = map(lineDash, function(rawVal) { - return rawVal / lineScale_1; - }); - lineDashOffset /= lineScale_1; - } - } - return [lineDash, lineDashOffset]; - } - - // node_modules/zrender/lib/canvas/graphic.js - var pathProxyForDraw = new PathProxy_default(true); - function styleHasStroke(style) { - var stroke = style.stroke; - return !(stroke == null || stroke === "none" || !(style.lineWidth > 0)); - } - function isValidStrokeFillStyle(strokeOrFill) { - return typeof strokeOrFill === "string" && strokeOrFill !== "none"; - } - function styleHasFill(style) { - var fill = style.fill; - return fill != null && fill !== "none"; - } - function doFillPath(ctx, style) { - if (style.fillOpacity != null && style.fillOpacity !== 1) { - var originalGlobalAlpha = ctx.globalAlpha; - ctx.globalAlpha = style.fillOpacity * style.opacity; - ctx.fill(); - ctx.globalAlpha = originalGlobalAlpha; - } else { - ctx.fill(); - } - } - function doStrokePath(ctx, style) { - if (style.strokeOpacity != null && style.strokeOpacity !== 1) { - var originalGlobalAlpha = ctx.globalAlpha; - ctx.globalAlpha = style.strokeOpacity * style.opacity; - ctx.stroke(); - ctx.globalAlpha = originalGlobalAlpha; - } else { - ctx.stroke(); - } - } - function createCanvasPattern(ctx, pattern, el) { - var image = createOrUpdateImage(pattern.image, pattern.__image, el); - if (isImageReady(image)) { - var canvasPattern = ctx.createPattern(image, pattern.repeat || "repeat"); - if (typeof DOMMatrix === "function" && canvasPattern && canvasPattern.setTransform) { - var matrix = new DOMMatrix(); - matrix.translateSelf(pattern.x || 0, pattern.y || 0); - matrix.rotateSelf(0, 0, (pattern.rotation || 0) * RADIAN_TO_DEGREE); - matrix.scaleSelf(pattern.scaleX || 1, pattern.scaleY || 1); - canvasPattern.setTransform(matrix); - } - return canvasPattern; - } - } - function brushPath(ctx, el, style, inBatch) { - var _a2; - var hasStroke = styleHasStroke(style); - var hasFill = styleHasFill(style); - var strokePercent = style.strokePercent; - var strokePart = strokePercent < 1; - var firstDraw = !el.path; - if ((!el.silent || strokePart) && firstDraw) { - el.createPathProxy(); - } - var path = el.path || pathProxyForDraw; - var dirtyFlag = el.__dirty; - if (!inBatch) { - var fill = style.fill; - var stroke = style.stroke; - var hasFillGradient = hasFill && !!fill.colorStops; - var hasStrokeGradient = hasStroke && !!stroke.colorStops; - var hasFillPattern = hasFill && !!fill.image; - var hasStrokePattern = hasStroke && !!stroke.image; - var fillGradient = void 0; - var strokeGradient = void 0; - var fillPattern = void 0; - var strokePattern = void 0; - var rect = void 0; - if (hasFillGradient || hasStrokeGradient) { - rect = el.getBoundingRect(); - } - if (hasFillGradient) { - fillGradient = dirtyFlag ? getCanvasGradient(ctx, fill, rect) : el.__canvasFillGradient; - el.__canvasFillGradient = fillGradient; - } - if (hasStrokeGradient) { - strokeGradient = dirtyFlag ? getCanvasGradient(ctx, stroke, rect) : el.__canvasStrokeGradient; - el.__canvasStrokeGradient = strokeGradient; - } - if (hasFillPattern) { - fillPattern = dirtyFlag || !el.__canvasFillPattern ? createCanvasPattern(ctx, fill, el) : el.__canvasFillPattern; - el.__canvasFillPattern = fillPattern; - } - if (hasStrokePattern) { - strokePattern = dirtyFlag || !el.__canvasStrokePattern ? createCanvasPattern(ctx, stroke, el) : el.__canvasStrokePattern; - el.__canvasStrokePattern = fillPattern; - } - if (hasFillGradient) { - ctx.fillStyle = fillGradient; - } else if (hasFillPattern) { - if (fillPattern) { - ctx.fillStyle = fillPattern; - } else { - hasFill = false; - } - } - if (hasStrokeGradient) { - ctx.strokeStyle = strokeGradient; - } else if (hasStrokePattern) { - if (strokePattern) { - ctx.strokeStyle = strokePattern; - } else { - hasStroke = false; - } - } - } - var scale4 = el.getGlobalScale(); - path.setScale(scale4[0], scale4[1], el.segmentIgnoreThreshold); - var lineDash; - var lineDashOffset; - if (ctx.setLineDash && style.lineDash) { - _a2 = getLineDash(el), lineDash = _a2[0], lineDashOffset = _a2[1]; - } - var needsRebuild = true; - if (firstDraw || dirtyFlag & SHAPE_CHANGED_BIT) { - path.setDPR(ctx.dpr); - if (strokePart) { - path.setContext(null); - } else { - path.setContext(ctx); - needsRebuild = false; - } - path.reset(); - el.buildPath(path, el.shape, inBatch); - path.toStatic(); - el.pathUpdated(); - } - if (needsRebuild) { - path.rebuildPath(ctx, strokePart ? strokePercent : 1); - } - if (lineDash) { - ctx.setLineDash(lineDash); - ctx.lineDashOffset = lineDashOffset; - } - if (!inBatch) { - if (style.strokeFirst) { - if (hasStroke) { - doStrokePath(ctx, style); - } - if (hasFill) { - doFillPath(ctx, style); - } - } else { - if (hasFill) { - doFillPath(ctx, style); - } - if (hasStroke) { - doStrokePath(ctx, style); - } - } - } - if (lineDash) { - ctx.setLineDash([]); - } - } - function brushImage(ctx, el, style) { - var image = el.__image = createOrUpdateImage(style.image, el.__image, el, el.onload); - if (!image || !isImageReady(image)) { - return; - } - var x = style.x || 0; - var y = style.y || 0; - var width = el.getWidth(); - var height = el.getHeight(); - var aspect = image.width / image.height; - if (width == null && height != null) { - width = height * aspect; - } else if (height == null && width != null) { - height = width / aspect; - } else if (width == null && height == null) { - width = image.width; - height = image.height; - } - if (style.sWidth && style.sHeight) { - var sx = style.sx || 0; - var sy = style.sy || 0; - ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height); - } else if (style.sx && style.sy) { - var sx = style.sx; - var sy = style.sy; - var sWidth = width - sx; - var sHeight = height - sy; - ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height); - } else { - ctx.drawImage(image, x, y, width, height); - } - } - function brushText(ctx, el, style) { - var _a2; - var text = style.text; - text != null && (text += ""); - if (text) { - ctx.font = style.font || DEFAULT_FONT; - ctx.textAlign = style.textAlign; - ctx.textBaseline = style.textBaseline; - var lineDash = void 0; - var lineDashOffset = void 0; - if (ctx.setLineDash && style.lineDash) { - _a2 = getLineDash(el), lineDash = _a2[0], lineDashOffset = _a2[1]; - } - if (lineDash) { - ctx.setLineDash(lineDash); - ctx.lineDashOffset = lineDashOffset; - } - if (style.strokeFirst) { - if (styleHasStroke(style)) { - ctx.strokeText(text, style.x, style.y); - } - if (styleHasFill(style)) { - ctx.fillText(text, style.x, style.y); - } - } else { - if (styleHasFill(style)) { - ctx.fillText(text, style.x, style.y); - } - if (styleHasStroke(style)) { - ctx.strokeText(text, style.x, style.y); - } - } - if (lineDash) { - ctx.setLineDash([]); - } - } - } - var SHADOW_NUMBER_PROPS = ["shadowBlur", "shadowOffsetX", "shadowOffsetY"]; - var STROKE_PROPS = [ - ["lineCap", "butt"], - ["lineJoin", "miter"], - ["miterLimit", 10] - ]; - function bindCommonProps(ctx, style, prevStyle, forceSetAll, scope) { - var styleChanged = false; - if (!forceSetAll) { - prevStyle = prevStyle || {}; - if (style === prevStyle) { - return false; - } - } - if (forceSetAll || style.opacity !== prevStyle.opacity) { - flushPathDrawn(ctx, scope); - styleChanged = true; - var opacity = Math.max(Math.min(style.opacity, 1), 0); - ctx.globalAlpha = isNaN(opacity) ? DEFAULT_COMMON_STYLE.opacity : opacity; - } - if (forceSetAll || style.blend !== prevStyle.blend) { - if (!styleChanged) { - flushPathDrawn(ctx, scope); - styleChanged = true; - } - ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE.blend; - } - for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) { - var propName = SHADOW_NUMBER_PROPS[i]; - if (forceSetAll || style[propName] !== prevStyle[propName]) { - if (!styleChanged) { - flushPathDrawn(ctx, scope); - styleChanged = true; - } - ctx[propName] = ctx.dpr * (style[propName] || 0); - } - } - if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) { - if (!styleChanged) { - flushPathDrawn(ctx, scope); - styleChanged = true; - } - ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE.shadowColor; - } - return styleChanged; - } - function bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetAll, scope) { - var style = getStyle(el, scope.inHover); - var prevStyle = forceSetAll ? null : prevEl && getStyle(prevEl, scope.inHover) || {}; - if (style === prevStyle) { - return false; - } - var styleChanged = bindCommonProps(ctx, style, prevStyle, forceSetAll, scope); - if (forceSetAll || style.fill !== prevStyle.fill) { - if (!styleChanged) { - flushPathDrawn(ctx, scope); - styleChanged = true; - } - isValidStrokeFillStyle(style.fill) && (ctx.fillStyle = style.fill); - } - if (forceSetAll || style.stroke !== prevStyle.stroke) { - if (!styleChanged) { - flushPathDrawn(ctx, scope); - styleChanged = true; - } - isValidStrokeFillStyle(style.stroke) && (ctx.strokeStyle = style.stroke); - } - if (forceSetAll || style.opacity !== prevStyle.opacity) { - if (!styleChanged) { - flushPathDrawn(ctx, scope); - styleChanged = true; - } - ctx.globalAlpha = style.opacity == null ? 1 : style.opacity; - } - if (el.hasStroke()) { - var lineWidth = style.lineWidth; - var newLineWidth = lineWidth / (style.strokeNoScale && el.getLineScale ? el.getLineScale() : 1); - if (ctx.lineWidth !== newLineWidth) { - if (!styleChanged) { - flushPathDrawn(ctx, scope); - styleChanged = true; - } - ctx.lineWidth = newLineWidth; - } - } - for (var i = 0; i < STROKE_PROPS.length; i++) { - var prop = STROKE_PROPS[i]; - var propName = prop[0]; - if (forceSetAll || style[propName] !== prevStyle[propName]) { - if (!styleChanged) { - flushPathDrawn(ctx, scope); - styleChanged = true; - } - ctx[propName] = style[propName] || prop[1]; - } - } - return styleChanged; - } - function bindImageStyle(ctx, el, prevEl, forceSetAll, scope) { - return bindCommonProps(ctx, getStyle(el, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope); - } - function setContextTransform(ctx, el) { - var m2 = el.transform; - var dpr2 = ctx.dpr || 1; - if (m2) { - ctx.setTransform(dpr2 * m2[0], dpr2 * m2[1], dpr2 * m2[2], dpr2 * m2[3], dpr2 * m2[4], dpr2 * m2[5]); - } else { - ctx.setTransform(dpr2, 0, 0, dpr2, 0, 0); - } - } - function updateClipStatus(clipPaths, ctx, scope) { - var allClipped = false; - for (var i = 0; i < clipPaths.length; i++) { - var clipPath = clipPaths[i]; - allClipped = allClipped || clipPath.isZeroArea(); - setContextTransform(ctx, clipPath); - ctx.beginPath(); - clipPath.buildPath(ctx, clipPath.shape); - ctx.clip(); - } - scope.allClipped = allClipped; - } - function isTransformChanged(m0, m1) { - if (m0 && m1) { - return m0[0] !== m1[0] || m0[1] !== m1[1] || m0[2] !== m1[2] || m0[3] !== m1[3] || m0[4] !== m1[4] || m0[5] !== m1[5]; - } else if (!m0 && !m1) { - return false; - } - return true; - } - var DRAW_TYPE_PATH = 1; - var DRAW_TYPE_IMAGE = 2; - var DRAW_TYPE_TEXT = 3; - var DRAW_TYPE_INCREMENTAL = 4; - function canPathBatch(style) { - var hasFill = styleHasFill(style); - var hasStroke = styleHasStroke(style); - return !(style.lineDash || !(+hasFill ^ +hasStroke) || hasFill && typeof style.fill !== "string" || hasStroke && typeof style.stroke !== "string" || style.strokePercent < 1 || style.strokeOpacity < 1 || style.fillOpacity < 1); - } - function flushPathDrawn(ctx, scope) { - scope.batchFill && ctx.fill(); - scope.batchStroke && ctx.stroke(); - scope.batchFill = ""; - scope.batchStroke = ""; - } - function getStyle(el, inHover) { - return inHover ? el.__hoverStyle || el.style : el.style; - } - function brushSingle(ctx, el) { - brush(ctx, el, { inHover: false, viewWidth: 0, viewHeight: 0 }, true); - } - function brush(ctx, el, scope, isLast) { - var m2 = el.transform; - if (!el.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) { - el.__dirty &= ~REDRAW_BIT; - el.__isRendered = false; - return; - } - var clipPaths = el.__clipPaths; - var prevElClipPaths = scope.prevElClipPaths; - var forceSetTransform = false; - var forceSetStyle = false; - if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) { - if (prevElClipPaths && prevElClipPaths.length) { - flushPathDrawn(ctx, scope); - ctx.restore(); - forceSetStyle = forceSetTransform = true; - scope.prevElClipPaths = null; - scope.allClipped = false; - scope.prevEl = null; - } - if (clipPaths && clipPaths.length) { - flushPathDrawn(ctx, scope); - ctx.save(); - updateClipStatus(clipPaths, ctx, scope); - forceSetTransform = true; - } - scope.prevElClipPaths = clipPaths; - } - if (scope.allClipped) { - el.__isRendered = false; - return; - } - el.beforeBrush && el.beforeBrush(); - el.innerBeforeBrush(); - var prevEl = scope.prevEl; - if (!prevEl) { - forceSetStyle = forceSetTransform = true; - } - var canBatchPath = el instanceof Path_default && el.autoBatch && canPathBatch(el.style); - if (forceSetTransform || isTransformChanged(m2, prevEl.transform)) { - flushPathDrawn(ctx, scope); - setContextTransform(ctx, el); - } else if (!canBatchPath) { - flushPathDrawn(ctx, scope); - } - var style = getStyle(el, scope.inHover); - if (el instanceof Path_default) { - if (scope.lastDrawType !== DRAW_TYPE_PATH) { - forceSetStyle = true; - scope.lastDrawType = DRAW_TYPE_PATH; - } - bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope); - if (!canBatchPath || !scope.batchFill && !scope.batchStroke) { - ctx.beginPath(); - } - brushPath(ctx, el, style, canBatchPath); - if (canBatchPath) { - scope.batchFill = style.fill || ""; - scope.batchStroke = style.stroke || ""; - } - } else { - if (el instanceof TSpan_default) { - if (scope.lastDrawType !== DRAW_TYPE_TEXT) { - forceSetStyle = true; - scope.lastDrawType = DRAW_TYPE_TEXT; - } - bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope); - brushText(ctx, el, style); - } else if (el instanceof Image_default) { - if (scope.lastDrawType !== DRAW_TYPE_IMAGE) { - forceSetStyle = true; - scope.lastDrawType = DRAW_TYPE_IMAGE; - } - bindImageStyle(ctx, el, prevEl, forceSetStyle, scope); - brushImage(ctx, el, style); - } else if (el.getTemporalDisplayables) { - if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) { - forceSetStyle = true; - scope.lastDrawType = DRAW_TYPE_INCREMENTAL; - } - brushIncremental(ctx, el, scope); - } - } - if (canBatchPath && isLast) { - flushPathDrawn(ctx, scope); - } - el.innerAfterBrush(); - el.afterBrush && el.afterBrush(); - scope.prevEl = el; - el.__dirty = 0; - el.__isRendered = true; - } - function brushIncremental(ctx, el, scope) { - var displayables = el.getDisplayables(); - var temporalDisplayables = el.getTemporalDisplayables(); - ctx.save(); - var innerScope = { - prevElClipPaths: null, - prevEl: null, - allClipped: false, - viewWidth: scope.viewWidth, - viewHeight: scope.viewHeight, - inHover: scope.inHover - }; - var i; - var len2; - for (i = el.getCursor(), len2 = displayables.length; i < len2; i++) { - var displayable = displayables[i]; - displayable.beforeBrush && displayable.beforeBrush(); - displayable.innerBeforeBrush(); - brush(ctx, displayable, innerScope, i === len2 - 1); - displayable.innerAfterBrush(); - displayable.afterBrush && displayable.afterBrush(); - innerScope.prevEl = displayable; - } - for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) { - var displayable = temporalDisplayables[i_1]; - displayable.beforeBrush && displayable.beforeBrush(); - displayable.innerBeforeBrush(); - brush(ctx, displayable, innerScope, i_1 === len_1 - 1); - displayable.innerAfterBrush(); - displayable.afterBrush && displayable.afterBrush(); - innerScope.prevEl = displayable; - } - el.clearTemporalDisplayables(); - el.notClear = true; - ctx.restore(); - } - - // node_modules/echarts/lib/util/decal.js - var decalMap = new WeakMap_default(); - var decalCache = new LRU_default(100); - var decalKeys = ["symbol", "symbolSize", "symbolKeepAspect", "color", "backgroundColor", "dashArrayX", "dashArrayY", "maxTileWidth", "maxTileHeight"]; - function createOrUpdatePatternFromDecal(decalObject, api) { - if (decalObject === "none") { - return null; - } - var dpr2 = api.getDevicePixelRatio(); - var zr = api.getZr(); - var isSVG = zr.painter.type === "svg"; - if (decalObject.dirty) { - decalMap["delete"](decalObject); - } - var oldPattern = decalMap.get(decalObject); - if (oldPattern) { - return oldPattern; - } - var decalOpt = defaults(decalObject, { - symbol: "rect", - symbolSize: 1, - symbolKeepAspect: true, - color: "rgba(0, 0, 0, 0.2)", - backgroundColor: null, - dashArrayX: 5, - dashArrayY: 5, - rotation: 0, - maxTileWidth: 512, - maxTileHeight: 512 - }); - if (decalOpt.backgroundColor === "none") { - decalOpt.backgroundColor = null; - } - var pattern = { - repeat: "repeat" - }; - setPatternnSource(pattern); - pattern.rotation = decalOpt.rotation; - pattern.scaleX = pattern.scaleY = isSVG ? 1 : 1 / dpr2; - decalMap.set(decalObject, pattern); - decalObject.dirty = false; - return pattern; - function setPatternnSource(pattern2) { - var keys2 = [dpr2]; - var isValidKey = true; - for (var i = 0; i < decalKeys.length; ++i) { - var value = decalOpt[decalKeys[i]]; - if (value != null && !isArray(value) && !isString(value) && !isNumber(value) && typeof value !== "boolean") { - isValidKey = false; - break; - } - keys2.push(value); - } - var cacheKey; - if (isValidKey) { - cacheKey = keys2.join(",") + (isSVG ? "-svg" : ""); - var cache2 = decalCache.get(cacheKey); - if (cache2) { - isSVG ? pattern2.svgElement = cache2 : pattern2.image = cache2; - } - } - var dashArrayX = normalizeDashArrayX(decalOpt.dashArrayX); - var dashArrayY = normalizeDashArrayY(decalOpt.dashArrayY); - var symbolArray = normalizeSymbolArray(decalOpt.symbol); - var lineBlockLengthsX = getLineBlockLengthX(dashArrayX); - var lineBlockLengthY = getLineBlockLengthY(dashArrayY); - var canvas = !isSVG && platformApi.createCanvas(); - var svgRoot = isSVG && { - tag: "g", - attrs: {}, - key: "dcl", - children: [] - }; - var pSize = getPatternSize(); - var ctx; - if (canvas) { - canvas.width = pSize.width * dpr2; - canvas.height = pSize.height * dpr2; - ctx = canvas.getContext("2d"); - } - brushDecal(); - if (isValidKey) { - decalCache.put(cacheKey, canvas || svgRoot); - } - pattern2.image = canvas; - pattern2.svgElement = svgRoot; - pattern2.svgWidth = pSize.width; - pattern2.svgHeight = pSize.height; - function getPatternSize() { - var width = 1; - for (var i2 = 0, xlen = lineBlockLengthsX.length; i2 < xlen; ++i2) { - width = getLeastCommonMultiple(width, lineBlockLengthsX[i2]); - } - var symbolRepeats = 1; - for (var i2 = 0, xlen = symbolArray.length; i2 < xlen; ++i2) { - symbolRepeats = getLeastCommonMultiple(symbolRepeats, symbolArray[i2].length); - } - width *= symbolRepeats; - var height = lineBlockLengthY * lineBlockLengthsX.length * symbolArray.length; - if (true) { - var warn2 = function(attrName) { - console.warn("Calculated decal size is greater than " + attrName + " due to decal option settings so " + attrName + " is used for the decal size. Please consider changing the decal option to make a smaller decal or set " + attrName + " to be larger to avoid incontinuity."); - }; - if (width > decalOpt.maxTileWidth) { - warn2("maxTileWidth"); - } - if (height > decalOpt.maxTileHeight) { - warn2("maxTileHeight"); - } - } - return { - width: Math.max(1, Math.min(width, decalOpt.maxTileWidth)), - height: Math.max(1, Math.min(height, decalOpt.maxTileHeight)) - }; - } - function brushDecal() { - if (ctx) { - ctx.clearRect(0, 0, canvas.width, canvas.height); - if (decalOpt.backgroundColor) { - ctx.fillStyle = decalOpt.backgroundColor; - ctx.fillRect(0, 0, canvas.width, canvas.height); - } - } - var ySum = 0; - for (var i2 = 0; i2 < dashArrayY.length; ++i2) { - ySum += dashArrayY[i2]; - } - if (ySum <= 0) { - return; - } - var y = -lineBlockLengthY; - var yId = 0; - var yIdTotal = 0; - var xId0 = 0; - while (y < pSize.height) { - if (yId % 2 === 0) { - var symbolYId = yIdTotal / 2 % symbolArray.length; - var x = 0; - var xId1 = 0; - var xId1Total = 0; - while (x < pSize.width * 2) { - var xSum = 0; - for (var i2 = 0; i2 < dashArrayX[xId0].length; ++i2) { - xSum += dashArrayX[xId0][i2]; - } - if (xSum <= 0) { - break; - } - if (xId1 % 2 === 0) { - var size2 = (1 - decalOpt.symbolSize) * 0.5; - var left = x + dashArrayX[xId0][xId1] * size2; - var top_1 = y + dashArrayY[yId] * size2; - var width = dashArrayX[xId0][xId1] * decalOpt.symbolSize; - var height = dashArrayY[yId] * decalOpt.symbolSize; - var symbolXId = xId1Total / 2 % symbolArray[symbolYId].length; - brushSymbol(left, top_1, width, height, symbolArray[symbolYId][symbolXId]); - } - x += dashArrayX[xId0][xId1]; - ++xId1Total; - ++xId1; - if (xId1 === dashArrayX[xId0].length) { - xId1 = 0; - } - } - ++xId0; - if (xId0 === dashArrayX.length) { - xId0 = 0; - } - } - y += dashArrayY[yId]; - ++yIdTotal; - ++yId; - if (yId === dashArrayY.length) { - yId = 0; - } - } - function brushSymbol(x2, y2, width2, height2, symbolType) { - var scale4 = isSVG ? 1 : dpr2; - var symbol = createSymbol(symbolType, x2 * scale4, y2 * scale4, width2 * scale4, height2 * scale4, decalOpt.color, decalOpt.symbolKeepAspect); - if (isSVG) { - var symbolVNode = zr.painter.renderOneToVNode(symbol); - if (symbolVNode) { - svgRoot.children.push(symbolVNode); - } - } else { - brushSingle(ctx, symbol); - } - } - } - } - } - function normalizeSymbolArray(symbol) { - if (!symbol || symbol.length === 0) { - return [["rect"]]; - } - if (isString(symbol)) { - return [[symbol]]; - } - var isAllString = true; - for (var i = 0; i < symbol.length; ++i) { - if (!isString(symbol[i])) { - isAllString = false; - break; - } - } - if (isAllString) { - return normalizeSymbolArray([symbol]); - } - var result = []; - for (var i = 0; i < symbol.length; ++i) { - if (isString(symbol[i])) { - result.push([symbol[i]]); - } else { - result.push(symbol[i]); - } - } - return result; - } - function normalizeDashArrayX(dash) { - if (!dash || dash.length === 0) { - return [[0, 0]]; - } - if (isNumber(dash)) { - var dashValue = Math.ceil(dash); - return [[dashValue, dashValue]]; - } - var isAllNumber = true; - for (var i = 0; i < dash.length; ++i) { - if (!isNumber(dash[i])) { - isAllNumber = false; - break; - } - } - if (isAllNumber) { - return normalizeDashArrayX([dash]); - } - var result = []; - for (var i = 0; i < dash.length; ++i) { - if (isNumber(dash[i])) { - var dashValue = Math.ceil(dash[i]); - result.push([dashValue, dashValue]); - } else { - var dashValue = map(dash[i], function(n) { - return Math.ceil(n); - }); - if (dashValue.length % 2 === 1) { - result.push(dashValue.concat(dashValue)); - } else { - result.push(dashValue); - } - } - } - return result; - } - function normalizeDashArrayY(dash) { - if (!dash || typeof dash === "object" && dash.length === 0) { - return [0, 0]; - } - if (isNumber(dash)) { - var dashValue_1 = Math.ceil(dash); - return [dashValue_1, dashValue_1]; - } - var dashValue = map(dash, function(n) { - return Math.ceil(n); - }); - return dash.length % 2 ? dashValue.concat(dashValue) : dashValue; - } - function getLineBlockLengthX(dash) { - return map(dash, function(line) { - return getLineBlockLengthY(line); - }); - } - function getLineBlockLengthY(dash) { - var blockLength = 0; - for (var i = 0; i < dash.length; ++i) { - blockLength += dash[i]; - } - if (dash.length % 2 === 1) { - return blockLength * 2; - } - return blockLength; - } - - // node_modules/echarts/lib/visual/decal.js - function decalVisual(ecModel, api) { - ecModel.eachRawSeries(function(seriesModel) { - if (ecModel.isSeriesFiltered(seriesModel)) { - return; - } - var data = seriesModel.getData(); - if (data.hasItemVisual()) { - data.each(function(idx) { - var decal2 = data.getItemVisual(idx, "decal"); - if (decal2) { - var itemStyle = data.ensureUniqueItemVisual(idx, "style"); - itemStyle.decal = createOrUpdatePatternFromDecal(decal2, api); - } - }); - } - var decal = data.getVisual("decal"); - if (decal) { - var style = data.getVisual("style"); - style.decal = createOrUpdatePatternFromDecal(decal, api); - } - }); - } - - // node_modules/echarts/lib/core/lifecycle.js - var lifecycle = new Eventful_default(); - var lifecycle_default = lifecycle; - - // node_modules/echarts/lib/core/impl.js - var implsStore = {}; - function registerImpl(name, impl) { - if (true) { - if (implsStore[name]) { - error("Already has an implementation of " + name + "."); - } - } - implsStore[name] = impl; - } - function getImpl(name) { - if (true) { - if (!implsStore[name]) { - error("Implementation of " + name + " doesn't exists."); - } - } - return implsStore[name]; - } - - // node_modules/echarts/lib/core/echarts.js - var version2 = "5.6.0"; - var dependencies = { - zrender: "5.6.1" - }; - var TEST_FRAME_REMAIN_TIME = 1; - var PRIORITY_PROCESSOR_SERIES_FILTER = 800; - var PRIORITY_PROCESSOR_DATASTACK = 900; - var PRIORITY_PROCESSOR_FILTER = 1e3; - var PRIORITY_PROCESSOR_DEFAULT = 2e3; - var PRIORITY_PROCESSOR_STATISTIC = 5e3; - var PRIORITY_VISUAL_LAYOUT = 1e3; - var PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100; - var PRIORITY_VISUAL_GLOBAL = 2e3; - var PRIORITY_VISUAL_CHART = 3e3; - var PRIORITY_VISUAL_COMPONENT = 4e3; - var PRIORITY_VISUAL_CHART_DATA_CUSTOM = 4500; - var PRIORITY_VISUAL_POST_CHART_LAYOUT = 4600; - var PRIORITY_VISUAL_BRUSH = 5e3; - var PRIORITY_VISUAL_ARIA = 6e3; - var PRIORITY_VISUAL_DECAL = 7e3; - var PRIORITY = { - PROCESSOR: { - FILTER: PRIORITY_PROCESSOR_FILTER, - SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER, - STATISTIC: PRIORITY_PROCESSOR_STATISTIC - }, - VISUAL: { - LAYOUT: PRIORITY_VISUAL_LAYOUT, - PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT, - GLOBAL: PRIORITY_VISUAL_GLOBAL, - CHART: PRIORITY_VISUAL_CHART, - POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT, - COMPONENT: PRIORITY_VISUAL_COMPONENT, - BRUSH: PRIORITY_VISUAL_BRUSH, - CHART_ITEM: PRIORITY_VISUAL_CHART_DATA_CUSTOM, - ARIA: PRIORITY_VISUAL_ARIA, - DECAL: PRIORITY_VISUAL_DECAL - } - }; - var IN_MAIN_PROCESS_KEY = "__flagInMainProcess"; - var PENDING_UPDATE = "__pendingUpdate"; - var STATUS_NEEDS_UPDATE_KEY = "__needsUpdateStatus"; - var ACTION_REG = /^[a-zA-Z0-9_]+$/; - var CONNECT_STATUS_KEY = "__connectUpdateStatus"; - var CONNECT_STATUS_PENDING = 0; - var CONNECT_STATUS_UPDATING = 1; - var CONNECT_STATUS_UPDATED = 2; - function createRegisterEventWithLowercaseECharts(method) { - return function() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - if (this.isDisposed()) { - disposedWarning(this.id); - return; - } - return toLowercaseNameAndCallEventful(this, method, args); - }; - } - function createRegisterEventWithLowercaseMessageCenter(method) { - return function() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return toLowercaseNameAndCallEventful(this, method, args); - }; - } - function toLowercaseNameAndCallEventful(host, method, args) { - args[0] = args[0] && args[0].toLowerCase(); - return Eventful_default.prototype[method].apply(host, args); - } - var MessageCenter = ( - /** @class */ - function(_super) { - __extends(MessageCenter2, _super); - function MessageCenter2() { - return _super !== null && _super.apply(this, arguments) || this; - } - return MessageCenter2; - }(Eventful_default) - ); - var messageCenterProto = MessageCenter.prototype; - messageCenterProto.on = createRegisterEventWithLowercaseMessageCenter("on"); - messageCenterProto.off = createRegisterEventWithLowercaseMessageCenter("off"); - var prepare; - var prepareView; - var updateDirectly; - var updateMethods; - var doConvertPixel; - var updateStreamModes; - var doDispatchAction; - var flushPendingActions; - var triggerUpdatedEvent; - var bindRenderedEvent; - var bindMouseEvent; - var render; - var renderComponents; - var renderSeries; - var createExtensionAPI; - var enableConnect; - var markStatusToUpdate; - var applyChangedStates; - var ECharts = ( - /** @class */ - function(_super) { - __extends(ECharts2, _super); - function ECharts2(dom, theme2, opts) { - var _this = _super.call(this, new ECEventProcessor()) || this; - _this._chartsViews = []; - _this._chartsMap = {}; - _this._componentsViews = []; - _this._componentsMap = {}; - _this._pendingActions = []; - opts = opts || {}; - if (isString(theme2)) { - theme2 = themeStorage[theme2]; - } - _this._dom = dom; - var defaultRenderer = "canvas"; - var defaultCoarsePointer = "auto"; - var defaultUseDirtyRect = false; - if (true) { - var root = ( - /* eslint-disable-next-line */ - env_default.hasGlobalWindow ? window : global - ); - if (root) { - defaultRenderer = retrieve2(root.__ECHARTS__DEFAULT__RENDERER__, defaultRenderer); - defaultCoarsePointer = retrieve2(root.__ECHARTS__DEFAULT__COARSE_POINTER, defaultCoarsePointer); - defaultUseDirtyRect = retrieve2(root.__ECHARTS__DEFAULT__USE_DIRTY_RECT__, defaultUseDirtyRect); - } - } - if (opts.ssr) { - registerSSRDataGetter(function(el) { - var ecData = getECData(el); - var dataIndex = ecData.dataIndex; - if (dataIndex == null) { - return; - } - var hashMap = createHashMap(); - hashMap.set("series_index", ecData.seriesIndex); - hashMap.set("data_index", dataIndex); - ecData.ssrType && hashMap.set("ssr_type", ecData.ssrType); - return hashMap; - }); - } - var zr = _this._zr = init(dom, { - renderer: opts.renderer || defaultRenderer, - devicePixelRatio: opts.devicePixelRatio, - width: opts.width, - height: opts.height, - ssr: opts.ssr, - useDirtyRect: retrieve2(opts.useDirtyRect, defaultUseDirtyRect), - useCoarsePointer: retrieve2(opts.useCoarsePointer, defaultCoarsePointer), - pointerSize: opts.pointerSize - }); - _this._ssr = opts.ssr; - _this._throttledZrFlush = throttle(bind(zr.flush, zr), 17); - theme2 = clone(theme2); - theme2 && globalBackwardCompat(theme2, true); - _this._theme = theme2; - _this._locale = createLocaleObject(opts.locale || SYSTEM_LANG); - _this._coordSysMgr = new CoordinateSystem_default(); - var api = _this._api = createExtensionAPI(_this); - function prioritySortFunc(a, b) { - return a.__prio - b.__prio; - } - sort(visualFuncs, prioritySortFunc); - sort(dataProcessorFuncs, prioritySortFunc); - _this._scheduler = new Scheduler_default(_this, api, dataProcessorFuncs, visualFuncs); - _this._messageCenter = new MessageCenter(); - _this._initEvents(); - _this.resize = bind(_this.resize, _this); - zr.animation.on("frame", _this._onframe, _this); - bindRenderedEvent(zr, _this); - bindMouseEvent(zr, _this); - setAsPrimitive(_this); - return _this; - } - ECharts2.prototype._onframe = function() { - if (this._disposed) { - return; - } - applyChangedStates(this); - var scheduler = this._scheduler; - if (this[PENDING_UPDATE]) { - var silent = this[PENDING_UPDATE].silent; - this[IN_MAIN_PROCESS_KEY] = true; - try { - prepare(this); - updateMethods.update.call(this, null, this[PENDING_UPDATE].updateParams); - } catch (e2) { - this[IN_MAIN_PROCESS_KEY] = false; - this[PENDING_UPDATE] = null; - throw e2; - } - this._zr.flush(); - this[IN_MAIN_PROCESS_KEY] = false; - this[PENDING_UPDATE] = null; - flushPendingActions.call(this, silent); - triggerUpdatedEvent.call(this, silent); - } else if (scheduler.unfinished) { - var remainTime = TEST_FRAME_REMAIN_TIME; - var ecModel = this._model; - var api = this._api; - scheduler.unfinished = false; - do { - var startTime = +/* @__PURE__ */ new Date(); - scheduler.performSeriesTasks(ecModel); - scheduler.performDataProcessorTasks(ecModel); - updateStreamModes(this, ecModel); - scheduler.performVisualTasks(ecModel); - renderSeries(this, this._model, api, "remain", {}); - remainTime -= +/* @__PURE__ */ new Date() - startTime; - } while (remainTime > 0 && scheduler.unfinished); - if (!scheduler.unfinished) { - this._zr.flush(); - } - } - }; - ECharts2.prototype.getDom = function() { - return this._dom; - }; - ECharts2.prototype.getId = function() { - return this.id; - }; - ECharts2.prototype.getZr = function() { - return this._zr; - }; - ECharts2.prototype.isSSR = function() { - return this._ssr; - }; - ECharts2.prototype.setOption = function(option, notMerge, lazyUpdate) { - if (this[IN_MAIN_PROCESS_KEY]) { - if (true) { - error("`setOption` should not be called during main process."); - } - return; - } - if (this._disposed) { - disposedWarning(this.id); - return; - } - var silent; - var replaceMerge; - var transitionOpt; - if (isObject(notMerge)) { - lazyUpdate = notMerge.lazyUpdate; - silent = notMerge.silent; - replaceMerge = notMerge.replaceMerge; - transitionOpt = notMerge.transition; - notMerge = notMerge.notMerge; - } - this[IN_MAIN_PROCESS_KEY] = true; - if (!this._model || notMerge) { - var optionManager = new OptionManager_default(this._api); - var theme2 = this._theme; - var ecModel = this._model = new Global_default(); - ecModel.scheduler = this._scheduler; - ecModel.ssr = this._ssr; - ecModel.init(null, null, null, theme2, this._locale, optionManager); - } - this._model.setOption(option, { - replaceMerge - }, optionPreprocessorFuncs); - var updateParams = { - seriesTransition: transitionOpt, - optionChanged: true - }; - if (lazyUpdate) { - this[PENDING_UPDATE] = { - silent, - updateParams - }; - this[IN_MAIN_PROCESS_KEY] = false; - this.getZr().wakeUp(); - } else { - try { - prepare(this); - updateMethods.update.call(this, null, updateParams); - } catch (e2) { - this[PENDING_UPDATE] = null; - this[IN_MAIN_PROCESS_KEY] = false; - throw e2; - } - if (!this._ssr) { - this._zr.flush(); - } - this[PENDING_UPDATE] = null; - this[IN_MAIN_PROCESS_KEY] = false; - flushPendingActions.call(this, silent); - triggerUpdatedEvent.call(this, silent); - } - }; - ECharts2.prototype.setTheme = function() { - deprecateLog("ECharts#setTheme() is DEPRECATED in ECharts 3.0"); - }; - ECharts2.prototype.getModel = function() { - return this._model; - }; - ECharts2.prototype.getOption = function() { - return this._model && this._model.getOption(); - }; - ECharts2.prototype.getWidth = function() { - return this._zr.getWidth(); - }; - ECharts2.prototype.getHeight = function() { - return this._zr.getHeight(); - }; - ECharts2.prototype.getDevicePixelRatio = function() { - return this._zr.painter.dpr || env_default.hasGlobalWindow && window.devicePixelRatio || 1; - }; - ECharts2.prototype.getRenderedCanvas = function(opts) { - if (true) { - deprecateReplaceLog("getRenderedCanvas", "renderToCanvas"); - } - return this.renderToCanvas(opts); - }; - ECharts2.prototype.renderToCanvas = function(opts) { - opts = opts || {}; - var painter = this._zr.painter; - if (true) { - if (painter.type !== "canvas") { - throw new Error("renderToCanvas can only be used in the canvas renderer."); - } - } - return painter.getRenderedCanvas({ - backgroundColor: opts.backgroundColor || this._model.get("backgroundColor"), - pixelRatio: opts.pixelRatio || this.getDevicePixelRatio() - }); - }; - ECharts2.prototype.renderToSVGString = function(opts) { - opts = opts || {}; - var painter = this._zr.painter; - if (true) { - if (painter.type !== "svg") { - throw new Error("renderToSVGString can only be used in the svg renderer."); - } - } - return painter.renderToString({ - useViewBox: opts.useViewBox - }); - }; - ECharts2.prototype.getSvgDataURL = function() { - if (!env_default.svgSupported) { - return; - } - var zr = this._zr; - var list = zr.storage.getDisplayList(); - each(list, function(el) { - el.stopAnimation(null, true); - }); - return zr.painter.toDataURL(); - }; - ECharts2.prototype.getDataURL = function(opts) { - if (this._disposed) { - disposedWarning(this.id); - return; - } - opts = opts || {}; - var excludeComponents = opts.excludeComponents; - var ecModel = this._model; - var excludesComponentViews = []; - var self2 = this; - each(excludeComponents, function(componentType) { - ecModel.eachComponent({ - mainType: componentType - }, function(component) { - var view = self2._componentsMap[component.__viewId]; - if (!view.group.ignore) { - excludesComponentViews.push(view); - view.group.ignore = true; - } - }); - }); - var url = this._zr.painter.getType() === "svg" ? this.getSvgDataURL() : this.renderToCanvas(opts).toDataURL("image/" + (opts && opts.type || "png")); - each(excludesComponentViews, function(view) { - view.group.ignore = false; - }); - return url; - }; - ECharts2.prototype.getConnectedDataURL = function(opts) { - if (this._disposed) { - disposedWarning(this.id); - return; - } - var isSvg = opts.type === "svg"; - var groupId = this.group; - var mathMin12 = Math.min; - var mathMax12 = Math.max; - var MAX_NUMBER = Infinity; - if (connectedGroups[groupId]) { - var left_1 = MAX_NUMBER; - var top_1 = MAX_NUMBER; - var right_1 = -MAX_NUMBER; - var bottom_1 = -MAX_NUMBER; - var canvasList_1 = []; - var dpr_1 = opts && opts.pixelRatio || this.getDevicePixelRatio(); - each(instances2, function(chart, id) { - if (chart.group === groupId) { - var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.renderToCanvas(clone(opts)); - var boundingRect = chart.getDom().getBoundingClientRect(); - left_1 = mathMin12(boundingRect.left, left_1); - top_1 = mathMin12(boundingRect.top, top_1); - right_1 = mathMax12(boundingRect.right, right_1); - bottom_1 = mathMax12(boundingRect.bottom, bottom_1); - canvasList_1.push({ - dom: canvas, - left: boundingRect.left, - top: boundingRect.top - }); - } - }); - left_1 *= dpr_1; - top_1 *= dpr_1; - right_1 *= dpr_1; - bottom_1 *= dpr_1; - var width = right_1 - left_1; - var height = bottom_1 - top_1; - var targetCanvas = platformApi.createCanvas(); - var zr_1 = init(targetCanvas, { - renderer: isSvg ? "svg" : "canvas" - }); - zr_1.resize({ - width, - height - }); - if (isSvg) { - var content_1 = ""; - each(canvasList_1, function(item) { - var x = item.left - left_1; - var y = item.top - top_1; - content_1 += '' + item.dom + ""; - }); - zr_1.painter.getSvgRoot().innerHTML = content_1; - if (opts.connectedBackgroundColor) { - zr_1.painter.setBackgroundColor(opts.connectedBackgroundColor); - } - zr_1.refreshImmediately(); - return zr_1.painter.toDataURL(); - } else { - if (opts.connectedBackgroundColor) { - zr_1.add(new Rect_default({ - shape: { - x: 0, - y: 0, - width, - height - }, - style: { - fill: opts.connectedBackgroundColor - } - })); - } - each(canvasList_1, function(item) { - var img = new Image_default({ - style: { - x: item.left * dpr_1 - left_1, - y: item.top * dpr_1 - top_1, - image: item.dom - } - }); - zr_1.add(img); - }); - zr_1.refreshImmediately(); - return targetCanvas.toDataURL("image/" + (opts && opts.type || "png")); - } - } else { - return this.getDataURL(opts); - } - }; - ECharts2.prototype.convertToPixel = function(finder, value) { - return doConvertPixel(this, "convertToPixel", finder, value); - }; - ECharts2.prototype.convertFromPixel = function(finder, value) { - return doConvertPixel(this, "convertFromPixel", finder, value); - }; - ECharts2.prototype.containPixel = function(finder, value) { - if (this._disposed) { - disposedWarning(this.id); - return; - } - var ecModel = this._model; - var result; - var findResult = parseFinder(ecModel, finder); - each(findResult, function(models, key) { - key.indexOf("Models") >= 0 && each(models, function(model) { - var coordSys = model.coordinateSystem; - if (coordSys && coordSys.containPoint) { - result = result || !!coordSys.containPoint(value); - } else if (key === "seriesModels") { - var view = this._chartsMap[model.__viewId]; - if (view && view.containPoint) { - result = result || view.containPoint(value, model); - } else { - if (true) { - warn(key + ": " + (view ? "The found component do not support containPoint." : "No view mapping to the found component.")); - } - } - } else { - if (true) { - warn(key + ": containPoint is not supported"); - } - } - }, this); - }, this); - return !!result; - }; - ECharts2.prototype.getVisual = function(finder, visualType) { - var ecModel = this._model; - var parsedFinder = parseFinder(ecModel, finder, { - defaultMainType: "series" - }); - var seriesModel = parsedFinder.seriesModel; - if (true) { - if (!seriesModel) { - warn("There is no specified series model"); - } - } - var data = seriesModel.getData(); - var dataIndexInside = parsedFinder.hasOwnProperty("dataIndexInside") ? parsedFinder.dataIndexInside : parsedFinder.hasOwnProperty("dataIndex") ? data.indexOfRawIndex(parsedFinder.dataIndex) : null; - return dataIndexInside != null ? getItemVisualFromData(data, dataIndexInside, visualType) : getVisualFromData(data, visualType); - }; - ECharts2.prototype.getViewOfComponentModel = function(componentModel) { - return this._componentsMap[componentModel.__viewId]; - }; - ECharts2.prototype.getViewOfSeriesModel = function(seriesModel) { - return this._chartsMap[seriesModel.__viewId]; - }; - ECharts2.prototype._initEvents = function() { - var _this = this; - each(MOUSE_EVENT_NAMES, function(eveName) { - var handler = function(e2) { - var ecModel = _this.getModel(); - var el = e2.target; - var params; - var isGlobalOut = eveName === "globalout"; - if (isGlobalOut) { - params = {}; - } else { - el && findEventDispatcher(el, function(parent) { - var ecData = getECData(parent); - if (ecData && ecData.dataIndex != null) { - var dataModel = ecData.dataModel || ecModel.getSeriesByIndex(ecData.seriesIndex); - params = dataModel && dataModel.getDataParams(ecData.dataIndex, ecData.dataType, el) || {}; - return true; - } else if (ecData.eventData) { - params = extend({}, ecData.eventData); - return true; - } - }, true); - } - if (params) { - var componentType = params.componentType; - var componentIndex = params.componentIndex; - if (componentType === "markLine" || componentType === "markPoint" || componentType === "markArea") { - componentType = "series"; - componentIndex = params.seriesIndex; - } - var model = componentType && componentIndex != null && ecModel.getComponent(componentType, componentIndex); - var view = model && _this[model.mainType === "series" ? "_chartsMap" : "_componentsMap"][model.__viewId]; - if (true) { - if (!isGlobalOut && !(model && view)) { - warn("model or view can not be found by params"); - } - } - params.event = e2; - params.type = eveName; - _this._$eventProcessor.eventInfo = { - targetEl: el, - packedEvent: params, - model, - view - }; - _this.trigger(eveName, params); - } - }; - handler.zrEventfulCallAtLast = true; - _this._zr.on(eveName, handler, _this); - }); - each(eventActionMap, function(actionType, eventType) { - _this._messageCenter.on(eventType, function(event) { - this.trigger(eventType, event); - }, _this); - }); - each(["selectchanged"], function(eventType) { - _this._messageCenter.on(eventType, function(event) { - this.trigger(eventType, event); - }, _this); - }); - handleLegacySelectEvents(this._messageCenter, this, this._api); - }; - ECharts2.prototype.isDisposed = function() { - return this._disposed; - }; - ECharts2.prototype.clear = function() { - if (this._disposed) { - disposedWarning(this.id); - return; - } - this.setOption({ - series: [] - }, true); - }; - ECharts2.prototype.dispose = function() { - if (this._disposed) { - disposedWarning(this.id); - return; - } - this._disposed = true; - var dom = this.getDom(); - if (dom) { - setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, ""); - } - var chart = this; - var api = chart._api; - var ecModel = chart._model; - each(chart._componentsViews, function(component) { - component.dispose(ecModel, api); - }); - each(chart._chartsViews, function(chart2) { - chart2.dispose(ecModel, api); - }); - chart._zr.dispose(); - chart._dom = chart._model = chart._chartsMap = chart._componentsMap = chart._chartsViews = chart._componentsViews = chart._scheduler = chart._api = chart._zr = chart._throttledZrFlush = chart._theme = chart._coordSysMgr = chart._messageCenter = null; - delete instances2[chart.id]; - }; - ECharts2.prototype.resize = function(opts) { - if (this[IN_MAIN_PROCESS_KEY]) { - if (true) { - error("`resize` should not be called during main process."); - } - return; - } - if (this._disposed) { - disposedWarning(this.id); - return; - } - this._zr.resize(opts); - var ecModel = this._model; - this._loadingFX && this._loadingFX.resize(); - if (!ecModel) { - return; - } - var needPrepare = ecModel.resetOption("media"); - var silent = opts && opts.silent; - if (this[PENDING_UPDATE]) { - if (silent == null) { - silent = this[PENDING_UPDATE].silent; - } - needPrepare = true; - this[PENDING_UPDATE] = null; - } - this[IN_MAIN_PROCESS_KEY] = true; - try { - needPrepare && prepare(this); - updateMethods.update.call(this, { - type: "resize", - animation: extend({ - // Disable animation - duration: 0 - }, opts && opts.animation) - }); - } catch (e2) { - this[IN_MAIN_PROCESS_KEY] = false; - throw e2; - } - this[IN_MAIN_PROCESS_KEY] = false; - flushPendingActions.call(this, silent); - triggerUpdatedEvent.call(this, silent); - }; - ECharts2.prototype.showLoading = function(name, cfg) { - if (this._disposed) { - disposedWarning(this.id); - return; - } - if (isObject(name)) { - cfg = name; - name = ""; - } - name = name || "default"; - this.hideLoading(); - if (!loadingEffects[name]) { - if (true) { - warn("Loading effects " + name + " not exists."); - } - return; - } - var el = loadingEffects[name](this._api, cfg); - var zr = this._zr; - this._loadingFX = el; - zr.add(el); - }; - ECharts2.prototype.hideLoading = function() { - if (this._disposed) { - disposedWarning(this.id); - return; - } - this._loadingFX && this._zr.remove(this._loadingFX); - this._loadingFX = null; - }; - ECharts2.prototype.makeActionFromEvent = function(eventObj) { - var payload = extend({}, eventObj); - payload.type = eventActionMap[eventObj.type]; - return payload; - }; - ECharts2.prototype.dispatchAction = function(payload, opt) { - if (this._disposed) { - disposedWarning(this.id); - return; - } - if (!isObject(opt)) { - opt = { - silent: !!opt - }; - } - if (!actions[payload.type]) { - return; - } - if (!this._model) { - return; - } - if (this[IN_MAIN_PROCESS_KEY]) { - this._pendingActions.push(payload); - return; - } - var silent = opt.silent; - doDispatchAction.call(this, payload, silent); - var flush = opt.flush; - if (flush) { - this._zr.flush(); - } else if (flush !== false && env_default.browser.weChat) { - this._throttledZrFlush(); - } - flushPendingActions.call(this, silent); - triggerUpdatedEvent.call(this, silent); - }; - ECharts2.prototype.updateLabelLayout = function() { - lifecycle_default.trigger("series:layoutlabels", this._model, this._api, { - // Not adding series labels. - // TODO - updatedSeries: [] - }); - }; - ECharts2.prototype.appendData = function(params) { - if (this._disposed) { - disposedWarning(this.id); - return; - } - var seriesIndex = params.seriesIndex; - var ecModel = this.getModel(); - var seriesModel = ecModel.getSeriesByIndex(seriesIndex); - if (true) { - assert(params.data && seriesModel); - } - seriesModel.appendData(params); - this._scheduler.unfinished = true; - this.getZr().wakeUp(); - }; - ECharts2.internalField = function() { - prepare = function(ecIns) { - var scheduler = ecIns._scheduler; - scheduler.restorePipelines(ecIns._model); - scheduler.prepareStageTasks(); - prepareView(ecIns, true); - prepareView(ecIns, false); - scheduler.plan(); - }; - prepareView = function(ecIns, isComponent) { - var ecModel = ecIns._model; - var scheduler = ecIns._scheduler; - var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews; - var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap; - var zr = ecIns._zr; - var api = ecIns._api; - for (var i = 0; i < viewList.length; i++) { - viewList[i].__alive = false; - } - isComponent ? ecModel.eachComponent(function(componentType, model) { - componentType !== "series" && doPrepare(model); - }) : ecModel.eachSeries(doPrepare); - function doPrepare(model) { - var requireNewView = model.__requireNewView; - model.__requireNewView = false; - var viewId = "_ec_" + model.id + "_" + model.type; - var view2 = !requireNewView && viewMap[viewId]; - if (!view2) { - var classType = parseClassType(model.type); - var Clazz = isComponent ? Component_default2.getClass(classType.main, classType.sub) : ( - // FIXME:TS - // (ChartView as ChartViewConstructor).getClass('series', classType.sub) - // For backward compat, still support a chart type declared as only subType - // like "liquidfill", but recommend "series.liquidfill" - // But need a base class to make a type series. - Chart_default.getClass(classType.sub) - ); - if (true) { - assert(Clazz, classType.sub + " does not exist."); - } - view2 = new Clazz(); - view2.init(ecModel, api); - viewMap[viewId] = view2; - viewList.push(view2); - zr.add(view2.group); - } - model.__viewId = view2.__id = viewId; - view2.__alive = true; - view2.__model = model; - view2.group.__ecComponentInfo = { - mainType: model.mainType, - index: model.componentIndex - }; - !isComponent && scheduler.prepareView(view2, model, ecModel, api); - } - for (var i = 0; i < viewList.length; ) { - var view = viewList[i]; - if (!view.__alive) { - !isComponent && view.renderTask.dispose(); - zr.remove(view.group); - view.dispose(ecModel, api); - viewList.splice(i, 1); - if (viewMap[view.__id] === view) { - delete viewMap[view.__id]; - } - view.__id = view.group.__ecComponentInfo = null; - } else { - i++; - } - } - }; - updateDirectly = function(ecIns, method, payload, mainType, subType) { - var ecModel = ecIns._model; - ecModel.setUpdatePayload(payload); - if (!mainType) { - each([].concat(ecIns._componentsViews).concat(ecIns._chartsViews), callView); - return; - } - var query = {}; - query[mainType + "Id"] = payload[mainType + "Id"]; - query[mainType + "Index"] = payload[mainType + "Index"]; - query[mainType + "Name"] = payload[mainType + "Name"]; - var condition = { - mainType, - query - }; - subType && (condition.subType = subType); - var excludeSeriesId = payload.excludeSeriesId; - var excludeSeriesIdMap; - if (excludeSeriesId != null) { - excludeSeriesIdMap = createHashMap(); - each(normalizeToArray(excludeSeriesId), function(id) { - var modelId = convertOptionIdName(id, null); - if (modelId != null) { - excludeSeriesIdMap.set(modelId, true); - } - }); - } - ecModel && ecModel.eachComponent(condition, function(model) { - var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null; - if (isExcluded) { - return; - } - ; - if (isHighDownPayload(payload)) { - if (model instanceof Series_default) { - if (payload.type === HIGHLIGHT_ACTION_TYPE && !payload.notBlur && !model.get(["emphasis", "disabled"])) { - blurSeriesFromHighlightPayload(model, payload, ecIns._api); - } - } else { - var _a2 = findComponentHighDownDispatchers(model.mainType, model.componentIndex, payload.name, ecIns._api), focusSelf = _a2.focusSelf, dispatchers = _a2.dispatchers; - if (payload.type === HIGHLIGHT_ACTION_TYPE && focusSelf && !payload.notBlur) { - blurComponent(model.mainType, model.componentIndex, ecIns._api); - } - if (dispatchers) { - each(dispatchers, function(dispatcher) { - payload.type === HIGHLIGHT_ACTION_TYPE ? enterEmphasis(dispatcher) : leaveEmphasis(dispatcher); - }); - } - } - } else if (isSelectChangePayload(payload)) { - if (model instanceof Series_default) { - toggleSelectionFromPayload(model, payload, ecIns._api); - updateSeriesElementSelection(model); - markStatusToUpdate(ecIns); - } - } - }, ecIns); - ecModel && ecModel.eachComponent(condition, function(model) { - var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null; - if (isExcluded) { - return; - } - ; - callView(ecIns[mainType === "series" ? "_chartsMap" : "_componentsMap"][model.__viewId]); - }, ecIns); - function callView(view) { - view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload); - } - }; - updateMethods = { - prepareAndUpdate: function(payload) { - prepare(this); - updateMethods.update.call(this, payload, { - // Needs to mark option changed if newOption is given. - // It's from MagicType. - // TODO If use a separate flag optionChanged in payload? - optionChanged: payload.newOption != null - }); - }, - update: function(payload, updateParams) { - var ecModel = this._model; - var api = this._api; - var zr = this._zr; - var coordSysMgr = this._coordSysMgr; - var scheduler = this._scheduler; - if (!ecModel) { - return; - } - ecModel.setUpdatePayload(payload); - scheduler.restoreData(ecModel, payload); - scheduler.performSeriesTasks(ecModel); - coordSysMgr.create(ecModel, api); - scheduler.performDataProcessorTasks(ecModel, payload); - updateStreamModes(this, ecModel); - coordSysMgr.update(ecModel, api); - clearColorPalette(ecModel); - scheduler.performVisualTasks(ecModel, payload); - render(this, ecModel, api, payload, updateParams); - var backgroundColor2 = ecModel.get("backgroundColor") || "transparent"; - var darkMode = ecModel.get("darkMode"); - zr.setBackgroundColor(backgroundColor2); - if (darkMode != null && darkMode !== "auto") { - zr.setDarkMode(darkMode); - } - lifecycle_default.trigger("afterupdate", ecModel, api); - }, - updateTransform: function(payload) { - var _this = this; - var ecModel = this._model; - var api = this._api; - if (!ecModel) { - return; - } - ecModel.setUpdatePayload(payload); - var componentDirtyList = []; - ecModel.eachComponent(function(componentType, componentModel) { - if (componentType === "series") { - return; - } - var componentView = _this.getViewOfComponentModel(componentModel); - if (componentView && componentView.__alive) { - if (componentView.updateTransform) { - var result = componentView.updateTransform(componentModel, ecModel, api, payload); - result && result.update && componentDirtyList.push(componentView); - } else { - componentDirtyList.push(componentView); - } - } - }); - var seriesDirtyMap = createHashMap(); - ecModel.eachSeries(function(seriesModel) { - var chartView = _this._chartsMap[seriesModel.__viewId]; - if (chartView.updateTransform) { - var result = chartView.updateTransform(seriesModel, ecModel, api, payload); - result && result.update && seriesDirtyMap.set(seriesModel.uid, 1); - } else { - seriesDirtyMap.set(seriesModel.uid, 1); - } - }); - clearColorPalette(ecModel); - this._scheduler.performVisualTasks(ecModel, payload, { - setDirty: true, - dirtyMap: seriesDirtyMap - }); - renderSeries(this, ecModel, api, payload, {}, seriesDirtyMap); - lifecycle_default.trigger("afterupdate", ecModel, api); - }, - updateView: function(payload) { - var ecModel = this._model; - if (!ecModel) { - return; - } - ecModel.setUpdatePayload(payload); - Chart_default.markUpdateMethod(payload, "updateView"); - clearColorPalette(ecModel); - this._scheduler.performVisualTasks(ecModel, payload, { - setDirty: true - }); - render(this, ecModel, this._api, payload, {}); - lifecycle_default.trigger("afterupdate", ecModel, this._api); - }, - updateVisual: function(payload) { - var _this = this; - var ecModel = this._model; - if (!ecModel) { - return; - } - ecModel.setUpdatePayload(payload); - ecModel.eachSeries(function(seriesModel) { - seriesModel.getData().clearAllVisual(); - }); - Chart_default.markUpdateMethod(payload, "updateVisual"); - clearColorPalette(ecModel); - this._scheduler.performVisualTasks(ecModel, payload, { - visualType: "visual", - setDirty: true - }); - ecModel.eachComponent(function(componentType, componentModel) { - if (componentType !== "series") { - var componentView = _this.getViewOfComponentModel(componentModel); - componentView && componentView.__alive && componentView.updateVisual(componentModel, ecModel, _this._api, payload); - } - }); - ecModel.eachSeries(function(seriesModel) { - var chartView = _this._chartsMap[seriesModel.__viewId]; - chartView.updateVisual(seriesModel, ecModel, _this._api, payload); - }); - lifecycle_default.trigger("afterupdate", ecModel, this._api); - }, - updateLayout: function(payload) { - updateMethods.update.call(this, payload); - } - }; - doConvertPixel = function(ecIns, methodName, finder, value) { - if (ecIns._disposed) { - disposedWarning(ecIns.id); - return; - } - var ecModel = ecIns._model; - var coordSysList = ecIns._coordSysMgr.getCoordinateSystems(); - var result; - var parsedFinder = parseFinder(ecModel, finder); - for (var i = 0; i < coordSysList.length; i++) { - var coordSys = coordSysList[i]; - if (coordSys[methodName] && (result = coordSys[methodName](ecModel, parsedFinder, value)) != null) { - return result; - } - } - if (true) { - warn("No coordinate system that supports " + methodName + " found by the given finder."); - } - }; - updateStreamModes = function(ecIns, ecModel) { - var chartsMap = ecIns._chartsMap; - var scheduler = ecIns._scheduler; - ecModel.eachSeries(function(seriesModel) { - scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]); - }); - }; - doDispatchAction = function(payload, silent) { - var _this = this; - var ecModel = this.getModel(); - var payloadType = payload.type; - var escapeConnect = payload.escapeConnect; - var actionWrap = actions[payloadType]; - var actionInfo3 = actionWrap.actionInfo; - var cptTypeTmp = (actionInfo3.update || "update").split(":"); - var updateMethod = cptTypeTmp.pop(); - var cptType = cptTypeTmp[0] != null && parseClassType(cptTypeTmp[0]); - this[IN_MAIN_PROCESS_KEY] = true; - var payloads = [payload]; - var batched = false; - if (payload.batch) { - batched = true; - payloads = map(payload.batch, function(item) { - item = defaults(extend({}, item), payload); - item.batch = null; - return item; - }); - } - var eventObjBatch = []; - var eventObj; - var isSelectChange = isSelectChangePayload(payload); - var isHighDown = isHighDownPayload(payload); - if (isHighDown) { - allLeaveBlur(this._api); - } - each(payloads, function(batchItem) { - eventObj = actionWrap.action(batchItem, _this._model, _this._api); - eventObj = eventObj || extend({}, batchItem); - eventObj.type = actionInfo3.event || eventObj.type; - eventObjBatch.push(eventObj); - if (isHighDown) { - var _a2 = preParseFinder(payload), queryOptionMap = _a2.queryOptionMap, mainTypeSpecified = _a2.mainTypeSpecified; - var componentMainType = mainTypeSpecified ? queryOptionMap.keys()[0] : "series"; - updateDirectly(_this, updateMethod, batchItem, componentMainType); - markStatusToUpdate(_this); - } else if (isSelectChange) { - updateDirectly(_this, updateMethod, batchItem, "series"); - markStatusToUpdate(_this); - } else if (cptType) { - updateDirectly(_this, updateMethod, batchItem, cptType.main, cptType.sub); - } - }); - if (updateMethod !== "none" && !isHighDown && !isSelectChange && !cptType) { - try { - if (this[PENDING_UPDATE]) { - prepare(this); - updateMethods.update.call(this, payload); - this[PENDING_UPDATE] = null; - } else { - updateMethods[updateMethod].call(this, payload); - } - } catch (e2) { - this[IN_MAIN_PROCESS_KEY] = false; - throw e2; - } - } - if (batched) { - eventObj = { - type: actionInfo3.event || payloadType, - escapeConnect, - batch: eventObjBatch - }; - } else { - eventObj = eventObjBatch[0]; - } - this[IN_MAIN_PROCESS_KEY] = false; - if (!silent) { - var messageCenter = this._messageCenter; - messageCenter.trigger(eventObj.type, eventObj); - if (isSelectChange) { - var newObj = { - type: "selectchanged", - escapeConnect, - selected: getAllSelectedIndices(ecModel), - isFromClick: payload.isFromClick || false, - fromAction: payload.type, - fromActionPayload: payload - }; - messageCenter.trigger(newObj.type, newObj); - } - } - }; - flushPendingActions = function(silent) { - var pendingActions = this._pendingActions; - while (pendingActions.length) { - var payload = pendingActions.shift(); - doDispatchAction.call(this, payload, silent); - } - }; - triggerUpdatedEvent = function(silent) { - !silent && this.trigger("updated"); - }; - bindRenderedEvent = function(zr, ecIns) { - zr.on("rendered", function(params) { - ecIns.trigger("rendered", params); - if ( - // Although zr is dirty if initial animation is not finished - // and this checking is called on frame, we also check - // animation finished for robustness. - zr.animation.isFinished() && !ecIns[PENDING_UPDATE] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length - ) { - ecIns.trigger("finished"); - } - }); - }; - bindMouseEvent = function(zr, ecIns) { - zr.on("mouseover", function(e2) { - var el = e2.target; - var dispatcher = findEventDispatcher(el, isHighDownDispatcher); - if (dispatcher) { - handleGlobalMouseOverForHighDown(dispatcher, e2, ecIns._api); - markStatusToUpdate(ecIns); - } - }).on("mouseout", function(e2) { - var el = e2.target; - var dispatcher = findEventDispatcher(el, isHighDownDispatcher); - if (dispatcher) { - handleGlobalMouseOutForHighDown(dispatcher, e2, ecIns._api); - markStatusToUpdate(ecIns); - } - }).on("click", function(e2) { - var el = e2.target; - var dispatcher = findEventDispatcher(el, function(target) { - return getECData(target).dataIndex != null; - }, true); - if (dispatcher) { - var actionType = dispatcher.selected ? "unselect" : "select"; - var ecData = getECData(dispatcher); - ecIns._api.dispatchAction({ - type: actionType, - dataType: ecData.dataType, - dataIndexInside: ecData.dataIndex, - seriesIndex: ecData.seriesIndex, - isFromClick: true - }); - } - }); - }; - function clearColorPalette(ecModel) { - ecModel.clearColorPalette(); - ecModel.eachSeries(function(seriesModel) { - seriesModel.clearColorPalette(); - }); - } - ; - function allocateZlevels(ecModel) { - ; - var componentZLevels = []; - var seriesZLevels = []; - var hasSeparateZLevel = false; - ecModel.eachComponent(function(componentType, componentModel) { - var zlevel = componentModel.get("zlevel") || 0; - var z = componentModel.get("z") || 0; - var zlevelKey = componentModel.getZLevelKey(); - hasSeparateZLevel = hasSeparateZLevel || !!zlevelKey; - (componentType === "series" ? seriesZLevels : componentZLevels).push({ - zlevel, - z, - idx: componentModel.componentIndex, - type: componentType, - key: zlevelKey - }); - }); - if (hasSeparateZLevel) { - var zLevels = componentZLevels.concat(seriesZLevels); - var lastSeriesZLevel_1; - var lastSeriesKey_1; - sort(zLevels, function(a, b) { - if (a.zlevel === b.zlevel) { - return a.z - b.z; - } - return a.zlevel - b.zlevel; - }); - each(zLevels, function(item) { - var componentModel = ecModel.getComponent(item.type, item.idx); - var zlevel = item.zlevel; - var key = item.key; - if (lastSeriesZLevel_1 != null) { - zlevel = Math.max(lastSeriesZLevel_1, zlevel); - } - if (key) { - if (zlevel === lastSeriesZLevel_1 && key !== lastSeriesKey_1) { - zlevel++; - } - lastSeriesKey_1 = key; - } else if (lastSeriesKey_1) { - if (zlevel === lastSeriesZLevel_1) { - zlevel++; - } - lastSeriesKey_1 = ""; - } - lastSeriesZLevel_1 = zlevel; - componentModel.setZLevel(zlevel); - }); - } - } - render = function(ecIns, ecModel, api, payload, updateParams) { - allocateZlevels(ecModel); - renderComponents(ecIns, ecModel, api, payload, updateParams); - each(ecIns._chartsViews, function(chart) { - chart.__alive = false; - }); - renderSeries(ecIns, ecModel, api, payload, updateParams); - each(ecIns._chartsViews, function(chart) { - if (!chart.__alive) { - chart.remove(ecModel, api); - } - }); - }; - renderComponents = function(ecIns, ecModel, api, payload, updateParams, dirtyList) { - each(dirtyList || ecIns._componentsViews, function(componentView) { - var componentModel = componentView.__model; - clearStates(componentModel, componentView); - componentView.render(componentModel, ecModel, api, payload); - updateZ3(componentModel, componentView); - updateStates(componentModel, componentView); - }); - }; - renderSeries = function(ecIns, ecModel, api, payload, updateParams, dirtyMap) { - var scheduler = ecIns._scheduler; - updateParams = extend(updateParams || {}, { - updatedSeries: ecModel.getSeries() - }); - lifecycle_default.trigger("series:beforeupdate", ecModel, api, updateParams); - var unfinished = false; - ecModel.eachSeries(function(seriesModel) { - var chartView = ecIns._chartsMap[seriesModel.__viewId]; - chartView.__alive = true; - var renderTask = chartView.renderTask; - scheduler.updatePayload(renderTask, payload); - clearStates(seriesModel, chartView); - if (dirtyMap && dirtyMap.get(seriesModel.uid)) { - renderTask.dirty(); - } - if (renderTask.perform(scheduler.getPerformArgs(renderTask))) { - unfinished = true; - } - chartView.group.silent = !!seriesModel.get("silent"); - updateBlend(seriesModel, chartView); - updateSeriesElementSelection(seriesModel); - }); - scheduler.unfinished = unfinished || scheduler.unfinished; - lifecycle_default.trigger("series:layoutlabels", ecModel, api, updateParams); - lifecycle_default.trigger("series:transition", ecModel, api, updateParams); - ecModel.eachSeries(function(seriesModel) { - var chartView = ecIns._chartsMap[seriesModel.__viewId]; - updateZ3(seriesModel, chartView); - updateStates(seriesModel, chartView); - }); - updateHoverLayerStatus(ecIns, ecModel); - lifecycle_default.trigger("series:afterupdate", ecModel, api, updateParams); - }; - markStatusToUpdate = function(ecIns) { - ecIns[STATUS_NEEDS_UPDATE_KEY] = true; - ecIns.getZr().wakeUp(); - }; - applyChangedStates = function(ecIns) { - if (!ecIns[STATUS_NEEDS_UPDATE_KEY]) { - return; - } - ecIns.getZr().storage.traverse(function(el) { - if (isElementRemoved(el)) { - return; - } - applyElementStates(el); - }); - ecIns[STATUS_NEEDS_UPDATE_KEY] = false; - }; - function applyElementStates(el) { - var newStates = []; - var oldStates = el.currentStates; - for (var i = 0; i < oldStates.length; i++) { - var stateName = oldStates[i]; - if (!(stateName === "emphasis" || stateName === "blur" || stateName === "select")) { - newStates.push(stateName); - } - } - if (el.selected && el.states.select) { - newStates.push("select"); - } - if (el.hoverState === HOVER_STATE_EMPHASIS && el.states.emphasis) { - newStates.push("emphasis"); - } else if (el.hoverState === HOVER_STATE_BLUR && el.states.blur) { - newStates.push("blur"); - } - el.useStates(newStates); - } - function updateHoverLayerStatus(ecIns, ecModel) { - var zr = ecIns._zr; - var storage2 = zr.storage; - var elCount = 0; - storage2.traverse(function(el) { - if (!el.isGroup) { - elCount++; - } - }); - if (elCount > ecModel.get("hoverLayerThreshold") && !env_default.node && !env_default.worker) { - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.preventUsingHoverLayer) { - return; - } - var chartView = ecIns._chartsMap[seriesModel.__viewId]; - if (chartView.__alive) { - chartView.eachRendered(function(el) { - if (el.states.emphasis) { - el.states.emphasis.hoverLayer = true; - } - }); - } - }); - } - } - ; - function updateBlend(seriesModel, chartView) { - var blendMode = seriesModel.get("blendMode") || null; - chartView.eachRendered(function(el) { - if (!el.isGroup) { - el.style.blend = blendMode; - } - }); - } - ; - function updateZ3(model, view) { - if (model.preventAutoZ) { - return; - } - var z = model.get("z") || 0; - var zlevel = model.get("zlevel") || 0; - view.eachRendered(function(el) { - doUpdateZ(el, z, zlevel, -Infinity); - return true; - }); - } - ; - function doUpdateZ(el, z, zlevel, maxZ2) { - var label = el.getTextContent(); - var labelLine = el.getTextGuideLine(); - var isGroup = el.isGroup; - if (isGroup) { - var children = el.childrenRef(); - for (var i = 0; i < children.length; i++) { - maxZ2 = Math.max(doUpdateZ(children[i], z, zlevel, maxZ2), maxZ2); - } - } else { - el.z = z; - el.zlevel = zlevel; - maxZ2 = Math.max(el.z2, maxZ2); - } - if (label) { - label.z = z; - label.zlevel = zlevel; - isFinite(maxZ2) && (label.z2 = maxZ2 + 2); - } - if (labelLine) { - var textGuideLineConfig = el.textGuideLineConfig; - labelLine.z = z; - labelLine.zlevel = zlevel; - isFinite(maxZ2) && (labelLine.z2 = maxZ2 + (textGuideLineConfig && textGuideLineConfig.showAbove ? 1 : -1)); - } - return maxZ2; - } - function clearStates(model, view) { - view.eachRendered(function(el) { - if (isElementRemoved(el)) { - return; - } - var textContent = el.getTextContent(); - var textGuide = el.getTextGuideLine(); - if (el.stateTransition) { - el.stateTransition = null; - } - if (textContent && textContent.stateTransition) { - textContent.stateTransition = null; - } - if (textGuide && textGuide.stateTransition) { - textGuide.stateTransition = null; - } - if (el.hasState()) { - el.prevStates = el.currentStates; - el.clearStates(); - } else if (el.prevStates) { - el.prevStates = null; - } - }); - } - function updateStates(model, view) { - var stateAnimationModel = model.getModel("stateAnimation"); - var enableAnimation = model.isAnimationEnabled(); - var duration = stateAnimationModel.get("duration"); - var stateTransition = duration > 0 ? { - duration, - delay: stateAnimationModel.get("delay"), - easing: stateAnimationModel.get("easing") - // additive: stateAnimationModel.get('additive') - } : null; - view.eachRendered(function(el) { - if (el.states && el.states.emphasis) { - if (isElementRemoved(el)) { - return; - } - if (el instanceof Path_default) { - savePathStates(el); - } - if (el.__dirty) { - var prevStates = el.prevStates; - if (prevStates) { - el.useStates(prevStates); - } - } - if (enableAnimation) { - el.stateTransition = stateTransition; - var textContent = el.getTextContent(); - var textGuide = el.getTextGuideLine(); - if (textContent) { - textContent.stateTransition = stateTransition; - } - if (textGuide) { - textGuide.stateTransition = stateTransition; - } - } - if (el.__dirty) { - applyElementStates(el); - } - } - }); - } - ; - createExtensionAPI = function(ecIns) { - return new /** @class */ - (function(_super2) { - __extends(class_1, _super2); - function class_1() { - return _super2 !== null && _super2.apply(this, arguments) || this; - } - class_1.prototype.getCoordinateSystems = function() { - return ecIns._coordSysMgr.getCoordinateSystems(); - }; - class_1.prototype.getComponentByElement = function(el) { - while (el) { - var modelInfo = el.__ecComponentInfo; - if (modelInfo != null) { - return ecIns._model.getComponent(modelInfo.mainType, modelInfo.index); - } - el = el.parent; - } - }; - class_1.prototype.enterEmphasis = function(el, highlightDigit) { - enterEmphasis(el, highlightDigit); - markStatusToUpdate(ecIns); - }; - class_1.prototype.leaveEmphasis = function(el, highlightDigit) { - leaveEmphasis(el, highlightDigit); - markStatusToUpdate(ecIns); - }; - class_1.prototype.enterBlur = function(el) { - enterBlur(el); - markStatusToUpdate(ecIns); - }; - class_1.prototype.leaveBlur = function(el) { - leaveBlur(el); - markStatusToUpdate(ecIns); - }; - class_1.prototype.enterSelect = function(el) { - enterSelect(el); - markStatusToUpdate(ecIns); - }; - class_1.prototype.leaveSelect = function(el) { - leaveSelect(el); - markStatusToUpdate(ecIns); - }; - class_1.prototype.getModel = function() { - return ecIns.getModel(); - }; - class_1.prototype.getViewOfComponentModel = function(componentModel) { - return ecIns.getViewOfComponentModel(componentModel); - }; - class_1.prototype.getViewOfSeriesModel = function(seriesModel) { - return ecIns.getViewOfSeriesModel(seriesModel); - }; - return class_1; - }(ExtensionAPI_default))(ecIns); - }; - enableConnect = function(chart) { - function updateConnectedChartsStatus(charts, status) { - for (var i = 0; i < charts.length; i++) { - var otherChart = charts[i]; - otherChart[CONNECT_STATUS_KEY] = status; - } - } - each(eventActionMap, function(actionType, eventType) { - chart._messageCenter.on(eventType, function(event) { - if (connectedGroups[chart.group] && chart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_PENDING) { - if (event && event.escapeConnect) { - return; - } - var action_1 = chart.makeActionFromEvent(event); - var otherCharts_1 = []; - each(instances2, function(otherChart) { - if (otherChart !== chart && otherChart.group === chart.group) { - otherCharts_1.push(otherChart); - } - }); - updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_PENDING); - each(otherCharts_1, function(otherChart) { - if (otherChart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_UPDATING) { - otherChart.dispatchAction(action_1); - } - }); - updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_UPDATED); - } - }); - }); - }; - }(); - return ECharts2; - }(Eventful_default) - ); - var echartsProto = ECharts.prototype; - echartsProto.on = createRegisterEventWithLowercaseECharts("on"); - echartsProto.off = createRegisterEventWithLowercaseECharts("off"); - echartsProto.one = function(eventName, cb, ctx) { - var self2 = this; - deprecateLog("ECharts#one is deprecated."); - function wrapped() { - var args2 = []; - for (var _i = 0; _i < arguments.length; _i++) { - args2[_i] = arguments[_i]; - } - cb && cb.apply && cb.apply(this, args2); - self2.off(eventName, wrapped); - } - ; - this.on.call(this, eventName, wrapped, ctx); - }; - var MOUSE_EVENT_NAMES = ["click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout", "contextmenu"]; - function disposedWarning(id) { - if (true) { - warn("Instance " + id + " has been disposed"); - } - } - var actions = {}; - var eventActionMap = {}; - var dataProcessorFuncs = []; - var optionPreprocessorFuncs = []; - var visualFuncs = []; - var themeStorage = {}; - var loadingEffects = {}; - var instances2 = {}; - var connectedGroups = {}; - var idBase = +/* @__PURE__ */ new Date() - 0; - var groupIdBase = +/* @__PURE__ */ new Date() - 0; - var DOM_ATTRIBUTE_KEY = "_echarts_instance_"; - function init2(dom, theme2, opts) { - var isClient = !(opts && opts.ssr); - if (isClient) { - if (true) { - if (!dom) { - throw new Error("Initialize failed: invalid dom."); - } - } - var existInstance = getInstanceByDom(dom); - if (existInstance) { - if (true) { - warn("There is a chart instance already initialized on the dom."); - } - return existInstance; - } - if (true) { - if (isDom(dom) && dom.nodeName.toUpperCase() !== "CANVAS" && (!dom.clientWidth && (!opts || opts.width == null) || !dom.clientHeight && (!opts || opts.height == null))) { - warn("Can't get DOM width or height. Please check dom.clientWidth and dom.clientHeight. They should not be 0.For example, you may need to call this in the callback of window.onload."); - } - } - } - var chart = new ECharts(dom, theme2, opts); - chart.id = "ec_" + idBase++; - instances2[chart.id] = chart; - isClient && setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id); - enableConnect(chart); - lifecycle_default.trigger("afterinit", chart); - return chart; - } - function connect(groupId) { - if (isArray(groupId)) { - var charts = groupId; - groupId = null; - each(charts, function(chart) { - if (chart.group != null) { - groupId = chart.group; - } - }); - groupId = groupId || "g_" + groupIdBase++; - each(charts, function(chart) { - chart.group = groupId; - }); - } - connectedGroups[groupId] = true; - return groupId; - } - function disconnect(groupId) { - connectedGroups[groupId] = false; - } - var disConnect = disconnect; - function dispose2(chart) { - if (isString(chart)) { - chart = instances2[chart]; - } else if (!(chart instanceof ECharts)) { - chart = getInstanceByDom(chart); - } - if (chart instanceof ECharts && !chart.isDisposed()) { - chart.dispose(); - } - } - function getInstanceByDom(dom) { - return instances2[getAttribute(dom, DOM_ATTRIBUTE_KEY)]; - } - function getInstanceById(key) { - return instances2[key]; - } - function registerTheme(name, theme2) { - themeStorage[name] = theme2; - } - function registerPreprocessor(preprocessorFunc) { - if (indexOf(optionPreprocessorFuncs, preprocessorFunc) < 0) { - optionPreprocessorFuncs.push(preprocessorFunc); - } - } - function registerProcessor(priority, processor) { - normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_DEFAULT); - } - function registerPostInit(postInitFunc) { - registerUpdateLifecycle("afterinit", postInitFunc); - } - function registerPostUpdate(postUpdateFunc) { - registerUpdateLifecycle("afterupdate", postUpdateFunc); - } - function registerUpdateLifecycle(name, cb) { - lifecycle_default.on(name, cb); - } - function registerAction(actionInfo3, eventName, action) { - if (isFunction(eventName)) { - action = eventName; - eventName = ""; - } - var actionType = isObject(actionInfo3) ? actionInfo3.type : [actionInfo3, actionInfo3 = { - event: eventName - }][0]; - actionInfo3.event = (actionInfo3.event || actionType).toLowerCase(); - eventName = actionInfo3.event; - if (eventActionMap[eventName]) { - return; - } - assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName)); - if (!actions[actionType]) { - actions[actionType] = { - action, - actionInfo: actionInfo3 - }; - } - eventActionMap[eventName] = actionType; - } - function registerCoordinateSystem(type, coordSysCreator) { - CoordinateSystem_default.register(type, coordSysCreator); - } - function getCoordinateSystemDimensions(type) { - var coordSysCreator = CoordinateSystem_default.get(type); - if (coordSysCreator) { - return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice(); - } - } - function registerLayout(priority, layoutTask) { - normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, "layout"); - } - function registerVisual(priority, visualTask) { - normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, "visual"); - } - var registeredTasks = []; - function normalizeRegister(targetList, priority, fn, defaultPriority, visualType) { - if (isFunction(priority) || isObject(priority)) { - fn = priority; - priority = defaultPriority; - } - if (true) { - if (isNaN(priority) || priority == null) { - throw new Error("Illegal priority"); - } - each(targetList, function(wrap) { - assert(wrap.__raw !== fn); - }); - } - if (indexOf(registeredTasks, fn) >= 0) { - return; - } - registeredTasks.push(fn); - var stageHandler = Scheduler_default.wrapStageHandler(fn, visualType); - stageHandler.__prio = priority; - stageHandler.__raw = fn; - targetList.push(stageHandler); - } - function registerLoading(name, loadingFx) { - loadingEffects[name] = loadingFx; - } - function setCanvasCreator(creator) { - if (true) { - deprecateLog("setCanvasCreator is deprecated. Use setPlatformAPI({ createCanvas }) instead."); - } - setPlatformAPI({ - createCanvas: creator - }); - } - function registerMap(mapName, geoJson, specialAreas) { - var registerMap3 = getImpl("registerMap"); - registerMap3 && registerMap3(mapName, geoJson, specialAreas); - } - function getMap(mapName) { - var getMap2 = getImpl("getMap"); - return getMap2 && getMap2(mapName); - } - var registerTransform = registerExternalTransform; - registerVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask); - registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask); - registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask); - registerVisual(PRIORITY_VISUAL_GLOBAL, seriesSymbolTask); - registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataSymbolTask); - registerVisual(PRIORITY_VISUAL_DECAL, decalVisual); - registerPreprocessor(globalBackwardCompat); - registerProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack); - registerLoading("default", defaultLoading); - registerAction({ - type: HIGHLIGHT_ACTION_TYPE, - event: HIGHLIGHT_ACTION_TYPE, - update: HIGHLIGHT_ACTION_TYPE - }, noop); - registerAction({ - type: DOWNPLAY_ACTION_TYPE, - event: DOWNPLAY_ACTION_TYPE, - update: DOWNPLAY_ACTION_TYPE - }, noop); - registerAction({ - type: SELECT_ACTION_TYPE, - event: SELECT_ACTION_TYPE, - update: SELECT_ACTION_TYPE - }, noop); - registerAction({ - type: UNSELECT_ACTION_TYPE, - event: UNSELECT_ACTION_TYPE, - update: UNSELECT_ACTION_TYPE - }, noop); - registerAction({ - type: TOGGLE_SELECT_ACTION_TYPE, - event: TOGGLE_SELECT_ACTION_TYPE, - update: TOGGLE_SELECT_ACTION_TYPE - }, noop); - registerTheme("light", light_default); - registerTheme("dark", dark_default); - var dataTool = {}; - - // node_modules/echarts/lib/extension.js - var extensions = []; - var extensionRegisters = { - registerPreprocessor, - registerProcessor, - registerPostInit, - registerPostUpdate, - registerUpdateLifecycle, - registerAction, - registerCoordinateSystem, - registerLayout, - registerVisual, - registerTransform, - registerLoading, - registerMap, - registerImpl, - PRIORITY, - ComponentModel: Component_default, - ComponentView: Component_default2, - SeriesModel: Series_default, - ChartView: Chart_default, - // TODO Use ComponentModel and SeriesModel instead of Constructor - registerComponentModel: function(ComponentModelClass) { - Component_default.registerClass(ComponentModelClass); - }, - registerComponentView: function(ComponentViewClass) { - Component_default2.registerClass(ComponentViewClass); - }, - registerSeriesModel: function(SeriesModelClass) { - Series_default.registerClass(SeriesModelClass); - }, - registerChartView: function(ChartViewClass) { - Chart_default.registerClass(ChartViewClass); - }, - registerSubTypeDefaulter: function(componentType, defaulter) { - Component_default.registerSubTypeDefaulter(componentType, defaulter); - }, - registerPainter: function(painterType, PainterCtor) { - registerPainter(painterType, PainterCtor); - } - }; - function use(ext) { - if (isArray(ext)) { - each(ext, function(singleExt) { - use(singleExt); - }); - return; - } - if (indexOf(extensions, ext) >= 0) { - return; - } - extensions.push(ext); - if (isFunction(ext)) { - ext = { - install: ext - }; - } - ext.install(extensionRegisters); - } - - // node_modules/echarts/lib/data/DataDiffer.js - function dataIndexMapValueLength(valNumOrArrLengthMoreThan2) { - return valNumOrArrLengthMoreThan2 == null ? 0 : valNumOrArrLengthMoreThan2.length || 1; - } - function defaultKeyGetter(item) { - return item; - } - var DataDiffer = ( - /** @class */ - function() { - function DataDiffer2(oldArr, newArr, oldKeyGetter, newKeyGetter, context, diffMode) { - this._old = oldArr; - this._new = newArr; - this._oldKeyGetter = oldKeyGetter || defaultKeyGetter; - this._newKeyGetter = newKeyGetter || defaultKeyGetter; - this.context = context; - this._diffModeMultiple = diffMode === "multiple"; - } - DataDiffer2.prototype.add = function(func) { - this._add = func; - return this; - }; - DataDiffer2.prototype.update = function(func) { - this._update = func; - return this; - }; - DataDiffer2.prototype.updateManyToOne = function(func) { - this._updateManyToOne = func; - return this; - }; - DataDiffer2.prototype.updateOneToMany = function(func) { - this._updateOneToMany = func; - return this; - }; - DataDiffer2.prototype.updateManyToMany = function(func) { - this._updateManyToMany = func; - return this; - }; - DataDiffer2.prototype.remove = function(func) { - this._remove = func; - return this; - }; - DataDiffer2.prototype.execute = function() { - this[this._diffModeMultiple ? "_executeMultiple" : "_executeOneToOne"](); - }; - DataDiffer2.prototype._executeOneToOne = function() { - var oldArr = this._old; - var newArr = this._new; - var newDataIndexMap = {}; - var oldDataKeyArr = new Array(oldArr.length); - var newDataKeyArr = new Array(newArr.length); - this._initIndexMap(oldArr, null, oldDataKeyArr, "_oldKeyGetter"); - this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, "_newKeyGetter"); - for (var i = 0; i < oldArr.length; i++) { - var oldKey = oldDataKeyArr[i]; - var newIdxMapVal = newDataIndexMap[oldKey]; - var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal); - if (newIdxMapValLen > 1) { - var newIdx = newIdxMapVal.shift(); - if (newIdxMapVal.length === 1) { - newDataIndexMap[oldKey] = newIdxMapVal[0]; - } - this._update && this._update(newIdx, i); - } else if (newIdxMapValLen === 1) { - newDataIndexMap[oldKey] = null; - this._update && this._update(newIdxMapVal, i); - } else { - this._remove && this._remove(i); - } - } - this._performRestAdd(newDataKeyArr, newDataIndexMap); - }; - DataDiffer2.prototype._executeMultiple = function() { - var oldArr = this._old; - var newArr = this._new; - var oldDataIndexMap = {}; - var newDataIndexMap = {}; - var oldDataKeyArr = []; - var newDataKeyArr = []; - this._initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, "_oldKeyGetter"); - this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, "_newKeyGetter"); - for (var i = 0; i < oldDataKeyArr.length; i++) { - var oldKey = oldDataKeyArr[i]; - var oldIdxMapVal = oldDataIndexMap[oldKey]; - var newIdxMapVal = newDataIndexMap[oldKey]; - var oldIdxMapValLen = dataIndexMapValueLength(oldIdxMapVal); - var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal); - if (oldIdxMapValLen > 1 && newIdxMapValLen === 1) { - this._updateManyToOne && this._updateManyToOne(newIdxMapVal, oldIdxMapVal); - newDataIndexMap[oldKey] = null; - } else if (oldIdxMapValLen === 1 && newIdxMapValLen > 1) { - this._updateOneToMany && this._updateOneToMany(newIdxMapVal, oldIdxMapVal); - newDataIndexMap[oldKey] = null; - } else if (oldIdxMapValLen === 1 && newIdxMapValLen === 1) { - this._update && this._update(newIdxMapVal, oldIdxMapVal); - newDataIndexMap[oldKey] = null; - } else if (oldIdxMapValLen > 1 && newIdxMapValLen > 1) { - this._updateManyToMany && this._updateManyToMany(newIdxMapVal, oldIdxMapVal); - newDataIndexMap[oldKey] = null; - } else if (oldIdxMapValLen > 1) { - for (var i_1 = 0; i_1 < oldIdxMapValLen; i_1++) { - this._remove && this._remove(oldIdxMapVal[i_1]); - } - } else { - this._remove && this._remove(oldIdxMapVal); - } - } - this._performRestAdd(newDataKeyArr, newDataIndexMap); - }; - DataDiffer2.prototype._performRestAdd = function(newDataKeyArr, newDataIndexMap) { - for (var i = 0; i < newDataKeyArr.length; i++) { - var newKey = newDataKeyArr[i]; - var newIdxMapVal = newDataIndexMap[newKey]; - var idxMapValLen = dataIndexMapValueLength(newIdxMapVal); - if (idxMapValLen > 1) { - for (var j = 0; j < idxMapValLen; j++) { - this._add && this._add(newIdxMapVal[j]); - } - } else if (idxMapValLen === 1) { - this._add && this._add(newIdxMapVal); - } - newDataIndexMap[newKey] = null; - } - }; - DataDiffer2.prototype._initIndexMap = function(arr, map3, keyArr, keyGetterName) { - var cbModeMultiple = this._diffModeMultiple; - for (var i = 0; i < arr.length; i++) { - var key = "_ec_" + this[keyGetterName](arr[i], i); - if (!cbModeMultiple) { - keyArr[i] = key; - } - if (!map3) { - continue; - } - var idxMapVal = map3[key]; - var idxMapValLen = dataIndexMapValueLength(idxMapVal); - if (idxMapValLen === 0) { - map3[key] = i; - if (cbModeMultiple) { - keyArr.push(key); - } - } else if (idxMapValLen === 1) { - map3[key] = [idxMapVal, i]; - } else { - idxMapVal.push(i); - } - } - }; - return DataDiffer2; - }() - ); - var DataDiffer_default = DataDiffer; - - // node_modules/echarts/lib/data/helper/dimensionHelper.js - var DimensionUserOuput = ( - /** @class */ - function() { - function DimensionUserOuput2(encode, dimRequest) { - this._encode = encode; - this._schema = dimRequest; - } - DimensionUserOuput2.prototype.get = function() { - return { - // Do not generate full dimension name until fist used. - fullDimensions: this._getFullDimensionNames(), - encode: this._encode - }; - }; - DimensionUserOuput2.prototype._getFullDimensionNames = function() { - if (!this._cachedDimNames) { - this._cachedDimNames = this._schema ? this._schema.makeOutputDimensionNames() : []; - } - return this._cachedDimNames; - }; - return DimensionUserOuput2; - }() - ); - function summarizeDimensions(data, schema) { - var summary = {}; - var encode = summary.encode = {}; - var notExtraCoordDimMap = createHashMap(); - var defaultedLabel = []; - var defaultedTooltip = []; - var userOutputEncode = {}; - each(data.dimensions, function(dimName) { - var dimItem = data.getDimensionInfo(dimName); - var coordDim = dimItem.coordDim; - if (coordDim) { - if (true) { - assert(VISUAL_DIMENSIONS.get(coordDim) == null); - } - var coordDimIndex = dimItem.coordDimIndex; - getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName; - if (!dimItem.isExtraCoord) { - notExtraCoordDimMap.set(coordDim, 1); - if (mayLabelDimType(dimItem.type)) { - defaultedLabel[0] = dimName; - } - getOrCreateEncodeArr(userOutputEncode, coordDim)[coordDimIndex] = data.getDimensionIndex(dimItem.name); - } - if (dimItem.defaultTooltip) { - defaultedTooltip.push(dimName); - } - } - VISUAL_DIMENSIONS.each(function(v, otherDim) { - var encodeArr = getOrCreateEncodeArr(encode, otherDim); - var dimIndex = dimItem.otherDims[otherDim]; - if (dimIndex != null && dimIndex !== false) { - encodeArr[dimIndex] = dimItem.name; - } - }); - }); - var dataDimsOnCoord = []; - var encodeFirstDimNotExtra = {}; - notExtraCoordDimMap.each(function(v, coordDim) { - var dimArr = encode[coordDim]; - encodeFirstDimNotExtra[coordDim] = dimArr[0]; - dataDimsOnCoord = dataDimsOnCoord.concat(dimArr); - }); - summary.dataDimsOnCoord = dataDimsOnCoord; - summary.dataDimIndicesOnCoord = map(dataDimsOnCoord, function(dimName) { - return data.getDimensionInfo(dimName).storeDimIndex; - }); - summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra; - var encodeLabel = encode.label; - if (encodeLabel && encodeLabel.length) { - defaultedLabel = encodeLabel.slice(); - } - var encodeTooltip = encode.tooltip; - if (encodeTooltip && encodeTooltip.length) { - defaultedTooltip = encodeTooltip.slice(); - } else if (!defaultedTooltip.length) { - defaultedTooltip = defaultedLabel.slice(); - } - encode.defaultedLabel = defaultedLabel; - encode.defaultedTooltip = defaultedTooltip; - summary.userOutput = new DimensionUserOuput(userOutputEncode, schema); - return summary; - } - function getOrCreateEncodeArr(encode, dim) { - if (!encode.hasOwnProperty(dim)) { - encode[dim] = []; - } - return encode[dim]; - } - function getDimensionTypeByAxis(axisType) { - return axisType === "category" ? "ordinal" : axisType === "time" ? "time" : "float"; - } - function mayLabelDimType(dimType) { - return !(dimType === "ordinal" || dimType === "time"); - } - - // node_modules/echarts/lib/data/SeriesDimensionDefine.js - var SeriesDimensionDefine = ( - /** @class */ - /* @__PURE__ */ function() { - function SeriesDimensionDefine2(opt) { - this.otherDims = {}; - if (opt != null) { - extend(this, opt); - } - } - return SeriesDimensionDefine2; - }() - ); - var SeriesDimensionDefine_default = SeriesDimensionDefine; - - // node_modules/echarts/lib/data/helper/SeriesDataSchema.js - var inner5 = makeInner(); - var dimTypeShort = { - float: "f", - int: "i", - ordinal: "o", - number: "n", - time: "t" - }; - var SeriesDataSchema = ( - /** @class */ - function() { - function SeriesDataSchema2(opt) { - this.dimensions = opt.dimensions; - this._dimOmitted = opt.dimensionOmitted; - this.source = opt.source; - this._fullDimCount = opt.fullDimensionCount; - this._updateDimOmitted(opt.dimensionOmitted); - } - SeriesDataSchema2.prototype.isDimensionOmitted = function() { - return this._dimOmitted; - }; - SeriesDataSchema2.prototype._updateDimOmitted = function(dimensionOmitted) { - this._dimOmitted = dimensionOmitted; - if (!dimensionOmitted) { - return; - } - if (!this._dimNameMap) { - this._dimNameMap = ensureSourceDimNameMap(this.source); - } - }; - SeriesDataSchema2.prototype.getSourceDimensionIndex = function(dimName) { - return retrieve2(this._dimNameMap.get(dimName), -1); - }; - SeriesDataSchema2.prototype.getSourceDimension = function(dimIndex) { - var dimensionsDefine = this.source.dimensionsDefine; - if (dimensionsDefine) { - return dimensionsDefine[dimIndex]; - } - }; - SeriesDataSchema2.prototype.makeStoreSchema = function() { - var dimCount = this._fullDimCount; - var willRetrieveDataByName = shouldRetrieveDataByName(this.source); - var makeHashStrict = !shouldOmitUnusedDimensions(dimCount); - var dimHash = ""; - var dims = []; - for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < dimCount; fullDimIdx++) { - var property = void 0; - var type = void 0; - var ordinalMeta = void 0; - var seriesDimDef = this.dimensions[seriesDimIdx]; - if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) { - property = willRetrieveDataByName ? seriesDimDef.name : null; - type = seriesDimDef.type; - ordinalMeta = seriesDimDef.ordinalMeta; - seriesDimIdx++; - } else { - var sourceDimDef = this.getSourceDimension(fullDimIdx); - if (sourceDimDef) { - property = willRetrieveDataByName ? sourceDimDef.name : null; - type = sourceDimDef.type; - } - } - dims.push({ - property, - type, - ordinalMeta - }); - if (willRetrieveDataByName && property != null && (!seriesDimDef || !seriesDimDef.isCalculationCoord)) { - dimHash += makeHashStrict ? property.replace(/\`/g, "`1").replace(/\$/g, "`2") : property; - } - dimHash += "$"; - dimHash += dimTypeShort[type] || "f"; - if (ordinalMeta) { - dimHash += ordinalMeta.uid; - } - dimHash += "$"; - } - var source = this.source; - var hash = [source.seriesLayoutBy, source.startIndex, dimHash].join("$$"); - return { - dimensions: dims, - hash - }; - }; - SeriesDataSchema2.prototype.makeOutputDimensionNames = function() { - var result = []; - for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < this._fullDimCount; fullDimIdx++) { - var name_1 = void 0; - var seriesDimDef = this.dimensions[seriesDimIdx]; - if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) { - if (!seriesDimDef.isCalculationCoord) { - name_1 = seriesDimDef.name; - } - seriesDimIdx++; - } else { - var sourceDimDef = this.getSourceDimension(fullDimIdx); - if (sourceDimDef) { - name_1 = sourceDimDef.name; - } - } - result.push(name_1); - } - return result; - }; - SeriesDataSchema2.prototype.appendCalculationDimension = function(dimDef) { - this.dimensions.push(dimDef); - dimDef.isCalculationCoord = true; - this._fullDimCount++; - this._updateDimOmitted(true); - }; - return SeriesDataSchema2; - }() - ); - function isSeriesDataSchema(schema) { - return schema instanceof SeriesDataSchema; - } - function createDimNameMap(dimsDef) { - var dataDimNameMap = createHashMap(); - for (var i = 0; i < (dimsDef || []).length; i++) { - var dimDefItemRaw = dimsDef[i]; - var userDimName = isObject(dimDefItemRaw) ? dimDefItemRaw.name : dimDefItemRaw; - if (userDimName != null && dataDimNameMap.get(userDimName) == null) { - dataDimNameMap.set(userDimName, i); - } - } - return dataDimNameMap; - } - function ensureSourceDimNameMap(source) { - var innerSource = inner5(source); - return innerSource.dimNameMap || (innerSource.dimNameMap = createDimNameMap(source.dimensionsDefine)); - } - function shouldOmitUnusedDimensions(dimCount) { - return dimCount > 30; - } - - // node_modules/echarts/lib/data/SeriesData.js - var isObject3 = isObject; - var map2 = map; - var CtorInt32Array2 = typeof Int32Array === "undefined" ? Array : Int32Array; - var ID_PREFIX = "e\0\0"; - var INDEX_NOT_FOUND = -1; - var TRANSFERABLE_PROPERTIES = ["hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_dimSummary", "userOutput", "_rawData", "_dimValueGetter", "_nameDimIdx", "_idDimIdx", "_nameRepeatCount"]; - var CLONE_PROPERTIES = ["_approximateExtent"]; - var prepareInvertedIndex; - var getId; - var getIdNameFromStore; - var normalizeDimensions; - var transferProperties; - var cloneListForMapAndSample; - var makeIdFromName; - var SeriesData = ( - /** @class */ - function() { - function SeriesData2(dimensionsInput, hostModel) { - this.type = "list"; - this._dimOmitted = false; - this._nameList = []; - this._idList = []; - this._visual = {}; - this._layout = {}; - this._itemVisuals = []; - this._itemLayouts = []; - this._graphicEls = []; - this._approximateExtent = {}; - this._calculationInfo = {}; - this.hasItemOption = false; - this.TRANSFERABLE_METHODS = ["cloneShallow", "downSample", "minmaxDownSample", "lttbDownSample", "map"]; - this.CHANGABLE_METHODS = ["filterSelf", "selectRange"]; - this.DOWNSAMPLE_METHODS = ["downSample", "minmaxDownSample", "lttbDownSample"]; - var dimensions; - var assignStoreDimIdx = false; - if (isSeriesDataSchema(dimensionsInput)) { - dimensions = dimensionsInput.dimensions; - this._dimOmitted = dimensionsInput.isDimensionOmitted(); - this._schema = dimensionsInput; - } else { - assignStoreDimIdx = true; - dimensions = dimensionsInput; - } - dimensions = dimensions || ["x", "y"]; - var dimensionInfos = {}; - var dimensionNames = []; - var invertedIndicesMap = {}; - var needsHasOwn = false; - var emptyObj = {}; - for (var i = 0; i < dimensions.length; i++) { - var dimInfoInput = dimensions[i]; - var dimensionInfo = isString(dimInfoInput) ? new SeriesDimensionDefine_default({ - name: dimInfoInput - }) : !(dimInfoInput instanceof SeriesDimensionDefine_default) ? new SeriesDimensionDefine_default(dimInfoInput) : dimInfoInput; - var dimensionName = dimensionInfo.name; - dimensionInfo.type = dimensionInfo.type || "float"; - if (!dimensionInfo.coordDim) { - dimensionInfo.coordDim = dimensionName; - dimensionInfo.coordDimIndex = 0; - } - var otherDims = dimensionInfo.otherDims = dimensionInfo.otherDims || {}; - dimensionNames.push(dimensionName); - dimensionInfos[dimensionName] = dimensionInfo; - if (emptyObj[dimensionName] != null) { - needsHasOwn = true; - } - if (dimensionInfo.createInvertedIndices) { - invertedIndicesMap[dimensionName] = []; - } - if (otherDims.itemName === 0) { - this._nameDimIdx = i; - } - if (otherDims.itemId === 0) { - this._idDimIdx = i; - } - if (true) { - assert(assignStoreDimIdx || dimensionInfo.storeDimIndex >= 0); - } - if (assignStoreDimIdx) { - dimensionInfo.storeDimIndex = i; - } - } - this.dimensions = dimensionNames; - this._dimInfos = dimensionInfos; - this._initGetDimensionInfo(needsHasOwn); - this.hostModel = hostModel; - this._invertedIndicesMap = invertedIndicesMap; - if (this._dimOmitted) { - var dimIdxToName_1 = this._dimIdxToName = createHashMap(); - each(dimensionNames, function(dimName) { - dimIdxToName_1.set(dimensionInfos[dimName].storeDimIndex, dimName); - }); - } - } - SeriesData2.prototype.getDimension = function(dim) { - var dimIdx = this._recognizeDimIndex(dim); - if (dimIdx == null) { - return dim; - } - dimIdx = dim; - if (!this._dimOmitted) { - return this.dimensions[dimIdx]; - } - var dimName = this._dimIdxToName.get(dimIdx); - if (dimName != null) { - return dimName; - } - var sourceDimDef = this._schema.getSourceDimension(dimIdx); - if (sourceDimDef) { - return sourceDimDef.name; - } - }; - SeriesData2.prototype.getDimensionIndex = function(dim) { - var dimIdx = this._recognizeDimIndex(dim); - if (dimIdx != null) { - return dimIdx; - } - if (dim == null) { - return -1; - } - var dimInfo = this._getDimInfo(dim); - return dimInfo ? dimInfo.storeDimIndex : this._dimOmitted ? this._schema.getSourceDimensionIndex(dim) : -1; - }; - SeriesData2.prototype._recognizeDimIndex = function(dim) { - if (isNumber(dim) || dim != null && !isNaN(dim) && !this._getDimInfo(dim) && (!this._dimOmitted || this._schema.getSourceDimensionIndex(dim) < 0)) { - return +dim; - } - }; - SeriesData2.prototype._getStoreDimIndex = function(dim) { - var dimIdx = this.getDimensionIndex(dim); - if (true) { - if (dimIdx == null) { - throw new Error("Unknown dimension " + dim); - } - } - return dimIdx; - }; - SeriesData2.prototype.getDimensionInfo = function(dim) { - return this._getDimInfo(this.getDimension(dim)); - }; - SeriesData2.prototype._initGetDimensionInfo = function(needsHasOwn) { - var dimensionInfos = this._dimInfos; - this._getDimInfo = needsHasOwn ? function(dimName) { - return dimensionInfos.hasOwnProperty(dimName) ? dimensionInfos[dimName] : void 0; - } : function(dimName) { - return dimensionInfos[dimName]; - }; - }; - SeriesData2.prototype.getDimensionsOnCoord = function() { - return this._dimSummary.dataDimsOnCoord.slice(); - }; - SeriesData2.prototype.mapDimension = function(coordDim, idx) { - var dimensionsSummary = this._dimSummary; - if (idx == null) { - return dimensionsSummary.encodeFirstDimNotExtra[coordDim]; - } - var dims = dimensionsSummary.encode[coordDim]; - return dims ? dims[idx] : null; - }; - SeriesData2.prototype.mapDimensionsAll = function(coordDim) { - var dimensionsSummary = this._dimSummary; - var dims = dimensionsSummary.encode[coordDim]; - return (dims || []).slice(); - }; - SeriesData2.prototype.getStore = function() { - return this._store; - }; - SeriesData2.prototype.initData = function(data, nameList, dimValueGetter) { - var _this = this; - var store; - if (data instanceof DataStore_default) { - store = data; - } - if (!store) { - var dimensions = this.dimensions; - var provider = isSourceInstance(data) || isArrayLike(data) ? new DefaultDataProvider(data, dimensions.length) : data; - store = new DataStore_default(); - var dimensionInfos = map2(dimensions, function(dimName) { - return { - type: _this._dimInfos[dimName].type, - property: dimName - }; - }); - store.initData(provider, dimensionInfos, dimValueGetter); - } - this._store = store; - this._nameList = (nameList || []).slice(); - this._idList = []; - this._nameRepeatCount = {}; - this._doInit(0, store.count()); - this._dimSummary = summarizeDimensions(this, this._schema); - this.userOutput = this._dimSummary.userOutput; - }; - SeriesData2.prototype.appendData = function(data) { - var range = this._store.appendData(data); - this._doInit(range[0], range[1]); - }; - SeriesData2.prototype.appendValues = function(values, names) { - var _a2 = this._store.appendValues(values, names && names.length), start3 = _a2.start, end2 = _a2.end; - var shouldMakeIdFromName = this._shouldMakeIdFromName(); - this._updateOrdinalMeta(); - if (names) { - for (var idx = start3; idx < end2; idx++) { - var sourceIdx = idx - start3; - this._nameList[idx] = names[sourceIdx]; - if (shouldMakeIdFromName) { - makeIdFromName(this, idx); - } - } - } - }; - SeriesData2.prototype._updateOrdinalMeta = function() { - var store = this._store; - var dimensions = this.dimensions; - for (var i = 0; i < dimensions.length; i++) { - var dimInfo = this._dimInfos[dimensions[i]]; - if (dimInfo.ordinalMeta) { - store.collectOrdinalMeta(dimInfo.storeDimIndex, dimInfo.ordinalMeta); - } - } - }; - SeriesData2.prototype._shouldMakeIdFromName = function() { - var provider = this._store.getProvider(); - return this._idDimIdx == null && provider.getSource().sourceFormat !== SOURCE_FORMAT_TYPED_ARRAY && !provider.fillStorage; - }; - SeriesData2.prototype._doInit = function(start3, end2) { - if (start3 >= end2) { - return; - } - var store = this._store; - var provider = store.getProvider(); - this._updateOrdinalMeta(); - var nameList = this._nameList; - var idList = this._idList; - var sourceFormat = provider.getSource().sourceFormat; - var isFormatOriginal = sourceFormat === SOURCE_FORMAT_ORIGINAL; - if (isFormatOriginal && !provider.pure) { - var sharedDataItem = []; - for (var idx = start3; idx < end2; idx++) { - var dataItem = provider.getItem(idx, sharedDataItem); - if (!this.hasItemOption && isDataItemOption(dataItem)) { - this.hasItemOption = true; - } - if (dataItem) { - var itemName = dataItem.name; - if (nameList[idx] == null && itemName != null) { - nameList[idx] = convertOptionIdName(itemName, null); - } - var itemId = dataItem.id; - if (idList[idx] == null && itemId != null) { - idList[idx] = convertOptionIdName(itemId, null); - } - } - } - } - if (this._shouldMakeIdFromName()) { - for (var idx = start3; idx < end2; idx++) { - makeIdFromName(this, idx); - } - } - prepareInvertedIndex(this); - }; - SeriesData2.prototype.getApproximateExtent = function(dim) { - return this._approximateExtent[dim] || this._store.getDataExtent(this._getStoreDimIndex(dim)); - }; - SeriesData2.prototype.setApproximateExtent = function(extent3, dim) { - dim = this.getDimension(dim); - this._approximateExtent[dim] = extent3.slice(); - }; - SeriesData2.prototype.getCalculationInfo = function(key) { - return this._calculationInfo[key]; - }; - SeriesData2.prototype.setCalculationInfo = function(key, value) { - isObject3(key) ? extend(this._calculationInfo, key) : this._calculationInfo[key] = value; - }; - SeriesData2.prototype.getName = function(idx) { - var rawIndex = this.getRawIndex(idx); - var name = this._nameList[rawIndex]; - if (name == null && this._nameDimIdx != null) { - name = getIdNameFromStore(this, this._nameDimIdx, rawIndex); - } - if (name == null) { - name = ""; - } - return name; - }; - SeriesData2.prototype._getCategory = function(dimIdx, idx) { - var ordinal = this._store.get(dimIdx, idx); - var ordinalMeta = this._store.getOrdinalMeta(dimIdx); - if (ordinalMeta) { - return ordinalMeta.categories[ordinal]; - } - return ordinal; - }; - SeriesData2.prototype.getId = function(idx) { - return getId(this, this.getRawIndex(idx)); - }; - SeriesData2.prototype.count = function() { - return this._store.count(); - }; - SeriesData2.prototype.get = function(dim, idx) { - var store = this._store; - var dimInfo = this._dimInfos[dim]; - if (dimInfo) { - return store.get(dimInfo.storeDimIndex, idx); - } - }; - SeriesData2.prototype.getByRawIndex = function(dim, rawIdx) { - var store = this._store; - var dimInfo = this._dimInfos[dim]; - if (dimInfo) { - return store.getByRawIndex(dimInfo.storeDimIndex, rawIdx); - } - }; - SeriesData2.prototype.getIndices = function() { - return this._store.getIndices(); - }; - SeriesData2.prototype.getDataExtent = function(dim) { - return this._store.getDataExtent(this._getStoreDimIndex(dim)); - }; - SeriesData2.prototype.getSum = function(dim) { - return this._store.getSum(this._getStoreDimIndex(dim)); - }; - SeriesData2.prototype.getMedian = function(dim) { - return this._store.getMedian(this._getStoreDimIndex(dim)); - }; - SeriesData2.prototype.getValues = function(dimensions, idx) { - var _this = this; - var store = this._store; - return isArray(dimensions) ? store.getValues(map2(dimensions, function(dim) { - return _this._getStoreDimIndex(dim); - }), idx) : store.getValues(dimensions); - }; - SeriesData2.prototype.hasValue = function(idx) { - var dataDimIndicesOnCoord = this._dimSummary.dataDimIndicesOnCoord; - for (var i = 0, len2 = dataDimIndicesOnCoord.length; i < len2; i++) { - if (isNaN(this._store.get(dataDimIndicesOnCoord[i], idx))) { - return false; - } - } - return true; - }; - SeriesData2.prototype.indexOfName = function(name) { - for (var i = 0, len2 = this._store.count(); i < len2; i++) { - if (this.getName(i) === name) { - return i; - } - } - return -1; - }; - SeriesData2.prototype.getRawIndex = function(idx) { - return this._store.getRawIndex(idx); - }; - SeriesData2.prototype.indexOfRawIndex = function(rawIndex) { - return this._store.indexOfRawIndex(rawIndex); - }; - SeriesData2.prototype.rawIndexOf = function(dim, value) { - var invertedIndices = dim && this._invertedIndicesMap[dim]; - if (true) { - if (!invertedIndices) { - throw new Error("Do not supported yet"); - } - } - var rawIndex = invertedIndices && invertedIndices[value]; - if (rawIndex == null || isNaN(rawIndex)) { - return INDEX_NOT_FOUND; - } - return rawIndex; - }; - SeriesData2.prototype.indicesOfNearest = function(dim, value, maxDistance) { - return this._store.indicesOfNearest(this._getStoreDimIndex(dim), value, maxDistance); - }; - SeriesData2.prototype.each = function(dims, cb, ctx) { - "use strict"; - if (isFunction(dims)) { - ctx = cb; - cb = dims; - dims = []; - } - var fCtx = ctx || this; - var dimIndices = map2(normalizeDimensions(dims), this._getStoreDimIndex, this); - this._store.each(dimIndices, fCtx ? bind(cb, fCtx) : cb); - }; - SeriesData2.prototype.filterSelf = function(dims, cb, ctx) { - "use strict"; - if (isFunction(dims)) { - ctx = cb; - cb = dims; - dims = []; - } - var fCtx = ctx || this; - var dimIndices = map2(normalizeDimensions(dims), this._getStoreDimIndex, this); - this._store = this._store.filter(dimIndices, fCtx ? bind(cb, fCtx) : cb); - return this; - }; - SeriesData2.prototype.selectRange = function(range) { - "use strict"; - var _this = this; - var innerRange = {}; - var dims = keys(range); - var dimIndices = []; - each(dims, function(dim) { - var dimIdx = _this._getStoreDimIndex(dim); - innerRange[dimIdx] = range[dim]; - dimIndices.push(dimIdx); - }); - this._store = this._store.selectRange(innerRange); - return this; - }; - SeriesData2.prototype.mapArray = function(dims, cb, ctx) { - "use strict"; - if (isFunction(dims)) { - ctx = cb; - cb = dims; - dims = []; - } - ctx = ctx || this; - var result = []; - this.each(dims, function() { - result.push(cb && cb.apply(this, arguments)); - }, ctx); - return result; - }; - SeriesData2.prototype.map = function(dims, cb, ctx, ctxCompat) { - "use strict"; - var fCtx = ctx || ctxCompat || this; - var dimIndices = map2(normalizeDimensions(dims), this._getStoreDimIndex, this); - var list = cloneListForMapAndSample(this); - list._store = this._store.map(dimIndices, fCtx ? bind(cb, fCtx) : cb); - return list; - }; - SeriesData2.prototype.modify = function(dims, cb, ctx, ctxCompat) { - var _this = this; - var fCtx = ctx || ctxCompat || this; - if (true) { - each(normalizeDimensions(dims), function(dim) { - var dimInfo = _this.getDimensionInfo(dim); - if (!dimInfo.isCalculationCoord) { - console.error("Danger: only stack dimension can be modified"); - } - }); - } - var dimIndices = map2(normalizeDimensions(dims), this._getStoreDimIndex, this); - this._store.modify(dimIndices, fCtx ? bind(cb, fCtx) : cb); - }; - SeriesData2.prototype.downSample = function(dimension, rate, sampleValue, sampleIndex) { - var list = cloneListForMapAndSample(this); - list._store = this._store.downSample(this._getStoreDimIndex(dimension), rate, sampleValue, sampleIndex); - return list; - }; - SeriesData2.prototype.minmaxDownSample = function(valueDimension, rate) { - var list = cloneListForMapAndSample(this); - list._store = this._store.minmaxDownSample(this._getStoreDimIndex(valueDimension), rate); - return list; - }; - SeriesData2.prototype.lttbDownSample = function(valueDimension, rate) { - var list = cloneListForMapAndSample(this); - list._store = this._store.lttbDownSample(this._getStoreDimIndex(valueDimension), rate); - return list; - }; - SeriesData2.prototype.getRawDataItem = function(idx) { - return this._store.getRawDataItem(idx); - }; - SeriesData2.prototype.getItemModel = function(idx) { - var hostModel = this.hostModel; - var dataItem = this.getRawDataItem(idx); - return new Model_default(dataItem, hostModel, hostModel && hostModel.ecModel); - }; - SeriesData2.prototype.diff = function(otherList) { - var thisList = this; - return new DataDiffer_default(otherList ? otherList.getStore().getIndices() : [], this.getStore().getIndices(), function(idx) { - return getId(otherList, idx); - }, function(idx) { - return getId(thisList, idx); - }); - }; - SeriesData2.prototype.getVisual = function(key) { - var visual = this._visual; - return visual && visual[key]; - }; - SeriesData2.prototype.setVisual = function(kvObj, val) { - this._visual = this._visual || {}; - if (isObject3(kvObj)) { - extend(this._visual, kvObj); - } else { - this._visual[kvObj] = val; - } - }; - SeriesData2.prototype.getItemVisual = function(idx, key) { - var itemVisual = this._itemVisuals[idx]; - var val = itemVisual && itemVisual[key]; - if (val == null) { - return this.getVisual(key); - } - return val; - }; - SeriesData2.prototype.hasItemVisual = function() { - return this._itemVisuals.length > 0; - }; - SeriesData2.prototype.ensureUniqueItemVisual = function(idx, key) { - var itemVisuals = this._itemVisuals; - var itemVisual = itemVisuals[idx]; - if (!itemVisual) { - itemVisual = itemVisuals[idx] = {}; - } - var val = itemVisual[key]; - if (val == null) { - val = this.getVisual(key); - if (isArray(val)) { - val = val.slice(); - } else if (isObject3(val)) { - val = extend({}, val); - } - itemVisual[key] = val; - } - return val; - }; - SeriesData2.prototype.setItemVisual = function(idx, key, value) { - var itemVisual = this._itemVisuals[idx] || {}; - this._itemVisuals[idx] = itemVisual; - if (isObject3(key)) { - extend(itemVisual, key); - } else { - itemVisual[key] = value; - } - }; - SeriesData2.prototype.clearAllVisual = function() { - this._visual = {}; - this._itemVisuals = []; - }; - SeriesData2.prototype.setLayout = function(key, val) { - isObject3(key) ? extend(this._layout, key) : this._layout[key] = val; - }; - SeriesData2.prototype.getLayout = function(key) { - return this._layout[key]; - }; - SeriesData2.prototype.getItemLayout = function(idx) { - return this._itemLayouts[idx]; - }; - SeriesData2.prototype.setItemLayout = function(idx, layout5, merge2) { - this._itemLayouts[idx] = merge2 ? extend(this._itemLayouts[idx] || {}, layout5) : layout5; - }; - SeriesData2.prototype.clearItemLayouts = function() { - this._itemLayouts.length = 0; - }; - SeriesData2.prototype.setItemGraphicEl = function(idx, el) { - var seriesIndex = this.hostModel && this.hostModel.seriesIndex; - setCommonECData(seriesIndex, this.dataType, idx, el); - this._graphicEls[idx] = el; - }; - SeriesData2.prototype.getItemGraphicEl = function(idx) { - return this._graphicEls[idx]; - }; - SeriesData2.prototype.eachItemGraphicEl = function(cb, context) { - each(this._graphicEls, function(el, idx) { - if (el) { - cb && cb.call(context, el, idx); - } - }); - }; - SeriesData2.prototype.cloneShallow = function(list) { - if (!list) { - list = new SeriesData2(this._schema ? this._schema : map2(this.dimensions, this._getDimInfo, this), this.hostModel); - } - transferProperties(list, this); - list._store = this._store; - return list; - }; - SeriesData2.prototype.wrapMethod = function(methodName, injectFunction) { - var originalMethod = this[methodName]; - if (!isFunction(originalMethod)) { - return; - } - this.__wrappedMethods = this.__wrappedMethods || []; - this.__wrappedMethods.push(methodName); - this[methodName] = function() { - var res = originalMethod.apply(this, arguments); - return injectFunction.apply(this, [res].concat(slice(arguments))); - }; - }; - SeriesData2.internalField = function() { - prepareInvertedIndex = function(data) { - var invertedIndicesMap = data._invertedIndicesMap; - each(invertedIndicesMap, function(invertedIndices, dim) { - var dimInfo = data._dimInfos[dim]; - var ordinalMeta = dimInfo.ordinalMeta; - var store = data._store; - if (ordinalMeta) { - invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array2(ordinalMeta.categories.length); - for (var i = 0; i < invertedIndices.length; i++) { - invertedIndices[i] = INDEX_NOT_FOUND; - } - for (var i = 0; i < store.count(); i++) { - invertedIndices[store.get(dimInfo.storeDimIndex, i)] = i; - } - } - }); - }; - getIdNameFromStore = function(data, dimIdx, idx) { - return convertOptionIdName(data._getCategory(dimIdx, idx), null); - }; - getId = function(data, rawIndex) { - var id = data._idList[rawIndex]; - if (id == null && data._idDimIdx != null) { - id = getIdNameFromStore(data, data._idDimIdx, rawIndex); - } - if (id == null) { - id = ID_PREFIX + rawIndex; - } - return id; - }; - normalizeDimensions = function(dimensions) { - if (!isArray(dimensions)) { - dimensions = dimensions != null ? [dimensions] : []; - } - return dimensions; - }; - cloneListForMapAndSample = function(original) { - var list = new SeriesData2(original._schema ? original._schema : map2(original.dimensions, original._getDimInfo, original), original.hostModel); - transferProperties(list, original); - return list; - }; - transferProperties = function(target, source) { - each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function(propName) { - if (source.hasOwnProperty(propName)) { - target[propName] = source[propName]; - } - }); - target.__wrappedMethods = source.__wrappedMethods; - each(CLONE_PROPERTIES, function(propName) { - target[propName] = clone(source[propName]); - }); - target._calculationInfo = extend({}, source._calculationInfo); - }; - makeIdFromName = function(data, idx) { - var nameList = data._nameList; - var idList = data._idList; - var nameDimIdx = data._nameDimIdx; - var idDimIdx = data._idDimIdx; - var name = nameList[idx]; - var id = idList[idx]; - if (name == null && nameDimIdx != null) { - nameList[idx] = name = getIdNameFromStore(data, nameDimIdx, idx); - } - if (id == null && idDimIdx != null) { - idList[idx] = id = getIdNameFromStore(data, idDimIdx, idx); - } - if (id == null && name != null) { - var nameRepeatCount = data._nameRepeatCount; - var nmCnt = nameRepeatCount[name] = (nameRepeatCount[name] || 0) + 1; - id = name; - if (nmCnt > 1) { - id += "__ec__" + nmCnt; - } - idList[idx] = id; - } - }; - }(); - return SeriesData2; - }() - ); - var SeriesData_default = SeriesData; - - // node_modules/echarts/lib/export/api/helper.js - var helper_exports2 = {}; - __export(helper_exports2, { - createDimensions: () => createDimensions, - createList: () => createList, - createScale: () => createScale, - createSymbol: () => createSymbol, - createTextStyle: () => createTextStyle2, - dataStack: () => dataStack2, - enableHoverEmphasis: () => enableHoverEmphasis, - getECData: () => getECData, - getLayoutRect: () => getLayoutRect, - mixinAxisModelCommonMethods: () => mixinAxisModelCommonMethods - }); - - // node_modules/echarts/lib/data/helper/createDimensions.js - function createDimensions(source, opt) { - return prepareSeriesDataSchema(source, opt).dimensions; - } - function prepareSeriesDataSchema(source, opt) { - if (!isSourceInstance(source)) { - source = createSourceFromSeriesDataOption(source); - } - opt = opt || {}; - var sysDims = opt.coordDimensions || []; - var dimsDef = opt.dimensionsDefine || source.dimensionsDefine || []; - var coordDimNameMap = createHashMap(); - var resultList = []; - var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimensionsCount); - var omitUnusedDimensions = opt.canOmitUnusedDimensions && shouldOmitUnusedDimensions(dimCount); - var isUsingSourceDimensionsDef = dimsDef === source.dimensionsDefine; - var dataDimNameMap = isUsingSourceDimensionsDef ? ensureSourceDimNameMap(source) : createDimNameMap(dimsDef); - var encodeDef = opt.encodeDefine; - if (!encodeDef && opt.encodeDefaulter) { - encodeDef = opt.encodeDefaulter(source, dimCount); - } - var encodeDefMap = createHashMap(encodeDef); - var indicesMap = new CtorInt32Array(dimCount); - for (var i = 0; i < indicesMap.length; i++) { - indicesMap[i] = -1; - } - function getResultItem(dimIdx) { - var idx = indicesMap[dimIdx]; - if (idx < 0) { - var dimDefItemRaw = dimsDef[dimIdx]; - var dimDefItem = isObject(dimDefItemRaw) ? dimDefItemRaw : { - name: dimDefItemRaw - }; - var resultItem2 = new SeriesDimensionDefine_default(); - var userDimName = dimDefItem.name; - if (userDimName != null && dataDimNameMap.get(userDimName) != null) { - resultItem2.name = resultItem2.displayName = userDimName; - } - dimDefItem.type != null && (resultItem2.type = dimDefItem.type); - dimDefItem.displayName != null && (resultItem2.displayName = dimDefItem.displayName); - var newIdx = resultList.length; - indicesMap[dimIdx] = newIdx; - resultItem2.storeDimIndex = dimIdx; - resultList.push(resultItem2); - return resultItem2; - } - return resultList[idx]; - } - if (!omitUnusedDimensions) { - for (var i = 0; i < dimCount; i++) { - getResultItem(i); - } - } - encodeDefMap.each(function(dataDimsRaw, coordDim2) { - var dataDims = normalizeToArray(dataDimsRaw).slice(); - if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) { - encodeDefMap.set(coordDim2, false); - return; - } - var validDataDims = encodeDefMap.set(coordDim2, []); - each(dataDims, function(resultDimIdxOrName, idx) { - var resultDimIdx2 = isString(resultDimIdxOrName) ? dataDimNameMap.get(resultDimIdxOrName) : resultDimIdxOrName; - if (resultDimIdx2 != null && resultDimIdx2 < dimCount) { - validDataDims[idx] = resultDimIdx2; - applyDim(getResultItem(resultDimIdx2), coordDim2, idx); - } - }); - }); - var availDimIdx = 0; - each(sysDims, function(sysDimItemRaw) { - var coordDim2; - var sysDimItemDimsDef; - var sysDimItemOtherDims; - var sysDimItem; - if (isString(sysDimItemRaw)) { - coordDim2 = sysDimItemRaw; - sysDimItem = {}; - } else { - sysDimItem = sysDimItemRaw; - coordDim2 = sysDimItem.name; - var ordinalMeta = sysDimItem.ordinalMeta; - sysDimItem.ordinalMeta = null; - sysDimItem = extend({}, sysDimItem); - sysDimItem.ordinalMeta = ordinalMeta; - sysDimItemDimsDef = sysDimItem.dimsDef; - sysDimItemOtherDims = sysDimItem.otherDims; - sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null; - } - var dataDims = encodeDefMap.get(coordDim2); - if (dataDims === false) { - return; - } - dataDims = normalizeToArray(dataDims); - if (!dataDims.length) { - for (var i2 = 0; i2 < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i2++) { - while (availDimIdx < dimCount && getResultItem(availDimIdx).coordDim != null) { - availDimIdx++; - } - availDimIdx < dimCount && dataDims.push(availDimIdx++); - } - } - each(dataDims, function(resultDimIdx2, coordDimIndex) { - var resultItem2 = getResultItem(resultDimIdx2); - if (isUsingSourceDimensionsDef && sysDimItem.type != null) { - resultItem2.type = sysDimItem.type; - } - applyDim(defaults(resultItem2, sysDimItem), coordDim2, coordDimIndex); - if (resultItem2.name == null && sysDimItemDimsDef) { - var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex]; - !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = { - name: sysDimItemDimsDefItem - }); - resultItem2.name = resultItem2.displayName = sysDimItemDimsDefItem.name; - resultItem2.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip; - } - sysDimItemOtherDims && defaults(resultItem2.otherDims, sysDimItemOtherDims); - }); - }); - function applyDim(resultItem2, coordDim2, coordDimIndex) { - if (VISUAL_DIMENSIONS.get(coordDim2) != null) { - resultItem2.otherDims[coordDim2] = coordDimIndex; - } else { - resultItem2.coordDim = coordDim2; - resultItem2.coordDimIndex = coordDimIndex; - coordDimNameMap.set(coordDim2, true); - } - } - var generateCoord = opt.generateCoord; - var generateCoordCount = opt.generateCoordCount; - var fromZero = generateCoordCount != null; - generateCoordCount = generateCoord ? generateCoordCount || 1 : 0; - var extra = generateCoord || "value"; - function ifNoNameFillWithCoordName(resultItem2) { - if (resultItem2.name == null) { - resultItem2.name = resultItem2.coordDim; - } - } - if (!omitUnusedDimensions) { - for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) { - var resultItem = getResultItem(resultDimIdx); - var coordDim = resultItem.coordDim; - if (coordDim == null) { - resultItem.coordDim = genCoordDimName(extra, coordDimNameMap, fromZero); - resultItem.coordDimIndex = 0; - if (!generateCoord || generateCoordCount <= 0) { - resultItem.isExtraCoord = true; - } - generateCoordCount--; - } - ifNoNameFillWithCoordName(resultItem); - if (resultItem.type == null && (guessOrdinal(source, resultDimIdx) === BE_ORDINAL.Must || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) { - resultItem.type = "ordinal"; - } - } - } else { - each(resultList, function(resultItem2) { - ifNoNameFillWithCoordName(resultItem2); - }); - resultList.sort(function(item0, item1) { - return item0.storeDimIndex - item1.storeDimIndex; - }); - } - removeDuplication(resultList); - return new SeriesDataSchema({ - source, - dimensions: resultList, - fullDimensionCount: dimCount, - dimensionOmitted: omitUnusedDimensions - }); - } - function removeDuplication(result) { - var duplicationMap = createHashMap(); - for (var i = 0; i < result.length; i++) { - var dim = result[i]; - var dimOriginalName = dim.name; - var count2 = duplicationMap.get(dimOriginalName) || 0; - if (count2 > 0) { - dim.name = dimOriginalName + (count2 - 1); - } - count2++; - duplicationMap.set(dimOriginalName, count2); - } - } - function getDimCount(source, sysDims, dimsDef, optDimCount) { - var dimCount = Math.max(source.dimensionsDetectedCount || 1, sysDims.length, dimsDef.length, optDimCount || 0); - each(sysDims, function(sysDimItem) { - var sysDimItemDimsDef; - if (isObject(sysDimItem) && (sysDimItemDimsDef = sysDimItem.dimsDef)) { - dimCount = Math.max(dimCount, sysDimItemDimsDef.length); - } - }); - return dimCount; - } - function genCoordDimName(name, map3, fromZero) { - if (fromZero || map3.hasKey(name)) { - var i = 0; - while (map3.hasKey(name + i)) { - i++; - } - name += i; - } - map3.set(name, true); - return name; - } - - // node_modules/echarts/lib/model/referHelper.js - var CoordSysInfo = ( - /** @class */ - /* @__PURE__ */ function() { - function CoordSysInfo2(coordSysName) { - this.coordSysDims = []; - this.axisMap = createHashMap(); - this.categoryAxisMap = createHashMap(); - this.coordSysName = coordSysName; - } - return CoordSysInfo2; - }() - ); - function getCoordSysInfoBySeries(seriesModel) { - var coordSysName = seriesModel.get("coordinateSystem"); - var result = new CoordSysInfo(coordSysName); - var fetch3 = fetchers[coordSysName]; - if (fetch3) { - fetch3(seriesModel, result, result.axisMap, result.categoryAxisMap); - return result; - } - } - var fetchers = { - cartesian2d: function(seriesModel, result, axisMap, categoryAxisMap) { - var xAxisModel = seriesModel.getReferringComponents("xAxis", SINGLE_REFERRING).models[0]; - var yAxisModel = seriesModel.getReferringComponents("yAxis", SINGLE_REFERRING).models[0]; - if (true) { - if (!xAxisModel) { - throw new Error('xAxis "' + retrieve(seriesModel.get("xAxisIndex"), seriesModel.get("xAxisId"), 0) + '" not found'); - } - if (!yAxisModel) { - throw new Error('yAxis "' + retrieve(seriesModel.get("xAxisIndex"), seriesModel.get("yAxisId"), 0) + '" not found'); - } - } - result.coordSysDims = ["x", "y"]; - axisMap.set("x", xAxisModel); - axisMap.set("y", yAxisModel); - if (isCategory(xAxisModel)) { - categoryAxisMap.set("x", xAxisModel); - result.firstCategoryDimIndex = 0; - } - if (isCategory(yAxisModel)) { - categoryAxisMap.set("y", yAxisModel); - result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1); - } - }, - singleAxis: function(seriesModel, result, axisMap, categoryAxisMap) { - var singleAxisModel = seriesModel.getReferringComponents("singleAxis", SINGLE_REFERRING).models[0]; - if (true) { - if (!singleAxisModel) { - throw new Error("singleAxis should be specified."); - } - } - result.coordSysDims = ["single"]; - axisMap.set("single", singleAxisModel); - if (isCategory(singleAxisModel)) { - categoryAxisMap.set("single", singleAxisModel); - result.firstCategoryDimIndex = 0; - } - }, - polar: function(seriesModel, result, axisMap, categoryAxisMap) { - var polarModel = seriesModel.getReferringComponents("polar", SINGLE_REFERRING).models[0]; - var radiusAxisModel = polarModel.findAxisModel("radiusAxis"); - var angleAxisModel = polarModel.findAxisModel("angleAxis"); - if (true) { - if (!angleAxisModel) { - throw new Error("angleAxis option not found"); - } - if (!radiusAxisModel) { - throw new Error("radiusAxis option not found"); - } - } - result.coordSysDims = ["radius", "angle"]; - axisMap.set("radius", radiusAxisModel); - axisMap.set("angle", angleAxisModel); - if (isCategory(radiusAxisModel)) { - categoryAxisMap.set("radius", radiusAxisModel); - result.firstCategoryDimIndex = 0; - } - if (isCategory(angleAxisModel)) { - categoryAxisMap.set("angle", angleAxisModel); - result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1); - } - }, - geo: function(seriesModel, result, axisMap, categoryAxisMap) { - result.coordSysDims = ["lng", "lat"]; - }, - parallel: function(seriesModel, result, axisMap, categoryAxisMap) { - var ecModel = seriesModel.ecModel; - var parallelModel = ecModel.getComponent("parallel", seriesModel.get("parallelIndex")); - var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice(); - each(parallelModel.parallelAxisIndex, function(axisIndex, index) { - var axisModel = ecModel.getComponent("parallelAxis", axisIndex); - var axisDim = coordSysDims[index]; - axisMap.set(axisDim, axisModel); - if (isCategory(axisModel)) { - categoryAxisMap.set(axisDim, axisModel); - if (result.firstCategoryDimIndex == null) { - result.firstCategoryDimIndex = index; - } - } - }); - } - }; - function isCategory(axisModel) { - return axisModel.get("type") === "category"; - } - - // node_modules/echarts/lib/data/helper/dataStackHelper.js - function enableDataStack(seriesModel, dimensionsInput, opt) { - opt = opt || {}; - var byIndex = opt.byIndex; - var stackedCoordDimension = opt.stackedCoordDimension; - var dimensionDefineList; - var schema; - var store; - if (isLegacyDimensionsInput(dimensionsInput)) { - dimensionDefineList = dimensionsInput; - } else { - schema = dimensionsInput.schema; - dimensionDefineList = schema.dimensions; - store = dimensionsInput.store; - } - var mayStack = !!(seriesModel && seriesModel.get("stack")); - var stackedByDimInfo; - var stackedDimInfo; - var stackResultDimension; - var stackedOverDimension; - each(dimensionDefineList, function(dimensionInfo, index) { - if (isString(dimensionInfo)) { - dimensionDefineList[index] = dimensionInfo = { - name: dimensionInfo - }; - } - if (mayStack && !dimensionInfo.isExtraCoord) { - if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) { - stackedByDimInfo = dimensionInfo; - } - if (!stackedDimInfo && dimensionInfo.type !== "ordinal" && dimensionInfo.type !== "time" && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) { - stackedDimInfo = dimensionInfo; - } - } - }); - if (stackedDimInfo && !byIndex && !stackedByDimInfo) { - byIndex = true; - } - if (stackedDimInfo) { - stackResultDimension = "__\0ecstackresult_" + seriesModel.id; - stackedOverDimension = "__\0ecstackedover_" + seriesModel.id; - if (stackedByDimInfo) { - stackedByDimInfo.createInvertedIndices = true; - } - var stackedDimCoordDim_1 = stackedDimInfo.coordDim; - var stackedDimType = stackedDimInfo.type; - var stackedDimCoordIndex_1 = 0; - each(dimensionDefineList, function(dimensionInfo) { - if (dimensionInfo.coordDim === stackedDimCoordDim_1) { - stackedDimCoordIndex_1++; - } - }); - var stackedOverDimensionDefine = { - name: stackResultDimension, - coordDim: stackedDimCoordDim_1, - coordDimIndex: stackedDimCoordIndex_1, - type: stackedDimType, - isExtraCoord: true, - isCalculationCoord: true, - storeDimIndex: dimensionDefineList.length - }; - var stackResultDimensionDefine = { - name: stackedOverDimension, - // This dimension contains stack base (generally, 0), so do not set it as - // `stackedDimCoordDim` to avoid extent calculation, consider log scale. - coordDim: stackedOverDimension, - coordDimIndex: stackedDimCoordIndex_1 + 1, - type: stackedDimType, - isExtraCoord: true, - isCalculationCoord: true, - storeDimIndex: dimensionDefineList.length + 1 - }; - if (schema) { - if (store) { - stackedOverDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackedOverDimension, stackedDimType); - stackResultDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackResultDimension, stackedDimType); - } - schema.appendCalculationDimension(stackedOverDimensionDefine); - schema.appendCalculationDimension(stackResultDimensionDefine); - } else { - dimensionDefineList.push(stackedOverDimensionDefine); - dimensionDefineList.push(stackResultDimensionDefine); - } - } - return { - stackedDimension: stackedDimInfo && stackedDimInfo.name, - stackedByDimension: stackedByDimInfo && stackedByDimInfo.name, - isStackedByIndex: byIndex, - stackedOverDimension, - stackResultDimension - }; - } - function isLegacyDimensionsInput(dimensionsInput) { - return !isSeriesDataSchema(dimensionsInput.schema); - } - function isDimensionStacked(data, stackedDim) { - return !!stackedDim && stackedDim === data.getCalculationInfo("stackedDimension"); - } - function getStackedDimension(data, targetDim) { - return isDimensionStacked(data, targetDim) ? data.getCalculationInfo("stackResultDimension") : targetDim; - } - - // node_modules/echarts/lib/chart/helper/createSeriesData.js - function getCoordSysDimDefs(seriesModel, coordSysInfo) { - var coordSysName = seriesModel.get("coordinateSystem"); - var registeredCoordSys = CoordinateSystem_default.get(coordSysName); - var coordSysDimDefs; - if (coordSysInfo && coordSysInfo.coordSysDims) { - coordSysDimDefs = map(coordSysInfo.coordSysDims, function(dim) { - var dimInfo = { - name: dim - }; - var axisModel = coordSysInfo.axisMap.get(dim); - if (axisModel) { - var axisType = axisModel.get("type"); - dimInfo.type = getDimensionTypeByAxis(axisType); - } - return dimInfo; - }); - } - if (!coordSysDimDefs) { - coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ["x", "y"]; - } - return coordSysDimDefs; - } - function injectOrdinalMeta(dimInfoList, createInvertedIndices, coordSysInfo) { - var firstCategoryDimIndex; - var hasNameEncode; - coordSysInfo && each(dimInfoList, function(dimInfo, dimIndex) { - var coordDim = dimInfo.coordDim; - var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim); - if (categoryAxisModel) { - if (firstCategoryDimIndex == null) { - firstCategoryDimIndex = dimIndex; - } - dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta(); - if (createInvertedIndices) { - dimInfo.createInvertedIndices = true; - } - } - if (dimInfo.otherDims.itemName != null) { - hasNameEncode = true; - } - }); - if (!hasNameEncode && firstCategoryDimIndex != null) { - dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0; - } - return firstCategoryDimIndex; - } - function createSeriesData(sourceRaw, seriesModel, opt) { - opt = opt || {}; - var sourceManager = seriesModel.getSourceManager(); - var source; - var isOriginalSource = false; - if (sourceRaw) { - isOriginalSource = true; - source = createSourceFromSeriesDataOption(sourceRaw); - } else { - source = sourceManager.getSource(); - isOriginalSource = source.sourceFormat === SOURCE_FORMAT_ORIGINAL; - } - var coordSysInfo = getCoordSysInfoBySeries(seriesModel); - var coordSysDimDefs = getCoordSysDimDefs(seriesModel, coordSysInfo); - var useEncodeDefaulter = opt.useEncodeDefaulter; - var encodeDefaulter = isFunction(useEncodeDefaulter) ? useEncodeDefaulter : useEncodeDefaulter ? curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null; - var createDimensionOptions = { - coordDimensions: coordSysDimDefs, - generateCoord: opt.generateCoord, - encodeDefine: seriesModel.getEncode(), - encodeDefaulter, - canOmitUnusedDimensions: !isOriginalSource - }; - var schema = prepareSeriesDataSchema(source, createDimensionOptions); - var firstCategoryDimIndex = injectOrdinalMeta(schema.dimensions, opt.createInvertedIndices, coordSysInfo); - var store = !isOriginalSource ? sourceManager.getSharedDataStore(schema) : null; - var stackCalculationInfo = enableDataStack(seriesModel, { - schema, - store - }); - var data = new SeriesData_default(schema, seriesModel); - data.setCalculationInfo(stackCalculationInfo); - var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function(itemOpt, dimName, dataIndex, dimIndex) { - return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex); - } : null; - data.hasItemOption = false; - data.initData( - // Try to reuse the data store in sourceManager if using dataset. - isOriginalSource ? source : store, - null, - dimValueGetter - ); - return data; - } - function isNeedCompleteOrdinalData(source) { - if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) { - var sampleItem = firstDataNotNull(source.data || []); - return !isArray(getDataItemValue(sampleItem)); - } - } - function firstDataNotNull(arr) { - var i = 0; - while (i < arr.length && arr[i] == null) { - i++; - } - return arr[i]; - } - var createSeriesData_default = createSeriesData; - - // node_modules/echarts/lib/scale/Scale.js - var Scale = ( - /** @class */ - function() { - function Scale2(setting) { - this._setting = setting || {}; - this._extent = [Infinity, -Infinity]; - } - Scale2.prototype.getSetting = function(name) { - return this._setting[name]; - }; - Scale2.prototype.unionExtent = function(other) { - var extent3 = this._extent; - other[0] < extent3[0] && (extent3[0] = other[0]); - other[1] > extent3[1] && (extent3[1] = other[1]); - }; - Scale2.prototype.unionExtentFromData = function(data, dim) { - this.unionExtent(data.getApproximateExtent(dim)); - }; - Scale2.prototype.getExtent = function() { - return this._extent.slice(); - }; - Scale2.prototype.setExtent = function(start3, end2) { - var thisExtent = this._extent; - if (!isNaN(start3)) { - thisExtent[0] = start3; - } - if (!isNaN(end2)) { - thisExtent[1] = end2; - } - }; - Scale2.prototype.isInExtentRange = function(value) { - return this._extent[0] <= value && this._extent[1] >= value; - }; - Scale2.prototype.isBlank = function() { - return this._isBlank; - }; - Scale2.prototype.setBlank = function(isBlank) { - this._isBlank = isBlank; - }; - return Scale2; - }() - ); - enableClassManagement(Scale); - var Scale_default = Scale; - - // node_modules/echarts/lib/data/OrdinalMeta.js - var uidBase = 0; - var OrdinalMeta = ( - /** @class */ - function() { - function OrdinalMeta2(opt) { - this.categories = opt.categories || []; - this._needCollect = opt.needCollect; - this._deduplication = opt.deduplication; - this.uid = ++uidBase; - } - OrdinalMeta2.createByAxisModel = function(axisModel) { - var option = axisModel.option; - var data = option.data; - var categories = data && map(data, getName); - return new OrdinalMeta2({ - categories, - needCollect: !categories, - // deduplication is default in axis. - deduplication: option.dedplication !== false - }); - }; - ; - OrdinalMeta2.prototype.getOrdinal = function(category) { - return this._getOrCreateMap().get(category); - }; - OrdinalMeta2.prototype.parseAndCollect = function(category) { - var index; - var needCollect = this._needCollect; - if (!isString(category) && !needCollect) { - return category; - } - if (needCollect && !this._deduplication) { - index = this.categories.length; - this.categories[index] = category; - return index; - } - var map3 = this._getOrCreateMap(); - index = map3.get(category); - if (index == null) { - if (needCollect) { - index = this.categories.length; - this.categories[index] = category; - map3.set(category, index); - } else { - index = NaN; - } - } - return index; - }; - OrdinalMeta2.prototype._getOrCreateMap = function() { - return this._map || (this._map = createHashMap(this.categories)); - }; - return OrdinalMeta2; - }() - ); - function getName(obj) { - if (isObject(obj) && obj.value != null) { - return obj.value; - } else { - return obj + ""; - } - } - var OrdinalMeta_default = OrdinalMeta; - - // node_modules/echarts/lib/scale/helper.js - function isValueNice(val) { - var exp10 = Math.pow(10, quantityExponent(Math.abs(val))); - var f = Math.abs(val / exp10); - return f === 0 || f === 1 || f === 2 || f === 3 || f === 5; - } - function isIntervalOrLogScale(scale4) { - return scale4.type === "interval" || scale4.type === "log"; - } - function intervalScaleNiceTicks(extent3, splitNumber, minInterval, maxInterval) { - var result = {}; - var span = extent3[1] - extent3[0]; - var interval = result.interval = nice(span / splitNumber, true); - if (minInterval != null && interval < minInterval) { - interval = result.interval = minInterval; - } - if (maxInterval != null && interval > maxInterval) { - interval = result.interval = maxInterval; - } - var precision = result.intervalPrecision = getIntervalPrecision(interval); - var niceTickExtent = result.niceTickExtent = [round(Math.ceil(extent3[0] / interval) * interval, precision), round(Math.floor(extent3[1] / interval) * interval, precision)]; - fixExtent(niceTickExtent, extent3); - return result; - } - function increaseInterval(interval) { - var exp10 = Math.pow(10, quantityExponent(interval)); - var f = interval / exp10; - if (!f) { - f = 1; - } else if (f === 2) { - f = 3; - } else if (f === 3) { - f = 5; - } else { - f *= 2; - } - return round(f * exp10); - } - function getIntervalPrecision(interval) { - return getPrecision(interval) + 2; - } - function clamp(niceTickExtent, idx, extent3) { - niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent3[1]), extent3[0]); - } - function fixExtent(niceTickExtent, extent3) { - !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent3[0]); - !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent3[1]); - clamp(niceTickExtent, 0, extent3); - clamp(niceTickExtent, 1, extent3); - if (niceTickExtent[0] > niceTickExtent[1]) { - niceTickExtent[0] = niceTickExtent[1]; - } - } - function contain2(val, extent3) { - return val >= extent3[0] && val <= extent3[1]; - } - function normalize2(val, extent3) { - if (extent3[1] === extent3[0]) { - return 0.5; - } - return (val - extent3[0]) / (extent3[1] - extent3[0]); - } - function scale3(val, extent3) { - return val * (extent3[1] - extent3[0]) + extent3[0]; - } - - // node_modules/echarts/lib/scale/Ordinal.js - var OrdinalScale = ( - /** @class */ - function(_super) { - __extends(OrdinalScale2, _super); - function OrdinalScale2(setting) { - var _this = _super.call(this, setting) || this; - _this.type = "ordinal"; - var ordinalMeta = _this.getSetting("ordinalMeta"); - if (!ordinalMeta) { - ordinalMeta = new OrdinalMeta_default({}); - } - if (isArray(ordinalMeta)) { - ordinalMeta = new OrdinalMeta_default({ - categories: map(ordinalMeta, function(item) { - return isObject(item) ? item.value : item; - }) - }); - } - _this._ordinalMeta = ordinalMeta; - _this._extent = _this.getSetting("extent") || [0, ordinalMeta.categories.length - 1]; - return _this; - } - OrdinalScale2.prototype.parse = function(val) { - if (val == null) { - return NaN; - } - return isString(val) ? this._ordinalMeta.getOrdinal(val) : Math.round(val); - }; - OrdinalScale2.prototype.contain = function(rank) { - rank = this.parse(rank); - return contain2(rank, this._extent) && this._ordinalMeta.categories[rank] != null; - }; - OrdinalScale2.prototype.normalize = function(val) { - val = this._getTickNumber(this.parse(val)); - return normalize2(val, this._extent); - }; - OrdinalScale2.prototype.scale = function(val) { - val = Math.round(scale3(val, this._extent)); - return this.getRawOrdinalNumber(val); - }; - OrdinalScale2.prototype.getTicks = function() { - var ticks = []; - var extent3 = this._extent; - var rank = extent3[0]; - while (rank <= extent3[1]) { - ticks.push({ - value: rank - }); - rank++; - } - return ticks; - }; - OrdinalScale2.prototype.getMinorTicks = function(splitNumber) { - return; - }; - OrdinalScale2.prototype.setSortInfo = function(info) { - if (info == null) { - this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null; - return; - } - var infoOrdinalNumbers = info.ordinalNumbers; - var ordinalsByTick = this._ordinalNumbersByTick = []; - var ticksByOrdinal = this._ticksByOrdinalNumber = []; - var tickNum = 0; - var allCategoryLen = this._ordinalMeta.categories.length; - for (var len2 = Math.min(allCategoryLen, infoOrdinalNumbers.length); tickNum < len2; ++tickNum) { - var ordinalNumber = infoOrdinalNumbers[tickNum]; - ordinalsByTick[tickNum] = ordinalNumber; - ticksByOrdinal[ordinalNumber] = tickNum; - } - var unusedOrdinal = 0; - for (; tickNum < allCategoryLen; ++tickNum) { - while (ticksByOrdinal[unusedOrdinal] != null) { - unusedOrdinal++; - } - ; - ordinalsByTick.push(unusedOrdinal); - ticksByOrdinal[unusedOrdinal] = tickNum; - } - }; - OrdinalScale2.prototype._getTickNumber = function(ordinal) { - var ticksByOrdinalNumber = this._ticksByOrdinalNumber; - return ticksByOrdinalNumber && ordinal >= 0 && ordinal < ticksByOrdinalNumber.length ? ticksByOrdinalNumber[ordinal] : ordinal; - }; - OrdinalScale2.prototype.getRawOrdinalNumber = function(tickNumber) { - var ordinalNumbersByTick = this._ordinalNumbersByTick; - return ordinalNumbersByTick && tickNumber >= 0 && tickNumber < ordinalNumbersByTick.length ? ordinalNumbersByTick[tickNumber] : tickNumber; - }; - OrdinalScale2.prototype.getLabel = function(tick) { - if (!this.isBlank()) { - var ordinalNumber = this.getRawOrdinalNumber(tick.value); - var cateogry = this._ordinalMeta.categories[ordinalNumber]; - return cateogry == null ? "" : cateogry + ""; - } - }; - OrdinalScale2.prototype.count = function() { - return this._extent[1] - this._extent[0] + 1; - }; - OrdinalScale2.prototype.unionExtentFromData = function(data, dim) { - this.unionExtent(data.getApproximateExtent(dim)); - }; - OrdinalScale2.prototype.isInExtentRange = function(value) { - value = this._getTickNumber(value); - return this._extent[0] <= value && this._extent[1] >= value; - }; - OrdinalScale2.prototype.getOrdinalMeta = function() { - return this._ordinalMeta; - }; - OrdinalScale2.prototype.calcNiceTicks = function() { - }; - OrdinalScale2.prototype.calcNiceExtent = function() { - }; - OrdinalScale2.type = "ordinal"; - return OrdinalScale2; - }(Scale_default) - ); - Scale_default.registerClass(OrdinalScale); - var Ordinal_default = OrdinalScale; - - // node_modules/echarts/lib/scale/Interval.js - var roundNumber = round; - var IntervalScale = ( - /** @class */ - function(_super) { - __extends(IntervalScale2, _super); - function IntervalScale2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "interval"; - _this._interval = 0; - _this._intervalPrecision = 2; - return _this; - } - IntervalScale2.prototype.parse = function(val) { - return val; - }; - IntervalScale2.prototype.contain = function(val) { - return contain2(val, this._extent); - }; - IntervalScale2.prototype.normalize = function(val) { - return normalize2(val, this._extent); - }; - IntervalScale2.prototype.scale = function(val) { - return scale3(val, this._extent); - }; - IntervalScale2.prototype.setExtent = function(start3, end2) { - var thisExtent = this._extent; - if (!isNaN(start3)) { - thisExtent[0] = parseFloat(start3); - } - if (!isNaN(end2)) { - thisExtent[1] = parseFloat(end2); - } - }; - IntervalScale2.prototype.unionExtent = function(other) { - var extent3 = this._extent; - other[0] < extent3[0] && (extent3[0] = other[0]); - other[1] > extent3[1] && (extent3[1] = other[1]); - this.setExtent(extent3[0], extent3[1]); - }; - IntervalScale2.prototype.getInterval = function() { - return this._interval; - }; - IntervalScale2.prototype.setInterval = function(interval) { - this._interval = interval; - this._niceExtent = this._extent.slice(); - this._intervalPrecision = getIntervalPrecision(interval); - }; - IntervalScale2.prototype.getTicks = function(expandToNicedExtent) { - var interval = this._interval; - var extent3 = this._extent; - var niceTickExtent = this._niceExtent; - var intervalPrecision = this._intervalPrecision; - var ticks = []; - if (!interval) { - return ticks; - } - var safeLimit = 1e4; - if (extent3[0] < niceTickExtent[0]) { - if (expandToNicedExtent) { - ticks.push({ - value: roundNumber(niceTickExtent[0] - interval, intervalPrecision) - }); - } else { - ticks.push({ - value: extent3[0] - }); - } - } - var tick = niceTickExtent[0]; - while (tick <= niceTickExtent[1]) { - ticks.push({ - value: tick - }); - tick = roundNumber(tick + interval, intervalPrecision); - if (tick === ticks[ticks.length - 1].value) { - break; - } - if (ticks.length > safeLimit) { - return []; - } - } - var lastNiceTick = ticks.length ? ticks[ticks.length - 1].value : niceTickExtent[1]; - if (extent3[1] > lastNiceTick) { - if (expandToNicedExtent) { - ticks.push({ - value: roundNumber(lastNiceTick + interval, intervalPrecision) - }); - } else { - ticks.push({ - value: extent3[1] - }); - } - } - return ticks; - }; - IntervalScale2.prototype.getMinorTicks = function(splitNumber) { - var ticks = this.getTicks(true); - var minorTicks = []; - var extent3 = this.getExtent(); - for (var i = 1; i < ticks.length; i++) { - var nextTick = ticks[i]; - var prevTick = ticks[i - 1]; - var count2 = 0; - var minorTicksGroup = []; - var interval = nextTick.value - prevTick.value; - var minorInterval = interval / splitNumber; - while (count2 < splitNumber - 1) { - var minorTick = roundNumber(prevTick.value + (count2 + 1) * minorInterval); - if (minorTick > extent3[0] && minorTick < extent3[1]) { - minorTicksGroup.push(minorTick); - } - count2++; - } - minorTicks.push(minorTicksGroup); - } - return minorTicks; - }; - IntervalScale2.prototype.getLabel = function(data, opt) { - if (data == null) { - return ""; - } - var precision = opt && opt.precision; - if (precision == null) { - precision = getPrecision(data.value) || 0; - } else if (precision === "auto") { - precision = this._intervalPrecision; - } - var dataNum = roundNumber(data.value, precision, true); - return addCommas(dataNum); - }; - IntervalScale2.prototype.calcNiceTicks = function(splitNumber, minInterval, maxInterval) { - splitNumber = splitNumber || 5; - var extent3 = this._extent; - var span = extent3[1] - extent3[0]; - if (!isFinite(span)) { - return; - } - if (span < 0) { - span = -span; - extent3.reverse(); - } - var result = intervalScaleNiceTicks(extent3, splitNumber, minInterval, maxInterval); - this._intervalPrecision = result.intervalPrecision; - this._interval = result.interval; - this._niceExtent = result.niceTickExtent; - }; - IntervalScale2.prototype.calcNiceExtent = function(opt) { - var extent3 = this._extent; - if (extent3[0] === extent3[1]) { - if (extent3[0] !== 0) { - var expandSize = Math.abs(extent3[0]); - if (!opt.fixMax) { - extent3[1] += expandSize / 2; - extent3[0] -= expandSize / 2; - } else { - extent3[0] -= expandSize / 2; - } - } else { - extent3[1] = 1; - } - } - var span = extent3[1] - extent3[0]; - if (!isFinite(span)) { - extent3[0] = 0; - extent3[1] = 1; - } - this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); - var interval = this._interval; - if (!opt.fixMin) { - extent3[0] = roundNumber(Math.floor(extent3[0] / interval) * interval); - } - if (!opt.fixMax) { - extent3[1] = roundNumber(Math.ceil(extent3[1] / interval) * interval); - } - }; - IntervalScale2.prototype.setNiceExtent = function(min4, max4) { - this._niceExtent = [min4, max4]; - }; - IntervalScale2.type = "interval"; - return IntervalScale2; - }(Scale_default) - ); - Scale_default.registerClass(IntervalScale); - var Interval_default = IntervalScale; - - // node_modules/echarts/lib/util/vendor.js - var supportFloat32Array = typeof Float32Array !== "undefined"; - var Float32ArrayCtor = !supportFloat32Array ? Array : Float32Array; - function createFloat32Array(arg) { - if (isArray(arg)) { - return supportFloat32Array ? new Float32Array(arg) : arg; - } - return new Float32ArrayCtor(arg); - } - - // node_modules/echarts/lib/layout/barGrid.js - var STACK_PREFIX = "__ec_stack_"; - function getSeriesStackId(seriesModel) { - return seriesModel.get("stack") || STACK_PREFIX + seriesModel.seriesIndex; - } - function getAxisKey(axis) { - return axis.dim + axis.index; - } - function getLayoutOnAxis(opt) { - var params = []; - var baseAxis = opt.axis; - var axisKey = "axis0"; - if (baseAxis.type !== "category") { - return; - } - var bandWidth = baseAxis.getBandWidth(); - for (var i = 0; i < opt.count || 0; i++) { - params.push(defaults({ - bandWidth, - axisKey, - stackId: STACK_PREFIX + i - }, opt)); - } - var widthAndOffsets = doCalBarWidthAndOffset(params); - var result = []; - for (var i = 0; i < opt.count; i++) { - var item = widthAndOffsets[axisKey][STACK_PREFIX + i]; - item.offsetCenter = item.offset + item.width / 2; - result.push(item); - } - return result; - } - function prepareLayoutBarSeries(seriesType2, ecModel) { - var seriesModels = []; - ecModel.eachSeriesByType(seriesType2, function(seriesModel) { - if (isOnCartesian(seriesModel)) { - seriesModels.push(seriesModel); - } - }); - return seriesModels; - } - function getValueAxesMinGaps(barSeries) { - var axisValues = {}; - each(barSeries, function(seriesModel) { - var cartesian = seriesModel.coordinateSystem; - var baseAxis = cartesian.getBaseAxis(); - if (baseAxis.type !== "time" && baseAxis.type !== "value") { - return; - } - var data = seriesModel.getData(); - var key2 = baseAxis.dim + "_" + baseAxis.index; - var dimIdx = data.getDimensionIndex(data.mapDimension(baseAxis.dim)); - var store = data.getStore(); - for (var i = 0, cnt = store.count(); i < cnt; ++i) { - var value = store.get(dimIdx, i); - if (!axisValues[key2]) { - axisValues[key2] = [value]; - } else { - axisValues[key2].push(value); - } - } - }); - var axisMinGaps = {}; - for (var key in axisValues) { - if (axisValues.hasOwnProperty(key)) { - var valuesInAxis = axisValues[key]; - if (valuesInAxis) { - valuesInAxis.sort(function(a, b) { - return a - b; - }); - var min4 = null; - for (var j = 1; j < valuesInAxis.length; ++j) { - var delta = valuesInAxis[j] - valuesInAxis[j - 1]; - if (delta > 0) { - min4 = min4 === null ? delta : Math.min(min4, delta); - } - } - axisMinGaps[key] = min4; - } - } - } - return axisMinGaps; - } - function makeColumnLayout(barSeries) { - var axisMinGaps = getValueAxesMinGaps(barSeries); - var seriesInfoList = []; - each(barSeries, function(seriesModel) { - var cartesian = seriesModel.coordinateSystem; - var baseAxis = cartesian.getBaseAxis(); - var axisExtent = baseAxis.getExtent(); - var bandWidth; - if (baseAxis.type === "category") { - bandWidth = baseAxis.getBandWidth(); - } else if (baseAxis.type === "value" || baseAxis.type === "time") { - var key = baseAxis.dim + "_" + baseAxis.index; - var minGap = axisMinGaps[key]; - var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]); - var scale4 = baseAxis.scale.getExtent(); - var scaleSpan = Math.abs(scale4[1] - scale4[0]); - bandWidth = minGap ? extentSpan / scaleSpan * minGap : extentSpan; - } else { - var data = seriesModel.getData(); - bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count(); - } - var barWidth = parsePercent2(seriesModel.get("barWidth"), bandWidth); - var barMaxWidth = parsePercent2(seriesModel.get("barMaxWidth"), bandWidth); - var barMinWidth = parsePercent2( - // barMinWidth by default is 0.5 / 1 in cartesian. Because in value axis, - // the auto-calculated bar width might be less than 0.5 / 1. - seriesModel.get("barMinWidth") || (isInLargeMode(seriesModel) ? 0.5 : 1), - bandWidth - ); - var barGap = seriesModel.get("barGap"); - var barCategoryGap = seriesModel.get("barCategoryGap"); - seriesInfoList.push({ - bandWidth, - barWidth, - barMaxWidth, - barMinWidth, - barGap, - barCategoryGap, - axisKey: getAxisKey(baseAxis), - stackId: getSeriesStackId(seriesModel) - }); - }); - return doCalBarWidthAndOffset(seriesInfoList); - } - function doCalBarWidthAndOffset(seriesInfoList) { - var columnsMap = {}; - each(seriesInfoList, function(seriesInfo, idx) { - var axisKey = seriesInfo.axisKey; - var bandWidth = seriesInfo.bandWidth; - var columnsOnAxis = columnsMap[axisKey] || { - bandWidth, - remainedWidth: bandWidth, - autoWidthCount: 0, - categoryGap: null, - gap: "20%", - stacks: {} - }; - var stacks = columnsOnAxis.stacks; - columnsMap[axisKey] = columnsOnAxis; - var stackId = seriesInfo.stackId; - if (!stacks[stackId]) { - columnsOnAxis.autoWidthCount++; - } - stacks[stackId] = stacks[stackId] || { - width: 0, - maxWidth: 0 - }; - var barWidth = seriesInfo.barWidth; - if (barWidth && !stacks[stackId].width) { - stacks[stackId].width = barWidth; - barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth); - columnsOnAxis.remainedWidth -= barWidth; - } - var barMaxWidth = seriesInfo.barMaxWidth; - barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth); - var barMinWidth = seriesInfo.barMinWidth; - barMinWidth && (stacks[stackId].minWidth = barMinWidth); - var barGap = seriesInfo.barGap; - barGap != null && (columnsOnAxis.gap = barGap); - var barCategoryGap = seriesInfo.barCategoryGap; - barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap); - }); - var result = {}; - each(columnsMap, function(columnsOnAxis, coordSysName) { - result[coordSysName] = {}; - var stacks = columnsOnAxis.stacks; - var bandWidth = columnsOnAxis.bandWidth; - var categoryGapPercent = columnsOnAxis.categoryGap; - if (categoryGapPercent == null) { - var columnCount = keys(stacks).length; - categoryGapPercent = Math.max(35 - columnCount * 4, 15) + "%"; - } - var categoryGap = parsePercent2(categoryGapPercent, bandWidth); - var barGapPercent = parsePercent2(columnsOnAxis.gap, 1); - var remainedWidth = columnsOnAxis.remainedWidth; - var autoWidthCount = columnsOnAxis.autoWidthCount; - var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); - autoWidth = Math.max(autoWidth, 0); - each(stacks, function(column) { - var maxWidth = column.maxWidth; - var minWidth = column.minWidth; - if (!column.width) { - var finalWidth = autoWidth; - if (maxWidth && maxWidth < finalWidth) { - finalWidth = Math.min(maxWidth, remainedWidth); - } - if (minWidth && minWidth > finalWidth) { - finalWidth = minWidth; - } - if (finalWidth !== autoWidth) { - column.width = finalWidth; - remainedWidth -= finalWidth + barGapPercent * finalWidth; - autoWidthCount--; - } - } else { - var finalWidth = column.width; - if (maxWidth) { - finalWidth = Math.min(finalWidth, maxWidth); - } - if (minWidth) { - finalWidth = Math.max(finalWidth, minWidth); - } - column.width = finalWidth; - remainedWidth -= finalWidth + barGapPercent * finalWidth; - autoWidthCount--; - } - }); - autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); - autoWidth = Math.max(autoWidth, 0); - var widthSum = 0; - var lastColumn; - each(stacks, function(column, idx) { - if (!column.width) { - column.width = autoWidth; - } - lastColumn = column; - widthSum += column.width * (1 + barGapPercent); - }); - if (lastColumn) { - widthSum -= lastColumn.width * barGapPercent; - } - var offset3 = -widthSum / 2; - each(stacks, function(column, stackId) { - result[coordSysName][stackId] = result[coordSysName][stackId] || { - bandWidth, - offset: offset3, - width: column.width - }; - offset3 += column.width * (1 + barGapPercent); - }); - }); - return result; - } - function retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) { - if (barWidthAndOffset && axis) { - var result = barWidthAndOffset[getAxisKey(axis)]; - if (result != null && seriesModel != null) { - return result[getSeriesStackId(seriesModel)]; - } - return result; - } - } - function layout(seriesType2, ecModel) { - var seriesModels = prepareLayoutBarSeries(seriesType2, ecModel); - var barWidthAndOffset = makeColumnLayout(seriesModels); - each(seriesModels, function(seriesModel) { - var data = seriesModel.getData(); - var cartesian = seriesModel.coordinateSystem; - var baseAxis = cartesian.getBaseAxis(); - var stackId = getSeriesStackId(seriesModel); - var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId]; - var columnOffset = columnLayoutInfo.offset; - var columnWidth = columnLayoutInfo.width; - data.setLayout({ - bandWidth: columnLayoutInfo.bandWidth, - offset: columnOffset, - size: columnWidth - }); - }); - } - function createProgressiveLayout(seriesType2) { - return { - seriesType: seriesType2, - plan: createRenderPlanner(), - reset: function(seriesModel) { - if (!isOnCartesian(seriesModel)) { - return; - } - var data = seriesModel.getData(); - var cartesian = seriesModel.coordinateSystem; - var baseAxis = cartesian.getBaseAxis(); - var valueAxis2 = cartesian.getOtherAxis(baseAxis); - var valueDimIdx = data.getDimensionIndex(data.mapDimension(valueAxis2.dim)); - var baseDimIdx = data.getDimensionIndex(data.mapDimension(baseAxis.dim)); - var drawBackground = seriesModel.get("showBackground", true); - var valueDim = data.mapDimension(valueAxis2.dim); - var stackResultDim = data.getCalculationInfo("stackResultDimension"); - var stacked = isDimensionStacked(data, valueDim) && !!data.getCalculationInfo("stackedOnSeries"); - var isValueAxisH = valueAxis2.isHorizontal(); - var valueAxisStart = getValueAxisStart(baseAxis, valueAxis2); - var isLarge = isInLargeMode(seriesModel); - var barMinHeight = seriesModel.get("barMinHeight") || 0; - var stackedDimIdx = stackResultDim && data.getDimensionIndex(stackResultDim); - var columnWidth = data.getLayout("size"); - var columnOffset = data.getLayout("offset"); - return { - progress: function(params, data2) { - var count2 = params.count; - var largePoints = isLarge && createFloat32Array(count2 * 3); - var largeBackgroundPoints = isLarge && drawBackground && createFloat32Array(count2 * 3); - var largeDataIndices = isLarge && createFloat32Array(count2); - var coordLayout = cartesian.master.getRect(); - var bgSize = isValueAxisH ? coordLayout.width : coordLayout.height; - var dataIndex; - var store = data2.getStore(); - var idxOffset = 0; - while ((dataIndex = params.next()) != null) { - var value = store.get(stacked ? stackedDimIdx : valueDimIdx, dataIndex); - var baseValue = store.get(baseDimIdx, dataIndex); - var baseCoord = valueAxisStart; - var stackStartValue = void 0; - if (stacked) { - stackStartValue = +value - store.get(valueDimIdx, dataIndex); - } - var x = void 0; - var y = void 0; - var width = void 0; - var height = void 0; - if (isValueAxisH) { - var coord = cartesian.dataToPoint([value, baseValue]); - if (stacked) { - var startCoord = cartesian.dataToPoint([stackStartValue, baseValue]); - baseCoord = startCoord[0]; - } - x = baseCoord; - y = coord[1] + columnOffset; - width = coord[0] - baseCoord; - height = columnWidth; - if (Math.abs(width) < barMinHeight) { - width = (width < 0 ? -1 : 1) * barMinHeight; - } - } else { - var coord = cartesian.dataToPoint([baseValue, value]); - if (stacked) { - var startCoord = cartesian.dataToPoint([baseValue, stackStartValue]); - baseCoord = startCoord[1]; - } - x = coord[0] + columnOffset; - y = baseCoord; - width = columnWidth; - height = coord[1] - baseCoord; - if (Math.abs(height) < barMinHeight) { - height = (height <= 0 ? -1 : 1) * barMinHeight; - } - } - if (!isLarge) { - data2.setItemLayout(dataIndex, { - x, - y, - width, - height - }); - } else { - largePoints[idxOffset] = x; - largePoints[idxOffset + 1] = y; - largePoints[idxOffset + 2] = isValueAxisH ? width : height; - if (largeBackgroundPoints) { - largeBackgroundPoints[idxOffset] = isValueAxisH ? coordLayout.x : x; - largeBackgroundPoints[idxOffset + 1] = isValueAxisH ? y : coordLayout.y; - largeBackgroundPoints[idxOffset + 2] = bgSize; - } - largeDataIndices[dataIndex] = dataIndex; - } - idxOffset += 3; - } - if (isLarge) { - data2.setLayout({ - largePoints, - largeDataIndices, - largeBackgroundPoints, - valueAxisHorizontal: isValueAxisH - }); - } - } - }; - } - }; - } - function isOnCartesian(seriesModel) { - return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === "cartesian2d"; - } - function isInLargeMode(seriesModel) { - return seriesModel.pipelineContext && seriesModel.pipelineContext.large; - } - function getValueAxisStart(baseAxis, valueAxis2) { - var startValue = valueAxis2.model.get("startValue"); - if (!startValue) { - startValue = 0; - } - return valueAxis2.toGlobalCoord(valueAxis2.dataToCoord(valueAxis2.type === "log" ? startValue > 0 ? startValue : 1 : startValue)); - } - - // node_modules/echarts/lib/scale/Time.js - var bisect = function(a, x, lo, hi) { - while (lo < hi) { - var mid = lo + hi >>> 1; - if (a[mid][1] < x) { - lo = mid + 1; - } else { - hi = mid; - } - } - return lo; - }; - var TimeScale = ( - /** @class */ - function(_super) { - __extends(TimeScale2, _super); - function TimeScale2(settings) { - var _this = _super.call(this, settings) || this; - _this.type = "time"; - return _this; - } - TimeScale2.prototype.getLabel = function(tick) { - var useUTC = this.getSetting("useUTC"); - return format(tick.value, fullLeveledFormatter[getDefaultFormatPrecisionOfInterval(getPrimaryTimeUnit(this._minLevelUnit))] || fullLeveledFormatter.second, useUTC, this.getSetting("locale")); - }; - TimeScale2.prototype.getFormattedLabel = function(tick, idx, labelFormatter) { - var isUTC = this.getSetting("useUTC"); - var lang = this.getSetting("locale"); - return leveledFormat(tick, idx, labelFormatter, lang, isUTC); - }; - TimeScale2.prototype.getTicks = function() { - var interval = this._interval; - var extent3 = this._extent; - var ticks = []; - if (!interval) { - return ticks; - } - ticks.push({ - value: extent3[0], - level: 0 - }); - var useUTC = this.getSetting("useUTC"); - var innerTicks = getIntervalTicks(this._minLevelUnit, this._approxInterval, useUTC, extent3); - ticks = ticks.concat(innerTicks); - ticks.push({ - value: extent3[1], - level: 0 - }); - return ticks; - }; - TimeScale2.prototype.calcNiceExtent = function(opt) { - var extent3 = this._extent; - if (extent3[0] === extent3[1]) { - extent3[0] -= ONE_DAY; - extent3[1] += ONE_DAY; - } - if (extent3[1] === -Infinity && extent3[0] === Infinity) { - var d = /* @__PURE__ */ new Date(); - extent3[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate()); - extent3[0] = extent3[1] - ONE_DAY; - } - this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); - }; - TimeScale2.prototype.calcNiceTicks = function(approxTickNum, minInterval, maxInterval) { - approxTickNum = approxTickNum || 10; - var extent3 = this._extent; - var span = extent3[1] - extent3[0]; - this._approxInterval = span / approxTickNum; - if (minInterval != null && this._approxInterval < minInterval) { - this._approxInterval = minInterval; - } - if (maxInterval != null && this._approxInterval > maxInterval) { - this._approxInterval = maxInterval; - } - var scaleIntervalsLen = scaleIntervals.length; - var idx = Math.min(bisect(scaleIntervals, this._approxInterval, 0, scaleIntervalsLen), scaleIntervalsLen - 1); - this._interval = scaleIntervals[idx][1]; - this._minLevelUnit = scaleIntervals[Math.max(idx - 1, 0)][0]; - }; - TimeScale2.prototype.parse = function(val) { - return isNumber(val) ? val : +parseDate(val); - }; - TimeScale2.prototype.contain = function(val) { - return contain2(this.parse(val), this._extent); - }; - TimeScale2.prototype.normalize = function(val) { - return normalize2(this.parse(val), this._extent); - }; - TimeScale2.prototype.scale = function(val) { - return scale3(val, this._extent); - }; - TimeScale2.type = "time"; - return TimeScale2; - }(Interval_default) - ); - var scaleIntervals = [ - // Format interval - ["second", ONE_SECOND], - ["minute", ONE_MINUTE], - ["hour", ONE_HOUR], - ["quarter-day", ONE_HOUR * 6], - ["half-day", ONE_HOUR * 12], - ["day", ONE_DAY * 1.2], - ["half-week", ONE_DAY * 3.5], - ["week", ONE_DAY * 7], - ["month", ONE_DAY * 31], - ["quarter", ONE_DAY * 95], - ["half-year", ONE_YEAR / 2], - ["year", ONE_YEAR] - // 1Y - ]; - function isUnitValueSame(unit, valueA, valueB, isUTC) { - var dateA = parseDate(valueA); - var dateB = parseDate(valueB); - var isSame = function(unit2) { - return getUnitValue(dateA, unit2, isUTC) === getUnitValue(dateB, unit2, isUTC); - }; - var isSameYear = function() { - return isSame("year"); - }; - var isSameMonth = function() { - return isSameYear() && isSame("month"); - }; - var isSameDay = function() { - return isSameMonth() && isSame("day"); - }; - var isSameHour = function() { - return isSameDay() && isSame("hour"); - }; - var isSameMinute = function() { - return isSameHour() && isSame("minute"); - }; - var isSameSecond = function() { - return isSameMinute() && isSame("second"); - }; - var isSameMilliSecond = function() { - return isSameSecond() && isSame("millisecond"); - }; - switch (unit) { - case "year": - return isSameYear(); - case "month": - return isSameMonth(); - case "day": - return isSameDay(); - case "hour": - return isSameHour(); - case "minute": - return isSameMinute(); - case "second": - return isSameSecond(); - case "millisecond": - return isSameMilliSecond(); - } - } - function getDateInterval(approxInterval, daysInMonth) { - approxInterval /= ONE_DAY; - return approxInterval > 16 ? 16 : approxInterval > 7.5 ? 7 : approxInterval > 3.5 ? 4 : approxInterval > 1.5 ? 2 : 1; - } - function getMonthInterval(approxInterval) { - var APPROX_ONE_MONTH = 30 * ONE_DAY; - approxInterval /= APPROX_ONE_MONTH; - return approxInterval > 6 ? 6 : approxInterval > 3 ? 3 : approxInterval > 2 ? 2 : 1; - } - function getHourInterval(approxInterval) { - approxInterval /= ONE_HOUR; - return approxInterval > 12 ? 12 : approxInterval > 6 ? 6 : approxInterval > 3.5 ? 4 : approxInterval > 2 ? 2 : 1; - } - function getMinutesAndSecondsInterval(approxInterval, isMinutes) { - approxInterval /= isMinutes ? ONE_MINUTE : ONE_SECOND; - return approxInterval > 30 ? 30 : approxInterval > 20 ? 20 : approxInterval > 15 ? 15 : approxInterval > 10 ? 10 : approxInterval > 5 ? 5 : approxInterval > 2 ? 2 : 1; - } - function getMillisecondsInterval(approxInterval) { - return nice(approxInterval, true); - } - function getFirstTimestampOfUnit(date, unitName, isUTC) { - var outDate = new Date(date); - switch (getPrimaryTimeUnit(unitName)) { - case "year": - case "month": - outDate[monthSetterName(isUTC)](0); - case "day": - outDate[dateSetterName(isUTC)](1); - case "hour": - outDate[hoursSetterName(isUTC)](0); - case "minute": - outDate[minutesSetterName(isUTC)](0); - case "second": - outDate[secondsSetterName(isUTC)](0); - outDate[millisecondsSetterName(isUTC)](0); - } - return outDate.getTime(); - } - function getIntervalTicks(bottomUnitName, approxInterval, isUTC, extent3) { - var safeLimit = 1e4; - var unitNames = timeUnits; - var iter = 0; - function addTicksInSpan(interval, minTimestamp, maxTimestamp, getMethodName, setMethodName, isDate, out2) { - var date = new Date(minTimestamp); - var dateTime = minTimestamp; - var d = date[getMethodName](); - while (dateTime < maxTimestamp && dateTime <= extent3[1]) { - out2.push({ - value: dateTime - }); - d += interval; - date[setMethodName](d); - dateTime = date.getTime(); - } - out2.push({ - value: dateTime, - notAdd: true - }); - } - function addLevelTicks(unitName, lastLevelTicks, levelTicks2) { - var newAddedTicks = []; - var isFirstLevel = !lastLevelTicks.length; - if (isUnitValueSame(getPrimaryTimeUnit(unitName), extent3[0], extent3[1], isUTC)) { - return; - } - if (isFirstLevel) { - lastLevelTicks = [{ - // TODO Optimize. Not include so may ticks. - value: getFirstTimestampOfUnit(new Date(extent3[0]), unitName, isUTC) - }, { - value: extent3[1] - }]; - } - for (var i2 = 0; i2 < lastLevelTicks.length - 1; i2++) { - var startTick = lastLevelTicks[i2].value; - var endTick = lastLevelTicks[i2 + 1].value; - if (startTick === endTick) { - continue; - } - var interval = void 0; - var getterName = void 0; - var setterName = void 0; - var isDate = false; - switch (unitName) { - case "year": - interval = Math.max(1, Math.round(approxInterval / ONE_DAY / 365)); - getterName = fullYearGetterName(isUTC); - setterName = fullYearSetterName(isUTC); - break; - case "half-year": - case "quarter": - case "month": - interval = getMonthInterval(approxInterval); - getterName = monthGetterName(isUTC); - setterName = monthSetterName(isUTC); - break; - case "week": - case "half-week": - case "day": - interval = getDateInterval(approxInterval, 31); - getterName = dateGetterName(isUTC); - setterName = dateSetterName(isUTC); - isDate = true; - break; - case "half-day": - case "quarter-day": - case "hour": - interval = getHourInterval(approxInterval); - getterName = hoursGetterName(isUTC); - setterName = hoursSetterName(isUTC); - break; - case "minute": - interval = getMinutesAndSecondsInterval(approxInterval, true); - getterName = minutesGetterName(isUTC); - setterName = minutesSetterName(isUTC); - break; - case "second": - interval = getMinutesAndSecondsInterval(approxInterval, false); - getterName = secondsGetterName(isUTC); - setterName = secondsSetterName(isUTC); - break; - case "millisecond": - interval = getMillisecondsInterval(approxInterval); - getterName = millisecondsGetterName(isUTC); - setterName = millisecondsSetterName(isUTC); - break; - } - addTicksInSpan(interval, startTick, endTick, getterName, setterName, isDate, newAddedTicks); - if (unitName === "year" && levelTicks2.length > 1 && i2 === 0) { - levelTicks2.unshift({ - value: levelTicks2[0].value - interval - }); - } - } - for (var i2 = 0; i2 < newAddedTicks.length; i2++) { - levelTicks2.push(newAddedTicks[i2]); - } - return newAddedTicks; - } - var levelsTicks = []; - var currentLevelTicks = []; - var tickCount = 0; - var lastLevelTickCount = 0; - for (var i = 0; i < unitNames.length && iter++ < safeLimit; ++i) { - var primaryTimeUnit = getPrimaryTimeUnit(unitNames[i]); - if (!isPrimaryTimeUnit(unitNames[i])) { - continue; - } - addLevelTicks(unitNames[i], levelsTicks[levelsTicks.length - 1] || [], currentLevelTicks); - var nextPrimaryTimeUnit = unitNames[i + 1] ? getPrimaryTimeUnit(unitNames[i + 1]) : null; - if (primaryTimeUnit !== nextPrimaryTimeUnit) { - if (currentLevelTicks.length) { - lastLevelTickCount = tickCount; - currentLevelTicks.sort(function(a, b) { - return a.value - b.value; - }); - var levelTicksRemoveDuplicated = []; - for (var i_1 = 0; i_1 < currentLevelTicks.length; ++i_1) { - var tickValue = currentLevelTicks[i_1].value; - if (i_1 === 0 || currentLevelTicks[i_1 - 1].value !== tickValue) { - levelTicksRemoveDuplicated.push(currentLevelTicks[i_1]); - if (tickValue >= extent3[0] && tickValue <= extent3[1]) { - tickCount++; - } - } - } - var targetTickNum = (extent3[1] - extent3[0]) / approxInterval; - if (tickCount > targetTickNum * 1.5 && lastLevelTickCount > targetTickNum / 1.5) { - break; - } - levelsTicks.push(levelTicksRemoveDuplicated); - if (tickCount > targetTickNum || bottomUnitName === unitNames[i]) { - break; - } - } - currentLevelTicks = []; - } - } - if (true) { - if (iter >= safeLimit) { - warn("Exceed safe limit."); - } - } - var levelsTicksInExtent = filter(map(levelsTicks, function(levelTicks2) { - return filter(levelTicks2, function(tick) { - return tick.value >= extent3[0] && tick.value <= extent3[1] && !tick.notAdd; - }); - }), function(levelTicks2) { - return levelTicks2.length > 0; - }); - var ticks = []; - var maxLevel = levelsTicksInExtent.length - 1; - for (var i = 0; i < levelsTicksInExtent.length; ++i) { - var levelTicks = levelsTicksInExtent[i]; - for (var k = 0; k < levelTicks.length; ++k) { - ticks.push({ - value: levelTicks[k].value, - level: maxLevel - i - }); - } - } - ticks.sort(function(a, b) { - return a.value - b.value; - }); - var result = []; - for (var i = 0; i < ticks.length; ++i) { - if (i === 0 || ticks[i].value !== ticks[i - 1].value) { - result.push(ticks[i]); - } - } - return result; - } - Scale_default.registerClass(TimeScale); - var Time_default = TimeScale; - - // node_modules/echarts/lib/scale/Log.js - var scaleProto = Scale_default.prototype; - var intervalScaleProto = Interval_default.prototype; - var roundingErrorFix = round; - var mathFloor = Math.floor; - var mathCeil = Math.ceil; - var mathPow2 = Math.pow; - var mathLog = Math.log; - var LogScale = ( - /** @class */ - function(_super) { - __extends(LogScale2, _super); - function LogScale2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "log"; - _this.base = 10; - _this._originalScale = new Interval_default(); - _this._interval = 0; - return _this; - } - LogScale2.prototype.getTicks = function(expandToNicedExtent) { - var originalScale = this._originalScale; - var extent3 = this._extent; - var originalExtent = originalScale.getExtent(); - var ticks = intervalScaleProto.getTicks.call(this, expandToNicedExtent); - return map(ticks, function(tick) { - var val = tick.value; - var powVal = round(mathPow2(this.base, val)); - powVal = val === extent3[0] && this._fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal; - powVal = val === extent3[1] && this._fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal; - return { - value: powVal - }; - }, this); - }; - LogScale2.prototype.setExtent = function(start3, end2) { - var base2 = mathLog(this.base); - start3 = mathLog(Math.max(0, start3)) / base2; - end2 = mathLog(Math.max(0, end2)) / base2; - intervalScaleProto.setExtent.call(this, start3, end2); - }; - LogScale2.prototype.getExtent = function() { - var base2 = this.base; - var extent3 = scaleProto.getExtent.call(this); - extent3[0] = mathPow2(base2, extent3[0]); - extent3[1] = mathPow2(base2, extent3[1]); - var originalScale = this._originalScale; - var originalExtent = originalScale.getExtent(); - this._fixMin && (extent3[0] = fixRoundingError(extent3[0], originalExtent[0])); - this._fixMax && (extent3[1] = fixRoundingError(extent3[1], originalExtent[1])); - return extent3; - }; - LogScale2.prototype.unionExtent = function(extent3) { - this._originalScale.unionExtent(extent3); - var base2 = this.base; - extent3[0] = mathLog(extent3[0]) / mathLog(base2); - extent3[1] = mathLog(extent3[1]) / mathLog(base2); - scaleProto.unionExtent.call(this, extent3); - }; - LogScale2.prototype.unionExtentFromData = function(data, dim) { - this.unionExtent(data.getApproximateExtent(dim)); - }; - LogScale2.prototype.calcNiceTicks = function(approxTickNum) { - approxTickNum = approxTickNum || 10; - var extent3 = this._extent; - var span = extent3[1] - extent3[0]; - if (span === Infinity || span <= 0) { - return; - } - var interval = quantity(span); - var err = approxTickNum / span * interval; - if (err <= 0.5) { - interval *= 10; - } - while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) { - interval *= 10; - } - var niceExtent = [round(mathCeil(extent3[0] / interval) * interval), round(mathFloor(extent3[1] / interval) * interval)]; - this._interval = interval; - this._niceExtent = niceExtent; - }; - LogScale2.prototype.calcNiceExtent = function(opt) { - intervalScaleProto.calcNiceExtent.call(this, opt); - this._fixMin = opt.fixMin; - this._fixMax = opt.fixMax; - }; - LogScale2.prototype.parse = function(val) { - return val; - }; - LogScale2.prototype.contain = function(val) { - val = mathLog(val) / mathLog(this.base); - return contain2(val, this._extent); - }; - LogScale2.prototype.normalize = function(val) { - val = mathLog(val) / mathLog(this.base); - return normalize2(val, this._extent); - }; - LogScale2.prototype.scale = function(val) { - val = scale3(val, this._extent); - return mathPow2(this.base, val); - }; - LogScale2.type = "log"; - return LogScale2; - }(Scale_default) - ); - var proto = LogScale.prototype; - proto.getMinorTicks = intervalScaleProto.getMinorTicks; - proto.getLabel = intervalScaleProto.getLabel; - function fixRoundingError(val, originalVal) { - return roundingErrorFix(val, getPrecision(originalVal)); - } - Scale_default.registerClass(LogScale); - var Log_default = LogScale; - - // node_modules/echarts/lib/coord/scaleRawExtentInfo.js - var ScaleRawExtentInfo = ( - /** @class */ - function() { - function ScaleRawExtentInfo2(scale4, model, originalExtent) { - this._prepareParams(scale4, model, originalExtent); - } - ScaleRawExtentInfo2.prototype._prepareParams = function(scale4, model, dataExtent) { - if (dataExtent[1] < dataExtent[0]) { - dataExtent = [NaN, NaN]; - } - this._dataMin = dataExtent[0]; - this._dataMax = dataExtent[1]; - var isOrdinal = this._isOrdinal = scale4.type === "ordinal"; - this._needCrossZero = scale4.type === "interval" && model.getNeedCrossZero && model.getNeedCrossZero(); - var axisMinValue = model.get("min", true); - if (axisMinValue == null) { - axisMinValue = model.get("startValue", true); - } - var modelMinRaw = this._modelMinRaw = axisMinValue; - if (isFunction(modelMinRaw)) { - this._modelMinNum = parseAxisModelMinMax(scale4, modelMinRaw({ - min: dataExtent[0], - max: dataExtent[1] - })); - } else if (modelMinRaw !== "dataMin") { - this._modelMinNum = parseAxisModelMinMax(scale4, modelMinRaw); - } - var modelMaxRaw = this._modelMaxRaw = model.get("max", true); - if (isFunction(modelMaxRaw)) { - this._modelMaxNum = parseAxisModelMinMax(scale4, modelMaxRaw({ - min: dataExtent[0], - max: dataExtent[1] - })); - } else if (modelMaxRaw !== "dataMax") { - this._modelMaxNum = parseAxisModelMinMax(scale4, modelMaxRaw); - } - if (isOrdinal) { - this._axisDataLen = model.getCategories().length; - } else { - var boundaryGap = model.get("boundaryGap"); - var boundaryGapArr = isArray(boundaryGap) ? boundaryGap : [boundaryGap || 0, boundaryGap || 0]; - if (typeof boundaryGapArr[0] === "boolean" || typeof boundaryGapArr[1] === "boolean") { - if (true) { - console.warn('Boolean type for boundaryGap is only allowed for ordinal axis. Please use string in percentage instead, e.g., "20%". Currently, boundaryGap is set to be 0.'); - } - this._boundaryGapInner = [0, 0]; - } else { - this._boundaryGapInner = [parsePercent(boundaryGapArr[0], 1), parsePercent(boundaryGapArr[1], 1)]; - } - } - }; - ScaleRawExtentInfo2.prototype.calculate = function() { - var isOrdinal = this._isOrdinal; - var dataMin = this._dataMin; - var dataMax = this._dataMax; - var axisDataLen = this._axisDataLen; - var boundaryGapInner = this._boundaryGapInner; - var span = !isOrdinal ? dataMax - dataMin || Math.abs(dataMin) : null; - var min4 = this._modelMinRaw === "dataMin" ? dataMin : this._modelMinNum; - var max4 = this._modelMaxRaw === "dataMax" ? dataMax : this._modelMaxNum; - var minFixed = min4 != null; - var maxFixed = max4 != null; - if (min4 == null) { - min4 = isOrdinal ? axisDataLen ? 0 : NaN : dataMin - boundaryGapInner[0] * span; - } - if (max4 == null) { - max4 = isOrdinal ? axisDataLen ? axisDataLen - 1 : NaN : dataMax + boundaryGapInner[1] * span; - } - (min4 == null || !isFinite(min4)) && (min4 = NaN); - (max4 == null || !isFinite(max4)) && (max4 = NaN); - var isBlank = eqNaN(min4) || eqNaN(max4) || isOrdinal && !axisDataLen; - if (this._needCrossZero) { - if (min4 > 0 && max4 > 0 && !minFixed) { - min4 = 0; - } - if (min4 < 0 && max4 < 0 && !maxFixed) { - max4 = 0; - } - } - var determinedMin = this._determinedMin; - var determinedMax = this._determinedMax; - if (determinedMin != null) { - min4 = determinedMin; - minFixed = true; - } - if (determinedMax != null) { - max4 = determinedMax; - maxFixed = true; - } - return { - min: min4, - max: max4, - minFixed, - maxFixed, - isBlank - }; - }; - ScaleRawExtentInfo2.prototype.modifyDataMinMax = function(minMaxName, val) { - if (true) { - assert(!this.frozen); - } - this[DATA_MIN_MAX_ATTR[minMaxName]] = val; - }; - ScaleRawExtentInfo2.prototype.setDeterminedMinMax = function(minMaxName, val) { - var attr = DETERMINED_MIN_MAX_ATTR[minMaxName]; - if (true) { - assert(!this.frozen && this[attr] == null); - } - this[attr] = val; - }; - ScaleRawExtentInfo2.prototype.freeze = function() { - this.frozen = true; - }; - return ScaleRawExtentInfo2; - }() - ); - var DETERMINED_MIN_MAX_ATTR = { - min: "_determinedMin", - max: "_determinedMax" - }; - var DATA_MIN_MAX_ATTR = { - min: "_dataMin", - max: "_dataMax" - }; - function ensureScaleRawExtentInfo(scale4, model, originalExtent) { - var rawExtentInfo = scale4.rawExtentInfo; - if (rawExtentInfo) { - return rawExtentInfo; - } - rawExtentInfo = new ScaleRawExtentInfo(scale4, model, originalExtent); - scale4.rawExtentInfo = rawExtentInfo; - return rawExtentInfo; - } - function parseAxisModelMinMax(scale4, minMax) { - return minMax == null ? null : eqNaN(minMax) ? NaN : scale4.parse(minMax); - } - - // node_modules/echarts/lib/coord/axisHelper.js - function getScaleExtent(scale4, model) { - var scaleType = scale4.type; - var rawExtentResult = ensureScaleRawExtentInfo(scale4, model, scale4.getExtent()).calculate(); - scale4.setBlank(rawExtentResult.isBlank); - var min4 = rawExtentResult.min; - var max4 = rawExtentResult.max; - var ecModel = model.ecModel; - if (ecModel && scaleType === "time") { - var barSeriesModels = prepareLayoutBarSeries("bar", ecModel); - var isBaseAxisAndHasBarSeries_1 = false; - each(barSeriesModels, function(seriesModel) { - isBaseAxisAndHasBarSeries_1 = isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis; - }); - if (isBaseAxisAndHasBarSeries_1) { - var barWidthAndOffset = makeColumnLayout(barSeriesModels); - var adjustedScale = adjustScaleForOverflow(min4, max4, model, barWidthAndOffset); - min4 = adjustedScale.min; - max4 = adjustedScale.max; - } - } - return { - extent: [min4, max4], - // "fix" means "fixed", the value should not be - // changed in the subsequent steps. - fixMin: rawExtentResult.minFixed, - fixMax: rawExtentResult.maxFixed - }; - } - function adjustScaleForOverflow(min4, max4, model, barWidthAndOffset) { - var axisExtent = model.axis.getExtent(); - var axisLength = Math.abs(axisExtent[1] - axisExtent[0]); - var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis); - if (barsOnCurrentAxis === void 0) { - return { - min: min4, - max: max4 - }; - } - var minOverflow = Infinity; - each(barsOnCurrentAxis, function(item) { - minOverflow = Math.min(item.offset, minOverflow); - }); - var maxOverflow = -Infinity; - each(barsOnCurrentAxis, function(item) { - maxOverflow = Math.max(item.offset + item.width, maxOverflow); - }); - minOverflow = Math.abs(minOverflow); - maxOverflow = Math.abs(maxOverflow); - var totalOverFlow = minOverflow + maxOverflow; - var oldRange = max4 - min4; - var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength; - var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange; - max4 += overflowBuffer * (maxOverflow / totalOverFlow); - min4 -= overflowBuffer * (minOverflow / totalOverFlow); - return { - min: min4, - max: max4 - }; - } - function niceScaleExtent(scale4, inModel) { - var model = inModel; - var extentInfo = getScaleExtent(scale4, model); - var extent3 = extentInfo.extent; - var splitNumber = model.get("splitNumber"); - if (scale4 instanceof Log_default) { - scale4.base = model.get("logBase"); - } - var scaleType = scale4.type; - var interval = model.get("interval"); - var isIntervalOrTime = scaleType === "interval" || scaleType === "time"; - scale4.setExtent(extent3[0], extent3[1]); - scale4.calcNiceExtent({ - splitNumber, - fixMin: extentInfo.fixMin, - fixMax: extentInfo.fixMax, - minInterval: isIntervalOrTime ? model.get("minInterval") : null, - maxInterval: isIntervalOrTime ? model.get("maxInterval") : null - }); - if (interval != null) { - scale4.setInterval && scale4.setInterval(interval); - } - } - function createScaleByModel(model, axisType) { - axisType = axisType || model.get("type"); - if (axisType) { - switch (axisType) { - case "category": - return new Ordinal_default({ - ordinalMeta: model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(), - extent: [Infinity, -Infinity] - }); - case "time": - return new Time_default({ - locale: model.ecModel.getLocaleModel(), - useUTC: model.ecModel.get("useUTC") - }); - default: - return new (Scale_default.getClass(axisType) || Interval_default)(); - } - } - } - function ifAxisCrossZero(axis) { - var dataExtent = axis.scale.getExtent(); - var min4 = dataExtent[0]; - var max4 = dataExtent[1]; - return !(min4 > 0 && max4 > 0 || min4 < 0 && max4 < 0); - } - function makeLabelFormatter(axis) { - var labelFormatter = axis.getLabelModel().get("formatter"); - var categoryTickStart = axis.type === "category" ? axis.scale.getExtent()[0] : null; - if (axis.scale.type === "time") { - return /* @__PURE__ */ function(tpl) { - return function(tick, idx) { - return axis.scale.getFormattedLabel(tick, idx, tpl); - }; - }(labelFormatter); - } else if (isString(labelFormatter)) { - return /* @__PURE__ */ function(tpl) { - return function(tick) { - var label = axis.scale.getLabel(tick); - var text = tpl.replace("{value}", label != null ? label : ""); - return text; - }; - }(labelFormatter); - } else if (isFunction(labelFormatter)) { - return /* @__PURE__ */ function(cb) { - return function(tick, idx) { - if (categoryTickStart != null) { - idx = tick.value - categoryTickStart; - } - return cb(getAxisRawValue(axis, tick), idx, tick.level != null ? { - level: tick.level - } : null); - }; - }(labelFormatter); - } else { - return function(tick) { - return axis.scale.getLabel(tick); - }; - } - } - function getAxisRawValue(axis, tick) { - return axis.type === "category" ? axis.scale.getLabel(tick) : tick.value; - } - function estimateLabelUnionRect(axis) { - var axisModel = axis.model; - var scale4 = axis.scale; - if (!axisModel.get(["axisLabel", "show"]) || scale4.isBlank()) { - return; - } - var realNumberScaleTicks; - var tickCount; - var categoryScaleExtent = scale4.getExtent(); - if (scale4 instanceof Ordinal_default) { - tickCount = scale4.count(); - } else { - realNumberScaleTicks = scale4.getTicks(); - tickCount = realNumberScaleTicks.length; - } - var axisLabelModel = axis.getLabelModel(); - var labelFormatter = makeLabelFormatter(axis); - var rect; - var step = 1; - if (tickCount > 40) { - step = Math.ceil(tickCount / 40); - } - for (var i = 0; i < tickCount; i += step) { - var tick = realNumberScaleTicks ? realNumberScaleTicks[i] : { - value: categoryScaleExtent[0] + i - }; - var label = labelFormatter(tick, i); - var unrotatedSingleRect = axisLabelModel.getTextRect(label); - var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get("rotate") || 0); - rect ? rect.union(singleRect) : rect = singleRect; - } - return rect; - } - function rotateTextRect(textRect, rotate2) { - var rotateRadians = rotate2 * Math.PI / 180; - var beforeWidth = textRect.width; - var beforeHeight = textRect.height; - var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians)) + Math.abs(beforeHeight * Math.sin(rotateRadians)); - var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians)) + Math.abs(beforeHeight * Math.cos(rotateRadians)); - var rotatedRect = new BoundingRect_default(textRect.x, textRect.y, afterWidth, afterHeight); - return rotatedRect; - } - function getOptionCategoryInterval(model) { - var interval = model.get("interval"); - return interval == null ? "auto" : interval; - } - function shouldShowAllLabels(axis) { - return axis.type === "category" && getOptionCategoryInterval(axis.getLabelModel()) === 0; - } - function getDataDimensionsOnAxis(data, axisDim) { - var dataDimMap = {}; - each(data.mapDimensionsAll(axisDim), function(dataDim) { - dataDimMap[getStackedDimension(data, dataDim)] = true; - }); - return keys(dataDimMap); - } - function unionAxisExtentFromData(dataExtent, data, axisDim) { - if (data) { - each(getDataDimensionsOnAxis(data, axisDim), function(dim) { - var seriesExtent = data.getApproximateExtent(dim); - seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]); - seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]); - }); - } - } - - // node_modules/echarts/lib/coord/axisModelCommonMixin.js - var AxisModelCommonMixin = ( - /** @class */ - function() { - function AxisModelCommonMixin2() { - } - AxisModelCommonMixin2.prototype.getNeedCrossZero = function() { - var option = this.option; - return !option.scale; - }; - AxisModelCommonMixin2.prototype.getCoordSysModel = function() { - return; - }; - return AxisModelCommonMixin2; - }() - ); - - // node_modules/echarts/lib/export/api/helper.js - function createList(seriesModel) { - return createSeriesData_default(null, seriesModel); - } - var dataStack2 = { - isDimensionStacked, - enableDataStack, - getStackedDimension - }; - function createScale(dataExtent, option) { - var axisModel = option; - if (!(option instanceof Model_default)) { - axisModel = new Model_default(option); - } - var scale4 = createScaleByModel(axisModel); - scale4.setExtent(dataExtent[0], dataExtent[1]); - niceScaleExtent(scale4, axisModel); - return scale4; - } - function mixinAxisModelCommonMethods(Model2) { - mixin(Model2, AxisModelCommonMixin); - } - function createTextStyle2(textStyleModel, opts) { - opts = opts || {}; - return createTextStyle(textStyleModel, null, null, opts.state !== "normal"); - } - - // node_modules/zrender/lib/contain/polygon.js - var EPSILON5 = 1e-8; - function isAroundEqual2(a, b) { - return Math.abs(a - b) < EPSILON5; - } - function contain3(points4, x, y) { - var w = 0; - var p = points4[0]; - if (!p) { - return false; - } - for (var i = 1; i < points4.length; i++) { - var p2 = points4[i]; - w += windingLine(p[0], p[1], p2[0], p2[1], x, y); - p = p2; - } - var p0 = points4[0]; - if (!isAroundEqual2(p[0], p0[0]) || !isAroundEqual2(p[1], p0[1])) { - w += windingLine(p[0], p[1], p0[0], p0[1], x, y); - } - return w !== 0; - } - - // node_modules/echarts/lib/coord/geo/Region.js - var TMP_TRANSFORM = []; - function transformPoints(points4, transform2) { - for (var p = 0; p < points4.length; p++) { - applyTransform(points4[p], points4[p], transform2); - } - } - function updateBBoxFromPoints(points4, min4, max4, projection) { - for (var i = 0; i < points4.length; i++) { - var p = points4[i]; - if (projection) { - p = projection.project(p); - } - if (p && isFinite(p[0]) && isFinite(p[1])) { - min(min4, min4, p); - max(max4, max4, p); - } - } - } - function centroid(points4) { - var signedArea = 0; - var cx = 0; - var cy = 0; - var len2 = points4.length; - var x0 = points4[len2 - 1][0]; - var y0 = points4[len2 - 1][1]; - for (var i = 0; i < len2; i++) { - var x1 = points4[i][0]; - var y1 = points4[i][1]; - var a = x0 * y1 - x1 * y0; - signedArea += a; - cx += (x0 + x1) * a; - cy += (y0 + y1) * a; - x0 = x1; - y0 = y1; - } - return signedArea ? [cx / signedArea / 3, cy / signedArea / 3, signedArea] : [points4[0][0] || 0, points4[0][1] || 0]; - } - var Region = ( - /** @class */ - function() { - function Region2(name) { - this.name = name; - } - Region2.prototype.setCenter = function(center3) { - this._center = center3; - }; - Region2.prototype.getCenter = function() { - var center3 = this._center; - if (!center3) { - center3 = this._center = this.calcCenter(); - } - return center3; - }; - return Region2; - }() - ); - var GeoJSONPolygonGeometry = ( - /** @class */ - /* @__PURE__ */ function() { - function GeoJSONPolygonGeometry2(exterior, interiors) { - this.type = "polygon"; - this.exterior = exterior; - this.interiors = interiors; - } - return GeoJSONPolygonGeometry2; - }() - ); - var GeoJSONLineStringGeometry = ( - /** @class */ - /* @__PURE__ */ function() { - function GeoJSONLineStringGeometry2(points4) { - this.type = "linestring"; - this.points = points4; - } - return GeoJSONLineStringGeometry2; - }() - ); - var GeoJSONRegion = ( - /** @class */ - function(_super) { - __extends(GeoJSONRegion2, _super); - function GeoJSONRegion2(name, geometries, cp) { - var _this = _super.call(this, name) || this; - _this.type = "geoJSON"; - _this.geometries = geometries; - _this._center = cp && [cp[0], cp[1]]; - return _this; - } - GeoJSONRegion2.prototype.calcCenter = function() { - var geometries = this.geometries; - var largestGeo; - var largestGeoSize = 0; - for (var i = 0; i < geometries.length; i++) { - var geo = geometries[i]; - var exterior = geo.exterior; - var size2 = exterior && exterior.length; - if (size2 > largestGeoSize) { - largestGeo = geo; - largestGeoSize = size2; - } - } - if (largestGeo) { - return centroid(largestGeo.exterior); - } - var rect = this.getBoundingRect(); - return [rect.x + rect.width / 2, rect.y + rect.height / 2]; - }; - GeoJSONRegion2.prototype.getBoundingRect = function(projection) { - var rect = this._rect; - if (rect && !projection) { - return rect; - } - var min4 = [Infinity, Infinity]; - var max4 = [-Infinity, -Infinity]; - var geometries = this.geometries; - each(geometries, function(geo) { - if (geo.type === "polygon") { - updateBBoxFromPoints(geo.exterior, min4, max4, projection); - } else { - each(geo.points, function(points4) { - updateBBoxFromPoints(points4, min4, max4, projection); - }); - } - }); - if (!(isFinite(min4[0]) && isFinite(min4[1]) && isFinite(max4[0]) && isFinite(max4[1]))) { - min4[0] = min4[1] = max4[0] = max4[1] = 0; - } - rect = new BoundingRect_default(min4[0], min4[1], max4[0] - min4[0], max4[1] - min4[1]); - if (!projection) { - this._rect = rect; - } - return rect; - }; - GeoJSONRegion2.prototype.contain = function(coord) { - var rect = this.getBoundingRect(); - var geometries = this.geometries; - if (!rect.contain(coord[0], coord[1])) { - return false; - } - loopGeo: - for (var i = 0, len2 = geometries.length; i < len2; i++) { - var geo = geometries[i]; - if (geo.type !== "polygon") { - continue; - } - var exterior = geo.exterior; - var interiors = geo.interiors; - if (contain3(exterior, coord[0], coord[1])) { - for (var k = 0; k < (interiors ? interiors.length : 0); k++) { - if (contain3(interiors[k], coord[0], coord[1])) { - continue loopGeo; - } - } - return true; - } - } - return false; - }; - GeoJSONRegion2.prototype.transformTo = function(x, y, width, height) { - var rect = this.getBoundingRect(); - var aspect = rect.width / rect.height; - if (!width) { - width = aspect * height; - } else if (!height) { - height = width / aspect; - } - var target = new BoundingRect_default(x, y, width, height); - var transform2 = rect.calculateTransform(target); - var geometries = this.geometries; - for (var i = 0; i < geometries.length; i++) { - var geo = geometries[i]; - if (geo.type === "polygon") { - transformPoints(geo.exterior, transform2); - each(geo.interiors, function(interior) { - transformPoints(interior, transform2); - }); - } else { - each(geo.points, function(points4) { - transformPoints(points4, transform2); - }); - } - } - rect = this._rect; - rect.copy(target); - this._center = [rect.x + rect.width / 2, rect.y + rect.height / 2]; - }; - GeoJSONRegion2.prototype.cloneShallow = function(name) { - name == null && (name = this.name); - var newRegion = new GeoJSONRegion2(name, this.geometries, this._center); - newRegion._rect = this._rect; - newRegion.transformTo = null; - return newRegion; - }; - return GeoJSONRegion2; - }(Region) - ); - var GeoSVGRegion = ( - /** @class */ - function(_super) { - __extends(GeoSVGRegion2, _super); - function GeoSVGRegion2(name, elOnlyForCalculate) { - var _this = _super.call(this, name) || this; - _this.type = "geoSVG"; - _this._elOnlyForCalculate = elOnlyForCalculate; - return _this; - } - GeoSVGRegion2.prototype.calcCenter = function() { - var el = this._elOnlyForCalculate; - var rect = el.getBoundingRect(); - var center3 = [rect.x + rect.width / 2, rect.y + rect.height / 2]; - var mat = identity(TMP_TRANSFORM); - var target = el; - while (target && !target.isGeoSVGGraphicRoot) { - mul2(mat, target.getLocalTransform(), mat); - target = target.parent; - } - invert(mat, mat); - applyTransform(center3, center3, mat); - return center3; - }; - return GeoSVGRegion2; - }(Region) - ); - - // node_modules/echarts/lib/coord/geo/parseGeoJson.js - function decode(json) { - if (!json.UTF8Encoding) { - return json; - } - var jsonCompressed = json; - var encodeScale = jsonCompressed.UTF8Scale; - if (encodeScale == null) { - encodeScale = 1024; - } - var features2 = jsonCompressed.features; - each(features2, function(feature) { - var geometry = feature.geometry; - var encodeOffsets = geometry.encodeOffsets; - var coordinates = geometry.coordinates; - if (!encodeOffsets) { - return; - } - switch (geometry.type) { - case "LineString": - geometry.coordinates = decodeRing(coordinates, encodeOffsets, encodeScale); - break; - case "Polygon": - decodeRings(coordinates, encodeOffsets, encodeScale); - break; - case "MultiLineString": - decodeRings(coordinates, encodeOffsets, encodeScale); - break; - case "MultiPolygon": - each(coordinates, function(rings, idx) { - return decodeRings(rings, encodeOffsets[idx], encodeScale); - }); - } - }); - jsonCompressed.UTF8Encoding = false; - return jsonCompressed; - } - function decodeRings(rings, encodeOffsets, encodeScale) { - for (var c = 0; c < rings.length; c++) { - rings[c] = decodeRing(rings[c], encodeOffsets[c], encodeScale); - } - } - function decodeRing(coordinate, encodeOffsets, encodeScale) { - var result = []; - var prevX = encodeOffsets[0]; - var prevY = encodeOffsets[1]; - for (var i = 0; i < coordinate.length; i += 2) { - var x = coordinate.charCodeAt(i) - 64; - var y = coordinate.charCodeAt(i + 1) - 64; - x = x >> 1 ^ -(x & 1); - y = y >> 1 ^ -(y & 1); - x += prevX; - y += prevY; - prevX = x; - prevY = y; - result.push([x / encodeScale, y / encodeScale]); - } - return result; - } - function parseGeoJSON(geoJson, nameProperty) { - geoJson = decode(geoJson); - return map(filter(geoJson.features, function(featureObj) { - return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0; - }), function(featureObj) { - var properties = featureObj.properties; - var geo = featureObj.geometry; - var geometries = []; - switch (geo.type) { - case "Polygon": - var coordinates = geo.coordinates; - geometries.push(new GeoJSONPolygonGeometry(coordinates[0], coordinates.slice(1))); - break; - case "MultiPolygon": - each(geo.coordinates, function(item) { - if (item[0]) { - geometries.push(new GeoJSONPolygonGeometry(item[0], item.slice(1))); - } - }); - break; - case "LineString": - geometries.push(new GeoJSONLineStringGeometry([geo.coordinates])); - break; - case "MultiLineString": - geometries.push(new GeoJSONLineStringGeometry(geo.coordinates)); - } - var region = new GeoJSONRegion(properties[nameProperty || "name"], geometries, properties.cp); - region.properties = properties; - return region; - }); - } - - // node_modules/echarts/lib/export/api/number.js - var number_exports2 = {}; - __export(number_exports2, { - MAX_SAFE_INTEGER: () => MAX_SAFE_INTEGER, - asc: () => asc, - getPercentWithPrecision: () => getPercentWithPrecision, - getPixelPrecision: () => getPixelPrecision, - getPrecision: () => getPrecision, - getPrecisionSafe: () => getPrecisionSafe, - isNumeric: () => isNumeric, - isRadianAroundZero: () => isRadianAroundZero, - linearMap: () => linearMap, - nice: () => nice, - numericToNumber: () => numericToNumber, - parseDate: () => parseDate, - quantile: () => quantile, - quantity: () => quantity, - quantityExponent: () => quantityExponent, - reformIntervals: () => reformIntervals, - remRadian: () => remRadian, - round: () => round - }); - - // node_modules/echarts/lib/export/api/time.js - var time_exports = {}; - __export(time_exports, { - format: () => format, - parse: () => parseDate - }); - - // node_modules/echarts/lib/export/api/graphic.js - var graphic_exports2 = {}; - __export(graphic_exports2, { - Arc: () => Arc_default, - BezierCurve: () => BezierCurve_default, - BoundingRect: () => BoundingRect_default, - Circle: () => Circle_default, - CompoundPath: () => CompoundPath_default, - Ellipse: () => Ellipse_default, - Group: () => Group_default, - Image: () => Image_default, - IncrementalDisplayable: () => IncrementalDisplayable_default, - Line: () => Line_default, - LinearGradient: () => LinearGradient_default, - Polygon: () => Polygon_default, - Polyline: () => Polyline_default, - RadialGradient: () => RadialGradient_default, - Rect: () => Rect_default, - Ring: () => Ring_default, - Sector: () => Sector_default, - Text: () => Text_default, - clipPointsByRect: () => clipPointsByRect, - clipRectByRect: () => clipRectByRect, - createIcon: () => createIcon, - extendPath: () => extendPath, - extendShape: () => extendShape, - getShapeClass: () => getShapeClass, - getTransform: () => getTransform, - initProps: () => initProps, - makeImage: () => makeImage, - makePath: () => makePath, - mergePath: () => mergePath2, - registerShape: () => registerShape, - resizePath: () => resizePath, - updateProps: () => updateProps - }); - - // node_modules/echarts/lib/export/api/format.js - var format_exports2 = {}; - __export(format_exports2, { - addCommas: () => addCommas, - capitalFirst: () => capitalFirst, - encodeHTML: () => encodeHTML, - formatTime: () => formatTime, - formatTpl: () => formatTpl, - getTextRect: () => getTextRect, - getTooltipMarker: () => getTooltipMarker, - normalizeCssArray: () => normalizeCssArray2, - toCamelCase: () => toCamelCase, - truncateText: () => truncateText - }); - - // node_modules/echarts/lib/export/api/util.js - var util_exports2 = {}; - __export(util_exports2, { - bind: () => bind, - clone: () => clone, - curry: () => curry, - defaults: () => defaults, - each: () => each, - extend: () => extend, - filter: () => filter, - indexOf: () => indexOf, - inherits: () => inherits, - isArray: () => isArray, - isFunction: () => isFunction, - isObject: () => isObject, - isString: () => isString, - map: () => map, - merge: () => merge, - reduce: () => reduce - }); - - // node_modules/echarts/lib/coord/axisTickLabelBuilder.js - var inner6 = makeInner(); - function tickValuesToNumbers(axis, values) { - var nums = map(values, function(val) { - return axis.scale.parse(val); - }); - if (axis.type === "time" && nums.length > 0) { - nums.sort(); - nums.unshift(nums[0]); - nums.push(nums[nums.length - 1]); - } - return nums; - } - function createAxisLabels(axis) { - var custom = axis.getLabelModel().get("customValues"); - if (custom) { - var labelFormatter_1 = makeLabelFormatter(axis); - var extent_1 = axis.scale.getExtent(); - var tickNumbers = tickValuesToNumbers(axis, custom); - var ticks = filter(tickNumbers, function(val) { - return val >= extent_1[0] && val <= extent_1[1]; - }); - return { - labels: map(ticks, function(numval) { - var tick = { - value: numval - }; - return { - formattedLabel: labelFormatter_1(tick), - rawLabel: axis.scale.getLabel(tick), - tickValue: numval - }; - }) - }; - } - return axis.type === "category" ? makeCategoryLabels(axis) : makeRealNumberLabels(axis); - } - function createAxisTicks(axis, tickModel) { - var custom = axis.getTickModel().get("customValues"); - if (custom) { - var extent_2 = axis.scale.getExtent(); - var tickNumbers = tickValuesToNumbers(axis, custom); - return { - ticks: filter(tickNumbers, function(val) { - return val >= extent_2[0] && val <= extent_2[1]; - }) - }; - } - return axis.type === "category" ? makeCategoryTicks(axis, tickModel) : { - ticks: map(axis.scale.getTicks(), function(tick) { - return tick.value; - }) - }; - } - function makeCategoryLabels(axis) { - var labelModel = axis.getLabelModel(); - var result = makeCategoryLabelsActually(axis, labelModel); - return !labelModel.get("show") || axis.scale.isBlank() ? { - labels: [], - labelCategoryInterval: result.labelCategoryInterval - } : result; - } - function makeCategoryLabelsActually(axis, labelModel) { - var labelsCache = getListCache(axis, "labels"); - var optionLabelInterval = getOptionCategoryInterval(labelModel); - var result = listCacheGet(labelsCache, optionLabelInterval); - if (result) { - return result; - } - var labels; - var numericLabelInterval; - if (isFunction(optionLabelInterval)) { - labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval); - } else { - numericLabelInterval = optionLabelInterval === "auto" ? makeAutoCategoryInterval(axis) : optionLabelInterval; - labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval); - } - return listCacheSet(labelsCache, optionLabelInterval, { - labels, - labelCategoryInterval: numericLabelInterval - }); - } - function makeCategoryTicks(axis, tickModel) { - var ticksCache = getListCache(axis, "ticks"); - var optionTickInterval = getOptionCategoryInterval(tickModel); - var result = listCacheGet(ticksCache, optionTickInterval); - if (result) { - return result; - } - var ticks; - var tickCategoryInterval; - if (!tickModel.get("show") || axis.scale.isBlank()) { - ticks = []; - } - if (isFunction(optionTickInterval)) { - ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true); - } else if (optionTickInterval === "auto") { - var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel()); - tickCategoryInterval = labelsResult.labelCategoryInterval; - ticks = map(labelsResult.labels, function(labelItem) { - return labelItem.tickValue; - }); - } else { - tickCategoryInterval = optionTickInterval; - ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true); - } - return listCacheSet(ticksCache, optionTickInterval, { - ticks, - tickCategoryInterval - }); - } - function makeRealNumberLabels(axis) { - var ticks = axis.scale.getTicks(); - var labelFormatter = makeLabelFormatter(axis); - return { - labels: map(ticks, function(tick, idx) { - return { - level: tick.level, - formattedLabel: labelFormatter(tick, idx), - rawLabel: axis.scale.getLabel(tick), - tickValue: tick.value - }; - }) - }; - } - function getListCache(axis, prop) { - return inner6(axis)[prop] || (inner6(axis)[prop] = []); - } - function listCacheGet(cache2, key) { - for (var i = 0; i < cache2.length; i++) { - if (cache2[i].key === key) { - return cache2[i].value; - } - } - } - function listCacheSet(cache2, key, value) { - cache2.push({ - key, - value - }); - return value; - } - function makeAutoCategoryInterval(axis) { - var result = inner6(axis).autoInterval; - return result != null ? result : inner6(axis).autoInterval = axis.calculateCategoryInterval(); - } - function calculateCategoryInterval(axis) { - var params = fetchAutoCategoryIntervalCalculationParams(axis); - var labelFormatter = makeLabelFormatter(axis); - var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI; - var ordinalScale = axis.scale; - var ordinalExtent = ordinalScale.getExtent(); - var tickCount = ordinalScale.count(); - if (ordinalExtent[1] - ordinalExtent[0] < 1) { - return 0; - } - var step = 1; - if (tickCount > 40) { - step = Math.max(1, Math.floor(tickCount / 40)); - } - var tickValue = ordinalExtent[0]; - var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue); - var unitW = Math.abs(unitSpan * Math.cos(rotation)); - var unitH = Math.abs(unitSpan * Math.sin(rotation)); - var maxW = 0; - var maxH = 0; - for (; tickValue <= ordinalExtent[1]; tickValue += step) { - var width = 0; - var height = 0; - var rect = getBoundingRect(labelFormatter({ - value: tickValue - }), params.font, "center", "top"); - width = rect.width * 1.3; - height = rect.height * 1.3; - maxW = Math.max(maxW, width, 7); - maxH = Math.max(maxH, height, 7); - } - var dw = maxW / unitW; - var dh = maxH / unitH; - isNaN(dw) && (dw = Infinity); - isNaN(dh) && (dh = Infinity); - var interval = Math.max(0, Math.floor(Math.min(dw, dh))); - var cache2 = inner6(axis.model); - var axisExtent = axis.getExtent(); - var lastAutoInterval = cache2.lastAutoInterval; - var lastTickCount = cache2.lastTickCount; - if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 && lastAutoInterval > interval && cache2.axisExtent0 === axisExtent[0] && cache2.axisExtent1 === axisExtent[1]) { - interval = lastAutoInterval; - } else { - cache2.lastTickCount = tickCount; - cache2.lastAutoInterval = interval; - cache2.axisExtent0 = axisExtent[0]; - cache2.axisExtent1 = axisExtent[1]; - } - return interval; - } - function fetchAutoCategoryIntervalCalculationParams(axis) { - var labelModel = axis.getLabelModel(); - return { - axisRotate: axis.getRotate ? axis.getRotate() : axis.isHorizontal && !axis.isHorizontal() ? 90 : 0, - labelRotate: labelModel.get("rotate") || 0, - font: labelModel.getFont() - }; - } - function makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) { - var labelFormatter = makeLabelFormatter(axis); - var ordinalScale = axis.scale; - var ordinalExtent = ordinalScale.getExtent(); - var labelModel = axis.getLabelModel(); - var result = []; - var step = Math.max((categoryInterval || 0) + 1, 1); - var startTick = ordinalExtent[0]; - var tickCount = ordinalScale.count(); - if (startTick !== 0 && step > 1 && tickCount / step > 2) { - startTick = Math.round(Math.ceil(startTick / step) * step); - } - var showAllLabel = shouldShowAllLabels(axis); - var includeMinLabel = labelModel.get("showMinLabel") || showAllLabel; - var includeMaxLabel = labelModel.get("showMaxLabel") || showAllLabel; - if (includeMinLabel && startTick !== ordinalExtent[0]) { - addItem(ordinalExtent[0]); - } - var tickValue = startTick; - for (; tickValue <= ordinalExtent[1]; tickValue += step) { - addItem(tickValue); - } - if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) { - addItem(ordinalExtent[1]); - } - function addItem(tickValue2) { - var tickObj = { - value: tickValue2 - }; - result.push(onlyTick ? tickValue2 : { - formattedLabel: labelFormatter(tickObj), - rawLabel: ordinalScale.getLabel(tickObj), - tickValue: tickValue2 - }); - } - return result; - } - function makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) { - var ordinalScale = axis.scale; - var labelFormatter = makeLabelFormatter(axis); - var result = []; - each(ordinalScale.getTicks(), function(tick) { - var rawLabel = ordinalScale.getLabel(tick); - var tickValue = tick.value; - if (categoryInterval(tick.value, rawLabel)) { - result.push(onlyTick ? tickValue : { - formattedLabel: labelFormatter(tick), - rawLabel, - tickValue - }); - } - }); - return result; - } - - // node_modules/echarts/lib/coord/Axis.js - var NORMALIZED_EXTENT = [0, 1]; - var Axis = ( - /** @class */ - function() { - function Axis2(dim, scale4, extent3) { - this.onBand = false; - this.inverse = false; - this.dim = dim; - this.scale = scale4; - this._extent = extent3 || [0, 0]; - } - Axis2.prototype.contain = function(coord) { - var extent3 = this._extent; - var min4 = Math.min(extent3[0], extent3[1]); - var max4 = Math.max(extent3[0], extent3[1]); - return coord >= min4 && coord <= max4; - }; - Axis2.prototype.containData = function(data) { - return this.scale.contain(data); - }; - Axis2.prototype.getExtent = function() { - return this._extent.slice(); - }; - Axis2.prototype.getPixelPrecision = function(dataExtent) { - return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent); - }; - Axis2.prototype.setExtent = function(start3, end2) { - var extent3 = this._extent; - extent3[0] = start3; - extent3[1] = end2; - }; - Axis2.prototype.dataToCoord = function(data, clamp3) { - var extent3 = this._extent; - var scale4 = this.scale; - data = scale4.normalize(data); - if (this.onBand && scale4.type === "ordinal") { - extent3 = extent3.slice(); - fixExtentWithBands(extent3, scale4.count()); - } - return linearMap(data, NORMALIZED_EXTENT, extent3, clamp3); - }; - Axis2.prototype.coordToData = function(coord, clamp3) { - var extent3 = this._extent; - var scale4 = this.scale; - if (this.onBand && scale4.type === "ordinal") { - extent3 = extent3.slice(); - fixExtentWithBands(extent3, scale4.count()); - } - var t = linearMap(coord, extent3, NORMALIZED_EXTENT, clamp3); - return this.scale.scale(t); - }; - Axis2.prototype.pointToData = function(point, clamp3) { - return; - }; - Axis2.prototype.getTicksCoords = function(opt) { - opt = opt || {}; - var tickModel = opt.tickModel || this.getTickModel(); - var result = createAxisTicks(this, tickModel); - var ticks = result.ticks; - var ticksCoords = map(ticks, function(tickVal) { - return { - coord: this.dataToCoord(this.scale.type === "ordinal" ? this.scale.getRawOrdinalNumber(tickVal) : tickVal), - tickValue: tickVal - }; - }, this); - var alignWithLabel = tickModel.get("alignWithLabel"); - fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp); - return ticksCoords; - }; - Axis2.prototype.getMinorTicksCoords = function() { - if (this.scale.type === "ordinal") { - return []; - } - var minorTickModel = this.model.getModel("minorTick"); - var splitNumber = minorTickModel.get("splitNumber"); - if (!(splitNumber > 0 && splitNumber < 100)) { - splitNumber = 5; - } - var minorTicks = this.scale.getMinorTicks(splitNumber); - var minorTicksCoords = map(minorTicks, function(minorTicksGroup) { - return map(minorTicksGroup, function(minorTick) { - return { - coord: this.dataToCoord(minorTick), - tickValue: minorTick - }; - }, this); - }, this); - return minorTicksCoords; - }; - Axis2.prototype.getViewLabels = function() { - return createAxisLabels(this).labels; - }; - Axis2.prototype.getLabelModel = function() { - return this.model.getModel("axisLabel"); - }; - Axis2.prototype.getTickModel = function() { - return this.model.getModel("axisTick"); - }; - Axis2.prototype.getBandWidth = function() { - var axisExtent = this._extent; - var dataExtent = this.scale.getExtent(); - var len2 = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0); - len2 === 0 && (len2 = 1); - var size2 = Math.abs(axisExtent[1] - axisExtent[0]); - return Math.abs(size2) / len2; - }; - Axis2.prototype.calculateCategoryInterval = function() { - return calculateCategoryInterval(this); - }; - return Axis2; - }() - ); - function fixExtentWithBands(extent3, nTick) { - var size2 = extent3[1] - extent3[0]; - var len2 = nTick; - var margin = size2 / len2 / 2; - extent3[0] += margin; - extent3[1] -= margin; - } - function fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp3) { - var ticksLen = ticksCoords.length; - if (!axis.onBand || alignWithLabel || !ticksLen) { - return; - } - var axisExtent = axis.getExtent(); - var last; - var diffSize; - if (ticksLen === 1) { - ticksCoords[0].coord = axisExtent[0]; - last = ticksCoords[1] = { - coord: axisExtent[1], - tickValue: ticksCoords[0].tickValue - }; - } else { - var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue; - var shift_1 = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen; - each(ticksCoords, function(ticksItem) { - ticksItem.coord -= shift_1 / 2; - }); - var dataExtent = axis.scale.getExtent(); - diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue; - last = { - coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize, - tickValue: dataExtent[1] + 1 - }; - ticksCoords.push(last); - } - var inverse = axisExtent[0] > axisExtent[1]; - if (littleThan2(ticksCoords[0].coord, axisExtent[0])) { - clamp3 ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift(); - } - if (clamp3 && littleThan2(axisExtent[0], ticksCoords[0].coord)) { - ticksCoords.unshift({ - coord: axisExtent[0] - }); - } - if (littleThan2(axisExtent[1], last.coord)) { - clamp3 ? last.coord = axisExtent[1] : ticksCoords.pop(); - } - if (clamp3 && littleThan2(last.coord, axisExtent[1])) { - ticksCoords.push({ - coord: axisExtent[1] - }); - } - function littleThan2(a, b) { - a = round(a); - b = round(b); - return inverse ? a > b : a < b; - } - } - var Axis_default = Axis; - - // node_modules/echarts/lib/export/api.js - function extendComponentModel(proto2) { - var Model2 = Component_default.extend(proto2); - Component_default.registerClass(Model2); - return Model2; - } - function extendComponentView(proto2) { - var View3 = Component_default2.extend(proto2); - Component_default2.registerClass(View3); - return View3; - } - function extendSeriesModel(proto2) { - var Model2 = Series_default.extend(proto2); - Series_default.registerClass(Model2); - return Model2; - } - function extendChartView(proto2) { - var View3 = Chart_default.extend(proto2); - Chart_default.registerClass(View3); - return View3; - } - - // node_modules/echarts/lib/label/labelGuideHelper.js - var PI27 = Math.PI * 2; - var CMD4 = PathProxy_default.CMD; - var DEFAULT_SEARCH_SPACE = ["top", "right", "bottom", "left"]; - function getCandidateAnchor(pos, distance2, rect, outPt, outDir) { - var width = rect.width; - var height = rect.height; - switch (pos) { - case "top": - outPt.set(rect.x + width / 2, rect.y - distance2); - outDir.set(0, -1); - break; - case "bottom": - outPt.set(rect.x + width / 2, rect.y + height + distance2); - outDir.set(0, 1); - break; - case "left": - outPt.set(rect.x - distance2, rect.y + height / 2); - outDir.set(-1, 0); - break; - case "right": - outPt.set(rect.x + width + distance2, rect.y + height / 2); - outDir.set(1, 0); - break; - } - } - function projectPointToArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out2) { - x -= cx; - y -= cy; - var d = Math.sqrt(x * x + y * y); - x /= d; - y /= d; - var ox = x * r + cx; - var oy = y * r + cy; - if (Math.abs(startAngle - endAngle) % PI27 < 1e-4) { - out2[0] = ox; - out2[1] = oy; - return d - r; - } - if (anticlockwise) { - var tmp = startAngle; - startAngle = normalizeRadian(endAngle); - endAngle = normalizeRadian(tmp); - } else { - startAngle = normalizeRadian(startAngle); - endAngle = normalizeRadian(endAngle); - } - if (startAngle > endAngle) { - endAngle += PI27; - } - var angle = Math.atan2(y, x); - if (angle < 0) { - angle += PI27; - } - if (angle >= startAngle && angle <= endAngle || angle + PI27 >= startAngle && angle + PI27 <= endAngle) { - out2[0] = ox; - out2[1] = oy; - return d - r; - } - var x1 = r * Math.cos(startAngle) + cx; - var y1 = r * Math.sin(startAngle) + cy; - var x2 = r * Math.cos(endAngle) + cx; - var y2 = r * Math.sin(endAngle) + cy; - var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y); - var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y); - if (d1 < d2) { - out2[0] = x1; - out2[1] = y1; - return Math.sqrt(d1); - } else { - out2[0] = x2; - out2[1] = y2; - return Math.sqrt(d2); - } - } - function projectPointToLine(x1, y1, x2, y2, x, y, out2, limitToEnds) { - var dx = x - x1; - var dy = y - y1; - var dx1 = x2 - x1; - var dy1 = y2 - y1; - var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1); - dx1 /= lineLen; - dy1 /= lineLen; - var projectedLen = dx * dx1 + dy * dy1; - var t = projectedLen / lineLen; - if (limitToEnds) { - t = Math.min(Math.max(t, 0), 1); - } - t *= lineLen; - var ox = out2[0] = x1 + t * dx1; - var oy = out2[1] = y1 + t * dy1; - return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y)); - } - function projectPointToRect(x1, y1, width, height, x, y, out2) { - if (width < 0) { - x1 = x1 + width; - width = -width; - } - if (height < 0) { - y1 = y1 + height; - height = -height; - } - var x2 = x1 + width; - var y2 = y1 + height; - var ox = out2[0] = Math.min(Math.max(x, x1), x2); - var oy = out2[1] = Math.min(Math.max(y, y1), y2); - return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y)); - } - var tmpPt = []; - function nearestPointOnRect(pt, rect, out2) { - var dist3 = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt); - out2.set(tmpPt[0], tmpPt[1]); - return dist3; - } - function nearestPointOnPath(pt, path, out2) { - var xi = 0; - var yi = 0; - var x0 = 0; - var y0 = 0; - var x1; - var y1; - var minDist = Infinity; - var data = path.data; - var x = pt.x; - var y = pt.y; - for (var i = 0; i < data.length; ) { - var cmd = data[i++]; - if (i === 1) { - xi = data[i]; - yi = data[i + 1]; - x0 = xi; - y0 = yi; - } - var d = minDist; - switch (cmd) { - case CMD4.M: - x0 = data[i++]; - y0 = data[i++]; - xi = x0; - yi = y0; - break; - case CMD4.L: - d = projectPointToLine(xi, yi, data[i], data[i + 1], x, y, tmpPt, true); - xi = data[i++]; - yi = data[i++]; - break; - case CMD4.C: - d = cubicProjectPoint(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt); - xi = data[i++]; - yi = data[i++]; - break; - case CMD4.Q: - d = quadraticProjectPoint(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt); - xi = data[i++]; - yi = data[i++]; - break; - case CMD4.A: - var cx = data[i++]; - var cy = data[i++]; - var rx = data[i++]; - var ry = data[i++]; - var theta = data[i++]; - var dTheta = data[i++]; - i += 1; - var anticlockwise = !!(1 - data[i++]); - x1 = Math.cos(theta) * rx + cx; - y1 = Math.sin(theta) * ry + cy; - if (i <= 1) { - x0 = x1; - y0 = y1; - } - var _x = (x - cx) * ry / rx + cx; - d = projectPointToArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y, tmpPt); - xi = Math.cos(theta + dTheta) * rx + cx; - yi = Math.sin(theta + dTheta) * ry + cy; - break; - case CMD4.R: - x0 = xi = data[i++]; - y0 = yi = data[i++]; - var width = data[i++]; - var height = data[i++]; - d = projectPointToRect(x0, y0, width, height, x, y, tmpPt); - break; - case CMD4.Z: - d = projectPointToLine(xi, yi, x0, y0, x, y, tmpPt, true); - xi = x0; - yi = y0; - break; - } - if (d < minDist) { - minDist = d; - out2.set(tmpPt[0], tmpPt[1]); - } - } - return minDist; - } - var pt0 = new Point_default(); - var pt1 = new Point_default(); - var pt2 = new Point_default(); - var dir = new Point_default(); - var dir2 = new Point_default(); - function updateLabelLinePoints(target, labelLineModel) { - if (!target) { - return; - } - var labelLine = target.getTextGuideLine(); - var label = target.getTextContent(); - if (!(label && labelLine)) { - return; - } - var labelGuideConfig = target.textGuideLineConfig || {}; - var points4 = [[0, 0], [0, 0], [0, 0]]; - var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE; - var labelRect = label.getBoundingRect().clone(); - labelRect.applyTransform(label.getComputedTransform()); - var minDist = Infinity; - var anchorPoint = labelGuideConfig.anchor; - var targetTransform = target.getComputedTransform(); - var targetInversedTransform = targetTransform && invert([], targetTransform); - var len2 = labelLineModel.get("length2") || 0; - if (anchorPoint) { - pt2.copy(anchorPoint); - } - for (var i = 0; i < searchSpace.length; i++) { - var candidate = searchSpace[i]; - getCandidateAnchor(candidate, 0, labelRect, pt0, dir); - Point_default.scaleAndAdd(pt1, pt0, dir, len2); - pt1.transform(targetInversedTransform); - var boundingRect = target.getBoundingRect(); - var dist3 = anchorPoint ? anchorPoint.distance(pt1) : target instanceof Path_default ? nearestPointOnPath(pt1, target.path, pt2) : nearestPointOnRect(pt1, boundingRect, pt2); - if (dist3 < minDist) { - minDist = dist3; - pt1.transform(targetTransform); - pt2.transform(targetTransform); - pt2.toArray(points4[0]); - pt1.toArray(points4[1]); - pt0.toArray(points4[2]); - } - } - limitTurnAngle(points4, labelLineModel.get("minTurnAngle")); - labelLine.setShape({ - points: points4 - }); - } - var tmpArr = []; - var tmpProjPoint = new Point_default(); - function limitTurnAngle(linePoints, minTurnAngle) { - if (!(minTurnAngle <= 180 && minTurnAngle > 0)) { - return; - } - minTurnAngle = minTurnAngle / 180 * Math.PI; - pt0.fromArray(linePoints[0]); - pt1.fromArray(linePoints[1]); - pt2.fromArray(linePoints[2]); - Point_default.sub(dir, pt0, pt1); - Point_default.sub(dir2, pt2, pt1); - var len1 = dir.len(); - var len2 = dir2.len(); - if (len1 < 1e-3 || len2 < 1e-3) { - return; - } - dir.scale(1 / len1); - dir2.scale(1 / len2); - var angleCos = dir.dot(dir2); - var minTurnAngleCos = Math.cos(minTurnAngle); - if (minTurnAngleCos < angleCos) { - var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false); - tmpProjPoint.fromArray(tmpArr); - tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI - minTurnAngle)); - var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y); - if (isNaN(t)) { - return; - } - if (t < 0) { - Point_default.copy(tmpProjPoint, pt1); - } else if (t > 1) { - Point_default.copy(tmpProjPoint, pt2); - } - tmpProjPoint.toArray(linePoints[1]); - } - } - function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) { - if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) { - return; - } - maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI; - pt0.fromArray(linePoints[0]); - pt1.fromArray(linePoints[1]); - pt2.fromArray(linePoints[2]); - Point_default.sub(dir, pt1, pt0); - Point_default.sub(dir2, pt2, pt1); - var len1 = dir.len(); - var len2 = dir2.len(); - if (len1 < 1e-3 || len2 < 1e-3) { - return; - } - dir.scale(1 / len1); - dir2.scale(1 / len2); - var angleCos = dir.dot(surfaceNormal); - var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle); - if (angleCos < maxSurfaceAngleCos) { - var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false); - tmpProjPoint.fromArray(tmpArr); - var HALF_PI = Math.PI / 2; - var angle2 = Math.acos(dir2.dot(surfaceNormal)); - var newAngle = HALF_PI + angle2 - maxSurfaceAngle; - if (newAngle >= HALF_PI) { - Point_default.copy(tmpProjPoint, pt2); - } else { - tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI / 2 - newAngle)); - var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y); - if (isNaN(t)) { - return; - } - if (t < 0) { - Point_default.copy(tmpProjPoint, pt1); - } else if (t > 1) { - Point_default.copy(tmpProjPoint, pt2); - } - } - tmpProjPoint.toArray(linePoints[1]); - } - } - function setLabelLineState(labelLine, ignore, stateName, stateModel) { - var isNormal = stateName === "normal"; - var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName); - stateObj.ignore = ignore; - var smooth = stateModel.get("smooth"); - if (smooth && smooth === true) { - smooth = 0.3; - } - stateObj.shape = stateObj.shape || {}; - if (smooth > 0) { - stateObj.shape.smooth = smooth; - } - var styleObj = stateModel.getModel("lineStyle").getLineStyle(); - isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj; - } - function buildLabelLinePath(path, shape) { - var smooth = shape.smooth; - var points4 = shape.points; - if (!points4) { - return; - } - path.moveTo(points4[0][0], points4[0][1]); - if (smooth > 0 && points4.length >= 3) { - var len1 = dist(points4[0], points4[1]); - var len2 = dist(points4[1], points4[2]); - if (!len1 || !len2) { - path.lineTo(points4[1][0], points4[1][1]); - path.lineTo(points4[2][0], points4[2][1]); - return; - } - var moveLen = Math.min(len1, len2) * smooth; - var midPoint0 = lerp([], points4[1], points4[0], moveLen / len1); - var midPoint2 = lerp([], points4[1], points4[2], moveLen / len2); - var midPoint1 = lerp([], midPoint0, midPoint2, 0.5); - path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]); - path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points4[2][0], points4[2][1]); - } else { - for (var i = 1; i < points4.length; i++) { - path.lineTo(points4[i][0], points4[i][1]); - } - } - } - function setLabelLineStyle(targetEl, statesModels, defaultStyle) { - var labelLine = targetEl.getTextGuideLine(); - var label = targetEl.getTextContent(); - if (!label) { - if (labelLine) { - targetEl.removeTextGuideLine(); - } - return; - } - var normalModel = statesModels.normal; - var showNormal = normalModel.get("show"); - var labelIgnoreNormal = label.ignore; - for (var i = 0; i < DISPLAY_STATES.length; i++) { - var stateName = DISPLAY_STATES[i]; - var stateModel = statesModels[stateName]; - var isNormal = stateName === "normal"; - if (stateModel) { - var stateShow = stateModel.get("show"); - var isLabelIgnored = isNormal ? labelIgnoreNormal : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal); - if (isLabelIgnored || !retrieve2(stateShow, showNormal)) { - var stateObj = isNormal ? labelLine : labelLine && labelLine.states[stateName]; - if (stateObj) { - stateObj.ignore = true; - } - if (!!labelLine) { - setLabelLineState(labelLine, true, stateName, stateModel); - } - continue; - } - if (!labelLine) { - labelLine = new Polyline_default(); - targetEl.setTextGuideLine(labelLine); - if (!isNormal && (labelIgnoreNormal || !showNormal)) { - setLabelLineState(labelLine, true, "normal", statesModels.normal); - } - if (targetEl.stateProxy) { - labelLine.stateProxy = targetEl.stateProxy; - } - } - setLabelLineState(labelLine, false, stateName, stateModel); - } - } - if (labelLine) { - defaults(labelLine.style, defaultStyle); - labelLine.style.fill = null; - var showAbove = normalModel.get("showAbove"); - var labelLineConfig = targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {}; - labelLineConfig.showAbove = showAbove || false; - labelLine.buildPath = buildLabelLinePath; - } - } - function getLabelLineStatesModels(itemModel, labelLineName) { - labelLineName = labelLineName || "labelLine"; - var statesModels = { - normal: itemModel.getModel(labelLineName) - }; - for (var i = 0; i < SPECIAL_STATES.length; i++) { - var stateName = SPECIAL_STATES[i]; - statesModels[stateName] = itemModel.getModel([stateName, labelLineName]); - } - return statesModels; - } - - // node_modules/echarts/lib/label/labelLayoutHelper.js - function prepareLayoutList(input) { - var list = []; - for (var i = 0; i < input.length; i++) { - var rawItem = input[i]; - if (rawItem.defaultAttr.ignore) { - continue; - } - var label = rawItem.label; - var transform2 = label.getComputedTransform(); - var localRect = label.getBoundingRect(); - var isAxisAligned = !transform2 || transform2[1] < 1e-5 && transform2[2] < 1e-5; - var minMargin = label.style.margin || 0; - var globalRect = localRect.clone(); - globalRect.applyTransform(transform2); - globalRect.x -= minMargin / 2; - globalRect.y -= minMargin / 2; - globalRect.width += minMargin; - globalRect.height += minMargin; - var obb = isAxisAligned ? new OrientedBoundingRect_default(localRect, transform2) : null; - list.push({ - label, - labelLine: rawItem.labelLine, - rect: globalRect, - localRect, - obb, - priority: rawItem.priority, - defaultAttr: rawItem.defaultAttr, - layoutOption: rawItem.computedLayoutOption, - axisAligned: isAxisAligned, - transform: transform2 - }); - } - return list; - } - function shiftLayout(list, xyDim, sizeDim, minBound, maxBound, balanceShift) { - var len2 = list.length; - if (len2 < 2) { - return; - } - list.sort(function(a, b) { - return a.rect[xyDim] - b.rect[xyDim]; - }); - var lastPos = 0; - var delta; - var adjusted = false; - var shifts = []; - var totalShifts = 0; - for (var i = 0; i < len2; i++) { - var item = list[i]; - var rect = item.rect; - delta = rect[xyDim] - lastPos; - if (delta < 0) { - rect[xyDim] -= delta; - item.label[xyDim] -= delta; - adjusted = true; - } - var shift3 = Math.max(-delta, 0); - shifts.push(shift3); - totalShifts += shift3; - lastPos = rect[xyDim] + rect[sizeDim]; - } - if (totalShifts > 0 && balanceShift) { - shiftList(-totalShifts / len2, 0, len2); - } - var first = list[0]; - var last = list[len2 - 1]; - var minGap; - var maxGap; - updateMinMaxGap(); - minGap < 0 && squeezeGaps(-minGap, 0.8); - maxGap < 0 && squeezeGaps(maxGap, 0.8); - updateMinMaxGap(); - takeBoundsGap(minGap, maxGap, 1); - takeBoundsGap(maxGap, minGap, -1); - updateMinMaxGap(); - if (minGap < 0) { - squeezeWhenBailout(-minGap); - } - if (maxGap < 0) { - squeezeWhenBailout(maxGap); - } - function updateMinMaxGap() { - minGap = first.rect[xyDim] - minBound; - maxGap = maxBound - last.rect[xyDim] - last.rect[sizeDim]; - } - function takeBoundsGap(gapThisBound, gapOtherBound, moveDir) { - if (gapThisBound < 0) { - var moveFromMaxGap = Math.min(gapOtherBound, -gapThisBound); - if (moveFromMaxGap > 0) { - shiftList(moveFromMaxGap * moveDir, 0, len2); - var remained = moveFromMaxGap + gapThisBound; - if (remained < 0) { - squeezeGaps(-remained * moveDir, 1); - } - } else { - squeezeGaps(-gapThisBound * moveDir, 1); - } - } - } - function shiftList(delta2, start3, end2) { - if (delta2 !== 0) { - adjusted = true; - } - for (var i2 = start3; i2 < end2; i2++) { - var item2 = list[i2]; - var rect2 = item2.rect; - rect2[xyDim] += delta2; - item2.label[xyDim] += delta2; - } - } - function squeezeGaps(delta2, maxSqeezePercent) { - var gaps = []; - var totalGaps = 0; - for (var i2 = 1; i2 < len2; i2++) { - var prevItemRect = list[i2 - 1].rect; - var gap = Math.max(list[i2].rect[xyDim] - prevItemRect[xyDim] - prevItemRect[sizeDim], 0); - gaps.push(gap); - totalGaps += gap; - } - if (!totalGaps) { - return; - } - var squeezePercent = Math.min(Math.abs(delta2) / totalGaps, maxSqeezePercent); - if (delta2 > 0) { - for (var i2 = 0; i2 < len2 - 1; i2++) { - var movement = gaps[i2] * squeezePercent; - shiftList(movement, 0, i2 + 1); - } - } else { - for (var i2 = len2 - 1; i2 > 0; i2--) { - var movement = gaps[i2 - 1] * squeezePercent; - shiftList(-movement, i2, len2); - } - } - } - function squeezeWhenBailout(delta2) { - var dir3 = delta2 < 0 ? -1 : 1; - delta2 = Math.abs(delta2); - var moveForEachLabel = Math.ceil(delta2 / (len2 - 1)); - for (var i2 = 0; i2 < len2 - 1; i2++) { - if (dir3 > 0) { - shiftList(moveForEachLabel, 0, i2 + 1); - } else { - shiftList(-moveForEachLabel, len2 - i2 - 1, len2); - } - delta2 -= moveForEachLabel; - if (delta2 <= 0) { - return; - } - } - } - return adjusted; - } - function shiftLayoutOnX(list, leftBound, rightBound, balanceShift) { - return shiftLayout(list, "x", "width", leftBound, rightBound, balanceShift); - } - function shiftLayoutOnY(list, topBound, bottomBound, balanceShift) { - return shiftLayout(list, "y", "height", topBound, bottomBound, balanceShift); - } - function hideOverlap(labelList) { - var displayedLabels = []; - labelList.sort(function(a, b) { - return b.priority - a.priority; - }); - var globalRect = new BoundingRect_default(0, 0, 0, 0); - function hideEl(el) { - if (!el.ignore) { - var emphasisState = el.ensureState("emphasis"); - if (emphasisState.ignore == null) { - emphasisState.ignore = false; - } - } - el.ignore = true; - } - for (var i = 0; i < labelList.length; i++) { - var labelItem = labelList[i]; - var isAxisAligned = labelItem.axisAligned; - var localRect = labelItem.localRect; - var transform2 = labelItem.transform; - var label = labelItem.label; - var labelLine = labelItem.labelLine; - globalRect.copy(labelItem.rect); - globalRect.width -= 0.1; - globalRect.height -= 0.1; - globalRect.x += 0.05; - globalRect.y += 0.05; - var obb = labelItem.obb; - var overlapped = false; - for (var j = 0; j < displayedLabels.length; j++) { - var existsTextCfg = displayedLabels[j]; - if (!globalRect.intersect(existsTextCfg.rect)) { - continue; - } - if (isAxisAligned && existsTextCfg.axisAligned) { - overlapped = true; - break; - } - if (!existsTextCfg.obb) { - existsTextCfg.obb = new OrientedBoundingRect_default(existsTextCfg.localRect, existsTextCfg.transform); - } - if (!obb) { - obb = new OrientedBoundingRect_default(localRect, transform2); - } - if (obb.intersect(existsTextCfg.obb)) { - overlapped = true; - break; - } - } - if (overlapped) { - hideEl(label); - labelLine && hideEl(labelLine); - } else { - label.attr("ignore", labelItem.defaultAttr.ignore); - labelLine && labelLine.attr("ignore", labelItem.defaultAttr.labelGuideIgnore); - displayedLabels.push(labelItem); - } - } - } - - // node_modules/echarts/lib/label/LabelManager.js - function cloneArr(points4) { - if (points4) { - var newPoints = []; - for (var i = 0; i < points4.length; i++) { - newPoints.push(points4[i].slice()); - } - return newPoints; - } - } - function prepareLayoutCallbackParams(labelItem, hostEl) { - var label = labelItem.label; - var labelLine = hostEl && hostEl.getTextGuideLine(); - return { - dataIndex: labelItem.dataIndex, - dataType: labelItem.dataType, - seriesIndex: labelItem.seriesModel.seriesIndex, - text: labelItem.label.style.text, - rect: labelItem.hostRect, - labelRect: labelItem.rect, - // x: labelAttr.x, - // y: labelAttr.y, - align: label.style.align, - verticalAlign: label.style.verticalAlign, - labelLinePoints: cloneArr(labelLine && labelLine.shape.points) - }; - } - var LABEL_OPTION_TO_STYLE_KEYS = ["align", "verticalAlign", "width", "height", "fontSize"]; - var dummyTransformable = new Transformable_default(); - var labelLayoutInnerStore = makeInner(); - var labelLineAnimationStore = makeInner(); - function extendWithKeys(target, source, keys2) { - for (var i = 0; i < keys2.length; i++) { - var key = keys2[i]; - if (source[key] != null) { - target[key] = source[key]; - } - } - } - var LABEL_LAYOUT_PROPS = ["x", "y", "rotation"]; - var LabelManager = ( - /** @class */ - function() { - function LabelManager2() { - this._labelList = []; - this._chartViewList = []; - } - LabelManager2.prototype.clearLabels = function() { - this._labelList = []; - this._chartViewList = []; - }; - LabelManager2.prototype._addLabel = function(dataIndex, dataType, seriesModel, label, layoutOption) { - var labelStyle = label.style; - var hostEl = label.__hostTarget; - var textConfig = hostEl.textConfig || {}; - var labelTransform = label.getComputedTransform(); - var labelRect = label.getBoundingRect().plain(); - BoundingRect_default.applyTransform(labelRect, labelRect, labelTransform); - if (labelTransform) { - dummyTransformable.setLocalTransform(labelTransform); - } else { - dummyTransformable.x = dummyTransformable.y = dummyTransformable.rotation = dummyTransformable.originX = dummyTransformable.originY = 0; - dummyTransformable.scaleX = dummyTransformable.scaleY = 1; - } - dummyTransformable.rotation = normalizeRadian(dummyTransformable.rotation); - var host = label.__hostTarget; - var hostRect; - if (host) { - hostRect = host.getBoundingRect().plain(); - var transform2 = host.getComputedTransform(); - BoundingRect_default.applyTransform(hostRect, hostRect, transform2); - } - var labelGuide = hostRect && host.getTextGuideLine(); - this._labelList.push({ - label, - labelLine: labelGuide, - seriesModel, - dataIndex, - dataType, - layoutOption, - computedLayoutOption: null, - rect: labelRect, - hostRect, - // Label with lower priority will be hidden when overlapped - // Use rect size as default priority - priority: hostRect ? hostRect.width * hostRect.height : 0, - // Save default label attributes. - // For restore if developers want get back to default value in callback. - defaultAttr: { - ignore: label.ignore, - labelGuideIgnore: labelGuide && labelGuide.ignore, - x: dummyTransformable.x, - y: dummyTransformable.y, - scaleX: dummyTransformable.scaleX, - scaleY: dummyTransformable.scaleY, - rotation: dummyTransformable.rotation, - style: { - x: labelStyle.x, - y: labelStyle.y, - align: labelStyle.align, - verticalAlign: labelStyle.verticalAlign, - width: labelStyle.width, - height: labelStyle.height, - fontSize: labelStyle.fontSize - }, - cursor: label.cursor, - attachedPos: textConfig.position, - attachedRot: textConfig.rotation - } - }); - }; - LabelManager2.prototype.addLabelsOfSeries = function(chartView) { - var _this = this; - this._chartViewList.push(chartView); - var seriesModel = chartView.__model; - var layoutOption = seriesModel.get("labelLayout"); - if (!(isFunction(layoutOption) || keys(layoutOption).length)) { - return; - } - chartView.group.traverse(function(child) { - if (child.ignore) { - return true; - } - var textEl = child.getTextContent(); - var ecData = getECData(child); - if (textEl && !textEl.disableLabelLayout) { - _this._addLabel(ecData.dataIndex, ecData.dataType, seriesModel, textEl, layoutOption); - } - }); - }; - LabelManager2.prototype.updateLayoutConfig = function(api) { - var width = api.getWidth(); - var height = api.getHeight(); - function createDragHandler(el, labelLineModel) { - return function() { - updateLabelLinePoints(el, labelLineModel); - }; - } - for (var i = 0; i < this._labelList.length; i++) { - var labelItem = this._labelList[i]; - var label = labelItem.label; - var hostEl = label.__hostTarget; - var defaultLabelAttr = labelItem.defaultAttr; - var layoutOption = void 0; - if (isFunction(labelItem.layoutOption)) { - layoutOption = labelItem.layoutOption(prepareLayoutCallbackParams(labelItem, hostEl)); - } else { - layoutOption = labelItem.layoutOption; - } - layoutOption = layoutOption || {}; - labelItem.computedLayoutOption = layoutOption; - var degreeToRadian = Math.PI / 180; - if (hostEl) { - hostEl.setTextConfig({ - // Force to set local false. - local: false, - // Ignore position and rotation config on the host el if x or y is changed. - position: layoutOption.x != null || layoutOption.y != null ? null : defaultLabelAttr.attachedPos, - // Ignore rotation config on the host el if rotation is changed. - rotation: layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.attachedRot, - offset: [layoutOption.dx || 0, layoutOption.dy || 0] - }); - } - var needsUpdateLabelLine = false; - if (layoutOption.x != null) { - label.x = parsePercent2(layoutOption.x, width); - label.setStyle("x", 0); - needsUpdateLabelLine = true; - } else { - label.x = defaultLabelAttr.x; - label.setStyle("x", defaultLabelAttr.style.x); - } - if (layoutOption.y != null) { - label.y = parsePercent2(layoutOption.y, height); - label.setStyle("y", 0); - needsUpdateLabelLine = true; - } else { - label.y = defaultLabelAttr.y; - label.setStyle("y", defaultLabelAttr.style.y); - } - if (layoutOption.labelLinePoints) { - var guideLine = hostEl.getTextGuideLine(); - if (guideLine) { - guideLine.setShape({ - points: layoutOption.labelLinePoints - }); - needsUpdateLabelLine = false; - } - } - var labelLayoutStore = labelLayoutInnerStore(label); - labelLayoutStore.needsUpdateLabelLine = needsUpdateLabelLine; - label.rotation = layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.rotation; - label.scaleX = defaultLabelAttr.scaleX; - label.scaleY = defaultLabelAttr.scaleY; - for (var k = 0; k < LABEL_OPTION_TO_STYLE_KEYS.length; k++) { - var key = LABEL_OPTION_TO_STYLE_KEYS[k]; - label.setStyle(key, layoutOption[key] != null ? layoutOption[key] : defaultLabelAttr.style[key]); - } - if (layoutOption.draggable) { - label.draggable = true; - label.cursor = "move"; - if (hostEl) { - var hostModel = labelItem.seriesModel; - if (labelItem.dataIndex != null) { - var data = labelItem.seriesModel.getData(labelItem.dataType); - hostModel = data.getItemModel(labelItem.dataIndex); - } - label.on("drag", createDragHandler(hostEl, hostModel.getModel("labelLine"))); - } - } else { - label.off("drag"); - label.cursor = defaultLabelAttr.cursor; - } - } - }; - LabelManager2.prototype.layout = function(api) { - var width = api.getWidth(); - var height = api.getHeight(); - var labelList = prepareLayoutList(this._labelList); - var labelsNeedsAdjustOnX = filter(labelList, function(item) { - return item.layoutOption.moveOverlap === "shiftX"; - }); - var labelsNeedsAdjustOnY = filter(labelList, function(item) { - return item.layoutOption.moveOverlap === "shiftY"; - }); - shiftLayoutOnX(labelsNeedsAdjustOnX, 0, width); - shiftLayoutOnY(labelsNeedsAdjustOnY, 0, height); - var labelsNeedsHideOverlap = filter(labelList, function(item) { - return item.layoutOption.hideOverlap; - }); - hideOverlap(labelsNeedsHideOverlap); - }; - LabelManager2.prototype.processLabelsOverall = function() { - var _this = this; - each(this._chartViewList, function(chartView) { - var seriesModel = chartView.__model; - var ignoreLabelLineUpdate = chartView.ignoreLabelLineUpdate; - var animationEnabled = seriesModel.isAnimationEnabled(); - chartView.group.traverse(function(child) { - if (child.ignore && !child.forceLabelAnimation) { - return true; - } - var needsUpdateLabelLine = !ignoreLabelLineUpdate; - var label = child.getTextContent(); - if (!needsUpdateLabelLine && label) { - needsUpdateLabelLine = labelLayoutInnerStore(label).needsUpdateLabelLine; - } - if (needsUpdateLabelLine) { - _this._updateLabelLine(child, seriesModel); - } - if (animationEnabled) { - _this._animateLabels(child, seriesModel); - } - }); - }); - }; - LabelManager2.prototype._updateLabelLine = function(el, seriesModel) { - var textEl = el.getTextContent(); - var ecData = getECData(el); - var dataIndex = ecData.dataIndex; - if (textEl && dataIndex != null) { - var data = seriesModel.getData(ecData.dataType); - var itemModel = data.getItemModel(dataIndex); - var defaultStyle = {}; - var visualStyle = data.getItemVisual(dataIndex, "style"); - if (visualStyle) { - var visualType = data.getVisual("drawType"); - defaultStyle.stroke = visualStyle[visualType]; - } - var labelLineModel = itemModel.getModel("labelLine"); - setLabelLineStyle(el, getLabelLineStatesModels(itemModel), defaultStyle); - updateLabelLinePoints(el, labelLineModel); - } - }; - LabelManager2.prototype._animateLabels = function(el, seriesModel) { - var textEl = el.getTextContent(); - var guideLine = el.getTextGuideLine(); - if (textEl && (el.forceLabelAnimation || !textEl.ignore && !textEl.invisible && !el.disableLabelAnimation && !isElementRemoved(el))) { - var layoutStore = labelLayoutInnerStore(textEl); - var oldLayout = layoutStore.oldLayout; - var ecData = getECData(el); - var dataIndex = ecData.dataIndex; - var newProps = { - x: textEl.x, - y: textEl.y, - rotation: textEl.rotation - }; - var data = seriesModel.getData(ecData.dataType); - if (!oldLayout) { - textEl.attr(newProps); - if (!labelInner(textEl).valueAnimation) { - var oldOpacity = retrieve2(textEl.style.opacity, 1); - textEl.style.opacity = 0; - initProps(textEl, { - style: { - opacity: oldOpacity - } - }, seriesModel, dataIndex); - } - } else { - textEl.attr(oldLayout); - var prevStates = el.prevStates; - if (prevStates) { - if (indexOf(prevStates, "select") >= 0) { - textEl.attr(layoutStore.oldLayoutSelect); - } - if (indexOf(prevStates, "emphasis") >= 0) { - textEl.attr(layoutStore.oldLayoutEmphasis); - } - } - updateProps(textEl, newProps, seriesModel, dataIndex); - } - layoutStore.oldLayout = newProps; - if (textEl.states.select) { - var layoutSelect = layoutStore.oldLayoutSelect = {}; - extendWithKeys(layoutSelect, newProps, LABEL_LAYOUT_PROPS); - extendWithKeys(layoutSelect, textEl.states.select, LABEL_LAYOUT_PROPS); - } - if (textEl.states.emphasis) { - var layoutEmphasis = layoutStore.oldLayoutEmphasis = {}; - extendWithKeys(layoutEmphasis, newProps, LABEL_LAYOUT_PROPS); - extendWithKeys(layoutEmphasis, textEl.states.emphasis, LABEL_LAYOUT_PROPS); - } - animateLabelValue(textEl, dataIndex, data, seriesModel, seriesModel); - } - if (guideLine && !guideLine.ignore && !guideLine.invisible) { - var layoutStore = labelLineAnimationStore(guideLine); - var oldLayout = layoutStore.oldLayout; - var newLayout = { - points: guideLine.shape.points - }; - if (!oldLayout) { - guideLine.setShape(newLayout); - guideLine.style.strokePercent = 0; - initProps(guideLine, { - style: { - strokePercent: 1 - } - }, seriesModel); - } else { - guideLine.attr({ - shape: oldLayout - }); - updateProps(guideLine, { - shape: newLayout - }, seriesModel); - } - layoutStore.oldLayout = newLayout; - } - }; - return LabelManager2; - }() - ); - var LabelManager_default = LabelManager; - - // node_modules/echarts/lib/label/installLabelLayout.js - var getLabelManager = makeInner(); - function installLabelLayout(registers) { - registers.registerUpdateLifecycle("series:beforeupdate", function(ecModel, api, params) { - var labelManager = getLabelManager(api).labelManager; - if (!labelManager) { - labelManager = getLabelManager(api).labelManager = new LabelManager_default(); - } - labelManager.clearLabels(); - }); - registers.registerUpdateLifecycle("series:layoutlabels", function(ecModel, api, params) { - var labelManager = getLabelManager(api).labelManager; - params.updatedSeries.forEach(function(series) { - labelManager.addLabelsOfSeries(api.getViewOfSeriesModel(series)); - }); - labelManager.updateLayoutConfig(api); - labelManager.layout(api); - labelManager.processLabelsOverall(); - }); - } - - // node_modules/zrender/lib/svg/SVGPathRebuilder.js - var mathSin5 = Math.sin; - var mathCos5 = Math.cos; - var PI6 = Math.PI; - var PI28 = Math.PI * 2; - var degree = 180 / PI6; - var SVGPathRebuilder = function() { - function SVGPathRebuilder2() { - } - SVGPathRebuilder2.prototype.reset = function(precision) { - this._start = true; - this._d = []; - this._str = ""; - this._p = Math.pow(10, precision || 4); - }; - SVGPathRebuilder2.prototype.moveTo = function(x, y) { - this._add("M", x, y); - }; - SVGPathRebuilder2.prototype.lineTo = function(x, y) { - this._add("L", x, y); - }; - SVGPathRebuilder2.prototype.bezierCurveTo = function(x, y, x2, y2, x3, y3) { - this._add("C", x, y, x2, y2, x3, y3); - }; - SVGPathRebuilder2.prototype.quadraticCurveTo = function(x, y, x2, y2) { - this._add("Q", x, y, x2, y2); - }; - SVGPathRebuilder2.prototype.arc = function(cx, cy, r, startAngle, endAngle, anticlockwise) { - this.ellipse(cx, cy, r, r, 0, startAngle, endAngle, anticlockwise); - }; - SVGPathRebuilder2.prototype.ellipse = function(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise) { - var dTheta = endAngle - startAngle; - var clockwise = !anticlockwise; - var dThetaPositive = Math.abs(dTheta); - var isCircle = isAroundZero2(dThetaPositive - PI28) || (clockwise ? dTheta >= PI28 : -dTheta >= PI28); - var unifiedTheta = dTheta > 0 ? dTheta % PI28 : dTheta % PI28 + PI28; - var large = false; - if (isCircle) { - large = true; - } else if (isAroundZero2(dThetaPositive)) { - large = false; - } else { - large = unifiedTheta >= PI6 === !!clockwise; - } - var x0 = cx + rx * mathCos5(startAngle); - var y0 = cy + ry * mathSin5(startAngle); - if (this._start) { - this._add("M", x0, y0); - } - var xRot = Math.round(psi * degree); - if (isCircle) { - var p = 1 / this._p; - var dTheta_1 = (clockwise ? 1 : -1) * (PI28 - p); - this._add("A", rx, ry, xRot, 1, +clockwise, cx + rx * mathCos5(startAngle + dTheta_1), cy + ry * mathSin5(startAngle + dTheta_1)); - if (p > 0.01) { - this._add("A", rx, ry, xRot, 0, +clockwise, x0, y0); - } - } else { - var x = cx + rx * mathCos5(endAngle); - var y = cy + ry * mathSin5(endAngle); - this._add("A", rx, ry, xRot, +large, +clockwise, x, y); - } - }; - SVGPathRebuilder2.prototype.rect = function(x, y, w, h) { - this._add("M", x, y); - this._add("l", w, 0); - this._add("l", 0, h); - this._add("l", -w, 0); - this._add("Z"); - }; - SVGPathRebuilder2.prototype.closePath = function() { - if (this._d.length > 0) { - this._add("Z"); - } - }; - SVGPathRebuilder2.prototype._add = function(cmd, a, b, c, d, e2, f, g, h) { - var vals = []; - var p = this._p; - for (var i = 1; i < arguments.length; i++) { - var val = arguments[i]; - if (isNaN(val)) { - this._invalid = true; - return; - } - vals.push(Math.round(val * p) / p); - } - this._d.push(cmd + vals.join(" ")); - this._start = cmd === "Z"; - }; - SVGPathRebuilder2.prototype.generateStr = function() { - this._str = this._invalid ? "" : this._d.join(""); - this._d = []; - }; - SVGPathRebuilder2.prototype.getStr = function() { - return this._str; - }; - return SVGPathRebuilder2; - }(); - var SVGPathRebuilder_default = SVGPathRebuilder; - - // node_modules/zrender/lib/svg/mapStyleToAttrs.js - var NONE = "none"; - var mathRound2 = Math.round; - function pathHasFill(style) { - var fill = style.fill; - return fill != null && fill !== NONE; - } - function pathHasStroke(style) { - var stroke = style.stroke; - return stroke != null && stroke !== NONE; - } - var strokeProps = ["lineCap", "miterLimit", "lineJoin"]; - var svgStrokeProps = map(strokeProps, function(prop) { - return "stroke-" + prop.toLowerCase(); - }); - function mapStyleToAttrs(updateAttr2, style, el, forceUpdate) { - var opacity = style.opacity == null ? 1 : style.opacity; - if (el instanceof Image_default) { - updateAttr2("opacity", opacity); - return; - } - if (pathHasFill(style)) { - var fill = normalizeColor(style.fill); - updateAttr2("fill", fill.color); - var fillOpacity = style.fillOpacity != null ? style.fillOpacity * fill.opacity * opacity : fill.opacity * opacity; - if (forceUpdate || fillOpacity < 1) { - updateAttr2("fill-opacity", fillOpacity); - } - } else { - updateAttr2("fill", NONE); - } - if (pathHasStroke(style)) { - var stroke = normalizeColor(style.stroke); - updateAttr2("stroke", stroke.color); - var strokeScale = style.strokeNoScale ? el.getLineScale() : 1; - var strokeWidth = strokeScale ? (style.lineWidth || 0) / strokeScale : 0; - var strokeOpacity = style.strokeOpacity != null ? style.strokeOpacity * stroke.opacity * opacity : stroke.opacity * opacity; - var strokeFirst = style.strokeFirst; - if (forceUpdate || strokeWidth !== 1) { - updateAttr2("stroke-width", strokeWidth); - } - if (forceUpdate || strokeFirst) { - updateAttr2("paint-order", strokeFirst ? "stroke" : "fill"); - } - if (forceUpdate || strokeOpacity < 1) { - updateAttr2("stroke-opacity", strokeOpacity); - } - if (style.lineDash) { - var _a2 = getLineDash(el), lineDash = _a2[0], lineDashOffset = _a2[1]; - if (lineDash) { - lineDashOffset = mathRound2(lineDashOffset || 0); - updateAttr2("stroke-dasharray", lineDash.join(",")); - if (lineDashOffset || forceUpdate) { - updateAttr2("stroke-dashoffset", lineDashOffset); - } - } - } else if (forceUpdate) { - updateAttr2("stroke-dasharray", NONE); - } - for (var i = 0; i < strokeProps.length; i++) { - var propName = strokeProps[i]; - if (forceUpdate || style[propName] !== DEFAULT_PATH_STYLE[propName]) { - var val = style[propName] || DEFAULT_PATH_STYLE[propName]; - val && updateAttr2(svgStrokeProps[i], val); - } - } - } else if (forceUpdate) { - updateAttr2("stroke", NONE); - } - } - - // node_modules/zrender/lib/svg/core.js - var SVGNS = "http://www.w3.org/2000/svg"; - var XLINKNS = "http://www.w3.org/1999/xlink"; - var XMLNS = "http://www.w3.org/2000/xmlns/"; - var XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace"; - var META_DATA_PREFIX = "ecmeta_"; - function createElement(name) { - return document.createElementNS(SVGNS, name); - } - function createVNode(tag, key, attrs, children, text) { - return { - tag, - attrs: attrs || {}, - children, - text, - key - }; - } - function createElementOpen(name, attrs) { - var attrsStr = []; - if (attrs) { - for (var key in attrs) { - var val = attrs[key]; - var part = key; - if (val === false) { - continue; - } else if (val !== true && val != null) { - part += '="' + val + '"'; - } - attrsStr.push(part); - } - } - return "<" + name + " " + attrsStr.join(" ") + ">"; - } - function createElementClose(name) { - return ""; - } - function vNodeToString(el, opts) { - opts = opts || {}; - var S = opts.newline ? "\n" : ""; - function convertElToString(el2) { - var children = el2.children, tag = el2.tag, attrs = el2.attrs, text = el2.text; - return createElementOpen(tag, attrs) + (tag !== "style" ? encodeHTML(text) : text || "") + (children ? "" + S + map(children, function(child) { - return convertElToString(child); - }).join(S) + S : "") + createElementClose(tag); - } - return convertElToString(el); - } - function getCssString(selectorNodes, animationNodes, opts) { - opts = opts || {}; - var S = opts.newline ? "\n" : ""; - var bracketBegin = " {" + S; - var bracketEnd = S + "}"; - var selectors = map(keys(selectorNodes), function(className) { - return className + bracketBegin + map(keys(selectorNodes[className]), function(attrName) { - return attrName + ":" + selectorNodes[className][attrName] + ";"; - }).join(S) + bracketEnd; - }).join(S); - var animations = map(keys(animationNodes), function(animationName) { - return "@keyframes " + animationName + bracketBegin + map(keys(animationNodes[animationName]), function(percent) { - return percent + bracketBegin + map(keys(animationNodes[animationName][percent]), function(attrName) { - var val = animationNodes[animationName][percent][attrName]; - if (attrName === "d") { - val = 'path("' + val + '")'; - } - return attrName + ":" + val + ";"; - }).join(S) + bracketEnd; - }).join(S) + bracketEnd; - }).join(S); - if (!selectors && !animations) { - return ""; - } - return [""].join(S); - } - function createBrushScope(zrId) { - return { - zrId, - shadowCache: {}, - patternCache: {}, - gradientCache: {}, - clipPathCache: {}, - defs: {}, - cssNodes: {}, - cssAnims: {}, - cssStyleCache: {}, - cssAnimIdx: 0, - shadowIdx: 0, - gradientIdx: 0, - patternIdx: 0, - clipPathIdx: 0 - }; - } - function createSVGVNode(width, height, children, useViewBox) { - return createVNode("svg", "root", { - "width": width, - "height": height, - "xmlns": SVGNS, - "xmlns:xlink": XLINKNS, - "version": "1.1", - "baseProfile": "full", - "viewBox": useViewBox ? "0 0 " + width + " " + height : false - }, children); - } - - // node_modules/zrender/lib/svg/cssClassId.js - var cssClassIdx = 0; - function getClassId() { - return cssClassIdx++; - } - - // node_modules/zrender/lib/svg/cssAnimation.js - var EASING_MAP = { - cubicIn: "0.32,0,0.67,0", - cubicOut: "0.33,1,0.68,1", - cubicInOut: "0.65,0,0.35,1", - quadraticIn: "0.11,0,0.5,0", - quadraticOut: "0.5,1,0.89,1", - quadraticInOut: "0.45,0,0.55,1", - quarticIn: "0.5,0,0.75,0", - quarticOut: "0.25,1,0.5,1", - quarticInOut: "0.76,0,0.24,1", - quinticIn: "0.64,0,0.78,0", - quinticOut: "0.22,1,0.36,1", - quinticInOut: "0.83,0,0.17,1", - sinusoidalIn: "0.12,0,0.39,0", - sinusoidalOut: "0.61,1,0.88,1", - sinusoidalInOut: "0.37,0,0.63,1", - exponentialIn: "0.7,0,0.84,0", - exponentialOut: "0.16,1,0.3,1", - exponentialInOut: "0.87,0,0.13,1", - circularIn: "0.55,0,1,0.45", - circularOut: "0,0.55,0.45,1", - circularInOut: "0.85,0,0.15,1" - }; - var transformOriginKey = "transform-origin"; - function buildPathString(el, kfShape, path) { - var shape = extend({}, el.shape); - extend(shape, kfShape); - el.buildPath(path, shape); - var svgPathBuilder = new SVGPathRebuilder_default(); - svgPathBuilder.reset(getPathPrecision(el)); - path.rebuildPath(svgPathBuilder, 1); - svgPathBuilder.generateStr(); - return svgPathBuilder.getStr(); - } - function setTransformOrigin(target, transform2) { - var originX = transform2.originX, originY = transform2.originY; - if (originX || originY) { - target[transformOriginKey] = originX + "px " + originY + "px"; - } - } - var ANIMATE_STYLE_MAP = { - fill: "fill", - opacity: "opacity", - lineWidth: "stroke-width", - lineDashOffset: "stroke-dashoffset" - }; - function addAnimation(cssAnim, scope) { - var animationName = scope.zrId + "-ani-" + scope.cssAnimIdx++; - scope.cssAnims[animationName] = cssAnim; - return animationName; - } - function createCompoundPathCSSAnimation(el, attrs, scope) { - var paths = el.shape.paths; - var composedAnim = {}; - var cssAnimationCfg; - var cssAnimationName; - each(paths, function(path) { - var subScope = createBrushScope(scope.zrId); - subScope.animation = true; - createCSSAnimation(path, {}, subScope, true); - var cssAnims = subScope.cssAnims; - var cssNodes = subScope.cssNodes; - var animNames = keys(cssAnims); - var len2 = animNames.length; - if (!len2) { - return; - } - cssAnimationName = animNames[len2 - 1]; - var lastAnim = cssAnims[cssAnimationName]; - for (var percent in lastAnim) { - var kf = lastAnim[percent]; - composedAnim[percent] = composedAnim[percent] || { d: "" }; - composedAnim[percent].d += kf.d || ""; - } - for (var className in cssNodes) { - var val = cssNodes[className].animation; - if (val.indexOf(cssAnimationName) >= 0) { - cssAnimationCfg = val; - } - } - }); - if (!cssAnimationCfg) { - return; - } - attrs.d = false; - var animationName = addAnimation(composedAnim, scope); - return cssAnimationCfg.replace(cssAnimationName, animationName); - } - function getEasingFunc(easing) { - return isString(easing) ? EASING_MAP[easing] ? "cubic-bezier(" + EASING_MAP[easing] + ")" : createCubicEasingFunc(easing) ? easing : "" : ""; - } - function createCSSAnimation(el, attrs, scope, onlyShape) { - var animators = el.animators; - var len2 = animators.length; - var cssAnimations = []; - if (el instanceof CompoundPath_default) { - var animationCfg = createCompoundPathCSSAnimation(el, attrs, scope); - if (animationCfg) { - cssAnimations.push(animationCfg); - } else if (!len2) { - return; - } - } else if (!len2) { - return; - } - var groupAnimators = {}; - for (var i = 0; i < len2; i++) { - var animator = animators[i]; - var cfgArr = [animator.getMaxTime() / 1e3 + "s"]; - var easing = getEasingFunc(animator.getClip().easing); - var delay = animator.getDelay(); - if (easing) { - cfgArr.push(easing); - } else { - cfgArr.push("linear"); - } - if (delay) { - cfgArr.push(delay / 1e3 + "s"); - } - if (animator.getLoop()) { - cfgArr.push("infinite"); - } - var cfg = cfgArr.join(" "); - groupAnimators[cfg] = groupAnimators[cfg] || [cfg, []]; - groupAnimators[cfg][1].push(animator); - } - function createSingleCSSAnimation(groupAnimator) { - var animators2 = groupAnimator[1]; - var len3 = animators2.length; - var transformKfs = {}; - var shapeKfs = {}; - var finalKfs = {}; - var animationTimingFunctionAttrName = "animation-timing-function"; - function saveAnimatorTrackToCssKfs(animator3, cssKfs, toCssAttrName) { - var tracks = animator3.getTracks(); - var maxTime = animator3.getMaxTime(); - for (var k = 0; k < tracks.length; k++) { - var track = tracks[k]; - if (track.needsAnimate()) { - var kfs = track.keyframes; - var attrName = track.propName; - toCssAttrName && (attrName = toCssAttrName(attrName)); - if (attrName) { - for (var i3 = 0; i3 < kfs.length; i3++) { - var kf = kfs[i3]; - var percent2 = Math.round(kf.time / maxTime * 100) + "%"; - var kfEasing = getEasingFunc(kf.easing); - var rawValue = kf.rawValue; - if (isString(rawValue) || isNumber(rawValue)) { - cssKfs[percent2] = cssKfs[percent2] || {}; - cssKfs[percent2][attrName] = kf.rawValue; - if (kfEasing) { - cssKfs[percent2][animationTimingFunctionAttrName] = kfEasing; - } - } - } - } - } - } - } - for (var i2 = 0; i2 < len3; i2++) { - var animator2 = animators2[i2]; - var targetProp = animator2.targetName; - if (!targetProp) { - !onlyShape && saveAnimatorTrackToCssKfs(animator2, transformKfs); - } else if (targetProp === "shape") { - saveAnimatorTrackToCssKfs(animator2, shapeKfs); - } - } - for (var percent in transformKfs) { - var transform2 = {}; - copyTransform(transform2, el); - extend(transform2, transformKfs[percent]); - var str = getSRTTransformString(transform2); - var timingFunction = transformKfs[percent][animationTimingFunctionAttrName]; - finalKfs[percent] = str ? { - transform: str - } : {}; - setTransformOrigin(finalKfs[percent], transform2); - if (timingFunction) { - finalKfs[percent][animationTimingFunctionAttrName] = timingFunction; - } - } - ; - var path; - var canAnimateShape = true; - for (var percent in shapeKfs) { - finalKfs[percent] = finalKfs[percent] || {}; - var isFirst = !path; - var timingFunction = shapeKfs[percent][animationTimingFunctionAttrName]; - if (isFirst) { - path = new PathProxy_default(); - } - var len_1 = path.len(); - path.reset(); - finalKfs[percent].d = buildPathString(el, shapeKfs[percent], path); - var newLen = path.len(); - if (!isFirst && len_1 !== newLen) { - canAnimateShape = false; - break; - } - if (timingFunction) { - finalKfs[percent][animationTimingFunctionAttrName] = timingFunction; - } - } - ; - if (!canAnimateShape) { - for (var percent in finalKfs) { - delete finalKfs[percent].d; - } - } - if (!onlyShape) { - for (var i2 = 0; i2 < len3; i2++) { - var animator2 = animators2[i2]; - var targetProp = animator2.targetName; - if (targetProp === "style") { - saveAnimatorTrackToCssKfs(animator2, finalKfs, function(propName) { - return ANIMATE_STYLE_MAP[propName]; - }); - } - } - } - var percents = keys(finalKfs); - var allTransformOriginSame = true; - var transformOrigin; - for (var i2 = 1; i2 < percents.length; i2++) { - var p0 = percents[i2 - 1]; - var p1 = percents[i2]; - if (finalKfs[p0][transformOriginKey] !== finalKfs[p1][transformOriginKey]) { - allTransformOriginSame = false; - break; - } - transformOrigin = finalKfs[p0][transformOriginKey]; - } - if (allTransformOriginSame && transformOrigin) { - for (var percent in finalKfs) { - if (finalKfs[percent][transformOriginKey]) { - delete finalKfs[percent][transformOriginKey]; - } - } - attrs[transformOriginKey] = transformOrigin; - } - if (filter(percents, function(percent2) { - return keys(finalKfs[percent2]).length > 0; - }).length) { - var animationName = addAnimation(finalKfs, scope); - return animationName + " " + groupAnimator[0] + " both"; - } - } - for (var key in groupAnimators) { - var animationCfg = createSingleCSSAnimation(groupAnimators[key]); - if (animationCfg) { - cssAnimations.push(animationCfg); - } - } - if (cssAnimations.length) { - var className = scope.zrId + "-cls-" + getClassId(); - scope.cssNodes["." + className] = { - animation: cssAnimations.join(",") - }; - attrs["class"] = className; - } - } - - // node_modules/zrender/lib/svg/cssEmphasis.js - function createCSSEmphasis(el, attrs, scope) { - if (!el.ignore) { - if (el.isSilent()) { - var style = { - "pointer-events": "none" - }; - setClassAttribute(style, attrs, scope, true); - } else { - var emphasisStyle = el.states.emphasis && el.states.emphasis.style ? el.states.emphasis.style : {}; - var fill = emphasisStyle.fill; - if (!fill) { - var normalFill = el.style && el.style.fill; - var selectFill = el.states.select && el.states.select.style && el.states.select.style.fill; - var fromFill = el.currentStates.indexOf("select") >= 0 ? selectFill || normalFill : normalFill; - if (fromFill) { - fill = liftColor(fromFill); - } - } - var lineWidth = emphasisStyle.lineWidth; - if (lineWidth) { - var scaleX = !emphasisStyle.strokeNoScale && el.transform ? el.transform[0] : 1; - lineWidth = lineWidth / scaleX; - } - var style = { - cursor: "pointer" - }; - if (fill) { - style.fill = fill; - } - if (emphasisStyle.stroke) { - style.stroke = emphasisStyle.stroke; - } - if (lineWidth) { - style["stroke-width"] = lineWidth; - } - setClassAttribute(style, attrs, scope, true); - } - } - } - function setClassAttribute(style, attrs, scope, withHover) { - var styleKey = JSON.stringify(style); - var className = scope.cssStyleCache[styleKey]; - if (!className) { - className = scope.zrId + "-cls-" + getClassId(); - scope.cssStyleCache[styleKey] = className; - scope.cssNodes["." + className + (withHover ? ":hover" : "")] = style; - } - attrs["class"] = attrs["class"] ? attrs["class"] + " " + className : className; - } - - // node_modules/zrender/lib/svg/graphic.js - var round5 = Math.round; - function isImageLike2(val) { - return val && isString(val.src); - } - function isCanvasLike(val) { - return val && isFunction(val.toDataURL); - } - function setStyleAttrs(attrs, style, el, scope) { - mapStyleToAttrs(function(key, val) { - var isFillStroke = key === "fill" || key === "stroke"; - if (isFillStroke && isGradient(val)) { - setGradient(style, attrs, key, scope); - } else if (isFillStroke && isPattern(val)) { - setPattern(el, attrs, key, scope); - } else { - attrs[key] = val; - } - if (isFillStroke && scope.ssr && val === "none") { - attrs["pointer-events"] = "visible"; - } - }, style, el, false); - setShadow(el, attrs, scope); - } - function setMetaData(attrs, el) { - var metaData = getElementSSRData(el); - if (metaData) { - metaData.each(function(val, key) { - val != null && (attrs[(META_DATA_PREFIX + key).toLowerCase()] = val + ""); - }); - if (el.isSilent()) { - attrs[META_DATA_PREFIX + "silent"] = "true"; - } - } - } - function noRotateScale(m2) { - return isAroundZero2(m2[0] - 1) && isAroundZero2(m2[1]) && isAroundZero2(m2[2]) && isAroundZero2(m2[3] - 1); - } - function noTranslate(m2) { - return isAroundZero2(m2[4]) && isAroundZero2(m2[5]); - } - function setTransform(attrs, m2, compress) { - if (m2 && !(noTranslate(m2) && noRotateScale(m2))) { - var mul3 = compress ? 10 : 1e4; - attrs.transform = noRotateScale(m2) ? "translate(" + round5(m2[4] * mul3) / mul3 + " " + round5(m2[5] * mul3) / mul3 + ")" : getMatrixStr(m2); - } - } - function convertPolyShape(shape, attrs, mul3) { - var points4 = shape.points; - var strArr = []; - for (var i = 0; i < points4.length; i++) { - strArr.push(round5(points4[i][0] * mul3) / mul3); - strArr.push(round5(points4[i][1] * mul3) / mul3); - } - attrs.points = strArr.join(" "); - } - function validatePolyShape(shape) { - return !shape.smooth; - } - function createAttrsConvert(desc) { - var normalizedDesc = map(desc, function(item) { - return typeof item === "string" ? [item, item] : item; - }); - return function(shape, attrs, mul3) { - for (var i = 0; i < normalizedDesc.length; i++) { - var item = normalizedDesc[i]; - var val = shape[item[0]]; - if (val != null) { - attrs[item[1]] = round5(val * mul3) / mul3; - } - } - }; - } - var builtinShapesDef = { - circle: [createAttrsConvert(["cx", "cy", "r"])], - polyline: [convertPolyShape, validatePolyShape], - polygon: [convertPolyShape, validatePolyShape] - }; - function hasShapeAnimation(el) { - var animators = el.animators; - for (var i = 0; i < animators.length; i++) { - if (animators[i].targetName === "shape") { - return true; - } - } - return false; - } - function brushSVGPath(el, scope) { - var style = el.style; - var shape = el.shape; - var builtinShpDef = builtinShapesDef[el.type]; - var attrs = {}; - var needsAnimate = scope.animation; - var svgElType = "path"; - var strokePercent = el.style.strokePercent; - var precision = scope.compress && getPathPrecision(el) || 4; - if (builtinShpDef && !scope.willUpdate && !(builtinShpDef[1] && !builtinShpDef[1](shape)) && !(needsAnimate && hasShapeAnimation(el)) && !(strokePercent < 1)) { - svgElType = el.type; - var mul3 = Math.pow(10, precision); - builtinShpDef[0](shape, attrs, mul3); - } else { - var needBuildPath = !el.path || el.shapeChanged(); - if (!el.path) { - el.createPathProxy(); - } - var path = el.path; - if (needBuildPath) { - path.beginPath(); - el.buildPath(path, el.shape); - el.pathUpdated(); - } - var pathVersion = path.getVersion(); - var elExt = el; - var svgPathBuilder = elExt.__svgPathBuilder; - if (elExt.__svgPathVersion !== pathVersion || !svgPathBuilder || strokePercent !== elExt.__svgPathStrokePercent) { - if (!svgPathBuilder) { - svgPathBuilder = elExt.__svgPathBuilder = new SVGPathRebuilder_default(); - } - svgPathBuilder.reset(precision); - path.rebuildPath(svgPathBuilder, strokePercent); - svgPathBuilder.generateStr(); - elExt.__svgPathVersion = pathVersion; - elExt.__svgPathStrokePercent = strokePercent; - } - attrs.d = svgPathBuilder.getStr(); - } - setTransform(attrs, el.transform); - setStyleAttrs(attrs, style, el, scope); - setMetaData(attrs, el); - scope.animation && createCSSAnimation(el, attrs, scope); - scope.emphasis && createCSSEmphasis(el, attrs, scope); - return createVNode(svgElType, el.id + "", attrs); - } - function brushSVGImage(el, scope) { - var style = el.style; - var image = style.image; - if (image && !isString(image)) { - if (isImageLike2(image)) { - image = image.src; - } else if (isCanvasLike(image)) { - image = image.toDataURL(); - } - } - if (!image) { - return; - } - var x = style.x || 0; - var y = style.y || 0; - var dw = style.width; - var dh = style.height; - var attrs = { - href: image, - width: dw, - height: dh - }; - if (x) { - attrs.x = x; - } - if (y) { - attrs.y = y; - } - setTransform(attrs, el.transform); - setStyleAttrs(attrs, style, el, scope); - setMetaData(attrs, el); - scope.animation && createCSSAnimation(el, attrs, scope); - return createVNode("image", el.id + "", attrs); - } - function brushSVGTSpan(el, scope) { - var style = el.style; - var text = style.text; - text != null && (text += ""); - if (!text || isNaN(style.x) || isNaN(style.y)) { - return; - } - var font = style.font || DEFAULT_FONT; - var x = style.x || 0; - var y = adjustTextY(style.y || 0, getLineHeight(font), style.textBaseline); - var textAlign = TEXT_ALIGN_TO_ANCHOR[style.textAlign] || style.textAlign; - var attrs = { - "dominant-baseline": "central", - "text-anchor": textAlign - }; - if (hasSeparateFont(style)) { - var separatedFontStr = ""; - var fontStyle = style.fontStyle; - var fontSize = parseFontSize(style.fontSize); - if (!parseFloat(fontSize)) { - return; - } - var fontFamily = style.fontFamily || DEFAULT_FONT_FAMILY; - var fontWeight = style.fontWeight; - separatedFontStr += "font-size:" + fontSize + ";font-family:" + fontFamily + ";"; - if (fontStyle && fontStyle !== "normal") { - separatedFontStr += "font-style:" + fontStyle + ";"; - } - if (fontWeight && fontWeight !== "normal") { - separatedFontStr += "font-weight:" + fontWeight + ";"; - } - attrs.style = separatedFontStr; - } else { - attrs.style = "font: " + font; - } - if (text.match(/\s/)) { - attrs["xml:space"] = "preserve"; - } - if (x) { - attrs.x = x; - } - if (y) { - attrs.y = y; - } - setTransform(attrs, el.transform); - setStyleAttrs(attrs, style, el, scope); - setMetaData(attrs, el); - scope.animation && createCSSAnimation(el, attrs, scope); - return createVNode("text", el.id + "", attrs, void 0, text); - } - function brush2(el, scope) { - if (el instanceof Path_default) { - return brushSVGPath(el, scope); - } else if (el instanceof Image_default) { - return brushSVGImage(el, scope); - } else if (el instanceof TSpan_default) { - return brushSVGTSpan(el, scope); - } - } - function setShadow(el, attrs, scope) { - var style = el.style; - if (hasShadow(style)) { - var shadowKey = getShadowKey(el); - var shadowCache = scope.shadowCache; - var shadowId = shadowCache[shadowKey]; - if (!shadowId) { - var globalScale = el.getGlobalScale(); - var scaleX = globalScale[0]; - var scaleY = globalScale[1]; - if (!scaleX || !scaleY) { - return; - } - var offsetX = style.shadowOffsetX || 0; - var offsetY = style.shadowOffsetY || 0; - var blur_1 = style.shadowBlur; - var _a2 = normalizeColor(style.shadowColor), opacity = _a2.opacity, color = _a2.color; - var stdDx = blur_1 / 2 / scaleX; - var stdDy = blur_1 / 2 / scaleY; - var stdDeviation = stdDx + " " + stdDy; - shadowId = scope.zrId + "-s" + scope.shadowIdx++; - scope.defs[shadowId] = createVNode("filter", shadowId, { - "id": shadowId, - "x": "-100%", - "y": "-100%", - "width": "300%", - "height": "300%" - }, [ - createVNode("feDropShadow", "", { - "dx": offsetX / scaleX, - "dy": offsetY / scaleY, - "stdDeviation": stdDeviation, - "flood-color": color, - "flood-opacity": opacity - }) - ]); - shadowCache[shadowKey] = shadowId; - } - attrs.filter = getIdURL(shadowId); - } - } - function setGradient(style, attrs, target, scope) { - var val = style[target]; - var gradientTag; - var gradientAttrs = { - "gradientUnits": val.global ? "userSpaceOnUse" : "objectBoundingBox" - }; - if (isLinearGradient(val)) { - gradientTag = "linearGradient"; - gradientAttrs.x1 = val.x; - gradientAttrs.y1 = val.y; - gradientAttrs.x2 = val.x2; - gradientAttrs.y2 = val.y2; - } else if (isRadialGradient(val)) { - gradientTag = "radialGradient"; - gradientAttrs.cx = retrieve2(val.x, 0.5); - gradientAttrs.cy = retrieve2(val.y, 0.5); - gradientAttrs.r = retrieve2(val.r, 0.5); - } else { - if (true) { - logError("Illegal gradient type."); - } - return; - } - var colors = val.colorStops; - var colorStops = []; - for (var i = 0, len2 = colors.length; i < len2; ++i) { - var offset3 = round4(colors[i].offset) * 100 + "%"; - var stopColor = colors[i].color; - var _a2 = normalizeColor(stopColor), color = _a2.color, opacity = _a2.opacity; - var stopsAttrs = { - "offset": offset3 - }; - stopsAttrs["stop-color"] = color; - if (opacity < 1) { - stopsAttrs["stop-opacity"] = opacity; - } - colorStops.push(createVNode("stop", i + "", stopsAttrs)); - } - var gradientVNode = createVNode(gradientTag, "", gradientAttrs, colorStops); - var gradientKey = vNodeToString(gradientVNode); - var gradientCache = scope.gradientCache; - var gradientId = gradientCache[gradientKey]; - if (!gradientId) { - gradientId = scope.zrId + "-g" + scope.gradientIdx++; - gradientCache[gradientKey] = gradientId; - gradientAttrs.id = gradientId; - scope.defs[gradientId] = createVNode(gradientTag, gradientId, gradientAttrs, colorStops); - } - attrs[target] = getIdURL(gradientId); - } - function setPattern(el, attrs, target, scope) { - var val = el.style[target]; - var boundingRect = el.getBoundingRect(); - var patternAttrs = {}; - var repeat = val.repeat; - var noRepeat = repeat === "no-repeat"; - var repeatX = repeat === "repeat-x"; - var repeatY = repeat === "repeat-y"; - var child; - if (isImagePattern(val)) { - var imageWidth_1 = val.imageWidth; - var imageHeight_1 = val.imageHeight; - var imageSrc = void 0; - var patternImage = val.image; - if (isString(patternImage)) { - imageSrc = patternImage; - } else if (isImageLike2(patternImage)) { - imageSrc = patternImage.src; - } else if (isCanvasLike(patternImage)) { - imageSrc = patternImage.toDataURL(); - } - if (typeof Image === "undefined") { - var errMsg = "Image width/height must been given explictly in svg-ssr renderer."; - assert(imageWidth_1, errMsg); - assert(imageHeight_1, errMsg); - } else if (imageWidth_1 == null || imageHeight_1 == null) { - var setSizeToVNode_1 = function(vNode, img) { - if (vNode) { - var svgEl = vNode.elm; - var width = imageWidth_1 || img.width; - var height = imageHeight_1 || img.height; - if (vNode.tag === "pattern") { - if (repeatX) { - height = 1; - width /= boundingRect.width; - } else if (repeatY) { - width = 1; - height /= boundingRect.height; - } - } - vNode.attrs.width = width; - vNode.attrs.height = height; - if (svgEl) { - svgEl.setAttribute("width", width); - svgEl.setAttribute("height", height); - } - } - }; - var createdImage = createOrUpdateImage(imageSrc, null, el, function(img) { - noRepeat || setSizeToVNode_1(patternVNode, img); - setSizeToVNode_1(child, img); - }); - if (createdImage && createdImage.width && createdImage.height) { - imageWidth_1 = imageWidth_1 || createdImage.width; - imageHeight_1 = imageHeight_1 || createdImage.height; - } - } - child = createVNode("image", "img", { - href: imageSrc, - width: imageWidth_1, - height: imageHeight_1 - }); - patternAttrs.width = imageWidth_1; - patternAttrs.height = imageHeight_1; - } else if (val.svgElement) { - child = clone(val.svgElement); - patternAttrs.width = val.svgWidth; - patternAttrs.height = val.svgHeight; - } - if (!child) { - return; - } - var patternWidth; - var patternHeight; - if (noRepeat) { - patternWidth = patternHeight = 1; - } else if (repeatX) { - patternHeight = 1; - patternWidth = patternAttrs.width / boundingRect.width; - } else if (repeatY) { - patternWidth = 1; - patternHeight = patternAttrs.height / boundingRect.height; - } else { - patternAttrs.patternUnits = "userSpaceOnUse"; - } - if (patternWidth != null && !isNaN(patternWidth)) { - patternAttrs.width = patternWidth; - } - if (patternHeight != null && !isNaN(patternHeight)) { - patternAttrs.height = patternHeight; - } - var patternTransform = getSRTTransformString(val); - patternTransform && (patternAttrs.patternTransform = patternTransform); - var patternVNode = createVNode("pattern", "", patternAttrs, [child]); - var patternKey = vNodeToString(patternVNode); - var patternCache = scope.patternCache; - var patternId = patternCache[patternKey]; - if (!patternId) { - patternId = scope.zrId + "-p" + scope.patternIdx++; - patternCache[patternKey] = patternId; - patternAttrs.id = patternId; - patternVNode = scope.defs[patternId] = createVNode("pattern", patternId, patternAttrs, [child]); - } - attrs[target] = getIdURL(patternId); - } - function setClipPath(clipPath, attrs, scope) { - var clipPathCache = scope.clipPathCache, defs = scope.defs; - var clipPathId = clipPathCache[clipPath.id]; - if (!clipPathId) { - clipPathId = scope.zrId + "-c" + scope.clipPathIdx++; - var clipPathAttrs = { - id: clipPathId - }; - clipPathCache[clipPath.id] = clipPathId; - defs[clipPathId] = createVNode("clipPath", clipPathId, clipPathAttrs, [brushSVGPath(clipPath, scope)]); - } - attrs["clip-path"] = getIdURL(clipPathId); - } - - // node_modules/zrender/lib/svg/domapi.js - function createTextNode(text) { - return document.createTextNode(text); - } - function insertBefore(parentNode2, newNode, referenceNode) { - parentNode2.insertBefore(newNode, referenceNode); - } - function removeChild(node, child) { - node.removeChild(child); - } - function appendChild(node, child) { - node.appendChild(child); - } - function parentNode(node) { - return node.parentNode; - } - function nextSibling(node) { - return node.nextSibling; - } - function setTextContent(node, text) { - node.textContent = text; - } - - // node_modules/zrender/lib/svg/patch.js - var colonChar = 58; - var xChar = 120; - var emptyNode = createVNode("", ""); - function isUndef(s) { - return s === void 0; - } - function isDef(s) { - return s !== void 0; - } - function createKeyToOldIdx(children, beginIdx, endIdx) { - var map3 = {}; - for (var i = beginIdx; i <= endIdx; ++i) { - var key = children[i].key; - if (key !== void 0) { - if (true) { - if (map3[key] != null) { - console.error("Duplicate key " + key); - } - } - map3[key] = i; - } - } - return map3; - } - function sameVnode(vnode1, vnode2) { - var isSameKey = vnode1.key === vnode2.key; - var isSameTag = vnode1.tag === vnode2.tag; - return isSameTag && isSameKey; - } - function createElm(vnode) { - var i; - var children = vnode.children; - var tag = vnode.tag; - if (isDef(tag)) { - var elm = vnode.elm = createElement(tag); - updateAttrs(emptyNode, vnode); - if (isArray(children)) { - for (i = 0; i < children.length; ++i) { - var ch = children[i]; - if (ch != null) { - appendChild(elm, createElm(ch)); - } - } - } else if (isDef(vnode.text) && !isObject(vnode.text)) { - appendChild(elm, createTextNode(vnode.text)); - } - } else { - vnode.elm = createTextNode(vnode.text); - } - return vnode.elm; - } - function addVnodes(parentElm, before, vnodes, startIdx, endIdx) { - for (; startIdx <= endIdx; ++startIdx) { - var ch = vnodes[startIdx]; - if (ch != null) { - insertBefore(parentElm, createElm(ch), before); - } - } - } - function removeVnodes(parentElm, vnodes, startIdx, endIdx) { - for (; startIdx <= endIdx; ++startIdx) { - var ch = vnodes[startIdx]; - if (ch != null) { - if (isDef(ch.tag)) { - var parent_1 = parentNode(ch.elm); - removeChild(parent_1, ch.elm); - } else { - removeChild(parentElm, ch.elm); - } - } - } - } - function updateAttrs(oldVnode, vnode) { - var key; - var elm = vnode.elm; - var oldAttrs = oldVnode && oldVnode.attrs || {}; - var attrs = vnode.attrs || {}; - if (oldAttrs === attrs) { - return; - } - for (key in attrs) { - var cur = attrs[key]; - var old = oldAttrs[key]; - if (old !== cur) { - if (cur === true) { - elm.setAttribute(key, ""); - } else if (cur === false) { - elm.removeAttribute(key); - } else { - if (key === "style") { - elm.style.cssText = cur; - } else if (key.charCodeAt(0) !== xChar) { - elm.setAttribute(key, cur); - } else if (key === "xmlns:xlink" || key === "xmlns") { - elm.setAttributeNS(XMLNS, key, cur); - } else if (key.charCodeAt(3) === colonChar) { - elm.setAttributeNS(XML_NAMESPACE, key, cur); - } else if (key.charCodeAt(5) === colonChar) { - elm.setAttributeNS(XLINKNS, key, cur); - } else { - elm.setAttribute(key, cur); - } - } - } - } - for (key in oldAttrs) { - if (!(key in attrs)) { - elm.removeAttribute(key); - } - } - } - function updateChildren(parentElm, oldCh, newCh) { - var oldStartIdx = 0; - var newStartIdx = 0; - var oldEndIdx = oldCh.length - 1; - var oldStartVnode = oldCh[0]; - var oldEndVnode = oldCh[oldEndIdx]; - var newEndIdx = newCh.length - 1; - var newStartVnode = newCh[0]; - var newEndVnode = newCh[newEndIdx]; - var oldKeyToIdx; - var idxInOld; - var elmToMove; - var before; - while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) { - if (oldStartVnode == null) { - oldStartVnode = oldCh[++oldStartIdx]; - } else if (oldEndVnode == null) { - oldEndVnode = oldCh[--oldEndIdx]; - } else if (newStartVnode == null) { - newStartVnode = newCh[++newStartIdx]; - } else if (newEndVnode == null) { - newEndVnode = newCh[--newEndIdx]; - } else if (sameVnode(oldStartVnode, newStartVnode)) { - patchVnode(oldStartVnode, newStartVnode); - oldStartVnode = oldCh[++oldStartIdx]; - newStartVnode = newCh[++newStartIdx]; - } else if (sameVnode(oldEndVnode, newEndVnode)) { - patchVnode(oldEndVnode, newEndVnode); - oldEndVnode = oldCh[--oldEndIdx]; - newEndVnode = newCh[--newEndIdx]; - } else if (sameVnode(oldStartVnode, newEndVnode)) { - patchVnode(oldStartVnode, newEndVnode); - insertBefore(parentElm, oldStartVnode.elm, nextSibling(oldEndVnode.elm)); - oldStartVnode = oldCh[++oldStartIdx]; - newEndVnode = newCh[--newEndIdx]; - } else if (sameVnode(oldEndVnode, newStartVnode)) { - patchVnode(oldEndVnode, newStartVnode); - insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm); - oldEndVnode = oldCh[--oldEndIdx]; - newStartVnode = newCh[++newStartIdx]; - } else { - if (isUndef(oldKeyToIdx)) { - oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); - } - idxInOld = oldKeyToIdx[newStartVnode.key]; - if (isUndef(idxInOld)) { - insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm); - } else { - elmToMove = oldCh[idxInOld]; - if (elmToMove.tag !== newStartVnode.tag) { - insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm); - } else { - patchVnode(elmToMove, newStartVnode); - oldCh[idxInOld] = void 0; - insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm); - } - } - newStartVnode = newCh[++newStartIdx]; - } - } - if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) { - if (oldStartIdx > oldEndIdx) { - before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm; - addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx); - } else { - removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx); - } - } - } - function patchVnode(oldVnode, vnode) { - var elm = vnode.elm = oldVnode.elm; - var oldCh = oldVnode.children; - var ch = vnode.children; - if (oldVnode === vnode) { - return; - } - updateAttrs(oldVnode, vnode); - if (isUndef(vnode.text)) { - if (isDef(oldCh) && isDef(ch)) { - if (oldCh !== ch) { - updateChildren(elm, oldCh, ch); - } - } else if (isDef(ch)) { - if (isDef(oldVnode.text)) { - setTextContent(elm, ""); - } - addVnodes(elm, null, ch, 0, ch.length - 1); - } else if (isDef(oldCh)) { - removeVnodes(elm, oldCh, 0, oldCh.length - 1); - } else if (isDef(oldVnode.text)) { - setTextContent(elm, ""); - } - } else if (oldVnode.text !== vnode.text) { - if (isDef(oldCh)) { - removeVnodes(elm, oldCh, 0, oldCh.length - 1); - } - setTextContent(elm, vnode.text); - } - } - function patch(oldVnode, vnode) { - if (sameVnode(oldVnode, vnode)) { - patchVnode(oldVnode, vnode); - } else { - var elm = oldVnode.elm; - var parent_2 = parentNode(elm); - createElm(vnode); - if (parent_2 !== null) { - insertBefore(parent_2, vnode.elm, nextSibling(elm)); - removeVnodes(parent_2, [oldVnode], 0, 0); - } - } - return vnode; - } - - // node_modules/zrender/lib/svg/Painter.js - var svgId = 0; - var SVGPainter = function() { - function SVGPainter2(root, storage2, opts) { - this.type = "svg"; - this.refreshHover = createMethodNotSupport("refreshHover"); - this.configLayer = createMethodNotSupport("configLayer"); - this.storage = storage2; - this._opts = opts = extend({}, opts); - this.root = root; - this._id = "zr" + svgId++; - this._oldVNode = createSVGVNode(opts.width, opts.height); - if (root && !opts.ssr) { - var viewport = this._viewport = document.createElement("div"); - viewport.style.cssText = "position:relative;overflow:hidden"; - var svgDom = this._svgDom = this._oldVNode.elm = createElement("svg"); - updateAttrs(null, this._oldVNode); - viewport.appendChild(svgDom); - root.appendChild(viewport); - } - this.resize(opts.width, opts.height); - } - SVGPainter2.prototype.getType = function() { - return this.type; - }; - SVGPainter2.prototype.getViewportRoot = function() { - return this._viewport; - }; - SVGPainter2.prototype.getViewportRootOffset = function() { - var viewportRoot = this.getViewportRoot(); - if (viewportRoot) { - return { - offsetLeft: viewportRoot.offsetLeft || 0, - offsetTop: viewportRoot.offsetTop || 0 - }; - } - }; - SVGPainter2.prototype.getSvgDom = function() { - return this._svgDom; - }; - SVGPainter2.prototype.refresh = function() { - if (this.root) { - var vnode = this.renderToVNode({ - willUpdate: true - }); - vnode.attrs.style = "position:absolute;left:0;top:0;user-select:none"; - patch(this._oldVNode, vnode); - this._oldVNode = vnode; - } - }; - SVGPainter2.prototype.renderOneToVNode = function(el) { - return brush2(el, createBrushScope(this._id)); - }; - SVGPainter2.prototype.renderToVNode = function(opts) { - opts = opts || {}; - var list = this.storage.getDisplayList(true); - var width = this._width; - var height = this._height; - var scope = createBrushScope(this._id); - scope.animation = opts.animation; - scope.willUpdate = opts.willUpdate; - scope.compress = opts.compress; - scope.emphasis = opts.emphasis; - scope.ssr = this._opts.ssr; - var children = []; - var bgVNode = this._bgVNode = createBackgroundVNode(width, height, this._backgroundColor, scope); - bgVNode && children.push(bgVNode); - var mainVNode = !opts.compress ? this._mainVNode = createVNode("g", "main", {}, []) : null; - this._paintList(list, scope, mainVNode ? mainVNode.children : children); - mainVNode && children.push(mainVNode); - var defs = map(keys(scope.defs), function(id) { - return scope.defs[id]; - }); - if (defs.length) { - children.push(createVNode("defs", "defs", {}, defs)); - } - if (opts.animation) { - var animationCssStr = getCssString(scope.cssNodes, scope.cssAnims, { newline: true }); - if (animationCssStr) { - var styleNode = createVNode("style", "stl", {}, [], animationCssStr); - children.push(styleNode); - } - } - return createSVGVNode(width, height, children, opts.useViewBox); - }; - SVGPainter2.prototype.renderToString = function(opts) { - opts = opts || {}; - return vNodeToString(this.renderToVNode({ - animation: retrieve2(opts.cssAnimation, true), - emphasis: retrieve2(opts.cssEmphasis, true), - willUpdate: false, - compress: true, - useViewBox: retrieve2(opts.useViewBox, true) - }), { newline: true }); - }; - SVGPainter2.prototype.setBackgroundColor = function(backgroundColor2) { - this._backgroundColor = backgroundColor2; - }; - SVGPainter2.prototype.getSvgRoot = function() { - return this._mainVNode && this._mainVNode.elm; - }; - SVGPainter2.prototype._paintList = function(list, scope, out2) { - var listLen = list.length; - var clipPathsGroupsStack = []; - var clipPathsGroupsStackDepth = 0; - var currentClipPathGroup; - var prevClipPaths; - var clipGroupNodeIdx = 0; - for (var i = 0; i < listLen; i++) { - var displayable = list[i]; - if (!displayable.invisible) { - var clipPaths = displayable.__clipPaths; - var len2 = clipPaths && clipPaths.length || 0; - var prevLen = prevClipPaths && prevClipPaths.length || 0; - var lca = void 0; - for (lca = Math.max(len2 - 1, prevLen - 1); lca >= 0; lca--) { - if (clipPaths && prevClipPaths && clipPaths[lca] === prevClipPaths[lca]) { - break; - } - } - for (var i_1 = prevLen - 1; i_1 > lca; i_1--) { - clipPathsGroupsStackDepth--; - currentClipPathGroup = clipPathsGroupsStack[clipPathsGroupsStackDepth - 1]; - } - for (var i_2 = lca + 1; i_2 < len2; i_2++) { - var groupAttrs = {}; - setClipPath(clipPaths[i_2], groupAttrs, scope); - var g = createVNode("g", "clip-g-" + clipGroupNodeIdx++, groupAttrs, []); - (currentClipPathGroup ? currentClipPathGroup.children : out2).push(g); - clipPathsGroupsStack[clipPathsGroupsStackDepth++] = g; - currentClipPathGroup = g; - } - prevClipPaths = clipPaths; - var ret = brush2(displayable, scope); - if (ret) { - (currentClipPathGroup ? currentClipPathGroup.children : out2).push(ret); - } - } - } - }; - SVGPainter2.prototype.resize = function(width, height) { - var opts = this._opts; - var root = this.root; - var viewport = this._viewport; - width != null && (opts.width = width); - height != null && (opts.height = height); - if (root && viewport) { - viewport.style.display = "none"; - width = getSize(root, 0, opts); - height = getSize(root, 1, opts); - viewport.style.display = ""; - } - if (this._width !== width || this._height !== height) { - this._width = width; - this._height = height; - if (viewport) { - var viewportStyle = viewport.style; - viewportStyle.width = width + "px"; - viewportStyle.height = height + "px"; - } - if (!isPattern(this._backgroundColor)) { - var svgDom = this._svgDom; - if (svgDom) { - svgDom.setAttribute("width", width); - svgDom.setAttribute("height", height); - } - var bgEl = this._bgVNode && this._bgVNode.elm; - if (bgEl) { - bgEl.setAttribute("width", width); - bgEl.setAttribute("height", height); - } - } else { - this.refresh(); - } - } - }; - SVGPainter2.prototype.getWidth = function() { - return this._width; - }; - SVGPainter2.prototype.getHeight = function() { - return this._height; - }; - SVGPainter2.prototype.dispose = function() { - if (this.root) { - this.root.innerHTML = ""; - } - this._svgDom = this._viewport = this.storage = this._oldVNode = this._bgVNode = this._mainVNode = null; - }; - SVGPainter2.prototype.clear = function() { - if (this._svgDom) { - this._svgDom.innerHTML = null; - } - this._oldVNode = null; - }; - SVGPainter2.prototype.toDataURL = function(base64) { - var str = this.renderToString(); - var prefix = "data:image/svg+xml;"; - if (base64) { - str = encodeBase64(str); - return str && prefix + "base64," + str; - } - return prefix + "charset=UTF-8," + encodeURIComponent(str); - }; - return SVGPainter2; - }(); - function createMethodNotSupport(method) { - return function() { - if (true) { - logError('In SVG mode painter not support method "' + method + '"'); - } - }; - } - function createBackgroundVNode(width, height, backgroundColor2, scope) { - var bgVNode; - if (backgroundColor2 && backgroundColor2 !== "none") { - bgVNode = createVNode("rect", "bg", { - width, - height, - x: "0", - y: "0" - }); - if (isGradient(backgroundColor2)) { - setGradient({ fill: backgroundColor2 }, bgVNode.attrs, "fill", scope); - } else if (isPattern(backgroundColor2)) { - setPattern({ - style: { - fill: backgroundColor2 - }, - dirty: noop, - getBoundingRect: function() { - return { width, height }; - } - }, bgVNode.attrs, "fill", scope); - } else { - var _a2 = normalizeColor(backgroundColor2), color = _a2.color, opacity = _a2.opacity; - bgVNode.attrs.fill = color; - opacity < 1 && (bgVNode.attrs["fill-opacity"] = opacity); - } - } - return bgVNode; - } - var Painter_default = SVGPainter; - - // node_modules/echarts/lib/renderer/installSVGRenderer.js - function install(registers) { - registers.registerPainter("svg", Painter_default); - } - - // node_modules/zrender/lib/canvas/Layer.js - function createDom(id, painter, dpr2) { - var newDom = platformApi.createCanvas(); - var width = painter.getWidth(); - var height = painter.getHeight(); - var newDomStyle = newDom.style; - if (newDomStyle) { - newDomStyle.position = "absolute"; - newDomStyle.left = "0"; - newDomStyle.top = "0"; - newDomStyle.width = width + "px"; - newDomStyle.height = height + "px"; - newDom.setAttribute("data-zr-dom-id", id); - } - newDom.width = width * dpr2; - newDom.height = height * dpr2; - return newDom; - } - var Layer = function(_super) { - __extends(Layer2, _super); - function Layer2(id, painter, dpr2) { - var _this = _super.call(this) || this; - _this.motionBlur = false; - _this.lastFrameAlpha = 0.7; - _this.dpr = 1; - _this.virtual = false; - _this.config = {}; - _this.incremental = false; - _this.zlevel = 0; - _this.maxRepaintRectCount = 5; - _this.__dirty = true; - _this.__firstTimePaint = true; - _this.__used = false; - _this.__drawIndex = 0; - _this.__startIndex = 0; - _this.__endIndex = 0; - _this.__prevStartIndex = null; - _this.__prevEndIndex = null; - var dom; - dpr2 = dpr2 || devicePixelRatio; - if (typeof id === "string") { - dom = createDom(id, painter, dpr2); - } else if (isObject(id)) { - dom = id; - id = dom.id; - } - _this.id = id; - _this.dom = dom; - var domStyle = dom.style; - if (domStyle) { - disableUserSelect(dom); - dom.onselectstart = function() { - return false; - }; - domStyle.padding = "0"; - domStyle.margin = "0"; - domStyle.borderWidth = "0"; - } - _this.painter = painter; - _this.dpr = dpr2; - return _this; - } - Layer2.prototype.getElementCount = function() { - return this.__endIndex - this.__startIndex; - }; - Layer2.prototype.afterBrush = function() { - this.__prevStartIndex = this.__startIndex; - this.__prevEndIndex = this.__endIndex; - }; - Layer2.prototype.initContext = function() { - this.ctx = this.dom.getContext("2d"); - this.ctx.dpr = this.dpr; - }; - Layer2.prototype.setUnpainted = function() { - this.__firstTimePaint = true; - }; - Layer2.prototype.createBackBuffer = function() { - var dpr2 = this.dpr; - this.domBack = createDom("back-" + this.id, this.painter, dpr2); - this.ctxBack = this.domBack.getContext("2d"); - if (dpr2 !== 1) { - this.ctxBack.scale(dpr2, dpr2); - } - }; - Layer2.prototype.createRepaintRects = function(displayList, prevList, viewWidth, viewHeight) { - if (this.__firstTimePaint) { - this.__firstTimePaint = false; - return null; - } - var mergedRepaintRects = []; - var maxRepaintRectCount = this.maxRepaintRectCount; - var full = false; - var pendingRect = new BoundingRect_default(0, 0, 0, 0); - function addRectToMergePool(rect) { - if (!rect.isFinite() || rect.isZero()) { - return; - } - if (mergedRepaintRects.length === 0) { - var boundingRect = new BoundingRect_default(0, 0, 0, 0); - boundingRect.copy(rect); - mergedRepaintRects.push(boundingRect); - } else { - var isMerged = false; - var minDeltaArea = Infinity; - var bestRectToMergeIdx = 0; - for (var i2 = 0; i2 < mergedRepaintRects.length; ++i2) { - var mergedRect = mergedRepaintRects[i2]; - if (mergedRect.intersect(rect)) { - var pendingRect_1 = new BoundingRect_default(0, 0, 0, 0); - pendingRect_1.copy(mergedRect); - pendingRect_1.union(rect); - mergedRepaintRects[i2] = pendingRect_1; - isMerged = true; - break; - } else if (full) { - pendingRect.copy(rect); - pendingRect.union(mergedRect); - var aArea = rect.width * rect.height; - var bArea = mergedRect.width * mergedRect.height; - var pendingArea = pendingRect.width * pendingRect.height; - var deltaArea = pendingArea - aArea - bArea; - if (deltaArea < minDeltaArea) { - minDeltaArea = deltaArea; - bestRectToMergeIdx = i2; - } - } - } - if (full) { - mergedRepaintRects[bestRectToMergeIdx].union(rect); - isMerged = true; - } - if (!isMerged) { - var boundingRect = new BoundingRect_default(0, 0, 0, 0); - boundingRect.copy(rect); - mergedRepaintRects.push(boundingRect); - } - if (!full) { - full = mergedRepaintRects.length >= maxRepaintRectCount; - } - } - } - for (var i = this.__startIndex; i < this.__endIndex; ++i) { - var el = displayList[i]; - if (el) { - var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true); - var prevRect = el.__isRendered && (el.__dirty & REDRAW_BIT || !shouldPaint) ? el.getPrevPaintRect() : null; - if (prevRect) { - addRectToMergePool(prevRect); - } - var curRect = shouldPaint && (el.__dirty & REDRAW_BIT || !el.__isRendered) ? el.getPaintRect() : null; - if (curRect) { - addRectToMergePool(curRect); - } - } - } - for (var i = this.__prevStartIndex; i < this.__prevEndIndex; ++i) { - var el = prevList[i]; - var shouldPaint = el && el.shouldBePainted(viewWidth, viewHeight, true, true); - if (el && (!shouldPaint || !el.__zr) && el.__isRendered) { - var prevRect = el.getPrevPaintRect(); - if (prevRect) { - addRectToMergePool(prevRect); - } - } - } - var hasIntersections; - do { - hasIntersections = false; - for (var i = 0; i < mergedRepaintRects.length; ) { - if (mergedRepaintRects[i].isZero()) { - mergedRepaintRects.splice(i, 1); - continue; - } - for (var j = i + 1; j < mergedRepaintRects.length; ) { - if (mergedRepaintRects[i].intersect(mergedRepaintRects[j])) { - hasIntersections = true; - mergedRepaintRects[i].union(mergedRepaintRects[j]); - mergedRepaintRects.splice(j, 1); - } else { - j++; - } - } - i++; - } - } while (hasIntersections); - this._paintRects = mergedRepaintRects; - return mergedRepaintRects; - }; - Layer2.prototype.debugGetPaintRects = function() { - return (this._paintRects || []).slice(); - }; - Layer2.prototype.resize = function(width, height) { - var dpr2 = this.dpr; - var dom = this.dom; - var domStyle = dom.style; - var domBack = this.domBack; - if (domStyle) { - domStyle.width = width + "px"; - domStyle.height = height + "px"; - } - dom.width = width * dpr2; - dom.height = height * dpr2; - if (domBack) { - domBack.width = width * dpr2; - domBack.height = height * dpr2; - if (dpr2 !== 1) { - this.ctxBack.scale(dpr2, dpr2); - } - } - }; - Layer2.prototype.clear = function(clearAll, clearColor, repaintRects) { - var dom = this.dom; - var ctx = this.ctx; - var width = dom.width; - var height = dom.height; - clearColor = clearColor || this.clearColor; - var haveMotionBLur = this.motionBlur && !clearAll; - var lastFrameAlpha = this.lastFrameAlpha; - var dpr2 = this.dpr; - var self2 = this; - if (haveMotionBLur) { - if (!this.domBack) { - this.createBackBuffer(); - } - this.ctxBack.globalCompositeOperation = "copy"; - this.ctxBack.drawImage(dom, 0, 0, width / dpr2, height / dpr2); - } - var domBack = this.domBack; - function doClear(x, y, width2, height2) { - ctx.clearRect(x, y, width2, height2); - if (clearColor && clearColor !== "transparent") { - var clearColorGradientOrPattern = void 0; - if (isGradientObject(clearColor)) { - var shouldCache = clearColor.global || clearColor.__width === width2 && clearColor.__height === height2; - clearColorGradientOrPattern = shouldCache && clearColor.__canvasGradient || getCanvasGradient(ctx, clearColor, { - x: 0, - y: 0, - width: width2, - height: height2 - }); - clearColor.__canvasGradient = clearColorGradientOrPattern; - clearColor.__width = width2; - clearColor.__height = height2; - } else if (isImagePatternObject(clearColor)) { - clearColor.scaleX = clearColor.scaleX || dpr2; - clearColor.scaleY = clearColor.scaleY || dpr2; - clearColorGradientOrPattern = createCanvasPattern(ctx, clearColor, { - dirty: function() { - self2.setUnpainted(); - self2.painter.refresh(); - } - }); - } - ctx.save(); - ctx.fillStyle = clearColorGradientOrPattern || clearColor; - ctx.fillRect(x, y, width2, height2); - ctx.restore(); - } - if (haveMotionBLur) { - ctx.save(); - ctx.globalAlpha = lastFrameAlpha; - ctx.drawImage(domBack, x, y, width2, height2); - ctx.restore(); - } - } - ; - if (!repaintRects || haveMotionBLur) { - doClear(0, 0, width, height); - } else if (repaintRects.length) { - each(repaintRects, function(rect) { - doClear(rect.x * dpr2, rect.y * dpr2, rect.width * dpr2, rect.height * dpr2); - }); - } - }; - return Layer2; - }(Eventful_default); - var Layer_default = Layer; - - // node_modules/zrender/lib/canvas/Painter.js - var HOVER_LAYER_ZLEVEL = 1e5; - var CANVAS_ZLEVEL = 314159; - var EL_AFTER_INCREMENTAL_INC = 0.01; - var INCREMENTAL_INC = 1e-3; - function isLayerValid(layer) { - if (!layer) { - return false; - } - if (layer.__builtin__) { - return true; - } - if (typeof layer.resize !== "function" || typeof layer.refresh !== "function") { - return false; - } - return true; - } - function createRoot(width, height) { - var domRoot = document.createElement("div"); - domRoot.style.cssText = [ - "position:relative", - "width:" + width + "px", - "height:" + height + "px", - "padding:0", - "margin:0", - "border-width:0" - ].join(";") + ";"; - return domRoot; - } - var CanvasPainter = function() { - function CanvasPainter2(root, storage2, opts, id) { - this.type = "canvas"; - this._zlevelList = []; - this._prevDisplayList = []; - this._layers = {}; - this._layerConfig = {}; - this._needsManuallyCompositing = false; - this.type = "canvas"; - var singleCanvas = !root.nodeName || root.nodeName.toUpperCase() === "CANVAS"; - this._opts = opts = extend({}, opts || {}); - this.dpr = opts.devicePixelRatio || devicePixelRatio; - this._singleCanvas = singleCanvas; - this.root = root; - var rootStyle = root.style; - if (rootStyle) { - disableUserSelect(root); - root.innerHTML = ""; - } - this.storage = storage2; - var zlevelList = this._zlevelList; - this._prevDisplayList = []; - var layers = this._layers; - if (!singleCanvas) { - this._width = getSize(root, 0, opts); - this._height = getSize(root, 1, opts); - var domRoot = this._domRoot = createRoot(this._width, this._height); - root.appendChild(domRoot); - } else { - var rootCanvas = root; - var width = rootCanvas.width; - var height = rootCanvas.height; - if (opts.width != null) { - width = opts.width; - } - if (opts.height != null) { - height = opts.height; - } - this.dpr = opts.devicePixelRatio || 1; - rootCanvas.width = width * this.dpr; - rootCanvas.height = height * this.dpr; - this._width = width; - this._height = height; - var mainLayer = new Layer_default(rootCanvas, this, this.dpr); - mainLayer.__builtin__ = true; - mainLayer.initContext(); - layers[CANVAS_ZLEVEL] = mainLayer; - mainLayer.zlevel = CANVAS_ZLEVEL; - zlevelList.push(CANVAS_ZLEVEL); - this._domRoot = root; - } - } - CanvasPainter2.prototype.getType = function() { - return "canvas"; - }; - CanvasPainter2.prototype.isSingleCanvas = function() { - return this._singleCanvas; - }; - CanvasPainter2.prototype.getViewportRoot = function() { - return this._domRoot; - }; - CanvasPainter2.prototype.getViewportRootOffset = function() { - var viewportRoot = this.getViewportRoot(); - if (viewportRoot) { - return { - offsetLeft: viewportRoot.offsetLeft || 0, - offsetTop: viewportRoot.offsetTop || 0 - }; - } - }; - CanvasPainter2.prototype.refresh = function(paintAll) { - var list = this.storage.getDisplayList(true); - var prevList = this._prevDisplayList; - var zlevelList = this._zlevelList; - this._redrawId = Math.random(); - this._paintList(list, prevList, paintAll, this._redrawId); - for (var i = 0; i < zlevelList.length; i++) { - var z = zlevelList[i]; - var layer = this._layers[z]; - if (!layer.__builtin__ && layer.refresh) { - var clearColor = i === 0 ? this._backgroundColor : null; - layer.refresh(clearColor); - } - } - if (this._opts.useDirtyRect) { - this._prevDisplayList = list.slice(); - } - return this; - }; - CanvasPainter2.prototype.refreshHover = function() { - this._paintHoverList(this.storage.getDisplayList(false)); - }; - CanvasPainter2.prototype._paintHoverList = function(list) { - var len2 = list.length; - var hoverLayer = this._hoverlayer; - hoverLayer && hoverLayer.clear(); - if (!len2) { - return; - } - var scope = { - inHover: true, - viewWidth: this._width, - viewHeight: this._height - }; - var ctx; - for (var i = 0; i < len2; i++) { - var el = list[i]; - if (el.__inHover) { - if (!hoverLayer) { - hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL); - } - if (!ctx) { - ctx = hoverLayer.ctx; - ctx.save(); - } - brush(ctx, el, scope, i === len2 - 1); - } - } - if (ctx) { - ctx.restore(); - } - }; - CanvasPainter2.prototype.getHoverLayer = function() { - return this.getLayer(HOVER_LAYER_ZLEVEL); - }; - CanvasPainter2.prototype.paintOne = function(ctx, el) { - brushSingle(ctx, el); - }; - CanvasPainter2.prototype._paintList = function(list, prevList, paintAll, redrawId) { - if (this._redrawId !== redrawId) { - return; - } - paintAll = paintAll || false; - this._updateLayerStatus(list); - var _a2 = this._doPaintList(list, prevList, paintAll), finished = _a2.finished, needsRefreshHover = _a2.needsRefreshHover; - if (this._needsManuallyCompositing) { - this._compositeManually(); - } - if (needsRefreshHover) { - this._paintHoverList(list); - } - if (!finished) { - var self_1 = this; - requestAnimationFrame_default(function() { - self_1._paintList(list, prevList, paintAll, redrawId); - }); - } else { - this.eachLayer(function(layer) { - layer.afterBrush && layer.afterBrush(); - }); - } - }; - CanvasPainter2.prototype._compositeManually = function() { - var ctx = this.getLayer(CANVAS_ZLEVEL).ctx; - var width = this._domRoot.width; - var height = this._domRoot.height; - ctx.clearRect(0, 0, width, height); - this.eachBuiltinLayer(function(layer) { - if (layer.virtual) { - ctx.drawImage(layer.dom, 0, 0, width, height); - } - }); - }; - CanvasPainter2.prototype._doPaintList = function(list, prevList, paintAll) { - var _this = this; - var layerList = []; - var useDirtyRect = this._opts.useDirtyRect; - for (var zi = 0; zi < this._zlevelList.length; zi++) { - var zlevel = this._zlevelList[zi]; - var layer = this._layers[zlevel]; - if (layer.__builtin__ && layer !== this._hoverlayer && (layer.__dirty || paintAll)) { - layerList.push(layer); - } - } - var finished = true; - var needsRefreshHover = false; - var _loop_1 = function(k2) { - var layer2 = layerList[k2]; - var ctx = layer2.ctx; - var repaintRects = useDirtyRect && layer2.createRepaintRects(list, prevList, this_1._width, this_1._height); - var start3 = paintAll ? layer2.__startIndex : layer2.__drawIndex; - var useTimer = !paintAll && layer2.incremental && Date.now; - var startTime = useTimer && Date.now(); - var clearColor = layer2.zlevel === this_1._zlevelList[0] ? this_1._backgroundColor : null; - if (layer2.__startIndex === layer2.__endIndex) { - layer2.clear(false, clearColor, repaintRects); - } else if (start3 === layer2.__startIndex) { - var firstEl = list[start3]; - if (!firstEl.incremental || !firstEl.notClear || paintAll) { - layer2.clear(false, clearColor, repaintRects); - } - } - if (start3 === -1) { - console.error("For some unknown reason. drawIndex is -1"); - start3 = layer2.__startIndex; - } - var i; - var repaint = function(repaintRect) { - var scope = { - inHover: false, - allClipped: false, - prevEl: null, - viewWidth: _this._width, - viewHeight: _this._height - }; - for (i = start3; i < layer2.__endIndex; i++) { - var el = list[i]; - if (el.__inHover) { - needsRefreshHover = true; - } - _this._doPaintEl(el, layer2, useDirtyRect, repaintRect, scope, i === layer2.__endIndex - 1); - if (useTimer) { - var dTime = Date.now() - startTime; - if (dTime > 15) { - break; - } - } - } - if (scope.prevElClipPaths) { - ctx.restore(); - } - }; - if (repaintRects) { - if (repaintRects.length === 0) { - i = layer2.__endIndex; - } else { - var dpr2 = this_1.dpr; - for (var r = 0; r < repaintRects.length; ++r) { - var rect = repaintRects[r]; - ctx.save(); - ctx.beginPath(); - ctx.rect(rect.x * dpr2, rect.y * dpr2, rect.width * dpr2, rect.height * dpr2); - ctx.clip(); - repaint(rect); - ctx.restore(); - } - } - } else { - ctx.save(); - repaint(); - ctx.restore(); - } - layer2.__drawIndex = i; - if (layer2.__drawIndex < layer2.__endIndex) { - finished = false; - } - }; - var this_1 = this; - for (var k = 0; k < layerList.length; k++) { - _loop_1(k); - } - if (env_default.wxa) { - each(this._layers, function(layer2) { - if (layer2 && layer2.ctx && layer2.ctx.draw) { - layer2.ctx.draw(); - } - }); - } - return { - finished, - needsRefreshHover - }; - }; - CanvasPainter2.prototype._doPaintEl = function(el, currentLayer, useDirtyRect, repaintRect, scope, isLast) { - var ctx = currentLayer.ctx; - if (useDirtyRect) { - var paintRect = el.getPaintRect(); - if (!repaintRect || paintRect && paintRect.intersect(repaintRect)) { - brush(ctx, el, scope, isLast); - el.setPrevPaintRect(paintRect); - } - } else { - brush(ctx, el, scope, isLast); - } - }; - CanvasPainter2.prototype.getLayer = function(zlevel, virtual) { - if (this._singleCanvas && !this._needsManuallyCompositing) { - zlevel = CANVAS_ZLEVEL; - } - var layer = this._layers[zlevel]; - if (!layer) { - layer = new Layer_default("zr_" + zlevel, this, this.dpr); - layer.zlevel = zlevel; - layer.__builtin__ = true; - if (this._layerConfig[zlevel]) { - merge(layer, this._layerConfig[zlevel], true); - } else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) { - merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true); - } - if (virtual) { - layer.virtual = virtual; - } - this.insertLayer(zlevel, layer); - layer.initContext(); - } - return layer; - }; - CanvasPainter2.prototype.insertLayer = function(zlevel, layer) { - var layersMap = this._layers; - var zlevelList = this._zlevelList; - var len2 = zlevelList.length; - var domRoot = this._domRoot; - var prevLayer = null; - var i = -1; - if (layersMap[zlevel]) { - if (true) { - logError("ZLevel " + zlevel + " has been used already"); - } - return; - } - if (!isLayerValid(layer)) { - if (true) { - logError("Layer of zlevel " + zlevel + " is not valid"); - } - return; - } - if (len2 > 0 && zlevel > zlevelList[0]) { - for (i = 0; i < len2 - 1; i++) { - if (zlevelList[i] < zlevel && zlevelList[i + 1] > zlevel) { - break; - } - } - prevLayer = layersMap[zlevelList[i]]; - } - zlevelList.splice(i + 1, 0, zlevel); - layersMap[zlevel] = layer; - if (!layer.virtual) { - if (prevLayer) { - var prevDom = prevLayer.dom; - if (prevDom.nextSibling) { - domRoot.insertBefore(layer.dom, prevDom.nextSibling); - } else { - domRoot.appendChild(layer.dom); - } - } else { - if (domRoot.firstChild) { - domRoot.insertBefore(layer.dom, domRoot.firstChild); - } else { - domRoot.appendChild(layer.dom); - } - } - } - layer.painter || (layer.painter = this); - }; - CanvasPainter2.prototype.eachLayer = function(cb, context) { - var zlevelList = this._zlevelList; - for (var i = 0; i < zlevelList.length; i++) { - var z = zlevelList[i]; - cb.call(context, this._layers[z], z); - } - }; - CanvasPainter2.prototype.eachBuiltinLayer = function(cb, context) { - var zlevelList = this._zlevelList; - for (var i = 0; i < zlevelList.length; i++) { - var z = zlevelList[i]; - var layer = this._layers[z]; - if (layer.__builtin__) { - cb.call(context, layer, z); - } - } - }; - CanvasPainter2.prototype.eachOtherLayer = function(cb, context) { - var zlevelList = this._zlevelList; - for (var i = 0; i < zlevelList.length; i++) { - var z = zlevelList[i]; - var layer = this._layers[z]; - if (!layer.__builtin__) { - cb.call(context, layer, z); - } - } - }; - CanvasPainter2.prototype.getLayers = function() { - return this._layers; - }; - CanvasPainter2.prototype._updateLayerStatus = function(list) { - this.eachBuiltinLayer(function(layer2, z) { - layer2.__dirty = layer2.__used = false; - }); - function updatePrevLayer(idx) { - if (prevLayer) { - if (prevLayer.__endIndex !== idx) { - prevLayer.__dirty = true; - } - prevLayer.__endIndex = idx; - } - } - if (this._singleCanvas) { - for (var i_1 = 1; i_1 < list.length; i_1++) { - var el = list[i_1]; - if (el.zlevel !== list[i_1 - 1].zlevel || el.incremental) { - this._needsManuallyCompositing = true; - break; - } - } - } - var prevLayer = null; - var incrementalLayerCount = 0; - var prevZlevel; - var i; - for (i = 0; i < list.length; i++) { - var el = list[i]; - var zlevel = el.zlevel; - var layer = void 0; - if (prevZlevel !== zlevel) { - prevZlevel = zlevel; - incrementalLayerCount = 0; - } - if (el.incremental) { - layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing); - layer.incremental = true; - incrementalLayerCount = 1; - } else { - layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing); - } - if (!layer.__builtin__) { - logError("ZLevel " + zlevel + " has been used by unkown layer " + layer.id); - } - if (layer !== prevLayer) { - layer.__used = true; - if (layer.__startIndex !== i) { - layer.__dirty = true; - } - layer.__startIndex = i; - if (!layer.incremental) { - layer.__drawIndex = i; - } else { - layer.__drawIndex = -1; - } - updatePrevLayer(i); - prevLayer = layer; - } - if (el.__dirty & REDRAW_BIT && !el.__inHover) { - layer.__dirty = true; - if (layer.incremental && layer.__drawIndex < 0) { - layer.__drawIndex = i; - } - } - } - updatePrevLayer(i); - this.eachBuiltinLayer(function(layer2, z) { - if (!layer2.__used && layer2.getElementCount() > 0) { - layer2.__dirty = true; - layer2.__startIndex = layer2.__endIndex = layer2.__drawIndex = 0; - } - if (layer2.__dirty && layer2.__drawIndex < 0) { - layer2.__drawIndex = layer2.__startIndex; - } - }); - }; - CanvasPainter2.prototype.clear = function() { - this.eachBuiltinLayer(this._clearLayer); - return this; - }; - CanvasPainter2.prototype._clearLayer = function(layer) { - layer.clear(); - }; - CanvasPainter2.prototype.setBackgroundColor = function(backgroundColor2) { - this._backgroundColor = backgroundColor2; - each(this._layers, function(layer) { - layer.setUnpainted(); - }); - }; - CanvasPainter2.prototype.configLayer = function(zlevel, config2) { - if (config2) { - var layerConfig = this._layerConfig; - if (!layerConfig[zlevel]) { - layerConfig[zlevel] = config2; - } else { - merge(layerConfig[zlevel], config2, true); - } - for (var i = 0; i < this._zlevelList.length; i++) { - var _zlevel = this._zlevelList[i]; - if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) { - var layer = this._layers[_zlevel]; - merge(layer, layerConfig[zlevel], true); - } - } - } - }; - CanvasPainter2.prototype.delLayer = function(zlevel) { - var layers = this._layers; - var zlevelList = this._zlevelList; - var layer = layers[zlevel]; - if (!layer) { - return; - } - layer.dom.parentNode.removeChild(layer.dom); - delete layers[zlevel]; - zlevelList.splice(indexOf(zlevelList, zlevel), 1); - }; - CanvasPainter2.prototype.resize = function(width, height) { - if (!this._domRoot.style) { - if (width == null || height == null) { - return; - } - this._width = width; - this._height = height; - this.getLayer(CANVAS_ZLEVEL).resize(width, height); - } else { - var domRoot = this._domRoot; - domRoot.style.display = "none"; - var opts = this._opts; - var root = this.root; - width != null && (opts.width = width); - height != null && (opts.height = height); - width = getSize(root, 0, opts); - height = getSize(root, 1, opts); - domRoot.style.display = ""; - if (this._width !== width || height !== this._height) { - domRoot.style.width = width + "px"; - domRoot.style.height = height + "px"; - for (var id in this._layers) { - if (this._layers.hasOwnProperty(id)) { - this._layers[id].resize(width, height); - } - } - this.refresh(true); - } - this._width = width; - this._height = height; - } - return this; - }; - CanvasPainter2.prototype.clearLayer = function(zlevel) { - var layer = this._layers[zlevel]; - if (layer) { - layer.clear(); - } - }; - CanvasPainter2.prototype.dispose = function() { - this.root.innerHTML = ""; - this.root = this.storage = this._domRoot = this._layers = null; - }; - CanvasPainter2.prototype.getRenderedCanvas = function(opts) { - opts = opts || {}; - if (this._singleCanvas && !this._compositeManually) { - return this._layers[CANVAS_ZLEVEL].dom; - } - var imageLayer = new Layer_default("image", this, opts.pixelRatio || this.dpr); - imageLayer.initContext(); - imageLayer.clear(false, opts.backgroundColor || this._backgroundColor); - var ctx = imageLayer.ctx; - if (opts.pixelRatio <= this.dpr) { - this.refresh(); - var width_1 = imageLayer.dom.width; - var height_1 = imageLayer.dom.height; - this.eachLayer(function(layer) { - if (layer.__builtin__) { - ctx.drawImage(layer.dom, 0, 0, width_1, height_1); - } else if (layer.renderToCanvas) { - ctx.save(); - layer.renderToCanvas(ctx); - ctx.restore(); - } - }); - } else { - var scope = { - inHover: false, - viewWidth: this._width, - viewHeight: this._height - }; - var displayList = this.storage.getDisplayList(true); - for (var i = 0, len2 = displayList.length; i < len2; i++) { - var el = displayList[i]; - brush(ctx, el, scope, i === len2 - 1); - } - } - return imageLayer.dom; - }; - CanvasPainter2.prototype.getWidth = function() { - return this._width; - }; - CanvasPainter2.prototype.getHeight = function() { - return this._height; - }; - return CanvasPainter2; - }(); - var Painter_default2 = CanvasPainter; - - // node_modules/echarts/lib/renderer/installCanvasRenderer.js - function install2(registers) { - registers.registerPainter("canvas", Painter_default2); - } - - // node_modules/echarts/lib/chart/line/LineSeries.js - var LineSeriesModel = ( - /** @class */ - function(_super) { - __extends(LineSeriesModel2, _super); - function LineSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = LineSeriesModel2.type; - _this.hasSymbolVisual = true; - return _this; - } - LineSeriesModel2.prototype.getInitialData = function(option) { - if (true) { - var coordSys = option.coordinateSystem; - if (coordSys !== "polar" && coordSys !== "cartesian2d") { - throw new Error("Line not support coordinateSystem besides cartesian and polar"); - } - } - return createSeriesData_default(null, this, { - useEncodeDefaulter: true - }); - }; - LineSeriesModel2.prototype.getLegendIcon = function(opt) { - var group = new Group_default(); - var line = createSymbol("line", 0, opt.itemHeight / 2, opt.itemWidth, 0, opt.lineStyle.stroke, false); - group.add(line); - line.setStyle(opt.lineStyle); - var visualType = this.getData().getVisual("symbol"); - var visualRotate = this.getData().getVisual("symbolRotate"); - var symbolType = visualType === "none" ? "circle" : visualType; - var size2 = opt.itemHeight * 0.8; - var symbol = createSymbol(symbolType, (opt.itemWidth - size2) / 2, (opt.itemHeight - size2) / 2, size2, size2, opt.itemStyle.fill); - group.add(symbol); - symbol.setStyle(opt.itemStyle); - var symbolRotate = opt.iconRotate === "inherit" ? visualRotate : opt.iconRotate || 0; - symbol.rotation = symbolRotate * Math.PI / 180; - symbol.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]); - if (symbolType.indexOf("empty") > -1) { - symbol.style.stroke = symbol.style.fill; - symbol.style.fill = "#fff"; - symbol.style.lineWidth = 2; - } - return group; - }; - LineSeriesModel2.type = "series.line"; - LineSeriesModel2.dependencies = ["grid", "polar"]; - LineSeriesModel2.defaultOption = { - // zlevel: 0, - z: 3, - coordinateSystem: "cartesian2d", - legendHoverLink: true, - clip: true, - label: { - position: "top" - }, - // itemStyle: { - // }, - endLabel: { - show: false, - valueAnimation: true, - distance: 8 - }, - lineStyle: { - width: 2, - type: "solid" - }, - emphasis: { - scale: true - }, - // areaStyle: { - // origin of areaStyle. Valid values: - // `'auto'/null/undefined`: from axisLine to data - // `'start'`: from min to data - // `'end'`: from data to max - // origin: 'auto' - // }, - // false, 'start', 'end', 'middle' - step: false, - // Disabled if step is true - smooth: false, - smoothMonotone: null, - symbol: "emptyCircle", - symbolSize: 4, - symbolRotate: null, - showSymbol: true, - // `false`: follow the label interval strategy. - // `true`: show all symbols. - // `'auto'`: If possible, show all symbols, otherwise - // follow the label interval strategy. - showAllSymbol: "auto", - // Whether to connect break point. - connectNulls: false, - // Sampling for large data. Can be: 'average', 'max', 'min', 'sum', 'lttb'. - sampling: "none", - animationEasing: "linear", - // Disable progressive - progressive: 0, - hoverLayerThreshold: Infinity, - universalTransition: { - divideShape: "clone" - }, - triggerLineEvent: false - }; - return LineSeriesModel2; - }(Series_default) - ); - var LineSeries_default = LineSeriesModel; - - // node_modules/echarts/lib/chart/helper/labelHelper.js - function getDefaultLabel(data, dataIndex) { - var labelDims = data.mapDimensionsAll("defaultedLabel"); - var len2 = labelDims.length; - if (len2 === 1) { - var rawVal = retrieveRawValue(data, dataIndex, labelDims[0]); - return rawVal != null ? rawVal + "" : null; - } else if (len2) { - var vals = []; - for (var i = 0; i < labelDims.length; i++) { - vals.push(retrieveRawValue(data, dataIndex, labelDims[i])); - } - return vals.join(" "); - } - } - function getDefaultInterpolatedLabel(data, interpolatedValue) { - var labelDims = data.mapDimensionsAll("defaultedLabel"); - if (!isArray(interpolatedValue)) { - return interpolatedValue + ""; - } - var vals = []; - for (var i = 0; i < labelDims.length; i++) { - var dimIndex = data.getDimensionIndex(labelDims[i]); - if (dimIndex >= 0) { - vals.push(interpolatedValue[dimIndex]); - } - } - return vals.join(" "); - } - - // node_modules/echarts/lib/chart/helper/Symbol.js - var Symbol2 = ( - /** @class */ - function(_super) { - __extends(Symbol3, _super); - function Symbol3(data, idx, seriesScope, opts) { - var _this = _super.call(this) || this; - _this.updateData(data, idx, seriesScope, opts); - return _this; - } - Symbol3.prototype._createSymbol = function(symbolType, data, idx, symbolSize, keepAspect) { - this.removeAll(); - var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, null, keepAspect); - symbolPath.attr({ - z2: 100, - culling: true, - scaleX: symbolSize[0] / 2, - scaleY: symbolSize[1] / 2 - }); - symbolPath.drift = driftSymbol; - this._symbolType = symbolType; - this.add(symbolPath); - }; - Symbol3.prototype.stopSymbolAnimation = function(toLastFrame) { - this.childAt(0).stopAnimation(null, toLastFrame); - }; - Symbol3.prototype.getSymbolType = function() { - return this._symbolType; - }; - Symbol3.prototype.getSymbolPath = function() { - return this.childAt(0); - }; - Symbol3.prototype.highlight = function() { - enterEmphasis(this.childAt(0)); - }; - Symbol3.prototype.downplay = function() { - leaveEmphasis(this.childAt(0)); - }; - Symbol3.prototype.setZ = function(zlevel, z) { - var symbolPath = this.childAt(0); - symbolPath.zlevel = zlevel; - symbolPath.z = z; - }; - Symbol3.prototype.setDraggable = function(draggable, hasCursorOption) { - var symbolPath = this.childAt(0); - symbolPath.draggable = draggable; - symbolPath.cursor = !hasCursorOption && draggable ? "move" : symbolPath.cursor; - }; - Symbol3.prototype.updateData = function(data, idx, seriesScope, opts) { - this.silent = false; - var symbolType = data.getItemVisual(idx, "symbol") || "circle"; - var seriesModel = data.hostModel; - var symbolSize = Symbol3.getSymbolSize(data, idx); - var isInit = symbolType !== this._symbolType; - var disableAnimation = opts && opts.disableAnimation; - if (isInit) { - var keepAspect = data.getItemVisual(idx, "symbolKeepAspect"); - this._createSymbol(symbolType, data, idx, symbolSize, keepAspect); - } else { - var symbolPath = this.childAt(0); - symbolPath.silent = false; - var target = { - scaleX: symbolSize[0] / 2, - scaleY: symbolSize[1] / 2 - }; - disableAnimation ? symbolPath.attr(target) : updateProps(symbolPath, target, seriesModel, idx); - saveOldStyle(symbolPath); - } - this._updateCommon(data, idx, symbolSize, seriesScope, opts); - if (isInit) { - var symbolPath = this.childAt(0); - if (!disableAnimation) { - var target = { - scaleX: this._sizeX, - scaleY: this._sizeY, - style: { - // Always fadeIn. Because it has fadeOut animation when symbol is removed.. - opacity: symbolPath.style.opacity - } - }; - symbolPath.scaleX = symbolPath.scaleY = 0; - symbolPath.style.opacity = 0; - initProps(symbolPath, target, seriesModel, idx); - } - } - if (disableAnimation) { - this.childAt(0).stopAnimation("leave"); - } - }; - Symbol3.prototype._updateCommon = function(data, idx, symbolSize, seriesScope, opts) { - var symbolPath = this.childAt(0); - var seriesModel = data.hostModel; - var emphasisItemStyle; - var blurItemStyle; - var selectItemStyle; - var focus; - var blurScope; - var emphasisDisabled; - var labelStatesModels; - var hoverScale; - var cursorStyle; - if (seriesScope) { - emphasisItemStyle = seriesScope.emphasisItemStyle; - blurItemStyle = seriesScope.blurItemStyle; - selectItemStyle = seriesScope.selectItemStyle; - focus = seriesScope.focus; - blurScope = seriesScope.blurScope; - labelStatesModels = seriesScope.labelStatesModels; - hoverScale = seriesScope.hoverScale; - cursorStyle = seriesScope.cursorStyle; - emphasisDisabled = seriesScope.emphasisDisabled; - } - if (!seriesScope || data.hasItemOption) { - var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx); - var emphasisModel = itemModel.getModel("emphasis"); - emphasisItemStyle = emphasisModel.getModel("itemStyle").getItemStyle(); - selectItemStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle(); - blurItemStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle(); - focus = emphasisModel.get("focus"); - blurScope = emphasisModel.get("blurScope"); - emphasisDisabled = emphasisModel.get("disabled"); - labelStatesModels = getLabelStatesModels(itemModel); - hoverScale = emphasisModel.getShallow("scale"); - cursorStyle = itemModel.getShallow("cursor"); - } - var symbolRotate = data.getItemVisual(idx, "symbolRotate"); - symbolPath.attr("rotation", (symbolRotate || 0) * Math.PI / 180 || 0); - var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, "symbolOffset"), symbolSize); - if (symbolOffset) { - symbolPath.x = symbolOffset[0]; - symbolPath.y = symbolOffset[1]; - } - cursorStyle && symbolPath.attr("cursor", cursorStyle); - var symbolStyle = data.getItemVisual(idx, "style"); - var visualColor = symbolStyle.fill; - if (symbolPath instanceof Image_default) { - var pathStyle = symbolPath.style; - symbolPath.useStyle(extend({ - // TODO other properties like x, y ? - image: pathStyle.image, - x: pathStyle.x, - y: pathStyle.y, - width: pathStyle.width, - height: pathStyle.height - }, symbolStyle)); - } else { - if (symbolPath.__isEmptyBrush) { - symbolPath.useStyle(extend({}, symbolStyle)); - } else { - symbolPath.useStyle(symbolStyle); - } - symbolPath.style.decal = null; - symbolPath.setColor(visualColor, opts && opts.symbolInnerColor); - symbolPath.style.strokeNoScale = true; - } - var liftZ = data.getItemVisual(idx, "liftZ"); - var z2Origin = this._z2; - if (liftZ != null) { - if (z2Origin == null) { - this._z2 = symbolPath.z2; - symbolPath.z2 += liftZ; - } - } else if (z2Origin != null) { - symbolPath.z2 = z2Origin; - this._z2 = null; - } - var useNameLabel = opts && opts.useNameLabel; - setLabelStyle(symbolPath, labelStatesModels, { - labelFetcher: seriesModel, - labelDataIndex: idx, - defaultText: getLabelDefaultText, - inheritColor: visualColor, - defaultOpacity: symbolStyle.opacity - }); - function getLabelDefaultText(idx2) { - return useNameLabel ? data.getName(idx2) : getDefaultLabel(data, idx2); - } - this._sizeX = symbolSize[0] / 2; - this._sizeY = symbolSize[1] / 2; - var emphasisState = symbolPath.ensureState("emphasis"); - emphasisState.style = emphasisItemStyle; - symbolPath.ensureState("select").style = selectItemStyle; - symbolPath.ensureState("blur").style = blurItemStyle; - var scaleRatio = hoverScale == null || hoverScale === true ? Math.max(1.1, 3 / this._sizeY) : isFinite(hoverScale) && hoverScale > 0 ? +hoverScale : 1; - emphasisState.scaleX = this._sizeX * scaleRatio; - emphasisState.scaleY = this._sizeY * scaleRatio; - this.setSymbolScale(1); - toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled); - }; - Symbol3.prototype.setSymbolScale = function(scale4) { - this.scaleX = this.scaleY = scale4; - }; - Symbol3.prototype.fadeOut = function(cb, seriesModel, opt) { - var symbolPath = this.childAt(0); - var dataIndex = getECData(this).dataIndex; - var animationOpt = opt && opt.animation; - this.silent = symbolPath.silent = true; - if (opt && opt.fadeLabel) { - var textContent = symbolPath.getTextContent(); - if (textContent) { - removeElement(textContent, { - style: { - opacity: 0 - } - }, seriesModel, { - dataIndex, - removeOpt: animationOpt, - cb: function() { - symbolPath.removeTextContent(); - } - }); - } - } else { - symbolPath.removeTextContent(); - } - removeElement(symbolPath, { - style: { - opacity: 0 - }, - scaleX: 0, - scaleY: 0 - }, seriesModel, { - dataIndex, - cb, - removeOpt: animationOpt - }); - }; - Symbol3.getSymbolSize = function(data, idx) { - return normalizeSymbolSize(data.getItemVisual(idx, "symbolSize")); - }; - return Symbol3; - }(Group_default) - ); - function driftSymbol(dx, dy) { - this.parent.drift(dx, dy); - } - var Symbol_default = Symbol2; - - // node_modules/echarts/lib/chart/helper/SymbolDraw.js - function symbolNeedsDraw(data, point, idx, opt) { - return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, "symbol") !== "none"; - } - function normalizeUpdateOpt(opt) { - if (opt != null && !isObject(opt)) { - opt = { - isIgnore: opt - }; - } - return opt || {}; - } - function makeSeriesScope(data) { - var seriesModel = data.hostModel; - var emphasisModel = seriesModel.getModel("emphasis"); - return { - emphasisItemStyle: emphasisModel.getModel("itemStyle").getItemStyle(), - blurItemStyle: seriesModel.getModel(["blur", "itemStyle"]).getItemStyle(), - selectItemStyle: seriesModel.getModel(["select", "itemStyle"]).getItemStyle(), - focus: emphasisModel.get("focus"), - blurScope: emphasisModel.get("blurScope"), - emphasisDisabled: emphasisModel.get("disabled"), - hoverScale: emphasisModel.get("scale"), - labelStatesModels: getLabelStatesModels(seriesModel), - cursorStyle: seriesModel.get("cursor") - }; - } - var SymbolDraw = ( - /** @class */ - function() { - function SymbolDraw2(SymbolCtor) { - this.group = new Group_default(); - this._SymbolCtor = SymbolCtor || Symbol_default; - } - SymbolDraw2.prototype.updateData = function(data, opt) { - this._progressiveEls = null; - opt = normalizeUpdateOpt(opt); - var group = this.group; - var seriesModel = data.hostModel; - var oldData = this._data; - var SymbolCtor = this._SymbolCtor; - var disableAnimation = opt.disableAnimation; - var seriesScope = makeSeriesScope(data); - var symbolUpdateOpt = { - disableAnimation - }; - var getSymbolPoint = opt.getSymbolPoint || function(idx) { - return data.getItemLayout(idx); - }; - if (!oldData) { - group.removeAll(); - } - data.diff(oldData).add(function(newIdx) { - var point = getSymbolPoint(newIdx); - if (symbolNeedsDraw(data, point, newIdx, opt)) { - var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt); - symbolEl.setPosition(point); - data.setItemGraphicEl(newIdx, symbolEl); - group.add(symbolEl); - } - }).update(function(newIdx, oldIdx) { - var symbolEl = oldData.getItemGraphicEl(oldIdx); - var point = getSymbolPoint(newIdx); - if (!symbolNeedsDraw(data, point, newIdx, opt)) { - group.remove(symbolEl); - return; - } - var newSymbolType = data.getItemVisual(newIdx, "symbol") || "circle"; - var oldSymbolType = symbolEl && symbolEl.getSymbolType && symbolEl.getSymbolType(); - if (!symbolEl || oldSymbolType && oldSymbolType !== newSymbolType) { - group.remove(symbolEl); - symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt); - symbolEl.setPosition(point); - } else { - symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt); - var target = { - x: point[0], - y: point[1] - }; - disableAnimation ? symbolEl.attr(target) : updateProps(symbolEl, target, seriesModel); - } - group.add(symbolEl); - data.setItemGraphicEl(newIdx, symbolEl); - }).remove(function(oldIdx) { - var el = oldData.getItemGraphicEl(oldIdx); - el && el.fadeOut(function() { - group.remove(el); - }, seriesModel); - }).execute(); - this._getSymbolPoint = getSymbolPoint; - this._data = data; - }; - ; - SymbolDraw2.prototype.updateLayout = function() { - var _this = this; - var data = this._data; - if (data) { - data.eachItemGraphicEl(function(el, idx) { - var point = _this._getSymbolPoint(idx); - el.setPosition(point); - el.markRedraw(); - }); - } - }; - ; - SymbolDraw2.prototype.incrementalPrepareUpdate = function(data) { - this._seriesScope = makeSeriesScope(data); - this._data = null; - this.group.removeAll(); - }; - ; - SymbolDraw2.prototype.incrementalUpdate = function(taskParams, data, opt) { - this._progressiveEls = []; - opt = normalizeUpdateOpt(opt); - function updateIncrementalAndHover(el2) { - if (!el2.isGroup) { - el2.incremental = true; - el2.ensureState("emphasis").hoverLayer = true; - } - } - for (var idx = taskParams.start; idx < taskParams.end; idx++) { - var point = data.getItemLayout(idx); - if (symbolNeedsDraw(data, point, idx, opt)) { - var el = new this._SymbolCtor(data, idx, this._seriesScope); - el.traverse(updateIncrementalAndHover); - el.setPosition(point); - this.group.add(el); - data.setItemGraphicEl(idx, el); - this._progressiveEls.push(el); - } - } - }; - ; - SymbolDraw2.prototype.eachRendered = function(cb) { - traverseElements(this._progressiveEls || this.group, cb); - }; - SymbolDraw2.prototype.remove = function(enableAnimation) { - var group = this.group; - var data = this._data; - if (data && enableAnimation) { - data.eachItemGraphicEl(function(el) { - el.fadeOut(function() { - group.remove(el); - }, data.hostModel); - }); - } else { - group.removeAll(); - } - }; - ; - return SymbolDraw2; - }() - ); - var SymbolDraw_default = SymbolDraw; - - // node_modules/echarts/lib/chart/line/helper.js - function prepareDataCoordInfo(coordSys, data, valueOrigin) { - var baseAxis = coordSys.getBaseAxis(); - var valueAxis2 = coordSys.getOtherAxis(baseAxis); - var valueStart = getValueStart(valueAxis2, valueOrigin); - var baseAxisDim = baseAxis.dim; - var valueAxisDim = valueAxis2.dim; - var valueDim = data.mapDimension(valueAxisDim); - var baseDim = data.mapDimension(baseAxisDim); - var baseDataOffset = valueAxisDim === "x" || valueAxisDim === "radius" ? 1 : 0; - var dims = map(coordSys.dimensions, function(coordDim) { - return data.mapDimension(coordDim); - }); - var stacked = false; - var stackResultDim = data.getCalculationInfo("stackResultDimension"); - if (isDimensionStacked( - data, - dims[0] - /* , dims[1] */ - )) { - stacked = true; - dims[0] = stackResultDim; - } - if (isDimensionStacked( - data, - dims[1] - /* , dims[0] */ - )) { - stacked = true; - dims[1] = stackResultDim; - } - return { - dataDimsForPoint: dims, - valueStart, - valueAxisDim, - baseAxisDim, - stacked: !!stacked, - valueDim, - baseDim, - baseDataOffset, - stackedOverDimension: data.getCalculationInfo("stackedOverDimension") - }; - } - function getValueStart(valueAxis2, valueOrigin) { - var valueStart = 0; - var extent3 = valueAxis2.scale.getExtent(); - if (valueOrigin === "start") { - valueStart = extent3[0]; - } else if (valueOrigin === "end") { - valueStart = extent3[1]; - } else if (isNumber(valueOrigin) && !isNaN(valueOrigin)) { - valueStart = valueOrigin; - } else { - if (extent3[0] > 0) { - valueStart = extent3[0]; - } else if (extent3[1] < 0) { - valueStart = extent3[1]; - } - } - return valueStart; - } - function getStackedOnPoint(dataCoordInfo, coordSys, data, idx) { - var value = NaN; - if (dataCoordInfo.stacked) { - value = data.get(data.getCalculationInfo("stackedOverDimension"), idx); - } - if (isNaN(value)) { - value = dataCoordInfo.valueStart; - } - var baseDataOffset = dataCoordInfo.baseDataOffset; - var stackedData = []; - stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx); - stackedData[1 - baseDataOffset] = value; - return coordSys.dataToPoint(stackedData); - } - - // node_modules/echarts/lib/chart/line/lineAnimationDiff.js - function diffData(oldData, newData) { - var diffResult = []; - newData.diff(oldData).add(function(idx) { - diffResult.push({ - cmd: "+", - idx - }); - }).update(function(newIdx, oldIdx) { - diffResult.push({ - cmd: "=", - idx: oldIdx, - idx1: newIdx - }); - }).remove(function(idx) { - diffResult.push({ - cmd: "-", - idx - }); - }).execute(); - return diffResult; - } - function lineAnimationDiff(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) { - var diff = diffData(oldData, newData); - var currPoints = []; - var nextPoints = []; - var currStackedPoints = []; - var nextStackedPoints = []; - var status = []; - var sortedIndices = []; - var rawIndices = []; - var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin); - var oldPoints = oldData.getLayout("points") || []; - var newPoints = newData.getLayout("points") || []; - for (var i = 0; i < diff.length; i++) { - var diffItem = diff[i]; - var pointAdded = true; - var oldIdx2 = void 0; - var newIdx2 = void 0; - switch (diffItem.cmd) { - case "=": - oldIdx2 = diffItem.idx * 2; - newIdx2 = diffItem.idx1 * 2; - var currentX = oldPoints[oldIdx2]; - var currentY = oldPoints[oldIdx2 + 1]; - var nextX = newPoints[newIdx2]; - var nextY = newPoints[newIdx2 + 1]; - if (isNaN(currentX) || isNaN(currentY)) { - currentX = nextX; - currentY = nextY; - } - currPoints.push(currentX, currentY); - nextPoints.push(nextX, nextY); - currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]); - nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]); - rawIndices.push(newData.getRawIndex(diffItem.idx1)); - break; - case "+": - var newIdx = diffItem.idx; - var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint; - var oldPt = oldCoordSys.dataToPoint([newData.get(newDataDimsForPoint[0], newIdx), newData.get(newDataDimsForPoint[1], newIdx)]); - newIdx2 = newIdx * 2; - currPoints.push(oldPt[0], oldPt[1]); - nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1]); - var stackedOnPoint = getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, newIdx); - currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1]); - nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]); - rawIndices.push(newData.getRawIndex(newIdx)); - break; - case "-": - pointAdded = false; - } - if (pointAdded) { - status.push(diffItem); - sortedIndices.push(sortedIndices.length); - } - } - sortedIndices.sort(function(a, b) { - return rawIndices[a] - rawIndices[b]; - }); - var len2 = currPoints.length; - var sortedCurrPoints = createFloat32Array(len2); - var sortedNextPoints = createFloat32Array(len2); - var sortedCurrStackedPoints = createFloat32Array(len2); - var sortedNextStackedPoints = createFloat32Array(len2); - var sortedStatus = []; - for (var i = 0; i < sortedIndices.length; i++) { - var idx = sortedIndices[i]; - var i2 = i * 2; - var idx2 = idx * 2; - sortedCurrPoints[i2] = currPoints[idx2]; - sortedCurrPoints[i2 + 1] = currPoints[idx2 + 1]; - sortedNextPoints[i2] = nextPoints[idx2]; - sortedNextPoints[i2 + 1] = nextPoints[idx2 + 1]; - sortedCurrStackedPoints[i2] = currStackedPoints[idx2]; - sortedCurrStackedPoints[i2 + 1] = currStackedPoints[idx2 + 1]; - sortedNextStackedPoints[i2] = nextStackedPoints[idx2]; - sortedNextStackedPoints[i2 + 1] = nextStackedPoints[idx2 + 1]; - sortedStatus[i] = status[idx]; - } - return { - current: sortedCurrPoints, - next: sortedNextPoints, - stackedOnCurrent: sortedCurrStackedPoints, - stackedOnNext: sortedNextStackedPoints, - status: sortedStatus - }; - } - - // node_modules/echarts/lib/chart/line/poly.js - var mathMin6 = Math.min; - var mathMax6 = Math.max; - function isPointNull(x, y) { - return isNaN(x) || isNaN(y); - } - function drawSegment(ctx, points4, start3, segLen, allLen, dir3, smooth, smoothMonotone, connectNulls) { - var prevX; - var prevY; - var cpx0; - var cpy0; - var cpx1; - var cpy1; - var idx = start3; - var k = 0; - for (; k < segLen; k++) { - var x = points4[idx * 2]; - var y = points4[idx * 2 + 1]; - if (idx >= allLen || idx < 0) { - break; - } - if (isPointNull(x, y)) { - if (connectNulls) { - idx += dir3; - continue; - } - break; - } - if (idx === start3) { - ctx[dir3 > 0 ? "moveTo" : "lineTo"](x, y); - cpx0 = x; - cpy0 = y; - } else { - var dx = x - prevX; - var dy = y - prevY; - if (dx * dx + dy * dy < 0.5) { - idx += dir3; - continue; - } - if (smooth > 0) { - var nextIdx = idx + dir3; - var nextX = points4[nextIdx * 2]; - var nextY = points4[nextIdx * 2 + 1]; - while (nextX === x && nextY === y && k < segLen) { - k++; - nextIdx += dir3; - idx += dir3; - nextX = points4[nextIdx * 2]; - nextY = points4[nextIdx * 2 + 1]; - x = points4[idx * 2]; - y = points4[idx * 2 + 1]; - dx = x - prevX; - dy = y - prevY; - } - var tmpK = k + 1; - if (connectNulls) { - while (isPointNull(nextX, nextY) && tmpK < segLen) { - tmpK++; - nextIdx += dir3; - nextX = points4[nextIdx * 2]; - nextY = points4[nextIdx * 2 + 1]; - } - } - var ratioNextSeg = 0.5; - var vx = 0; - var vy = 0; - var nextCpx0 = void 0; - var nextCpy0 = void 0; - if (tmpK >= segLen || isPointNull(nextX, nextY)) { - cpx1 = x; - cpy1 = y; - } else { - vx = nextX - prevX; - vy = nextY - prevY; - var dx0 = x - prevX; - var dx1 = nextX - x; - var dy0 = y - prevY; - var dy1 = nextY - y; - var lenPrevSeg = void 0; - var lenNextSeg = void 0; - if (smoothMonotone === "x") { - lenPrevSeg = Math.abs(dx0); - lenNextSeg = Math.abs(dx1); - var dir_1 = vx > 0 ? 1 : -1; - cpx1 = x - dir_1 * lenPrevSeg * smooth; - cpy1 = y; - nextCpx0 = x + dir_1 * lenNextSeg * smooth; - nextCpy0 = y; - } else if (smoothMonotone === "y") { - lenPrevSeg = Math.abs(dy0); - lenNextSeg = Math.abs(dy1); - var dir_2 = vy > 0 ? 1 : -1; - cpx1 = x; - cpy1 = y - dir_2 * lenPrevSeg * smooth; - nextCpx0 = x; - nextCpy0 = y + dir_2 * lenNextSeg * smooth; - } else { - lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0); - lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1); - ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg); - cpx1 = x - vx * smooth * (1 - ratioNextSeg); - cpy1 = y - vy * smooth * (1 - ratioNextSeg); - nextCpx0 = x + vx * smooth * ratioNextSeg; - nextCpy0 = y + vy * smooth * ratioNextSeg; - nextCpx0 = mathMin6(nextCpx0, mathMax6(nextX, x)); - nextCpy0 = mathMin6(nextCpy0, mathMax6(nextY, y)); - nextCpx0 = mathMax6(nextCpx0, mathMin6(nextX, x)); - nextCpy0 = mathMax6(nextCpy0, mathMin6(nextY, y)); - vx = nextCpx0 - x; - vy = nextCpy0 - y; - cpx1 = x - vx * lenPrevSeg / lenNextSeg; - cpy1 = y - vy * lenPrevSeg / lenNextSeg; - cpx1 = mathMin6(cpx1, mathMax6(prevX, x)); - cpy1 = mathMin6(cpy1, mathMax6(prevY, y)); - cpx1 = mathMax6(cpx1, mathMin6(prevX, x)); - cpy1 = mathMax6(cpy1, mathMin6(prevY, y)); - vx = x - cpx1; - vy = y - cpy1; - nextCpx0 = x + vx * lenNextSeg / lenPrevSeg; - nextCpy0 = y + vy * lenNextSeg / lenPrevSeg; - } - } - ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x, y); - cpx0 = nextCpx0; - cpy0 = nextCpy0; - } else { - ctx.lineTo(x, y); - } - } - prevX = x; - prevY = y; - idx += dir3; - } - return k; - } - var ECPolylineShape = ( - /** @class */ - /* @__PURE__ */ function() { - function ECPolylineShape2() { - this.smooth = 0; - this.smoothConstraint = true; - } - return ECPolylineShape2; - }() - ); - var ECPolyline = ( - /** @class */ - function(_super) { - __extends(ECPolyline2, _super); - function ECPolyline2(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "ec-polyline"; - return _this; - } - ECPolyline2.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - ECPolyline2.prototype.getDefaultShape = function() { - return new ECPolylineShape(); - }; - ECPolyline2.prototype.buildPath = function(ctx, shape) { - var points4 = shape.points; - var i = 0; - var len2 = points4.length / 2; - if (shape.connectNulls) { - for (; len2 > 0; len2--) { - if (!isPointNull(points4[len2 * 2 - 2], points4[len2 * 2 - 1])) { - break; - } - } - for (; i < len2; i++) { - if (!isPointNull(points4[i * 2], points4[i * 2 + 1])) { - break; - } - } - } - while (i < len2) { - i += drawSegment(ctx, points4, i, len2, len2, 1, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1; - } - }; - ECPolyline2.prototype.getPointOn = function(xOrY, dim) { - if (!this.path) { - this.createPathProxy(); - this.buildPath(this.path, this.shape); - } - var path = this.path; - var data = path.data; - var CMD6 = PathProxy_default.CMD; - var x0; - var y0; - var isDimX = dim === "x"; - var roots2 = []; - for (var i = 0; i < data.length; ) { - var cmd = data[i++]; - var x = void 0; - var y = void 0; - var x2 = void 0; - var y2 = void 0; - var x3 = void 0; - var y3 = void 0; - var t = void 0; - switch (cmd) { - case CMD6.M: - x0 = data[i++]; - y0 = data[i++]; - break; - case CMD6.L: - x = data[i++]; - y = data[i++]; - t = isDimX ? (xOrY - x0) / (x - x0) : (xOrY - y0) / (y - y0); - if (t <= 1 && t >= 0) { - var val = isDimX ? (y - y0) * t + y0 : (x - x0) * t + x0; - return isDimX ? [xOrY, val] : [val, xOrY]; - } - x0 = x; - y0 = y; - break; - case CMD6.C: - x = data[i++]; - y = data[i++]; - x2 = data[i++]; - y2 = data[i++]; - x3 = data[i++]; - y3 = data[i++]; - var nRoot = isDimX ? cubicRootAt(x0, x, x2, x3, xOrY, roots2) : cubicRootAt(y0, y, y2, y3, xOrY, roots2); - if (nRoot > 0) { - for (var i_1 = 0; i_1 < nRoot; i_1++) { - var t_1 = roots2[i_1]; - if (t_1 <= 1 && t_1 >= 0) { - var val = isDimX ? cubicAt(y0, y, y2, y3, t_1) : cubicAt(x0, x, x2, x3, t_1); - return isDimX ? [xOrY, val] : [val, xOrY]; - } - } - } - x0 = x3; - y0 = y3; - break; - } - } - }; - return ECPolyline2; - }(Path_default) - ); - var ECPolygonShape = ( - /** @class */ - function(_super) { - __extends(ECPolygonShape2, _super); - function ECPolygonShape2() { - return _super !== null && _super.apply(this, arguments) || this; - } - return ECPolygonShape2; - }(ECPolylineShape) - ); - var ECPolygon = ( - /** @class */ - function(_super) { - __extends(ECPolygon2, _super); - function ECPolygon2(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "ec-polygon"; - return _this; - } - ECPolygon2.prototype.getDefaultShape = function() { - return new ECPolygonShape(); - }; - ECPolygon2.prototype.buildPath = function(ctx, shape) { - var points4 = shape.points; - var stackedOnPoints = shape.stackedOnPoints; - var i = 0; - var len2 = points4.length / 2; - var smoothMonotone = shape.smoothMonotone; - if (shape.connectNulls) { - for (; len2 > 0; len2--) { - if (!isPointNull(points4[len2 * 2 - 2], points4[len2 * 2 - 1])) { - break; - } - } - for (; i < len2; i++) { - if (!isPointNull(points4[i * 2], points4[i * 2 + 1])) { - break; - } - } - } - while (i < len2) { - var k = drawSegment(ctx, points4, i, len2, len2, 1, shape.smooth, smoothMonotone, shape.connectNulls); - drawSegment(ctx, stackedOnPoints, i + k - 1, k, len2, -1, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls); - i += k + 1; - ctx.closePath(); - } - }; - return ECPolygon2; - }(Path_default) - ); - - // node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js - function createGridClipPath(cartesian, hasAnimation, seriesModel, done, during) { - var rect = cartesian.getArea(); - var x = rect.x; - var y = rect.y; - var width = rect.width; - var height = rect.height; - var lineWidth = seriesModel.get(["lineStyle", "width"]) || 0; - x -= lineWidth / 2; - y -= lineWidth / 2; - width += lineWidth; - height += lineWidth; - width = Math.ceil(width); - if (x !== Math.floor(x)) { - x = Math.floor(x); - width++; - } - var clipPath = new Rect_default({ - shape: { - x, - y, - width, - height - } - }); - if (hasAnimation) { - var baseAxis = cartesian.getBaseAxis(); - var isHorizontal = baseAxis.isHorizontal(); - var isAxisInversed = baseAxis.inverse; - if (isHorizontal) { - if (isAxisInversed) { - clipPath.shape.x += width; - } - clipPath.shape.width = 0; - } else { - if (!isAxisInversed) { - clipPath.shape.y += height; - } - clipPath.shape.height = 0; - } - var duringCb = isFunction(during) ? function(percent) { - during(percent, clipPath); - } : null; - initProps(clipPath, { - shape: { - width, - height, - x, - y - } - }, seriesModel, null, done, duringCb); - } - return clipPath; - } - function createPolarClipPath(polar, hasAnimation, seriesModel) { - var sectorArea = polar.getArea(); - var r0 = round(sectorArea.r0, 1); - var r = round(sectorArea.r, 1); - var clipPath = new Sector_default({ - shape: { - cx: round(polar.cx, 1), - cy: round(polar.cy, 1), - r0, - r, - startAngle: sectorArea.startAngle, - endAngle: sectorArea.endAngle, - clockwise: sectorArea.clockwise - } - }); - if (hasAnimation) { - var isRadial = polar.getBaseAxis().dim === "angle"; - if (isRadial) { - clipPath.shape.endAngle = sectorArea.startAngle; - } else { - clipPath.shape.r = r0; - } - initProps(clipPath, { - shape: { - endAngle: sectorArea.endAngle, - r - } - }, seriesModel); - } - return clipPath; - } - function createClipPath(coordSys, hasAnimation, seriesModel, done, during) { - if (!coordSys) { - return null; - } else if (coordSys.type === "polar") { - return createPolarClipPath(coordSys, hasAnimation, seriesModel); - } else if (coordSys.type === "cartesian2d") { - return createGridClipPath(coordSys, hasAnimation, seriesModel, done, during); - } - return null; - } - - // node_modules/echarts/lib/coord/CoordinateSystem.js - function isCoordinateSystemType(coordSys, type) { - return coordSys.type === type; - } - - // node_modules/echarts/lib/chart/line/LineView.js - function isPointsSame(points1, points22) { - if (points1.length !== points22.length) { - return; - } - for (var i = 0; i < points1.length; i++) { - if (points1[i] !== points22[i]) { - return; - } - } - return true; - } - function bboxFromPoints(points4) { - var minX = Infinity; - var minY = Infinity; - var maxX = -Infinity; - var maxY = -Infinity; - for (var i = 0; i < points4.length; ) { - var x = points4[i++]; - var y = points4[i++]; - if (!isNaN(x)) { - minX = Math.min(x, minX); - maxX = Math.max(x, maxX); - } - if (!isNaN(y)) { - minY = Math.min(y, minY); - maxY = Math.max(y, maxY); - } - } - return [[minX, minY], [maxX, maxY]]; - } - function getBoundingDiff(points1, points22) { - var _a2 = bboxFromPoints(points1), min1 = _a2[0], max1 = _a2[1]; - var _b2 = bboxFromPoints(points22), min23 = _b2[0], max23 = _b2[1]; - return Math.max(Math.abs(min1[0] - min23[0]), Math.abs(min1[1] - min23[1]), Math.abs(max1[0] - max23[0]), Math.abs(max1[1] - max23[1])); - } - function getSmooth(smooth) { - return isNumber(smooth) ? smooth : smooth ? 0.5 : 0; - } - function getStackedOnPoints(coordSys, data, dataCoordInfo) { - if (!dataCoordInfo.valueDim) { - return []; - } - var len2 = data.count(); - var points4 = createFloat32Array(len2 * 2); - for (var idx = 0; idx < len2; idx++) { - var pt = getStackedOnPoint(dataCoordInfo, coordSys, data, idx); - points4[idx * 2] = pt[0]; - points4[idx * 2 + 1] = pt[1]; - } - return points4; - } - function turnPointsIntoStep(points4, basePoints, coordSys, stepTurnAt, connectNulls) { - var baseAxis = coordSys.getBaseAxis(); - var baseIndex = baseAxis.dim === "x" || baseAxis.dim === "radius" ? 0 : 1; - var stepPoints = []; - var i = 0; - var stepPt = []; - var pt = []; - var nextPt = []; - var filteredPoints = []; - if (connectNulls) { - for (i = 0; i < points4.length; i += 2) { - var reference = basePoints || points4; - if (!isNaN(reference[i]) && !isNaN(reference[i + 1])) { - filteredPoints.push(points4[i], points4[i + 1]); - } - } - points4 = filteredPoints; - } - for (i = 0; i < points4.length - 2; i += 2) { - nextPt[0] = points4[i + 2]; - nextPt[1] = points4[i + 3]; - pt[0] = points4[i]; - pt[1] = points4[i + 1]; - stepPoints.push(pt[0], pt[1]); - switch (stepTurnAt) { - case "end": - stepPt[baseIndex] = nextPt[baseIndex]; - stepPt[1 - baseIndex] = pt[1 - baseIndex]; - stepPoints.push(stepPt[0], stepPt[1]); - break; - case "middle": - var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2; - var stepPt2 = []; - stepPt[baseIndex] = stepPt2[baseIndex] = middle; - stepPt[1 - baseIndex] = pt[1 - baseIndex]; - stepPt2[1 - baseIndex] = nextPt[1 - baseIndex]; - stepPoints.push(stepPt[0], stepPt[1]); - stepPoints.push(stepPt2[0], stepPt2[1]); - break; - default: - stepPt[baseIndex] = pt[baseIndex]; - stepPt[1 - baseIndex] = nextPt[1 - baseIndex]; - stepPoints.push(stepPt[0], stepPt[1]); - } - } - stepPoints.push(points4[i++], points4[i++]); - return stepPoints; - } - function clipColorStops(colorStops, maxSize) { - var newColorStops = []; - var len2 = colorStops.length; - var prevOutOfRangeColorStop; - var prevInRangeColorStop; - function lerpStop(stop0, stop1, clippedCoord) { - var coord0 = stop0.coord; - var p = (clippedCoord - coord0) / (stop1.coord - coord0); - var color = lerp2(p, [stop0.color, stop1.color]); - return { - coord: clippedCoord, - color - }; - } - for (var i = 0; i < len2; i++) { - var stop_1 = colorStops[i]; - var coord = stop_1.coord; - if (coord < 0) { - prevOutOfRangeColorStop = stop_1; - } else if (coord > maxSize) { - if (prevInRangeColorStop) { - newColorStops.push(lerpStop(prevInRangeColorStop, stop_1, maxSize)); - } else if (prevOutOfRangeColorStop) { - newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0), lerpStop(prevOutOfRangeColorStop, stop_1, maxSize)); - } - break; - } else { - if (prevOutOfRangeColorStop) { - newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0)); - prevOutOfRangeColorStop = null; - } - newColorStops.push(stop_1); - prevInRangeColorStop = stop_1; - } - } - return newColorStops; - } - function getVisualGradient(data, coordSys, api) { - var visualMetaList = data.getVisual("visualMeta"); - if (!visualMetaList || !visualMetaList.length || !data.count()) { - return; - } - if (coordSys.type !== "cartesian2d") { - if (true) { - console.warn("Visual map on line style is only supported on cartesian2d."); - } - return; - } - var coordDim; - var visualMeta; - for (var i = visualMetaList.length - 1; i >= 0; i--) { - var dimInfo = data.getDimensionInfo(visualMetaList[i].dimension); - coordDim = dimInfo && dimInfo.coordDim; - if (coordDim === "x" || coordDim === "y") { - visualMeta = visualMetaList[i]; - break; - } - } - if (!visualMeta) { - if (true) { - console.warn("Visual map on line style only support x or y dimension."); - } - return; - } - var axis = coordSys.getAxis(coordDim); - var colorStops = map(visualMeta.stops, function(stop2) { - return { - coord: axis.toGlobalCoord(axis.dataToCoord(stop2.value)), - color: stop2.color - }; - }); - var stopLen = colorStops.length; - var outerColors = visualMeta.outerColors.slice(); - if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) { - colorStops.reverse(); - outerColors.reverse(); - } - var colorStopsInRange = clipColorStops(colorStops, coordDim === "x" ? api.getWidth() : api.getHeight()); - var inRangeStopLen = colorStopsInRange.length; - if (!inRangeStopLen && stopLen) { - return colorStops[0].coord < 0 ? outerColors[1] ? outerColors[1] : colorStops[stopLen - 1].color : outerColors[0] ? outerColors[0] : colorStops[0].color; - } - var tinyExtent = 10; - var minCoord = colorStopsInRange[0].coord - tinyExtent; - var maxCoord = colorStopsInRange[inRangeStopLen - 1].coord + tinyExtent; - var coordSpan = maxCoord - minCoord; - if (coordSpan < 1e-3) { - return "transparent"; - } - each(colorStopsInRange, function(stop2) { - stop2.offset = (stop2.coord - minCoord) / coordSpan; - }); - colorStopsInRange.push({ - // NOTE: inRangeStopLen may still be 0 if stoplen is zero. - offset: inRangeStopLen ? colorStopsInRange[inRangeStopLen - 1].offset : 0.5, - color: outerColors[1] || "transparent" - }); - colorStopsInRange.unshift({ - offset: inRangeStopLen ? colorStopsInRange[0].offset : 0.5, - color: outerColors[0] || "transparent" - }); - var gradient = new LinearGradient_default(0, 0, 0, 0, colorStopsInRange, true); - gradient[coordDim] = minCoord; - gradient[coordDim + "2"] = maxCoord; - return gradient; - } - function getIsIgnoreFunc(seriesModel, data, coordSys) { - var showAllSymbol = seriesModel.get("showAllSymbol"); - var isAuto = showAllSymbol === "auto"; - if (showAllSymbol && !isAuto) { - return; - } - var categoryAxis2 = coordSys.getAxesByScale("ordinal")[0]; - if (!categoryAxis2) { - return; - } - if (isAuto && canShowAllSymbolForCategory(categoryAxis2, data)) { - return; - } - var categoryDataDim = data.mapDimension(categoryAxis2.dim); - var labelMap = {}; - each(categoryAxis2.getViewLabels(), function(labelItem) { - var ordinalNumber = categoryAxis2.scale.getRawOrdinalNumber(labelItem.tickValue); - labelMap[ordinalNumber] = 1; - }); - return function(dataIndex) { - return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex)); - }; - } - function canShowAllSymbolForCategory(categoryAxis2, data) { - var axisExtent = categoryAxis2.getExtent(); - var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis2.scale.count(); - isNaN(availSize) && (availSize = 0); - var dataLen = data.count(); - var step = Math.max(1, Math.round(dataLen / 5)); - for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) { - if (Symbol_default.getSymbolSize( - data, - dataIndex - // Only for cartesian, where `isHorizontal` exists. - )[categoryAxis2.isHorizontal() ? 1 : 0] * 1.5 > availSize) { - return false; - } - } - return true; - } - function isPointNull2(x, y) { - return isNaN(x) || isNaN(y); - } - function getLastIndexNotNull(points4) { - var len2 = points4.length / 2; - for (; len2 > 0; len2--) { - if (!isPointNull2(points4[len2 * 2 - 2], points4[len2 * 2 - 1])) { - break; - } - } - return len2 - 1; - } - function getPointAtIndex(points4, idx) { - return [points4[idx * 2], points4[idx * 2 + 1]]; - } - function getIndexRange(points4, xOrY, dim) { - var len2 = points4.length / 2; - var dimIdx = dim === "x" ? 0 : 1; - var a; - var b; - var prevIndex = 0; - var nextIndex = -1; - for (var i = 0; i < len2; i++) { - b = points4[i * 2 + dimIdx]; - if (isNaN(b) || isNaN(points4[i * 2 + 1 - dimIdx])) { - continue; - } - if (i === 0) { - a = b; - continue; - } - if (a <= xOrY && b >= xOrY || a >= xOrY && b <= xOrY) { - nextIndex = i; - break; - } - prevIndex = i; - a = b; - } - return { - range: [prevIndex, nextIndex], - t: (xOrY - a) / (b - a) - }; - } - function anyStateShowEndLabel(seriesModel) { - if (seriesModel.get(["endLabel", "show"])) { - return true; - } - for (var i = 0; i < SPECIAL_STATES.length; i++) { - if (seriesModel.get([SPECIAL_STATES[i], "endLabel", "show"])) { - return true; - } - } - return false; - } - function createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) { - if (isCoordinateSystemType(coordSys, "cartesian2d")) { - var endLabelModel_1 = seriesModel.getModel("endLabel"); - var valueAnimation_1 = endLabelModel_1.get("valueAnimation"); - var data_1 = seriesModel.getData(); - var labelAnimationRecord_1 = { - lastFrameIndex: 0 - }; - var during = anyStateShowEndLabel(seriesModel) ? function(percent, clipRect) { - lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys); - } : null; - var isHorizontal = coordSys.getBaseAxis().isHorizontal(); - var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel, function() { - var endLabel = lineView._endLabel; - if (endLabel && hasAnimation) { - if (labelAnimationRecord_1.originalX != null) { - endLabel.attr({ - x: labelAnimationRecord_1.originalX, - y: labelAnimationRecord_1.originalY - }); - } - } - }, during); - if (!seriesModel.get("clip", true)) { - var rectShape = clipPath.shape; - var expandSize = Math.max(rectShape.width, rectShape.height); - if (isHorizontal) { - rectShape.y -= expandSize; - rectShape.height += expandSize * 2; - } else { - rectShape.x -= expandSize; - rectShape.width += expandSize * 2; - } - } - if (during) { - during(1, clipPath); - } - return clipPath; - } else { - if (true) { - if (seriesModel.get(["endLabel", "show"])) { - console.warn("endLabel is not supported for lines in polar systems."); - } - } - return createPolarClipPath(coordSys, hasAnimation, seriesModel); - } - } - function getEndLabelStateSpecified(endLabelModel, coordSys) { - var baseAxis = coordSys.getBaseAxis(); - var isHorizontal = baseAxis.isHorizontal(); - var isBaseInversed = baseAxis.inverse; - var align = isHorizontal ? isBaseInversed ? "right" : "left" : "center"; - var verticalAlign = isHorizontal ? "middle" : isBaseInversed ? "top" : "bottom"; - return { - normal: { - align: endLabelModel.get("align") || align, - verticalAlign: endLabelModel.get("verticalAlign") || verticalAlign - } - }; - } - var LineView = ( - /** @class */ - function(_super) { - __extends(LineView2, _super); - function LineView2() { - return _super !== null && _super.apply(this, arguments) || this; - } - LineView2.prototype.init = function() { - var lineGroup = new Group_default(); - var symbolDraw = new SymbolDraw_default(); - this.group.add(symbolDraw.group); - this._symbolDraw = symbolDraw; - this._lineGroup = lineGroup; - this._changePolyState = bind(this._changePolyState, this); - }; - LineView2.prototype.render = function(seriesModel, ecModel, api) { - var coordSys = seriesModel.coordinateSystem; - var group = this.group; - var data = seriesModel.getData(); - var lineStyleModel = seriesModel.getModel("lineStyle"); - var areaStyleModel = seriesModel.getModel("areaStyle"); - var points4 = data.getLayout("points") || []; - var isCoordSysPolar = coordSys.type === "polar"; - var prevCoordSys = this._coordSys; - var symbolDraw = this._symbolDraw; - var polyline = this._polyline; - var polygon = this._polygon; - var lineGroup = this._lineGroup; - var hasAnimation = !ecModel.ssr && seriesModel.get("animation"); - var isAreaChart = !areaStyleModel.isEmpty(); - var valueOrigin = areaStyleModel.get("origin"); - var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin); - var stackedOnPoints = isAreaChart && getStackedOnPoints(coordSys, data, dataCoordInfo); - var showSymbol = seriesModel.get("showSymbol"); - var connectNulls = seriesModel.get("connectNulls"); - var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys); - var oldData = this._data; - oldData && oldData.eachItemGraphicEl(function(el, idx) { - if (el.__temp) { - group.remove(el); - oldData.setItemGraphicEl(idx, null); - } - }); - if (!showSymbol) { - symbolDraw.remove(); - } - group.add(lineGroup); - var step = !isCoordSysPolar ? seriesModel.get("step") : false; - var clipShapeForSymbol; - if (coordSys && coordSys.getArea && seriesModel.get("clip", true)) { - clipShapeForSymbol = coordSys.getArea(); - if (clipShapeForSymbol.width != null) { - clipShapeForSymbol.x -= 0.1; - clipShapeForSymbol.y -= 0.1; - clipShapeForSymbol.width += 0.2; - clipShapeForSymbol.height += 0.2; - } else if (clipShapeForSymbol.r0) { - clipShapeForSymbol.r0 -= 0.5; - clipShapeForSymbol.r += 0.5; - } - } - this._clipShapeForSymbol = clipShapeForSymbol; - var visualColor = getVisualGradient(data, coordSys, api) || data.getVisual("style")[data.getVisual("drawType")]; - if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) { - showSymbol && symbolDraw.updateData(data, { - isIgnore: isIgnoreFunc, - clipShape: clipShapeForSymbol, - disableAnimation: true, - getSymbolPoint: function(idx) { - return [points4[idx * 2], points4[idx * 2 + 1]]; - } - }); - hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol); - if (step) { - if (stackedOnPoints) { - stackedOnPoints = turnPointsIntoStep(stackedOnPoints, points4, coordSys, step, connectNulls); - } - points4 = turnPointsIntoStep(points4, null, coordSys, step, connectNulls); - } - polyline = this._newPolyline(points4); - if (isAreaChart) { - polygon = this._newPolygon(points4, stackedOnPoints); - } else if (polygon) { - lineGroup.remove(polygon); - polygon = this._polygon = null; - } - if (!isCoordSysPolar) { - this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor)); - } - lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel)); - } else { - if (isAreaChart && !polygon) { - polygon = this._newPolygon(points4, stackedOnPoints); - } else if (polygon && !isAreaChart) { - lineGroup.remove(polygon); - polygon = this._polygon = null; - } - if (!isCoordSysPolar) { - this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor)); - } - var oldClipPath = lineGroup.getClipPath(); - if (oldClipPath) { - var newClipPath = createLineClipPath(this, coordSys, false, seriesModel); - initProps(oldClipPath, { - shape: newClipPath.shape - }, seriesModel); - } else { - lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel)); - } - showSymbol && symbolDraw.updateData(data, { - isIgnore: isIgnoreFunc, - clipShape: clipShapeForSymbol, - disableAnimation: true, - getSymbolPoint: function(idx) { - return [points4[idx * 2], points4[idx * 2 + 1]]; - } - }); - if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points4)) { - if (hasAnimation) { - this._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls); - } else { - if (step) { - if (stackedOnPoints) { - stackedOnPoints = turnPointsIntoStep(stackedOnPoints, points4, coordSys, step, connectNulls); - } - points4 = turnPointsIntoStep(points4, null, coordSys, step, connectNulls); - } - polyline.setShape({ - points: points4 - }); - polygon && polygon.setShape({ - points: points4, - stackedOnPoints - }); - } - } - } - var emphasisModel = seriesModel.getModel("emphasis"); - var focus = emphasisModel.get("focus"); - var blurScope = emphasisModel.get("blurScope"); - var emphasisDisabled = emphasisModel.get("disabled"); - polyline.useStyle(defaults( - // Use color in lineStyle first - lineStyleModel.getLineStyle(), - { - fill: "none", - stroke: visualColor, - lineJoin: "bevel" - } - )); - setStatesStylesFromModel(polyline, seriesModel, "lineStyle"); - if (polyline.style.lineWidth > 0 && seriesModel.get(["emphasis", "lineStyle", "width"]) === "bolder") { - var emphasisLineStyle = polyline.getState("emphasis").style; - emphasisLineStyle.lineWidth = +polyline.style.lineWidth + 1; - } - getECData(polyline).seriesIndex = seriesModel.seriesIndex; - toggleHoverEmphasis(polyline, focus, blurScope, emphasisDisabled); - var smooth = getSmooth(seriesModel.get("smooth")); - var smoothMonotone = seriesModel.get("smoothMonotone"); - polyline.setShape({ - smooth, - smoothMonotone, - connectNulls - }); - if (polygon) { - var stackedOnSeries = data.getCalculationInfo("stackedOnSeries"); - var stackedOnSmooth = 0; - polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), { - fill: visualColor, - opacity: 0.7, - lineJoin: "bevel", - decal: data.getVisual("style").decal - })); - if (stackedOnSeries) { - stackedOnSmooth = getSmooth(stackedOnSeries.get("smooth")); - } - polygon.setShape({ - smooth, - stackedOnSmooth, - smoothMonotone, - connectNulls - }); - setStatesStylesFromModel(polygon, seriesModel, "areaStyle"); - getECData(polygon).seriesIndex = seriesModel.seriesIndex; - toggleHoverEmphasis(polygon, focus, blurScope, emphasisDisabled); - } - var changePolyState = this._changePolyState; - data.eachItemGraphicEl(function(el) { - el && (el.onHoverStateChange = changePolyState); - }); - this._polyline.onHoverStateChange = changePolyState; - this._data = data; - this._coordSys = coordSys; - this._stackedOnPoints = stackedOnPoints; - this._points = points4; - this._step = step; - this._valueOrigin = valueOrigin; - if (seriesModel.get("triggerLineEvent")) { - this.packEventData(seriesModel, polyline); - polygon && this.packEventData(seriesModel, polygon); - } - }; - LineView2.prototype.packEventData = function(seriesModel, el) { - getECData(el).eventData = { - componentType: "series", - componentSubType: "line", - componentIndex: seriesModel.componentIndex, - seriesIndex: seriesModel.seriesIndex, - seriesName: seriesModel.name, - seriesType: "line" - }; - }; - LineView2.prototype.highlight = function(seriesModel, ecModel, api, payload) { - var data = seriesModel.getData(); - var dataIndex = queryDataIndex(data, payload); - this._changePolyState("emphasis"); - if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) { - var points4 = data.getLayout("points"); - var symbol = data.getItemGraphicEl(dataIndex); - if (!symbol) { - var x = points4[dataIndex * 2]; - var y = points4[dataIndex * 2 + 1]; - if (isNaN(x) || isNaN(y)) { - return; - } - if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) { - return; - } - var zlevel = seriesModel.get("zlevel") || 0; - var z = seriesModel.get("z") || 0; - symbol = new Symbol_default(data, dataIndex); - symbol.x = x; - symbol.y = y; - symbol.setZ(zlevel, z); - var symbolLabel = symbol.getSymbolPath().getTextContent(); - if (symbolLabel) { - symbolLabel.zlevel = zlevel; - symbolLabel.z = z; - symbolLabel.z2 = this._polyline.z2 + 1; - } - symbol.__temp = true; - data.setItemGraphicEl(dataIndex, symbol); - symbol.stopSymbolAnimation(true); - this.group.add(symbol); - } - symbol.highlight(); - } else { - Chart_default.prototype.highlight.call(this, seriesModel, ecModel, api, payload); - } - }; - LineView2.prototype.downplay = function(seriesModel, ecModel, api, payload) { - var data = seriesModel.getData(); - var dataIndex = queryDataIndex(data, payload); - this._changePolyState("normal"); - if (dataIndex != null && dataIndex >= 0) { - var symbol = data.getItemGraphicEl(dataIndex); - if (symbol) { - if (symbol.__temp) { - data.setItemGraphicEl(dataIndex, null); - this.group.remove(symbol); - } else { - symbol.downplay(); - } - } - } else { - Chart_default.prototype.downplay.call(this, seriesModel, ecModel, api, payload); - } - }; - LineView2.prototype._changePolyState = function(toState) { - var polygon = this._polygon; - setStatesFlag(this._polyline, toState); - polygon && setStatesFlag(polygon, toState); - }; - LineView2.prototype._newPolyline = function(points4) { - var polyline = this._polyline; - if (polyline) { - this._lineGroup.remove(polyline); - } - polyline = new ECPolyline({ - shape: { - points: points4 - }, - segmentIgnoreThreshold: 2, - z2: 10 - }); - this._lineGroup.add(polyline); - this._polyline = polyline; - return polyline; - }; - LineView2.prototype._newPolygon = function(points4, stackedOnPoints) { - var polygon = this._polygon; - if (polygon) { - this._lineGroup.remove(polygon); - } - polygon = new ECPolygon({ - shape: { - points: points4, - stackedOnPoints - }, - segmentIgnoreThreshold: 2 - }); - this._lineGroup.add(polygon); - this._polygon = polygon; - return polygon; - }; - LineView2.prototype._initSymbolLabelAnimation = function(data, coordSys, clipShape) { - var isHorizontalOrRadial; - var isCoordSysPolar; - var baseAxis = coordSys.getBaseAxis(); - var isAxisInverse = baseAxis.inverse; - if (coordSys.type === "cartesian2d") { - isHorizontalOrRadial = baseAxis.isHorizontal(); - isCoordSysPolar = false; - } else if (coordSys.type === "polar") { - isHorizontalOrRadial = baseAxis.dim === "angle"; - isCoordSysPolar = true; - } - var seriesModel = data.hostModel; - var seriesDuration = seriesModel.get("animationDuration"); - if (isFunction(seriesDuration)) { - seriesDuration = seriesDuration(null); - } - var seriesDelay = seriesModel.get("animationDelay") || 0; - var seriesDelayValue = isFunction(seriesDelay) ? seriesDelay(null) : seriesDelay; - data.eachItemGraphicEl(function(symbol, idx) { - var el = symbol; - if (el) { - var point = [symbol.x, symbol.y]; - var start3 = void 0; - var end2 = void 0; - var current = void 0; - if (clipShape) { - if (isCoordSysPolar) { - var polarClip = clipShape; - var coord = coordSys.pointToCoord(point); - if (isHorizontalOrRadial) { - start3 = polarClip.startAngle; - end2 = polarClip.endAngle; - current = -coord[1] / 180 * Math.PI; - } else { - start3 = polarClip.r0; - end2 = polarClip.r; - current = coord[0]; - } - } else { - var gridClip = clipShape; - if (isHorizontalOrRadial) { - start3 = gridClip.x; - end2 = gridClip.x + gridClip.width; - current = symbol.x; - } else { - start3 = gridClip.y + gridClip.height; - end2 = gridClip.y; - current = symbol.y; - } - } - } - var ratio = end2 === start3 ? 0 : (current - start3) / (end2 - start3); - if (isAxisInverse) { - ratio = 1 - ratio; - } - var delay = isFunction(seriesDelay) ? seriesDelay(idx) : seriesDuration * ratio + seriesDelayValue; - var symbolPath = el.getSymbolPath(); - var text = symbolPath.getTextContent(); - el.attr({ - scaleX: 0, - scaleY: 0 - }); - el.animateTo({ - scaleX: 1, - scaleY: 1 - }, { - duration: 200, - setToFinal: true, - delay - }); - if (text) { - text.animateFrom({ - style: { - opacity: 0 - } - }, { - duration: 300, - delay - }); - } - symbolPath.disableLabelAnimation = true; - } - }); - }; - LineView2.prototype._initOrUpdateEndLabel = function(seriesModel, coordSys, inheritColor) { - var endLabelModel = seriesModel.getModel("endLabel"); - if (anyStateShowEndLabel(seriesModel)) { - var data_2 = seriesModel.getData(); - var polyline = this._polyline; - var points4 = data_2.getLayout("points"); - if (!points4) { - polyline.removeTextContent(); - this._endLabel = null; - return; - } - var endLabel = this._endLabel; - if (!endLabel) { - endLabel = this._endLabel = new Text_default({ - z2: 200 - // should be higher than item symbol - }); - endLabel.ignoreClip = true; - polyline.setTextContent(this._endLabel); - polyline.disableLabelAnimation = true; - } - var dataIndex = getLastIndexNotNull(points4); - if (dataIndex >= 0) { - setLabelStyle(polyline, getLabelStatesModels(seriesModel, "endLabel"), { - inheritColor, - labelFetcher: seriesModel, - labelDataIndex: dataIndex, - defaultText: function(dataIndex2, opt, interpolatedValue) { - return interpolatedValue != null ? getDefaultInterpolatedLabel(data_2, interpolatedValue) : getDefaultLabel(data_2, dataIndex2); - }, - enableTextSetter: true - }, getEndLabelStateSpecified(endLabelModel, coordSys)); - polyline.textConfig.position = null; - } - } else if (this._endLabel) { - this._polyline.removeTextContent(); - this._endLabel = null; - } - }; - LineView2.prototype._endLabelOnDuring = function(percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) { - var endLabel = this._endLabel; - var polyline = this._polyline; - if (endLabel) { - if (percent < 1 && animationRecord.originalX == null) { - animationRecord.originalX = endLabel.x; - animationRecord.originalY = endLabel.y; - } - var points4 = data.getLayout("points"); - var seriesModel = data.hostModel; - var connectNulls = seriesModel.get("connectNulls"); - var precision = endLabelModel.get("precision"); - var distance2 = endLabelModel.get("distance") || 0; - var baseAxis = coordSys.getBaseAxis(); - var isHorizontal = baseAxis.isHorizontal(); - var isBaseInversed = baseAxis.inverse; - var clipShape = clipRect.shape; - var xOrY = isBaseInversed ? isHorizontal ? clipShape.x : clipShape.y + clipShape.height : isHorizontal ? clipShape.x + clipShape.width : clipShape.y; - var distanceX = (isHorizontal ? distance2 : 0) * (isBaseInversed ? -1 : 1); - var distanceY = (isHorizontal ? 0 : -distance2) * (isBaseInversed ? -1 : 1); - var dim = isHorizontal ? "x" : "y"; - var dataIndexRange = getIndexRange(points4, xOrY, dim); - var indices = dataIndexRange.range; - var diff = indices[1] - indices[0]; - var value = void 0; - if (diff >= 1) { - if (diff > 1 && !connectNulls) { - var pt = getPointAtIndex(points4, indices[0]); - endLabel.attr({ - x: pt[0] + distanceX, - y: pt[1] + distanceY - }); - valueAnimation && (value = seriesModel.getRawValue(indices[0])); - } else { - var pt = polyline.getPointOn(xOrY, dim); - pt && endLabel.attr({ - x: pt[0] + distanceX, - y: pt[1] + distanceY - }); - var startValue = seriesModel.getRawValue(indices[0]); - var endValue = seriesModel.getRawValue(indices[1]); - valueAnimation && (value = interpolateRawValues(data, precision, startValue, endValue, dataIndexRange.t)); - } - animationRecord.lastFrameIndex = indices[0]; - } else { - var idx = percent === 1 || animationRecord.lastFrameIndex > 0 ? indices[0] : 0; - var pt = getPointAtIndex(points4, idx); - valueAnimation && (value = seriesModel.getRawValue(idx)); - endLabel.attr({ - x: pt[0] + distanceX, - y: pt[1] + distanceY - }); - } - if (valueAnimation) { - var inner23 = labelInner(endLabel); - if (typeof inner23.setLabelText === "function") { - inner23.setLabelText(value); - } - } - } - }; - LineView2.prototype._doUpdateAnimation = function(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls) { - var polyline = this._polyline; - var polygon = this._polygon; - var seriesModel = data.hostModel; - var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin); - var current = diff.current; - var stackedOnCurrent = diff.stackedOnCurrent; - var next = diff.next; - var stackedOnNext = diff.stackedOnNext; - if (step) { - stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, diff.current, coordSys, step, connectNulls); - current = turnPointsIntoStep(diff.current, null, coordSys, step, connectNulls); - stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, diff.next, coordSys, step, connectNulls); - next = turnPointsIntoStep(diff.next, null, coordSys, step, connectNulls); - } - if (getBoundingDiff(current, next) > 3e3 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3e3) { - polyline.stopAnimation(); - polyline.setShape({ - points: next - }); - if (polygon) { - polygon.stopAnimation(); - polygon.setShape({ - points: next, - stackedOnPoints: stackedOnNext - }); - } - return; - } - polyline.shape.__points = diff.current; - polyline.shape.points = current; - var target = { - shape: { - points: next - } - }; - if (diff.current !== current) { - target.shape.__points = diff.next; - } - polyline.stopAnimation(); - updateProps(polyline, target, seriesModel); - if (polygon) { - polygon.setShape({ - // Reuse the points with polyline. - points: current, - stackedOnPoints: stackedOnCurrent - }); - polygon.stopAnimation(); - updateProps(polygon, { - shape: { - stackedOnPoints: stackedOnNext - } - }, seriesModel); - if (polyline.shape.points !== polygon.shape.points) { - polygon.shape.points = polyline.shape.points; - } - } - var updatedDataInfo = []; - var diffStatus = diff.status; - for (var i = 0; i < diffStatus.length; i++) { - var cmd = diffStatus[i].cmd; - if (cmd === "=") { - var el = data.getItemGraphicEl(diffStatus[i].idx1); - if (el) { - updatedDataInfo.push({ - el, - ptIdx: i - // Index of points - }); - } - } - } - if (polyline.animators && polyline.animators.length) { - polyline.animators[0].during(function() { - polygon && polygon.dirtyShape(); - var points4 = polyline.shape.__points; - for (var i2 = 0; i2 < updatedDataInfo.length; i2++) { - var el2 = updatedDataInfo[i2].el; - var offset3 = updatedDataInfo[i2].ptIdx * 2; - el2.x = points4[offset3]; - el2.y = points4[offset3 + 1]; - el2.markRedraw(); - } - }); - } - }; - LineView2.prototype.remove = function(ecModel) { - var group = this.group; - var oldData = this._data; - this._lineGroup.removeAll(); - this._symbolDraw.remove(true); - oldData && oldData.eachItemGraphicEl(function(el, idx) { - if (el.__temp) { - group.remove(el); - oldData.setItemGraphicEl(idx, null); - } - }); - this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._endLabel = this._data = null; - }; - LineView2.type = "line"; - return LineView2; - }(Chart_default) - ); - var LineView_default = LineView; - - // node_modules/echarts/lib/layout/points.js - function pointsLayout(seriesType2, forceStoreInTypedArray) { - return { - seriesType: seriesType2, - plan: createRenderPlanner(), - reset: function(seriesModel) { - var data = seriesModel.getData(); - var coordSys = seriesModel.coordinateSystem; - var pipelineContext = seriesModel.pipelineContext; - var useTypedArray = forceStoreInTypedArray || pipelineContext.large; - if (!coordSys) { - return; - } - var dims = map(coordSys.dimensions, function(dim) { - return data.mapDimension(dim); - }).slice(0, 2); - var dimLen = dims.length; - var stackResultDim = data.getCalculationInfo("stackResultDimension"); - if (isDimensionStacked(data, dims[0])) { - dims[0] = stackResultDim; - } - if (isDimensionStacked(data, dims[1])) { - dims[1] = stackResultDim; - } - var store = data.getStore(); - var dimIdx0 = data.getDimensionIndex(dims[0]); - var dimIdx1 = data.getDimensionIndex(dims[1]); - return dimLen && { - progress: function(params, data2) { - var segCount = params.end - params.start; - var points4 = useTypedArray && createFloat32Array(segCount * dimLen); - var tmpIn = []; - var tmpOut = []; - for (var i = params.start, offset3 = 0; i < params.end; i++) { - var point = void 0; - if (dimLen === 1) { - var x = store.get(dimIdx0, i); - point = coordSys.dataToPoint(x, null, tmpOut); - } else { - tmpIn[0] = store.get(dimIdx0, i); - tmpIn[1] = store.get(dimIdx1, i); - point = coordSys.dataToPoint(tmpIn, null, tmpOut); - } - if (useTypedArray) { - points4[offset3++] = point[0]; - points4[offset3++] = point[1]; - } else { - data2.setItemLayout(i, point.slice()); - } - } - useTypedArray && data2.setLayout("points", points4); - } - }; - } - }; - } - - // node_modules/echarts/lib/processor/dataSample.js - var samplers = { - average: function(frame) { - var sum2 = 0; - var count2 = 0; - for (var i = 0; i < frame.length; i++) { - if (!isNaN(frame[i])) { - sum2 += frame[i]; - count2++; - } - } - return count2 === 0 ? NaN : sum2 / count2; - }, - sum: function(frame) { - var sum2 = 0; - for (var i = 0; i < frame.length; i++) { - sum2 += frame[i] || 0; - } - return sum2; - }, - max: function(frame) { - var max4 = -Infinity; - for (var i = 0; i < frame.length; i++) { - frame[i] > max4 && (max4 = frame[i]); - } - return isFinite(max4) ? max4 : NaN; - }, - min: function(frame) { - var min4 = Infinity; - for (var i = 0; i < frame.length; i++) { - frame[i] < min4 && (min4 = frame[i]); - } - return isFinite(min4) ? min4 : NaN; - }, - // TODO - // Median - nearest: function(frame) { - return frame[0]; - } - }; - var indexSampler = function(frame) { - return Math.round(frame.length / 2); - }; - function dataSample(seriesType2) { - return { - seriesType: seriesType2, - // FIXME:TS never used, so comment it - // modifyOutputEnd: true, - reset: function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var sampling = seriesModel.get("sampling"); - var coordSys = seriesModel.coordinateSystem; - var count2 = data.count(); - if (count2 > 10 && coordSys.type === "cartesian2d" && sampling) { - var baseAxis = coordSys.getBaseAxis(); - var valueAxis2 = coordSys.getOtherAxis(baseAxis); - var extent3 = baseAxis.getExtent(); - var dpr2 = api.getDevicePixelRatio(); - var size2 = Math.abs(extent3[1] - extent3[0]) * (dpr2 || 1); - var rate = Math.round(count2 / size2); - if (isFinite(rate) && rate > 1) { - if (sampling === "lttb") { - seriesModel.setData(data.lttbDownSample(data.mapDimension(valueAxis2.dim), 1 / rate)); - } else if (sampling === "minmax") { - seriesModel.setData(data.minmaxDownSample(data.mapDimension(valueAxis2.dim), 1 / rate)); - } - var sampler = void 0; - if (isString(sampling)) { - sampler = samplers[sampling]; - } else if (isFunction(sampling)) { - sampler = sampling; - } - if (sampler) { - seriesModel.setData(data.downSample(data.mapDimension(valueAxis2.dim), 1 / rate, sampler, indexSampler)); - } - } - } - } - }; - } - - // node_modules/echarts/lib/chart/line/install.js - function install3(registers) { - registers.registerChartView(LineView_default); - registers.registerSeriesModel(LineSeries_default); - registers.registerLayout(pointsLayout("line", true)); - registers.registerVisual({ - seriesType: "line", - reset: function(seriesModel) { - var data = seriesModel.getData(); - var lineStyle = seriesModel.getModel("lineStyle").getLineStyle(); - if (lineStyle && !lineStyle.stroke) { - lineStyle.stroke = data.getVisual("style").fill; - } - data.setVisual("legendLineStyle", lineStyle); - } - }); - registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample("line")); - } - - // node_modules/echarts/lib/chart/bar/BaseBarSeries.js - var BaseBarSeriesModel = ( - /** @class */ - function(_super) { - __extends(BaseBarSeriesModel2, _super); - function BaseBarSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = BaseBarSeriesModel2.type; - return _this; - } - BaseBarSeriesModel2.prototype.getInitialData = function(option, ecModel) { - return createSeriesData_default(null, this, { - useEncodeDefaulter: true - }); - }; - BaseBarSeriesModel2.prototype.getMarkerPosition = function(value, dims, startingAtTick) { - var coordSys = this.coordinateSystem; - if (coordSys && coordSys.clampData) { - var clampData_1 = coordSys.clampData(value); - var pt_1 = coordSys.dataToPoint(clampData_1); - if (startingAtTick) { - each(coordSys.getAxes(), function(axis, idx) { - if (axis.type === "category" && dims != null) { - var tickCoords = axis.getTicksCoords(); - var alignTicksWithLabel = axis.getTickModel().get("alignWithLabel"); - var targetTickId = clampData_1[idx]; - var isEnd = dims[idx] === "x1" || dims[idx] === "y1"; - if (isEnd && !alignTicksWithLabel) { - targetTickId += 1; - } - if (tickCoords.length < 2) { - return; - } else if (tickCoords.length === 2) { - pt_1[idx] = axis.toGlobalCoord(axis.getExtent()[isEnd ? 1 : 0]); - return; - } - var leftCoord = void 0; - var coord = void 0; - var stepTickValue = 1; - for (var i = 0; i < tickCoords.length; i++) { - var tickCoord = tickCoords[i].coord; - var tickValue = i === tickCoords.length - 1 ? tickCoords[i - 1].tickValue + stepTickValue : tickCoords[i].tickValue; - if (tickValue === targetTickId) { - coord = tickCoord; - break; - } else if (tickValue < targetTickId) { - leftCoord = tickCoord; - } else if (leftCoord != null && tickValue > targetTickId) { - coord = (tickCoord + leftCoord) / 2; - break; - } - if (i === 1) { - stepTickValue = tickValue - tickCoords[0].tickValue; - } - } - if (coord == null) { - if (!leftCoord) { - coord = tickCoords[0].coord; - } else if (leftCoord) { - coord = tickCoords[tickCoords.length - 1].coord; - } - } - pt_1[idx] = axis.toGlobalCoord(coord); - } - }); - } else { - var data = this.getData(); - var offset3 = data.getLayout("offset"); - var size2 = data.getLayout("size"); - var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1; - pt_1[offsetIndex] += offset3 + size2 / 2; - } - return pt_1; - } - return [NaN, NaN]; - }; - BaseBarSeriesModel2.type = "series.__base_bar__"; - BaseBarSeriesModel2.defaultOption = { - // zlevel: 0, - z: 2, - coordinateSystem: "cartesian2d", - legendHoverLink: true, - // stack: null - // Cartesian coordinate system - // xAxisIndex: 0, - // yAxisIndex: 0, - barMinHeight: 0, - barMinAngle: 0, - // cursor: null, - large: false, - largeThreshold: 400, - progressive: 3e3, - progressiveChunkMode: "mod" - }; - return BaseBarSeriesModel2; - }(Series_default) - ); - Series_default.registerClass(BaseBarSeriesModel); - var BaseBarSeries_default = BaseBarSeriesModel; - - // node_modules/echarts/lib/chart/bar/BarSeries.js - var BarSeriesModel = ( - /** @class */ - function(_super) { - __extends(BarSeriesModel2, _super); - function BarSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = BarSeriesModel2.type; - return _this; - } - BarSeriesModel2.prototype.getInitialData = function() { - return createSeriesData_default(null, this, { - useEncodeDefaulter: true, - createInvertedIndices: !!this.get("realtimeSort", true) || null - }); - }; - BarSeriesModel2.prototype.getProgressive = function() { - return this.get("large") ? this.get("progressive") : false; - }; - BarSeriesModel2.prototype.getProgressiveThreshold = function() { - var progressiveThreshold = this.get("progressiveThreshold"); - var largeThreshold = this.get("largeThreshold"); - if (largeThreshold > progressiveThreshold) { - progressiveThreshold = largeThreshold; - } - return progressiveThreshold; - }; - BarSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) { - return selectors.rect(data.getItemLayout(dataIndex)); - }; - BarSeriesModel2.type = "series.bar"; - BarSeriesModel2.dependencies = ["grid", "polar"]; - BarSeriesModel2.defaultOption = inheritDefaultOption(BaseBarSeries_default.defaultOption, { - // If clipped - // Only available on cartesian2d - clip: true, - roundCap: false, - showBackground: false, - backgroundStyle: { - color: "rgba(180, 180, 180, 0.2)", - borderColor: null, - borderWidth: 0, - borderType: "solid", - borderRadius: 0, - shadowBlur: 0, - shadowColor: null, - shadowOffsetX: 0, - shadowOffsetY: 0, - opacity: 1 - }, - select: { - itemStyle: { - borderColor: "#212121" - } - }, - realtimeSort: false - }); - return BarSeriesModel2; - }(BaseBarSeries_default) - ); - var BarSeries_default = BarSeriesModel; - - // node_modules/echarts/lib/util/shape/sausage.js - var SausageShape = ( - /** @class */ - /* @__PURE__ */ function() { - function SausageShape2() { - this.cx = 0; - this.cy = 0; - this.r0 = 0; - this.r = 0; - this.startAngle = 0; - this.endAngle = Math.PI * 2; - this.clockwise = true; - } - return SausageShape2; - }() - ); - var SausagePath = ( - /** @class */ - function(_super) { - __extends(SausagePath2, _super); - function SausagePath2(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "sausage"; - return _this; - } - SausagePath2.prototype.getDefaultShape = function() { - return new SausageShape(); - }; - SausagePath2.prototype.buildPath = function(ctx, shape) { - var cx = shape.cx; - var cy = shape.cy; - var r0 = Math.max(shape.r0 || 0, 0); - var r = Math.max(shape.r, 0); - var dr = (r - r0) * 0.5; - var rCenter = r0 + dr; - var startAngle = shape.startAngle; - var endAngle = shape.endAngle; - var clockwise = shape.clockwise; - var PI210 = Math.PI * 2; - var lessThanCircle = clockwise ? endAngle - startAngle < PI210 : startAngle - endAngle < PI210; - if (!lessThanCircle) { - startAngle = endAngle - (clockwise ? PI210 : -PI210); - } - var unitStartX = Math.cos(startAngle); - var unitStartY = Math.sin(startAngle); - var unitEndX = Math.cos(endAngle); - var unitEndY = Math.sin(endAngle); - if (lessThanCircle) { - ctx.moveTo(unitStartX * r0 + cx, unitStartY * r0 + cy); - ctx.arc(unitStartX * rCenter + cx, unitStartY * rCenter + cy, dr, -Math.PI + startAngle, startAngle, !clockwise); - } else { - ctx.moveTo(unitStartX * r + cx, unitStartY * r + cy); - } - ctx.arc(cx, cy, r, startAngle, endAngle, !clockwise); - ctx.arc(unitEndX * rCenter + cx, unitEndY * rCenter + cy, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise); - if (r0 !== 0) { - ctx.arc(cx, cy, r0, endAngle, startAngle, clockwise); - } - }; - return SausagePath2; - }(Path_default) - ); - var sausage_default = SausagePath; - - // node_modules/echarts/lib/label/sectorLabel.js - function createSectorCalculateTextPosition(positionMapping, opts) { - opts = opts || {}; - var isRoundCap = opts.isRoundCap; - return function(out2, opts2, boundingRect) { - var textPosition = opts2.position; - if (!textPosition || textPosition instanceof Array) { - return calculateTextPosition(out2, opts2, boundingRect); - } - var mappedSectorPosition = positionMapping(textPosition); - var distance2 = opts2.distance != null ? opts2.distance : 5; - var sector = this.shape; - var cx = sector.cx; - var cy = sector.cy; - var r = sector.r; - var r0 = sector.r0; - var middleR = (r + r0) / 2; - var startAngle = sector.startAngle; - var endAngle = sector.endAngle; - var middleAngle = (startAngle + endAngle) / 2; - var extraDist = isRoundCap ? Math.abs(r - r0) / 2 : 0; - var mathCos6 = Math.cos; - var mathSin6 = Math.sin; - var x = cx + r * mathCos6(startAngle); - var y = cy + r * mathSin6(startAngle); - var textAlign = "left"; - var textVerticalAlign = "top"; - switch (mappedSectorPosition) { - case "startArc": - x = cx + (r0 - distance2) * mathCos6(middleAngle); - y = cy + (r0 - distance2) * mathSin6(middleAngle); - textAlign = "center"; - textVerticalAlign = "top"; - break; - case "insideStartArc": - x = cx + (r0 + distance2) * mathCos6(middleAngle); - y = cy + (r0 + distance2) * mathSin6(middleAngle); - textAlign = "center"; - textVerticalAlign = "bottom"; - break; - case "startAngle": - x = cx + middleR * mathCos6(startAngle) + adjustAngleDistanceX(startAngle, distance2 + extraDist, false); - y = cy + middleR * mathSin6(startAngle) + adjustAngleDistanceY(startAngle, distance2 + extraDist, false); - textAlign = "right"; - textVerticalAlign = "middle"; - break; - case "insideStartAngle": - x = cx + middleR * mathCos6(startAngle) + adjustAngleDistanceX(startAngle, -distance2 + extraDist, false); - y = cy + middleR * mathSin6(startAngle) + adjustAngleDistanceY(startAngle, -distance2 + extraDist, false); - textAlign = "left"; - textVerticalAlign = "middle"; - break; - case "middle": - x = cx + middleR * mathCos6(middleAngle); - y = cy + middleR * mathSin6(middleAngle); - textAlign = "center"; - textVerticalAlign = "middle"; - break; - case "endArc": - x = cx + (r + distance2) * mathCos6(middleAngle); - y = cy + (r + distance2) * mathSin6(middleAngle); - textAlign = "center"; - textVerticalAlign = "bottom"; - break; - case "insideEndArc": - x = cx + (r - distance2) * mathCos6(middleAngle); - y = cy + (r - distance2) * mathSin6(middleAngle); - textAlign = "center"; - textVerticalAlign = "top"; - break; - case "endAngle": - x = cx + middleR * mathCos6(endAngle) + adjustAngleDistanceX(endAngle, distance2 + extraDist, true); - y = cy + middleR * mathSin6(endAngle) + adjustAngleDistanceY(endAngle, distance2 + extraDist, true); - textAlign = "left"; - textVerticalAlign = "middle"; - break; - case "insideEndAngle": - x = cx + middleR * mathCos6(endAngle) + adjustAngleDistanceX(endAngle, -distance2 + extraDist, true); - y = cy + middleR * mathSin6(endAngle) + adjustAngleDistanceY(endAngle, -distance2 + extraDist, true); - textAlign = "right"; - textVerticalAlign = "middle"; - break; - default: - return calculateTextPosition(out2, opts2, boundingRect); - } - out2 = out2 || {}; - out2.x = x; - out2.y = y; - out2.align = textAlign; - out2.verticalAlign = textVerticalAlign; - return out2; - }; - } - function setSectorTextRotation(sector, textPosition, positionMapping, rotateType) { - if (isNumber(rotateType)) { - sector.setTextConfig({ - rotation: rotateType - }); - return; - } else if (isArray(textPosition)) { - sector.setTextConfig({ - rotation: 0 - }); - return; - } - var shape = sector.shape; - var startAngle = shape.clockwise ? shape.startAngle : shape.endAngle; - var endAngle = shape.clockwise ? shape.endAngle : shape.startAngle; - var middleAngle = (startAngle + endAngle) / 2; - var anchorAngle; - var mappedSectorPosition = positionMapping(textPosition); - switch (mappedSectorPosition) { - case "startArc": - case "insideStartArc": - case "middle": - case "insideEndArc": - case "endArc": - anchorAngle = middleAngle; - break; - case "startAngle": - case "insideStartAngle": - anchorAngle = startAngle; - break; - case "endAngle": - case "insideEndAngle": - anchorAngle = endAngle; - break; - default: - sector.setTextConfig({ - rotation: 0 - }); - return; - } - var rotate2 = Math.PI * 1.5 - anchorAngle; - if (mappedSectorPosition === "middle" && rotate2 > Math.PI / 2 && rotate2 < Math.PI * 1.5) { - rotate2 -= Math.PI; - } - sector.setTextConfig({ - rotation: rotate2 - }); - } - function adjustAngleDistanceX(angle, distance2, isEnd) { - return distance2 * Math.sin(angle) * (isEnd ? -1 : 1); - } - function adjustAngleDistanceY(angle, distance2, isEnd) { - return distance2 * Math.cos(angle) * (isEnd ? 1 : -1); - } - - // node_modules/echarts/lib/chart/helper/sectorHelper.js - function getSectorCornerRadius(model, shape, zeroIfNull) { - var cornerRadius = model.get("borderRadius"); - if (cornerRadius == null) { - return zeroIfNull ? { - cornerRadius: 0 - } : null; - } - if (!isArray(cornerRadius)) { - cornerRadius = [cornerRadius, cornerRadius, cornerRadius, cornerRadius]; - } - var dr = Math.abs(shape.r || 0 - shape.r0 || 0); - return { - cornerRadius: map(cornerRadius, function(cr) { - return parsePercent(cr, dr); - }) - }; - } - - // node_modules/echarts/lib/chart/bar/BarView.js - var mathMax7 = Math.max; - var mathMin7 = Math.min; - function getClipArea(coord, data) { - var coordSysClipArea = coord.getArea && coord.getArea(); - if (isCoordinateSystemType(coord, "cartesian2d")) { - var baseAxis = coord.getBaseAxis(); - if (baseAxis.type !== "category" || !baseAxis.onBand) { - var expandWidth = data.getLayout("bandWidth"); - if (baseAxis.isHorizontal()) { - coordSysClipArea.x -= expandWidth; - coordSysClipArea.width += expandWidth * 2; - } else { - coordSysClipArea.y -= expandWidth; - coordSysClipArea.height += expandWidth * 2; - } - } - } - return coordSysClipArea; - } - var BarView = ( - /** @class */ - function(_super) { - __extends(BarView2, _super); - function BarView2() { - var _this = _super.call(this) || this; - _this.type = BarView2.type; - _this._isFirstFrame = true; - return _this; - } - BarView2.prototype.render = function(seriesModel, ecModel, api, payload) { - this._model = seriesModel; - this._removeOnRenderedListener(api); - this._updateDrawMode(seriesModel); - var coordinateSystemType = seriesModel.get("coordinateSystem"); - if (coordinateSystemType === "cartesian2d" || coordinateSystemType === "polar") { - this._progressiveEls = null; - this._isLargeDraw ? this._renderLarge(seriesModel, ecModel, api) : this._renderNormal(seriesModel, ecModel, api, payload); - } else if (true) { - warn("Only cartesian2d and polar supported for bar."); - } - }; - BarView2.prototype.incrementalPrepareRender = function(seriesModel) { - this._clear(); - this._updateDrawMode(seriesModel); - this._updateLargeClip(seriesModel); - }; - BarView2.prototype.incrementalRender = function(params, seriesModel) { - this._progressiveEls = []; - this._incrementalRenderLarge(params, seriesModel); - }; - BarView2.prototype.eachRendered = function(cb) { - traverseElements(this._progressiveEls || this.group, cb); - }; - BarView2.prototype._updateDrawMode = function(seriesModel) { - var isLargeDraw = seriesModel.pipelineContext.large; - if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) { - this._isLargeDraw = isLargeDraw; - this._clear(); - } - }; - BarView2.prototype._renderNormal = function(seriesModel, ecModel, api, payload) { - var group = this.group; - var data = seriesModel.getData(); - var oldData = this._data; - var coord = seriesModel.coordinateSystem; - var baseAxis = coord.getBaseAxis(); - var isHorizontalOrRadial; - if (coord.type === "cartesian2d") { - isHorizontalOrRadial = baseAxis.isHorizontal(); - } else if (coord.type === "polar") { - isHorizontalOrRadial = baseAxis.dim === "angle"; - } - var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null; - var realtimeSortCfg = shouldRealtimeSort(seriesModel, coord); - if (realtimeSortCfg) { - this._enableRealtimeSort(realtimeSortCfg, data, api); - } - var needsClip = seriesModel.get("clip", true) || realtimeSortCfg; - var coordSysClipArea = getClipArea(coord, data); - group.removeClipPath(); - var roundCap = seriesModel.get("roundCap", true); - var drawBackground = seriesModel.get("showBackground", true); - var backgroundModel = seriesModel.getModel("backgroundStyle"); - var barBorderRadius = backgroundModel.get("borderRadius") || 0; - var bgEls = []; - var oldBgEls = this._backgroundEls; - var isInitSort = payload && payload.isInitSort; - var isChangeOrder = payload && payload.type === "changeAxisOrder"; - function createBackground(dataIndex) { - var bgLayout = getLayout[coord.type](data, dataIndex); - var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout); - bgEl.useStyle(backgroundModel.getItemStyle()); - if (coord.type === "cartesian2d") { - bgEl.setShape("r", barBorderRadius); - } else { - bgEl.setShape("cornerRadius", barBorderRadius); - } - bgEls[dataIndex] = bgEl; - return bgEl; - } - ; - data.diff(oldData).add(function(dataIndex) { - var itemModel = data.getItemModel(dataIndex); - var layout5 = getLayout[coord.type](data, dataIndex, itemModel); - if (drawBackground) { - createBackground(dataIndex); - } - if (!data.hasValue(dataIndex) || !isValidLayout[coord.type](layout5)) { - return; - } - var isClipped = false; - if (needsClip) { - isClipped = clip[coord.type](coordSysClipArea, layout5); - } - var el = elementCreator[coord.type](seriesModel, data, dataIndex, layout5, isHorizontalOrRadial, animationModel, baseAxis.model, false, roundCap); - if (realtimeSortCfg) { - el.forceLabelAnimation = true; - } - updateStyle(el, data, dataIndex, itemModel, layout5, seriesModel, isHorizontalOrRadial, coord.type === "polar"); - if (isInitSort) { - el.attr({ - shape: layout5 - }); - } else if (realtimeSortCfg) { - updateRealtimeAnimation(realtimeSortCfg, animationModel, el, layout5, dataIndex, isHorizontalOrRadial, false, false); - } else { - initProps(el, { - shape: layout5 - }, seriesModel, dataIndex); - } - data.setItemGraphicEl(dataIndex, el); - group.add(el); - el.ignore = isClipped; - }).update(function(newIndex, oldIndex) { - var itemModel = data.getItemModel(newIndex); - var layout5 = getLayout[coord.type](data, newIndex, itemModel); - if (drawBackground) { - var bgEl = void 0; - if (oldBgEls.length === 0) { - bgEl = createBackground(oldIndex); - } else { - bgEl = oldBgEls[oldIndex]; - bgEl.useStyle(backgroundModel.getItemStyle()); - if (coord.type === "cartesian2d") { - bgEl.setShape("r", barBorderRadius); - } else { - bgEl.setShape("cornerRadius", barBorderRadius); - } - bgEls[newIndex] = bgEl; - } - var bgLayout = getLayout[coord.type](data, newIndex); - var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord); - updateProps(bgEl, { - shape - }, animationModel, newIndex); - } - var el = oldData.getItemGraphicEl(oldIndex); - if (!data.hasValue(newIndex) || !isValidLayout[coord.type](layout5)) { - group.remove(el); - return; - } - var isClipped = false; - if (needsClip) { - isClipped = clip[coord.type](coordSysClipArea, layout5); - if (isClipped) { - group.remove(el); - } - } - if (!el) { - el = elementCreator[coord.type](seriesModel, data, newIndex, layout5, isHorizontalOrRadial, animationModel, baseAxis.model, !!el, roundCap); - } else { - saveOldStyle(el); - } - if (realtimeSortCfg) { - el.forceLabelAnimation = true; - } - if (isChangeOrder) { - var textEl = el.getTextContent(); - if (textEl) { - var labelInnerStore = labelInner(textEl); - if (labelInnerStore.prevValue != null) { - labelInnerStore.prevValue = labelInnerStore.value; - } - } - } else { - updateStyle(el, data, newIndex, itemModel, layout5, seriesModel, isHorizontalOrRadial, coord.type === "polar"); - } - if (isInitSort) { - el.attr({ - shape: layout5 - }); - } else if (realtimeSortCfg) { - updateRealtimeAnimation(realtimeSortCfg, animationModel, el, layout5, newIndex, isHorizontalOrRadial, true, isChangeOrder); - } else { - updateProps(el, { - shape: layout5 - }, seriesModel, newIndex, null); - } - data.setItemGraphicEl(newIndex, el); - el.ignore = isClipped; - group.add(el); - }).remove(function(dataIndex) { - var el = oldData.getItemGraphicEl(dataIndex); - el && removeElementWithFadeOut(el, seriesModel, dataIndex); - }).execute(); - var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group_default()); - bgGroup.removeAll(); - for (var i = 0; i < bgEls.length; ++i) { - bgGroup.add(bgEls[i]); - } - group.add(bgGroup); - this._backgroundEls = bgEls; - this._data = data; - }; - BarView2.prototype._renderLarge = function(seriesModel, ecModel, api) { - this._clear(); - createLarge(seriesModel, this.group); - this._updateLargeClip(seriesModel); - }; - BarView2.prototype._incrementalRenderLarge = function(params, seriesModel) { - this._removeBackground(); - createLarge(seriesModel, this.group, this._progressiveEls, true); - }; - BarView2.prototype._updateLargeClip = function(seriesModel) { - var clipPath = seriesModel.get("clip", true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel); - var group = this.group; - if (clipPath) { - group.setClipPath(clipPath); - } else { - group.removeClipPath(); - } - }; - BarView2.prototype._enableRealtimeSort = function(realtimeSortCfg, data, api) { - var _this = this; - if (!data.count()) { - return; - } - var baseAxis = realtimeSortCfg.baseAxis; - if (this._isFirstFrame) { - this._dispatchInitSort(data, realtimeSortCfg, api); - this._isFirstFrame = false; - } else { - var orderMapping_1 = function(idx) { - var el = data.getItemGraphicEl(idx); - var shape = el && el.shape; - return shape && // The result should be consistent with the initial sort by data value. - // Do not support the case that both positive and negative exist. - Math.abs(baseAxis.isHorizontal() ? shape.height : shape.width) || 0; - }; - this._onRendered = function() { - _this._updateSortWithinSameData(data, orderMapping_1, baseAxis, api); - }; - api.getZr().on("rendered", this._onRendered); - } - }; - BarView2.prototype._dataSort = function(data, baseAxis, orderMapping) { - var info = []; - data.each(data.mapDimension(baseAxis.dim), function(ordinalNumber, dataIdx) { - var mappedValue = orderMapping(dataIdx); - mappedValue = mappedValue == null ? NaN : mappedValue; - info.push({ - dataIndex: dataIdx, - mappedValue, - ordinalNumber - }); - }); - info.sort(function(a, b) { - return b.mappedValue - a.mappedValue; - }); - return { - ordinalNumbers: map(info, function(item) { - return item.ordinalNumber; - }) - }; - }; - BarView2.prototype._isOrderChangedWithinSameData = function(data, orderMapping, baseAxis) { - var scale4 = baseAxis.scale; - var ordinalDataDim = data.mapDimension(baseAxis.dim); - var lastValue = Number.MAX_VALUE; - for (var tickNum = 0, len2 = scale4.getOrdinalMeta().categories.length; tickNum < len2; ++tickNum) { - var rawIdx = data.rawIndexOf(ordinalDataDim, scale4.getRawOrdinalNumber(tickNum)); - var value = rawIdx < 0 ? Number.MIN_VALUE : orderMapping(data.indexOfRawIndex(rawIdx)); - if (value > lastValue) { - return true; - } - lastValue = value; - } - return false; - }; - BarView2.prototype._isOrderDifferentInView = function(orderInfo, baseAxis) { - var scale4 = baseAxis.scale; - var extent3 = scale4.getExtent(); - var tickNum = Math.max(0, extent3[0]); - var tickMax = Math.min(extent3[1], scale4.getOrdinalMeta().categories.length - 1); - for (; tickNum <= tickMax; ++tickNum) { - if (orderInfo.ordinalNumbers[tickNum] !== scale4.getRawOrdinalNumber(tickNum)) { - return true; - } - } - }; - BarView2.prototype._updateSortWithinSameData = function(data, orderMapping, baseAxis, api) { - if (!this._isOrderChangedWithinSameData(data, orderMapping, baseAxis)) { - return; - } - var sortInfo = this._dataSort(data, baseAxis, orderMapping); - if (this._isOrderDifferentInView(sortInfo, baseAxis)) { - this._removeOnRenderedListener(api); - api.dispatchAction({ - type: "changeAxisOrder", - componentType: baseAxis.dim + "Axis", - axisId: baseAxis.index, - sortInfo - }); - } - }; - BarView2.prototype._dispatchInitSort = function(data, realtimeSortCfg, api) { - var baseAxis = realtimeSortCfg.baseAxis; - var sortResult = this._dataSort(data, baseAxis, function(dataIdx) { - return data.get(data.mapDimension(realtimeSortCfg.otherAxis.dim), dataIdx); - }); - api.dispatchAction({ - type: "changeAxisOrder", - componentType: baseAxis.dim + "Axis", - isInitSort: true, - axisId: baseAxis.index, - sortInfo: sortResult - }); - }; - BarView2.prototype.remove = function(ecModel, api) { - this._clear(this._model); - this._removeOnRenderedListener(api); - }; - BarView2.prototype.dispose = function(ecModel, api) { - this._removeOnRenderedListener(api); - }; - BarView2.prototype._removeOnRenderedListener = function(api) { - if (this._onRendered) { - api.getZr().off("rendered", this._onRendered); - this._onRendered = null; - } - }; - BarView2.prototype._clear = function(model) { - var group = this.group; - var data = this._data; - if (model && model.isAnimationEnabled() && data && !this._isLargeDraw) { - this._removeBackground(); - this._backgroundEls = []; - data.eachItemGraphicEl(function(el) { - removeElementWithFadeOut(el, model, getECData(el).dataIndex); - }); - } else { - group.removeAll(); - } - this._data = null; - this._isFirstFrame = true; - }; - BarView2.prototype._removeBackground = function() { - this.group.remove(this._backgroundGroup); - this._backgroundGroup = null; - }; - BarView2.type = "bar"; - return BarView2; - }(Chart_default) - ); - var clip = { - cartesian2d: function(coordSysBoundingRect, layout5) { - var signWidth = layout5.width < 0 ? -1 : 1; - var signHeight = layout5.height < 0 ? -1 : 1; - if (signWidth < 0) { - layout5.x += layout5.width; - layout5.width = -layout5.width; - } - if (signHeight < 0) { - layout5.y += layout5.height; - layout5.height = -layout5.height; - } - var coordSysX2 = coordSysBoundingRect.x + coordSysBoundingRect.width; - var coordSysY2 = coordSysBoundingRect.y + coordSysBoundingRect.height; - var x = mathMax7(layout5.x, coordSysBoundingRect.x); - var x2 = mathMin7(layout5.x + layout5.width, coordSysX2); - var y = mathMax7(layout5.y, coordSysBoundingRect.y); - var y2 = mathMin7(layout5.y + layout5.height, coordSysY2); - var xClipped = x2 < x; - var yClipped = y2 < y; - layout5.x = xClipped && x > coordSysX2 ? x2 : x; - layout5.y = yClipped && y > coordSysY2 ? y2 : y; - layout5.width = xClipped ? 0 : x2 - x; - layout5.height = yClipped ? 0 : y2 - y; - if (signWidth < 0) { - layout5.x += layout5.width; - layout5.width = -layout5.width; - } - if (signHeight < 0) { - layout5.y += layout5.height; - layout5.height = -layout5.height; - } - return xClipped || yClipped; - }, - polar: function(coordSysClipArea, layout5) { - var signR = layout5.r0 <= layout5.r ? 1 : -1; - if (signR < 0) { - var tmp = layout5.r; - layout5.r = layout5.r0; - layout5.r0 = tmp; - } - var r = mathMin7(layout5.r, coordSysClipArea.r); - var r0 = mathMax7(layout5.r0, coordSysClipArea.r0); - layout5.r = r; - layout5.r0 = r0; - var clipped = r - r0 < 0; - if (signR < 0) { - var tmp = layout5.r; - layout5.r = layout5.r0; - layout5.r0 = tmp; - } - return clipped; - } - }; - var elementCreator = { - cartesian2d: function(seriesModel, data, newIndex, layout5, isHorizontal, animationModel, axisModel, isUpdate, roundCap) { - var rect = new Rect_default({ - shape: extend({}, layout5), - z2: 1 - }); - rect.__dataIndex = newIndex; - rect.name = "item"; - if (animationModel) { - var rectShape = rect.shape; - var animateProperty = isHorizontal ? "height" : "width"; - rectShape[animateProperty] = 0; - } - return rect; - }, - polar: function(seriesModel, data, newIndex, layout5, isRadial, animationModel, axisModel, isUpdate, roundCap) { - var ShapeClass = !isRadial && roundCap ? sausage_default : Sector_default; - var sector = new ShapeClass({ - shape: layout5, - z2: 1 - }); - sector.name = "item"; - var positionMap = createPolarPositionMapping(isRadial); - sector.calculateTextPosition = createSectorCalculateTextPosition(positionMap, { - isRoundCap: ShapeClass === sausage_default - }); - if (animationModel) { - var sectorShape = sector.shape; - var animateProperty = isRadial ? "r" : "endAngle"; - var animateTarget = {}; - sectorShape[animateProperty] = isRadial ? layout5.r0 : layout5.startAngle; - animateTarget[animateProperty] = layout5[animateProperty]; - (isUpdate ? updateProps : initProps)(sector, { - shape: animateTarget - // __value: typeof dataValue === 'string' ? parseInt(dataValue, 10) : dataValue - }, animationModel); - } - return sector; - } - }; - function shouldRealtimeSort(seriesModel, coordSys) { - var realtimeSortOption = seriesModel.get("realtimeSort", true); - var baseAxis = coordSys.getBaseAxis(); - if (true) { - if (realtimeSortOption) { - if (baseAxis.type !== "category") { - warn("`realtimeSort` will not work because this bar series is not based on a category axis."); - } - if (coordSys.type !== "cartesian2d") { - warn("`realtimeSort` will not work because this bar series is not on cartesian2d."); - } - } - } - if (realtimeSortOption && baseAxis.type === "category" && coordSys.type === "cartesian2d") { - return { - baseAxis, - otherAxis: coordSys.getOtherAxis(baseAxis) - }; - } - } - function updateRealtimeAnimation(realtimeSortCfg, seriesAnimationModel, el, layout5, newIndex, isHorizontal, isUpdate, isChangeOrder) { - var seriesTarget; - var axisTarget; - if (isHorizontal) { - axisTarget = { - x: layout5.x, - width: layout5.width - }; - seriesTarget = { - y: layout5.y, - height: layout5.height - }; - } else { - axisTarget = { - y: layout5.y, - height: layout5.height - }; - seriesTarget = { - x: layout5.x, - width: layout5.width - }; - } - if (!isChangeOrder) { - (isUpdate ? updateProps : initProps)(el, { - shape: seriesTarget - }, seriesAnimationModel, newIndex, null); - } - var axisAnimationModel = seriesAnimationModel ? realtimeSortCfg.baseAxis.model : null; - (isUpdate ? updateProps : initProps)(el, { - shape: axisTarget - }, axisAnimationModel, newIndex); - } - function checkPropertiesNotValid(obj, props) { - for (var i = 0; i < props.length; i++) { - if (!isFinite(obj[props[i]])) { - return true; - } - } - return false; - } - var rectPropties = ["x", "y", "width", "height"]; - var polarPropties = ["cx", "cy", "r", "startAngle", "endAngle"]; - var isValidLayout = { - cartesian2d: function(layout5) { - return !checkPropertiesNotValid(layout5, rectPropties); - }, - polar: function(layout5) { - return !checkPropertiesNotValid(layout5, polarPropties); - } - }; - var getLayout = { - // itemModel is only used to get borderWidth, which is not needed - // when calculating bar background layout. - cartesian2d: function(data, dataIndex, itemModel) { - var layout5 = data.getItemLayout(dataIndex); - var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout5) : 0; - var signX = layout5.width > 0 ? 1 : -1; - var signY = layout5.height > 0 ? 1 : -1; - return { - x: layout5.x + signX * fixedLineWidth / 2, - y: layout5.y + signY * fixedLineWidth / 2, - width: layout5.width - signX * fixedLineWidth, - height: layout5.height - signY * fixedLineWidth - }; - }, - polar: function(data, dataIndex, itemModel) { - var layout5 = data.getItemLayout(dataIndex); - return { - cx: layout5.cx, - cy: layout5.cy, - r0: layout5.r0, - r: layout5.r, - startAngle: layout5.startAngle, - endAngle: layout5.endAngle, - clockwise: layout5.clockwise - }; - } - }; - function isZeroOnPolar(layout5) { - return layout5.startAngle != null && layout5.endAngle != null && layout5.startAngle === layout5.endAngle; - } - function createPolarPositionMapping(isRadial) { - return /* @__PURE__ */ function(isRadial2) { - var arcOrAngle = isRadial2 ? "Arc" : "Angle"; - return function(position2) { - switch (position2) { - case "start": - case "insideStart": - case "end": - case "insideEnd": - return position2 + arcOrAngle; - default: - return position2; - } - }; - }(isRadial); - } - function updateStyle(el, data, dataIndex, itemModel, layout5, seriesModel, isHorizontalOrRadial, isPolar) { - var style = data.getItemVisual(dataIndex, "style"); - if (!isPolar) { - var borderRadius = itemModel.get(["itemStyle", "borderRadius"]) || 0; - el.setShape("r", borderRadius); - } else if (!seriesModel.get("roundCap")) { - var sectorShape = el.shape; - var cornerRadius = getSectorCornerRadius(itemModel.getModel("itemStyle"), sectorShape, true); - extend(sectorShape, cornerRadius); - el.setShape(sectorShape); - } - el.useStyle(style); - var cursorStyle = itemModel.getShallow("cursor"); - cursorStyle && el.attr("cursor", cursorStyle); - var labelPositionOutside = isPolar ? isHorizontalOrRadial ? layout5.r >= layout5.r0 ? "endArc" : "startArc" : layout5.endAngle >= layout5.startAngle ? "endAngle" : "startAngle" : isHorizontalOrRadial ? layout5.height >= 0 ? "bottom" : "top" : layout5.width >= 0 ? "right" : "left"; - var labelStatesModels = getLabelStatesModels(itemModel); - setLabelStyle(el, labelStatesModels, { - labelFetcher: seriesModel, - labelDataIndex: dataIndex, - defaultText: getDefaultLabel(seriesModel.getData(), dataIndex), - inheritColor: style.fill, - defaultOpacity: style.opacity, - defaultOutsidePosition: labelPositionOutside - }); - var label = el.getTextContent(); - if (isPolar && label) { - var position2 = itemModel.get(["label", "position"]); - el.textConfig.inside = position2 === "middle" ? true : null; - setSectorTextRotation(el, position2 === "outside" ? labelPositionOutside : position2, createPolarPositionMapping(isHorizontalOrRadial), itemModel.get(["label", "rotate"])); - } - setLabelValueAnimation(label, labelStatesModels, seriesModel.getRawValue(dataIndex), function(value) { - return getDefaultInterpolatedLabel(data, value); - }); - var emphasisModel = itemModel.getModel(["emphasis"]); - toggleHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - setStatesStylesFromModel(el, itemModel); - if (isZeroOnPolar(layout5)) { - el.style.fill = "none"; - el.style.stroke = "none"; - each(el.states, function(state) { - if (state.style) { - state.style.fill = state.style.stroke = "none"; - } - }); - } - } - function getLineWidth(itemModel, rawLayout) { - var borderColor = itemModel.get(["itemStyle", "borderColor"]); - if (!borderColor || borderColor === "none") { - return 0; - } - var lineWidth = itemModel.get(["itemStyle", "borderWidth"]) || 0; - var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width); - var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height); - return Math.min(lineWidth, width, height); - } - var LagePathShape = ( - /** @class */ - /* @__PURE__ */ function() { - function LagePathShape2() { - } - return LagePathShape2; - }() - ); - var LargePath = ( - /** @class */ - function(_super) { - __extends(LargePath2, _super); - function LargePath2(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "largeBar"; - return _this; - } - LargePath2.prototype.getDefaultShape = function() { - return new LagePathShape(); - }; - LargePath2.prototype.buildPath = function(ctx, shape) { - var points4 = shape.points; - var baseDimIdx = this.baseDimIdx; - var valueDimIdx = 1 - this.baseDimIdx; - var startPoint = []; - var size2 = []; - var barWidth = this.barWidth; - for (var i = 0; i < points4.length; i += 3) { - size2[baseDimIdx] = barWidth; - size2[valueDimIdx] = points4[i + 2]; - startPoint[baseDimIdx] = points4[i + baseDimIdx]; - startPoint[valueDimIdx] = points4[i + valueDimIdx]; - ctx.rect(startPoint[0], startPoint[1], size2[0], size2[1]); - } - }; - return LargePath2; - }(Path_default) - ); - function createLarge(seriesModel, group, progressiveEls, incremental) { - var data = seriesModel.getData(); - var baseDimIdx = data.getLayout("valueAxisHorizontal") ? 1 : 0; - var largeDataIndices = data.getLayout("largeDataIndices"); - var barWidth = data.getLayout("size"); - var backgroundModel = seriesModel.getModel("backgroundStyle"); - var bgPoints = data.getLayout("largeBackgroundPoints"); - if (bgPoints) { - var bgEl = new LargePath({ - shape: { - points: bgPoints - }, - incremental: !!incremental, - silent: true, - z2: 0 - }); - bgEl.baseDimIdx = baseDimIdx; - bgEl.largeDataIndices = largeDataIndices; - bgEl.barWidth = barWidth; - bgEl.useStyle(backgroundModel.getItemStyle()); - group.add(bgEl); - progressiveEls && progressiveEls.push(bgEl); - } - var el = new LargePath({ - shape: { - points: data.getLayout("largePoints") - }, - incremental: !!incremental, - ignoreCoarsePointer: true, - z2: 1 - }); - el.baseDimIdx = baseDimIdx; - el.largeDataIndices = largeDataIndices; - el.barWidth = barWidth; - group.add(el); - el.useStyle(data.getVisual("style")); - el.style.stroke = null; - getECData(el).seriesIndex = seriesModel.seriesIndex; - if (!seriesModel.get("silent")) { - el.on("mousedown", largePathUpdateDataIndex); - el.on("mousemove", largePathUpdateDataIndex); - } - progressiveEls && progressiveEls.push(el); - } - var largePathUpdateDataIndex = throttle(function(event) { - var largePath = this; - var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY); - getECData(largePath).dataIndex = dataIndex >= 0 ? dataIndex : null; - }, 30, false); - function largePathFindDataIndex(largePath, x, y) { - var baseDimIdx = largePath.baseDimIdx; - var valueDimIdx = 1 - baseDimIdx; - var points4 = largePath.shape.points; - var largeDataIndices = largePath.largeDataIndices; - var startPoint = []; - var size2 = []; - var barWidth = largePath.barWidth; - for (var i = 0, len2 = points4.length / 3; i < len2; i++) { - var ii = i * 3; - size2[baseDimIdx] = barWidth; - size2[valueDimIdx] = points4[ii + 2]; - startPoint[baseDimIdx] = points4[ii + baseDimIdx]; - startPoint[valueDimIdx] = points4[ii + valueDimIdx]; - if (size2[valueDimIdx] < 0) { - startPoint[valueDimIdx] += size2[valueDimIdx]; - size2[valueDimIdx] = -size2[valueDimIdx]; - } - if (x >= startPoint[0] && x <= startPoint[0] + size2[0] && y >= startPoint[1] && y <= startPoint[1] + size2[1]) { - return largeDataIndices[i]; - } - } - return -1; - } - function createBackgroundShape(isHorizontalOrRadial, layout5, coord) { - if (isCoordinateSystemType(coord, "cartesian2d")) { - var rectShape = layout5; - var coordLayout = coord.getArea(); - return { - x: isHorizontalOrRadial ? rectShape.x : coordLayout.x, - y: isHorizontalOrRadial ? coordLayout.y : rectShape.y, - width: isHorizontalOrRadial ? rectShape.width : coordLayout.width, - height: isHorizontalOrRadial ? coordLayout.height : rectShape.height - }; - } else { - var coordLayout = coord.getArea(); - var sectorShape = layout5; - return { - cx: coordLayout.cx, - cy: coordLayout.cy, - r0: isHorizontalOrRadial ? coordLayout.r0 : sectorShape.r0, - r: isHorizontalOrRadial ? coordLayout.r : sectorShape.r, - startAngle: isHorizontalOrRadial ? sectorShape.startAngle : 0, - endAngle: isHorizontalOrRadial ? sectorShape.endAngle : Math.PI * 2 - }; - } - } - function createBackgroundEl(coord, isHorizontalOrRadial, layout5) { - var ElementClz = coord.type === "polar" ? Sector_default : Rect_default; - return new ElementClz({ - shape: createBackgroundShape(isHorizontalOrRadial, layout5, coord), - silent: true, - z2: 0 - }); - } - var BarView_default = BarView; - - // node_modules/echarts/lib/chart/bar/install.js - function install4(registers) { - registers.registerChartView(BarView_default); - registers.registerSeriesModel(BarSeries_default); - registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, curry(layout, "bar")); - registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout("bar")); - registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample("bar")); - registers.registerAction({ - type: "changeAxisOrder", - event: "changeAxisOrder", - update: "update" - }, function(payload, ecModel) { - var componentType = payload.componentType || "series"; - ecModel.eachComponent({ - mainType: componentType, - query: payload - }, function(componentModel) { - if (payload.sortInfo) { - componentModel.axis.setCategorySortInfo(payload.sortInfo); - } - }); - }); - } - - // node_modules/echarts/lib/chart/pie/pieLayout.js - var PI29 = Math.PI * 2; - var RADIAN = Math.PI / 180; - function getViewRect(seriesModel, api) { - return getLayoutRect(seriesModel.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }); - } - function getBasicPieLayout(seriesModel, api) { - var viewRect2 = getViewRect(seriesModel, api); - var center3 = seriesModel.get("center"); - var radius = seriesModel.get("radius"); - if (!isArray(radius)) { - radius = [0, radius]; - } - var width = parsePercent2(viewRect2.width, api.getWidth()); - var height = parsePercent2(viewRect2.height, api.getHeight()); - var size2 = Math.min(width, height); - var r0 = parsePercent2(radius[0], size2 / 2); - var r = parsePercent2(radius[1], size2 / 2); - var cx; - var cy; - var coordSys = seriesModel.coordinateSystem; - if (coordSys) { - var point = coordSys.dataToPoint(center3); - cx = point[0] || 0; - cy = point[1] || 0; - } else { - if (!isArray(center3)) { - center3 = [center3, center3]; - } - cx = parsePercent2(center3[0], width) + viewRect2.x; - cy = parsePercent2(center3[1], height) + viewRect2.y; - } - return { - cx, - cy, - r0, - r - }; - } - function pieLayout(seriesType2, ecModel, api) { - ecModel.eachSeriesByType(seriesType2, function(seriesModel) { - var data = seriesModel.getData(); - var valueDim = data.mapDimension("value"); - var viewRect2 = getViewRect(seriesModel, api); - var _a2 = getBasicPieLayout(seriesModel, api), cx = _a2.cx, cy = _a2.cy, r = _a2.r, r0 = _a2.r0; - var startAngle = -seriesModel.get("startAngle") * RADIAN; - var endAngle = seriesModel.get("endAngle"); - var padAngle = seriesModel.get("padAngle") * RADIAN; - endAngle = endAngle === "auto" ? startAngle - PI29 : -endAngle * RADIAN; - var minAngle = seriesModel.get("minAngle") * RADIAN; - var minAndPadAngle = minAngle + padAngle; - var validDataCount = 0; - data.each(valueDim, function(value) { - !isNaN(value) && validDataCount++; - }); - var sum2 = data.getSum(valueDim); - var unitRadian = Math.PI / (sum2 || validDataCount) * 2; - var clockwise = seriesModel.get("clockwise"); - var roseType = seriesModel.get("roseType"); - var stillShowZeroSum = seriesModel.get("stillShowZeroSum"); - var extent3 = data.getDataExtent(valueDim); - extent3[0] = 0; - var dir3 = clockwise ? 1 : -1; - var angles = [startAngle, endAngle]; - var halfPadAngle = dir3 * padAngle / 2; - normalizeArcAngles(angles, !clockwise); - startAngle = angles[0], endAngle = angles[1]; - var layoutData = getSeriesLayoutData(seriesModel); - layoutData.startAngle = startAngle; - layoutData.endAngle = endAngle; - layoutData.clockwise = clockwise; - var angleRange = Math.abs(endAngle - startAngle); - var restAngle = angleRange; - var valueSumLargerThanMinAngle = 0; - var currentAngle = startAngle; - data.setLayout({ - viewRect: viewRect2, - r - }); - data.each(valueDim, function(value, idx) { - var angle; - if (isNaN(value)) { - data.setItemLayout(idx, { - angle: NaN, - startAngle: NaN, - endAngle: NaN, - clockwise, - cx, - cy, - r0, - r: roseType ? NaN : r - }); - return; - } - if (roseType !== "area") { - angle = sum2 === 0 && stillShowZeroSum ? unitRadian : value * unitRadian; - } else { - angle = angleRange / validDataCount; - } - if (angle < minAndPadAngle) { - angle = minAndPadAngle; - restAngle -= minAndPadAngle; - } else { - valueSumLargerThanMinAngle += value; - } - var endAngle2 = currentAngle + dir3 * angle; - var actualStartAngle = 0; - var actualEndAngle = 0; - if (padAngle > angle) { - actualStartAngle = currentAngle + dir3 * angle / 2; - actualEndAngle = actualStartAngle; - } else { - actualStartAngle = currentAngle + halfPadAngle; - actualEndAngle = endAngle2 - halfPadAngle; - } - data.setItemLayout(idx, { - angle, - startAngle: actualStartAngle, - endAngle: actualEndAngle, - clockwise, - cx, - cy, - r0, - r: roseType ? linearMap(value, extent3, [r0, r]) : r - }); - currentAngle = endAngle2; - }); - if (restAngle < PI29 && validDataCount) { - if (restAngle <= 1e-3) { - var angle_1 = angleRange / validDataCount; - data.each(valueDim, function(value, idx) { - if (!isNaN(value)) { - var layout_1 = data.getItemLayout(idx); - layout_1.angle = angle_1; - var actualStartAngle = 0; - var actualEndAngle = 0; - if (angle_1 < padAngle) { - actualStartAngle = startAngle + dir3 * (idx + 1 / 2) * angle_1; - actualEndAngle = actualStartAngle; - } else { - actualStartAngle = startAngle + dir3 * idx * angle_1 + halfPadAngle; - actualEndAngle = startAngle + dir3 * (idx + 1) * angle_1 - halfPadAngle; - } - layout_1.startAngle = actualStartAngle; - layout_1.endAngle = actualEndAngle; - } - }); - } else { - unitRadian = restAngle / valueSumLargerThanMinAngle; - currentAngle = startAngle; - data.each(valueDim, function(value, idx) { - if (!isNaN(value)) { - var layout_2 = data.getItemLayout(idx); - var angle = layout_2.angle === minAndPadAngle ? minAndPadAngle : value * unitRadian; - var actualStartAngle = 0; - var actualEndAngle = 0; - if (angle < padAngle) { - actualStartAngle = currentAngle + dir3 * angle / 2; - actualEndAngle = actualStartAngle; - } else { - actualStartAngle = currentAngle + halfPadAngle; - actualEndAngle = currentAngle + dir3 * angle - halfPadAngle; - } - layout_2.startAngle = actualStartAngle; - layout_2.endAngle = actualEndAngle; - currentAngle += dir3 * angle; - } - }); - } - } - }); - } - var getSeriesLayoutData = makeInner(); - - // node_modules/echarts/lib/processor/dataFilter.js - function dataFilter(seriesType2) { - return { - seriesType: seriesType2, - reset: function(seriesModel, ecModel) { - var legendModels = ecModel.findComponents({ - mainType: "legend" - }); - if (!legendModels || !legendModels.length) { - return; - } - var data = seriesModel.getData(); - data.filterSelf(function(idx) { - var name = data.getName(idx); - for (var i = 0; i < legendModels.length; i++) { - if (!legendModels[i].isSelected(name)) { - return false; - } - } - return true; - }); - } - }; - } - - // node_modules/echarts/lib/chart/pie/labelLayout.js - var RADIAN2 = Math.PI / 180; - function adjustSingleSide(list, cx, cy, r, dir3, viewWidth, viewHeight, viewLeft, viewTop, farthestX) { - if (list.length < 2) { - return; - } - ; - function recalculateXOnSemiToAlignOnEllipseCurve(semi) { - var rB = semi.rB; - var rB2 = rB * rB; - for (var i2 = 0; i2 < semi.list.length; i2++) { - var item = semi.list[i2]; - var dy = Math.abs(item.label.y - cy); - var rA = r + item.len; - var rA2 = rA * rA; - var dx2 = Math.sqrt(Math.abs((1 - dy * dy / rB2) * rA2)); - var newX = cx + (dx2 + item.len2) * dir3; - var deltaX = newX - item.label.x; - var newTargetWidth = item.targetTextWidth - deltaX * dir3; - constrainTextWidth(item, newTargetWidth, true); - item.label.x = newX; - } - } - function recalculateX(items) { - var topSemi = { - list: [], - maxY: 0 - }; - var bottomSemi = { - list: [], - maxY: 0 - }; - for (var i2 = 0; i2 < items.length; i2++) { - if (items[i2].labelAlignTo !== "none") { - continue; - } - var item = items[i2]; - var semi = item.label.y > cy ? bottomSemi : topSemi; - var dy = Math.abs(item.label.y - cy); - if (dy >= semi.maxY) { - var dx2 = item.label.x - cx - item.len2 * dir3; - var rA = r + item.len; - var rB = Math.abs(dx2) < rA ? Math.sqrt(dy * dy / (1 - dx2 * dx2 / rA / rA)) : rA; - semi.rB = rB; - semi.maxY = dy; - } - semi.list.push(item); - } - recalculateXOnSemiToAlignOnEllipseCurve(topSemi); - recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi); - } - var len2 = list.length; - for (var i = 0; i < len2; i++) { - if (list[i].position === "outer" && list[i].labelAlignTo === "labelLine") { - var dx = list[i].label.x - farthestX; - list[i].linePoints[1][0] += dx; - list[i].label.x = farthestX; - } - } - if (shiftLayoutOnY(list, viewTop, viewTop + viewHeight)) { - recalculateX(list); - } - } - function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) { - var leftList = []; - var rightList = []; - var leftmostX = Number.MAX_VALUE; - var rightmostX = -Number.MAX_VALUE; - for (var i = 0; i < labelLayoutList.length; i++) { - var label = labelLayoutList[i].label; - if (isPositionCenter(labelLayoutList[i])) { - continue; - } - if (label.x < cx) { - leftmostX = Math.min(leftmostX, label.x); - leftList.push(labelLayoutList[i]); - } else { - rightmostX = Math.max(rightmostX, label.x); - rightList.push(labelLayoutList[i]); - } - } - for (var i = 0; i < labelLayoutList.length; i++) { - var layout5 = labelLayoutList[i]; - if (!isPositionCenter(layout5) && layout5.linePoints) { - if (layout5.labelStyleWidth != null) { - continue; - } - var label = layout5.label; - var linePoints = layout5.linePoints; - var targetTextWidth = void 0; - if (layout5.labelAlignTo === "edge") { - if (label.x < cx) { - targetTextWidth = linePoints[2][0] - layout5.labelDistance - viewLeft - layout5.edgeDistance; - } else { - targetTextWidth = viewLeft + viewWidth - layout5.edgeDistance - linePoints[2][0] - layout5.labelDistance; - } - } else if (layout5.labelAlignTo === "labelLine") { - if (label.x < cx) { - targetTextWidth = leftmostX - viewLeft - layout5.bleedMargin; - } else { - targetTextWidth = viewLeft + viewWidth - rightmostX - layout5.bleedMargin; - } - } else { - if (label.x < cx) { - targetTextWidth = label.x - viewLeft - layout5.bleedMargin; - } else { - targetTextWidth = viewLeft + viewWidth - label.x - layout5.bleedMargin; - } - } - layout5.targetTextWidth = targetTextWidth; - constrainTextWidth(layout5, targetTextWidth); - } - } - adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX); - adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX); - for (var i = 0; i < labelLayoutList.length; i++) { - var layout5 = labelLayoutList[i]; - if (!isPositionCenter(layout5) && layout5.linePoints) { - var label = layout5.label; - var linePoints = layout5.linePoints; - var isAlignToEdge = layout5.labelAlignTo === "edge"; - var padding = label.style.padding; - var paddingH = padding ? padding[1] + padding[3] : 0; - var extraPaddingH = label.style.backgroundColor ? 0 : paddingH; - var realTextWidth = layout5.rect.width + extraPaddingH; - var dist3 = linePoints[1][0] - linePoints[2][0]; - if (isAlignToEdge) { - if (label.x < cx) { - linePoints[2][0] = viewLeft + layout5.edgeDistance + realTextWidth + layout5.labelDistance; - } else { - linePoints[2][0] = viewLeft + viewWidth - layout5.edgeDistance - realTextWidth - layout5.labelDistance; - } - } else { - if (label.x < cx) { - linePoints[2][0] = label.x + layout5.labelDistance; - } else { - linePoints[2][0] = label.x - layout5.labelDistance; - } - linePoints[1][0] = linePoints[2][0] + dist3; - } - linePoints[1][1] = linePoints[2][1] = label.y; - } - } - } - function constrainTextWidth(layout5, availableWidth, forceRecalculate) { - if (forceRecalculate === void 0) { - forceRecalculate = false; - } - if (layout5.labelStyleWidth != null) { - return; - } - var label = layout5.label; - var style = label.style; - var textRect = layout5.rect; - var bgColor = style.backgroundColor; - var padding = style.padding; - var paddingH = padding ? padding[1] + padding[3] : 0; - var overflow = style.overflow; - var oldOuterWidth = textRect.width + (bgColor ? 0 : paddingH); - if (availableWidth < oldOuterWidth || forceRecalculate) { - var oldHeight = textRect.height; - if (overflow && overflow.match("break")) { - label.setStyle("backgroundColor", null); - label.setStyle("width", availableWidth - paddingH); - var innerRect = label.getBoundingRect(); - label.setStyle("width", Math.ceil(innerRect.width)); - label.setStyle("backgroundColor", bgColor); - } else { - var availableInnerWidth = availableWidth - paddingH; - var newWidth = availableWidth < oldOuterWidth ? availableInnerWidth : ( - // Current available width is enough, but the text may have - // already been wrapped with a smaller available width. - forceRecalculate ? availableInnerWidth > layout5.unconstrainedWidth ? null : availableInnerWidth : null - ); - label.setStyle("width", newWidth); - } - var newRect = label.getBoundingRect(); - textRect.width = newRect.width; - var margin = (label.style.margin || 0) + 2.1; - textRect.height = newRect.height + margin; - textRect.y -= (textRect.height - oldHeight) / 2; - } - } - function isPositionCenter(sectorShape) { - return sectorShape.position === "center"; - } - function pieLabelLayout(seriesModel) { - var data = seriesModel.getData(); - var labelLayoutList = []; - var cx; - var cy; - var hasLabelRotate = false; - var minShowLabelRadian = (seriesModel.get("minShowLabelAngle") || 0) * RADIAN2; - var viewRect2 = data.getLayout("viewRect"); - var r = data.getLayout("r"); - var viewWidth = viewRect2.width; - var viewLeft = viewRect2.x; - var viewTop = viewRect2.y; - var viewHeight = viewRect2.height; - function setNotShow(el) { - el.ignore = true; - } - function isLabelShown(label2) { - if (!label2.ignore) { - return true; - } - for (var key in label2.states) { - if (label2.states[key].ignore === false) { - return true; - } - } - return false; - } - data.each(function(idx) { - var sector = data.getItemGraphicEl(idx); - var sectorShape = sector.shape; - var label2 = sector.getTextContent(); - var labelLine2 = sector.getTextGuideLine(); - var itemModel = data.getItemModel(idx); - var labelModel = itemModel.getModel("label"); - var labelPosition = labelModel.get("position") || itemModel.get(["emphasis", "label", "position"]); - var labelDistance = labelModel.get("distanceToLabelLine"); - var labelAlignTo = labelModel.get("alignTo"); - var edgeDistance = parsePercent2(labelModel.get("edgeDistance"), viewWidth); - var bleedMargin = labelModel.get("bleedMargin"); - var labelLineModel = itemModel.getModel("labelLine"); - var labelLineLen = labelLineModel.get("length"); - labelLineLen = parsePercent2(labelLineLen, viewWidth); - var labelLineLen2 = labelLineModel.get("length2"); - labelLineLen2 = parsePercent2(labelLineLen2, viewWidth); - if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) { - each(label2.states, setNotShow); - label2.ignore = true; - if (labelLine2) { - each(labelLine2.states, setNotShow); - labelLine2.ignore = true; - } - return; - } - if (!isLabelShown(label2)) { - return; - } - var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2; - var nx = Math.cos(midAngle); - var ny = Math.sin(midAngle); - var textX; - var textY; - var linePoints2; - var textAlign; - cx = sectorShape.cx; - cy = sectorShape.cy; - var isLabelInside = labelPosition === "inside" || labelPosition === "inner"; - if (labelPosition === "center") { - textX = sectorShape.cx; - textY = sectorShape.cy; - textAlign = "center"; - } else { - var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx; - var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy; - textX = x1 + nx * 3; - textY = y1 + ny * 3; - if (!isLabelInside) { - var x2 = x1 + nx * (labelLineLen + r - sectorShape.r); - var y2 = y1 + ny * (labelLineLen + r - sectorShape.r); - var x3 = x2 + (nx < 0 ? -1 : 1) * labelLineLen2; - var y3 = y2; - if (labelAlignTo === "edge") { - textX = nx < 0 ? viewLeft + edgeDistance : viewLeft + viewWidth - edgeDistance; - } else { - textX = x3 + (nx < 0 ? -labelDistance : labelDistance); - } - textY = y3; - linePoints2 = [[x1, y1], [x2, y2], [x3, y3]]; - } - textAlign = isLabelInside ? "center" : labelAlignTo === "edge" ? nx > 0 ? "right" : "left" : nx > 0 ? "left" : "right"; - } - var PI11 = Math.PI; - var labelRotate = 0; - var rotate2 = labelModel.get("rotate"); - if (isNumber(rotate2)) { - labelRotate = rotate2 * (PI11 / 180); - } else if (labelPosition === "center") { - labelRotate = 0; - } else if (rotate2 === "radial" || rotate2 === true) { - var radialAngle = nx < 0 ? -midAngle + PI11 : -midAngle; - labelRotate = radialAngle; - } else if (rotate2 === "tangential" && labelPosition !== "outside" && labelPosition !== "outer") { - var rad = Math.atan2(nx, ny); - if (rad < 0) { - rad = PI11 * 2 + rad; - } - var isDown = ny > 0; - if (isDown) { - rad = PI11 + rad; - } - labelRotate = rad - PI11; - } - hasLabelRotate = !!labelRotate; - label2.x = textX; - label2.y = textY; - label2.rotation = labelRotate; - label2.setStyle({ - verticalAlign: "middle" - }); - if (!isLabelInside) { - var textRect = label2.getBoundingRect().clone(); - textRect.applyTransform(label2.getComputedTransform()); - var margin = (label2.style.margin || 0) + 2.1; - textRect.y -= margin / 2; - textRect.height += margin; - labelLayoutList.push({ - label: label2, - labelLine: labelLine2, - position: labelPosition, - len: labelLineLen, - len2: labelLineLen2, - minTurnAngle: labelLineModel.get("minTurnAngle"), - maxSurfaceAngle: labelLineModel.get("maxSurfaceAngle"), - surfaceNormal: new Point_default(nx, ny), - linePoints: linePoints2, - textAlign, - labelDistance, - labelAlignTo, - edgeDistance, - bleedMargin, - rect: textRect, - unconstrainedWidth: textRect.width, - labelStyleWidth: label2.style.width - }); - } else { - label2.setStyle({ - align: textAlign - }); - var selectState2 = label2.states.select; - if (selectState2) { - selectState2.x += label2.x; - selectState2.y += label2.y; - } - } - sector.setTextConfig({ - inside: isLabelInside - }); - }); - if (!hasLabelRotate && seriesModel.get("avoidLabelOverlap")) { - avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop); - } - for (var i = 0; i < labelLayoutList.length; i++) { - var layout5 = labelLayoutList[i]; - var label = layout5.label; - var labelLine = layout5.labelLine; - var notShowLabel = isNaN(label.x) || isNaN(label.y); - if (label) { - label.setStyle({ - align: layout5.textAlign - }); - if (notShowLabel) { - each(label.states, setNotShow); - label.ignore = true; - } - var selectState = label.states.select; - if (selectState) { - selectState.x += label.x; - selectState.y += label.y; - } - } - if (labelLine) { - var linePoints = layout5.linePoints; - if (notShowLabel || !linePoints) { - each(labelLine.states, setNotShow); - labelLine.ignore = true; - } else { - limitTurnAngle(linePoints, layout5.minTurnAngle); - limitSurfaceAngle(linePoints, layout5.surfaceNormal, layout5.maxSurfaceAngle); - labelLine.setShape({ - points: linePoints - }); - label.__hostTarget.textGuideLineConfig = { - anchor: new Point_default(linePoints[0][0], linePoints[0][1]) - }; - } - } - } - } - - // node_modules/echarts/lib/chart/pie/PieView.js - var PiePiece = ( - /** @class */ - function(_super) { - __extends(PiePiece2, _super); - function PiePiece2(data, idx, startAngle) { - var _this = _super.call(this) || this; - _this.z2 = 2; - var text = new Text_default(); - _this.setTextContent(text); - _this.updateData(data, idx, startAngle, true); - return _this; - } - PiePiece2.prototype.updateData = function(data, idx, startAngle, firstCreate) { - var sector = this; - var seriesModel = data.hostModel; - var itemModel = data.getItemModel(idx); - var emphasisModel = itemModel.getModel("emphasis"); - var layout5 = data.getItemLayout(idx); - var sectorShape = extend(getSectorCornerRadius(itemModel.getModel("itemStyle"), layout5, true), layout5); - if (isNaN(sectorShape.startAngle)) { - sector.setShape(sectorShape); - return; - } - if (firstCreate) { - sector.setShape(sectorShape); - var animationType = seriesModel.getShallow("animationType"); - if (seriesModel.ecModel.ssr) { - initProps(sector, { - scaleX: 0, - scaleY: 0 - }, seriesModel, { - dataIndex: idx, - isFrom: true - }); - sector.originX = sectorShape.cx; - sector.originY = sectorShape.cy; - } else if (animationType === "scale") { - sector.shape.r = layout5.r0; - initProps(sector, { - shape: { - r: layout5.r - } - }, seriesModel, idx); - } else { - if (startAngle != null) { - sector.setShape({ - startAngle, - endAngle: startAngle - }); - initProps(sector, { - shape: { - startAngle: layout5.startAngle, - endAngle: layout5.endAngle - } - }, seriesModel, idx); - } else { - sector.shape.endAngle = layout5.startAngle; - updateProps(sector, { - shape: { - endAngle: layout5.endAngle - } - }, seriesModel, idx); - } - } - } else { - saveOldStyle(sector); - updateProps(sector, { - shape: sectorShape - }, seriesModel, idx); - } - sector.useStyle(data.getItemVisual(idx, "style")); - setStatesStylesFromModel(sector, itemModel); - var midAngle = (layout5.startAngle + layout5.endAngle) / 2; - var offset3 = seriesModel.get("selectedOffset"); - var dx = Math.cos(midAngle) * offset3; - var dy = Math.sin(midAngle) * offset3; - var cursorStyle = itemModel.getShallow("cursor"); - cursorStyle && sector.attr("cursor", cursorStyle); - this._updateLabel(seriesModel, data, idx); - sector.ensureState("emphasis").shape = extend({ - r: layout5.r + (emphasisModel.get("scale") ? emphasisModel.get("scaleSize") || 0 : 0) - }, getSectorCornerRadius(emphasisModel.getModel("itemStyle"), layout5)); - extend(sector.ensureState("select"), { - x: dx, - y: dy, - shape: getSectorCornerRadius(itemModel.getModel(["select", "itemStyle"]), layout5) - }); - extend(sector.ensureState("blur"), { - shape: getSectorCornerRadius(itemModel.getModel(["blur", "itemStyle"]), layout5) - }); - var labelLine = sector.getTextGuideLine(); - var labelText = sector.getTextContent(); - labelLine && extend(labelLine.ensureState("select"), { - x: dx, - y: dy - }); - extend(labelText.ensureState("select"), { - x: dx, - y: dy - }); - toggleHoverEmphasis(this, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - }; - PiePiece2.prototype._updateLabel = function(seriesModel, data, idx) { - var sector = this; - var itemModel = data.getItemModel(idx); - var labelLineModel = itemModel.getModel("labelLine"); - var style = data.getItemVisual(idx, "style"); - var visualColor = style && style.fill; - var visualOpacity = style && style.opacity; - setLabelStyle(sector, getLabelStatesModels(itemModel), { - labelFetcher: data.hostModel, - labelDataIndex: idx, - inheritColor: visualColor, - defaultOpacity: visualOpacity, - defaultText: seriesModel.getFormattedLabel(idx, "normal") || data.getName(idx) - }); - var labelText = sector.getTextContent(); - sector.setTextConfig({ - // reset position, rotation - position: null, - rotation: null - }); - labelText.attr({ - z2: 10 - }); - var labelPosition = seriesModel.get(["label", "position"]); - if (labelPosition !== "outside" && labelPosition !== "outer") { - sector.removeTextGuideLine(); - } else { - var polyline = this.getTextGuideLine(); - if (!polyline) { - polyline = new Polyline_default(); - this.setTextGuideLine(polyline); - } - setLabelLineStyle(this, getLabelLineStatesModels(itemModel), { - stroke: visualColor, - opacity: retrieve3(labelLineModel.get(["lineStyle", "opacity"]), visualOpacity, 1) - }); - } - }; - return PiePiece2; - }(Sector_default) - ); - var PieView = ( - /** @class */ - function(_super) { - __extends(PieView2, _super); - function PieView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ignoreLabelLineUpdate = true; - return _this; - } - PieView2.prototype.render = function(seriesModel, ecModel, api, payload) { - var data = seriesModel.getData(); - var oldData = this._data; - var group = this.group; - var startAngle; - if (!oldData && data.count() > 0) { - var shape = data.getItemLayout(0); - for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) { - shape = data.getItemLayout(s); - } - if (shape) { - startAngle = shape.startAngle; - } - } - if (this._emptyCircleSector) { - group.remove(this._emptyCircleSector); - } - if (data.count() === 0 && seriesModel.get("showEmptyCircle")) { - var layoutData = getSeriesLayoutData(seriesModel); - var sector = new Sector_default({ - shape: extend(getBasicPieLayout(seriesModel, api), layoutData) - }); - sector.useStyle(seriesModel.getModel("emptyCircleStyle").getItemStyle()); - this._emptyCircleSector = sector; - group.add(sector); - } - data.diff(oldData).add(function(idx) { - var piePiece = new PiePiece(data, idx, startAngle); - data.setItemGraphicEl(idx, piePiece); - group.add(piePiece); - }).update(function(newIdx, oldIdx) { - var piePiece = oldData.getItemGraphicEl(oldIdx); - piePiece.updateData(data, newIdx, startAngle); - piePiece.off("click"); - group.add(piePiece); - data.setItemGraphicEl(newIdx, piePiece); - }).remove(function(idx) { - var piePiece = oldData.getItemGraphicEl(idx); - removeElementWithFadeOut(piePiece, seriesModel, idx); - }).execute(); - pieLabelLayout(seriesModel); - if (seriesModel.get("animationTypeUpdate") !== "expansion") { - this._data = data; - } - }; - PieView2.prototype.dispose = function() { - }; - PieView2.prototype.containPoint = function(point, seriesModel) { - var data = seriesModel.getData(); - var itemLayout = data.getItemLayout(0); - if (itemLayout) { - var dx = point[0] - itemLayout.cx; - var dy = point[1] - itemLayout.cy; - var radius = Math.sqrt(dx * dx + dy * dy); - return radius <= itemLayout.r && radius >= itemLayout.r0; - } - }; - PieView2.type = "pie"; - return PieView2; - }(Chart_default) - ); - var PieView_default = PieView; - - // node_modules/echarts/lib/chart/helper/createSeriesDataSimply.js - function createSeriesDataSimply(seriesModel, opt, nameList) { - opt = isArray(opt) && { - coordDimensions: opt - } || extend({ - encodeDefine: seriesModel.getEncode() - }, opt); - var source = seriesModel.getSource(); - var dimensions = prepareSeriesDataSchema(source, opt).dimensions; - var list = new SeriesData_default(dimensions, seriesModel); - list.initData(source, nameList); - return list; - } - - // node_modules/echarts/lib/visual/LegendVisualProvider.js - var LegendVisualProvider = ( - /** @class */ - function() { - function LegendVisualProvider2(getDataWithEncodedVisual, getRawData2) { - this._getDataWithEncodedVisual = getDataWithEncodedVisual; - this._getRawData = getRawData2; - } - LegendVisualProvider2.prototype.getAllNames = function() { - var rawData = this._getRawData(); - return rawData.mapArray(rawData.getName); - }; - LegendVisualProvider2.prototype.containName = function(name) { - var rawData = this._getRawData(); - return rawData.indexOfName(name) >= 0; - }; - LegendVisualProvider2.prototype.indexOfName = function(name) { - var dataWithEncodedVisual = this._getDataWithEncodedVisual(); - return dataWithEncodedVisual.indexOfName(name); - }; - LegendVisualProvider2.prototype.getItemVisual = function(dataIndex, key) { - var dataWithEncodedVisual = this._getDataWithEncodedVisual(); - return dataWithEncodedVisual.getItemVisual(dataIndex, key); - }; - return LegendVisualProvider2; - }() - ); - var LegendVisualProvider_default = LegendVisualProvider; - - // node_modules/echarts/lib/chart/pie/PieSeries.js - var innerData = makeInner(); - var PieSeriesModel = ( - /** @class */ - function(_super) { - __extends(PieSeriesModel2, _super); - function PieSeriesModel2() { - return _super !== null && _super.apply(this, arguments) || this; - } - PieSeriesModel2.prototype.init = function(option) { - _super.prototype.init.apply(this, arguments); - this.legendVisualProvider = new LegendVisualProvider_default(bind(this.getData, this), bind(this.getRawData, this)); - this._defaultLabelLine(option); - }; - PieSeriesModel2.prototype.mergeOption = function() { - _super.prototype.mergeOption.apply(this, arguments); - }; - PieSeriesModel2.prototype.getInitialData = function() { - return createSeriesDataSimply(this, { - coordDimensions: ["value"], - encodeDefaulter: curry(makeSeriesEncodeForNameBased, this) - }); - }; - PieSeriesModel2.prototype.getDataParams = function(dataIndex) { - var data = this.getData(); - var dataInner = innerData(data); - var seats = dataInner.seats; - if (!seats) { - var valueList_1 = []; - data.each(data.mapDimension("value"), function(value) { - valueList_1.push(value); - }); - seats = dataInner.seats = getPercentSeats(valueList_1, data.hostModel.get("percentPrecision")); - } - var params = _super.prototype.getDataParams.call(this, dataIndex); - params.percent = seats[dataIndex] || 0; - params.$vars.push("percent"); - return params; - }; - PieSeriesModel2.prototype._defaultLabelLine = function(option) { - defaultEmphasis(option, "labelLine", ["show"]); - var labelLineNormalOpt = option.labelLine; - var labelLineEmphasisOpt = option.emphasis.labelLine; - labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show; - labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show; - }; - PieSeriesModel2.type = "series.pie"; - PieSeriesModel2.defaultOption = { - // zlevel: 0, - z: 2, - legendHoverLink: true, - colorBy: "data", - // 默认全局居中 - center: ["50%", "50%"], - radius: [0, "75%"], - // 默认顺时针 - clockwise: true, - startAngle: 90, - endAngle: "auto", - padAngle: 0, - // 最小角度改为0 - minAngle: 0, - // If the angle of a sector less than `minShowLabelAngle`, - // the label will not be displayed. - minShowLabelAngle: 0, - // 选中时扇区偏移量 - selectedOffset: 10, - // 选择模式,默认关闭,可选single,multiple - // selectedMode: false, - // 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积) - // roseType: null, - percentPrecision: 2, - // If still show when all data zero. - stillShowZeroSum: true, - // cursor: null, - left: 0, - top: 0, - right: 0, - bottom: 0, - width: null, - height: null, - label: { - // color: 'inherit', - // If rotate around circle - rotate: 0, - show: true, - overflow: "truncate", - // 'outer', 'inside', 'center' - position: "outer", - // 'none', 'labelLine', 'edge'. Works only when position is 'outer' - alignTo: "none", - // Closest distance between label and chart edge. - // Works only position is 'outer' and alignTo is 'edge'. - edgeDistance: "25%", - // Works only position is 'outer' and alignTo is not 'edge'. - bleedMargin: 10, - // Distance between text and label line. - distanceToLabelLine: 5 - // formatter: 标签文本格式器,同 tooltip.formatter,不支持异步回调 - // 默认使用全局文本样式,详见 textStyle - // distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数 - }, - // Enabled when label.normal.position is 'outer' - labelLine: { - show: true, - // 引导线两段中的第一段长度 - length: 15, - // 引导线两段中的第二段长度 - length2: 15, - smooth: false, - minTurnAngle: 90, - maxSurfaceAngle: 90, - lineStyle: { - // color: 各异, - width: 1, - type: "solid" - } - }, - itemStyle: { - borderWidth: 1, - borderJoin: "round" - }, - showEmptyCircle: true, - emptyCircleStyle: { - color: "lightgray", - opacity: 1 - }, - labelLayout: { - // Hide the overlapped label. - hideOverlap: true - }, - emphasis: { - scale: true, - scaleSize: 5 - }, - // If use strategy to avoid label overlapping - avoidLabelOverlap: true, - // Animation type. Valid values: expansion, scale - animationType: "expansion", - animationDuration: 1e3, - // Animation type when update. Valid values: transition, expansion - animationTypeUpdate: "transition", - animationEasingUpdate: "cubicInOut", - animationDurationUpdate: 500, - animationEasing: "cubicInOut" - }; - return PieSeriesModel2; - }(Series_default) - ); - var PieSeries_default = PieSeriesModel; - - // node_modules/echarts/lib/processor/negativeDataFilter.js - function negativeDataFilter(seriesType2) { - return { - seriesType: seriesType2, - reset: function(seriesModel, ecModel) { - var data = seriesModel.getData(); - data.filterSelf(function(idx) { - var valueDim = data.mapDimension("value"); - var curValue = data.get(valueDim, idx); - if (isNumber(curValue) && !isNaN(curValue) && curValue < 0) { - return false; - } - return true; - }); - } - }; - } - - // node_modules/echarts/lib/chart/pie/install.js - function install5(registers) { - registers.registerChartView(PieView_default); - registers.registerSeriesModel(PieSeries_default); - createLegacyDataSelectAction("pie", registers.registerAction); - registers.registerLayout(curry(pieLayout, "pie")); - registers.registerProcessor(dataFilter("pie")); - registers.registerProcessor(negativeDataFilter("pie")); - } - - // node_modules/echarts/lib/chart/scatter/ScatterSeries.js - var ScatterSeriesModel = ( - /** @class */ - function(_super) { - __extends(ScatterSeriesModel2, _super); - function ScatterSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ScatterSeriesModel2.type; - _this.hasSymbolVisual = true; - return _this; - } - ScatterSeriesModel2.prototype.getInitialData = function(option, ecModel) { - return createSeriesData_default(null, this, { - useEncodeDefaulter: true - }); - }; - ScatterSeriesModel2.prototype.getProgressive = function() { - var progressive = this.option.progressive; - if (progressive == null) { - return this.option.large ? 5e3 : this.get("progressive"); - } - return progressive; - }; - ScatterSeriesModel2.prototype.getProgressiveThreshold = function() { - var progressiveThreshold = this.option.progressiveThreshold; - if (progressiveThreshold == null) { - return this.option.large ? 1e4 : this.get("progressiveThreshold"); - } - return progressiveThreshold; - }; - ScatterSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) { - return selectors.point(data.getItemLayout(dataIndex)); - }; - ScatterSeriesModel2.prototype.getZLevelKey = function() { - return this.getData().count() > this.getProgressiveThreshold() ? this.id : ""; - }; - ScatterSeriesModel2.type = "series.scatter"; - ScatterSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"]; - ScatterSeriesModel2.defaultOption = { - coordinateSystem: "cartesian2d", - // zlevel: 0, - z: 2, - legendHoverLink: true, - symbolSize: 10, - // symbolRotate: null, // 图形旋转控制 - large: false, - // Available when large is true - largeThreshold: 2e3, - // cursor: null, - itemStyle: { - opacity: 0.8 - // color: 各异 - }, - emphasis: { - scale: true - }, - // If clip the overflow graphics - // Works on cartesian / polar series - clip: true, - select: { - itemStyle: { - borderColor: "#212121" - } - }, - universalTransition: { - divideShape: "clone" - } - // progressive: null - }; - return ScatterSeriesModel2; - }(Series_default) - ); - var ScatterSeries_default = ScatterSeriesModel; - - // node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js - var BOOST_SIZE_THRESHOLD = 4; - var LargeSymbolPathShape = ( - /** @class */ - /* @__PURE__ */ function() { - function LargeSymbolPathShape2() { - } - return LargeSymbolPathShape2; - }() - ); - var LargeSymbolPath = ( - /** @class */ - function(_super) { - __extends(LargeSymbolPath2, _super); - function LargeSymbolPath2(opts) { - var _this = _super.call(this, opts) || this; - _this._off = 0; - _this.hoverDataIdx = -1; - return _this; - } - LargeSymbolPath2.prototype.getDefaultShape = function() { - return new LargeSymbolPathShape(); - }; - LargeSymbolPath2.prototype.reset = function() { - this.notClear = false; - this._off = 0; - }; - LargeSymbolPath2.prototype.buildPath = function(path, shape) { - var points4 = shape.points; - var size2 = shape.size; - var symbolProxy = this.symbolProxy; - var symbolProxyShape = symbolProxy.shape; - var ctx = path.getContext ? path.getContext() : path; - var canBoost = ctx && size2[0] < BOOST_SIZE_THRESHOLD; - var softClipShape = this.softClipShape; - var i; - if (canBoost) { - this._ctx = ctx; - return; - } - this._ctx = null; - for (i = this._off; i < points4.length; ) { - var x = points4[i++]; - var y = points4[i++]; - if (isNaN(x) || isNaN(y)) { - continue; - } - if (softClipShape && !softClipShape.contain(x, y)) { - continue; - } - symbolProxyShape.x = x - size2[0] / 2; - symbolProxyShape.y = y - size2[1] / 2; - symbolProxyShape.width = size2[0]; - symbolProxyShape.height = size2[1]; - symbolProxy.buildPath(path, symbolProxyShape, true); - } - if (this.incremental) { - this._off = i; - this.notClear = true; - } - }; - LargeSymbolPath2.prototype.afterBrush = function() { - var shape = this.shape; - var points4 = shape.points; - var size2 = shape.size; - var ctx = this._ctx; - var softClipShape = this.softClipShape; - var i; - if (!ctx) { - return; - } - for (i = this._off; i < points4.length; ) { - var x = points4[i++]; - var y = points4[i++]; - if (isNaN(x) || isNaN(y)) { - continue; - } - if (softClipShape && !softClipShape.contain(x, y)) { - continue; - } - ctx.fillRect(x - size2[0] / 2, y - size2[1] / 2, size2[0], size2[1]); - } - if (this.incremental) { - this._off = i; - this.notClear = true; - } - }; - LargeSymbolPath2.prototype.findDataIndex = function(x, y) { - var shape = this.shape; - var points4 = shape.points; - var size2 = shape.size; - var w = Math.max(size2[0], 4); - var h = Math.max(size2[1], 4); - for (var idx = points4.length / 2 - 1; idx >= 0; idx--) { - var i = idx * 2; - var x0 = points4[i] - w / 2; - var y0 = points4[i + 1] - h / 2; - if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) { - return idx; - } - } - return -1; - }; - LargeSymbolPath2.prototype.contain = function(x, y) { - var localPos = this.transformCoordToLocal(x, y); - var rect = this.getBoundingRect(); - x = localPos[0]; - y = localPos[1]; - if (rect.contain(x, y)) { - var dataIdx = this.hoverDataIdx = this.findDataIndex(x, y); - return dataIdx >= 0; - } - this.hoverDataIdx = -1; - return false; - }; - LargeSymbolPath2.prototype.getBoundingRect = function() { - var rect = this._rect; - if (!rect) { - var shape = this.shape; - var points4 = shape.points; - var size2 = shape.size; - var w = size2[0]; - var h = size2[1]; - var minX = Infinity; - var minY = Infinity; - var maxX = -Infinity; - var maxY = -Infinity; - for (var i = 0; i < points4.length; ) { - var x = points4[i++]; - var y = points4[i++]; - minX = Math.min(x, minX); - maxX = Math.max(x, maxX); - minY = Math.min(y, minY); - maxY = Math.max(y, maxY); - } - rect = this._rect = new BoundingRect_default(minX - w / 2, minY - h / 2, maxX - minX + w, maxY - minY + h); - } - return rect; - }; - return LargeSymbolPath2; - }(Path_default) - ); - var LargeSymbolDraw = ( - /** @class */ - function() { - function LargeSymbolDraw2() { - this.group = new Group_default(); - } - LargeSymbolDraw2.prototype.updateData = function(data, opt) { - this._clear(); - var symbolEl = this._create(); - symbolEl.setShape({ - points: data.getLayout("points") - }); - this._setCommon(symbolEl, data, opt); - }; - LargeSymbolDraw2.prototype.updateLayout = function(data) { - var points4 = data.getLayout("points"); - this.group.eachChild(function(child) { - if (child.startIndex != null) { - var len2 = (child.endIndex - child.startIndex) * 2; - var byteOffset = child.startIndex * 4 * 2; - points4 = new Float32Array(points4.buffer, byteOffset, len2); - } - child.setShape("points", points4); - child.reset(); - }); - }; - LargeSymbolDraw2.prototype.incrementalPrepareUpdate = function(data) { - this._clear(); - }; - LargeSymbolDraw2.prototype.incrementalUpdate = function(taskParams, data, opt) { - var lastAdded = this._newAdded[0]; - var points4 = data.getLayout("points"); - var oldPoints = lastAdded && lastAdded.shape.points; - if (oldPoints && oldPoints.length < 2e4) { - var oldLen = oldPoints.length; - var newPoints = new Float32Array(oldLen + points4.length); - newPoints.set(oldPoints); - newPoints.set(points4, oldLen); - lastAdded.endIndex = taskParams.end; - lastAdded.setShape({ - points: newPoints - }); - } else { - this._newAdded = []; - var symbolEl = this._create(); - symbolEl.startIndex = taskParams.start; - symbolEl.endIndex = taskParams.end; - symbolEl.incremental = true; - symbolEl.setShape({ - points: points4 - }); - this._setCommon(symbolEl, data, opt); - } - }; - LargeSymbolDraw2.prototype.eachRendered = function(cb) { - this._newAdded[0] && cb(this._newAdded[0]); - }; - LargeSymbolDraw2.prototype._create = function() { - var symbolEl = new LargeSymbolPath({ - cursor: "default" - }); - symbolEl.ignoreCoarsePointer = true; - this.group.add(symbolEl); - this._newAdded.push(symbolEl); - return symbolEl; - }; - LargeSymbolDraw2.prototype._setCommon = function(symbolEl, data, opt) { - var hostModel = data.hostModel; - opt = opt || {}; - var size2 = data.getVisual("symbolSize"); - symbolEl.setShape("size", size2 instanceof Array ? size2 : [size2, size2]); - symbolEl.softClipShape = opt.clipShape || null; - symbolEl.symbolProxy = createSymbol(data.getVisual("symbol"), 0, 0, 0, 0); - symbolEl.setColor = symbolEl.symbolProxy.setColor; - var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD; - symbolEl.useStyle( - // Draw shadow when doing fillRect is extremely slow. - hostModel.getModel("itemStyle").getItemStyle(extrudeShadow ? ["color", "shadowBlur", "shadowColor"] : ["color"]) - ); - var globalStyle = data.getVisual("style"); - var visualColor = globalStyle && globalStyle.fill; - if (visualColor) { - symbolEl.setColor(visualColor); - } - var ecData = getECData(symbolEl); - ecData.seriesIndex = hostModel.seriesIndex; - symbolEl.on("mousemove", function(e2) { - ecData.dataIndex = null; - var dataIndex = symbolEl.hoverDataIdx; - if (dataIndex >= 0) { - ecData.dataIndex = dataIndex + (symbolEl.startIndex || 0); - } - }); - }; - LargeSymbolDraw2.prototype.remove = function() { - this._clear(); - }; - LargeSymbolDraw2.prototype._clear = function() { - this._newAdded = []; - this.group.removeAll(); - }; - return LargeSymbolDraw2; - }() - ); - var LargeSymbolDraw_default = LargeSymbolDraw; - - // node_modules/echarts/lib/chart/scatter/ScatterView.js - var ScatterView = ( - /** @class */ - function(_super) { - __extends(ScatterView2, _super); - function ScatterView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ScatterView2.type; - return _this; - } - ScatterView2.prototype.render = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var symbolDraw = this._updateSymbolDraw(data, seriesModel); - symbolDraw.updateData(data, { - // TODO - // If this parameter should be a shape or a bounding volume - // shape will be more general. - // But bounding volume like bounding rect will be much faster in the contain calculation - clipShape: this._getClipShape(seriesModel) - }); - this._finished = true; - }; - ScatterView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var symbolDraw = this._updateSymbolDraw(data, seriesModel); - symbolDraw.incrementalPrepareUpdate(data); - this._finished = false; - }; - ScatterView2.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) { - this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), { - clipShape: this._getClipShape(seriesModel) - }); - this._finished = taskParams.end === seriesModel.getData().count(); - }; - ScatterView2.prototype.updateTransform = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - this.group.dirty(); - if (!this._finished || data.count() > 1e4) { - return { - update: true - }; - } else { - var res = pointsLayout("").reset(seriesModel, ecModel, api); - if (res.progress) { - res.progress({ - start: 0, - end: data.count(), - count: data.count() - }, data); - } - this._symbolDraw.updateLayout(data); - } - }; - ScatterView2.prototype.eachRendered = function(cb) { - this._symbolDraw && this._symbolDraw.eachRendered(cb); - }; - ScatterView2.prototype._getClipShape = function(seriesModel) { - if (!seriesModel.get("clip", true)) { - return; - } - var coordSys = seriesModel.coordinateSystem; - return coordSys && coordSys.getArea && coordSys.getArea(0.1); - }; - ScatterView2.prototype._updateSymbolDraw = function(data, seriesModel) { - var symbolDraw = this._symbolDraw; - var pipelineContext = seriesModel.pipelineContext; - var isLargeDraw = pipelineContext.large; - if (!symbolDraw || isLargeDraw !== this._isLargeDraw) { - symbolDraw && symbolDraw.remove(); - symbolDraw = this._symbolDraw = isLargeDraw ? new LargeSymbolDraw_default() : new SymbolDraw_default(); - this._isLargeDraw = isLargeDraw; - this.group.removeAll(); - } - this.group.add(symbolDraw.group); - return symbolDraw; - }; - ScatterView2.prototype.remove = function(ecModel, api) { - this._symbolDraw && this._symbolDraw.remove(true); - this._symbolDraw = null; - }; - ScatterView2.prototype.dispose = function() { - }; - ScatterView2.type = "scatter"; - return ScatterView2; - }(Chart_default) - ); - var ScatterView_default = ScatterView; - - // node_modules/echarts/lib/coord/cartesian/GridModel.js - var GridModel = ( - /** @class */ - function(_super) { - __extends(GridModel2, _super); - function GridModel2() { - return _super !== null && _super.apply(this, arguments) || this; - } - GridModel2.type = "grid"; - GridModel2.dependencies = ["xAxis", "yAxis"]; - GridModel2.layoutMode = "box"; - GridModel2.defaultOption = { - show: false, - // zlevel: 0, - z: 0, - left: "10%", - top: 60, - right: "10%", - bottom: 70, - // If grid size contain label - containLabel: false, - // width: {totalWidth} - left - right, - // height: {totalHeight} - top - bottom, - backgroundColor: "rgba(0,0,0,0)", - borderWidth: 1, - borderColor: "#ccc" - }; - return GridModel2; - }(Component_default) - ); - var GridModel_default = GridModel; - - // node_modules/echarts/lib/coord/cartesian/AxisModel.js - var CartesianAxisModel = ( - /** @class */ - function(_super) { - __extends(CartesianAxisModel2, _super); - function CartesianAxisModel2() { - return _super !== null && _super.apply(this, arguments) || this; - } - CartesianAxisModel2.prototype.getCoordSysModel = function() { - return this.getReferringComponents("grid", SINGLE_REFERRING).models[0]; - }; - CartesianAxisModel2.type = "cartesian2dAxis"; - return CartesianAxisModel2; - }(Component_default) - ); - mixin(CartesianAxisModel, AxisModelCommonMixin); - - // node_modules/echarts/lib/coord/axisDefault.js - var defaultOption = { - show: true, - // zlevel: 0, - z: 0, - // Inverse the axis. - inverse: false, - // Axis name displayed. - name: "", - // 'start' | 'middle' | 'end' - nameLocation: "end", - // By degree. By default auto rotate by nameLocation. - nameRotate: null, - nameTruncate: { - maxWidth: null, - ellipsis: "...", - placeholder: "." - }, - // Use global text style by default. - nameTextStyle: {}, - // The gap between axisName and axisLine. - nameGap: 15, - // Default `false` to support tooltip. - silent: false, - // Default `false` to avoid legacy user event listener fail. - triggerEvent: false, - tooltip: { - show: false - }, - axisPointer: {}, - axisLine: { - show: true, - onZero: true, - onZeroAxisIndex: null, - lineStyle: { - color: "#6E7079", - width: 1, - type: "solid" - }, - // The arrow at both ends the the axis. - symbol: ["none", "none"], - symbolSize: [10, 15] - }, - axisTick: { - show: true, - // Whether axisTick is inside the grid or outside the grid. - inside: false, - // The length of axisTick. - length: 5, - lineStyle: { - width: 1 - } - }, - axisLabel: { - show: true, - // Whether axisLabel is inside the grid or outside the grid. - inside: false, - rotate: 0, - // true | false | null/undefined (auto) - showMinLabel: null, - // true | false | null/undefined (auto) - showMaxLabel: null, - margin: 8, - // formatter: null, - fontSize: 12 - }, - splitLine: { - show: true, - showMinLine: true, - showMaxLine: true, - lineStyle: { - color: ["#E0E6F1"], - width: 1, - type: "solid" - } - }, - splitArea: { - show: false, - areaStyle: { - color: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"] - } - } - }; - var categoryAxis = merge({ - // The gap at both ends of the axis. For categoryAxis, boolean. - boundaryGap: true, - // Set false to faster category collection. - deduplication: null, - // splitArea: { - // show: false - // }, - splitLine: { - show: false - }, - axisTick: { - // If tick is align with label when boundaryGap is true - alignWithLabel: false, - interval: "auto" - }, - axisLabel: { - interval: "auto" - } - }, defaultOption); - var valueAxis = merge({ - boundaryGap: [0, 0], - axisLine: { - // Not shown when other axis is categoryAxis in cartesian - show: "auto" - }, - axisTick: { - // Not shown when other axis is categoryAxis in cartesian - show: "auto" - }, - // TODO - // min/max: [30, datamin, 60] or [20, datamin] or [datamin, 60] - splitNumber: 5, - minorTick: { - // Minor tick, not available for cateogry axis. - show: false, - // Split number of minor ticks. The value should be in range of (0, 100) - splitNumber: 5, - // Length of minor tick - length: 3, - // Line style - lineStyle: { - // Default to be same with axisTick - } - }, - minorSplitLine: { - show: false, - lineStyle: { - color: "#F4F7FD", - width: 1 - } - } - }, defaultOption); - var timeAxis = merge({ - splitNumber: 6, - axisLabel: { - // To eliminate labels that are not nice - showMinLabel: false, - showMaxLabel: false, - rich: { - primary: { - fontWeight: "bold" - } - } - }, - splitLine: { - show: false - } - }, valueAxis); - var logAxis = defaults({ - logBase: 10 - }, valueAxis); - var axisDefault_default = { - category: categoryAxis, - value: valueAxis, - time: timeAxis, - log: logAxis - }; - - // node_modules/echarts/lib/coord/axisCommonTypes.js - var AXIS_TYPES = { - value: 1, - category: 1, - time: 1, - log: 1 - }; - - // node_modules/echarts/lib/coord/axisModelCreator.js - function axisModelCreator(registers, axisName, BaseAxisModelClass, extraDefaultOption) { - each(AXIS_TYPES, function(v, axisType) { - var defaultOption3 = merge(merge({}, axisDefault_default[axisType], true), extraDefaultOption, true); - var AxisModel = ( - /** @class */ - function(_super) { - __extends(AxisModel2, _super); - function AxisModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = axisName + "Axis." + axisType; - return _this; - } - AxisModel2.prototype.mergeDefaultAndTheme = function(option, ecModel) { - var layoutMode = fetchLayoutMode(this); - var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; - var themeModel = ecModel.getTheme(); - merge(option, themeModel.get(axisType + "Axis")); - merge(option, this.getDefaultOption()); - option.type = getAxisType(option); - if (layoutMode) { - mergeLayoutParam(option, inputPositionParams, layoutMode); - } - }; - AxisModel2.prototype.optionUpdated = function() { - var thisOption = this.option; - if (thisOption.type === "category") { - this.__ordinalMeta = OrdinalMeta_default.createByAxisModel(this); - } - }; - AxisModel2.prototype.getCategories = function(rawData) { - var option = this.option; - if (option.type === "category") { - if (rawData) { - return option.data; - } - return this.__ordinalMeta.categories; - } - }; - AxisModel2.prototype.getOrdinalMeta = function() { - return this.__ordinalMeta; - }; - AxisModel2.type = axisName + "Axis." + axisType; - AxisModel2.defaultOption = defaultOption3; - return AxisModel2; - }(BaseAxisModelClass) - ); - registers.registerComponentModel(AxisModel); - }); - registers.registerSubTypeDefaulter(axisName + "Axis", getAxisType); - } - function getAxisType(option) { - return option.type || (option.data ? "category" : "value"); - } - - // node_modules/echarts/lib/coord/cartesian/Cartesian.js - var Cartesian = ( - /** @class */ - function() { - function Cartesian2(name) { - this.type = "cartesian"; - this._dimList = []; - this._axes = {}; - this.name = name || ""; - } - Cartesian2.prototype.getAxis = function(dim) { - return this._axes[dim]; - }; - Cartesian2.prototype.getAxes = function() { - return map(this._dimList, function(dim) { - return this._axes[dim]; - }, this); - }; - Cartesian2.prototype.getAxesByScale = function(scaleType) { - scaleType = scaleType.toLowerCase(); - return filter(this.getAxes(), function(axis) { - return axis.scale.type === scaleType; - }); - }; - Cartesian2.prototype.addAxis = function(axis) { - var dim = axis.dim; - this._axes[dim] = axis; - this._dimList.push(dim); - }; - return Cartesian2; - }() - ); - var Cartesian_default = Cartesian; - - // node_modules/echarts/lib/coord/cartesian/Cartesian2D.js - var cartesian2DDimensions = ["x", "y"]; - function canCalculateAffineTransform(scale4) { - return scale4.type === "interval" || scale4.type === "time"; - } - var Cartesian2D = ( - /** @class */ - function(_super) { - __extends(Cartesian2D2, _super); - function Cartesian2D2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "cartesian2d"; - _this.dimensions = cartesian2DDimensions; - return _this; - } - Cartesian2D2.prototype.calcAffineTransform = function() { - this._transform = this._invTransform = null; - var xAxisScale = this.getAxis("x").scale; - var yAxisScale = this.getAxis("y").scale; - if (!canCalculateAffineTransform(xAxisScale) || !canCalculateAffineTransform(yAxisScale)) { - return; - } - var xScaleExtent = xAxisScale.getExtent(); - var yScaleExtent = yAxisScale.getExtent(); - var start3 = this.dataToPoint([xScaleExtent[0], yScaleExtent[0]]); - var end2 = this.dataToPoint([xScaleExtent[1], yScaleExtent[1]]); - var xScaleSpan = xScaleExtent[1] - xScaleExtent[0]; - var yScaleSpan = yScaleExtent[1] - yScaleExtent[0]; - if (!xScaleSpan || !yScaleSpan) { - return; - } - var scaleX = (end2[0] - start3[0]) / xScaleSpan; - var scaleY = (end2[1] - start3[1]) / yScaleSpan; - var translateX = start3[0] - xScaleExtent[0] * scaleX; - var translateY = start3[1] - yScaleExtent[0] * scaleY; - var m2 = this._transform = [scaleX, 0, 0, scaleY, translateX, translateY]; - this._invTransform = invert([], m2); - }; - Cartesian2D2.prototype.getBaseAxis = function() { - return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x"); - }; - Cartesian2D2.prototype.containPoint = function(point) { - var axisX = this.getAxis("x"); - var axisY = this.getAxis("y"); - return axisX.contain(axisX.toLocalCoord(point[0])) && axisY.contain(axisY.toLocalCoord(point[1])); - }; - Cartesian2D2.prototype.containData = function(data) { - return this.getAxis("x").containData(data[0]) && this.getAxis("y").containData(data[1]); - }; - Cartesian2D2.prototype.containZone = function(data1, data2) { - var zoneDiag1 = this.dataToPoint(data1); - var zoneDiag2 = this.dataToPoint(data2); - var area = this.getArea(); - var zone = new BoundingRect_default(zoneDiag1[0], zoneDiag1[1], zoneDiag2[0] - zoneDiag1[0], zoneDiag2[1] - zoneDiag1[1]); - return area.intersect(zone); - }; - Cartesian2D2.prototype.dataToPoint = function(data, clamp3, out2) { - out2 = out2 || []; - var xVal = data[0]; - var yVal = data[1]; - if (this._transform && xVal != null && isFinite(xVal) && yVal != null && isFinite(yVal)) { - return applyTransform(out2, data, this._transform); - } - var xAxis = this.getAxis("x"); - var yAxis = this.getAxis("y"); - out2[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(xVal, clamp3)); - out2[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(yVal, clamp3)); - return out2; - }; - Cartesian2D2.prototype.clampData = function(data, out2) { - var xScale = this.getAxis("x").scale; - var yScale = this.getAxis("y").scale; - var xAxisExtent = xScale.getExtent(); - var yAxisExtent = yScale.getExtent(); - var x = xScale.parse(data[0]); - var y = yScale.parse(data[1]); - out2 = out2 || []; - out2[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1])); - out2[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1])); - return out2; - }; - Cartesian2D2.prototype.pointToData = function(point, clamp3) { - var out2 = []; - if (this._invTransform) { - return applyTransform(out2, point, this._invTransform); - } - var xAxis = this.getAxis("x"); - var yAxis = this.getAxis("y"); - out2[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]), clamp3); - out2[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]), clamp3); - return out2; - }; - Cartesian2D2.prototype.getOtherAxis = function(axis) { - return this.getAxis(axis.dim === "x" ? "y" : "x"); - }; - Cartesian2D2.prototype.getArea = function(tolerance) { - tolerance = tolerance || 0; - var xExtent = this.getAxis("x").getGlobalExtent(); - var yExtent = this.getAxis("y").getGlobalExtent(); - var x = Math.min(xExtent[0], xExtent[1]) - tolerance; - var y = Math.min(yExtent[0], yExtent[1]) - tolerance; - var width = Math.max(xExtent[0], xExtent[1]) - x + tolerance; - var height = Math.max(yExtent[0], yExtent[1]) - y + tolerance; - return new BoundingRect_default(x, y, width, height); - }; - return Cartesian2D2; - }(Cartesian_default) - ); - var Cartesian2D_default = Cartesian2D; - - // node_modules/echarts/lib/coord/cartesian/Axis2D.js - var Axis2D = ( - /** @class */ - function(_super) { - __extends(Axis2D2, _super); - function Axis2D2(dim, scale4, coordExtent, axisType, position2) { - var _this = _super.call(this, dim, scale4, coordExtent) || this; - _this.index = 0; - _this.type = axisType || "value"; - _this.position = position2 || "bottom"; - return _this; - } - Axis2D2.prototype.isHorizontal = function() { - var position2 = this.position; - return position2 === "top" || position2 === "bottom"; - }; - Axis2D2.prototype.getGlobalExtent = function(asc4) { - var ret = this.getExtent(); - ret[0] = this.toGlobalCoord(ret[0]); - ret[1] = this.toGlobalCoord(ret[1]); - asc4 && ret[0] > ret[1] && ret.reverse(); - return ret; - }; - Axis2D2.prototype.pointToData = function(point, clamp3) { - return this.coordToData(this.toLocalCoord(point[this.dim === "x" ? 0 : 1]), clamp3); - }; - Axis2D2.prototype.setCategorySortInfo = function(info) { - if (this.type !== "category") { - return false; - } - this.model.option.categorySortInfo = info; - this.scale.setSortInfo(info); - }; - return Axis2D2; - }(Axis_default) - ); - var Axis2D_default = Axis2D; - - // node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js - function layout2(gridModel, axisModel, opt) { - opt = opt || {}; - var grid = gridModel.coordinateSystem; - var axis = axisModel.axis; - var layout5 = {}; - var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0]; - var rawAxisPosition = axis.position; - var axisPosition = otherAxisOnZeroOf ? "onZero" : rawAxisPosition; - var axisDim = axis.dim; - var rect = grid.getRect(); - var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height]; - var idx = { - left: 0, - right: 1, - top: 0, - bottom: 1, - onZero: 2 - }; - var axisOffset = axisModel.get("offset") || 0; - var posBound = axisDim === "x" ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset]; - if (otherAxisOnZeroOf) { - var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0)); - posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]); - } - layout5.position = [axisDim === "y" ? posBound[idx[axisPosition]] : rectBound[0], axisDim === "x" ? posBound[idx[axisPosition]] : rectBound[3]]; - layout5.rotation = Math.PI / 2 * (axisDim === "x" ? 0 : 1); - var dirMap = { - top: -1, - bottom: 1, - left: -1, - right: 1 - }; - layout5.labelDirection = layout5.tickDirection = layout5.nameDirection = dirMap[rawAxisPosition]; - layout5.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0; - if (axisModel.get(["axisTick", "inside"])) { - layout5.tickDirection = -layout5.tickDirection; - } - if (retrieve(opt.labelInside, axisModel.get(["axisLabel", "inside"]))) { - layout5.labelDirection = -layout5.labelDirection; - } - var labelRotate = axisModel.get(["axisLabel", "rotate"]); - layout5.labelRotate = axisPosition === "top" ? -labelRotate : labelRotate; - layout5.z2 = 1; - return layout5; - } - function isCartesian2DSeries(seriesModel) { - return seriesModel.get("coordinateSystem") === "cartesian2d"; - } - function findAxisModels(seriesModel) { - var axisModelMap = { - xAxisModel: null, - yAxisModel: null - }; - each(axisModelMap, function(v, key) { - var axisType = key.replace(/Model$/, ""); - var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0]; - if (true) { - if (!axisModel) { - throw new Error(axisType + ' "' + retrieve3(seriesModel.get(axisType + "Index"), seriesModel.get(axisType + "Id"), 0) + '" not found'); - } - } - axisModelMap[key] = axisModel; - }); - return axisModelMap; - } - - // node_modules/echarts/lib/coord/axisAlignTicks.js - var mathLog2 = Math.log; - function alignScaleTicks(scale4, axisModel, alignToScale) { - var intervalScaleProto2 = Interval_default.prototype; - var alignToTicks = intervalScaleProto2.getTicks.call(alignToScale); - var alignToNicedTicks = intervalScaleProto2.getTicks.call(alignToScale, true); - var alignToSplitNumber = alignToTicks.length - 1; - var alignToInterval = intervalScaleProto2.getInterval.call(alignToScale); - var scaleExtent = getScaleExtent(scale4, axisModel); - var rawExtent = scaleExtent.extent; - var isMinFixed = scaleExtent.fixMin; - var isMaxFixed = scaleExtent.fixMax; - if (scale4.type === "log") { - var logBase = mathLog2(scale4.base); - rawExtent = [mathLog2(rawExtent[0]) / logBase, mathLog2(rawExtent[1]) / logBase]; - } - scale4.setExtent(rawExtent[0], rawExtent[1]); - scale4.calcNiceExtent({ - splitNumber: alignToSplitNumber, - fixMin: isMinFixed, - fixMax: isMaxFixed - }); - var extent3 = intervalScaleProto2.getExtent.call(scale4); - if (isMinFixed) { - rawExtent[0] = extent3[0]; - } - if (isMaxFixed) { - rawExtent[1] = extent3[1]; - } - var interval = intervalScaleProto2.getInterval.call(scale4); - var min4 = rawExtent[0]; - var max4 = rawExtent[1]; - if (isMinFixed && isMaxFixed) { - interval = (max4 - min4) / alignToSplitNumber; - } else if (isMinFixed) { - max4 = rawExtent[0] + interval * alignToSplitNumber; - while (max4 < rawExtent[1] && isFinite(max4) && isFinite(rawExtent[1])) { - interval = increaseInterval(interval); - max4 = rawExtent[0] + interval * alignToSplitNumber; - } - } else if (isMaxFixed) { - min4 = rawExtent[1] - interval * alignToSplitNumber; - while (min4 > rawExtent[0] && isFinite(min4) && isFinite(rawExtent[0])) { - interval = increaseInterval(interval); - min4 = rawExtent[1] - interval * alignToSplitNumber; - } - } else { - var nicedSplitNumber = scale4.getTicks().length - 1; - if (nicedSplitNumber > alignToSplitNumber) { - interval = increaseInterval(interval); - } - var range = interval * alignToSplitNumber; - max4 = Math.ceil(rawExtent[1] / interval) * interval; - min4 = round(max4 - range); - if (min4 < 0 && rawExtent[0] >= 0) { - min4 = 0; - max4 = round(range); - } else if (max4 > 0 && rawExtent[1] <= 0) { - max4 = 0; - min4 = -round(range); - } - } - var t0 = (alignToTicks[0].value - alignToNicedTicks[0].value) / alignToInterval; - var t1 = (alignToTicks[alignToSplitNumber].value - alignToNicedTicks[alignToSplitNumber].value) / alignToInterval; - intervalScaleProto2.setExtent.call(scale4, min4 + interval * t0, max4 + interval * t1); - intervalScaleProto2.setInterval.call(scale4, interval); - if (t0 || t1) { - intervalScaleProto2.setNiceExtent.call(scale4, min4 + interval, max4 - interval); - } - if (true) { - var ticks = intervalScaleProto2.getTicks.call(scale4); - if (ticks[1] && (!isValueNice(interval) || getPrecisionSafe(ticks[1].value) > getPrecisionSafe(interval))) { - warn( - // eslint-disable-next-line - "The ticks may be not readable when set min: " + axisModel.get("min") + ", max: " + axisModel.get("max") + " and alignTicks: true" - ); - } - } - } - - // node_modules/echarts/lib/coord/cartesian/Grid.js - var Grid = ( - /** @class */ - function() { - function Grid2(gridModel, ecModel, api) { - this.type = "grid"; - this._coordsMap = {}; - this._coordsList = []; - this._axesMap = {}; - this._axesList = []; - this.axisPointerEnabled = true; - this.dimensions = cartesian2DDimensions; - this._initCartesian(gridModel, ecModel, api); - this.model = gridModel; - } - Grid2.prototype.getRect = function() { - return this._rect; - }; - Grid2.prototype.update = function(ecModel, api) { - var axesMap = this._axesMap; - this._updateScale(ecModel, this.model); - function updateAxisTicks(axes) { - var alignTo; - var axesIndices = keys(axes); - var len2 = axesIndices.length; - if (!len2) { - return; - } - var axisNeedsAlign = []; - for (var i = len2 - 1; i >= 0; i--) { - var idx = +axesIndices[i]; - var axis = axes[idx]; - var model = axis.model; - var scale4 = axis.scale; - if ( - // Only value and log axis without interval support alignTicks. - isIntervalOrLogScale(scale4) && model.get("alignTicks") && model.get("interval") == null - ) { - axisNeedsAlign.push(axis); - } else { - niceScaleExtent(scale4, model); - if (isIntervalOrLogScale(scale4)) { - alignTo = axis; - } - } - } - ; - if (axisNeedsAlign.length) { - if (!alignTo) { - alignTo = axisNeedsAlign.pop(); - niceScaleExtent(alignTo.scale, alignTo.model); - } - each(axisNeedsAlign, function(axis2) { - alignScaleTicks(axis2.scale, axis2.model, alignTo.scale); - }); - } - } - updateAxisTicks(axesMap.x); - updateAxisTicks(axesMap.y); - var onZeroRecords = {}; - each(axesMap.x, function(xAxis) { - fixAxisOnZero(axesMap, "y", xAxis, onZeroRecords); - }); - each(axesMap.y, function(yAxis) { - fixAxisOnZero(axesMap, "x", yAxis, onZeroRecords); - }); - this.resize(this.model, api); - }; - Grid2.prototype.resize = function(gridModel, api, ignoreContainLabel) { - var boxLayoutParams = gridModel.getBoxLayoutParams(); - var isContainLabel = !ignoreContainLabel && gridModel.get("containLabel"); - var gridRect = getLayoutRect(boxLayoutParams, { - width: api.getWidth(), - height: api.getHeight() - }); - this._rect = gridRect; - var axesList = this._axesList; - adjustAxes(); - if (isContainLabel) { - each(axesList, function(axis) { - if (!axis.model.get(["axisLabel", "inside"])) { - var labelUnionRect = estimateLabelUnionRect(axis); - if (labelUnionRect) { - var dim = axis.isHorizontal() ? "height" : "width"; - var margin = axis.model.get(["axisLabel", "margin"]); - gridRect[dim] -= labelUnionRect[dim] + margin; - if (axis.position === "top") { - gridRect.y += labelUnionRect.height + margin; - } else if (axis.position === "left") { - gridRect.x += labelUnionRect.width + margin; - } - } - } - }); - adjustAxes(); - } - each(this._coordsList, function(coord) { - coord.calcAffineTransform(); - }); - function adjustAxes() { - each(axesList, function(axis) { - var isHorizontal = axis.isHorizontal(); - var extent3 = isHorizontal ? [0, gridRect.width] : [0, gridRect.height]; - var idx = axis.inverse ? 1 : 0; - axis.setExtent(extent3[idx], extent3[1 - idx]); - updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y); - }); - } - }; - Grid2.prototype.getAxis = function(dim, axisIndex) { - var axesMapOnDim = this._axesMap[dim]; - if (axesMapOnDim != null) { - return axesMapOnDim[axisIndex || 0]; - } - }; - Grid2.prototype.getAxes = function() { - return this._axesList.slice(); - }; - Grid2.prototype.getCartesian = function(xAxisIndex, yAxisIndex) { - if (xAxisIndex != null && yAxisIndex != null) { - var key = "x" + xAxisIndex + "y" + yAxisIndex; - return this._coordsMap[key]; - } - if (isObject(xAxisIndex)) { - yAxisIndex = xAxisIndex.yAxisIndex; - xAxisIndex = xAxisIndex.xAxisIndex; - } - for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) { - if (coordList[i].getAxis("x").index === xAxisIndex || coordList[i].getAxis("y").index === yAxisIndex) { - return coordList[i]; - } - } - }; - Grid2.prototype.getCartesians = function() { - return this._coordsList.slice(); - }; - Grid2.prototype.convertToPixel = function(ecModel, finder, value) { - var target = this._findConvertTarget(finder); - return target.cartesian ? target.cartesian.dataToPoint(value) : target.axis ? target.axis.toGlobalCoord(target.axis.dataToCoord(value)) : null; - }; - Grid2.prototype.convertFromPixel = function(ecModel, finder, value) { - var target = this._findConvertTarget(finder); - return target.cartesian ? target.cartesian.pointToData(value) : target.axis ? target.axis.coordToData(target.axis.toLocalCoord(value)) : null; - }; - Grid2.prototype._findConvertTarget = function(finder) { - var seriesModel = finder.seriesModel; - var xAxisModel = finder.xAxisModel || seriesModel && seriesModel.getReferringComponents("xAxis", SINGLE_REFERRING).models[0]; - var yAxisModel = finder.yAxisModel || seriesModel && seriesModel.getReferringComponents("yAxis", SINGLE_REFERRING).models[0]; - var gridModel = finder.gridModel; - var coordsList = this._coordsList; - var cartesian; - var axis; - if (seriesModel) { - cartesian = seriesModel.coordinateSystem; - indexOf(coordsList, cartesian) < 0 && (cartesian = null); - } else if (xAxisModel && yAxisModel) { - cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex); - } else if (xAxisModel) { - axis = this.getAxis("x", xAxisModel.componentIndex); - } else if (yAxisModel) { - axis = this.getAxis("y", yAxisModel.componentIndex); - } else if (gridModel) { - var grid = gridModel.coordinateSystem; - if (grid === this) { - cartesian = this._coordsList[0]; - } - } - return { - cartesian, - axis - }; - }; - Grid2.prototype.containPoint = function(point) { - var coord = this._coordsList[0]; - if (coord) { - return coord.containPoint(point); - } - }; - Grid2.prototype._initCartesian = function(gridModel, ecModel, api) { - var _this = this; - var grid = this; - var axisPositionUsed = { - left: false, - right: false, - top: false, - bottom: false - }; - var axesMap = { - x: {}, - y: {} - }; - var axesCount = { - x: 0, - y: 0 - }; - ecModel.eachComponent("xAxis", createAxisCreator("x"), this); - ecModel.eachComponent("yAxis", createAxisCreator("y"), this); - if (!axesCount.x || !axesCount.y) { - this._axesMap = {}; - this._axesList = []; - return; - } - this._axesMap = axesMap; - each(axesMap.x, function(xAxis, xAxisIndex) { - each(axesMap.y, function(yAxis, yAxisIndex) { - var key = "x" + xAxisIndex + "y" + yAxisIndex; - var cartesian = new Cartesian2D_default(key); - cartesian.master = _this; - cartesian.model = gridModel; - _this._coordsMap[key] = cartesian; - _this._coordsList.push(cartesian); - cartesian.addAxis(xAxis); - cartesian.addAxis(yAxis); - }); - }); - function createAxisCreator(dimName) { - return function(axisModel, idx) { - if (!isAxisUsedInTheGrid(axisModel, gridModel)) { - return; - } - var axisPosition = axisModel.get("position"); - if (dimName === "x") { - if (axisPosition !== "top" && axisPosition !== "bottom") { - axisPosition = axisPositionUsed.bottom ? "top" : "bottom"; - } - } else { - if (axisPosition !== "left" && axisPosition !== "right") { - axisPosition = axisPositionUsed.left ? "right" : "left"; - } - } - axisPositionUsed[axisPosition] = true; - var axis = new Axis2D_default(dimName, createScaleByModel(axisModel), [0, 0], axisModel.get("type"), axisPosition); - var isCategory2 = axis.type === "category"; - axis.onBand = isCategory2 && axisModel.get("boundaryGap"); - axis.inverse = axisModel.get("inverse"); - axisModel.axis = axis; - axis.model = axisModel; - axis.grid = grid; - axis.index = idx; - grid._axesList.push(axis); - axesMap[dimName][idx] = axis; - axesCount[dimName]++; - }; - } - }; - Grid2.prototype._updateScale = function(ecModel, gridModel) { - each(this._axesList, function(axis) { - axis.scale.setExtent(Infinity, -Infinity); - if (axis.type === "category") { - var categorySortInfo = axis.model.get("categorySortInfo"); - axis.scale.setSortInfo(categorySortInfo); - } - }); - ecModel.eachSeries(function(seriesModel) { - if (isCartesian2DSeries(seriesModel)) { - var axesModelMap = findAxisModels(seriesModel); - var xAxisModel = axesModelMap.xAxisModel; - var yAxisModel = axesModelMap.yAxisModel; - if (!isAxisUsedInTheGrid(xAxisModel, gridModel) || !isAxisUsedInTheGrid(yAxisModel, gridModel)) { - return; - } - var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex); - var data = seriesModel.getData(); - var xAxis = cartesian.getAxis("x"); - var yAxis = cartesian.getAxis("y"); - unionExtent(data, xAxis); - unionExtent(data, yAxis); - } - }, this); - function unionExtent(data, axis) { - each(getDataDimensionsOnAxis(data, axis.dim), function(dim) { - axis.scale.unionExtentFromData(data, dim); - }); - } - }; - Grid2.prototype.getTooltipAxes = function(dim) { - var baseAxes = []; - var otherAxes = []; - each(this.getCartesians(), function(cartesian) { - var baseAxis = dim != null && dim !== "auto" ? cartesian.getAxis(dim) : cartesian.getBaseAxis(); - var otherAxis = cartesian.getOtherAxis(baseAxis); - indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis); - indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis); - }); - return { - baseAxes, - otherAxes - }; - }; - Grid2.create = function(ecModel, api) { - var grids = []; - ecModel.eachComponent("grid", function(gridModel, idx) { - var grid = new Grid2(gridModel, ecModel, api); - grid.name = "grid_" + idx; - grid.resize(gridModel, api, true); - gridModel.coordinateSystem = grid; - grids.push(grid); - }); - ecModel.eachSeries(function(seriesModel) { - if (!isCartesian2DSeries(seriesModel)) { - return; - } - var axesModelMap = findAxisModels(seriesModel); - var xAxisModel = axesModelMap.xAxisModel; - var yAxisModel = axesModelMap.yAxisModel; - var gridModel = xAxisModel.getCoordSysModel(); - if (true) { - if (!gridModel) { - throw new Error('Grid "' + retrieve3(xAxisModel.get("gridIndex"), xAxisModel.get("gridId"), 0) + '" not found'); - } - if (xAxisModel.getCoordSysModel() !== yAxisModel.getCoordSysModel()) { - throw new Error("xAxis and yAxis must use the same grid"); - } - } - var grid = gridModel.coordinateSystem; - seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex); - }); - return grids; - }; - Grid2.dimensions = cartesian2DDimensions; - return Grid2; - }() - ); - function isAxisUsedInTheGrid(axisModel, gridModel) { - return axisModel.getCoordSysModel() === gridModel; - } - function fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) { - axis.getAxesOnZeroOf = function() { - return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : []; - }; - var otherAxes = axesMap[otherAxisDim]; - var otherAxisOnZeroOf; - var axisModel = axis.model; - var onZero = axisModel.get(["axisLine", "onZero"]); - var onZeroAxisIndex = axisModel.get(["axisLine", "onZeroAxisIndex"]); - if (!onZero) { - return; - } - if (onZeroAxisIndex != null) { - if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) { - otherAxisOnZeroOf = otherAxes[onZeroAxisIndex]; - } - } else { - for (var idx in otherAxes) { - if (otherAxes.hasOwnProperty(idx) && canOnZeroToAxis(otherAxes[idx]) && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) { - otherAxisOnZeroOf = otherAxes[idx]; - break; - } - } - } - if (otherAxisOnZeroOf) { - onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true; - } - function getOnZeroRecordKey(axis2) { - return axis2.dim + "_" + axis2.index; - } - } - function canOnZeroToAxis(axis) { - return axis && axis.type !== "category" && axis.type !== "time" && ifAxisCrossZero(axis); - } - function updateAxisTransform(axis, coordBase) { - var axisExtent = axis.getExtent(); - var axisExtentSum = axisExtent[0] + axisExtent[1]; - axis.toGlobalCoord = axis.dim === "x" ? function(coord) { - return coord + coordBase; - } : function(coord) { - return axisExtentSum - coord + coordBase; - }; - axis.toLocalCoord = axis.dim === "x" ? function(coord) { - return coord - coordBase; - } : function(coord) { - return axisExtentSum - coord + coordBase; - }; - } - var Grid_default = Grid; - - // node_modules/echarts/lib/component/axis/AxisBuilder.js - var PI7 = Math.PI; - var AxisBuilder = ( - /** @class */ - function() { - function AxisBuilder2(axisModel, opt) { - this.group = new Group_default(); - this.opt = opt; - this.axisModel = axisModel; - defaults(opt, { - labelOffset: 0, - nameDirection: 1, - tickDirection: 1, - labelDirection: 1, - silent: true, - handleAutoShown: function() { - return true; - } - }); - var transformGroup = new Group_default({ - x: opt.position[0], - y: opt.position[1], - rotation: opt.rotation - }); - transformGroup.updateTransform(); - this._transformGroup = transformGroup; - } - AxisBuilder2.prototype.hasBuilder = function(name) { - return !!builders[name]; - }; - AxisBuilder2.prototype.add = function(name) { - builders[name](this.opt, this.axisModel, this.group, this._transformGroup); - }; - AxisBuilder2.prototype.getGroup = function() { - return this.group; - }; - AxisBuilder2.innerTextLayout = function(axisRotation, textRotation, direction) { - var rotationDiff = remRadian(textRotation - axisRotation); - var textAlign; - var textVerticalAlign; - if (isRadianAroundZero(rotationDiff)) { - textVerticalAlign = direction > 0 ? "top" : "bottom"; - textAlign = "center"; - } else if (isRadianAroundZero(rotationDiff - PI7)) { - textVerticalAlign = direction > 0 ? "bottom" : "top"; - textAlign = "center"; - } else { - textVerticalAlign = "middle"; - if (rotationDiff > 0 && rotationDiff < PI7) { - textAlign = direction > 0 ? "right" : "left"; - } else { - textAlign = direction > 0 ? "left" : "right"; - } - } - return { - rotation: rotationDiff, - textAlign, - textVerticalAlign - }; - }; - AxisBuilder2.makeAxisEventDataBase = function(axisModel) { - var eventData = { - componentType: axisModel.mainType, - componentIndex: axisModel.componentIndex - }; - eventData[axisModel.mainType + "Index"] = axisModel.componentIndex; - return eventData; - }; - AxisBuilder2.isLabelSilent = function(axisModel) { - var tooltipOpt = axisModel.get("tooltip"); - return axisModel.get("silent") || !(axisModel.get("triggerEvent") || tooltipOpt && tooltipOpt.show); - }; - return AxisBuilder2; - }() - ); - var builders = { - axisLine: function(opt, axisModel, group, transformGroup) { - var shown = axisModel.get(["axisLine", "show"]); - if (shown === "auto" && opt.handleAutoShown) { - shown = opt.handleAutoShown("axisLine"); - } - if (!shown) { - return; - } - var extent3 = axisModel.axis.getExtent(); - var matrix = transformGroup.transform; - var pt12 = [extent3[0], 0]; - var pt22 = [extent3[1], 0]; - var inverse = pt12[0] > pt22[0]; - if (matrix) { - applyTransform(pt12, pt12, matrix); - applyTransform(pt22, pt22, matrix); - } - var lineStyle = extend({ - lineCap: "round" - }, axisModel.getModel(["axisLine", "lineStyle"]).getLineStyle()); - var line = new Line_default({ - shape: { - x1: pt12[0], - y1: pt12[1], - x2: pt22[0], - y2: pt22[1] - }, - style: lineStyle, - strokeContainThreshold: opt.strokeContainThreshold || 5, - silent: true, - z2: 1 - }); - subPixelOptimizeLine2(line.shape, line.style.lineWidth); - line.anid = "line"; - group.add(line); - var arrows = axisModel.get(["axisLine", "symbol"]); - if (arrows != null) { - var arrowSize = axisModel.get(["axisLine", "symbolSize"]); - if (isString(arrows)) { - arrows = [arrows, arrows]; - } - if (isString(arrowSize) || isNumber(arrowSize)) { - arrowSize = [arrowSize, arrowSize]; - } - var arrowOffset = normalizeSymbolOffset(axisModel.get(["axisLine", "symbolOffset"]) || 0, arrowSize); - var symbolWidth_1 = arrowSize[0]; - var symbolHeight_1 = arrowSize[1]; - each([{ - rotate: opt.rotation + Math.PI / 2, - offset: arrowOffset[0], - r: 0 - }, { - rotate: opt.rotation - Math.PI / 2, - offset: arrowOffset[1], - r: Math.sqrt((pt12[0] - pt22[0]) * (pt12[0] - pt22[0]) + (pt12[1] - pt22[1]) * (pt12[1] - pt22[1])) - }], function(point, index) { - if (arrows[index] !== "none" && arrows[index] != null) { - var symbol = createSymbol(arrows[index], -symbolWidth_1 / 2, -symbolHeight_1 / 2, symbolWidth_1, symbolHeight_1, lineStyle.stroke, true); - var r = point.r + point.offset; - var pt = inverse ? pt22 : pt12; - symbol.attr({ - rotation: point.rotate, - x: pt[0] + r * Math.cos(opt.rotation), - y: pt[1] - r * Math.sin(opt.rotation), - silent: true, - z2: 11 - }); - group.add(symbol); - } - }); - } - }, - axisTickLabel: function(opt, axisModel, group, transformGroup) { - var ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt); - var labelEls = buildAxisLabel(group, transformGroup, axisModel, opt); - fixMinMaxLabelShow(axisModel, labelEls, ticksEls); - buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection); - if (axisModel.get(["axisLabel", "hideOverlap"])) { - var labelList = prepareLayoutList(map(labelEls, function(label) { - return { - label, - priority: label.z2, - defaultAttr: { - ignore: label.ignore - } - }; - })); - hideOverlap(labelList); - } - }, - axisName: function(opt, axisModel, group, transformGroup) { - var name = retrieve(opt.axisName, axisModel.get("name")); - if (!name) { - return; - } - var nameLocation = axisModel.get("nameLocation"); - var nameDirection = opt.nameDirection; - var textStyleModel = axisModel.getModel("nameTextStyle"); - var gap = axisModel.get("nameGap") || 0; - var extent3 = axisModel.axis.getExtent(); - var gapSignal = extent3[0] > extent3[1] ? -1 : 1; - var pos = [ - nameLocation === "start" ? extent3[0] - gapSignal * gap : nameLocation === "end" ? extent3[1] + gapSignal * gap : (extent3[0] + extent3[1]) / 2, - // Reuse labelOffset. - isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0 - ]; - var labelLayout2; - var nameRotation = axisModel.get("nameRotate"); - if (nameRotation != null) { - nameRotation = nameRotation * PI7 / 180; - } - var axisNameAvailableWidth; - if (isNameLocationCenter(nameLocation)) { - labelLayout2 = AxisBuilder.innerTextLayout( - opt.rotation, - nameRotation != null ? nameRotation : opt.rotation, - // Adapt to axis. - nameDirection - ); - } else { - labelLayout2 = endTextLayout(opt.rotation, nameLocation, nameRotation || 0, extent3); - axisNameAvailableWidth = opt.axisNameAvailableWidth; - if (axisNameAvailableWidth != null) { - axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout2.rotation)); - !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null); - } - } - var textFont = textStyleModel.getFont(); - var truncateOpt = axisModel.get("nameTruncate", true) || {}; - var ellipsis = truncateOpt.ellipsis; - var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth); - var textEl = new Text_default({ - x: pos[0], - y: pos[1], - rotation: labelLayout2.rotation, - silent: AxisBuilder.isLabelSilent(axisModel), - style: createTextStyle(textStyleModel, { - text: name, - font: textFont, - overflow: "truncate", - width: maxWidth, - ellipsis, - fill: textStyleModel.getTextColor() || axisModel.get(["axisLine", "lineStyle", "color"]), - align: textStyleModel.get("align") || labelLayout2.textAlign, - verticalAlign: textStyleModel.get("verticalAlign") || labelLayout2.textVerticalAlign - }), - z2: 1 - }); - setTooltipConfig({ - el: textEl, - componentModel: axisModel, - itemName: name - }); - textEl.__fullText = name; - textEl.anid = "name"; - if (axisModel.get("triggerEvent")) { - var eventData = AxisBuilder.makeAxisEventDataBase(axisModel); - eventData.targetType = "axisName"; - eventData.name = name; - getECData(textEl).eventData = eventData; - } - transformGroup.add(textEl); - textEl.updateTransform(); - group.add(textEl); - textEl.decomposeTransform(); - } - }; - function endTextLayout(rotation, textPosition, textRotate, extent3) { - var rotationDiff = remRadian(textRotate - rotation); - var textAlign; - var textVerticalAlign; - var inverse = extent3[0] > extent3[1]; - var onLeft = textPosition === "start" && !inverse || textPosition !== "start" && inverse; - if (isRadianAroundZero(rotationDiff - PI7 / 2)) { - textVerticalAlign = onLeft ? "bottom" : "top"; - textAlign = "center"; - } else if (isRadianAroundZero(rotationDiff - PI7 * 1.5)) { - textVerticalAlign = onLeft ? "top" : "bottom"; - textAlign = "center"; - } else { - textVerticalAlign = "middle"; - if (rotationDiff < PI7 * 1.5 && rotationDiff > PI7 / 2) { - textAlign = onLeft ? "left" : "right"; - } else { - textAlign = onLeft ? "right" : "left"; - } - } - return { - rotation: rotationDiff, - textAlign, - textVerticalAlign - }; - } - function fixMinMaxLabelShow(axisModel, labelEls, tickEls) { - if (shouldShowAllLabels(axisModel.axis)) { - return; - } - var showMinLabel = axisModel.get(["axisLabel", "showMinLabel"]); - var showMaxLabel = axisModel.get(["axisLabel", "showMaxLabel"]); - labelEls = labelEls || []; - tickEls = tickEls || []; - var firstLabel = labelEls[0]; - var nextLabel = labelEls[1]; - var lastLabel = labelEls[labelEls.length - 1]; - var prevLabel = labelEls[labelEls.length - 2]; - var firstTick = tickEls[0]; - var nextTick = tickEls[1]; - var lastTick = tickEls[tickEls.length - 1]; - var prevTick = tickEls[tickEls.length - 2]; - if (showMinLabel === false) { - ignoreEl(firstLabel); - ignoreEl(firstTick); - } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) { - if (showMinLabel) { - ignoreEl(nextLabel); - ignoreEl(nextTick); - } else { - ignoreEl(firstLabel); - ignoreEl(firstTick); - } - } - if (showMaxLabel === false) { - ignoreEl(lastLabel); - ignoreEl(lastTick); - } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) { - if (showMaxLabel) { - ignoreEl(prevLabel); - ignoreEl(prevTick); - } else { - ignoreEl(lastLabel); - ignoreEl(lastTick); - } - } - } - function ignoreEl(el) { - el && (el.ignore = true); - } - function isTwoLabelOverlapped(current, next) { - var firstRect = current && current.getBoundingRect().clone(); - var nextRect = next && next.getBoundingRect().clone(); - if (!firstRect || !nextRect) { - return; - } - var mRotationBack = identity([]); - rotate(mRotationBack, mRotationBack, -current.rotation); - firstRect.applyTransform(mul2([], mRotationBack, current.getLocalTransform())); - nextRect.applyTransform(mul2([], mRotationBack, next.getLocalTransform())); - return firstRect.intersect(nextRect); - } - function isNameLocationCenter(nameLocation) { - return nameLocation === "middle" || nameLocation === "center"; - } - function createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, anidPrefix) { - var tickEls = []; - var pt12 = []; - var pt22 = []; - for (var i = 0; i < ticksCoords.length; i++) { - var tickCoord = ticksCoords[i].coord; - pt12[0] = tickCoord; - pt12[1] = 0; - pt22[0] = tickCoord; - pt22[1] = tickEndCoord; - if (tickTransform) { - applyTransform(pt12, pt12, tickTransform); - applyTransform(pt22, pt22, tickTransform); - } - var tickEl = new Line_default({ - shape: { - x1: pt12[0], - y1: pt12[1], - x2: pt22[0], - y2: pt22[1] - }, - style: tickLineStyle, - z2: 2, - autoBatch: true, - silent: true - }); - subPixelOptimizeLine2(tickEl.shape, tickEl.style.lineWidth); - tickEl.anid = anidPrefix + "_" + ticksCoords[i].tickValue; - tickEls.push(tickEl); - } - return tickEls; - } - function buildAxisMajorTicks(group, transformGroup, axisModel, opt) { - var axis = axisModel.axis; - var tickModel = axisModel.getModel("axisTick"); - var shown = tickModel.get("show"); - if (shown === "auto" && opt.handleAutoShown) { - shown = opt.handleAutoShown("axisTick"); - } - if (!shown || axis.scale.isBlank()) { - return; - } - var lineStyleModel = tickModel.getModel("lineStyle"); - var tickEndCoord = opt.tickDirection * tickModel.get("length"); - var ticksCoords = axis.getTicksCoords(); - var ticksEls = createTicks(ticksCoords, transformGroup.transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), { - stroke: axisModel.get(["axisLine", "lineStyle", "color"]) - }), "ticks"); - for (var i = 0; i < ticksEls.length; i++) { - group.add(ticksEls[i]); - } - return ticksEls; - } - function buildAxisMinorTicks(group, transformGroup, axisModel, tickDirection) { - var axis = axisModel.axis; - var minorTickModel = axisModel.getModel("minorTick"); - if (!minorTickModel.get("show") || axis.scale.isBlank()) { - return; - } - var minorTicksCoords = axis.getMinorTicksCoords(); - if (!minorTicksCoords.length) { - return; - } - var lineStyleModel = minorTickModel.getModel("lineStyle"); - var tickEndCoord = tickDirection * minorTickModel.get("length"); - var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel("axisTick").getLineStyle(), { - stroke: axisModel.get(["axisLine", "lineStyle", "color"]) - })); - for (var i = 0; i < minorTicksCoords.length; i++) { - var minorTicksEls = createTicks(minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, "minorticks_" + i); - for (var k = 0; k < minorTicksEls.length; k++) { - group.add(minorTicksEls[k]); - } - } - } - function buildAxisLabel(group, transformGroup, axisModel, opt) { - var axis = axisModel.axis; - var show = retrieve(opt.axisLabelShow, axisModel.get(["axisLabel", "show"])); - if (!show || axis.scale.isBlank()) { - return; - } - var labelModel = axisModel.getModel("axisLabel"); - var labelMargin = labelModel.get("margin"); - var labels = axis.getViewLabels(); - var labelRotation = (retrieve(opt.labelRotate, labelModel.get("rotate")) || 0) * PI7 / 180; - var labelLayout2 = AxisBuilder.innerTextLayout(opt.rotation, labelRotation, opt.labelDirection); - var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true); - var labelEls = []; - var silent = AxisBuilder.isLabelSilent(axisModel); - var triggerEvent = axisModel.get("triggerEvent"); - each(labels, function(labelItem, index) { - var tickValue = axis.scale.type === "ordinal" ? axis.scale.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue; - var formattedLabel = labelItem.formattedLabel; - var rawLabel = labelItem.rawLabel; - var itemLabelModel = labelModel; - if (rawCategoryData && rawCategoryData[tickValue]) { - var rawCategoryItem = rawCategoryData[tickValue]; - if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) { - itemLabelModel = new Model_default(rawCategoryItem.textStyle, labelModel, axisModel.ecModel); - } - } - var textColor = itemLabelModel.getTextColor() || axisModel.get(["axisLine", "lineStyle", "color"]); - var tickCoord = axis.dataToCoord(tickValue); - var align = itemLabelModel.getShallow("align", true) || labelLayout2.textAlign; - var alignMin = retrieve2(itemLabelModel.getShallow("alignMinLabel", true), align); - var alignMax = retrieve2(itemLabelModel.getShallow("alignMaxLabel", true), align); - var verticalAlign = itemLabelModel.getShallow("verticalAlign", true) || itemLabelModel.getShallow("baseline", true) || labelLayout2.textVerticalAlign; - var verticalAlignMin = retrieve2(itemLabelModel.getShallow("verticalAlignMinLabel", true), verticalAlign); - var verticalAlignMax = retrieve2(itemLabelModel.getShallow("verticalAlignMaxLabel", true), verticalAlign); - var textEl = new Text_default({ - x: tickCoord, - y: opt.labelOffset + opt.labelDirection * labelMargin, - rotation: labelLayout2.rotation, - silent, - z2: 10 + (labelItem.level || 0), - style: createTextStyle(itemLabelModel, { - text: formattedLabel, - align: index === 0 ? alignMin : index === labels.length - 1 ? alignMax : align, - verticalAlign: index === 0 ? verticalAlignMin : index === labels.length - 1 ? verticalAlignMax : verticalAlign, - fill: isFunction(textColor) ? textColor( - // (1) In category axis with data zoom, tick is not the original - // index of axis.data. So tick should not be exposed to user - // in category axis. - // (2) Compatible with previous version, which always use formatted label as - // input. But in interval scale the formatted label is like '223,445', which - // maked user replace ','. So we modify it to return original val but remain - // it as 'string' to avoid error in replacing. - axis.type === "category" ? rawLabel : axis.type === "value" ? tickValue + "" : tickValue, - index - ) : textColor - }) - }); - textEl.anid = "label_" + tickValue; - setTooltipConfig({ - el: textEl, - componentModel: axisModel, - itemName: formattedLabel, - formatterParamsExtra: { - isTruncated: function() { - return textEl.isTruncated; - }, - value: rawLabel, - tickIndex: index - } - }); - if (triggerEvent) { - var eventData = AxisBuilder.makeAxisEventDataBase(axisModel); - eventData.targetType = "axisLabel"; - eventData.value = rawLabel; - eventData.tickIndex = index; - if (axis.type === "category") { - eventData.dataIndex = tickValue; - } - getECData(textEl).eventData = eventData; - } - transformGroup.add(textEl); - textEl.updateTransform(); - labelEls.push(textEl); - group.add(textEl); - textEl.decomposeTransform(); - }); - return labelEls; - } - var AxisBuilder_default = AxisBuilder; - - // node_modules/echarts/lib/component/axisPointer/modelHelper.js - function collect(ecModel, api) { - var result = { - /** - * key: makeKey(axis.model) - * value: { - * axis, - * coordSys, - * axisPointerModel, - * triggerTooltip, - * triggerEmphasis, - * involveSeries, - * snap, - * seriesModels, - * seriesDataCount - * } - */ - axesInfo: {}, - seriesInvolved: false, - /** - * key: makeKey(coordSys.model) - * value: Object: key makeKey(axis.model), value: axisInfo - */ - coordSysAxesInfo: {}, - coordSysMap: {} - }; - collectAxesInfo(result, ecModel, api); - result.seriesInvolved && collectSeriesInfo(result, ecModel); - return result; - } - function collectAxesInfo(result, ecModel, api) { - var globalTooltipModel = ecModel.getComponent("tooltip"); - var globalAxisPointerModel = ecModel.getComponent("axisPointer"); - var linksOption = globalAxisPointerModel.get("link", true) || []; - var linkGroups = []; - each(api.getCoordinateSystems(), function(coordSys) { - if (!coordSys.axisPointerEnabled) { - return; - } - var coordSysKey = makeKey(coordSys.model); - var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {}; - result.coordSysMap[coordSysKey] = coordSys; - var coordSysModel = coordSys.model; - var baseTooltipModel = coordSysModel.getModel("tooltip", globalTooltipModel); - each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null)); - if (coordSys.getTooltipAxes && globalTooltipModel && baseTooltipModel.get("show")) { - var triggerAxis = baseTooltipModel.get("trigger") === "axis"; - var cross = baseTooltipModel.get(["axisPointer", "type"]) === "cross"; - var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get(["axisPointer", "axis"])); - if (triggerAxis || cross) { - each(tooltipAxes.baseAxes, curry(saveTooltipAxisInfo, cross ? "cross" : true, triggerAxis)); - } - if (cross) { - each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, "cross", false)); - } - } - function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) { - var axisPointerModel = axis.model.getModel("axisPointer", globalAxisPointerModel); - var axisPointerShow = axisPointerModel.get("show"); - if (!axisPointerShow || axisPointerShow === "auto" && !fromTooltip && !isHandleTrigger(axisPointerModel)) { - return; - } - if (triggerTooltip == null) { - triggerTooltip = axisPointerModel.get("triggerTooltip"); - } - axisPointerModel = fromTooltip ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) : axisPointerModel; - var snap = axisPointerModel.get("snap"); - var triggerEmphasis = axisPointerModel.get("triggerEmphasis"); - var axisKey = makeKey(axis.model); - var involveSeries = triggerTooltip || snap || axis.type === "category"; - var axisInfo = result.axesInfo[axisKey] = { - key: axisKey, - axis, - coordSys, - axisPointerModel, - triggerTooltip, - triggerEmphasis, - involveSeries, - snap, - useHandle: isHandleTrigger(axisPointerModel), - seriesModels: [], - linkGroup: null - }; - axesInfoInCoordSys[axisKey] = axisInfo; - result.seriesInvolved = result.seriesInvolved || involveSeries; - var groupIndex = getLinkGroupIndex(linksOption, axis); - if (groupIndex != null) { - var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = { - axesInfo: {} - }); - linkGroup.axesInfo[axisKey] = axisInfo; - linkGroup.mapper = linksOption[groupIndex].mapper; - axisInfo.linkGroup = linkGroup; - } - } - }); - } - function makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) { - var tooltipAxisPointerModel = baseTooltipModel.getModel("axisPointer"); - var fields = ["type", "snap", "lineStyle", "shadowStyle", "label", "animation", "animationDurationUpdate", "animationEasingUpdate", "z"]; - var volatileOption = {}; - each(fields, function(field) { - volatileOption[field] = clone(tooltipAxisPointerModel.get(field)); - }); - volatileOption.snap = axis.type !== "category" && !!triggerTooltip; - if (tooltipAxisPointerModel.get("type") === "cross") { - volatileOption.type = "line"; - } - var labelOption = volatileOption.label || (volatileOption.label = {}); - labelOption.show == null && (labelOption.show = false); - if (fromTooltip === "cross") { - var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get(["label", "show"]); - labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true; - if (!triggerTooltip) { - var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get("crossStyle"); - crossStyle && defaults(labelOption, crossStyle.textStyle); - } - } - return axis.model.getModel("axisPointer", new Model_default(volatileOption, globalAxisPointerModel, ecModel)); - } - function collectSeriesInfo(result, ecModel) { - ecModel.eachSeries(function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - var seriesTooltipTrigger = seriesModel.get(["tooltip", "trigger"], true); - var seriesTooltipShow = seriesModel.get(["tooltip", "show"], true); - if (!coordSys || seriesTooltipTrigger === "none" || seriesTooltipTrigger === false || seriesTooltipTrigger === "item" || seriesTooltipShow === false || seriesModel.get(["axisPointer", "show"], true) === false) { - return; - } - each(result.coordSysAxesInfo[makeKey(coordSys.model)], function(axisInfo) { - var axis = axisInfo.axis; - if (coordSys.getAxis(axis.dim) === axis) { - axisInfo.seriesModels.push(seriesModel); - axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0); - axisInfo.seriesDataCount += seriesModel.getData().count(); - } - }); - }); - } - function getLinkGroupIndex(linksOption, axis) { - var axisModel = axis.model; - var dim = axis.dim; - for (var i = 0; i < linksOption.length; i++) { - var linkOption = linksOption[i] || {}; - if (checkPropInLink(linkOption[dim + "AxisId"], axisModel.id) || checkPropInLink(linkOption[dim + "AxisIndex"], axisModel.componentIndex) || checkPropInLink(linkOption[dim + "AxisName"], axisModel.name)) { - return i; - } - } - } - function checkPropInLink(linkPropValue, axisPropValue) { - return linkPropValue === "all" || isArray(linkPropValue) && indexOf(linkPropValue, axisPropValue) >= 0 || linkPropValue === axisPropValue; - } - function fixValue(axisModel) { - var axisInfo = getAxisInfo(axisModel); - if (!axisInfo) { - return; - } - var axisPointerModel = axisInfo.axisPointerModel; - var scale4 = axisInfo.axis.scale; - var option = axisPointerModel.option; - var status = axisPointerModel.get("status"); - var value = axisPointerModel.get("value"); - if (value != null) { - value = scale4.parse(value); - } - var useHandle = isHandleTrigger(axisPointerModel); - if (status == null) { - option.status = useHandle ? "show" : "hide"; - } - var extent3 = scale4.getExtent().slice(); - extent3[0] > extent3[1] && extent3.reverse(); - if ( - // Pick a value on axis when initializing. - value == null || value > extent3[1] - ) { - value = extent3[1]; - } - if (value < extent3[0]) { - value = extent3[0]; - } - option.value = value; - if (useHandle) { - option.status = axisInfo.axis.scale.isBlank() ? "hide" : "show"; - } - } - function getAxisInfo(axisModel) { - var coordSysAxesInfo = (axisModel.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo; - return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)]; - } - function getAxisPointerModel(axisModel) { - var axisInfo = getAxisInfo(axisModel); - return axisInfo && axisInfo.axisPointerModel; - } - function isHandleTrigger(axisPointerModel) { - return !!axisPointerModel.get(["handle", "show"]); - } - function makeKey(model) { - return model.type + "||" + model.id; - } - - // node_modules/echarts/lib/component/axis/AxisView.js - var axisPointerClazz = {}; - var AxisView = ( - /** @class */ - function(_super) { - __extends(AxisView2, _super); - function AxisView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = AxisView2.type; - return _this; - } - AxisView2.prototype.render = function(axisModel, ecModel, api, payload) { - this.axisPointerClass && fixValue(axisModel); - _super.prototype.render.apply(this, arguments); - this._doUpdateAxisPointerClass(axisModel, api, true); - }; - AxisView2.prototype.updateAxisPointer = function(axisModel, ecModel, api, payload) { - this._doUpdateAxisPointerClass(axisModel, api, false); - }; - AxisView2.prototype.remove = function(ecModel, api) { - var axisPointer = this._axisPointer; - axisPointer && axisPointer.remove(api); - }; - AxisView2.prototype.dispose = function(ecModel, api) { - this._disposeAxisPointer(api); - _super.prototype.dispose.apply(this, arguments); - }; - AxisView2.prototype._doUpdateAxisPointerClass = function(axisModel, api, forceRender) { - var Clazz = AxisView2.getAxisPointerClass(this.axisPointerClass); - if (!Clazz) { - return; - } - var axisPointerModel = getAxisPointerModel(axisModel); - axisPointerModel ? (this._axisPointer || (this._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : this._disposeAxisPointer(api); - }; - AxisView2.prototype._disposeAxisPointer = function(api) { - this._axisPointer && this._axisPointer.dispose(api); - this._axisPointer = null; - }; - AxisView2.registerAxisPointerClass = function(type, clazz) { - if (true) { - if (axisPointerClazz[type]) { - throw new Error("axisPointer " + type + " exists"); - } - } - axisPointerClazz[type] = clazz; - }; - ; - AxisView2.getAxisPointerClass = function(type) { - return type && axisPointerClazz[type]; - }; - ; - AxisView2.type = "axis"; - return AxisView2; - }(Component_default2) - ); - var AxisView_default = AxisView; - - // node_modules/echarts/lib/component/axis/axisSplitHelper.js - var inner7 = makeInner(); - function rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) { - var axis = axisModel.axis; - if (axis.scale.isBlank()) { - return; - } - var splitAreaModel = axisModel.getModel("splitArea"); - var areaStyleModel = splitAreaModel.getModel("areaStyle"); - var areaColors = areaStyleModel.get("color"); - var gridRect = gridModel.coordinateSystem.getRect(); - var ticksCoords = axis.getTicksCoords({ - tickModel: splitAreaModel, - clamp: true - }); - if (!ticksCoords.length) { - return; - } - var areaColorsLen = areaColors.length; - var lastSplitAreaColors = inner7(axisView).splitAreaColors; - var newSplitAreaColors = createHashMap(); - var colorIndex = 0; - if (lastSplitAreaColors) { - for (var i = 0; i < ticksCoords.length; i++) { - var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue); - if (cIndex != null) { - colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen; - break; - } - } - } - var prev = axis.toGlobalCoord(ticksCoords[0].coord); - var areaStyle = areaStyleModel.getAreaStyle(); - areaColors = isArray(areaColors) ? areaColors : [areaColors]; - for (var i = 1; i < ticksCoords.length; i++) { - var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord); - var x = void 0; - var y = void 0; - var width = void 0; - var height = void 0; - if (axis.isHorizontal()) { - x = prev; - y = gridRect.y; - width = tickCoord - x; - height = gridRect.height; - prev = x + width; - } else { - x = gridRect.x; - y = prev; - width = gridRect.width; - height = tickCoord - y; - prev = y + height; - } - var tickValue = ticksCoords[i - 1].tickValue; - tickValue != null && newSplitAreaColors.set(tickValue, colorIndex); - axisGroup.add(new Rect_default({ - anid: tickValue != null ? "area_" + tickValue : null, - shape: { - x, - y, - width, - height - }, - style: defaults({ - fill: areaColors[colorIndex] - }, areaStyle), - autoBatch: true, - silent: true - })); - colorIndex = (colorIndex + 1) % areaColorsLen; - } - inner7(axisView).splitAreaColors = newSplitAreaColors; - } - function rectCoordAxisHandleRemove(axisView) { - inner7(axisView).splitAreaColors = null; - } - - // node_modules/echarts/lib/component/axis/CartesianAxisView.js - var axisBuilderAttrs = ["axisLine", "axisTickLabel", "axisName"]; - var selfBuilderAttrs = ["splitArea", "splitLine", "minorSplitLine"]; - var CartesianAxisView = ( - /** @class */ - function(_super) { - __extends(CartesianAxisView2, _super); - function CartesianAxisView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CartesianAxisView2.type; - _this.axisPointerClass = "CartesianAxisPointer"; - return _this; - } - CartesianAxisView2.prototype.render = function(axisModel, ecModel, api, payload) { - this.group.removeAll(); - var oldAxisGroup = this._axisGroup; - this._axisGroup = new Group_default(); - this.group.add(this._axisGroup); - if (!axisModel.get("show")) { - return; - } - var gridModel = axisModel.getCoordSysModel(); - var layout5 = layout2(gridModel, axisModel); - var axisBuilder = new AxisBuilder_default(axisModel, extend({ - handleAutoShown: function(elementType2) { - var cartesians = gridModel.coordinateSystem.getCartesians(); - for (var i = 0; i < cartesians.length; i++) { - if (isIntervalOrLogScale(cartesians[i].getOtherAxis(axisModel.axis).scale)) { - return true; - } - } - return false; - } - }, layout5)); - each(axisBuilderAttrs, axisBuilder.add, axisBuilder); - this._axisGroup.add(axisBuilder.getGroup()); - each(selfBuilderAttrs, function(name) { - if (axisModel.get([name, "show"])) { - axisElementBuilders[name](this, this._axisGroup, axisModel, gridModel); - } - }, this); - var isInitialSortFromBarRacing = payload && payload.type === "changeAxisOrder" && payload.isInitSort; - if (!isInitialSortFromBarRacing) { - groupTransition(oldAxisGroup, this._axisGroup, axisModel); - } - _super.prototype.render.call(this, axisModel, ecModel, api, payload); - }; - CartesianAxisView2.prototype.remove = function() { - rectCoordAxisHandleRemove(this); - }; - CartesianAxisView2.type = "cartesianAxis"; - return CartesianAxisView2; - }(AxisView_default) - ); - var axisElementBuilders = { - splitLine: function(axisView, axisGroup, axisModel, gridModel) { - var axis = axisModel.axis; - if (axis.scale.isBlank()) { - return; - } - var splitLineModel = axisModel.getModel("splitLine"); - var lineStyleModel = splitLineModel.getModel("lineStyle"); - var lineColors = lineStyleModel.get("color"); - var showMinLine = splitLineModel.get("showMinLine") !== false; - var showMaxLine = splitLineModel.get("showMaxLine") !== false; - lineColors = isArray(lineColors) ? lineColors : [lineColors]; - var gridRect = gridModel.coordinateSystem.getRect(); - var isHorizontal = axis.isHorizontal(); - var lineCount = 0; - var ticksCoords = axis.getTicksCoords({ - tickModel: splitLineModel - }); - var p1 = []; - var p2 = []; - var lineStyle = lineStyleModel.getLineStyle(); - for (var i = 0; i < ticksCoords.length; i++) { - var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord); - if (i === 0 && !showMinLine || i === ticksCoords.length - 1 && !showMaxLine) { - continue; - } - var tickValue = ticksCoords[i].tickValue; - if (isHorizontal) { - p1[0] = tickCoord; - p1[1] = gridRect.y; - p2[0] = tickCoord; - p2[1] = gridRect.y + gridRect.height; - } else { - p1[0] = gridRect.x; - p1[1] = tickCoord; - p2[0] = gridRect.x + gridRect.width; - p2[1] = tickCoord; - } - var colorIndex = lineCount++ % lineColors.length; - var line = new Line_default({ - anid: tickValue != null ? "line_" + tickValue : null, - autoBatch: true, - shape: { - x1: p1[0], - y1: p1[1], - x2: p2[0], - y2: p2[1] - }, - style: defaults({ - stroke: lineColors[colorIndex] - }, lineStyle), - silent: true - }); - subPixelOptimizeLine2(line.shape, lineStyle.lineWidth); - axisGroup.add(line); - } - }, - minorSplitLine: function(axisView, axisGroup, axisModel, gridModel) { - var axis = axisModel.axis; - var minorSplitLineModel = axisModel.getModel("minorSplitLine"); - var lineStyleModel = minorSplitLineModel.getModel("lineStyle"); - var gridRect = gridModel.coordinateSystem.getRect(); - var isHorizontal = axis.isHorizontal(); - var minorTicksCoords = axis.getMinorTicksCoords(); - if (!minorTicksCoords.length) { - return; - } - var p1 = []; - var p2 = []; - var lineStyle = lineStyleModel.getLineStyle(); - for (var i = 0; i < minorTicksCoords.length; i++) { - for (var k = 0; k < minorTicksCoords[i].length; k++) { - var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord); - if (isHorizontal) { - p1[0] = tickCoord; - p1[1] = gridRect.y; - p2[0] = tickCoord; - p2[1] = gridRect.y + gridRect.height; - } else { - p1[0] = gridRect.x; - p1[1] = tickCoord; - p2[0] = gridRect.x + gridRect.width; - p2[1] = tickCoord; - } - var line = new Line_default({ - anid: "minor_line_" + minorTicksCoords[i][k].tickValue, - autoBatch: true, - shape: { - x1: p1[0], - y1: p1[1], - x2: p2[0], - y2: p2[1] - }, - style: lineStyle, - silent: true - }); - subPixelOptimizeLine2(line.shape, lineStyle.lineWidth); - axisGroup.add(line); - } - } - }, - splitArea: function(axisView, axisGroup, axisModel, gridModel) { - rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel); - } - }; - var CartesianXAxisView = ( - /** @class */ - function(_super) { - __extends(CartesianXAxisView2, _super); - function CartesianXAxisView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CartesianXAxisView2.type; - return _this; - } - CartesianXAxisView2.type = "xAxis"; - return CartesianXAxisView2; - }(CartesianAxisView) - ); - var CartesianYAxisView = ( - /** @class */ - function(_super) { - __extends(CartesianYAxisView2, _super); - function CartesianYAxisView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CartesianXAxisView.type; - return _this; - } - CartesianYAxisView2.type = "yAxis"; - return CartesianYAxisView2; - }(CartesianAxisView) - ); - - // node_modules/echarts/lib/component/grid/installSimple.js - var GridView = ( - /** @class */ - function(_super) { - __extends(GridView2, _super); - function GridView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "grid"; - return _this; - } - GridView2.prototype.render = function(gridModel, ecModel) { - this.group.removeAll(); - if (gridModel.get("show")) { - this.group.add(new Rect_default({ - shape: gridModel.coordinateSystem.getRect(), - style: defaults({ - fill: gridModel.get("backgroundColor") - }, gridModel.getItemStyle()), - silent: true, - z2: -1 - })); - } - }; - GridView2.type = "grid"; - return GridView2; - }(Component_default2) - ); - var extraOption = { - // gridIndex: 0, - // gridId: '', - offset: 0 - }; - function install6(registers) { - registers.registerComponentView(GridView); - registers.registerComponentModel(GridModel_default); - registers.registerCoordinateSystem("cartesian2d", Grid_default); - axisModelCreator(registers, "x", CartesianAxisModel, extraOption); - axisModelCreator(registers, "y", CartesianAxisModel, extraOption); - registers.registerComponentView(CartesianXAxisView); - registers.registerComponentView(CartesianYAxisView); - registers.registerPreprocessor(function(option) { - if (option.xAxis && option.yAxis && !option.grid) { - option.grid = {}; - } - }); - } - - // node_modules/echarts/lib/chart/scatter/install.js - function install7(registers) { - use(install6); - registers.registerSeriesModel(ScatterSeries_default); - registers.registerChartView(ScatterView_default); - registers.registerLayout(pointsLayout("scatter")); - } - - // node_modules/echarts/lib/chart/radar/radarLayout.js - function radarLayout(ecModel) { - ecModel.eachSeriesByType("radar", function(seriesModel) { - var data = seriesModel.getData(); - var points4 = []; - var coordSys = seriesModel.coordinateSystem; - if (!coordSys) { - return; - } - var axes = coordSys.getIndicatorAxes(); - each(axes, function(axis, axisIndex) { - data.each(data.mapDimension(axes[axisIndex].dim), function(val, dataIndex) { - points4[dataIndex] = points4[dataIndex] || []; - var point = coordSys.dataToPoint(val, axisIndex); - points4[dataIndex][axisIndex] = isValidPoint(point) ? point : getValueMissingPoint(coordSys); - }); - }); - data.each(function(idx) { - var firstPoint = find(points4[idx], function(point) { - return isValidPoint(point); - }) || getValueMissingPoint(coordSys); - points4[idx].push(firstPoint.slice()); - data.setItemLayout(idx, points4[idx]); - }); - }); - } - function isValidPoint(point) { - return !isNaN(point[0]) && !isNaN(point[1]); - } - function getValueMissingPoint(coordSys) { - return [coordSys.cx, coordSys.cy]; - } - - // node_modules/echarts/lib/chart/radar/backwardCompat.js - function radarBackwardCompat(option) { - var polarOptArr = option.polar; - if (polarOptArr) { - if (!isArray(polarOptArr)) { - polarOptArr = [polarOptArr]; - } - var polarNotRadar_1 = []; - each(polarOptArr, function(polarOpt, idx) { - if (polarOpt.indicator) { - if (polarOpt.type && !polarOpt.shape) { - polarOpt.shape = polarOpt.type; - } - option.radar = option.radar || []; - if (!isArray(option.radar)) { - option.radar = [option.radar]; - } - option.radar.push(polarOpt); - } else { - polarNotRadar_1.push(polarOpt); - } - }); - option.polar = polarNotRadar_1; - } - each(option.series, function(seriesOpt) { - if (seriesOpt && seriesOpt.type === "radar" && seriesOpt.polarIndex) { - seriesOpt.radarIndex = seriesOpt.polarIndex; - } - }); - } - - // node_modules/echarts/lib/chart/radar/RadarView.js - var RadarView = ( - /** @class */ - function(_super) { - __extends(RadarView3, _super); - function RadarView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = RadarView3.type; - return _this; - } - RadarView3.prototype.render = function(seriesModel, ecModel, api) { - var polar = seriesModel.coordinateSystem; - var group = this.group; - var data = seriesModel.getData(); - var oldData = this._data; - function createSymbol3(data2, idx) { - var symbolType = data2.getItemVisual(idx, "symbol") || "circle"; - if (symbolType === "none") { - return; - } - var symbolSize = normalizeSymbolSize(data2.getItemVisual(idx, "symbolSize")); - var symbolPath = createSymbol(symbolType, -1, -1, 2, 2); - var symbolRotate = data2.getItemVisual(idx, "symbolRotate") || 0; - symbolPath.attr({ - style: { - strokeNoScale: true - }, - z2: 100, - scaleX: symbolSize[0] / 2, - scaleY: symbolSize[1] / 2, - rotation: symbolRotate * Math.PI / 180 || 0 - }); - return symbolPath; - } - function updateSymbols(oldPoints, newPoints, symbolGroup, data2, idx, isInit) { - symbolGroup.removeAll(); - for (var i = 0; i < newPoints.length - 1; i++) { - var symbolPath = createSymbol3(data2, idx); - if (symbolPath) { - symbolPath.__dimIdx = i; - if (oldPoints[i]) { - symbolPath.setPosition(oldPoints[i]); - graphic_exports[isInit ? "initProps" : "updateProps"](symbolPath, { - x: newPoints[i][0], - y: newPoints[i][1] - }, seriesModel, idx); - } else { - symbolPath.setPosition(newPoints[i]); - } - symbolGroup.add(symbolPath); - } - } - } - function getInitialPoints(points4) { - return map(points4, function(pt) { - return [polar.cx, polar.cy]; - }); - } - data.diff(oldData).add(function(idx) { - var points4 = data.getItemLayout(idx); - if (!points4) { - return; - } - var polygon = new Polygon_default(); - var polyline = new Polyline_default(); - var target = { - shape: { - points: points4 - } - }; - polygon.shape.points = getInitialPoints(points4); - polyline.shape.points = getInitialPoints(points4); - initProps(polygon, target, seriesModel, idx); - initProps(polyline, target, seriesModel, idx); - var itemGroup = new Group_default(); - var symbolGroup = new Group_default(); - itemGroup.add(polyline); - itemGroup.add(polygon); - itemGroup.add(symbolGroup); - updateSymbols(polyline.shape.points, points4, symbolGroup, data, idx, true); - data.setItemGraphicEl(idx, itemGroup); - }).update(function(newIdx, oldIdx) { - var itemGroup = oldData.getItemGraphicEl(oldIdx); - var polyline = itemGroup.childAt(0); - var polygon = itemGroup.childAt(1); - var symbolGroup = itemGroup.childAt(2); - var target = { - shape: { - points: data.getItemLayout(newIdx) - } - }; - if (!target.shape.points) { - return; - } - updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false); - saveOldStyle(polygon); - saveOldStyle(polyline); - updateProps(polyline, target, seriesModel); - updateProps(polygon, target, seriesModel); - data.setItemGraphicEl(newIdx, itemGroup); - }).remove(function(idx) { - group.remove(oldData.getItemGraphicEl(idx)); - }).execute(); - data.eachItemGraphicEl(function(itemGroup, idx) { - var itemModel = data.getItemModel(idx); - var polyline = itemGroup.childAt(0); - var polygon = itemGroup.childAt(1); - var symbolGroup = itemGroup.childAt(2); - var itemStyle = data.getItemVisual(idx, "style"); - var color = itemStyle.fill; - group.add(itemGroup); - polyline.useStyle(defaults(itemModel.getModel("lineStyle").getLineStyle(), { - fill: "none", - stroke: color - })); - setStatesStylesFromModel(polyline, itemModel, "lineStyle"); - setStatesStylesFromModel(polygon, itemModel, "areaStyle"); - var areaStyleModel = itemModel.getModel("areaStyle"); - var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty(); - polygon.ignore = polygonIgnore; - each(["emphasis", "select", "blur"], function(stateName) { - var stateModel = itemModel.getModel([stateName, "areaStyle"]); - var stateIgnore = stateModel.isEmpty() && stateModel.parentModel.isEmpty(); - polygon.ensureState(stateName).ignore = stateIgnore && polygonIgnore; - }); - polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), { - fill: color, - opacity: 0.7, - decal: itemStyle.decal - })); - var emphasisModel = itemModel.getModel("emphasis"); - var itemHoverStyle = emphasisModel.getModel("itemStyle").getItemStyle(); - symbolGroup.eachChild(function(symbolPath) { - if (symbolPath instanceof Image_default) { - var pathStyle = symbolPath.style; - symbolPath.useStyle(extend({ - // TODO other properties like x, y ? - image: pathStyle.image, - x: pathStyle.x, - y: pathStyle.y, - width: pathStyle.width, - height: pathStyle.height - }, itemStyle)); - } else { - symbolPath.useStyle(itemStyle); - symbolPath.setColor(color); - symbolPath.style.strokeNoScale = true; - } - var pathEmphasisState = symbolPath.ensureState("emphasis"); - pathEmphasisState.style = clone(itemHoverStyle); - var defaultText = data.getStore().get(data.getDimensionIndex(symbolPath.__dimIdx), idx); - (defaultText == null || isNaN(defaultText)) && (defaultText = ""); - setLabelStyle(symbolPath, getLabelStatesModels(itemModel), { - labelFetcher: data.hostModel, - labelDataIndex: idx, - labelDimIndex: symbolPath.__dimIdx, - defaultText, - inheritColor: color, - defaultOpacity: itemStyle.opacity - }); - }); - toggleHoverEmphasis(itemGroup, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - }); - this._data = data; - }; - RadarView3.prototype.remove = function() { - this.group.removeAll(); - this._data = null; - }; - RadarView3.type = "radar"; - return RadarView3; - }(Chart_default) - ); - var RadarView_default = RadarView; - - // node_modules/echarts/lib/chart/radar/RadarSeries.js - var RadarSeriesModel = ( - /** @class */ - function(_super) { - __extends(RadarSeriesModel2, _super); - function RadarSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = RadarSeriesModel2.type; - _this.hasSymbolVisual = true; - return _this; - } - RadarSeriesModel2.prototype.init = function(option) { - _super.prototype.init.apply(this, arguments); - this.legendVisualProvider = new LegendVisualProvider_default(bind(this.getData, this), bind(this.getRawData, this)); - }; - RadarSeriesModel2.prototype.getInitialData = function(option, ecModel) { - return createSeriesDataSimply(this, { - generateCoord: "indicator_", - generateCoordCount: Infinity - }); - }; - RadarSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - var data = this.getData(); - var coordSys = this.coordinateSystem; - var indicatorAxes = coordSys.getIndicatorAxes(); - var name = this.getData().getName(dataIndex); - var nameToDisplay = name === "" ? this.name : name; - var markerColor = retrieveVisualColorForTooltipMarker(this, dataIndex); - return createTooltipMarkup("section", { - header: nameToDisplay, - sortBlocks: true, - blocks: map(indicatorAxes, function(axis) { - var val = data.get(data.mapDimension(axis.dim), dataIndex); - return createTooltipMarkup("nameValue", { - markerType: "subItem", - markerColor, - name: axis.name, - value: val, - sortParam: val - }); - }) - }); - }; - RadarSeriesModel2.prototype.getTooltipPosition = function(dataIndex) { - if (dataIndex != null) { - var data_1 = this.getData(); - var coordSys = this.coordinateSystem; - var values = data_1.getValues(map(coordSys.dimensions, function(dim) { - return data_1.mapDimension(dim); - }), dataIndex); - for (var i = 0, len2 = values.length; i < len2; i++) { - if (!isNaN(values[i])) { - var indicatorAxes = coordSys.getIndicatorAxes(); - return coordSys.coordToPoint(indicatorAxes[i].dataToCoord(values[i]), i); - } - } - } - }; - RadarSeriesModel2.type = "series.radar"; - RadarSeriesModel2.dependencies = ["radar"]; - RadarSeriesModel2.defaultOption = { - // zlevel: 0, - z: 2, - colorBy: "data", - coordinateSystem: "radar", - legendHoverLink: true, - radarIndex: 0, - lineStyle: { - width: 2, - type: "solid", - join: "round" - }, - label: { - position: "top" - }, - // areaStyle: { - // }, - // itemStyle: {} - symbolSize: 8 - // symbolRotate: null - }; - return RadarSeriesModel2; - }(Series_default) - ); - var RadarSeries_default = RadarSeriesModel; - - // node_modules/echarts/lib/coord/radar/RadarModel.js - var valueAxisDefault = axisDefault_default.value; - function defaultsShow(opt, show) { - return defaults({ - show - }, opt); - } - var RadarModel = ( - /** @class */ - function(_super) { - __extends(RadarModel2, _super); - function RadarModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = RadarModel2.type; - return _this; - } - RadarModel2.prototype.optionUpdated = function() { - var boundaryGap = this.get("boundaryGap"); - var splitNumber = this.get("splitNumber"); - var scale4 = this.get("scale"); - var axisLine = this.get("axisLine"); - var axisTick = this.get("axisTick"); - var axisLabel = this.get("axisLabel"); - var nameTextStyle = this.get("axisName"); - var showName = this.get(["axisName", "show"]); - var nameFormatter = this.get(["axisName", "formatter"]); - var nameGap = this.get("axisNameGap"); - var triggerEvent = this.get("triggerEvent"); - var indicatorModels = map(this.get("indicator") || [], function(indicatorOpt) { - if (indicatorOpt.max != null && indicatorOpt.max > 0 && !indicatorOpt.min) { - indicatorOpt.min = 0; - } else if (indicatorOpt.min != null && indicatorOpt.min < 0 && !indicatorOpt.max) { - indicatorOpt.max = 0; - } - var iNameTextStyle = nameTextStyle; - if (indicatorOpt.color != null) { - iNameTextStyle = defaults({ - color: indicatorOpt.color - }, nameTextStyle); - } - var innerIndicatorOpt = merge(clone(indicatorOpt), { - boundaryGap, - splitNumber, - scale: scale4, - axisLine, - axisTick, - // axisType: axisType, - axisLabel, - // Compatible with 2 and use text - name: indicatorOpt.text, - showName, - nameLocation: "end", - nameGap, - // min: 0, - nameTextStyle: iNameTextStyle, - triggerEvent - }, false); - if (isString(nameFormatter)) { - var indName = innerIndicatorOpt.name; - innerIndicatorOpt.name = nameFormatter.replace("{value}", indName != null ? indName : ""); - } else if (isFunction(nameFormatter)) { - innerIndicatorOpt.name = nameFormatter(innerIndicatorOpt.name, innerIndicatorOpt); - } - var model = new Model_default(innerIndicatorOpt, null, this.ecModel); - mixin(model, AxisModelCommonMixin.prototype); - model.mainType = "radar"; - model.componentIndex = this.componentIndex; - return model; - }, this); - this._indicatorModels = indicatorModels; - }; - RadarModel2.prototype.getIndicatorModels = function() { - return this._indicatorModels; - }; - RadarModel2.type = "radar"; - RadarModel2.defaultOption = { - // zlevel: 0, - z: 0, - center: ["50%", "50%"], - radius: "75%", - startAngle: 90, - axisName: { - show: true - // formatter: null - // textStyle: {} - }, - boundaryGap: [0, 0], - splitNumber: 5, - axisNameGap: 15, - scale: false, - // Polygon or circle - shape: "polygon", - axisLine: merge({ - lineStyle: { - color: "#bbb" - } - }, valueAxisDefault.axisLine), - axisLabel: defaultsShow(valueAxisDefault.axisLabel, false), - axisTick: defaultsShow(valueAxisDefault.axisTick, false), - // axisType: 'value', - splitLine: defaultsShow(valueAxisDefault.splitLine, true), - splitArea: defaultsShow(valueAxisDefault.splitArea, true), - // {text, min, max} - indicator: [] - }; - return RadarModel2; - }(Component_default) - ); - var RadarModel_default = RadarModel; - - // node_modules/echarts/lib/component/radar/RadarView.js - var axisBuilderAttrs2 = ["axisLine", "axisTickLabel", "axisName"]; - var RadarView2 = ( - /** @class */ - function(_super) { - __extends(RadarView3, _super); - function RadarView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = RadarView3.type; - return _this; - } - RadarView3.prototype.render = function(radarModel, ecModel, api) { - var group = this.group; - group.removeAll(); - this._buildAxes(radarModel); - this._buildSplitLineAndArea(radarModel); - }; - RadarView3.prototype._buildAxes = function(radarModel) { - var radar = radarModel.coordinateSystem; - var indicatorAxes = radar.getIndicatorAxes(); - var axisBuilders = map(indicatorAxes, function(indicatorAxis) { - var axisName = indicatorAxis.model.get("showName") ? indicatorAxis.name : ""; - var axisBuilder = new AxisBuilder_default(indicatorAxis.model, { - axisName, - position: [radar.cx, radar.cy], - rotation: indicatorAxis.angle, - labelDirection: -1, - tickDirection: -1, - nameDirection: 1 - }); - return axisBuilder; - }); - each(axisBuilders, function(axisBuilder) { - each(axisBuilderAttrs2, axisBuilder.add, axisBuilder); - this.group.add(axisBuilder.getGroup()); - }, this); - }; - RadarView3.prototype._buildSplitLineAndArea = function(radarModel) { - var radar = radarModel.coordinateSystem; - var indicatorAxes = radar.getIndicatorAxes(); - if (!indicatorAxes.length) { - return; - } - var shape = radarModel.get("shape"); - var splitLineModel = radarModel.getModel("splitLine"); - var splitAreaModel = radarModel.getModel("splitArea"); - var lineStyleModel = splitLineModel.getModel("lineStyle"); - var areaStyleModel = splitAreaModel.getModel("areaStyle"); - var showSplitLine = splitLineModel.get("show"); - var showSplitArea = splitAreaModel.get("show"); - var splitLineColors = lineStyleModel.get("color"); - var splitAreaColors = areaStyleModel.get("color"); - var splitLineColorsArr = isArray(splitLineColors) ? splitLineColors : [splitLineColors]; - var splitAreaColorsArr = isArray(splitAreaColors) ? splitAreaColors : [splitAreaColors]; - var splitLines = []; - var splitAreas = []; - function getColorIndex(areaOrLine, areaOrLineColorList, idx) { - var colorIndex2 = idx % areaOrLineColorList.length; - areaOrLine[colorIndex2] = areaOrLine[colorIndex2] || []; - return colorIndex2; - } - if (shape === "circle") { - var ticksRadius = indicatorAxes[0].getTicksCoords(); - var cx = radar.cx; - var cy = radar.cy; - for (var i = 0; i < ticksRadius.length; i++) { - if (showSplitLine) { - var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i); - splitLines[colorIndex].push(new Circle_default({ - shape: { - cx, - cy, - r: ticksRadius[i].coord - } - })); - } - if (showSplitArea && i < ticksRadius.length - 1) { - var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i); - splitAreas[colorIndex].push(new Ring_default({ - shape: { - cx, - cy, - r0: ticksRadius[i].coord, - r: ticksRadius[i + 1].coord - } - })); - } - } - } else { - var realSplitNumber_1; - var axesTicksPoints = map(indicatorAxes, function(indicatorAxis, idx) { - var ticksCoords = indicatorAxis.getTicksCoords(); - realSplitNumber_1 = realSplitNumber_1 == null ? ticksCoords.length - 1 : Math.min(ticksCoords.length - 1, realSplitNumber_1); - return map(ticksCoords, function(tickCoord) { - return radar.coordToPoint(tickCoord.coord, idx); - }); - }); - var prevPoints = []; - for (var i = 0; i <= realSplitNumber_1; i++) { - var points4 = []; - for (var j = 0; j < indicatorAxes.length; j++) { - points4.push(axesTicksPoints[j][i]); - } - if (points4[0]) { - points4.push(points4[0].slice()); - } else { - if (true) { - console.error("Can't draw value axis " + i); - } - } - if (showSplitLine) { - var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i); - splitLines[colorIndex].push(new Polyline_default({ - shape: { - points: points4 - } - })); - } - if (showSplitArea && prevPoints) { - var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i - 1); - splitAreas[colorIndex].push(new Polygon_default({ - shape: { - points: points4.concat(prevPoints) - } - })); - } - prevPoints = points4.slice().reverse(); - } - } - var lineStyle = lineStyleModel.getLineStyle(); - var areaStyle = areaStyleModel.getAreaStyle(); - each(splitAreas, function(splitAreas2, idx) { - this.group.add(mergePath2(splitAreas2, { - style: defaults({ - stroke: "none", - fill: splitAreaColorsArr[idx % splitAreaColorsArr.length] - }, areaStyle), - silent: true - })); - }, this); - each(splitLines, function(splitLines2, idx) { - this.group.add(mergePath2(splitLines2, { - style: defaults({ - fill: "none", - stroke: splitLineColorsArr[idx % splitLineColorsArr.length] - }, lineStyle), - silent: true - })); - }, this); - }; - RadarView3.type = "radar"; - return RadarView3; - }(Component_default2) - ); - var RadarView_default2 = RadarView2; - - // node_modules/echarts/lib/coord/radar/IndicatorAxis.js - var IndicatorAxis = ( - /** @class */ - function(_super) { - __extends(IndicatorAxis2, _super); - function IndicatorAxis2(dim, scale4, radiusExtent) { - var _this = _super.call(this, dim, scale4, radiusExtent) || this; - _this.type = "value"; - _this.angle = 0; - _this.name = ""; - return _this; - } - return IndicatorAxis2; - }(Axis_default) - ); - var IndicatorAxis_default = IndicatorAxis; - - // node_modules/echarts/lib/coord/radar/Radar.js - var Radar = ( - /** @class */ - function() { - function Radar2(radarModel, ecModel, api) { - this.dimensions = []; - this._model = radarModel; - this._indicatorAxes = map(radarModel.getIndicatorModels(), function(indicatorModel, idx) { - var dim = "indicator_" + idx; - var indicatorAxis = new IndicatorAxis_default( - dim, - new Interval_default() - // (indicatorModel.get('axisType') === 'log') ? new LogScale() : new IntervalScale() - ); - indicatorAxis.name = indicatorModel.get("name"); - indicatorAxis.model = indicatorModel; - indicatorModel.axis = indicatorAxis; - this.dimensions.push(dim); - return indicatorAxis; - }, this); - this.resize(radarModel, api); - } - Radar2.prototype.getIndicatorAxes = function() { - return this._indicatorAxes; - }; - Radar2.prototype.dataToPoint = function(value, indicatorIndex) { - var indicatorAxis = this._indicatorAxes[indicatorIndex]; - return this.coordToPoint(indicatorAxis.dataToCoord(value), indicatorIndex); - }; - Radar2.prototype.coordToPoint = function(coord, indicatorIndex) { - var indicatorAxis = this._indicatorAxes[indicatorIndex]; - var angle = indicatorAxis.angle; - var x = this.cx + coord * Math.cos(angle); - var y = this.cy - coord * Math.sin(angle); - return [x, y]; - }; - Radar2.prototype.pointToData = function(pt) { - var dx = pt[0] - this.cx; - var dy = pt[1] - this.cy; - var radius = Math.sqrt(dx * dx + dy * dy); - dx /= radius; - dy /= radius; - var radian = Math.atan2(-dy, dx); - var minRadianDiff = Infinity; - var closestAxis; - var closestAxisIdx = -1; - for (var i = 0; i < this._indicatorAxes.length; i++) { - var indicatorAxis = this._indicatorAxes[i]; - var diff = Math.abs(radian - indicatorAxis.angle); - if (diff < minRadianDiff) { - closestAxis = indicatorAxis; - closestAxisIdx = i; - minRadianDiff = diff; - } - } - return [closestAxisIdx, +(closestAxis && closestAxis.coordToData(radius))]; - }; - Radar2.prototype.resize = function(radarModel, api) { - var center3 = radarModel.get("center"); - var viewWidth = api.getWidth(); - var viewHeight = api.getHeight(); - var viewSize = Math.min(viewWidth, viewHeight) / 2; - this.cx = parsePercent2(center3[0], viewWidth); - this.cy = parsePercent2(center3[1], viewHeight); - this.startAngle = radarModel.get("startAngle") * Math.PI / 180; - var radius = radarModel.get("radius"); - if (isString(radius) || isNumber(radius)) { - radius = [0, radius]; - } - this.r0 = parsePercent2(radius[0], viewSize); - this.r = parsePercent2(radius[1], viewSize); - each(this._indicatorAxes, function(indicatorAxis, idx) { - indicatorAxis.setExtent(this.r0, this.r); - var angle = this.startAngle + idx * Math.PI * 2 / this._indicatorAxes.length; - angle = Math.atan2(Math.sin(angle), Math.cos(angle)); - indicatorAxis.angle = angle; - }, this); - }; - Radar2.prototype.update = function(ecModel, api) { - var indicatorAxes = this._indicatorAxes; - var radarModel = this._model; - each(indicatorAxes, function(indicatorAxis) { - indicatorAxis.scale.setExtent(Infinity, -Infinity); - }); - ecModel.eachSeriesByType("radar", function(radarSeries, idx) { - if (radarSeries.get("coordinateSystem") !== "radar" || ecModel.getComponent("radar", radarSeries.get("radarIndex")) !== radarModel) { - return; - } - var data = radarSeries.getData(); - each(indicatorAxes, function(indicatorAxis) { - indicatorAxis.scale.unionExtentFromData(data, data.mapDimension(indicatorAxis.dim)); - }); - }, this); - var splitNumber = radarModel.get("splitNumber"); - var dummyScale = new Interval_default(); - dummyScale.setExtent(0, splitNumber); - dummyScale.setInterval(1); - each(indicatorAxes, function(indicatorAxis, idx) { - alignScaleTicks(indicatorAxis.scale, indicatorAxis.model, dummyScale); - }); - }; - Radar2.prototype.convertToPixel = function(ecModel, finder, value) { - console.warn("Not implemented."); - return null; - }; - Radar2.prototype.convertFromPixel = function(ecModel, finder, pixel) { - console.warn("Not implemented."); - return null; - }; - Radar2.prototype.containPoint = function(point) { - console.warn("Not implemented."); - return false; - }; - Radar2.create = function(ecModel, api) { - var radarList = []; - ecModel.eachComponent("radar", function(radarModel) { - var radar = new Radar2(radarModel, ecModel, api); - radarList.push(radar); - radarModel.coordinateSystem = radar; - }); - ecModel.eachSeriesByType("radar", function(radarSeries) { - if (radarSeries.get("coordinateSystem") === "radar") { - radarSeries.coordinateSystem = radarList[radarSeries.get("radarIndex") || 0]; - } - }); - return radarList; - }; - Radar2.dimensions = []; - return Radar2; - }() - ); - var Radar_default = Radar; - - // node_modules/echarts/lib/component/radar/install.js - function install8(registers) { - registers.registerCoordinateSystem("radar", Radar_default); - registers.registerComponentModel(RadarModel_default); - registers.registerComponentView(RadarView_default2); - registers.registerVisual({ - seriesType: "radar", - reset: function(seriesModel) { - var data = seriesModel.getData(); - data.each(function(idx) { - data.setItemVisual(idx, "legendIcon", "roundRect"); - }); - data.setVisual("legendIcon", "roundRect"); - } - }); - } - - // node_modules/echarts/lib/chart/radar/install.js - function install9(registers) { - use(install8); - registers.registerChartView(RadarView_default); - registers.registerSeriesModel(RadarSeries_default); - registers.registerLayout(radarLayout); - registers.registerProcessor(dataFilter("radar")); - registers.registerPreprocessor(radarBackwardCompat); - } - - // node_modules/echarts/lib/component/helper/interactionMutex.js - var ATTR = "\0_ec_interaction_mutex"; - function take(zr, resourceKey, userKey) { - var store = getStore(zr); - store[resourceKey] = userKey; - } - function release(zr, resourceKey, userKey) { - var store = getStore(zr); - var uKey = store[resourceKey]; - if (uKey === userKey) { - store[resourceKey] = null; - } - } - function isTaken(zr, resourceKey) { - return !!getStore(zr)[resourceKey]; - } - function getStore(zr) { - return zr[ATTR] || (zr[ATTR] = {}); - } - registerAction({ - type: "takeGlobalCursor", - event: "globalCursorTaken", - update: "update" - }, noop); - - // node_modules/echarts/lib/component/helper/RoamController.js - var RoamController = ( - /** @class */ - function(_super) { - __extends(RoamController2, _super); - function RoamController2(zr) { - var _this = _super.call(this) || this; - _this._zr = zr; - var mousedownHandler = bind(_this._mousedownHandler, _this); - var mousemoveHandler = bind(_this._mousemoveHandler, _this); - var mouseupHandler = bind(_this._mouseupHandler, _this); - var mousewheelHandler = bind(_this._mousewheelHandler, _this); - var pinchHandler = bind(_this._pinchHandler, _this); - _this.enable = function(controlType, opt) { - this.disable(); - this._opt = defaults(clone(opt) || {}, { - zoomOnMouseWheel: true, - moveOnMouseMove: true, - // By default, wheel do not trigger move. - moveOnMouseWheel: false, - preventDefaultMouseMove: true - }); - if (controlType == null) { - controlType = true; - } - if (controlType === true || controlType === "move" || controlType === "pan") { - zr.on("mousedown", mousedownHandler); - zr.on("mousemove", mousemoveHandler); - zr.on("mouseup", mouseupHandler); - } - if (controlType === true || controlType === "scale" || controlType === "zoom") { - zr.on("mousewheel", mousewheelHandler); - zr.on("pinch", pinchHandler); - } - }; - _this.disable = function() { - zr.off("mousedown", mousedownHandler); - zr.off("mousemove", mousemoveHandler); - zr.off("mouseup", mouseupHandler); - zr.off("mousewheel", mousewheelHandler); - zr.off("pinch", pinchHandler); - }; - return _this; - } - RoamController2.prototype.isDragging = function() { - return this._dragging; - }; - RoamController2.prototype.isPinching = function() { - return this._pinching; - }; - RoamController2.prototype.setPointerChecker = function(pointerChecker) { - this.pointerChecker = pointerChecker; - }; - RoamController2.prototype.dispose = function() { - this.disable(); - }; - RoamController2.prototype._mousedownHandler = function(e2) { - if (isMiddleOrRightButtonOnMouseUpDown(e2)) { - return; - } - var el = e2.target; - while (el) { - if (el.draggable) { - return; - } - el = el.__hostTarget || el.parent; - } - var x = e2.offsetX; - var y = e2.offsetY; - if (this.pointerChecker && this.pointerChecker(e2, x, y)) { - this._x = x; - this._y = y; - this._dragging = true; - } - }; - RoamController2.prototype._mousemoveHandler = function(e2) { - if (!this._dragging || !isAvailableBehavior("moveOnMouseMove", e2, this._opt) || e2.gestureEvent === "pinch" || isTaken(this._zr, "globalPan")) { - return; - } - var x = e2.offsetX; - var y = e2.offsetY; - var oldX = this._x; - var oldY = this._y; - var dx = x - oldX; - var dy = y - oldY; - this._x = x; - this._y = y; - this._opt.preventDefaultMouseMove && stop(e2.event); - trigger(this, "pan", "moveOnMouseMove", e2, { - dx, - dy, - oldX, - oldY, - newX: x, - newY: y, - isAvailableBehavior: null - }); - }; - RoamController2.prototype._mouseupHandler = function(e2) { - if (!isMiddleOrRightButtonOnMouseUpDown(e2)) { - this._dragging = false; - } - }; - RoamController2.prototype._mousewheelHandler = function(e2) { - var shouldZoom = isAvailableBehavior("zoomOnMouseWheel", e2, this._opt); - var shouldMove = isAvailableBehavior("moveOnMouseWheel", e2, this._opt); - var wheelDelta = e2.wheelDelta; - var absWheelDeltaDelta = Math.abs(wheelDelta); - var originX = e2.offsetX; - var originY = e2.offsetY; - if (wheelDelta === 0 || !shouldZoom && !shouldMove) { - return; - } - if (shouldZoom) { - var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1; - var scale4 = wheelDelta > 0 ? factor : 1 / factor; - checkPointerAndTrigger(this, "zoom", "zoomOnMouseWheel", e2, { - scale: scale4, - originX, - originY, - isAvailableBehavior: null - }); - } - if (shouldMove) { - var absDelta = Math.abs(wheelDelta); - var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05); - checkPointerAndTrigger(this, "scrollMove", "moveOnMouseWheel", e2, { - scrollDelta, - originX, - originY, - isAvailableBehavior: null - }); - } - }; - RoamController2.prototype._pinchHandler = function(e2) { - if (isTaken(this._zr, "globalPan")) { - return; - } - var scale4 = e2.pinchScale > 1 ? 1.1 : 1 / 1.1; - checkPointerAndTrigger(this, "zoom", null, e2, { - scale: scale4, - originX: e2.pinchX, - originY: e2.pinchY, - isAvailableBehavior: null - }); - }; - return RoamController2; - }(Eventful_default) - ); - function checkPointerAndTrigger(controller, eventName, behaviorToCheck, e2, contollerEvent) { - if (controller.pointerChecker && controller.pointerChecker(e2, contollerEvent.originX, contollerEvent.originY)) { - stop(e2.event); - trigger(controller, eventName, behaviorToCheck, e2, contollerEvent); - } - } - function trigger(controller, eventName, behaviorToCheck, e2, contollerEvent) { - contollerEvent.isAvailableBehavior = bind(isAvailableBehavior, null, behaviorToCheck, e2); - controller.trigger(eventName, contollerEvent); - } - function isAvailableBehavior(behaviorToCheck, e2, settings) { - var setting = settings[behaviorToCheck]; - return !behaviorToCheck || setting && (!isString(setting) || e2.event[setting + "Key"]); - } - var RoamController_default = RoamController; - - // node_modules/echarts/lib/component/helper/roamHelper.js - function updateViewOnPan(controllerHost, dx, dy) { - var target = controllerHost.target; - target.x += dx; - target.y += dy; - target.dirty(); - } - function updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) { - var target = controllerHost.target; - var zoomLimit = controllerHost.zoomLimit; - var newZoom = controllerHost.zoom = controllerHost.zoom || 1; - newZoom *= zoomDelta; - if (zoomLimit) { - var zoomMin = zoomLimit.min || 0; - var zoomMax = zoomLimit.max || Infinity; - newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin); - } - var zoomScale = newZoom / controllerHost.zoom; - controllerHost.zoom = newZoom; - target.x -= (zoomX - target.x) * (zoomScale - 1); - target.y -= (zoomY - target.y) * (zoomScale - 1); - target.scaleX *= zoomScale; - target.scaleY *= zoomScale; - target.dirty(); - } - - // node_modules/echarts/lib/component/helper/cursorHelper.js - var IRRELEVANT_EXCLUDES = { - "axisPointer": 1, - "tooltip": 1, - "brush": 1 - }; - function onIrrelevantElement(e2, api, targetCoordSysModel) { - var model = api.getComponentByElement(e2.topTarget); - var coordSys = model && model.coordinateSystem; - return model && model !== targetCoordSysModel && !IRRELEVANT_EXCLUDES.hasOwnProperty(model.mainType) && coordSys && coordSys.model !== targetCoordSysModel; - } - - // node_modules/zrender/lib/tool/parseXML.js - function parseXML(svg) { - if (isString(svg)) { - var parser = new DOMParser(); - svg = parser.parseFromString(svg, "text/xml"); - } - var svgNode = svg; - if (svgNode.nodeType === 9) { - svgNode = svgNode.firstChild; - } - while (svgNode.nodeName.toLowerCase() !== "svg" || svgNode.nodeType !== 1) { - svgNode = svgNode.nextSibling; - } - return svgNode; - } - - // node_modules/zrender/lib/tool/parseSVG.js - var nodeParsers; - var INHERITABLE_STYLE_ATTRIBUTES_MAP = { - "fill": "fill", - "stroke": "stroke", - "stroke-width": "lineWidth", - "opacity": "opacity", - "fill-opacity": "fillOpacity", - "stroke-opacity": "strokeOpacity", - "stroke-dasharray": "lineDash", - "stroke-dashoffset": "lineDashOffset", - "stroke-linecap": "lineCap", - "stroke-linejoin": "lineJoin", - "stroke-miterlimit": "miterLimit", - "font-family": "fontFamily", - "font-size": "fontSize", - "font-style": "fontStyle", - "font-weight": "fontWeight", - "text-anchor": "textAlign", - "visibility": "visibility", - "display": "display" - }; - var INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS = keys(INHERITABLE_STYLE_ATTRIBUTES_MAP); - var SELF_STYLE_ATTRIBUTES_MAP = { - "alignment-baseline": "textBaseline", - "stop-color": "stopColor" - }; - var SELF_STYLE_ATTRIBUTES_MAP_KEYS = keys(SELF_STYLE_ATTRIBUTES_MAP); - var SVGParser = function() { - function SVGParser2() { - this._defs = {}; - this._root = null; - } - SVGParser2.prototype.parse = function(xml, opt) { - opt = opt || {}; - var svg = parseXML(xml); - if (true) { - if (!svg) { - throw new Error("Illegal svg"); - } - } - this._defsUsePending = []; - var root = new Group_default(); - this._root = root; - var named = []; - var viewBox = svg.getAttribute("viewBox") || ""; - var width = parseFloat(svg.getAttribute("width") || opt.width); - var height = parseFloat(svg.getAttribute("height") || opt.height); - isNaN(width) && (width = null); - isNaN(height) && (height = null); - parseAttributes(svg, root, null, true, false); - var child = svg.firstChild; - while (child) { - this._parseNode(child, root, named, null, false, false); - child = child.nextSibling; - } - applyDefs(this._defs, this._defsUsePending); - this._defsUsePending = []; - var viewBoxRect; - var viewBoxTransform; - if (viewBox) { - var viewBoxArr = splitNumberSequence(viewBox); - if (viewBoxArr.length >= 4) { - viewBoxRect = { - x: parseFloat(viewBoxArr[0] || 0), - y: parseFloat(viewBoxArr[1] || 0), - width: parseFloat(viewBoxArr[2]), - height: parseFloat(viewBoxArr[3]) - }; - } - } - if (viewBoxRect && width != null && height != null) { - viewBoxTransform = makeViewBoxTransform(viewBoxRect, { x: 0, y: 0, width, height }); - if (!opt.ignoreViewBox) { - var elRoot = root; - root = new Group_default(); - root.add(elRoot); - elRoot.scaleX = elRoot.scaleY = viewBoxTransform.scale; - elRoot.x = viewBoxTransform.x; - elRoot.y = viewBoxTransform.y; - } - } - if (!opt.ignoreRootClip && width != null && height != null) { - root.setClipPath(new Rect_default({ - shape: { x: 0, y: 0, width, height } - })); - } - return { - root, - width, - height, - viewBoxRect, - viewBoxTransform, - named - }; - }; - SVGParser2.prototype._parseNode = function(xmlNode, parentGroup, named, namedFrom, isInDefs, isInText) { - var nodeName = xmlNode.nodeName.toLowerCase(); - var el; - var namedFromForSub = namedFrom; - if (nodeName === "defs") { - isInDefs = true; - } - if (nodeName === "text") { - isInText = true; - } - if (nodeName === "defs" || nodeName === "switch") { - el = parentGroup; - } else { - if (!isInDefs) { - var parser_1 = nodeParsers[nodeName]; - if (parser_1 && hasOwn(nodeParsers, nodeName)) { - el = parser_1.call(this, xmlNode, parentGroup); - var nameAttr = xmlNode.getAttribute("name"); - if (nameAttr) { - var newNamed = { - name: nameAttr, - namedFrom: null, - svgNodeTagLower: nodeName, - el - }; - named.push(newNamed); - if (nodeName === "g") { - namedFromForSub = newNamed; - } - } else if (namedFrom) { - named.push({ - name: namedFrom.name, - namedFrom, - svgNodeTagLower: nodeName, - el - }); - } - parentGroup.add(el); - } - } - var parser = paintServerParsers[nodeName]; - if (parser && hasOwn(paintServerParsers, nodeName)) { - var def = parser.call(this, xmlNode); - var id = xmlNode.getAttribute("id"); - if (id) { - this._defs[id] = def; - } - } - } - if (el && el.isGroup) { - var child = xmlNode.firstChild; - while (child) { - if (child.nodeType === 1) { - this._parseNode(child, el, named, namedFromForSub, isInDefs, isInText); - } else if (child.nodeType === 3 && isInText) { - this._parseText(child, el); - } - child = child.nextSibling; - } - } - }; - SVGParser2.prototype._parseText = function(xmlNode, parentGroup) { - var text = new TSpan_default({ - style: { - text: xmlNode.textContent - }, - silent: true, - x: this._textX || 0, - y: this._textY || 0 - }); - inheritStyle(parentGroup, text); - parseAttributes(xmlNode, text, this._defsUsePending, false, false); - applyTextAlignment(text, parentGroup); - var textStyle = text.style; - var fontSize = textStyle.fontSize; - if (fontSize && fontSize < 9) { - textStyle.fontSize = 9; - text.scaleX *= fontSize / 9; - text.scaleY *= fontSize / 9; - } - var font = (textStyle.fontSize || textStyle.fontFamily) && [ - textStyle.fontStyle, - textStyle.fontWeight, - (textStyle.fontSize || 12) + "px", - textStyle.fontFamily || "sans-serif" - ].join(" "); - textStyle.font = font; - var rect = text.getBoundingRect(); - this._textX += rect.width; - parentGroup.add(text); - return text; - }; - SVGParser2.internalField = function() { - nodeParsers = { - "g": function(xmlNode, parentGroup) { - var g = new Group_default(); - inheritStyle(parentGroup, g); - parseAttributes(xmlNode, g, this._defsUsePending, false, false); - return g; - }, - "rect": function(xmlNode, parentGroup) { - var rect = new Rect_default(); - inheritStyle(parentGroup, rect); - parseAttributes(xmlNode, rect, this._defsUsePending, false, false); - rect.setShape({ - x: parseFloat(xmlNode.getAttribute("x") || "0"), - y: parseFloat(xmlNode.getAttribute("y") || "0"), - width: parseFloat(xmlNode.getAttribute("width") || "0"), - height: parseFloat(xmlNode.getAttribute("height") || "0") - }); - rect.silent = true; - return rect; - }, - "circle": function(xmlNode, parentGroup) { - var circle = new Circle_default(); - inheritStyle(parentGroup, circle); - parseAttributes(xmlNode, circle, this._defsUsePending, false, false); - circle.setShape({ - cx: parseFloat(xmlNode.getAttribute("cx") || "0"), - cy: parseFloat(xmlNode.getAttribute("cy") || "0"), - r: parseFloat(xmlNode.getAttribute("r") || "0") - }); - circle.silent = true; - return circle; - }, - "line": function(xmlNode, parentGroup) { - var line = new Line_default(); - inheritStyle(parentGroup, line); - parseAttributes(xmlNode, line, this._defsUsePending, false, false); - line.setShape({ - x1: parseFloat(xmlNode.getAttribute("x1") || "0"), - y1: parseFloat(xmlNode.getAttribute("y1") || "0"), - x2: parseFloat(xmlNode.getAttribute("x2") || "0"), - y2: parseFloat(xmlNode.getAttribute("y2") || "0") - }); - line.silent = true; - return line; - }, - "ellipse": function(xmlNode, parentGroup) { - var ellipse = new Ellipse_default(); - inheritStyle(parentGroup, ellipse); - parseAttributes(xmlNode, ellipse, this._defsUsePending, false, false); - ellipse.setShape({ - cx: parseFloat(xmlNode.getAttribute("cx") || "0"), - cy: parseFloat(xmlNode.getAttribute("cy") || "0"), - rx: parseFloat(xmlNode.getAttribute("rx") || "0"), - ry: parseFloat(xmlNode.getAttribute("ry") || "0") - }); - ellipse.silent = true; - return ellipse; - }, - "polygon": function(xmlNode, parentGroup) { - var pointsStr = xmlNode.getAttribute("points"); - var pointsArr; - if (pointsStr) { - pointsArr = parsePoints(pointsStr); - } - var polygon = new Polygon_default({ - shape: { - points: pointsArr || [] - }, - silent: true - }); - inheritStyle(parentGroup, polygon); - parseAttributes(xmlNode, polygon, this._defsUsePending, false, false); - return polygon; - }, - "polyline": function(xmlNode, parentGroup) { - var pointsStr = xmlNode.getAttribute("points"); - var pointsArr; - if (pointsStr) { - pointsArr = parsePoints(pointsStr); - } - var polyline = new Polyline_default({ - shape: { - points: pointsArr || [] - }, - silent: true - }); - inheritStyle(parentGroup, polyline); - parseAttributes(xmlNode, polyline, this._defsUsePending, false, false); - return polyline; - }, - "image": function(xmlNode, parentGroup) { - var img = new Image_default(); - inheritStyle(parentGroup, img); - parseAttributes(xmlNode, img, this._defsUsePending, false, false); - img.setStyle({ - image: xmlNode.getAttribute("xlink:href") || xmlNode.getAttribute("href"), - x: +xmlNode.getAttribute("x"), - y: +xmlNode.getAttribute("y"), - width: +xmlNode.getAttribute("width"), - height: +xmlNode.getAttribute("height") - }); - img.silent = true; - return img; - }, - "text": function(xmlNode, parentGroup) { - var x = xmlNode.getAttribute("x") || "0"; - var y = xmlNode.getAttribute("y") || "0"; - var dx = xmlNode.getAttribute("dx") || "0"; - var dy = xmlNode.getAttribute("dy") || "0"; - this._textX = parseFloat(x) + parseFloat(dx); - this._textY = parseFloat(y) + parseFloat(dy); - var g = new Group_default(); - inheritStyle(parentGroup, g); - parseAttributes(xmlNode, g, this._defsUsePending, false, true); - return g; - }, - "tspan": function(xmlNode, parentGroup) { - var x = xmlNode.getAttribute("x"); - var y = xmlNode.getAttribute("y"); - if (x != null) { - this._textX = parseFloat(x); - } - if (y != null) { - this._textY = parseFloat(y); - } - var dx = xmlNode.getAttribute("dx") || "0"; - var dy = xmlNode.getAttribute("dy") || "0"; - var g = new Group_default(); - inheritStyle(parentGroup, g); - parseAttributes(xmlNode, g, this._defsUsePending, false, true); - this._textX += parseFloat(dx); - this._textY += parseFloat(dy); - return g; - }, - "path": function(xmlNode, parentGroup) { - var d = xmlNode.getAttribute("d") || ""; - var path = createFromString(d); - inheritStyle(parentGroup, path); - parseAttributes(xmlNode, path, this._defsUsePending, false, false); - path.silent = true; - return path; - } - }; - }(); - return SVGParser2; - }(); - var paintServerParsers = { - "lineargradient": function(xmlNode) { - var x1 = parseInt(xmlNode.getAttribute("x1") || "0", 10); - var y1 = parseInt(xmlNode.getAttribute("y1") || "0", 10); - var x2 = parseInt(xmlNode.getAttribute("x2") || "10", 10); - var y2 = parseInt(xmlNode.getAttribute("y2") || "0", 10); - var gradient = new LinearGradient_default(x1, y1, x2, y2); - parsePaintServerUnit(xmlNode, gradient); - parseGradientColorStops(xmlNode, gradient); - return gradient; - }, - "radialgradient": function(xmlNode) { - var cx = parseInt(xmlNode.getAttribute("cx") || "0", 10); - var cy = parseInt(xmlNode.getAttribute("cy") || "0", 10); - var r = parseInt(xmlNode.getAttribute("r") || "0", 10); - var gradient = new RadialGradient_default(cx, cy, r); - parsePaintServerUnit(xmlNode, gradient); - parseGradientColorStops(xmlNode, gradient); - return gradient; - } - }; - function parsePaintServerUnit(xmlNode, gradient) { - var gradientUnits = xmlNode.getAttribute("gradientUnits"); - if (gradientUnits === "userSpaceOnUse") { - gradient.global = true; - } - } - function parseGradientColorStops(xmlNode, gradient) { - var stop2 = xmlNode.firstChild; - while (stop2) { - if (stop2.nodeType === 1 && stop2.nodeName.toLocaleLowerCase() === "stop") { - var offsetStr = stop2.getAttribute("offset"); - var offset3 = void 0; - if (offsetStr && offsetStr.indexOf("%") > 0) { - offset3 = parseInt(offsetStr, 10) / 100; - } else if (offsetStr) { - offset3 = parseFloat(offsetStr); - } else { - offset3 = 0; - } - var styleVals = {}; - parseInlineStyle(stop2, styleVals, styleVals); - var stopColor = styleVals.stopColor || stop2.getAttribute("stop-color") || "#000000"; - gradient.colorStops.push({ - offset: offset3, - color: stopColor - }); - } - stop2 = stop2.nextSibling; - } - } - function inheritStyle(parent, child) { - if (parent && parent.__inheritedStyle) { - if (!child.__inheritedStyle) { - child.__inheritedStyle = {}; - } - defaults(child.__inheritedStyle, parent.__inheritedStyle); - } - } - function parsePoints(pointsString) { - var list = splitNumberSequence(pointsString); - var points4 = []; - for (var i = 0; i < list.length; i += 2) { - var x = parseFloat(list[i]); - var y = parseFloat(list[i + 1]); - points4.push([x, y]); - } - return points4; - } - function parseAttributes(xmlNode, el, defsUsePending, onlyInlineStyle, isTextGroup) { - var disp = el; - var inheritedStyle = disp.__inheritedStyle = disp.__inheritedStyle || {}; - var selfStyle = {}; - if (xmlNode.nodeType === 1) { - parseTransformAttribute(xmlNode, el); - parseInlineStyle(xmlNode, inheritedStyle, selfStyle); - if (!onlyInlineStyle) { - parseAttributeStyle(xmlNode, inheritedStyle, selfStyle); - } - } - disp.style = disp.style || {}; - if (inheritedStyle.fill != null) { - disp.style.fill = getFillStrokeStyle(disp, "fill", inheritedStyle.fill, defsUsePending); - } - if (inheritedStyle.stroke != null) { - disp.style.stroke = getFillStrokeStyle(disp, "stroke", inheritedStyle.stroke, defsUsePending); - } - each([ - "lineWidth", - "opacity", - "fillOpacity", - "strokeOpacity", - "miterLimit", - "fontSize" - ], function(propName) { - if (inheritedStyle[propName] != null) { - disp.style[propName] = parseFloat(inheritedStyle[propName]); - } - }); - each([ - "lineDashOffset", - "lineCap", - "lineJoin", - "fontWeight", - "fontFamily", - "fontStyle", - "textAlign" - ], function(propName) { - if (inheritedStyle[propName] != null) { - disp.style[propName] = inheritedStyle[propName]; - } - }); - if (isTextGroup) { - disp.__selfStyle = selfStyle; - } - if (inheritedStyle.lineDash) { - disp.style.lineDash = map(splitNumberSequence(inheritedStyle.lineDash), function(str) { - return parseFloat(str); - }); - } - if (inheritedStyle.visibility === "hidden" || inheritedStyle.visibility === "collapse") { - disp.invisible = true; - } - if (inheritedStyle.display === "none") { - disp.ignore = true; - } - } - function applyTextAlignment(text, parentGroup) { - var parentSelfStyle = parentGroup.__selfStyle; - if (parentSelfStyle) { - var textBaseline = parentSelfStyle.textBaseline; - var zrTextBaseline = textBaseline; - if (!textBaseline || textBaseline === "auto") { - zrTextBaseline = "alphabetic"; - } else if (textBaseline === "baseline") { - zrTextBaseline = "alphabetic"; - } else if (textBaseline === "before-edge" || textBaseline === "text-before-edge") { - zrTextBaseline = "top"; - } else if (textBaseline === "after-edge" || textBaseline === "text-after-edge") { - zrTextBaseline = "bottom"; - } else if (textBaseline === "central" || textBaseline === "mathematical") { - zrTextBaseline = "middle"; - } - text.style.textBaseline = zrTextBaseline; - } - var parentInheritedStyle = parentGroup.__inheritedStyle; - if (parentInheritedStyle) { - var textAlign = parentInheritedStyle.textAlign; - var zrTextAlign = textAlign; - if (textAlign) { - if (textAlign === "middle") { - zrTextAlign = "center"; - } - text.style.textAlign = zrTextAlign; - } - } - } - var urlRegex = /^url\(\s*#(.*?)\)/; - function getFillStrokeStyle(el, method, str, defsUsePending) { - var urlMatch = str && str.match(urlRegex); - if (urlMatch) { - var url = trim(urlMatch[1]); - defsUsePending.push([el, method, url]); - return; - } - if (str === "none") { - str = null; - } - return str; - } - function applyDefs(defs, defsUsePending) { - for (var i = 0; i < defsUsePending.length; i++) { - var item = defsUsePending[i]; - item[0].style[item[1]] = defs[item[2]]; - } - } - var numberReg2 = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g; - function splitNumberSequence(rawStr) { - return rawStr.match(numberReg2) || []; - } - var transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.eE,]*)\)/g; - var DEGREE_TO_ANGLE = Math.PI / 180; - function parseTransformAttribute(xmlNode, node) { - var transform2 = xmlNode.getAttribute("transform"); - if (transform2) { - transform2 = transform2.replace(/,/g, " "); - var transformOps_1 = []; - var mt = null; - transform2.replace(transformRegex, function(str, type2, value2) { - transformOps_1.push(type2, value2); - return ""; - }); - for (var i = transformOps_1.length - 1; i > 0; i -= 2) { - var value = transformOps_1[i]; - var type = transformOps_1[i - 1]; - var valueArr = splitNumberSequence(value); - mt = mt || create2(); - switch (type) { - case "translate": - translate(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || "0")]); - break; - case "scale": - scale2(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || valueArr[0])]); - break; - case "rotate": - rotate(mt, mt, -parseFloat(valueArr[0]) * DEGREE_TO_ANGLE, [ - parseFloat(valueArr[1] || "0"), - parseFloat(valueArr[2] || "0") - ]); - break; - case "skewX": - var sx = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE); - mul2(mt, [1, 0, sx, 1, 0, 0], mt); - break; - case "skewY": - var sy = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE); - mul2(mt, [1, sy, 0, 1, 0, 0], mt); - break; - case "matrix": - mt[0] = parseFloat(valueArr[0]); - mt[1] = parseFloat(valueArr[1]); - mt[2] = parseFloat(valueArr[2]); - mt[3] = parseFloat(valueArr[3]); - mt[4] = parseFloat(valueArr[4]); - mt[5] = parseFloat(valueArr[5]); - break; - } - } - node.setLocalTransform(mt); - } - } - var styleRegex = /([^\s:;]+)\s*:\s*([^:;]+)/g; - function parseInlineStyle(xmlNode, inheritableStyleResult, selfStyleResult) { - var style = xmlNode.getAttribute("style"); - if (!style) { - return; - } - styleRegex.lastIndex = 0; - var styleRegResult; - while ((styleRegResult = styleRegex.exec(style)) != null) { - var svgStlAttr = styleRegResult[1]; - var zrInheritableStlAttr = hasOwn(INHERITABLE_STYLE_ATTRIBUTES_MAP, svgStlAttr) ? INHERITABLE_STYLE_ATTRIBUTES_MAP[svgStlAttr] : null; - if (zrInheritableStlAttr) { - inheritableStyleResult[zrInheritableStlAttr] = styleRegResult[2]; - } - var zrSelfStlAttr = hasOwn(SELF_STYLE_ATTRIBUTES_MAP, svgStlAttr) ? SELF_STYLE_ATTRIBUTES_MAP[svgStlAttr] : null; - if (zrSelfStlAttr) { - selfStyleResult[zrSelfStlAttr] = styleRegResult[2]; - } - } - } - function parseAttributeStyle(xmlNode, inheritableStyleResult, selfStyleResult) { - for (var i = 0; i < INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS.length; i++) { - var svgAttrName = INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS[i]; - var attrValue = xmlNode.getAttribute(svgAttrName); - if (attrValue != null) { - inheritableStyleResult[INHERITABLE_STYLE_ATTRIBUTES_MAP[svgAttrName]] = attrValue; - } - } - for (var i = 0; i < SELF_STYLE_ATTRIBUTES_MAP_KEYS.length; i++) { - var svgAttrName = SELF_STYLE_ATTRIBUTES_MAP_KEYS[i]; - var attrValue = xmlNode.getAttribute(svgAttrName); - if (attrValue != null) { - selfStyleResult[SELF_STYLE_ATTRIBUTES_MAP[svgAttrName]] = attrValue; - } - } - } - function makeViewBoxTransform(viewBoxRect, boundingRect) { - var scaleX = boundingRect.width / viewBoxRect.width; - var scaleY = boundingRect.height / viewBoxRect.height; - var scale4 = Math.min(scaleX, scaleY); - return { - scale: scale4, - x: -(viewBoxRect.x + viewBoxRect.width / 2) * scale4 + (boundingRect.x + boundingRect.width / 2), - y: -(viewBoxRect.y + viewBoxRect.height / 2) * scale4 + (boundingRect.y + boundingRect.height / 2) - }; - } - function parseSVG(xml, opt) { - var parser = new SVGParser(); - return parser.parse(xml, opt); - } - - // node_modules/echarts/lib/coord/geo/GeoSVGResource.js - var REGION_AVAILABLE_SVG_TAG_MAP = createHashMap([ - "rect", - "circle", - "line", - "ellipse", - "polygon", - "polyline", - "path", - // are also enabled because some SVG might paint text itself, - // but still need to trigger events or tooltip. - "text", - "tspan", - // is also enabled because this case: if multiple tags share one name - // and need label displayed, every tags will display the name, which is not - // expected. So we can put them into a . Thereby only one label - // displayed and located based on the bounding rect of the . - "g" - ]); - var GeoSVGResource = ( - /** @class */ - function() { - function GeoSVGResource2(mapName, svg) { - this.type = "geoSVG"; - this._usedGraphicMap = createHashMap(); - this._freedGraphics = []; - this._mapName = mapName; - this._parsedXML = parseXML(svg); - } - GeoSVGResource2.prototype.load = function() { - var firstGraphic = this._firstGraphic; - if (!firstGraphic) { - firstGraphic = this._firstGraphic = this._buildGraphic(this._parsedXML); - this._freedGraphics.push(firstGraphic); - this._boundingRect = this._firstGraphic.boundingRect.clone(); - var _a2 = createRegions(firstGraphic.named), regions = _a2.regions, regionsMap = _a2.regionsMap; - this._regions = regions; - this._regionsMap = regionsMap; - } - return { - boundingRect: this._boundingRect, - regions: this._regions, - regionsMap: this._regionsMap - }; - }; - GeoSVGResource2.prototype._buildGraphic = function(svgXML) { - var result; - var rootFromParse; - try { - result = svgXML && parseSVG(svgXML, { - ignoreViewBox: true, - ignoreRootClip: true - }) || {}; - rootFromParse = result.root; - assert(rootFromParse != null); - } catch (e2) { - throw new Error("Invalid svg format\n" + e2.message); - } - var root = new Group_default(); - root.add(rootFromParse); - root.isGeoSVGGraphicRoot = true; - var svgWidth = result.width; - var svgHeight = result.height; - var viewBoxRect = result.viewBoxRect; - var boundingRect = this._boundingRect; - if (!boundingRect) { - var bRectX = void 0; - var bRectY = void 0; - var bRectWidth = void 0; - var bRectHeight = void 0; - if (svgWidth != null) { - bRectX = 0; - bRectWidth = svgWidth; - } else if (viewBoxRect) { - bRectX = viewBoxRect.x; - bRectWidth = viewBoxRect.width; - } - if (svgHeight != null) { - bRectY = 0; - bRectHeight = svgHeight; - } else if (viewBoxRect) { - bRectY = viewBoxRect.y; - bRectHeight = viewBoxRect.height; - } - if (bRectX == null || bRectY == null) { - var calculatedBoundingRect = rootFromParse.getBoundingRect(); - if (bRectX == null) { - bRectX = calculatedBoundingRect.x; - bRectWidth = calculatedBoundingRect.width; - } - if (bRectY == null) { - bRectY = calculatedBoundingRect.y; - bRectHeight = calculatedBoundingRect.height; - } - } - boundingRect = this._boundingRect = new BoundingRect_default(bRectX, bRectY, bRectWidth, bRectHeight); - } - if (viewBoxRect) { - var viewBoxTransform = makeViewBoxTransform(viewBoxRect, boundingRect); - rootFromParse.scaleX = rootFromParse.scaleY = viewBoxTransform.scale; - rootFromParse.x = viewBoxTransform.x; - rootFromParse.y = viewBoxTransform.y; - } - root.setClipPath(new Rect_default({ - shape: boundingRect.plain() - })); - var named = []; - each(result.named, function(namedItem) { - if (REGION_AVAILABLE_SVG_TAG_MAP.get(namedItem.svgNodeTagLower) != null) { - named.push(namedItem); - setSilent(namedItem.el); - } - }); - return { - root, - boundingRect, - named - }; - }; - GeoSVGResource2.prototype.useGraphic = function(hostKey) { - var usedRootMap = this._usedGraphicMap; - var svgGraphic = usedRootMap.get(hostKey); - if (svgGraphic) { - return svgGraphic; - } - svgGraphic = this._freedGraphics.pop() || this._buildGraphic(this._parsedXML); - usedRootMap.set(hostKey, svgGraphic); - return svgGraphic; - }; - GeoSVGResource2.prototype.freeGraphic = function(hostKey) { - var usedRootMap = this._usedGraphicMap; - var svgGraphic = usedRootMap.get(hostKey); - if (svgGraphic) { - usedRootMap.removeKey(hostKey); - this._freedGraphics.push(svgGraphic); - } - }; - return GeoSVGResource2; - }() - ); - function setSilent(el) { - el.silent = false; - if (el.isGroup) { - el.traverse(function(child) { - child.silent = false; - }); - } - } - function createRegions(named) { - var regions = []; - var regionsMap = createHashMap(); - each(named, function(namedItem) { - if (namedItem.namedFrom != null) { - return; - } - var region = new GeoSVGRegion(namedItem.name, namedItem.el); - regions.push(region); - regionsMap.set(namedItem.name, region); - }); - return { - regions, - regionsMap - }; - } - - // node_modules/echarts/lib/coord/geo/fix/nanhai.js - var geoCoord = [126, 25]; - var nanhaiName = "\u5357\u6D77\u8BF8\u5C9B"; - var points2 = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, 0.7], [52, 0.7], [56, 7.7], [59, 0.7], [64, 0.7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]]; - for (i = 0; i < points2.length; i++) { - for (k = 0; k < points2[i].length; k++) { - points2[i][k][0] /= 10.5; - points2[i][k][1] /= -10.5 / 0.75; - points2[i][k][0] += geoCoord[0]; - points2[i][k][1] += geoCoord[1]; - } - } - var k; - var i; - function fixNanhai(mapType, regions) { - if (mapType === "china") { - for (var i = 0; i < regions.length; i++) { - if (regions[i].name === nanhaiName) { - return; - } - } - regions.push(new GeoJSONRegion(nanhaiName, map(points2, function(exterior) { - return { - type: "polygon", - exterior - }; - }), geoCoord)); - } - } - - // node_modules/echarts/lib/coord/geo/fix/textCoord.js - var coordsOffsetMap = { - "\u5357\u6D77\u8BF8\u5C9B": [32, 80], - // 全国 - "\u5E7F\u4E1C": [0, -10], - "\u9999\u6E2F": [10, 5], - "\u6FB3\u95E8": [-10, 10], - // '北京': [-10, 0], - "\u5929\u6D25": [5, 5] - }; - function fixTextCoords(mapType, region) { - if (mapType === "china") { - var coordFix = coordsOffsetMap[region.name]; - if (coordFix) { - var cp = region.getCenter(); - cp[0] += coordFix[0] / 10.5; - cp[1] += -coordFix[1] / (10.5 / 0.75); - region.setCenter(cp); - } - } - } - - // node_modules/echarts/lib/coord/geo/fix/diaoyuIsland.js - var points3 = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]]; - function fixDiaoyuIsland(mapType, region) { - if (mapType === "china" && region.name === "\u53F0\u6E7E") { - region.geometries.push({ - type: "polygon", - exterior: points3[0] - }); - } - } - - // node_modules/echarts/lib/coord/geo/GeoJSONResource.js - var DEFAULT_NAME_PROPERTY = "name"; - var GeoJSONResource = ( - /** @class */ - function() { - function GeoJSONResource2(mapName, geoJSON, specialAreas) { - this.type = "geoJSON"; - this._parsedMap = createHashMap(); - this._mapName = mapName; - this._specialAreas = specialAreas; - this._geoJSON = parseInput(geoJSON); - } - GeoJSONResource2.prototype.load = function(nameMap, nameProperty) { - nameProperty = nameProperty || DEFAULT_NAME_PROPERTY; - var parsed = this._parsedMap.get(nameProperty); - if (!parsed) { - var rawRegions = this._parseToRegions(nameProperty); - parsed = this._parsedMap.set(nameProperty, { - regions: rawRegions, - boundingRect: calculateBoundingRect(rawRegions) - }); - } - var regionsMap = createHashMap(); - var finalRegions = []; - each(parsed.regions, function(region) { - var regionName = region.name; - if (nameMap && hasOwn(nameMap, regionName)) { - region = region.cloneShallow(regionName = nameMap[regionName]); - } - finalRegions.push(region); - regionsMap.set(regionName, region); - }); - return { - regions: finalRegions, - boundingRect: parsed.boundingRect || new BoundingRect_default(0, 0, 0, 0), - regionsMap - }; - }; - GeoJSONResource2.prototype._parseToRegions = function(nameProperty) { - var mapName = this._mapName; - var geoJSON = this._geoJSON; - var rawRegions; - try { - rawRegions = geoJSON ? parseGeoJSON(geoJSON, nameProperty) : []; - } catch (e2) { - throw new Error("Invalid geoJson format\n" + e2.message); - } - fixNanhai(mapName, rawRegions); - each(rawRegions, function(region) { - var regionName = region.name; - fixTextCoords(mapName, region); - fixDiaoyuIsland(mapName, region); - var specialArea = this._specialAreas && this._specialAreas[regionName]; - if (specialArea) { - region.transformTo(specialArea.left, specialArea.top, specialArea.width, specialArea.height); - } - }, this); - return rawRegions; - }; - GeoJSONResource2.prototype.getMapForUser = function() { - return { - // For backward compatibility, use geoJson - // PENDING: it has been returning them without clone. - // do we need to avoid outsite modification? - geoJson: this._geoJSON, - geoJSON: this._geoJSON, - specialAreas: this._specialAreas - }; - }; - return GeoJSONResource2; - }() - ); - function calculateBoundingRect(regions) { - var rect; - for (var i = 0; i < regions.length; i++) { - var regionRect = regions[i].getBoundingRect(); - rect = rect || regionRect.clone(); - rect.union(regionRect); - } - return rect; - } - function parseInput(source) { - return !isString(source) ? source : typeof JSON !== "undefined" && JSON.parse ? JSON.parse(source) : new Function("return (" + source + ");")(); - } - - // node_modules/echarts/lib/coord/geo/geoSourceManager.js - var storage = createHashMap(); - var geoSourceManager_default = { - /** - * Compatible with previous `echarts.registerMap`. - * - * @usage - * ```js - * - * echarts.registerMap('USA', geoJson, specialAreas); - * - * echarts.registerMap('USA', { - * geoJson: geoJson, - * specialAreas: {...} - * }); - * echarts.registerMap('USA', { - * geoJSON: geoJson, - * specialAreas: {...} - * }); - * - * echarts.registerMap('airport', { - * svg: svg - * } - * ``` - * - * Note: - * Do not support that register multiple geoJSON or SVG - * one map name. Because different geoJSON and SVG have - * different unit. It's not easy to make sure how those - * units are mapping/normalize. - * If intending to use multiple geoJSON or SVG, we can - * use multiple geo coordinate system. - */ - registerMap: function(mapName, rawDef, rawSpecialAreas) { - if (rawDef.svg) { - var resource = new GeoSVGResource(mapName, rawDef.svg); - storage.set(mapName, resource); - } else { - var geoJSON = rawDef.geoJson || rawDef.geoJSON; - if (geoJSON && !rawDef.features) { - rawSpecialAreas = rawDef.specialAreas; - } else { - geoJSON = rawDef; - } - var resource = new GeoJSONResource(mapName, geoJSON, rawSpecialAreas); - storage.set(mapName, resource); - } - }, - getGeoResource: function(mapName) { - return storage.get(mapName); - }, - /** - * Only for exporting to users. - * **MUST NOT** used internally. - */ - getMapForUser: function(mapName) { - var resource = storage.get(mapName); - return resource && resource.type === "geoJSON" && resource.getMapForUser(); - }, - load: function(mapName, nameMap, nameProperty) { - var resource = storage.get(mapName); - if (!resource) { - if (true) { - console.error("Map " + mapName + " not exists. The GeoJSON of the map must be provided."); - } - return; - } - return resource.load(nameMap, nameProperty); - } - }; - - // node_modules/echarts/lib/component/helper/MapDraw.js - var OPTION_STYLE_ENABLED_TAGS = ["rect", "circle", "line", "ellipse", "polygon", "polyline", "path"]; - var OPTION_STYLE_ENABLED_TAG_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS); - var STATE_TRIGGER_TAG_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS.concat(["g"])); - var LABEL_HOST_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS.concat(["g"])); - var mapLabelRaw = makeInner(); - function getFixedItemStyle(model) { - var itemStyle = model.getItemStyle(); - var areaColor = model.get("areaColor"); - if (areaColor != null) { - itemStyle.fill = areaColor; - } - return itemStyle; - } - function fixLineStyle(styleHost) { - var style = styleHost.style; - if (style) { - style.stroke = style.stroke || style.fill; - style.fill = null; - } - } - var MapDraw = ( - /** @class */ - function() { - function MapDraw2(api) { - var group = new Group_default(); - this.uid = getUID("ec_map_draw"); - this._controller = new RoamController_default(api.getZr()); - this._controllerHost = { - target: group - }; - this.group = group; - group.add(this._regionsGroup = new Group_default()); - group.add(this._svgGroup = new Group_default()); - } - MapDraw2.prototype.draw = function(mapOrGeoModel, ecModel, api, fromView, payload) { - var isGeo = mapOrGeoModel.mainType === "geo"; - var data = mapOrGeoModel.getData && mapOrGeoModel.getData(); - isGeo && ecModel.eachComponent({ - mainType: "series", - subType: "map" - }, function(mapSeries) { - if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) { - data = mapSeries.getData(); - } - }); - var geo = mapOrGeoModel.coordinateSystem; - var regionsGroup = this._regionsGroup; - var group = this.group; - var transformInfo = geo.getTransformInfo(); - var transformInfoRaw = transformInfo.raw; - var transformInfoRoam = transformInfo.roam; - var isFirstDraw = !regionsGroup.childAt(0) || payload; - if (isFirstDraw) { - group.x = transformInfoRoam.x; - group.y = transformInfoRoam.y; - group.scaleX = transformInfoRoam.scaleX; - group.scaleY = transformInfoRoam.scaleY; - group.dirty(); - } else { - updateProps(group, transformInfoRoam, mapOrGeoModel); - } - var isVisualEncodedByVisualMap = data && data.getVisual("visualMeta") && data.getVisual("visualMeta").length > 0; - var viewBuildCtx = { - api, - geo, - mapOrGeoModel, - data, - isVisualEncodedByVisualMap, - isGeo, - transformInfoRaw - }; - if (geo.resourceType === "geoJSON") { - this._buildGeoJSON(viewBuildCtx); - } else if (geo.resourceType === "geoSVG") { - this._buildSVG(viewBuildCtx); - } - this._updateController(mapOrGeoModel, ecModel, api); - this._updateMapSelectHandler(mapOrGeoModel, regionsGroup, api, fromView); - }; - MapDraw2.prototype._buildGeoJSON = function(viewBuildCtx) { - var regionsGroupByName = this._regionsGroupByName = createHashMap(); - var regionsInfoByName = createHashMap(); - var regionsGroup = this._regionsGroup; - var transformInfoRaw = viewBuildCtx.transformInfoRaw; - var mapOrGeoModel = viewBuildCtx.mapOrGeoModel; - var data = viewBuildCtx.data; - var projection = viewBuildCtx.geo.projection; - var projectionStream = projection && projection.stream; - function transformPoint(point, project) { - if (project) { - point = project(point); - } - return point && [point[0] * transformInfoRaw.scaleX + transformInfoRaw.x, point[1] * transformInfoRaw.scaleY + transformInfoRaw.y]; - } - ; - function transformPolygonPoints(inPoints) { - var outPoints = []; - var project = !projectionStream && projection && projection.project; - for (var i = 0; i < inPoints.length; ++i) { - var newPt = transformPoint(inPoints[i], project); - newPt && outPoints.push(newPt); - } - return outPoints; - } - function getPolyShape(points4) { - return { - shape: { - points: transformPolygonPoints(points4) - } - }; - } - regionsGroup.removeAll(); - each(viewBuildCtx.geo.regions, function(region) { - var regionName = region.name; - var regionGroup = regionsGroupByName.get(regionName); - var _a2 = regionsInfoByName.get(regionName) || {}, dataIdx = _a2.dataIdx, regionModel = _a2.regionModel; - if (!regionGroup) { - regionGroup = regionsGroupByName.set(regionName, new Group_default()); - regionsGroup.add(regionGroup); - dataIdx = data ? data.indexOfName(regionName) : null; - regionModel = viewBuildCtx.isGeo ? mapOrGeoModel.getRegionModel(regionName) : data ? data.getItemModel(dataIdx) : null; - var silent = regionModel.get("silent", true); - silent != null && (regionGroup.silent = silent); - regionsInfoByName.set(regionName, { - dataIdx, - regionModel - }); - } - var polygonSubpaths = []; - var polylineSubpaths = []; - each(region.geometries, function(geometry) { - if (geometry.type === "polygon") { - var polys = [geometry.exterior].concat(geometry.interiors || []); - if (projectionStream) { - polys = projectPolys(polys, projectionStream); - } - each(polys, function(poly) { - polygonSubpaths.push(new Polygon_default(getPolyShape(poly))); - }); - } else { - var points4 = geometry.points; - if (projectionStream) { - points4 = projectPolys(points4, projectionStream, true); - } - each(points4, function(points5) { - polylineSubpaths.push(new Polyline_default(getPolyShape(points5))); - }); - } - }); - var centerPt = transformPoint(region.getCenter(), projection && projection.project); - function createCompoundPath(subpaths, isLine) { - if (!subpaths.length) { - return; - } - var compoundPath = new CompoundPath_default({ - culling: true, - segmentIgnoreThreshold: 1, - shape: { - paths: subpaths - } - }); - regionGroup.add(compoundPath); - applyOptionStyleForRegion(viewBuildCtx, compoundPath, dataIdx, regionModel); - resetLabelForRegion(viewBuildCtx, compoundPath, regionName, regionModel, mapOrGeoModel, dataIdx, centerPt); - if (isLine) { - fixLineStyle(compoundPath); - each(compoundPath.states, fixLineStyle); - } - } - createCompoundPath(polygonSubpaths); - createCompoundPath(polylineSubpaths, true); - }); - regionsGroupByName.each(function(regionGroup, regionName) { - var _a2 = regionsInfoByName.get(regionName), dataIdx = _a2.dataIdx, regionModel = _a2.regionModel; - resetEventTriggerForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel, dataIdx); - resetTooltipForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel); - resetStateTriggerForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel); - }, this); - }; - MapDraw2.prototype._buildSVG = function(viewBuildCtx) { - var mapName = viewBuildCtx.geo.map; - var transformInfoRaw = viewBuildCtx.transformInfoRaw; - this._svgGroup.x = transformInfoRaw.x; - this._svgGroup.y = transformInfoRaw.y; - this._svgGroup.scaleX = transformInfoRaw.scaleX; - this._svgGroup.scaleY = transformInfoRaw.scaleY; - if (this._svgResourceChanged(mapName)) { - this._freeSVG(); - this._useSVG(mapName); - } - var svgDispatcherMap = this._svgDispatcherMap = createHashMap(); - var focusSelf = false; - each(this._svgGraphicRecord.named, function(namedItem) { - var regionName = namedItem.name; - var mapOrGeoModel = viewBuildCtx.mapOrGeoModel; - var data = viewBuildCtx.data; - var svgNodeTagLower = namedItem.svgNodeTagLower; - var el = namedItem.el; - var dataIdx = data ? data.indexOfName(regionName) : null; - var regionModel = mapOrGeoModel.getRegionModel(regionName); - if (OPTION_STYLE_ENABLED_TAG_MAP.get(svgNodeTagLower) != null && el instanceof Displayable_default) { - applyOptionStyleForRegion(viewBuildCtx, el, dataIdx, regionModel); - } - if (el instanceof Displayable_default) { - el.culling = true; - } - var silent = regionModel.get("silent", true); - silent != null && (el.silent = silent); - el.z2EmphasisLift = 0; - if (!namedItem.namedFrom) { - if (LABEL_HOST_MAP.get(svgNodeTagLower) != null) { - resetLabelForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx, null); - } - resetEventTriggerForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx); - resetTooltipForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel); - if (STATE_TRIGGER_TAG_MAP.get(svgNodeTagLower) != null) { - var focus_1 = resetStateTriggerForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel); - if (focus_1 === "self") { - focusSelf = true; - } - var els = svgDispatcherMap.get(regionName) || svgDispatcherMap.set(regionName, []); - els.push(el); - } - } - }, this); - this._enableBlurEntireSVG(focusSelf, viewBuildCtx); - }; - MapDraw2.prototype._enableBlurEntireSVG = function(focusSelf, viewBuildCtx) { - if (focusSelf && viewBuildCtx.isGeo) { - var blurStyle = viewBuildCtx.mapOrGeoModel.getModel(["blur", "itemStyle"]).getItemStyle(); - var opacity_1 = blurStyle.opacity; - this._svgGraphicRecord.root.traverse(function(el) { - if (!el.isGroup) { - setDefaultStateProxy(el); - var style = el.ensureState("blur").style || {}; - if (style.opacity == null && opacity_1 != null) { - style.opacity = opacity_1; - } - el.ensureState("emphasis"); - } - }); - } - }; - MapDraw2.prototype.remove = function() { - this._regionsGroup.removeAll(); - this._regionsGroupByName = null; - this._svgGroup.removeAll(); - this._freeSVG(); - this._controller.dispose(); - this._controllerHost = null; - }; - MapDraw2.prototype.findHighDownDispatchers = function(name, geoModel) { - if (name == null) { - return []; - } - var geo = geoModel.coordinateSystem; - if (geo.resourceType === "geoJSON") { - var regionsGroupByName = this._regionsGroupByName; - if (regionsGroupByName) { - var regionGroup = regionsGroupByName.get(name); - return regionGroup ? [regionGroup] : []; - } - } else if (geo.resourceType === "geoSVG") { - return this._svgDispatcherMap && this._svgDispatcherMap.get(name) || []; - } - }; - MapDraw2.prototype._svgResourceChanged = function(mapName) { - return this._svgMapName !== mapName; - }; - MapDraw2.prototype._useSVG = function(mapName) { - var resource = geoSourceManager_default.getGeoResource(mapName); - if (resource && resource.type === "geoSVG") { - var svgGraphic = resource.useGraphic(this.uid); - this._svgGroup.add(svgGraphic.root); - this._svgGraphicRecord = svgGraphic; - this._svgMapName = mapName; - } - }; - MapDraw2.prototype._freeSVG = function() { - var mapName = this._svgMapName; - if (mapName == null) { - return; - } - var resource = geoSourceManager_default.getGeoResource(mapName); - if (resource && resource.type === "geoSVG") { - resource.freeGraphic(this.uid); - } - this._svgGraphicRecord = null; - this._svgDispatcherMap = null; - this._svgGroup.removeAll(); - this._svgMapName = null; - }; - MapDraw2.prototype._updateController = function(mapOrGeoModel, ecModel, api) { - var geo = mapOrGeoModel.coordinateSystem; - var controller = this._controller; - var controllerHost = this._controllerHost; - controllerHost.zoomLimit = mapOrGeoModel.get("scaleLimit"); - controllerHost.zoom = geo.getZoom(); - controller.enable(mapOrGeoModel.get("roam") || false); - var mainType = mapOrGeoModel.mainType; - function makeActionBase() { - var action = { - type: "geoRoam", - componentType: mainType - }; - action[mainType + "Id"] = mapOrGeoModel.id; - return action; - } - controller.off("pan").on("pan", function(e2) { - this._mouseDownFlag = false; - updateViewOnPan(controllerHost, e2.dx, e2.dy); - api.dispatchAction(extend(makeActionBase(), { - dx: e2.dx, - dy: e2.dy, - animation: { - duration: 0 - } - })); - }, this); - controller.off("zoom").on("zoom", function(e2) { - this._mouseDownFlag = false; - updateViewOnZoom(controllerHost, e2.scale, e2.originX, e2.originY); - api.dispatchAction(extend(makeActionBase(), { - totalZoom: controllerHost.zoom, - zoom: e2.scale, - originX: e2.originX, - originY: e2.originY, - animation: { - duration: 0 - } - })); - }, this); - controller.setPointerChecker(function(e2, x, y) { - return geo.containPoint([x, y]) && !onIrrelevantElement(e2, api, mapOrGeoModel); - }); - }; - MapDraw2.prototype.resetForLabelLayout = function() { - this.group.traverse(function(el) { - var label = el.getTextContent(); - if (label) { - label.ignore = mapLabelRaw(label).ignore; - } - }); - }; - MapDraw2.prototype._updateMapSelectHandler = function(mapOrGeoModel, regionsGroup, api, fromView) { - var mapDraw = this; - regionsGroup.off("mousedown"); - regionsGroup.off("click"); - if (mapOrGeoModel.get("selectedMode")) { - regionsGroup.on("mousedown", function() { - mapDraw._mouseDownFlag = true; - }); - regionsGroup.on("click", function(e2) { - if (!mapDraw._mouseDownFlag) { - return; - } - mapDraw._mouseDownFlag = false; - }); - } - }; - return MapDraw2; - }() - ); - function applyOptionStyleForRegion(viewBuildCtx, el, dataIndex, regionModel) { - var normalStyleModel = regionModel.getModel("itemStyle"); - var emphasisStyleModel = regionModel.getModel(["emphasis", "itemStyle"]); - var blurStyleModel = regionModel.getModel(["blur", "itemStyle"]); - var selectStyleModel = regionModel.getModel(["select", "itemStyle"]); - var normalStyle = getFixedItemStyle(normalStyleModel); - var emphasisStyle = getFixedItemStyle(emphasisStyleModel); - var selectStyle = getFixedItemStyle(selectStyleModel); - var blurStyle = getFixedItemStyle(blurStyleModel); - var data = viewBuildCtx.data; - if (data) { - var style = data.getItemVisual(dataIndex, "style"); - var decal = data.getItemVisual(dataIndex, "decal"); - if (viewBuildCtx.isVisualEncodedByVisualMap && style.fill) { - normalStyle.fill = style.fill; - } - if (decal) { - normalStyle.decal = createOrUpdatePatternFromDecal(decal, viewBuildCtx.api); - } - } - el.setStyle(normalStyle); - el.style.strokeNoScale = true; - el.ensureState("emphasis").style = emphasisStyle; - el.ensureState("select").style = selectStyle; - el.ensureState("blur").style = blurStyle; - setDefaultStateProxy(el); - } - function resetLabelForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx, labelXY) { - var data = viewBuildCtx.data; - var isGeo = viewBuildCtx.isGeo; - var isDataNaN = data && isNaN(data.get(data.mapDimension("value"), dataIdx)); - var itemLayout = data && data.getItemLayout(dataIdx); - if (isGeo || isDataNaN || itemLayout && itemLayout.showLabel) { - var query = !isGeo ? dataIdx : regionName; - var labelFetcher = void 0; - if (!data || dataIdx >= 0) { - labelFetcher = mapOrGeoModel; - } - var specifiedTextOpt = labelXY ? { - normal: { - align: "center", - verticalAlign: "middle" - } - } : null; - setLabelStyle(el, getLabelStatesModels(regionModel), { - labelFetcher, - labelDataIndex: query, - defaultText: regionName - }, specifiedTextOpt); - var textEl = el.getTextContent(); - if (textEl) { - mapLabelRaw(textEl).ignore = textEl.ignore; - if (el.textConfig && labelXY) { - var rect = el.getBoundingRect().clone(); - el.textConfig.layoutRect = rect; - el.textConfig.position = [(labelXY[0] - rect.x) / rect.width * 100 + "%", (labelXY[1] - rect.y) / rect.height * 100 + "%"]; - } - } - el.disableLabelAnimation = true; - } else { - el.removeTextContent(); - el.removeTextConfig(); - el.disableLabelAnimation = null; - } - } - function resetEventTriggerForRegion(viewBuildCtx, eventTrigger, regionName, regionModel, mapOrGeoModel, dataIdx) { - if (viewBuildCtx.data) { - viewBuildCtx.data.setItemGraphicEl(dataIdx, eventTrigger); - } else { - getECData(eventTrigger).eventData = { - componentType: "geo", - componentIndex: mapOrGeoModel.componentIndex, - geoIndex: mapOrGeoModel.componentIndex, - name: regionName, - region: regionModel && regionModel.option || {} - }; - } - } - function resetTooltipForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel) { - if (!viewBuildCtx.data) { - setTooltipConfig({ - el, - componentModel: mapOrGeoModel, - itemName: regionName, - // @ts-ignore FIXME:TS fix the "compatible with each other"? - itemTooltipOption: regionModel.get("tooltip") - }); - } - } - function resetStateTriggerForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel) { - el.highDownSilentOnTouch = !!mapOrGeoModel.get("selectedMode"); - var emphasisModel = regionModel.getModel("emphasis"); - var focus = emphasisModel.get("focus"); - toggleHoverEmphasis(el, focus, emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - if (viewBuildCtx.isGeo) { - enableComponentHighDownFeatures(el, mapOrGeoModel, regionName); - } - return focus; - } - function projectPolys(rings, createStream, isLine) { - var polygons = []; - var curPoly; - function startPolygon() { - curPoly = []; - } - function endPolygon() { - if (curPoly.length) { - polygons.push(curPoly); - curPoly = []; - } - } - var stream = createStream({ - polygonStart: startPolygon, - polygonEnd: endPolygon, - lineStart: startPolygon, - lineEnd: endPolygon, - point: function(x, y) { - if (isFinite(x) && isFinite(y)) { - curPoly.push([x, y]); - } - }, - sphere: function() { - } - }); - !isLine && stream.polygonStart(); - each(rings, function(ring) { - stream.lineStart(); - for (var i = 0; i < ring.length; i++) { - stream.point(ring[i][0], ring[i][1]); - } - stream.lineEnd(); - }); - !isLine && stream.polygonEnd(); - return polygons; - } - var MapDraw_default = MapDraw; - - // node_modules/echarts/lib/chart/map/MapView.js - var MapView = ( - /** @class */ - function(_super) { - __extends(MapView2, _super); - function MapView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MapView2.type; - return _this; - } - MapView2.prototype.render = function(mapModel, ecModel, api, payload) { - if (payload && payload.type === "mapToggleSelect" && payload.from === this.uid) { - return; - } - var group = this.group; - group.removeAll(); - if (mapModel.getHostGeoModel()) { - return; - } - if (this._mapDraw && payload && payload.type === "geoRoam") { - this._mapDraw.resetForLabelLayout(); - } - if (!(payload && payload.type === "geoRoam" && payload.componentType === "series" && payload.seriesId === mapModel.id)) { - if (mapModel.needsDrawMap) { - var mapDraw = this._mapDraw || new MapDraw_default(api); - group.add(mapDraw.group); - mapDraw.draw(mapModel, ecModel, api, this, payload); - this._mapDraw = mapDraw; - } else { - this._mapDraw && this._mapDraw.remove(); - this._mapDraw = null; - } - } else { - var mapDraw = this._mapDraw; - mapDraw && group.add(mapDraw.group); - } - mapModel.get("showLegendSymbol") && ecModel.getComponent("legend") && this._renderSymbols(mapModel, ecModel, api); - }; - MapView2.prototype.remove = function() { - this._mapDraw && this._mapDraw.remove(); - this._mapDraw = null; - this.group.removeAll(); - }; - MapView2.prototype.dispose = function() { - this._mapDraw && this._mapDraw.remove(); - this._mapDraw = null; - }; - MapView2.prototype._renderSymbols = function(mapModel, ecModel, api) { - var originalData = mapModel.originalData; - var group = this.group; - originalData.each(originalData.mapDimension("value"), function(value, originalDataIndex) { - if (isNaN(value)) { - return; - } - var layout5 = originalData.getItemLayout(originalDataIndex); - if (!layout5 || !layout5.point) { - return; - } - var point = layout5.point; - var offset3 = layout5.offset; - var circle = new Circle_default({ - style: { - // Because the special of map draw. - // Which needs statistic of multiple series and draw on one map. - // And each series also need a symbol with legend color - // - // Layout and visual are put one the different data - // TODO - fill: mapModel.getData().getVisual("style").fill - }, - shape: { - cx: point[0] + offset3 * 9, - cy: point[1], - r: 3 - }, - silent: true, - // Do not overlap the first series, on which labels are displayed. - z2: 8 + (!offset3 ? Z2_EMPHASIS_LIFT + 1 : 0) - }); - if (!offset3) { - var fullData = mapModel.mainSeries.getData(); - var name_1 = originalData.getName(originalDataIndex); - var fullIndex_1 = fullData.indexOfName(name_1); - var itemModel = originalData.getItemModel(originalDataIndex); - var labelModel = itemModel.getModel("label"); - var regionGroup = fullData.getItemGraphicEl(fullIndex_1); - setLabelStyle(circle, getLabelStatesModels(itemModel), { - labelFetcher: { - getFormattedLabel: function(idx, state) { - return mapModel.getFormattedLabel(fullIndex_1, state); - } - }, - defaultText: name_1 - }); - circle.disableLabelAnimation = true; - if (!labelModel.get("position")) { - circle.setTextConfig({ - position: "bottom" - }); - } - regionGroup.onHoverStateChange = function(toState) { - setStatesFlag(circle, toState); - }; - } - group.add(circle); - }); - }; - MapView2.type = "map"; - return MapView2; - }(Chart_default) - ); - var MapView_default = MapView; - - // node_modules/echarts/lib/chart/map/MapSeries.js - var MapSeries = ( - /** @class */ - function(_super) { - __extends(MapSeries2, _super); - function MapSeries2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MapSeries2.type; - _this.needsDrawMap = false; - _this.seriesGroup = []; - _this.getTooltipPosition = function(dataIndex) { - if (dataIndex != null) { - var name_1 = this.getData().getName(dataIndex); - var geo = this.coordinateSystem; - var region = geo.getRegion(name_1); - return region && geo.dataToPoint(region.getCenter()); - } - }; - return _this; - } - MapSeries2.prototype.getInitialData = function(option) { - var data = createSeriesDataSimply(this, { - coordDimensions: ["value"], - encodeDefaulter: curry(makeSeriesEncodeForNameBased, this) - }); - var dataNameIndexMap = createHashMap(); - var toAppendItems = []; - for (var i = 0, len2 = data.count(); i < len2; i++) { - var name_2 = data.getName(i); - dataNameIndexMap.set(name_2, i); - } - var geoSource = geoSourceManager_default.load(this.getMapType(), this.option.nameMap, this.option.nameProperty); - each(geoSource.regions, function(region) { - var name = region.name; - var dataNameIdx = dataNameIndexMap.get(name); - var specifiedGeoJSONRegionStyle = region.properties && region.properties.echartsStyle; - var dataItem; - if (dataNameIdx == null) { - dataItem = { - name - }; - toAppendItems.push(dataItem); - } else { - dataItem = data.getRawDataItem(dataNameIdx); - } - specifiedGeoJSONRegionStyle && merge(dataItem, specifiedGeoJSONRegionStyle); - }); - data.appendData(toAppendItems); - return data; - }; - MapSeries2.prototype.getHostGeoModel = function() { - var geoIndex = this.option.geoIndex; - return geoIndex != null ? this.ecModel.getComponent("geo", geoIndex) : null; - }; - MapSeries2.prototype.getMapType = function() { - return (this.getHostGeoModel() || this).option.map; - }; - MapSeries2.prototype.getRawValue = function(dataIndex) { - var data = this.getData(); - return data.get(data.mapDimension("value"), dataIndex); - }; - MapSeries2.prototype.getRegionModel = function(regionName) { - var data = this.getData(); - return data.getItemModel(data.indexOfName(regionName)); - }; - MapSeries2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - var data = this.getData(); - var value = this.getRawValue(dataIndex); - var name = data.getName(dataIndex); - var seriesGroup = this.seriesGroup; - var seriesNames = []; - for (var i = 0; i < seriesGroup.length; i++) { - var otherIndex = seriesGroup[i].originalData.indexOfName(name); - var valueDim = data.mapDimension("value"); - if (!isNaN(seriesGroup[i].originalData.get(valueDim, otherIndex))) { - seriesNames.push(seriesGroup[i].name); - } - } - return createTooltipMarkup("section", { - header: seriesNames.join(", "), - noHeader: !seriesNames.length, - blocks: [createTooltipMarkup("nameValue", { - name, - value - })] - }); - }; - MapSeries2.prototype.setZoom = function(zoom) { - this.option.zoom = zoom; - }; - MapSeries2.prototype.setCenter = function(center3) { - this.option.center = center3; - }; - MapSeries2.prototype.getLegendIcon = function(opt) { - var iconType = opt.icon || "roundRect"; - var icon = createSymbol(iconType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill); - icon.setStyle(opt.itemStyle); - icon.style.stroke = "none"; - if (iconType.indexOf("empty") > -1) { - icon.style.stroke = icon.style.fill; - icon.style.fill = "#fff"; - icon.style.lineWidth = 2; - } - return icon; - }; - MapSeries2.type = "series.map"; - MapSeries2.dependencies = ["geo"]; - MapSeries2.layoutMode = "box"; - MapSeries2.defaultOption = { - // 一级层叠 - // zlevel: 0, - // 二级层叠 - z: 2, - coordinateSystem: "geo", - // map should be explicitly specified since ec3. - map: "", - // If `geoIndex` is not specified, a exclusive geo will be - // created. Otherwise use the specified geo component, and - // `map` and `mapType` are ignored. - // geoIndex: 0, - // 'center' | 'left' | 'right' | 'x%' | {number} - left: "center", - // 'center' | 'top' | 'bottom' | 'x%' | {number} - top: "center", - // right - // bottom - // width: - // height - // Aspect is width / height. Inited to be geoJson bbox aspect - // This parameter is used for scale this aspect - // Default value: - // for geoSVG source: 1, - // for geoJSON source: 0.75. - aspectScale: null, - // Layout with center and size - // If you want to put map in a fixed size box with right aspect ratio - // This two properties may be more convenient. - // layoutCenter: [50%, 50%] - // layoutSize: 100 - showLegendSymbol: true, - // Define left-top, right-bottom coords to control view - // For example, [ [180, 90], [-180, -90] ], - // higher priority than center and zoom - boundingCoords: null, - // Default on center of map - center: null, - zoom: 1, - scaleLimit: null, - selectedMode: true, - label: { - show: false, - color: "#000" - }, - // scaleLimit: null, - itemStyle: { - borderWidth: 0.5, - borderColor: "#444", - areaColor: "#eee" - }, - emphasis: { - label: { - show: true, - color: "rgb(100,0,0)" - }, - itemStyle: { - areaColor: "rgba(255,215,0,0.8)" - } - }, - select: { - label: { - show: true, - color: "rgb(100,0,0)" - }, - itemStyle: { - color: "rgba(255,215,0,0.8)" - } - }, - nameProperty: "name" - }; - return MapSeries2; - }(Series_default) - ); - var MapSeries_default = MapSeries; - - // node_modules/echarts/lib/chart/map/mapDataStatistic.js - function dataStatistics(datas, statisticType) { - var dataNameMap = {}; - each(datas, function(data) { - data.each(data.mapDimension("value"), function(value, idx) { - var mapKey = "ec-" + data.getName(idx); - dataNameMap[mapKey] = dataNameMap[mapKey] || []; - if (!isNaN(value)) { - dataNameMap[mapKey].push(value); - } - }); - }); - return datas[0].map(datas[0].mapDimension("value"), function(value, idx) { - var mapKey = "ec-" + datas[0].getName(idx); - var sum2 = 0; - var min4 = Infinity; - var max4 = -Infinity; - var len2 = dataNameMap[mapKey].length; - for (var i = 0; i < len2; i++) { - min4 = Math.min(min4, dataNameMap[mapKey][i]); - max4 = Math.max(max4, dataNameMap[mapKey][i]); - sum2 += dataNameMap[mapKey][i]; - } - var result; - if (statisticType === "min") { - result = min4; - } else if (statisticType === "max") { - result = max4; - } else if (statisticType === "average") { - result = sum2 / len2; - } else { - result = sum2; - } - return len2 === 0 ? NaN : result; - }); - } - function mapDataStatistic(ecModel) { - var seriesGroups = {}; - ecModel.eachSeriesByType("map", function(seriesModel) { - var hostGeoModel = seriesModel.getHostGeoModel(); - var key = hostGeoModel ? "o" + hostGeoModel.id : "i" + seriesModel.getMapType(); - (seriesGroups[key] = seriesGroups[key] || []).push(seriesModel); - }); - each(seriesGroups, function(seriesList, key) { - var data = dataStatistics(map(seriesList, function(seriesModel) { - return seriesModel.getData(); - }), seriesList[0].get("mapValueCalculation")); - for (var i = 0; i < seriesList.length; i++) { - seriesList[i].originalData = seriesList[i].getData(); - } - for (var i = 0; i < seriesList.length; i++) { - seriesList[i].seriesGroup = seriesList; - seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel(); - seriesList[i].setData(data.cloneShallow()); - seriesList[i].mainSeries = seriesList[0]; - } - }); - } - - // node_modules/echarts/lib/chart/map/mapSymbolLayout.js - function mapSymbolLayout(ecModel) { - var processedMapType = {}; - ecModel.eachSeriesByType("map", function(mapSeries) { - var mapType = mapSeries.getMapType(); - if (mapSeries.getHostGeoModel() || processedMapType[mapType]) { - return; - } - var mapSymbolOffsets = {}; - each(mapSeries.seriesGroup, function(subMapSeries) { - var geo = subMapSeries.coordinateSystem; - var data2 = subMapSeries.originalData; - if (subMapSeries.get("showLegendSymbol") && ecModel.getComponent("legend")) { - data2.each(data2.mapDimension("value"), function(value, idx) { - var name = data2.getName(idx); - var region = geo.getRegion(name); - if (!region || isNaN(value)) { - return; - } - var offset3 = mapSymbolOffsets[name] || 0; - var point = geo.dataToPoint(region.getCenter()); - mapSymbolOffsets[name] = offset3 + 1; - data2.setItemLayout(idx, { - point, - offset: offset3 - }); - }); - } - }); - var data = mapSeries.getData(); - data.each(function(idx) { - var name = data.getName(idx); - var layout5 = data.getItemLayout(idx) || {}; - layout5.showLabel = !mapSymbolOffsets[name]; - data.setItemLayout(idx, layout5); - }); - processedMapType[mapType] = true; - }); - } - - // node_modules/echarts/lib/coord/View.js - var v2ApplyTransform = applyTransform; - var View = ( - /** @class */ - function(_super) { - __extends(View3, _super); - function View3(name) { - var _this = _super.call(this) || this; - _this.type = "view"; - _this.dimensions = ["x", "y"]; - _this._roamTransformable = new Transformable_default(); - _this._rawTransformable = new Transformable_default(); - _this.name = name; - return _this; - } - View3.prototype.setBoundingRect = function(x, y, width, height) { - this._rect = new BoundingRect_default(x, y, width, height); - return this._rect; - }; - View3.prototype.getBoundingRect = function() { - return this._rect; - }; - View3.prototype.setViewRect = function(x, y, width, height) { - this._transformTo(x, y, width, height); - this._viewRect = new BoundingRect_default(x, y, width, height); - }; - View3.prototype._transformTo = function(x, y, width, height) { - var rect = this.getBoundingRect(); - var rawTransform = this._rawTransformable; - rawTransform.transform = rect.calculateTransform(new BoundingRect_default(x, y, width, height)); - var rawParent = rawTransform.parent; - rawTransform.parent = null; - rawTransform.decomposeTransform(); - rawTransform.parent = rawParent; - this._updateTransform(); - }; - View3.prototype.setCenter = function(centerCoord, api) { - if (!centerCoord) { - return; - } - this._center = [parsePercent2(centerCoord[0], api.getWidth()), parsePercent2(centerCoord[1], api.getHeight())]; - this._updateCenterAndZoom(); - }; - View3.prototype.setZoom = function(zoom) { - zoom = zoom || 1; - var zoomLimit = this.zoomLimit; - if (zoomLimit) { - if (zoomLimit.max != null) { - zoom = Math.min(zoomLimit.max, zoom); - } - if (zoomLimit.min != null) { - zoom = Math.max(zoomLimit.min, zoom); - } - } - this._zoom = zoom; - this._updateCenterAndZoom(); - }; - View3.prototype.getDefaultCenter = function() { - var rawRect = this.getBoundingRect(); - var cx = rawRect.x + rawRect.width / 2; - var cy = rawRect.y + rawRect.height / 2; - return [cx, cy]; - }; - View3.prototype.getCenter = function() { - return this._center || this.getDefaultCenter(); - }; - View3.prototype.getZoom = function() { - return this._zoom || 1; - }; - View3.prototype.getRoamTransform = function() { - return this._roamTransformable.getLocalTransform(); - }; - View3.prototype._updateCenterAndZoom = function() { - var rawTransformMatrix = this._rawTransformable.getLocalTransform(); - var roamTransform = this._roamTransformable; - var defaultCenter = this.getDefaultCenter(); - var center3 = this.getCenter(); - var zoom = this.getZoom(); - center3 = applyTransform([], center3, rawTransformMatrix); - defaultCenter = applyTransform([], defaultCenter, rawTransformMatrix); - roamTransform.originX = center3[0]; - roamTransform.originY = center3[1]; - roamTransform.x = defaultCenter[0] - center3[0]; - roamTransform.y = defaultCenter[1] - center3[1]; - roamTransform.scaleX = roamTransform.scaleY = zoom; - this._updateTransform(); - }; - View3.prototype._updateTransform = function() { - var roamTransformable = this._roamTransformable; - var rawTransformable = this._rawTransformable; - rawTransformable.parent = roamTransformable; - roamTransformable.updateTransform(); - rawTransformable.updateTransform(); - copy2(this.transform || (this.transform = []), rawTransformable.transform || create2()); - this._rawTransform = rawTransformable.getLocalTransform(); - this.invTransform = this.invTransform || []; - invert(this.invTransform, this.transform); - this.decomposeTransform(); - }; - View3.prototype.getTransformInfo = function() { - var rawTransformable = this._rawTransformable; - var roamTransformable = this._roamTransformable; - var dummyTransformable2 = new Transformable_default(); - dummyTransformable2.transform = roamTransformable.transform; - dummyTransformable2.decomposeTransform(); - return { - roam: { - x: dummyTransformable2.x, - y: dummyTransformable2.y, - scaleX: dummyTransformable2.scaleX, - scaleY: dummyTransformable2.scaleY - }, - raw: { - x: rawTransformable.x, - y: rawTransformable.y, - scaleX: rawTransformable.scaleX, - scaleY: rawTransformable.scaleY - } - }; - }; - View3.prototype.getViewRect = function() { - return this._viewRect; - }; - View3.prototype.getViewRectAfterRoam = function() { - var rect = this.getBoundingRect().clone(); - rect.applyTransform(this.transform); - return rect; - }; - View3.prototype.dataToPoint = function(data, noRoam, out2) { - var transform2 = noRoam ? this._rawTransform : this.transform; - out2 = out2 || []; - return transform2 ? v2ApplyTransform(out2, data, transform2) : copy(out2, data); - }; - View3.prototype.pointToData = function(point) { - var invTransform = this.invTransform; - return invTransform ? v2ApplyTransform([], point, invTransform) : [point[0], point[1]]; - }; - View3.prototype.convertToPixel = function(ecModel, finder, value) { - var coordSys = getCoordSys(finder); - return coordSys === this ? coordSys.dataToPoint(value) : null; - }; - View3.prototype.convertFromPixel = function(ecModel, finder, pixel) { - var coordSys = getCoordSys(finder); - return coordSys === this ? coordSys.pointToData(pixel) : null; - }; - View3.prototype.containPoint = function(point) { - return this.getViewRectAfterRoam().contain(point[0], point[1]); - }; - View3.dimensions = ["x", "y"]; - return View3; - }(Transformable_default) - ); - function getCoordSys(finder) { - var seriesModel = finder.seriesModel; - return seriesModel ? seriesModel.coordinateSystem : null; - } - var View_default = View; - - // node_modules/echarts/lib/coord/geo/Geo.js - var GEO_DEFAULT_PARAMS = { - "geoJSON": { - aspectScale: 0.75, - invertLongitute: true - }, - "geoSVG": { - aspectScale: 1, - invertLongitute: false - } - }; - var geo2DDimensions = ["lng", "lat"]; - var Geo = ( - /** @class */ - function(_super) { - __extends(Geo2, _super); - function Geo2(name, map3, opt) { - var _this = _super.call(this, name) || this; - _this.dimensions = geo2DDimensions; - _this.type = "geo"; - _this._nameCoordMap = createHashMap(); - _this.map = map3; - var projection = opt.projection; - var source = geoSourceManager_default.load(map3, opt.nameMap, opt.nameProperty); - var resource = geoSourceManager_default.getGeoResource(map3); - var resourceType = _this.resourceType = resource ? resource.type : null; - var regions = _this.regions = source.regions; - var defaultParams = GEO_DEFAULT_PARAMS[resource.type]; - _this._regionsMap = source.regionsMap; - _this.regions = source.regions; - if (projection) { - if (resourceType === "geoSVG") { - if (true) { - warn("Map " + map3 + " with SVG source can't use projection. Only GeoJSON source supports projection."); - } - projection = null; - } - if (!(projection.project && projection.unproject)) { - if (true) { - warn("project and unproject must be both provided in the projeciton."); - } - projection = null; - } - } - _this.projection = projection; - var boundingRect; - if (projection) { - for (var i = 0; i < regions.length; i++) { - var regionRect = regions[i].getBoundingRect(projection); - boundingRect = boundingRect || regionRect.clone(); - boundingRect.union(regionRect); - } - } else { - boundingRect = source.boundingRect; - } - _this.setBoundingRect(boundingRect.x, boundingRect.y, boundingRect.width, boundingRect.height); - _this.aspectScale = projection ? 1 : retrieve2(opt.aspectScale, defaultParams.aspectScale); - _this._invertLongitute = projection ? false : defaultParams.invertLongitute; - return _this; - } - Geo2.prototype._transformTo = function(x, y, width, height) { - var rect = this.getBoundingRect(); - var invertLongitute = this._invertLongitute; - rect = rect.clone(); - if (invertLongitute) { - rect.y = -rect.y - rect.height; - } - var rawTransformable = this._rawTransformable; - rawTransformable.transform = rect.calculateTransform(new BoundingRect_default(x, y, width, height)); - var rawParent = rawTransformable.parent; - rawTransformable.parent = null; - rawTransformable.decomposeTransform(); - rawTransformable.parent = rawParent; - if (invertLongitute) { - rawTransformable.scaleY = -rawTransformable.scaleY; - } - this._updateTransform(); - }; - Geo2.prototype.getRegion = function(name) { - return this._regionsMap.get(name); - }; - Geo2.prototype.getRegionByCoord = function(coord) { - var regions = this.regions; - for (var i = 0; i < regions.length; i++) { - var region = regions[i]; - if (region.type === "geoJSON" && region.contain(coord)) { - return regions[i]; - } - } - }; - Geo2.prototype.addGeoCoord = function(name, geoCoord2) { - this._nameCoordMap.set(name, geoCoord2); - }; - Geo2.prototype.getGeoCoord = function(name) { - var region = this._regionsMap.get(name); - return this._nameCoordMap.get(name) || region && region.getCenter(); - }; - Geo2.prototype.dataToPoint = function(data, noRoam, out2) { - if (isString(data)) { - data = this.getGeoCoord(data); - } - if (data) { - var projection = this.projection; - if (projection) { - data = projection.project(data); - } - return data && this.projectedToPoint(data, noRoam, out2); - } - }; - Geo2.prototype.pointToData = function(point) { - var projection = this.projection; - if (projection) { - point = projection.unproject(point); - } - return point && this.pointToProjected(point); - }; - Geo2.prototype.pointToProjected = function(point) { - return _super.prototype.pointToData.call(this, point); - }; - Geo2.prototype.projectedToPoint = function(projected, noRoam, out2) { - return _super.prototype.dataToPoint.call(this, projected, noRoam, out2); - }; - Geo2.prototype.convertToPixel = function(ecModel, finder, value) { - var coordSys = getCoordSys2(finder); - return coordSys === this ? coordSys.dataToPoint(value) : null; - }; - Geo2.prototype.convertFromPixel = function(ecModel, finder, pixel) { - var coordSys = getCoordSys2(finder); - return coordSys === this ? coordSys.pointToData(pixel) : null; - }; - return Geo2; - }(View_default) - ); - mixin(Geo, View_default); - function getCoordSys2(finder) { - var geoModel = finder.geoModel; - var seriesModel = finder.seriesModel; - return geoModel ? geoModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem || (seriesModel.getReferringComponents("geo", SINGLE_REFERRING).models[0] || {}).coordinateSystem : null; - } - var Geo_default = Geo; - - // node_modules/echarts/lib/coord/geo/geoCreator.js - function resizeGeo(geoModel, api) { - var boundingCoords = geoModel.get("boundingCoords"); - if (boundingCoords != null) { - var leftTop_1 = boundingCoords[0]; - var rightBottom_1 = boundingCoords[1]; - if (!(isFinite(leftTop_1[0]) && isFinite(leftTop_1[1]) && isFinite(rightBottom_1[0]) && isFinite(rightBottom_1[1]))) { - if (true) { - console.error("Invalid boundingCoords"); - } - } else { - var projection_1 = this.projection; - if (projection_1) { - var xMin = leftTop_1[0]; - var yMin = leftTop_1[1]; - var xMax = rightBottom_1[0]; - var yMax = rightBottom_1[1]; - leftTop_1 = [Infinity, Infinity]; - rightBottom_1 = [-Infinity, -Infinity]; - var sampleLine = function(x0, y0, x1, y1) { - var dx = x1 - x0; - var dy = y1 - y0; - for (var i = 0; i <= 100; i++) { - var p = i / 100; - var pt = projection_1.project([x0 + dx * p, y0 + dy * p]); - min(leftTop_1, leftTop_1, pt); - max(rightBottom_1, rightBottom_1, pt); - } - }; - sampleLine(xMin, yMin, xMax, yMin); - sampleLine(xMax, yMin, xMax, yMax); - sampleLine(xMax, yMax, xMin, yMax); - sampleLine(xMin, yMax, xMax, yMin); - } - this.setBoundingRect(leftTop_1[0], leftTop_1[1], rightBottom_1[0] - leftTop_1[0], rightBottom_1[1] - leftTop_1[1]); - } - } - var rect = this.getBoundingRect(); - var centerOption = geoModel.get("layoutCenter"); - var sizeOption = geoModel.get("layoutSize"); - var viewWidth = api.getWidth(); - var viewHeight = api.getHeight(); - var aspect = rect.width / rect.height * this.aspectScale; - var useCenterAndSize = false; - var center3; - var size2; - if (centerOption && sizeOption) { - center3 = [parsePercent2(centerOption[0], viewWidth), parsePercent2(centerOption[1], viewHeight)]; - size2 = parsePercent2(sizeOption, Math.min(viewWidth, viewHeight)); - if (!isNaN(center3[0]) && !isNaN(center3[1]) && !isNaN(size2)) { - useCenterAndSize = true; - } else { - if (true) { - console.warn("Given layoutCenter or layoutSize data are invalid. Use left/top/width/height instead."); - } - } - } - var viewRect2; - if (useCenterAndSize) { - viewRect2 = {}; - if (aspect > 1) { - viewRect2.width = size2; - viewRect2.height = size2 / aspect; - } else { - viewRect2.height = size2; - viewRect2.width = size2 * aspect; - } - viewRect2.y = center3[1] - viewRect2.height / 2; - viewRect2.x = center3[0] - viewRect2.width / 2; - } else { - var boxLayoutOption = geoModel.getBoxLayoutParams(); - boxLayoutOption.aspect = aspect; - viewRect2 = getLayoutRect(boxLayoutOption, { - width: viewWidth, - height: viewHeight - }); - } - this.setViewRect(viewRect2.x, viewRect2.y, viewRect2.width, viewRect2.height); - this.setCenter(geoModel.get("center"), api); - this.setZoom(geoModel.get("zoom")); - } - function setGeoCoords(geo, model) { - each(model.get("geoCoord"), function(geoCoord2, name) { - geo.addGeoCoord(name, geoCoord2); - }); - } - var GeoCreator = ( - /** @class */ - function() { - function GeoCreator2() { - this.dimensions = geo2DDimensions; - } - GeoCreator2.prototype.create = function(ecModel, api) { - var geoList = []; - function getCommonGeoProperties(model) { - return { - nameProperty: model.get("nameProperty"), - aspectScale: model.get("aspectScale"), - projection: model.get("projection") - }; - } - ecModel.eachComponent("geo", function(geoModel, idx) { - var mapName = geoModel.get("map"); - var geo = new Geo_default(mapName + idx, mapName, extend({ - nameMap: geoModel.get("nameMap") - }, getCommonGeoProperties(geoModel))); - geo.zoomLimit = geoModel.get("scaleLimit"); - geoList.push(geo); - geoModel.coordinateSystem = geo; - geo.model = geoModel; - geo.resize = resizeGeo; - geo.resize(geoModel, api); - }); - ecModel.eachSeries(function(seriesModel) { - var coordSys = seriesModel.get("coordinateSystem"); - if (coordSys === "geo") { - var geoIndex = seriesModel.get("geoIndex") || 0; - seriesModel.coordinateSystem = geoList[geoIndex]; - } - }); - var mapModelGroupBySeries = {}; - ecModel.eachSeriesByType("map", function(seriesModel) { - if (!seriesModel.getHostGeoModel()) { - var mapType = seriesModel.getMapType(); - mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || []; - mapModelGroupBySeries[mapType].push(seriesModel); - } - }); - each(mapModelGroupBySeries, function(mapSeries, mapType) { - var nameMapList = map(mapSeries, function(singleMapSeries) { - return singleMapSeries.get("nameMap"); - }); - var geo = new Geo_default(mapType, mapType, extend({ - nameMap: mergeAll(nameMapList) - }, getCommonGeoProperties(mapSeries[0]))); - geo.zoomLimit = retrieve.apply(null, map(mapSeries, function(singleMapSeries) { - return singleMapSeries.get("scaleLimit"); - })); - geoList.push(geo); - geo.resize = resizeGeo; - geo.resize(mapSeries[0], api); - each(mapSeries, function(singleMapSeries) { - singleMapSeries.coordinateSystem = geo; - setGeoCoords(geo, singleMapSeries); - }); - }); - return geoList; - }; - GeoCreator2.prototype.getFilledRegions = function(originRegionArr, mapName, nameMap, nameProperty) { - var regionsArr = (originRegionArr || []).slice(); - var dataNameMap = createHashMap(); - for (var i = 0; i < regionsArr.length; i++) { - dataNameMap.set(regionsArr[i].name, regionsArr[i]); - } - var source = geoSourceManager_default.load(mapName, nameMap, nameProperty); - each(source.regions, function(region) { - var name = region.name; - var regionOption = dataNameMap.get(name); - var specifiedGeoJSONRegionStyle = region.properties && region.properties.echartsStyle; - if (!regionOption) { - regionOption = { - name - }; - regionsArr.push(regionOption); - } - specifiedGeoJSONRegionStyle && merge(regionOption, specifiedGeoJSONRegionStyle); - }); - return regionsArr; - }; - return GeoCreator2; - }() - ); - var geoCreator = new GeoCreator(); - var geoCreator_default = geoCreator; - - // node_modules/echarts/lib/coord/geo/GeoModel.js - var GeoModel = ( - /** @class */ - function(_super) { - __extends(GeoModel2, _super); - function GeoModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GeoModel2.type; - return _this; - } - GeoModel2.prototype.init = function(option, parentModel, ecModel) { - var source = geoSourceManager_default.getGeoResource(option.map); - if (source && source.type === "geoJSON") { - var itemStyle = option.itemStyle = option.itemStyle || {}; - if (!("color" in itemStyle)) { - itemStyle.color = "#eee"; - } - } - this.mergeDefaultAndTheme(option, ecModel); - defaultEmphasis(option, "label", ["show"]); - }; - GeoModel2.prototype.optionUpdated = function() { - var _this = this; - var option = this.option; - option.regions = geoCreator_default.getFilledRegions(option.regions, option.map, option.nameMap, option.nameProperty); - var selectedMap = {}; - this._optionModelMap = reduce(option.regions || [], function(optionModelMap, regionOpt) { - var regionName = regionOpt.name; - if (regionName) { - optionModelMap.set(regionName, new Model_default(regionOpt, _this, _this.ecModel)); - if (regionOpt.selected) { - selectedMap[regionName] = true; - } - } - return optionModelMap; - }, createHashMap()); - if (!option.selectedMap) { - option.selectedMap = selectedMap; - } - }; - GeoModel2.prototype.getRegionModel = function(name) { - return this._optionModelMap.get(name) || new Model_default(null, this, this.ecModel); - }; - GeoModel2.prototype.getFormattedLabel = function(name, status) { - var regionModel = this.getRegionModel(name); - var formatter = status === "normal" ? regionModel.get(["label", "formatter"]) : regionModel.get(["emphasis", "label", "formatter"]); - var params = { - name - }; - if (isFunction(formatter)) { - params.status = status; - return formatter(params); - } else if (isString(formatter)) { - return formatter.replace("{a}", name != null ? name : ""); - } - }; - GeoModel2.prototype.setZoom = function(zoom) { - this.option.zoom = zoom; - }; - GeoModel2.prototype.setCenter = function(center3) { - this.option.center = center3; - }; - GeoModel2.prototype.select = function(name) { - var option = this.option; - var selectedMode = option.selectedMode; - if (!selectedMode) { - return; - } - if (selectedMode !== "multiple") { - option.selectedMap = null; - } - var selectedMap = option.selectedMap || (option.selectedMap = {}); - selectedMap[name] = true; - }; - GeoModel2.prototype.unSelect = function(name) { - var selectedMap = this.option.selectedMap; - if (selectedMap) { - selectedMap[name] = false; - } - }; - GeoModel2.prototype.toggleSelected = function(name) { - this[this.isSelected(name) ? "unSelect" : "select"](name); - }; - GeoModel2.prototype.isSelected = function(name) { - var selectedMap = this.option.selectedMap; - return !!(selectedMap && selectedMap[name]); - }; - GeoModel2.type = "geo"; - GeoModel2.layoutMode = "box"; - GeoModel2.defaultOption = { - // zlevel: 0, - z: 0, - show: true, - left: "center", - top: "center", - // Default value: - // for geoSVG source: 1, - // for geoJSON source: 0.75. - aspectScale: null, - // /// Layout with center and size - // If you want to put map in a fixed size box with right aspect ratio - // This two properties may be more convenient - // layoutCenter: [50%, 50%] - // layoutSize: 100 - silent: false, - // Map type - map: "", - // Define left-top, right-bottom coords to control view - // For example, [ [180, 90], [-180, -90] ] - boundingCoords: null, - // Default on center of map - center: null, - zoom: 1, - scaleLimit: null, - // selectedMode: false - label: { - show: false, - color: "#000" - }, - itemStyle: { - borderWidth: 0.5, - borderColor: "#444" - // Default color: - // + geoJSON: #eee - // + geoSVG: null (use SVG original `fill`) - // color: '#eee' - }, - emphasis: { - label: { - show: true, - color: "rgb(100,0,0)" - }, - itemStyle: { - color: "rgba(255,215,0,0.8)" - } - }, - select: { - label: { - show: true, - color: "rgb(100,0,0)" - }, - itemStyle: { - color: "rgba(255,215,0,0.8)" - } - }, - regions: [] - // tooltip: { - // show: false - // } - }; - return GeoModel2; - }(Component_default) - ); - var GeoModel_default = GeoModel; - - // node_modules/echarts/lib/action/roamHelper.js - function getCenterCoord(view, point) { - return view.pointToProjected ? view.pointToProjected(point) : view.pointToData(point); - } - function updateCenterAndZoom(view, payload, zoomLimit, api) { - var previousZoom = view.getZoom(); - var center3 = view.getCenter(); - var zoom = payload.zoom; - var point = view.projectedToPoint ? view.projectedToPoint(center3) : view.dataToPoint(center3); - if (payload.dx != null && payload.dy != null) { - point[0] -= payload.dx; - point[1] -= payload.dy; - view.setCenter(getCenterCoord(view, point), api); - } - if (zoom != null) { - if (zoomLimit) { - var zoomMin = zoomLimit.min || 0; - var zoomMax = zoomLimit.max || Infinity; - zoom = Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom; - } - view.scaleX *= zoom; - view.scaleY *= zoom; - var fixX = (payload.originX - view.x) * (zoom - 1); - var fixY = (payload.originY - view.y) * (zoom - 1); - view.x -= fixX; - view.y -= fixY; - view.updateTransform(); - view.setCenter(getCenterCoord(view, point), api); - view.setZoom(zoom * previousZoom); - } - return { - center: view.getCenter(), - zoom: view.getZoom() - }; - } - - // node_modules/echarts/lib/component/geo/GeoView.js - var GeoView = ( - /** @class */ - function(_super) { - __extends(GeoView2, _super); - function GeoView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GeoView2.type; - _this.focusBlurEnabled = true; - return _this; - } - GeoView2.prototype.init = function(ecModel, api) { - this._api = api; - }; - GeoView2.prototype.render = function(geoModel, ecModel, api, payload) { - this._model = geoModel; - if (!geoModel.get("show")) { - this._mapDraw && this._mapDraw.remove(); - this._mapDraw = null; - return; - } - if (!this._mapDraw) { - this._mapDraw = new MapDraw_default(api); - } - var mapDraw = this._mapDraw; - mapDraw.draw(geoModel, ecModel, api, this, payload); - mapDraw.group.on("click", this._handleRegionClick, this); - mapDraw.group.silent = geoModel.get("silent"); - this.group.add(mapDraw.group); - this.updateSelectStatus(geoModel, ecModel, api); - }; - GeoView2.prototype._handleRegionClick = function(e2) { - var eventData; - findEventDispatcher(e2.target, function(current) { - return (eventData = getECData(current).eventData) != null; - }, true); - if (eventData) { - this._api.dispatchAction({ - type: "geoToggleSelect", - geoId: this._model.id, - name: eventData.name - }); - } - }; - GeoView2.prototype.updateSelectStatus = function(model, ecModel, api) { - var _this = this; - this._mapDraw.group.traverse(function(node) { - var eventData = getECData(node).eventData; - if (eventData) { - _this._model.isSelected(eventData.name) ? api.enterSelect(node) : api.leaveSelect(node); - return true; - } - }); - }; - GeoView2.prototype.findHighDownDispatchers = function(name) { - return this._mapDraw && this._mapDraw.findHighDownDispatchers(name, this._model); - }; - GeoView2.prototype.dispose = function() { - this._mapDraw && this._mapDraw.remove(); - }; - GeoView2.type = "geo"; - return GeoView2; - }(Component_default2) - ); - var GeoView_default = GeoView; - - // node_modules/echarts/lib/component/geo/install.js - function registerMap2(mapName, geoJson, specialAreas) { - geoSourceManager_default.registerMap(mapName, geoJson, specialAreas); - } - function install10(registers) { - registers.registerCoordinateSystem("geo", geoCreator_default); - registers.registerComponentModel(GeoModel_default); - registers.registerComponentView(GeoView_default); - registers.registerImpl("registerMap", registerMap2); - registers.registerImpl("getMap", function(mapName) { - return geoSourceManager_default.getMapForUser(mapName); - }); - function makeAction(method, actionInfo3) { - actionInfo3.update = "geo:updateSelectStatus"; - registers.registerAction(actionInfo3, function(payload, ecModel) { - var selected = {}; - var allSelected = []; - ecModel.eachComponent({ - mainType: "geo", - query: payload - }, function(geoModel) { - geoModel[method](payload.name); - var geo = geoModel.coordinateSystem; - each(geo.regions, function(region) { - selected[region.name] = geoModel.isSelected(region.name) || false; - }); - var names = []; - each(selected, function(v, name) { - selected[name] && names.push(name); - }); - allSelected.push({ - geoIndex: geoModel.componentIndex, - // Use singular, the same naming convention as the event `selectchanged`. - name: names - }); - }); - return { - selected, - allSelected, - name: payload.name - }; - }); - } - makeAction("toggleSelected", { - type: "geoToggleSelect", - event: "geoselectchanged" - }); - makeAction("select", { - type: "geoSelect", - event: "geoselected" - }); - makeAction("unSelect", { - type: "geoUnSelect", - event: "geounselected" - }); - registers.registerAction({ - type: "geoRoam", - event: "geoRoam", - update: "updateTransform" - }, function(payload, ecModel, api) { - var componentType = payload.componentType || "series"; - ecModel.eachComponent({ - mainType: componentType, - query: payload - }, function(componentModel) { - var geo = componentModel.coordinateSystem; - if (geo.type !== "geo") { - return; - } - var res = updateCenterAndZoom(geo, payload, componentModel.get("scaleLimit"), api); - componentModel.setCenter && componentModel.setCenter(res.center); - componentModel.setZoom && componentModel.setZoom(res.zoom); - if (componentType === "series") { - each(componentModel.seriesGroup, function(seriesModel) { - seriesModel.setCenter(res.center); - seriesModel.setZoom(res.zoom); - }); - } - }); - }); - } - - // node_modules/echarts/lib/chart/map/install.js - function install11(registers) { - use(install10); - registers.registerChartView(MapView_default); - registers.registerSeriesModel(MapSeries_default); - registers.registerLayout(mapSymbolLayout); - registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic); - createLegacyDataSelectAction("map", registers.registerAction); - } - - // node_modules/echarts/lib/chart/tree/layoutHelper.js - function init3(inRoot) { - var root = inRoot; - root.hierNode = { - defaultAncestor: null, - ancestor: root, - prelim: 0, - modifier: 0, - change: 0, - shift: 0, - i: 0, - thread: null - }; - var nodes = [root]; - var node; - var children; - while (node = nodes.pop()) { - children = node.children; - if (node.isExpand && children.length) { - var n = children.length; - for (var i = n - 1; i >= 0; i--) { - var child = children[i]; - child.hierNode = { - defaultAncestor: null, - ancestor: child, - prelim: 0, - modifier: 0, - change: 0, - shift: 0, - i, - thread: null - }; - nodes.push(child); - } - } - } - } - function firstWalk(node, separation2) { - var children = node.isExpand ? node.children : []; - var siblings = node.parentNode.children; - var subtreeW = node.hierNode.i ? siblings[node.hierNode.i - 1] : null; - if (children.length) { - executeShifts(node); - var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2; - if (subtreeW) { - node.hierNode.prelim = subtreeW.hierNode.prelim + separation2(node, subtreeW); - node.hierNode.modifier = node.hierNode.prelim - midPoint; - } else { - node.hierNode.prelim = midPoint; - } - } else if (subtreeW) { - node.hierNode.prelim = subtreeW.hierNode.prelim + separation2(node, subtreeW); - } - node.parentNode.hierNode.defaultAncestor = apportion(node, subtreeW, node.parentNode.hierNode.defaultAncestor || siblings[0], separation2); - } - function secondWalk(node) { - var nodeX = node.hierNode.prelim + node.parentNode.hierNode.modifier; - node.setLayout({ - x: nodeX - }, true); - node.hierNode.modifier += node.parentNode.hierNode.modifier; - } - function separation(cb) { - return arguments.length ? cb : defaultSeparation; - } - function radialCoordinate(rad, r) { - rad -= Math.PI / 2; - return { - x: r * Math.cos(rad), - y: r * Math.sin(rad) - }; - } - function getViewRect2(seriesModel, api) { - return getLayoutRect(seriesModel.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }); - } - function executeShifts(node) { - var children = node.children; - var n = children.length; - var shift3 = 0; - var change = 0; - while (--n >= 0) { - var child = children[n]; - child.hierNode.prelim += shift3; - child.hierNode.modifier += shift3; - change += child.hierNode.change; - shift3 += child.hierNode.shift + change; - } - } - function apportion(subtreeV, subtreeW, ancestor, separation2) { - if (subtreeW) { - var nodeOutRight = subtreeV; - var nodeInRight = subtreeV; - var nodeOutLeft = nodeInRight.parentNode.children[0]; - var nodeInLeft = subtreeW; - var sumOutRight = nodeOutRight.hierNode.modifier; - var sumInRight = nodeInRight.hierNode.modifier; - var sumOutLeft = nodeOutLeft.hierNode.modifier; - var sumInLeft = nodeInLeft.hierNode.modifier; - while (nodeInLeft = nextRight(nodeInLeft), nodeInRight = nextLeft(nodeInRight), nodeInLeft && nodeInRight) { - nodeOutRight = nextRight(nodeOutRight); - nodeOutLeft = nextLeft(nodeOutLeft); - nodeOutRight.hierNode.ancestor = subtreeV; - var shift3 = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim - sumInRight + separation2(nodeInLeft, nodeInRight); - if (shift3 > 0) { - moveSubtree(nextAncestor(nodeInLeft, subtreeV, ancestor), subtreeV, shift3); - sumInRight += shift3; - sumOutRight += shift3; - } - sumInLeft += nodeInLeft.hierNode.modifier; - sumInRight += nodeInRight.hierNode.modifier; - sumOutRight += nodeOutRight.hierNode.modifier; - sumOutLeft += nodeOutLeft.hierNode.modifier; - } - if (nodeInLeft && !nextRight(nodeOutRight)) { - nodeOutRight.hierNode.thread = nodeInLeft; - nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight; - } - if (nodeInRight && !nextLeft(nodeOutLeft)) { - nodeOutLeft.hierNode.thread = nodeInRight; - nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft; - ancestor = subtreeV; - } - } - return ancestor; - } - function nextRight(node) { - var children = node.children; - return children.length && node.isExpand ? children[children.length - 1] : node.hierNode.thread; - } - function nextLeft(node) { - var children = node.children; - return children.length && node.isExpand ? children[0] : node.hierNode.thread; - } - function nextAncestor(nodeInLeft, node, ancestor) { - return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode ? nodeInLeft.hierNode.ancestor : ancestor; - } - function moveSubtree(wl, wr, shift3) { - var change = shift3 / (wr.hierNode.i - wl.hierNode.i); - wr.hierNode.change -= change; - wr.hierNode.shift += shift3; - wr.hierNode.modifier += shift3; - wr.hierNode.prelim += shift3; - wl.hierNode.change += change; - } - function defaultSeparation(node1, node2) { - return node1.parentNode === node2.parentNode ? 1 : 2; - } - - // node_modules/echarts/lib/chart/tree/TreeView.js - var TreeEdgeShape = ( - /** @class */ - /* @__PURE__ */ function() { - function TreeEdgeShape2() { - this.parentPoint = []; - this.childPoints = []; - } - return TreeEdgeShape2; - }() - ); - var TreePath = ( - /** @class */ - function(_super) { - __extends(TreePath2, _super); - function TreePath2(opts) { - return _super.call(this, opts) || this; - } - TreePath2.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - TreePath2.prototype.getDefaultShape = function() { - return new TreeEdgeShape(); - }; - TreePath2.prototype.buildPath = function(ctx, shape) { - var childPoints = shape.childPoints; - var childLen = childPoints.length; - var parentPoint = shape.parentPoint; - var firstChildPos = childPoints[0]; - var lastChildPos = childPoints[childLen - 1]; - if (childLen === 1) { - ctx.moveTo(parentPoint[0], parentPoint[1]); - ctx.lineTo(firstChildPos[0], firstChildPos[1]); - return; - } - var orient = shape.orient; - var forkDim = orient === "TB" || orient === "BT" ? 0 : 1; - var otherDim = 1 - forkDim; - var forkPosition = parsePercent2(shape.forkPosition, 1); - var tmpPoint = []; - tmpPoint[forkDim] = parentPoint[forkDim]; - tmpPoint[otherDim] = parentPoint[otherDim] + (lastChildPos[otherDim] - parentPoint[otherDim]) * forkPosition; - ctx.moveTo(parentPoint[0], parentPoint[1]); - ctx.lineTo(tmpPoint[0], tmpPoint[1]); - ctx.moveTo(firstChildPos[0], firstChildPos[1]); - tmpPoint[forkDim] = firstChildPos[forkDim]; - ctx.lineTo(tmpPoint[0], tmpPoint[1]); - tmpPoint[forkDim] = lastChildPos[forkDim]; - ctx.lineTo(tmpPoint[0], tmpPoint[1]); - ctx.lineTo(lastChildPos[0], lastChildPos[1]); - for (var i = 1; i < childLen - 1; i++) { - var point = childPoints[i]; - ctx.moveTo(point[0], point[1]); - tmpPoint[forkDim] = point[forkDim]; - ctx.lineTo(tmpPoint[0], tmpPoint[1]); - } - }; - return TreePath2; - }(Path_default) - ); - var TreeView = ( - /** @class */ - function(_super) { - __extends(TreeView2, _super); - function TreeView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TreeView2.type; - _this._mainGroup = new Group_default(); - return _this; - } - TreeView2.prototype.init = function(ecModel, api) { - this._controller = new RoamController_default(api.getZr()); - this._controllerHost = { - target: this.group - }; - this.group.add(this._mainGroup); - }; - TreeView2.prototype.render = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var layoutInfo = seriesModel.layoutInfo; - var group = this._mainGroup; - var layout5 = seriesModel.get("layout"); - if (layout5 === "radial") { - group.x = layoutInfo.x + layoutInfo.width / 2; - group.y = layoutInfo.y + layoutInfo.height / 2; - } else { - group.x = layoutInfo.x; - group.y = layoutInfo.y; - } - this._updateViewCoordSys(seriesModel, api); - this._updateController(seriesModel, ecModel, api); - var oldData = this._data; - data.diff(oldData).add(function(newIdx) { - if (symbolNeedsDraw2(data, newIdx)) { - updateNode(data, newIdx, null, group, seriesModel); - } - }).update(function(newIdx, oldIdx) { - var symbolEl = oldData.getItemGraphicEl(oldIdx); - if (!symbolNeedsDraw2(data, newIdx)) { - symbolEl && removeNode(oldData, oldIdx, symbolEl, group, seriesModel); - return; - } - updateNode(data, newIdx, symbolEl, group, seriesModel); - }).remove(function(oldIdx) { - var symbolEl = oldData.getItemGraphicEl(oldIdx); - if (symbolEl) { - removeNode(oldData, oldIdx, symbolEl, group, seriesModel); - } - }).execute(); - this._nodeScaleRatio = seriesModel.get("nodeScaleRatio"); - this._updateNodeAndLinkScale(seriesModel); - if (seriesModel.get("expandAndCollapse") === true) { - data.eachItemGraphicEl(function(el, dataIndex) { - el.off("click").on("click", function() { - api.dispatchAction({ - type: "treeExpandAndCollapse", - seriesId: seriesModel.id, - dataIndex - }); - }); - }); - } - this._data = data; - }; - TreeView2.prototype._updateViewCoordSys = function(seriesModel, api) { - var data = seriesModel.getData(); - var points4 = []; - data.each(function(idx) { - var layout5 = data.getItemLayout(idx); - if (layout5 && !isNaN(layout5.x) && !isNaN(layout5.y)) { - points4.push([+layout5.x, +layout5.y]); - } - }); - var min4 = []; - var max4 = []; - fromPoints(points4, min4, max4); - var oldMin = this._min; - var oldMax = this._max; - if (max4[0] - min4[0] === 0) { - min4[0] = oldMin ? oldMin[0] : min4[0] - 1; - max4[0] = oldMax ? oldMax[0] : max4[0] + 1; - } - if (max4[1] - min4[1] === 0) { - min4[1] = oldMin ? oldMin[1] : min4[1] - 1; - max4[1] = oldMax ? oldMax[1] : max4[1] + 1; - } - var viewCoordSys = seriesModel.coordinateSystem = new View_default(); - viewCoordSys.zoomLimit = seriesModel.get("scaleLimit"); - viewCoordSys.setBoundingRect(min4[0], min4[1], max4[0] - min4[0], max4[1] - min4[1]); - viewCoordSys.setCenter(seriesModel.get("center"), api); - viewCoordSys.setZoom(seriesModel.get("zoom")); - this.group.attr({ - x: viewCoordSys.x, - y: viewCoordSys.y, - scaleX: viewCoordSys.scaleX, - scaleY: viewCoordSys.scaleY - }); - this._min = min4; - this._max = max4; - }; - TreeView2.prototype._updateController = function(seriesModel, ecModel, api) { - var _this = this; - var controller = this._controller; - var controllerHost = this._controllerHost; - var group = this.group; - controller.setPointerChecker(function(e2, x, y) { - var rect = group.getBoundingRect(); - rect.applyTransform(group.transform); - return rect.contain(x, y) && !onIrrelevantElement(e2, api, seriesModel); - }); - controller.enable(seriesModel.get("roam")); - controllerHost.zoomLimit = seriesModel.get("scaleLimit"); - controllerHost.zoom = seriesModel.coordinateSystem.getZoom(); - controller.off("pan").off("zoom").on("pan", function(e2) { - updateViewOnPan(controllerHost, e2.dx, e2.dy); - api.dispatchAction({ - seriesId: seriesModel.id, - type: "treeRoam", - dx: e2.dx, - dy: e2.dy - }); - }).on("zoom", function(e2) { - updateViewOnZoom(controllerHost, e2.scale, e2.originX, e2.originY); - api.dispatchAction({ - seriesId: seriesModel.id, - type: "treeRoam", - zoom: e2.scale, - originX: e2.originX, - originY: e2.originY - }); - _this._updateNodeAndLinkScale(seriesModel); - api.updateLabelLayout(); - }); - }; - TreeView2.prototype._updateNodeAndLinkScale = function(seriesModel) { - var data = seriesModel.getData(); - var nodeScale = this._getNodeGlobalScale(seriesModel); - data.eachItemGraphicEl(function(el, idx) { - el.setSymbolScale(nodeScale); - }); - }; - TreeView2.prototype._getNodeGlobalScale = function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - if (coordSys.type !== "view") { - return 1; - } - var nodeScaleRatio = this._nodeScaleRatio; - var groupZoom = coordSys.scaleX || 1; - var roamZoom = coordSys.getZoom(); - var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1; - return nodeScale / groupZoom; - }; - TreeView2.prototype.dispose = function() { - this._controller && this._controller.dispose(); - this._controllerHost = null; - }; - TreeView2.prototype.remove = function() { - this._mainGroup.removeAll(); - this._data = null; - }; - TreeView2.type = "tree"; - return TreeView2; - }(Chart_default) - ); - function symbolNeedsDraw2(data, dataIndex) { - var layout5 = data.getItemLayout(dataIndex); - return layout5 && !isNaN(layout5.x) && !isNaN(layout5.y); - } - function updateNode(data, dataIndex, symbolEl, group, seriesModel) { - var isInit = !symbolEl; - var node = data.tree.getNodeByDataIndex(dataIndex); - var itemModel = node.getModel(); - var visualColor = node.getVisual("style").fill; - var symbolInnerColor = node.isExpand === false && node.children.length !== 0 ? visualColor : "#fff"; - var virtualRoot = data.tree.root; - var source = node.parentNode === virtualRoot ? node : node.parentNode || node; - var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex); - var sourceLayout = source.getLayout(); - var sourceOldLayout = sourceSymbolEl ? { - x: sourceSymbolEl.__oldX, - y: sourceSymbolEl.__oldY, - rawX: sourceSymbolEl.__radialOldRawX, - rawY: sourceSymbolEl.__radialOldRawY - } : sourceLayout; - var targetLayout = node.getLayout(); - if (isInit) { - symbolEl = new Symbol_default(data, dataIndex, null, { - symbolInnerColor, - useNameLabel: true - }); - symbolEl.x = sourceOldLayout.x; - symbolEl.y = sourceOldLayout.y; - } else { - symbolEl.updateData(data, dataIndex, null, { - symbolInnerColor, - useNameLabel: true - }); - } - symbolEl.__radialOldRawX = symbolEl.__radialRawX; - symbolEl.__radialOldRawY = symbolEl.__radialRawY; - symbolEl.__radialRawX = targetLayout.rawX; - symbolEl.__radialRawY = targetLayout.rawY; - group.add(symbolEl); - data.setItemGraphicEl(dataIndex, symbolEl); - symbolEl.__oldX = symbolEl.x; - symbolEl.__oldY = symbolEl.y; - updateProps(symbolEl, { - x: targetLayout.x, - y: targetLayout.y - }, seriesModel); - var symbolPath = symbolEl.getSymbolPath(); - if (seriesModel.get("layout") === "radial") { - var realRoot = virtualRoot.children[0]; - var rootLayout = realRoot.getLayout(); - var length_1 = realRoot.children.length; - var rad = void 0; - var isLeft = void 0; - if (targetLayout.x === rootLayout.x && node.isExpand === true && realRoot.children.length) { - var center3 = { - x: (realRoot.children[0].getLayout().x + realRoot.children[length_1 - 1].getLayout().x) / 2, - y: (realRoot.children[0].getLayout().y + realRoot.children[length_1 - 1].getLayout().y) / 2 - }; - rad = Math.atan2(center3.y - rootLayout.y, center3.x - rootLayout.x); - if (rad < 0) { - rad = Math.PI * 2 + rad; - } - isLeft = center3.x < rootLayout.x; - if (isLeft) { - rad = rad - Math.PI; - } - } else { - rad = Math.atan2(targetLayout.y - rootLayout.y, targetLayout.x - rootLayout.x); - if (rad < 0) { - rad = Math.PI * 2 + rad; - } - if (node.children.length === 0 || node.children.length !== 0 && node.isExpand === false) { - isLeft = targetLayout.x < rootLayout.x; - if (isLeft) { - rad = rad - Math.PI; - } - } else { - isLeft = targetLayout.x > rootLayout.x; - if (!isLeft) { - rad = rad - Math.PI; - } - } - } - var textPosition = isLeft ? "left" : "right"; - var normalLabelModel = itemModel.getModel("label"); - var rotate2 = normalLabelModel.get("rotate"); - var labelRotateRadian = rotate2 * (Math.PI / 180); - var textContent = symbolPath.getTextContent(); - if (textContent) { - symbolPath.setTextConfig({ - position: normalLabelModel.get("position") || textPosition, - rotation: rotate2 == null ? -rad : labelRotateRadian, - origin: "center" - }); - textContent.setStyle("verticalAlign", "middle"); - } - } - var focus = itemModel.get(["emphasis", "focus"]); - var focusDataIndices = focus === "relative" ? concatArray(node.getAncestorsIndices(), node.getDescendantIndices()) : focus === "ancestor" ? node.getAncestorsIndices() : focus === "descendant" ? node.getDescendantIndices() : null; - if (focusDataIndices) { - getECData(symbolEl).focus = focusDataIndices; - } - drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group); - if (symbolEl.__edge) { - symbolEl.onHoverStateChange = function(toState) { - if (toState !== "blur") { - var parentEl = node.parentNode && data.getItemGraphicEl(node.parentNode.dataIndex); - if (!(parentEl && parentEl.hoverState === HOVER_STATE_BLUR)) { - setStatesFlag(symbolEl.__edge, toState); - } - } - }; - } - } - function drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group) { - var itemModel = node.getModel(); - var edgeShape = seriesModel.get("edgeShape"); - var layout5 = seriesModel.get("layout"); - var orient = seriesModel.getOrient(); - var curvature = seriesModel.get(["lineStyle", "curveness"]); - var edgeForkPosition = seriesModel.get("edgeForkPosition"); - var lineStyle = itemModel.getModel("lineStyle").getLineStyle(); - var edge = symbolEl.__edge; - if (edgeShape === "curve") { - if (node.parentNode && node.parentNode !== virtualRoot) { - if (!edge) { - edge = symbolEl.__edge = new BezierCurve_default({ - shape: getEdgeShape(layout5, orient, curvature, sourceOldLayout, sourceOldLayout) - }); - } - updateProps(edge, { - shape: getEdgeShape(layout5, orient, curvature, sourceLayout, targetLayout) - }, seriesModel); - } - } else if (edgeShape === "polyline") { - if (layout5 === "orthogonal") { - if (node !== virtualRoot && node.children && node.children.length !== 0 && node.isExpand === true) { - var children = node.children; - var childPoints = []; - for (var i = 0; i < children.length; i++) { - var childLayout = children[i].getLayout(); - childPoints.push([childLayout.x, childLayout.y]); - } - if (!edge) { - edge = symbolEl.__edge = new TreePath({ - shape: { - parentPoint: [targetLayout.x, targetLayout.y], - childPoints: [[targetLayout.x, targetLayout.y]], - orient, - forkPosition: edgeForkPosition - } - }); - } - updateProps(edge, { - shape: { - parentPoint: [targetLayout.x, targetLayout.y], - childPoints - } - }, seriesModel); - } - } else { - if (true) { - throw new Error("The polyline edgeShape can only be used in orthogonal layout"); - } - } - } - if (edge && !(edgeShape === "polyline" && !node.isExpand)) { - edge.useStyle(defaults({ - strokeNoScale: true, - fill: null - }, lineStyle)); - setStatesStylesFromModel(edge, itemModel, "lineStyle"); - setDefaultStateProxy(edge); - group.add(edge); - } - } - function removeNodeEdge(node, data, group, seriesModel, removeAnimationOpt) { - var virtualRoot = data.tree.root; - var _a2 = getSourceNode(virtualRoot, node), source = _a2.source, sourceLayout = _a2.sourceLayout; - var symbolEl = data.getItemGraphicEl(node.dataIndex); - if (!symbolEl) { - return; - } - var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex); - var sourceEdge = sourceSymbolEl.__edge; - var edge = symbolEl.__edge || (source.isExpand === false || source.children.length === 1 ? sourceEdge : void 0); - var edgeShape = seriesModel.get("edgeShape"); - var layoutOpt = seriesModel.get("layout"); - var orient = seriesModel.get("orient"); - var curvature = seriesModel.get(["lineStyle", "curveness"]); - if (edge) { - if (edgeShape === "curve") { - removeElement(edge, { - shape: getEdgeShape(layoutOpt, orient, curvature, sourceLayout, sourceLayout), - style: { - opacity: 0 - } - }, seriesModel, { - cb: function() { - group.remove(edge); - }, - removeOpt: removeAnimationOpt - }); - } else if (edgeShape === "polyline" && seriesModel.get("layout") === "orthogonal") { - removeElement(edge, { - shape: { - parentPoint: [sourceLayout.x, sourceLayout.y], - childPoints: [[sourceLayout.x, sourceLayout.y]] - }, - style: { - opacity: 0 - } - }, seriesModel, { - cb: function() { - group.remove(edge); - }, - removeOpt: removeAnimationOpt - }); - } - } - } - function getSourceNode(virtualRoot, node) { - var source = node.parentNode === virtualRoot ? node : node.parentNode || node; - var sourceLayout; - while (sourceLayout = source.getLayout(), sourceLayout == null) { - source = source.parentNode === virtualRoot ? source : source.parentNode || source; - } - return { - source, - sourceLayout - }; - } - function removeNode(data, dataIndex, symbolEl, group, seriesModel) { - var node = data.tree.getNodeByDataIndex(dataIndex); - var virtualRoot = data.tree.root; - var sourceLayout = getSourceNode(virtualRoot, node).sourceLayout; - var removeAnimationOpt = { - duration: seriesModel.get("animationDurationUpdate"), - easing: seriesModel.get("animationEasingUpdate") - }; - removeElement(symbolEl, { - x: sourceLayout.x + 1, - y: sourceLayout.y + 1 - }, seriesModel, { - cb: function() { - group.remove(symbolEl); - data.setItemGraphicEl(dataIndex, null); - }, - removeOpt: removeAnimationOpt - }); - symbolEl.fadeOut(null, data.hostModel, { - fadeLabel: true, - animation: removeAnimationOpt - }); - node.children.forEach(function(childNode) { - removeNodeEdge(childNode, data, group, seriesModel, removeAnimationOpt); - }); - removeNodeEdge(node, data, group, seriesModel, removeAnimationOpt); - } - function getEdgeShape(layoutOpt, orient, curvature, sourceLayout, targetLayout) { - var cpx1; - var cpy1; - var cpx2; - var cpy2; - var x1; - var x2; - var y1; - var y2; - if (layoutOpt === "radial") { - x1 = sourceLayout.rawX; - y1 = sourceLayout.rawY; - x2 = targetLayout.rawX; - y2 = targetLayout.rawY; - var radialCoor1 = radialCoordinate(x1, y1); - var radialCoor2 = radialCoordinate(x1, y1 + (y2 - y1) * curvature); - var radialCoor3 = radialCoordinate(x2, y2 + (y1 - y2) * curvature); - var radialCoor4 = radialCoordinate(x2, y2); - return { - x1: radialCoor1.x || 0, - y1: radialCoor1.y || 0, - x2: radialCoor4.x || 0, - y2: radialCoor4.y || 0, - cpx1: radialCoor2.x || 0, - cpy1: radialCoor2.y || 0, - cpx2: radialCoor3.x || 0, - cpy2: radialCoor3.y || 0 - }; - } else { - x1 = sourceLayout.x; - y1 = sourceLayout.y; - x2 = targetLayout.x; - y2 = targetLayout.y; - if (orient === "LR" || orient === "RL") { - cpx1 = x1 + (x2 - x1) * curvature; - cpy1 = y1; - cpx2 = x2 + (x1 - x2) * curvature; - cpy2 = y2; - } - if (orient === "TB" || orient === "BT") { - cpx1 = x1; - cpy1 = y1 + (y2 - y1) * curvature; - cpx2 = x2; - cpy2 = y2 + (y1 - y2) * curvature; - } - } - return { - x1, - y1, - x2, - y2, - cpx1, - cpy1, - cpx2, - cpy2 - }; - } - var TreeView_default = TreeView; - - // node_modules/echarts/lib/data/helper/linkSeriesData.js - var inner8 = makeInner(); - function linkSeriesData(opt) { - var mainData = opt.mainData; - var datas = opt.datas; - if (!datas) { - datas = { - main: mainData - }; - opt.datasAttr = { - main: "data" - }; - } - opt.datas = opt.mainData = null; - linkAll(mainData, datas, opt); - each(datas, function(data) { - each(mainData.TRANSFERABLE_METHODS, function(methodName) { - data.wrapMethod(methodName, curry(transferInjection, opt)); - }); - }); - mainData.wrapMethod("cloneShallow", curry(cloneShallowInjection, opt)); - each(mainData.CHANGABLE_METHODS, function(methodName) { - mainData.wrapMethod(methodName, curry(changeInjection, opt)); - }); - assert(datas[mainData.dataType] === mainData); - } - function transferInjection(opt, res) { - if (isMainData(this)) { - var datas = extend({}, inner8(this).datas); - datas[this.dataType] = res; - linkAll(res, datas, opt); - } else { - linkSingle(res, this.dataType, inner8(this).mainData, opt); - } - return res; - } - function changeInjection(opt, res) { - opt.struct && opt.struct.update(); - return res; - } - function cloneShallowInjection(opt, res) { - each(inner8(res).datas, function(data, dataType) { - data !== res && linkSingle(data.cloneShallow(), dataType, res, opt); - }); - return res; - } - function getLinkedData(dataType) { - var mainData = inner8(this).mainData; - return dataType == null || mainData == null ? mainData : inner8(mainData).datas[dataType]; - } - function getLinkedDataAll() { - var mainData = inner8(this).mainData; - return mainData == null ? [{ - data: mainData - }] : map(keys(inner8(mainData).datas), function(type) { - return { - type, - data: inner8(mainData).datas[type] - }; - }); - } - function isMainData(data) { - return inner8(data).mainData === data; - } - function linkAll(mainData, datas, opt) { - inner8(mainData).datas = {}; - each(datas, function(data, dataType) { - linkSingle(data, dataType, mainData, opt); - }); - } - function linkSingle(data, dataType, mainData, opt) { - inner8(mainData).datas[dataType] = data; - inner8(data).mainData = mainData; - data.dataType = dataType; - if (opt.struct) { - data[opt.structAttr] = opt.struct; - opt.struct[opt.datasAttr[dataType]] = data; - } - data.getLinkedData = getLinkedData; - data.getLinkedDataAll = getLinkedDataAll; - } - var linkSeriesData_default = linkSeriesData; - - // node_modules/echarts/lib/data/Tree.js - var TreeNode = ( - /** @class */ - function() { - function TreeNode2(name, hostTree) { - this.depth = 0; - this.height = 0; - this.dataIndex = -1; - this.children = []; - this.viewChildren = []; - this.isExpand = false; - this.name = name || ""; - this.hostTree = hostTree; - } - TreeNode2.prototype.isRemoved = function() { - return this.dataIndex < 0; - }; - TreeNode2.prototype.eachNode = function(options, cb, context) { - if (isFunction(options)) { - context = cb; - cb = options; - options = null; - } - options = options || {}; - if (isString(options)) { - options = { - order: options - }; - } - var order = options.order || "preorder"; - var children = this[options.attr || "children"]; - var suppressVisitSub; - order === "preorder" && (suppressVisitSub = cb.call(context, this)); - for (var i = 0; !suppressVisitSub && i < children.length; i++) { - children[i].eachNode(options, cb, context); - } - order === "postorder" && cb.call(context, this); - }; - TreeNode2.prototype.updateDepthAndHeight = function(depth) { - var height = 0; - this.depth = depth; - for (var i = 0; i < this.children.length; i++) { - var child = this.children[i]; - child.updateDepthAndHeight(depth + 1); - if (child.height > height) { - height = child.height; - } - } - this.height = height + 1; - }; - TreeNode2.prototype.getNodeById = function(id) { - if (this.getId() === id) { - return this; - } - for (var i = 0, children = this.children, len2 = children.length; i < len2; i++) { - var res = children[i].getNodeById(id); - if (res) { - return res; - } - } - }; - TreeNode2.prototype.contains = function(node) { - if (node === this) { - return true; - } - for (var i = 0, children = this.children, len2 = children.length; i < len2; i++) { - var res = children[i].contains(node); - if (res) { - return res; - } - } - }; - TreeNode2.prototype.getAncestors = function(includeSelf) { - var ancestors = []; - var node = includeSelf ? this : this.parentNode; - while (node) { - ancestors.push(node); - node = node.parentNode; - } - ancestors.reverse(); - return ancestors; - }; - TreeNode2.prototype.getAncestorsIndices = function() { - var indices = []; - var currNode = this; - while (currNode) { - indices.push(currNode.dataIndex); - currNode = currNode.parentNode; - } - indices.reverse(); - return indices; - }; - TreeNode2.prototype.getDescendantIndices = function() { - var indices = []; - this.eachNode(function(childNode) { - indices.push(childNode.dataIndex); - }); - return indices; - }; - TreeNode2.prototype.getValue = function(dimension) { - var data = this.hostTree.data; - return data.getStore().get(data.getDimensionIndex(dimension || "value"), this.dataIndex); - }; - TreeNode2.prototype.setLayout = function(layout5, merge2) { - this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, layout5, merge2); - }; - TreeNode2.prototype.getLayout = function() { - return this.hostTree.data.getItemLayout(this.dataIndex); - }; - TreeNode2.prototype.getModel = function(path) { - if (this.dataIndex < 0) { - return; - } - var hostTree = this.hostTree; - var itemModel = hostTree.data.getItemModel(this.dataIndex); - return itemModel.getModel(path); - }; - TreeNode2.prototype.getLevelModel = function() { - return (this.hostTree.levelModels || [])[this.depth]; - }; - TreeNode2.prototype.setVisual = function(key, value) { - this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, key, value); - }; - TreeNode2.prototype.getVisual = function(key) { - return this.hostTree.data.getItemVisual(this.dataIndex, key); - }; - TreeNode2.prototype.getRawIndex = function() { - return this.hostTree.data.getRawIndex(this.dataIndex); - }; - TreeNode2.prototype.getId = function() { - return this.hostTree.data.getId(this.dataIndex); - }; - TreeNode2.prototype.getChildIndex = function() { - if (this.parentNode) { - var children = this.parentNode.children; - for (var i = 0; i < children.length; ++i) { - if (children[i] === this) { - return i; - } - } - return -1; - } - return -1; - }; - TreeNode2.prototype.isAncestorOf = function(node) { - var parent = node.parentNode; - while (parent) { - if (parent === this) { - return true; - } - parent = parent.parentNode; - } - return false; - }; - TreeNode2.prototype.isDescendantOf = function(node) { - return node !== this && node.isAncestorOf(this); - }; - return TreeNode2; - }() - ); - var Tree = ( - /** @class */ - function() { - function Tree2(hostModel) { - this.type = "tree"; - this._nodes = []; - this.hostModel = hostModel; - } - Tree2.prototype.eachNode = function(options, cb, context) { - this.root.eachNode(options, cb, context); - }; - Tree2.prototype.getNodeByDataIndex = function(dataIndex) { - var rawIndex = this.data.getRawIndex(dataIndex); - return this._nodes[rawIndex]; - }; - Tree2.prototype.getNodeById = function(name) { - return this.root.getNodeById(name); - }; - Tree2.prototype.update = function() { - var data = this.data; - var nodes = this._nodes; - for (var i = 0, len2 = nodes.length; i < len2; i++) { - nodes[i].dataIndex = -1; - } - for (var i = 0, len2 = data.count(); i < len2; i++) { - nodes[data.getRawIndex(i)].dataIndex = i; - } - }; - Tree2.prototype.clearLayouts = function() { - this.data.clearItemLayouts(); - }; - Tree2.createTree = function(dataRoot, hostModel, beforeLink) { - var tree = new Tree2(hostModel); - var listData = []; - var dimMax = 1; - buildHierarchy(dataRoot); - function buildHierarchy(dataNode, parentNode2) { - var value = dataNode.value; - dimMax = Math.max(dimMax, isArray(value) ? value.length : 1); - listData.push(dataNode); - var node = new TreeNode(convertOptionIdName(dataNode.name, ""), tree); - parentNode2 ? addChild(node, parentNode2) : tree.root = node; - tree._nodes.push(node); - var children = dataNode.children; - if (children) { - for (var i = 0; i < children.length; i++) { - buildHierarchy(children[i], node); - } - } - } - tree.root.updateDepthAndHeight(0); - var dimensions = prepareSeriesDataSchema(listData, { - coordDimensions: ["value"], - dimensionsCount: dimMax - }).dimensions; - var list = new SeriesData_default(dimensions, hostModel); - list.initData(listData); - beforeLink && beforeLink(list); - linkSeriesData_default({ - mainData: list, - struct: tree, - structAttr: "tree" - }); - tree.update(); - return tree; - }; - return Tree2; - }() - ); - function addChild(child, node) { - var children = node.children; - if (child.parentNode === node) { - return; - } - children.push(child); - child.parentNode = node; - } - var Tree_default = Tree; - - // node_modules/echarts/lib/chart/helper/treeHelper.js - function retrieveTargetInfo(payload, validPayloadTypes, seriesModel) { - if (payload && indexOf(validPayloadTypes, payload.type) >= 0) { - var root = seriesModel.getData().tree.root; - var targetNode = payload.targetNode; - if (isString(targetNode)) { - targetNode = root.getNodeById(targetNode); - } - if (targetNode && root.contains(targetNode)) { - return { - node: targetNode - }; - } - var targetNodeId = payload.targetNodeId; - if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) { - return { - node: targetNode - }; - } - } - } - function getPathToRoot(node) { - var path = []; - while (node) { - node = node.parentNode; - node && path.push(node); - } - return path.reverse(); - } - function aboveViewRoot(viewRoot, node) { - var viewPath = getPathToRoot(viewRoot); - return indexOf(viewPath, node) >= 0; - } - function wrapTreePathInfo(node, seriesModel) { - var treePathInfo = []; - while (node) { - var nodeDataIndex = node.dataIndex; - treePathInfo.push({ - name: node.name, - dataIndex: nodeDataIndex, - value: seriesModel.getRawValue(nodeDataIndex) - }); - node = node.parentNode; - } - treePathInfo.reverse(); - return treePathInfo; - } - - // node_modules/echarts/lib/chart/tree/TreeSeries.js - var TreeSeriesModel = ( - /** @class */ - function(_super) { - __extends(TreeSeriesModel2, _super); - function TreeSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.hasSymbolVisual = true; - _this.ignoreStyleOnData = true; - return _this; - } - TreeSeriesModel2.prototype.getInitialData = function(option) { - var root = { - name: option.name, - children: option.data - }; - var leaves = option.leaves || {}; - var leavesModel = new Model_default(leaves, this, this.ecModel); - var tree = Tree_default.createTree(root, this, beforeLink); - function beforeLink(nodeData) { - nodeData.wrapMethod("getItemModel", function(model, idx) { - var node = tree.getNodeByDataIndex(idx); - if (!(node && node.children.length && node.isExpand)) { - model.parentModel = leavesModel; - } - return model; - }); - } - var treeDepth = 0; - tree.eachNode("preorder", function(node) { - if (node.depth > treeDepth) { - treeDepth = node.depth; - } - }); - var expandAndCollapse = option.expandAndCollapse; - var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth; - tree.root.eachNode("preorder", function(node) { - var item = node.hostTree.data.getRawDataItem(node.dataIndex); - node.isExpand = item && item.collapsed != null ? !item.collapsed : node.depth <= expandTreeDepth; - }); - return tree.data; - }; - TreeSeriesModel2.prototype.getOrient = function() { - var orient = this.get("orient"); - if (orient === "horizontal") { - orient = "LR"; - } else if (orient === "vertical") { - orient = "TB"; - } - return orient; - }; - TreeSeriesModel2.prototype.setZoom = function(zoom) { - this.option.zoom = zoom; - }; - TreeSeriesModel2.prototype.setCenter = function(center3) { - this.option.center = center3; - }; - TreeSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - var tree = this.getData().tree; - var realRoot = tree.root.children[0]; - var node = tree.getNodeByDataIndex(dataIndex); - var value = node.getValue(); - var name = node.name; - while (node && node !== realRoot) { - name = node.parentNode.name + "." + name; - node = node.parentNode; - } - return createTooltipMarkup("nameValue", { - name, - value, - noValue: isNaN(value) || value == null - }); - }; - TreeSeriesModel2.prototype.getDataParams = function(dataIndex) { - var params = _super.prototype.getDataParams.apply(this, arguments); - var node = this.getData().tree.getNodeByDataIndex(dataIndex); - params.treeAncestors = wrapTreePathInfo(node, this); - params.collapsed = !node.isExpand; - return params; - }; - TreeSeriesModel2.type = "series.tree"; - TreeSeriesModel2.layoutMode = "box"; - TreeSeriesModel2.defaultOption = { - // zlevel: 0, - z: 2, - coordinateSystem: "view", - // the position of the whole view - left: "12%", - top: "12%", - right: "12%", - bottom: "12%", - // the layout of the tree, two value can be selected, 'orthogonal' or 'radial' - layout: "orthogonal", - // value can be 'polyline' - edgeShape: "curve", - edgeForkPosition: "50%", - // true | false | 'move' | 'scale', see module:component/helper/RoamController. - roam: false, - // Symbol size scale ratio in roam - nodeScaleRatio: 0.4, - // Default on center of graph - center: null, - zoom: 1, - orient: "LR", - symbol: "emptyCircle", - symbolSize: 7, - expandAndCollapse: true, - initialTreeDepth: 2, - lineStyle: { - color: "#ccc", - width: 1.5, - curveness: 0.5 - }, - itemStyle: { - color: "lightsteelblue", - // borderColor: '#c23531', - borderWidth: 1.5 - }, - label: { - show: true - }, - animationEasing: "linear", - animationDuration: 700, - animationDurationUpdate: 500 - }; - return TreeSeriesModel2; - }(Series_default) - ); - var TreeSeries_default = TreeSeriesModel; - - // node_modules/echarts/lib/chart/tree/traversalHelper.js - function eachAfter(root, callback, separation2) { - var nodes = [root]; - var next = []; - var node; - while (node = nodes.pop()) { - next.push(node); - if (node.isExpand) { - var children = node.children; - if (children.length) { - for (var i = 0; i < children.length; i++) { - nodes.push(children[i]); - } - } - } - } - while (node = next.pop()) { - callback(node, separation2); - } - } - function eachBefore(root, callback) { - var nodes = [root]; - var node; - while (node = nodes.pop()) { - callback(node); - if (node.isExpand) { - var children = node.children; - if (children.length) { - for (var i = children.length - 1; i >= 0; i--) { - nodes.push(children[i]); - } - } - } - } - } - - // node_modules/echarts/lib/chart/tree/treeLayout.js - function treeLayout(ecModel, api) { - ecModel.eachSeriesByType("tree", function(seriesModel) { - commonLayout(seriesModel, api); - }); - } - function commonLayout(seriesModel, api) { - var layoutInfo = getViewRect2(seriesModel, api); - seriesModel.layoutInfo = layoutInfo; - var layout5 = seriesModel.get("layout"); - var width = 0; - var height = 0; - var separation2 = null; - if (layout5 === "radial") { - width = 2 * Math.PI; - height = Math.min(layoutInfo.height, layoutInfo.width) / 2; - separation2 = separation(function(node1, node2) { - return (node1.parentNode === node2.parentNode ? 1 : 2) / node1.depth; - }); - } else { - width = layoutInfo.width; - height = layoutInfo.height; - separation2 = separation(); - } - var virtualRoot = seriesModel.getData().tree.root; - var realRoot = virtualRoot.children[0]; - if (realRoot) { - init3(virtualRoot); - eachAfter(realRoot, firstWalk, separation2); - virtualRoot.hierNode.modifier = -realRoot.hierNode.prelim; - eachBefore(realRoot, secondWalk); - var left_1 = realRoot; - var right_1 = realRoot; - var bottom_1 = realRoot; - eachBefore(realRoot, function(node) { - var x = node.getLayout().x; - if (x < left_1.getLayout().x) { - left_1 = node; - } - if (x > right_1.getLayout().x) { - right_1 = node; - } - if (node.depth > bottom_1.depth) { - bottom_1 = node; - } - }); - var delta = left_1 === right_1 ? 1 : separation2(left_1, right_1) / 2; - var tx_1 = delta - left_1.getLayout().x; - var kx_1 = 0; - var ky_1 = 0; - var coorX_1 = 0; - var coorY_1 = 0; - if (layout5 === "radial") { - kx_1 = width / (right_1.getLayout().x + delta + tx_1); - ky_1 = height / (bottom_1.depth - 1 || 1); - eachBefore(realRoot, function(node) { - coorX_1 = (node.getLayout().x + tx_1) * kx_1; - coorY_1 = (node.depth - 1) * ky_1; - var finalCoor = radialCoordinate(coorX_1, coorY_1); - node.setLayout({ - x: finalCoor.x, - y: finalCoor.y, - rawX: coorX_1, - rawY: coorY_1 - }, true); - }); - } else { - var orient_1 = seriesModel.getOrient(); - if (orient_1 === "RL" || orient_1 === "LR") { - ky_1 = height / (right_1.getLayout().x + delta + tx_1); - kx_1 = width / (bottom_1.depth - 1 || 1); - eachBefore(realRoot, function(node) { - coorY_1 = (node.getLayout().x + tx_1) * ky_1; - coorX_1 = orient_1 === "LR" ? (node.depth - 1) * kx_1 : width - (node.depth - 1) * kx_1; - node.setLayout({ - x: coorX_1, - y: coorY_1 - }, true); - }); - } else if (orient_1 === "TB" || orient_1 === "BT") { - kx_1 = width / (right_1.getLayout().x + delta + tx_1); - ky_1 = height / (bottom_1.depth - 1 || 1); - eachBefore(realRoot, function(node) { - coorX_1 = (node.getLayout().x + tx_1) * kx_1; - coorY_1 = orient_1 === "TB" ? (node.depth - 1) * ky_1 : height - (node.depth - 1) * ky_1; - node.setLayout({ - x: coorX_1, - y: coorY_1 - }, true); - }); - } - } - } - } - - // node_modules/echarts/lib/chart/tree/treeVisual.js - function treeVisual(ecModel) { - ecModel.eachSeriesByType("tree", function(seriesModel) { - var data = seriesModel.getData(); - var tree = data.tree; - tree.eachNode(function(node) { - var model = node.getModel(); - var style = model.getModel("itemStyle").getItemStyle(); - var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, "style"); - extend(existsStyle, style); - }); - }); - } - - // node_modules/echarts/lib/chart/tree/treeAction.js - function installTreeAction(registers) { - registers.registerAction({ - type: "treeExpandAndCollapse", - event: "treeExpandAndCollapse", - update: "update" - }, function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "series", - subType: "tree", - query: payload - }, function(seriesModel) { - var dataIndex = payload.dataIndex; - var tree = seriesModel.getData().tree; - var node = tree.getNodeByDataIndex(dataIndex); - node.isExpand = !node.isExpand; - }); - }); - registers.registerAction({ - type: "treeRoam", - event: "treeRoam", - // Here we set 'none' instead of 'update', because roam action - // just need to update the transform matrix without having to recalculate - // the layout. So don't need to go through the whole update process, such - // as 'dataPrcocess', 'coordSystemUpdate', 'layout' and so on. - update: "none" - }, function(payload, ecModel, api) { - ecModel.eachComponent({ - mainType: "series", - subType: "tree", - query: payload - }, function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - var res = updateCenterAndZoom(coordSys, payload, void 0, api); - seriesModel.setCenter && seriesModel.setCenter(res.center); - seriesModel.setZoom && seriesModel.setZoom(res.zoom); - }); - }); - } - - // node_modules/echarts/lib/chart/tree/install.js - function install12(registers) { - registers.registerChartView(TreeView_default); - registers.registerSeriesModel(TreeSeries_default); - registers.registerLayout(treeLayout); - registers.registerVisual(treeVisual); - installTreeAction(registers); - } - - // node_modules/echarts/lib/chart/treemap/treemapAction.js - var actionTypes = ["treemapZoomToNode", "treemapRender", "treemapMove"]; - function installTreemapAction(registers) { - for (var i = 0; i < actionTypes.length; i++) { - registers.registerAction({ - type: actionTypes[i], - update: "updateView" - }, noop); - } - registers.registerAction({ - type: "treemapRootToNode", - update: "updateView" - }, function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "series", - subType: "treemap", - query: payload - }, handleRootToNode); - function handleRootToNode(model, index) { - var types = ["treemapZoomToNode", "treemapRootToNode"]; - var targetInfo = retrieveTargetInfo(payload, types, model); - if (targetInfo) { - var originViewRoot = model.getViewRoot(); - if (originViewRoot) { - payload.direction = aboveViewRoot(originViewRoot, targetInfo.node) ? "rollUp" : "drillDown"; - } - model.resetViewRoot(targetInfo.node); - } - } - }); - } - - // node_modules/echarts/lib/chart/helper/enableAriaDecalForTree.js - function enableAriaDecalForTree(seriesModel) { - var data = seriesModel.getData(); - var tree = data.tree; - var decalPaletteScope2 = {}; - tree.eachNode(function(node) { - var current = node; - while (current && current.depth > 1) { - current = current.parentNode; - } - var decal = getDecalFromPalette(seriesModel.ecModel, current.name || current.dataIndex + "", decalPaletteScope2); - node.setVisual("decal", decal); - }); - } - - // node_modules/echarts/lib/chart/treemap/TreemapSeries.js - var TreemapSeriesModel = ( - /** @class */ - function(_super) { - __extends(TreemapSeriesModel2, _super); - function TreemapSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TreemapSeriesModel2.type; - _this.preventUsingHoverLayer = true; - return _this; - } - TreemapSeriesModel2.prototype.getInitialData = function(option, ecModel) { - var root = { - name: option.name, - children: option.data - }; - completeTreeValue(root); - var levels = option.levels || []; - var designatedVisualItemStyle = this.designatedVisualItemStyle = {}; - var designatedVisualModel = new Model_default({ - itemStyle: designatedVisualItemStyle - }, this, ecModel); - levels = option.levels = setDefault(levels, ecModel); - var levelModels = map(levels || [], function(levelDefine) { - return new Model_default(levelDefine, designatedVisualModel, ecModel); - }, this); - var tree = Tree_default.createTree(root, this, beforeLink); - function beforeLink(nodeData) { - nodeData.wrapMethod("getItemModel", function(model, idx) { - var node = tree.getNodeByDataIndex(idx); - var levelModel = node ? levelModels[node.depth] : null; - model.parentModel = levelModel || designatedVisualModel; - return model; - }); - } - return tree.data; - }; - TreemapSeriesModel2.prototype.optionUpdated = function() { - this.resetViewRoot(); - }; - TreemapSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - var data = this.getData(); - var value = this.getRawValue(dataIndex); - var name = data.getName(dataIndex); - return createTooltipMarkup("nameValue", { - name, - value - }); - }; - TreemapSeriesModel2.prototype.getDataParams = function(dataIndex) { - var params = _super.prototype.getDataParams.apply(this, arguments); - var node = this.getData().tree.getNodeByDataIndex(dataIndex); - params.treeAncestors = wrapTreePathInfo(node, this); - params.treePathInfo = params.treeAncestors; - return params; - }; - TreemapSeriesModel2.prototype.setLayoutInfo = function(layoutInfo) { - this.layoutInfo = this.layoutInfo || {}; - extend(this.layoutInfo, layoutInfo); - }; - TreemapSeriesModel2.prototype.mapIdToIndex = function(id) { - var idIndexMap = this._idIndexMap; - if (!idIndexMap) { - idIndexMap = this._idIndexMap = createHashMap(); - this._idIndexMapCount = 0; - } - var index = idIndexMap.get(id); - if (index == null) { - idIndexMap.set(id, index = this._idIndexMapCount++); - } - return index; - }; - TreemapSeriesModel2.prototype.getViewRoot = function() { - return this._viewRoot; - }; - TreemapSeriesModel2.prototype.resetViewRoot = function(viewRoot) { - viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot; - var root = this.getRawData().tree.root; - if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) { - this._viewRoot = root; - } - }; - TreemapSeriesModel2.prototype.enableAriaDecal = function() { - enableAriaDecalForTree(this); - }; - TreemapSeriesModel2.type = "series.treemap"; - TreemapSeriesModel2.layoutMode = "box"; - TreemapSeriesModel2.defaultOption = { - // Disable progressive rendering - progressive: 0, - // size: ['80%', '80%'], // deprecated, compatible with ec2. - left: "center", - top: "middle", - width: "80%", - height: "80%", - sort: true, - clipWindow: "origin", - squareRatio: 0.5 * (1 + Math.sqrt(5)), - leafDepth: null, - drillDownIcon: "\u25B6", - // to align specialized icon. ▷▶❒❐▼✚ - zoomToNodeRatio: 0.32 * 0.32, - scaleLimit: null, - roam: true, - nodeClick: "zoomToNode", - animation: true, - animationDurationUpdate: 900, - animationEasing: "quinticInOut", - breadcrumb: { - show: true, - height: 22, - left: "center", - top: "bottom", - // right - // bottom - emptyItemWidth: 25, - itemStyle: { - color: "rgba(0,0,0,0.7)", - textStyle: { - color: "#fff" - } - }, - emphasis: { - itemStyle: { - color: "rgba(0,0,0,0.9)" - // '#5793f3', - } - } - }, - label: { - show: true, - // Do not use textDistance, for ellipsis rect just the same as treemap node rect. - distance: 0, - padding: 5, - position: "inside", - // formatter: null, - color: "#fff", - overflow: "truncate" - // align - // verticalAlign - }, - upperLabel: { - show: false, - position: [0, "50%"], - height: 20, - // formatter: null, - // color: '#fff', - overflow: "truncate", - // align: null, - verticalAlign: "middle" - }, - itemStyle: { - color: null, - colorAlpha: null, - colorSaturation: null, - borderWidth: 0, - gapWidth: 0, - borderColor: "#fff", - borderColorSaturation: null - // If specified, borderColor will be ineffective, and the - // border color is evaluated by color of current node and - // borderColorSaturation. - }, - emphasis: { - upperLabel: { - show: true, - position: [0, "50%"], - overflow: "truncate", - verticalAlign: "middle" - } - }, - visualDimension: 0, - visualMin: null, - visualMax: null, - color: [], - // level[n].color (if necessary). - // + Specify color list of each level. level[0].color would be global - // color list if not specified. (see method `setDefault`). - // + But set as a empty array to forbid fetch color from global palette - // when using nodeModel.get('color'), otherwise nodes on deep level - // will always has color palette set and are not able to inherit color - // from parent node. - // + TreemapSeries.color can not be set as 'none', otherwise effect - // legend color fetching (see seriesColor.js). - colorAlpha: null, - colorSaturation: null, - colorMappingBy: "index", - visibleMin: 10, - // be rendered. Only works when sort is 'asc' or 'desc'. - childrenVisibleMin: null, - // grandchildren will not show. - // Why grandchildren? If not grandchildren but children, - // some siblings show children and some not, - // the appearance may be mess and not consistent, - levels: [] - // Each item: { - // visibleMin, itemStyle, visualDimension, label - // } - }; - return TreemapSeriesModel2; - }(Series_default) - ); - function completeTreeValue(dataNode) { - var sum2 = 0; - each(dataNode.children, function(child) { - completeTreeValue(child); - var childValue = child.value; - isArray(childValue) && (childValue = childValue[0]); - sum2 += childValue; - }); - var thisValue = dataNode.value; - if (isArray(thisValue)) { - thisValue = thisValue[0]; - } - if (thisValue == null || isNaN(thisValue)) { - thisValue = sum2; - } - if (thisValue < 0) { - thisValue = 0; - } - isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue; - } - function setDefault(levels, ecModel) { - var globalColorList = normalizeToArray(ecModel.get("color")); - var globalDecalList = normalizeToArray(ecModel.get(["aria", "decal", "decals"])); - if (!globalColorList) { - return; - } - levels = levels || []; - var hasColorDefine; - var hasDecalDefine; - each(levels, function(levelDefine) { - var model = new Model_default(levelDefine); - var modelColor = model.get("color"); - var modelDecal = model.get("decal"); - if (model.get(["itemStyle", "color"]) || modelColor && modelColor !== "none") { - hasColorDefine = true; - } - if (model.get(["itemStyle", "decal"]) || modelDecal && modelDecal !== "none") { - hasDecalDefine = true; - } - }); - var level0 = levels[0] || (levels[0] = {}); - if (!hasColorDefine) { - level0.color = globalColorList.slice(); - } - if (!hasDecalDefine && globalDecalList) { - level0.decal = globalDecalList.slice(); - } - return levels; - } - var TreemapSeries_default = TreemapSeriesModel; - - // node_modules/echarts/lib/chart/treemap/Breadcrumb.js - var TEXT_PADDING = 8; - var ITEM_GAP = 8; - var ARRAY_LENGTH = 5; - var Breadcrumb = ( - /** @class */ - function() { - function Breadcrumb2(containerGroup) { - this.group = new Group_default(); - containerGroup.add(this.group); - } - Breadcrumb2.prototype.render = function(seriesModel, api, targetNode, onSelect) { - var model = seriesModel.getModel("breadcrumb"); - var thisGroup = this.group; - thisGroup.removeAll(); - if (!model.get("show") || !targetNode) { - return; - } - var normalStyleModel = model.getModel("itemStyle"); - var emphasisModel = model.getModel("emphasis"); - var textStyleModel = normalStyleModel.getModel("textStyle"); - var emphasisTextStyleModel = emphasisModel.getModel(["itemStyle", "textStyle"]); - var layoutParam = { - pos: { - left: model.get("left"), - right: model.get("right"), - top: model.get("top"), - bottom: model.get("bottom") - }, - box: { - width: api.getWidth(), - height: api.getHeight() - }, - emptyItemWidth: model.get("emptyItemWidth"), - totalWidth: 0, - renderList: [] - }; - this._prepare(targetNode, layoutParam, textStyleModel); - this._renderContent(seriesModel, layoutParam, normalStyleModel, emphasisModel, textStyleModel, emphasisTextStyleModel, onSelect); - positionElement(thisGroup, layoutParam.pos, layoutParam.box); - }; - Breadcrumb2.prototype._prepare = function(targetNode, layoutParam, textStyleModel) { - for (var node = targetNode; node; node = node.parentNode) { - var text = convertOptionIdName(node.getModel().get("name"), ""); - var textRect = textStyleModel.getTextRect(text); - var itemWidth = Math.max(textRect.width + TEXT_PADDING * 2, layoutParam.emptyItemWidth); - layoutParam.totalWidth += itemWidth + ITEM_GAP; - layoutParam.renderList.push({ - node, - text, - width: itemWidth - }); - } - }; - Breadcrumb2.prototype._renderContent = function(seriesModel, layoutParam, normalStyleModel, emphasisModel, textStyleModel, emphasisTextStyleModel, onSelect) { - var lastX = 0; - var emptyItemWidth = layoutParam.emptyItemWidth; - var height = seriesModel.get(["breadcrumb", "height"]); - var availableSize = getAvailableSize(layoutParam.pos, layoutParam.box); - var totalWidth = layoutParam.totalWidth; - var renderList = layoutParam.renderList; - var emphasisItemStyle = emphasisModel.getModel("itemStyle").getItemStyle(); - for (var i = renderList.length - 1; i >= 0; i--) { - var item = renderList[i]; - var itemNode = item.node; - var itemWidth = item.width; - var text = item.text; - if (totalWidth > availableSize.width) { - totalWidth -= itemWidth - emptyItemWidth; - itemWidth = emptyItemWidth; - text = null; - } - var el = new Polygon_default({ - shape: { - points: makeItemPoints(lastX, 0, itemWidth, height, i === renderList.length - 1, i === 0) - }, - style: defaults(normalStyleModel.getItemStyle(), { - lineJoin: "bevel" - }), - textContent: new Text_default({ - style: createTextStyle(textStyleModel, { - text - }) - }), - textConfig: { - position: "inside" - }, - z2: Z2_EMPHASIS_LIFT * 1e4, - onclick: curry(onSelect, itemNode) - }); - el.disableLabelAnimation = true; - el.getTextContent().ensureState("emphasis").style = createTextStyle(emphasisTextStyleModel, { - text - }); - el.ensureState("emphasis").style = emphasisItemStyle; - toggleHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - this.group.add(el); - packEventData(el, seriesModel, itemNode); - lastX += itemWidth + ITEM_GAP; - } - }; - Breadcrumb2.prototype.remove = function() { - this.group.removeAll(); - }; - return Breadcrumb2; - }() - ); - function makeItemPoints(x, y, itemWidth, itemHeight, head, tail) { - var points4 = [[head ? x : x - ARRAY_LENGTH, y], [x + itemWidth, y], [x + itemWidth, y + itemHeight], [head ? x : x - ARRAY_LENGTH, y + itemHeight]]; - !tail && points4.splice(2, 0, [x + itemWidth + ARRAY_LENGTH, y + itemHeight / 2]); - !head && points4.push([x, y + itemHeight / 2]); - return points4; - } - function packEventData(el, seriesModel, itemNode) { - getECData(el).eventData = { - componentType: "series", - componentSubType: "treemap", - componentIndex: seriesModel.componentIndex, - seriesIndex: seriesModel.seriesIndex, - seriesName: seriesModel.name, - seriesType: "treemap", - selfType: "breadcrumb", - nodeData: { - dataIndex: itemNode && itemNode.dataIndex, - name: itemNode && itemNode.name - }, - treePathInfo: itemNode && wrapTreePathInfo(itemNode, seriesModel) - }; - } - var Breadcrumb_default = Breadcrumb; - - // node_modules/echarts/lib/util/animation.js - var AnimationWrap = ( - /** @class */ - function() { - function AnimationWrap2() { - this._storage = []; - this._elExistsMap = {}; - } - AnimationWrap2.prototype.add = function(el, target, duration, delay, easing) { - if (this._elExistsMap[el.id]) { - return false; - } - this._elExistsMap[el.id] = true; - this._storage.push({ - el, - target, - duration, - delay, - easing - }); - return true; - }; - AnimationWrap2.prototype.finished = function(callback) { - this._finishedCallback = callback; - return this; - }; - AnimationWrap2.prototype.start = function() { - var _this = this; - var count2 = this._storage.length; - var checkTerminate = function() { - count2--; - if (count2 <= 0) { - _this._storage.length = 0; - _this._elExistsMap = {}; - _this._finishedCallback && _this._finishedCallback(); - } - }; - for (var i = 0, len2 = this._storage.length; i < len2; i++) { - var item = this._storage[i]; - item.el.animateTo(item.target, { - duration: item.duration, - delay: item.delay, - easing: item.easing, - setToFinal: true, - done: checkTerminate, - aborted: checkTerminate - }); - } - return this; - }; - return AnimationWrap2; - }() - ); - function createWrap() { - return new AnimationWrap(); - } - - // node_modules/echarts/lib/chart/treemap/TreemapView.js - var Group2 = Group_default; - var Rect2 = Rect_default; - var DRAG_THRESHOLD = 3; - var PATH_LABEL_NOAMAL = "label"; - var PATH_UPPERLABEL_NORMAL = "upperLabel"; - var Z2_BASE = Z2_EMPHASIS_LIFT * 10; - var Z2_BG = Z2_EMPHASIS_LIFT * 2; - var Z2_CONTENT = Z2_EMPHASIS_LIFT * 3; - var getStateItemStyle = makeStyleMapper([ - ["fill", "color"], - // `borderColor` and `borderWidth` has been occupied, - // so use `stroke` to indicate the stroke of the rect. - ["stroke", "strokeColor"], - ["lineWidth", "strokeWidth"], - ["shadowBlur"], - ["shadowOffsetX"], - ["shadowOffsetY"], - ["shadowColor"] - // Option decal is in `DecalObject` but style.decal is in `PatternObject`. - // So do not transfer decal directly. - ]); - var getItemStyleNormal = function(model) { - var itemStyle = getStateItemStyle(model); - itemStyle.stroke = itemStyle.fill = itemStyle.lineWidth = null; - return itemStyle; - }; - var inner9 = makeInner(); - var TreemapView = ( - /** @class */ - function(_super) { - __extends(TreemapView2, _super); - function TreemapView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TreemapView2.type; - _this._state = "ready"; - _this._storage = createStorage(); - return _this; - } - TreemapView2.prototype.render = function(seriesModel, ecModel, api, payload) { - var models = ecModel.findComponents({ - mainType: "series", - subType: "treemap", - query: payload - }); - if (indexOf(models, seriesModel) < 0) { - return; - } - this.seriesModel = seriesModel; - this.api = api; - this.ecModel = ecModel; - var types = ["treemapZoomToNode", "treemapRootToNode"]; - var targetInfo = retrieveTargetInfo(payload, types, seriesModel); - var payloadType = payload && payload.type; - var layoutInfo = seriesModel.layoutInfo; - var isInit = !this._oldTree; - var thisStorage = this._storage; - var reRoot = payloadType === "treemapRootToNode" && targetInfo && thisStorage ? { - rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()], - direction: payload.direction - } : null; - var containerGroup = this._giveContainerGroup(layoutInfo); - var hasAnimation = seriesModel.get("animation"); - var renderResult = this._doRender(containerGroup, seriesModel, reRoot); - hasAnimation && !isInit && (!payloadType || payloadType === "treemapZoomToNode" || payloadType === "treemapRootToNode") ? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot) : renderResult.renderFinally(); - this._resetController(api); - this._renderBreadcrumb(seriesModel, api, targetInfo); - }; - TreemapView2.prototype._giveContainerGroup = function(layoutInfo) { - var containerGroup = this._containerGroup; - if (!containerGroup) { - containerGroup = this._containerGroup = new Group2(); - this._initEvents(containerGroup); - this.group.add(containerGroup); - } - containerGroup.x = layoutInfo.x; - containerGroup.y = layoutInfo.y; - return containerGroup; - }; - TreemapView2.prototype._doRender = function(containerGroup, seriesModel, reRoot) { - var thisTree = seriesModel.getData().tree; - var oldTree = this._oldTree; - var lastsForAnimation = createStorage(); - var thisStorage = createStorage(); - var oldStorage = this._storage; - var willInvisibleEls = []; - function doRenderNode(thisNode, oldNode, parentGroup, depth) { - return renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth); - } - dualTravel(thisTree.root ? [thisTree.root] : [], oldTree && oldTree.root ? [oldTree.root] : [], containerGroup, thisTree === oldTree || !oldTree, 0); - var willDeleteEls = clearStorage(oldStorage); - this._oldTree = thisTree; - this._storage = thisStorage; - if (this._controllerHost) { - var _oldRootLayout = this.seriesModel.layoutInfo; - var rootLayout = thisTree.root.getLayout(); - if (rootLayout.width === _oldRootLayout.width && rootLayout.height === _oldRootLayout.height) { - this._controllerHost.zoom = 1; - } - } - return { - lastsForAnimation, - willDeleteEls, - renderFinally - }; - function dualTravel(thisViewChildren, oldViewChildren, parentGroup, sameTree, depth) { - if (sameTree) { - oldViewChildren = thisViewChildren; - each(thisViewChildren, function(child, index) { - !child.isRemoved() && processNode(index, index); - }); - } else { - new DataDiffer_default(oldViewChildren, thisViewChildren, getKey2, getKey2).add(processNode).update(processNode).remove(curry(processNode, null)).execute(); - } - function getKey2(node) { - return node.getId(); - } - function processNode(newIndex, oldIndex) { - var thisNode = newIndex != null ? thisViewChildren[newIndex] : null; - var oldNode = oldIndex != null ? oldViewChildren[oldIndex] : null; - var group = doRenderNode(thisNode, oldNode, parentGroup, depth); - group && dualTravel(thisNode && thisNode.viewChildren || [], oldNode && oldNode.viewChildren || [], group, sameTree, depth + 1); - } - } - function clearStorage(storage2) { - var willDeleteEls2 = createStorage(); - storage2 && each(storage2, function(store, storageName) { - var delEls = willDeleteEls2[storageName]; - each(store, function(el) { - el && (delEls.push(el), inner9(el).willDelete = true); - }); - }); - return willDeleteEls2; - } - function renderFinally() { - each(willDeleteEls, function(els) { - each(els, function(el) { - el.parent && el.parent.remove(el); - }); - }); - each(willInvisibleEls, function(el) { - el.invisible = true; - el.dirty(); - }); - } - }; - TreemapView2.prototype._doAnimation = function(containerGroup, renderResult, seriesModel, reRoot) { - var durationOption = seriesModel.get("animationDurationUpdate"); - var easingOption = seriesModel.get("animationEasing"); - var duration = (isFunction(durationOption) ? 0 : durationOption) || 0; - var easing = (isFunction(easingOption) ? null : easingOption) || "cubicOut"; - var animationWrap = createWrap(); - each(renderResult.willDeleteEls, function(store, storageName) { - each(store, function(el, rawIndex) { - if (el.invisible) { - return; - } - var parent = el.parent; - var target; - var innerStore = inner9(parent); - if (reRoot && reRoot.direction === "drillDown") { - target = parent === reRoot.rootNodeGroup ? { - shape: { - x: 0, - y: 0, - width: innerStore.nodeWidth, - height: innerStore.nodeHeight - }, - style: { - opacity: 0 - } - } : { - style: { - opacity: 0 - } - }; - } else { - var targetX = 0; - var targetY = 0; - if (!innerStore.willDelete) { - targetX = innerStore.nodeWidth / 2; - targetY = innerStore.nodeHeight / 2; - } - target = storageName === "nodeGroup" ? { - x: targetX, - y: targetY, - style: { - opacity: 0 - } - } : { - shape: { - x: targetX, - y: targetY, - width: 0, - height: 0 - }, - style: { - opacity: 0 - } - }; - } - target && animationWrap.add(el, target, duration, 0, easing); - }); - }); - each(this._storage, function(store, storageName) { - each(store, function(el, rawIndex) { - var last = renderResult.lastsForAnimation[storageName][rawIndex]; - var target = {}; - if (!last) { - return; - } - if (el instanceof Group_default) { - if (last.oldX != null) { - target.x = el.x; - target.y = el.y; - el.x = last.oldX; - el.y = last.oldY; - } - } else { - if (last.oldShape) { - target.shape = extend({}, el.shape); - el.setShape(last.oldShape); - } - if (last.fadein) { - el.setStyle("opacity", 0); - target.style = { - opacity: 1 - }; - } else if (el.style.opacity !== 1) { - target.style = { - opacity: 1 - }; - } - } - animationWrap.add(el, target, duration, 0, easing); - }); - }, this); - this._state = "animating"; - animationWrap.finished(bind(function() { - this._state = "ready"; - renderResult.renderFinally(); - }, this)).start(); - }; - TreemapView2.prototype._resetController = function(api) { - var controller = this._controller; - var controllerHost = this._controllerHost; - if (!controllerHost) { - this._controllerHost = { - target: this.group - }; - controllerHost = this._controllerHost; - } - if (!controller) { - controller = this._controller = new RoamController_default(api.getZr()); - controller.enable(this.seriesModel.get("roam")); - controllerHost.zoomLimit = this.seriesModel.get("scaleLimit"); - controllerHost.zoom = this.seriesModel.get("zoom"); - controller.on("pan", bind(this._onPan, this)); - controller.on("zoom", bind(this._onZoom, this)); - } - var rect = new BoundingRect_default(0, 0, api.getWidth(), api.getHeight()); - controller.setPointerChecker(function(e2, x, y) { - return rect.contain(x, y); - }); - }; - TreemapView2.prototype._clearController = function() { - var controller = this._controller; - this._controllerHost = null; - if (controller) { - controller.dispose(); - controller = null; - } - }; - TreemapView2.prototype._onPan = function(e2) { - if (this._state !== "animating" && (Math.abs(e2.dx) > DRAG_THRESHOLD || Math.abs(e2.dy) > DRAG_THRESHOLD)) { - var root = this.seriesModel.getData().tree.root; - if (!root) { - return; - } - var rootLayout = root.getLayout(); - if (!rootLayout) { - return; - } - this.api.dispatchAction({ - type: "treemapMove", - from: this.uid, - seriesId: this.seriesModel.id, - rootRect: { - x: rootLayout.x + e2.dx, - y: rootLayout.y + e2.dy, - width: rootLayout.width, - height: rootLayout.height - } - }); - } - }; - TreemapView2.prototype._onZoom = function(e2) { - var mouseX = e2.originX; - var mouseY = e2.originY; - var zoomDelta = e2.scale; - if (this._state !== "animating") { - var root = this.seriesModel.getData().tree.root; - if (!root) { - return; - } - var rootLayout = root.getLayout(); - if (!rootLayout) { - return; - } - var rect = new BoundingRect_default(rootLayout.x, rootLayout.y, rootLayout.width, rootLayout.height); - var zoomLimit = null; - var _controllerHost = this._controllerHost; - zoomLimit = _controllerHost.zoomLimit; - var newZoom = _controllerHost.zoom = _controllerHost.zoom || 1; - newZoom *= zoomDelta; - if (zoomLimit) { - var zoomMin = zoomLimit.min || 0; - var zoomMax = zoomLimit.max || Infinity; - newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin); - } - var zoomScale = newZoom / _controllerHost.zoom; - _controllerHost.zoom = newZoom; - var layoutInfo = this.seriesModel.layoutInfo; - mouseX -= layoutInfo.x; - mouseY -= layoutInfo.y; - var m2 = create2(); - translate(m2, m2, [-mouseX, -mouseY]); - scale2(m2, m2, [zoomScale, zoomScale]); - translate(m2, m2, [mouseX, mouseY]); - rect.applyTransform(m2); - this.api.dispatchAction({ - type: "treemapRender", - from: this.uid, - seriesId: this.seriesModel.id, - rootRect: { - x: rect.x, - y: rect.y, - width: rect.width, - height: rect.height - } - }); - } - }; - TreemapView2.prototype._initEvents = function(containerGroup) { - var _this = this; - containerGroup.on("click", function(e2) { - if (_this._state !== "ready") { - return; - } - var nodeClick = _this.seriesModel.get("nodeClick", true); - if (!nodeClick) { - return; - } - var targetInfo = _this.findTarget(e2.offsetX, e2.offsetY); - if (!targetInfo) { - return; - } - var node = targetInfo.node; - if (node.getLayout().isLeafRoot) { - _this._rootToNode(targetInfo); - } else { - if (nodeClick === "zoomToNode") { - _this._zoomToNode(targetInfo); - } else if (nodeClick === "link") { - var itemModel = node.hostTree.data.getItemModel(node.dataIndex); - var link = itemModel.get("link", true); - var linkTarget = itemModel.get("target", true) || "blank"; - link && windowOpen(link, linkTarget); - } - } - }, this); - }; - TreemapView2.prototype._renderBreadcrumb = function(seriesModel, api, targetInfo) { - var _this = this; - if (!targetInfo) { - targetInfo = seriesModel.get("leafDepth", true) != null ? { - node: seriesModel.getViewRoot() - } : this.findTarget(api.getWidth() / 2, api.getHeight() / 2); - if (!targetInfo) { - targetInfo = { - node: seriesModel.getData().tree.root - }; - } - } - (this._breadcrumb || (this._breadcrumb = new Breadcrumb_default(this.group))).render(seriesModel, api, targetInfo.node, function(node) { - if (_this._state !== "animating") { - aboveViewRoot(seriesModel.getViewRoot(), node) ? _this._rootToNode({ - node - }) : _this._zoomToNode({ - node - }); - } - }); - }; - TreemapView2.prototype.remove = function() { - this._clearController(); - this._containerGroup && this._containerGroup.removeAll(); - this._storage = createStorage(); - this._state = "ready"; - this._breadcrumb && this._breadcrumb.remove(); - }; - TreemapView2.prototype.dispose = function() { - this._clearController(); - }; - TreemapView2.prototype._zoomToNode = function(targetInfo) { - this.api.dispatchAction({ - type: "treemapZoomToNode", - from: this.uid, - seriesId: this.seriesModel.id, - targetNode: targetInfo.node - }); - }; - TreemapView2.prototype._rootToNode = function(targetInfo) { - this.api.dispatchAction({ - type: "treemapRootToNode", - from: this.uid, - seriesId: this.seriesModel.id, - targetNode: targetInfo.node - }); - }; - TreemapView2.prototype.findTarget = function(x, y) { - var targetInfo; - var viewRoot = this.seriesModel.getViewRoot(); - viewRoot.eachNode({ - attr: "viewChildren", - order: "preorder" - }, function(node) { - var bgEl = this._storage.background[node.getRawIndex()]; - if (bgEl) { - var point = bgEl.transformCoordToLocal(x, y); - var shape = bgEl.shape; - if (shape.x <= point[0] && point[0] <= shape.x + shape.width && shape.y <= point[1] && point[1] <= shape.y + shape.height) { - targetInfo = { - node, - offsetX: point[0], - offsetY: point[1] - }; - } else { - return false; - } - } - }, this); - return targetInfo; - }; - TreemapView2.type = "treemap"; - return TreemapView2; - }(Chart_default) - ); - function createStorage() { - return { - nodeGroup: [], - background: [], - content: [] - }; - } - function renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth) { - if (!thisNode) { - return; - } - var thisLayout = thisNode.getLayout(); - var data = seriesModel.getData(); - var nodeModel = thisNode.getModel(); - data.setItemGraphicEl(thisNode.dataIndex, null); - if (!thisLayout || !thisLayout.isInView) { - return; - } - var thisWidth = thisLayout.width; - var thisHeight = thisLayout.height; - var borderWidth = thisLayout.borderWidth; - var thisInvisible = thisLayout.invisible; - var thisRawIndex = thisNode.getRawIndex(); - var oldRawIndex = oldNode && oldNode.getRawIndex(); - var thisViewChildren = thisNode.viewChildren; - var upperHeight = thisLayout.upperHeight; - var isParent = thisViewChildren && thisViewChildren.length; - var itemStyleNormalModel = nodeModel.getModel("itemStyle"); - var itemStyleEmphasisModel = nodeModel.getModel(["emphasis", "itemStyle"]); - var itemStyleBlurModel = nodeModel.getModel(["blur", "itemStyle"]); - var itemStyleSelectModel = nodeModel.getModel(["select", "itemStyle"]); - var borderRadius = itemStyleNormalModel.get("borderRadius") || 0; - var group = giveGraphic("nodeGroup", Group2); - if (!group) { - return; - } - parentGroup.add(group); - group.x = thisLayout.x || 0; - group.y = thisLayout.y || 0; - group.markRedraw(); - inner9(group).nodeWidth = thisWidth; - inner9(group).nodeHeight = thisHeight; - if (thisLayout.isAboveViewRoot) { - return group; - } - var bg = giveGraphic("background", Rect2, depth, Z2_BG); - bg && renderBackground(group, bg, isParent && thisLayout.upperLabelHeight); - var emphasisModel = nodeModel.getModel("emphasis"); - var focus = emphasisModel.get("focus"); - var blurScope = emphasisModel.get("blurScope"); - var isDisabled = emphasisModel.get("disabled"); - var focusOrIndices = focus === "ancestor" ? thisNode.getAncestorsIndices() : focus === "descendant" ? thisNode.getDescendantIndices() : focus; - if (isParent) { - if (isHighDownDispatcher(group)) { - setAsHighDownDispatcher(group, false); - } - if (bg) { - setAsHighDownDispatcher(bg, !isDisabled); - data.setItemGraphicEl(thisNode.dataIndex, bg); - enableHoverFocus(bg, focusOrIndices, blurScope); - } - } else { - var content = giveGraphic("content", Rect2, depth, Z2_CONTENT); - content && renderContent(group, content); - bg.disableMorphing = true; - if (bg && isHighDownDispatcher(bg)) { - setAsHighDownDispatcher(bg, false); - } - setAsHighDownDispatcher(group, !isDisabled); - data.setItemGraphicEl(thisNode.dataIndex, group); - var cursorStyle = nodeModel.getShallow("cursor"); - cursorStyle && content.attr("cursor", cursorStyle); - enableHoverFocus(group, focusOrIndices, blurScope); - } - return group; - function renderBackground(group2, bg2, useUpperLabel) { - var ecData = getECData(bg2); - ecData.dataIndex = thisNode.dataIndex; - ecData.seriesIndex = seriesModel.seriesIndex; - bg2.setShape({ - x: 0, - y: 0, - width: thisWidth, - height: thisHeight, - r: borderRadius - }); - if (thisInvisible) { - processInvisible(bg2); - } else { - bg2.invisible = false; - var style = thisNode.getVisual("style"); - var visualBorderColor = style.stroke; - var normalStyle = getItemStyleNormal(itemStyleNormalModel); - normalStyle.fill = visualBorderColor; - var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel); - emphasisStyle.fill = itemStyleEmphasisModel.get("borderColor"); - var blurStyle = getStateItemStyle(itemStyleBlurModel); - blurStyle.fill = itemStyleBlurModel.get("borderColor"); - var selectStyle = getStateItemStyle(itemStyleSelectModel); - selectStyle.fill = itemStyleSelectModel.get("borderColor"); - if (useUpperLabel) { - var upperLabelWidth = thisWidth - 2 * borderWidth; - prepareText( - // PENDING: convert ZRColor to ColorString for text. - bg2, - visualBorderColor, - style.opacity, - { - x: borderWidth, - y: 0, - width: upperLabelWidth, - height: upperHeight - } - ); - } else { - bg2.removeTextContent(); - } - bg2.setStyle(normalStyle); - bg2.ensureState("emphasis").style = emphasisStyle; - bg2.ensureState("blur").style = blurStyle; - bg2.ensureState("select").style = selectStyle; - setDefaultStateProxy(bg2); - } - group2.add(bg2); - } - function renderContent(group2, content2) { - var ecData = getECData(content2); - ecData.dataIndex = thisNode.dataIndex; - ecData.seriesIndex = seriesModel.seriesIndex; - var contentWidth = Math.max(thisWidth - 2 * borderWidth, 0); - var contentHeight = Math.max(thisHeight - 2 * borderWidth, 0); - content2.culling = true; - content2.setShape({ - x: borderWidth, - y: borderWidth, - width: contentWidth, - height: contentHeight, - r: borderRadius - }); - if (thisInvisible) { - processInvisible(content2); - } else { - content2.invisible = false; - var nodeStyle = thisNode.getVisual("style"); - var visualColor = nodeStyle.fill; - var normalStyle = getItemStyleNormal(itemStyleNormalModel); - normalStyle.fill = visualColor; - normalStyle.decal = nodeStyle.decal; - var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel); - var blurStyle = getStateItemStyle(itemStyleBlurModel); - var selectStyle = getStateItemStyle(itemStyleSelectModel); - prepareText(content2, visualColor, nodeStyle.opacity, null); - content2.setStyle(normalStyle); - content2.ensureState("emphasis").style = emphasisStyle; - content2.ensureState("blur").style = blurStyle; - content2.ensureState("select").style = selectStyle; - setDefaultStateProxy(content2); - } - group2.add(content2); - } - function processInvisible(element) { - !element.invisible && willInvisibleEls.push(element); - } - function prepareText(rectEl, visualColor, visualOpacity, upperLabelRect) { - var normalLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL); - var defaultText = convertOptionIdName(nodeModel.get("name"), null); - var isShow = normalLabelModel.getShallow("show"); - setLabelStyle(rectEl, getLabelStatesModels(nodeModel, upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL), { - defaultText: isShow ? defaultText : null, - inheritColor: visualColor, - defaultOpacity: visualOpacity, - labelFetcher: seriesModel, - labelDataIndex: thisNode.dataIndex - }); - var textEl = rectEl.getTextContent(); - if (!textEl) { - return; - } - var textStyle = textEl.style; - var textPadding = normalizeCssArray(textStyle.padding || 0); - if (upperLabelRect) { - rectEl.setTextConfig({ - layoutRect: upperLabelRect - }); - textEl.disableLabelLayout = true; - } - textEl.beforeUpdate = function() { - var width = Math.max((upperLabelRect ? upperLabelRect.width : rectEl.shape.width) - textPadding[1] - textPadding[3], 0); - var height = Math.max((upperLabelRect ? upperLabelRect.height : rectEl.shape.height) - textPadding[0] - textPadding[2], 0); - if (textStyle.width !== width || textStyle.height !== height) { - textEl.setStyle({ - width, - height - }); - } - }; - textStyle.truncateMinChar = 2; - textStyle.lineOverflow = "truncate"; - addDrillDownIcon(textStyle, upperLabelRect, thisLayout); - var textEmphasisState = textEl.getState("emphasis"); - addDrillDownIcon(textEmphasisState ? textEmphasisState.style : null, upperLabelRect, thisLayout); - } - function addDrillDownIcon(style, upperLabelRect, thisLayout2) { - var text = style ? style.text : null; - if (!upperLabelRect && thisLayout2.isLeafRoot && text != null) { - var iconChar = seriesModel.get("drillDownIcon", true); - style.text = iconChar ? iconChar + " " + text : text; - } - } - function giveGraphic(storageName, Ctor, depth2, z) { - var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex]; - var lasts = lastsForAnimation[storageName]; - if (element) { - oldStorage[storageName][oldRawIndex] = null; - prepareAnimationWhenHasOld(lasts, element); - } else if (!thisInvisible) { - element = new Ctor(); - if (element instanceof Displayable_default) { - element.z2 = calculateZ2(depth2, z); - } - prepareAnimationWhenNoOld(lasts, element); - } - return thisStorage[storageName][thisRawIndex] = element; - } - function prepareAnimationWhenHasOld(lasts, element) { - var lastCfg = lasts[thisRawIndex] = {}; - if (element instanceof Group2) { - lastCfg.oldX = element.x; - lastCfg.oldY = element.y; - } else { - lastCfg.oldShape = extend({}, element.shape); - } - } - function prepareAnimationWhenNoOld(lasts, element) { - var lastCfg = lasts[thisRawIndex] = {}; - var parentNode2 = thisNode.parentNode; - var isGroup = element instanceof Group_default; - if (parentNode2 && (!reRoot || reRoot.direction === "drillDown")) { - var parentOldX = 0; - var parentOldY = 0; - var parentOldBg = lastsForAnimation.background[parentNode2.getRawIndex()]; - if (!reRoot && parentOldBg && parentOldBg.oldShape) { - parentOldX = parentOldBg.oldShape.width; - parentOldY = parentOldBg.oldShape.height; - } - if (isGroup) { - lastCfg.oldX = 0; - lastCfg.oldY = parentOldY; - } else { - lastCfg.oldShape = { - x: parentOldX, - y: parentOldY, - width: 0, - height: 0 - }; - } - } - lastCfg.fadein = !isGroup; - } - } - function calculateZ2(depth, z2InLevel) { - return depth * Z2_BASE + z2InLevel; - } - var TreemapView_default = TreemapView; - - // node_modules/echarts/lib/visual/VisualMapping.js - var each4 = each; - var isObject4 = isObject; - var CATEGORY_DEFAULT_VISUAL_INDEX = -1; - var VisualMapping = ( - /** @class */ - function() { - function VisualMapping2(option) { - var mappingMethod = option.mappingMethod; - var visualType = option.type; - var thisOption = this.option = clone(option); - this.type = visualType; - this.mappingMethod = mappingMethod; - this._normalizeData = normalizers[mappingMethod]; - var visualHandler = VisualMapping2.visualHandlers[visualType]; - this.applyVisual = visualHandler.applyVisual; - this.getColorMapper = visualHandler.getColorMapper; - this._normalizedToVisual = visualHandler._normalizedToVisual[mappingMethod]; - if (mappingMethod === "piecewise") { - normalizeVisualRange(thisOption); - preprocessForPiecewise(thisOption); - } else if (mappingMethod === "category") { - thisOption.categories ? preprocessForSpecifiedCategory(thisOption) : normalizeVisualRange(thisOption, true); - } else { - assert(mappingMethod !== "linear" || thisOption.dataExtent); - normalizeVisualRange(thisOption); - } - } - VisualMapping2.prototype.mapValueToVisual = function(value) { - var normalized = this._normalizeData(value); - return this._normalizedToVisual(normalized, value); - }; - VisualMapping2.prototype.getNormalizer = function() { - return bind(this._normalizeData, this); - }; - VisualMapping2.listVisualTypes = function() { - return keys(VisualMapping2.visualHandlers); - }; - VisualMapping2.isValidType = function(visualType) { - return VisualMapping2.visualHandlers.hasOwnProperty(visualType); - }; - VisualMapping2.eachVisual = function(visual, callback, context) { - if (isObject(visual)) { - each(visual, callback, context); - } else { - callback.call(context, visual); - } - }; - VisualMapping2.mapVisual = function(visual, callback, context) { - var isPrimary; - var newVisual = isArray(visual) ? [] : isObject(visual) ? {} : (isPrimary = true, null); - VisualMapping2.eachVisual(visual, function(v, key) { - var newVal = callback.call(context, v, key); - isPrimary ? newVisual = newVal : newVisual[key] = newVal; - }); - return newVisual; - }; - VisualMapping2.retrieveVisuals = function(obj) { - var ret = {}; - var hasVisual; - obj && each4(VisualMapping2.visualHandlers, function(h, visualType) { - if (obj.hasOwnProperty(visualType)) { - ret[visualType] = obj[visualType]; - hasVisual = true; - } - }); - return hasVisual ? ret : null; - }; - VisualMapping2.prepareVisualTypes = function(visualTypes) { - if (isArray(visualTypes)) { - visualTypes = visualTypes.slice(); - } else if (isObject4(visualTypes)) { - var types_1 = []; - each4(visualTypes, function(item, type) { - types_1.push(type); - }); - visualTypes = types_1; - } else { - return []; - } - visualTypes.sort(function(type1, type2) { - return type2 === "color" && type1 !== "color" && type1.indexOf("color") === 0 ? 1 : -1; - }); - return visualTypes; - }; - VisualMapping2.dependsOn = function(visualType1, visualType2) { - return visualType2 === "color" ? !!(visualType1 && visualType1.indexOf(visualType2) === 0) : visualType1 === visualType2; - }; - VisualMapping2.findPieceIndex = function(value, pieceList, findClosestWhenOutside) { - var possibleI; - var abs2 = Infinity; - for (var i = 0, len2 = pieceList.length; i < len2; i++) { - var pieceValue = pieceList[i].value; - if (pieceValue != null) { - if (pieceValue === value || isString(pieceValue) && pieceValue === value + "") { - return i; - } - findClosestWhenOutside && updatePossible(pieceValue, i); - } - } - for (var i = 0, len2 = pieceList.length; i < len2; i++) { - var piece = pieceList[i]; - var interval = piece.interval; - var close_1 = piece.close; - if (interval) { - if (interval[0] === -Infinity) { - if (littleThan(close_1[1], value, interval[1])) { - return i; - } - } else if (interval[1] === Infinity) { - if (littleThan(close_1[0], interval[0], value)) { - return i; - } - } else if (littleThan(close_1[0], interval[0], value) && littleThan(close_1[1], value, interval[1])) { - return i; - } - findClosestWhenOutside && updatePossible(interval[0], i); - findClosestWhenOutside && updatePossible(interval[1], i); - } - } - if (findClosestWhenOutside) { - return value === Infinity ? pieceList.length - 1 : value === -Infinity ? 0 : possibleI; - } - function updatePossible(val, index) { - var newAbs = Math.abs(val - value); - if (newAbs < abs2) { - abs2 = newAbs; - possibleI = index; - } - } - }; - VisualMapping2.visualHandlers = { - color: { - applyVisual: makeApplyVisual("color"), - getColorMapper: function() { - var thisOption = this.option; - return bind(thisOption.mappingMethod === "category" ? function(value, isNormalized) { - !isNormalized && (value = this._normalizeData(value)); - return doMapCategory.call(this, value); - } : function(value, isNormalized, out2) { - var returnRGBArray = !!out2; - !isNormalized && (value = this._normalizeData(value)); - out2 = fastLerp(value, thisOption.parsedVisual, out2); - return returnRGBArray ? out2 : stringify(out2, "rgba"); - }, this); - }, - _normalizedToVisual: { - linear: function(normalized) { - return stringify(fastLerp(normalized, this.option.parsedVisual), "rgba"); - }, - category: doMapCategory, - piecewise: function(normalized, value) { - var result = getSpecifiedVisual.call(this, value); - if (result == null) { - result = stringify(fastLerp(normalized, this.option.parsedVisual), "rgba"); - } - return result; - }, - fixed: doMapFixed - } - }, - colorHue: makePartialColorVisualHandler(function(color, value) { - return modifyHSL(color, value); - }), - colorSaturation: makePartialColorVisualHandler(function(color, value) { - return modifyHSL(color, null, value); - }), - colorLightness: makePartialColorVisualHandler(function(color, value) { - return modifyHSL(color, null, null, value); - }), - colorAlpha: makePartialColorVisualHandler(function(color, value) { - return modifyAlpha(color, value); - }), - decal: { - applyVisual: makeApplyVisual("decal"), - _normalizedToVisual: { - linear: null, - category: doMapCategory, - piecewise: null, - fixed: null - } - }, - opacity: { - applyVisual: makeApplyVisual("opacity"), - _normalizedToVisual: createNormalizedToNumericVisual([0, 1]) - }, - liftZ: { - applyVisual: makeApplyVisual("liftZ"), - _normalizedToVisual: { - linear: doMapFixed, - category: doMapFixed, - piecewise: doMapFixed, - fixed: doMapFixed - } - }, - symbol: { - applyVisual: function(value, getter, setter) { - var symbolCfg = this.mapValueToVisual(value); - setter("symbol", symbolCfg); - }, - _normalizedToVisual: { - linear: doMapToArray, - category: doMapCategory, - piecewise: function(normalized, value) { - var result = getSpecifiedVisual.call(this, value); - if (result == null) { - result = doMapToArray.call(this, normalized); - } - return result; - }, - fixed: doMapFixed - } - }, - symbolSize: { - applyVisual: makeApplyVisual("symbolSize"), - _normalizedToVisual: createNormalizedToNumericVisual([0, 1]) - } - }; - return VisualMapping2; - }() - ); - function preprocessForPiecewise(thisOption) { - var pieceList = thisOption.pieceList; - thisOption.hasSpecialVisual = false; - each(pieceList, function(piece, index) { - piece.originIndex = index; - if (piece.visual != null) { - thisOption.hasSpecialVisual = true; - } - }); - } - function preprocessForSpecifiedCategory(thisOption) { - var categories = thisOption.categories; - var categoryMap = thisOption.categoryMap = {}; - var visual = thisOption.visual; - each4(categories, function(cate, index) { - categoryMap[cate] = index; - }); - if (!isArray(visual)) { - var visualArr_1 = []; - if (isObject(visual)) { - each4(visual, function(v, cate) { - var index = categoryMap[cate]; - visualArr_1[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX] = v; - }); - } else { - visualArr_1[CATEGORY_DEFAULT_VISUAL_INDEX] = visual; - } - visual = setVisualToOption(thisOption, visualArr_1); - } - for (var i = categories.length - 1; i >= 0; i--) { - if (visual[i] == null) { - delete categoryMap[categories[i]]; - categories.pop(); - } - } - } - function normalizeVisualRange(thisOption, isCategory2) { - var visual = thisOption.visual; - var visualArr = []; - if (isObject(visual)) { - each4(visual, function(v) { - visualArr.push(v); - }); - } else if (visual != null) { - visualArr.push(visual); - } - var doNotNeedPair = { - color: 1, - symbol: 1 - }; - if (!isCategory2 && visualArr.length === 1 && !doNotNeedPair.hasOwnProperty(thisOption.type)) { - visualArr[1] = visualArr[0]; - } - setVisualToOption(thisOption, visualArr); - } - function makePartialColorVisualHandler(applyValue) { - return { - applyVisual: function(value, getter, setter) { - var colorChannel = this.mapValueToVisual(value); - setter("color", applyValue(getter("color"), colorChannel)); - }, - _normalizedToVisual: createNormalizedToNumericVisual([0, 1]) - }; - } - function doMapToArray(normalized) { - var visual = this.option.visual; - return visual[Math.round(linearMap(normalized, [0, 1], [0, visual.length - 1], true))] || {}; - } - function makeApplyVisual(visualType) { - return function(value, getter, setter) { - setter(visualType, this.mapValueToVisual(value)); - }; - } - function doMapCategory(normalized) { - var visual = this.option.visual; - return visual[this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX ? normalized % visual.length : normalized]; - } - function doMapFixed() { - return this.option.visual[0]; - } - function createNormalizedToNumericVisual(sourceExtent) { - return { - linear: function(normalized) { - return linearMap(normalized, sourceExtent, this.option.visual, true); - }, - category: doMapCategory, - piecewise: function(normalized, value) { - var result = getSpecifiedVisual.call(this, value); - if (result == null) { - result = linearMap(normalized, sourceExtent, this.option.visual, true); - } - return result; - }, - fixed: doMapFixed - }; - } - function getSpecifiedVisual(value) { - var thisOption = this.option; - var pieceList = thisOption.pieceList; - if (thisOption.hasSpecialVisual) { - var pieceIndex = VisualMapping.findPieceIndex(value, pieceList); - var piece = pieceList[pieceIndex]; - if (piece && piece.visual) { - return piece.visual[this.type]; - } - } - } - function setVisualToOption(thisOption, visualArr) { - thisOption.visual = visualArr; - if (thisOption.type === "color") { - thisOption.parsedVisual = map(visualArr, function(item) { - var color = parse(item); - if (!color && true) { - warn("'" + item + "' is an illegal color, fallback to '#000000'", true); - } - return color || [0, 0, 0, 1]; - }); - } - return visualArr; - } - var normalizers = { - linear: function(value) { - return linearMap(value, this.option.dataExtent, [0, 1], true); - }, - piecewise: function(value) { - var pieceList = this.option.pieceList; - var pieceIndex = VisualMapping.findPieceIndex(value, pieceList, true); - if (pieceIndex != null) { - return linearMap(pieceIndex, [0, pieceList.length - 1], [0, 1], true); - } - }, - category: function(value) { - var index = this.option.categories ? this.option.categoryMap[value] : value; - return index == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index; - }, - fixed: noop - }; - function littleThan(close, a, b) { - return close ? a <= b : a < b; - } - var VisualMapping_default = VisualMapping; - - // node_modules/echarts/lib/chart/treemap/treemapVisual.js - var ITEM_STYLE_NORMAL = "itemStyle"; - var inner10 = makeInner(); - var treemapVisual_default = { - seriesType: "treemap", - reset: function(seriesModel) { - var tree = seriesModel.getData().tree; - var root = tree.root; - if (root.isRemoved()) { - return; - } - travelTree( - root, - // Visual should calculate from tree root but not view root. - {}, - seriesModel.getViewRoot().getAncestors(), - seriesModel - ); - } - }; - function travelTree(node, designatedVisual, viewRootAncestors, seriesModel) { - var nodeModel = node.getModel(); - var nodeLayout = node.getLayout(); - var data = node.hostTree.data; - if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) { - return; - } - var nodeItemStyleModel = nodeModel.getModel(ITEM_STYLE_NORMAL); - var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel); - var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, "style"); - var borderColor = nodeItemStyleModel.get("borderColor"); - var borderColorSaturation = nodeItemStyleModel.get("borderColorSaturation"); - var thisNodeColor; - if (borderColorSaturation != null) { - thisNodeColor = calculateColor(visuals); - borderColor = calculateBorderColor(borderColorSaturation, thisNodeColor); - } - existsStyle.stroke = borderColor; - var viewChildren = node.viewChildren; - if (!viewChildren || !viewChildren.length) { - thisNodeColor = calculateColor(visuals); - existsStyle.fill = thisNodeColor; - } else { - var mapping_1 = buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren); - each(viewChildren, function(child, index) { - if (child.depth >= viewRootAncestors.length || child === viewRootAncestors[child.depth]) { - var childVisual = mapVisual(nodeModel, visuals, child, index, mapping_1, seriesModel); - travelTree(child, childVisual, viewRootAncestors, seriesModel); - } - }); - } - } - function buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel) { - var visuals = extend({}, designatedVisual); - var designatedVisualItemStyle = seriesModel.designatedVisualItemStyle; - each(["color", "colorAlpha", "colorSaturation"], function(visualName) { - designatedVisualItemStyle[visualName] = designatedVisual[visualName]; - var val = nodeItemStyleModel.get(visualName); - designatedVisualItemStyle[visualName] = null; - val != null && (visuals[visualName] = val); - }); - return visuals; - } - function calculateColor(visuals) { - var color = getValueVisualDefine(visuals, "color"); - if (color) { - var colorAlpha = getValueVisualDefine(visuals, "colorAlpha"); - var colorSaturation = getValueVisualDefine(visuals, "colorSaturation"); - if (colorSaturation) { - color = modifyHSL(color, null, null, colorSaturation); - } - if (colorAlpha) { - color = modifyAlpha(color, colorAlpha); - } - return color; - } - } - function calculateBorderColor(borderColorSaturation, thisNodeColor) { - return thisNodeColor != null ? modifyHSL(thisNodeColor, null, null, borderColorSaturation) : null; - } - function getValueVisualDefine(visuals, name) { - var value = visuals[name]; - if (value != null && value !== "none") { - return value; - } - } - function buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren) { - if (!viewChildren || !viewChildren.length) { - return; - } - var rangeVisual = getRangeVisual(nodeModel, "color") || visuals.color != null && visuals.color !== "none" && (getRangeVisual(nodeModel, "colorAlpha") || getRangeVisual(nodeModel, "colorSaturation")); - if (!rangeVisual) { - return; - } - var visualMin = nodeModel.get("visualMin"); - var visualMax = nodeModel.get("visualMax"); - var dataExtent = nodeLayout.dataExtent.slice(); - visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin); - visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax); - var colorMappingBy = nodeModel.get("colorMappingBy"); - var opt = { - type: rangeVisual.name, - dataExtent, - visual: rangeVisual.range - }; - if (opt.type === "color" && (colorMappingBy === "index" || colorMappingBy === "id")) { - opt.mappingMethod = "category"; - opt.loop = true; - } else { - opt.mappingMethod = "linear"; - } - var mapping = new VisualMapping_default(opt); - inner10(mapping).drColorMappingBy = colorMappingBy; - return mapping; - } - function getRangeVisual(nodeModel, name) { - var range = nodeModel.get(name); - return isArray(range) && range.length ? { - name, - range - } : null; - } - function mapVisual(nodeModel, visuals, child, index, mapping, seriesModel) { - var childVisuals = extend({}, visuals); - if (mapping) { - var mappingType = mapping.type; - var colorMappingBy = mappingType === "color" && inner10(mapping).drColorMappingBy; - var value = colorMappingBy === "index" ? index : colorMappingBy === "id" ? seriesModel.mapIdToIndex(child.getId()) : child.getValue(nodeModel.get("visualDimension")); - childVisuals[mappingType] = mapping.mapValueToVisual(value); - } - return childVisuals; - } - - // node_modules/echarts/lib/chart/treemap/treemapLayout.js - var mathMax8 = Math.max; - var mathMin8 = Math.min; - var retrieveValue = retrieve; - var each5 = each; - var PATH_BORDER_WIDTH = ["itemStyle", "borderWidth"]; - var PATH_GAP_WIDTH = ["itemStyle", "gapWidth"]; - var PATH_UPPER_LABEL_SHOW = ["upperLabel", "show"]; - var PATH_UPPER_LABEL_HEIGHT = ["upperLabel", "height"]; - var treemapLayout_default = { - seriesType: "treemap", - reset: function(seriesModel, ecModel, api, payload) { - var ecWidth = api.getWidth(); - var ecHeight = api.getHeight(); - var seriesOption = seriesModel.option; - var layoutInfo = getLayoutRect(seriesModel.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }); - var size2 = seriesOption.size || []; - var containerWidth = parsePercent2(retrieveValue(layoutInfo.width, size2[0]), ecWidth); - var containerHeight = parsePercent2(retrieveValue(layoutInfo.height, size2[1]), ecHeight); - var payloadType = payload && payload.type; - var types = ["treemapZoomToNode", "treemapRootToNode"]; - var targetInfo = retrieveTargetInfo(payload, types, seriesModel); - var rootRect = payloadType === "treemapRender" || payloadType === "treemapMove" ? payload.rootRect : null; - var viewRoot = seriesModel.getViewRoot(); - var viewAbovePath = getPathToRoot(viewRoot); - if (payloadType !== "treemapMove") { - var rootSize = payloadType === "treemapZoomToNode" ? estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) : rootRect ? [rootRect.width, rootRect.height] : [containerWidth, containerHeight]; - var sort_1 = seriesOption.sort; - if (sort_1 && sort_1 !== "asc" && sort_1 !== "desc") { - sort_1 = "desc"; - } - var options = { - squareRatio: seriesOption.squareRatio, - sort: sort_1, - leafDepth: seriesOption.leafDepth - }; - viewRoot.hostTree.clearLayouts(); - var viewRootLayout_1 = { - x: 0, - y: 0, - width: rootSize[0], - height: rootSize[1], - area: rootSize[0] * rootSize[1] - }; - viewRoot.setLayout(viewRootLayout_1); - squarify(viewRoot, options, false, 0); - viewRootLayout_1 = viewRoot.getLayout(); - each5(viewAbovePath, function(node, index) { - var childValue = (viewAbovePath[index + 1] || viewRoot).getValue(); - node.setLayout(extend({ - dataExtent: [childValue, childValue], - borderWidth: 0, - upperHeight: 0 - }, viewRootLayout_1)); - }); - } - var treeRoot = seriesModel.getData().tree.root; - treeRoot.setLayout(calculateRootPosition(layoutInfo, rootRect, targetInfo), true); - seriesModel.setLayoutInfo(layoutInfo); - prunning( - treeRoot, - // Transform to base element coordinate system. - new BoundingRect_default(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight), - viewAbovePath, - viewRoot, - 0 - ); - } - }; - function squarify(node, options, hideChildren, depth) { - var width; - var height; - if (node.isRemoved()) { - return; - } - var thisLayout = node.getLayout(); - width = thisLayout.width; - height = thisLayout.height; - var nodeModel = node.getModel(); - var borderWidth = nodeModel.get(PATH_BORDER_WIDTH); - var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH) / 2; - var upperLabelHeight = getUpperLabelHeight(nodeModel); - var upperHeight = Math.max(borderWidth, upperLabelHeight); - var layoutOffset = borderWidth - halfGapWidth; - var layoutOffsetUpper = upperHeight - halfGapWidth; - node.setLayout({ - borderWidth, - upperHeight, - upperLabelHeight - }, true); - width = mathMax8(width - 2 * layoutOffset, 0); - height = mathMax8(height - layoutOffset - layoutOffsetUpper, 0); - var totalArea = width * height; - var viewChildren = initChildren(node, nodeModel, totalArea, options, hideChildren, depth); - if (!viewChildren.length) { - return; - } - var rect = { - x: layoutOffset, - y: layoutOffsetUpper, - width, - height - }; - var rowFixedLength = mathMin8(width, height); - var best = Infinity; - var row = []; - row.area = 0; - for (var i = 0, len2 = viewChildren.length; i < len2; ) { - var child = viewChildren[i]; - row.push(child); - row.area += child.getLayout().area; - var score = worst(row, rowFixedLength, options.squareRatio); - if (score <= best) { - i++; - best = score; - } else { - row.area -= row.pop().getLayout().area; - position(row, rowFixedLength, rect, halfGapWidth, false); - rowFixedLength = mathMin8(rect.width, rect.height); - row.length = row.area = 0; - best = Infinity; - } - } - if (row.length) { - position(row, rowFixedLength, rect, halfGapWidth, true); - } - if (!hideChildren) { - var childrenVisibleMin = nodeModel.get("childrenVisibleMin"); - if (childrenVisibleMin != null && totalArea < childrenVisibleMin) { - hideChildren = true; - } - } - for (var i = 0, len2 = viewChildren.length; i < len2; i++) { - squarify(viewChildren[i], options, hideChildren, depth + 1); - } - } - function initChildren(node, nodeModel, totalArea, options, hideChildren, depth) { - var viewChildren = node.children || []; - var orderBy = options.sort; - orderBy !== "asc" && orderBy !== "desc" && (orderBy = null); - var overLeafDepth = options.leafDepth != null && options.leafDepth <= depth; - if (hideChildren && !overLeafDepth) { - return node.viewChildren = []; - } - viewChildren = filter(viewChildren, function(child) { - return !child.isRemoved(); - }); - sort2(viewChildren, orderBy); - var info = statistic(nodeModel, viewChildren, orderBy); - if (info.sum === 0) { - return node.viewChildren = []; - } - info.sum = filterByThreshold(nodeModel, totalArea, info.sum, orderBy, viewChildren); - if (info.sum === 0) { - return node.viewChildren = []; - } - for (var i = 0, len2 = viewChildren.length; i < len2; i++) { - var area = viewChildren[i].getValue() / info.sum * totalArea; - viewChildren[i].setLayout({ - area - }); - } - if (overLeafDepth) { - viewChildren.length && node.setLayout({ - isLeafRoot: true - }, true); - viewChildren.length = 0; - } - node.viewChildren = viewChildren; - node.setLayout({ - dataExtent: info.dataExtent - }, true); - return viewChildren; - } - function filterByThreshold(nodeModel, totalArea, sum2, orderBy, orderedChildren) { - if (!orderBy) { - return sum2; - } - var visibleMin = nodeModel.get("visibleMin"); - var len2 = orderedChildren.length; - var deletePoint = len2; - for (var i = len2 - 1; i >= 0; i--) { - var value = orderedChildren[orderBy === "asc" ? len2 - i - 1 : i].getValue(); - if (value / sum2 * totalArea < visibleMin) { - deletePoint = i; - sum2 -= value; - } - } - orderBy === "asc" ? orderedChildren.splice(0, len2 - deletePoint) : orderedChildren.splice(deletePoint, len2 - deletePoint); - return sum2; - } - function sort2(viewChildren, orderBy) { - if (orderBy) { - viewChildren.sort(function(a, b) { - var diff = orderBy === "asc" ? a.getValue() - b.getValue() : b.getValue() - a.getValue(); - return diff === 0 ? orderBy === "asc" ? a.dataIndex - b.dataIndex : b.dataIndex - a.dataIndex : diff; - }); - } - return viewChildren; - } - function statistic(nodeModel, children, orderBy) { - var sum2 = 0; - for (var i = 0, len2 = children.length; i < len2; i++) { - sum2 += children[i].getValue(); - } - var dimension = nodeModel.get("visualDimension"); - var dataExtent; - if (!children || !children.length) { - dataExtent = [NaN, NaN]; - } else if (dimension === "value" && orderBy) { - dataExtent = [children[children.length - 1].getValue(), children[0].getValue()]; - orderBy === "asc" && dataExtent.reverse(); - } else { - dataExtent = [Infinity, -Infinity]; - each5(children, function(child) { - var value = child.getValue(dimension); - value < dataExtent[0] && (dataExtent[0] = value); - value > dataExtent[1] && (dataExtent[1] = value); - }); - } - return { - sum: sum2, - dataExtent - }; - } - function worst(row, rowFixedLength, ratio) { - var areaMax = 0; - var areaMin = Infinity; - for (var i = 0, area = void 0, len2 = row.length; i < len2; i++) { - area = row[i].getLayout().area; - if (area) { - area < areaMin && (areaMin = area); - area > areaMax && (areaMax = area); - } - } - var squareArea = row.area * row.area; - var f = rowFixedLength * rowFixedLength * ratio; - return squareArea ? mathMax8(f * areaMax / squareArea, squareArea / (f * areaMin)) : Infinity; - } - function position(row, rowFixedLength, rect, halfGapWidth, flush) { - var idx0WhenH = rowFixedLength === rect.width ? 0 : 1; - var idx1WhenH = 1 - idx0WhenH; - var xy = ["x", "y"]; - var wh = ["width", "height"]; - var last = rect[xy[idx0WhenH]]; - var rowOtherLength = rowFixedLength ? row.area / rowFixedLength : 0; - if (flush || rowOtherLength > rect[wh[idx1WhenH]]) { - rowOtherLength = rect[wh[idx1WhenH]]; - } - for (var i = 0, rowLen = row.length; i < rowLen; i++) { - var node = row[i]; - var nodeLayout = {}; - var step = rowOtherLength ? node.getLayout().area / rowOtherLength : 0; - var wh1 = nodeLayout[wh[idx1WhenH]] = mathMax8(rowOtherLength - 2 * halfGapWidth, 0); - var remain = rect[xy[idx0WhenH]] + rect[wh[idx0WhenH]] - last; - var modWH = i === rowLen - 1 || remain < step ? remain : step; - var wh0 = nodeLayout[wh[idx0WhenH]] = mathMax8(modWH - 2 * halfGapWidth, 0); - nodeLayout[xy[idx1WhenH]] = rect[xy[idx1WhenH]] + mathMin8(halfGapWidth, wh1 / 2); - nodeLayout[xy[idx0WhenH]] = last + mathMin8(halfGapWidth, wh0 / 2); - last += modWH; - node.setLayout(nodeLayout, true); - } - rect[xy[idx1WhenH]] += rowOtherLength; - rect[wh[idx1WhenH]] -= rowOtherLength; - } - function estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) { - var currNode = (targetInfo || {}).node; - var defaultSize = [containerWidth, containerHeight]; - if (!currNode || currNode === viewRoot) { - return defaultSize; - } - var parent; - var viewArea = containerWidth * containerHeight; - var area = viewArea * seriesModel.option.zoomToNodeRatio; - while (parent = currNode.parentNode) { - var sum2 = 0; - var siblings = parent.children; - for (var i = 0, len2 = siblings.length; i < len2; i++) { - sum2 += siblings[i].getValue(); - } - var currNodeValue = currNode.getValue(); - if (currNodeValue === 0) { - return defaultSize; - } - area *= sum2 / currNodeValue; - var parentModel = parent.getModel(); - var borderWidth = parentModel.get(PATH_BORDER_WIDTH); - var upperHeight = Math.max(borderWidth, getUpperLabelHeight(parentModel)); - area += 4 * borderWidth * borderWidth + (3 * borderWidth + upperHeight) * Math.pow(area, 0.5); - area > MAX_SAFE_INTEGER && (area = MAX_SAFE_INTEGER); - currNode = parent; - } - area < viewArea && (area = viewArea); - var scale4 = Math.pow(area / viewArea, 0.5); - return [containerWidth * scale4, containerHeight * scale4]; - } - function calculateRootPosition(layoutInfo, rootRect, targetInfo) { - if (rootRect) { - return { - x: rootRect.x, - y: rootRect.y - }; - } - var defaultPosition = { - x: 0, - y: 0 - }; - if (!targetInfo) { - return defaultPosition; - } - var targetNode = targetInfo.node; - var layout5 = targetNode.getLayout(); - if (!layout5) { - return defaultPosition; - } - var targetCenter = [layout5.width / 2, layout5.height / 2]; - var node = targetNode; - while (node) { - var nodeLayout = node.getLayout(); - targetCenter[0] += nodeLayout.x; - targetCenter[1] += nodeLayout.y; - node = node.parentNode; - } - return { - x: layoutInfo.width / 2 - targetCenter[0], - y: layoutInfo.height / 2 - targetCenter[1] - }; - } - function prunning(node, clipRect, viewAbovePath, viewRoot, depth) { - var nodeLayout = node.getLayout(); - var nodeInViewAbovePath = viewAbovePath[depth]; - var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node; - if (nodeInViewAbovePath && !isAboveViewRoot || depth === viewAbovePath.length && node !== viewRoot) { - return; - } - node.setLayout({ - // isInView means: viewRoot sub tree + viewAbovePath - isInView: true, - // invisible only means: outside view clip so that the node can not - // see but still layout for animation preparation but not render. - invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout), - isAboveViewRoot - }, true); - var childClipRect = new BoundingRect_default(clipRect.x - nodeLayout.x, clipRect.y - nodeLayout.y, clipRect.width, clipRect.height); - each5(node.viewChildren || [], function(child) { - prunning(child, childClipRect, viewAbovePath, viewRoot, depth + 1); - }); - } - function getUpperLabelHeight(model) { - return model.get(PATH_UPPER_LABEL_SHOW) ? model.get(PATH_UPPER_LABEL_HEIGHT) : 0; - } - - // node_modules/echarts/lib/chart/treemap/install.js - function install13(registers) { - registers.registerSeriesModel(TreemapSeries_default); - registers.registerChartView(TreemapView_default); - registers.registerVisual(treemapVisual_default); - registers.registerLayout(treemapLayout_default); - installTreemapAction(registers); - } - - // node_modules/echarts/lib/chart/graph/categoryFilter.js - function categoryFilter(ecModel) { - var legendModels = ecModel.findComponents({ - mainType: "legend" - }); - if (!legendModels || !legendModels.length) { - return; - } - ecModel.eachSeriesByType("graph", function(graphSeries) { - var categoriesData = graphSeries.getCategoriesData(); - var graph = graphSeries.getGraph(); - var data = graph.data; - var categoryNames = categoriesData.mapArray(categoriesData.getName); - data.filterSelf(function(idx) { - var model = data.getItemModel(idx); - var category = model.getShallow("category"); - if (category != null) { - if (isNumber(category)) { - category = categoryNames[category]; - } - for (var i = 0; i < legendModels.length; i++) { - if (!legendModels[i].isSelected(category)) { - return false; - } - } - } - return true; - }); - }); - } - - // node_modules/echarts/lib/chart/graph/categoryVisual.js - function categoryVisual(ecModel) { - var paletteScope = {}; - ecModel.eachSeriesByType("graph", function(seriesModel) { - var categoriesData = seriesModel.getCategoriesData(); - var data = seriesModel.getData(); - var categoryNameIdxMap = {}; - categoriesData.each(function(idx) { - var name = categoriesData.getName(idx); - categoryNameIdxMap["ec-" + name] = idx; - var itemModel = categoriesData.getItemModel(idx); - var style = itemModel.getModel("itemStyle").getItemStyle(); - if (!style.fill) { - style.fill = seriesModel.getColorFromPalette(name, paletteScope); - } - categoriesData.setItemVisual(idx, "style", style); - var symbolVisualList = ["symbol", "symbolSize", "symbolKeepAspect"]; - for (var i = 0; i < symbolVisualList.length; i++) { - var symbolVisual = itemModel.getShallow(symbolVisualList[i], true); - if (symbolVisual != null) { - categoriesData.setItemVisual(idx, symbolVisualList[i], symbolVisual); - } - } - }); - if (categoriesData.count()) { - data.each(function(idx) { - var model = data.getItemModel(idx); - var categoryIdx = model.getShallow("category"); - if (categoryIdx != null) { - if (isString(categoryIdx)) { - categoryIdx = categoryNameIdxMap["ec-" + categoryIdx]; - } - var categoryStyle = categoriesData.getItemVisual(categoryIdx, "style"); - var style = data.ensureUniqueItemVisual(idx, "style"); - extend(style, categoryStyle); - var visualList = ["symbol", "symbolSize", "symbolKeepAspect"]; - for (var i = 0; i < visualList.length; i++) { - data.setItemVisual(idx, visualList[i], categoriesData.getItemVisual(categoryIdx, visualList[i])); - } - } - }); - } - }); - } - - // node_modules/echarts/lib/chart/graph/edgeVisual.js - function normalize3(a) { - if (!(a instanceof Array)) { - a = [a, a]; - } - return a; - } - function graphEdgeVisual(ecModel) { - ecModel.eachSeriesByType("graph", function(seriesModel) { - var graph = seriesModel.getGraph(); - var edgeData = seriesModel.getEdgeData(); - var symbolType = normalize3(seriesModel.get("edgeSymbol")); - var symbolSize = normalize3(seriesModel.get("edgeSymbolSize")); - edgeData.setVisual("fromSymbol", symbolType && symbolType[0]); - edgeData.setVisual("toSymbol", symbolType && symbolType[1]); - edgeData.setVisual("fromSymbolSize", symbolSize && symbolSize[0]); - edgeData.setVisual("toSymbolSize", symbolSize && symbolSize[1]); - edgeData.setVisual("style", seriesModel.getModel("lineStyle").getLineStyle()); - edgeData.each(function(idx) { - var itemModel = edgeData.getItemModel(idx); - var edge = graph.getEdgeByIndex(idx); - var symbolType2 = normalize3(itemModel.getShallow("symbol", true)); - var symbolSize2 = normalize3(itemModel.getShallow("symbolSize", true)); - var style = itemModel.getModel("lineStyle").getLineStyle(); - var existsStyle = edgeData.ensureUniqueItemVisual(idx, "style"); - extend(existsStyle, style); - switch (existsStyle.stroke) { - case "source": { - var nodeStyle = edge.node1.getVisual("style"); - existsStyle.stroke = nodeStyle && nodeStyle.fill; - break; - } - case "target": { - var nodeStyle = edge.node2.getVisual("style"); - existsStyle.stroke = nodeStyle && nodeStyle.fill; - break; - } - } - symbolType2[0] && edge.setVisual("fromSymbol", symbolType2[0]); - symbolType2[1] && edge.setVisual("toSymbol", symbolType2[1]); - symbolSize2[0] && edge.setVisual("fromSymbolSize", symbolSize2[0]); - symbolSize2[1] && edge.setVisual("toSymbolSize", symbolSize2[1]); - }); - }); - } - - // node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js - var KEY_DELIMITER = "-->"; - var getAutoCurvenessParams = function(seriesModel) { - return seriesModel.get("autoCurveness") || null; - }; - var createCurveness = function(seriesModel, appendLength) { - var autoCurvenessParmas = getAutoCurvenessParams(seriesModel); - var length2 = 20; - var curvenessList = []; - if (isNumber(autoCurvenessParmas)) { - length2 = autoCurvenessParmas; - } else if (isArray(autoCurvenessParmas)) { - seriesModel.__curvenessList = autoCurvenessParmas; - return; - } - if (appendLength > length2) { - length2 = appendLength; - } - var len2 = length2 % 2 ? length2 + 2 : length2 + 3; - curvenessList = []; - for (var i = 0; i < len2; i++) { - curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1)); - } - seriesModel.__curvenessList = curvenessList; - }; - var getKeyOfEdges = function(n1, n2, seriesModel) { - var source = [n1.id, n1.dataIndex].join("."); - var target = [n2.id, n2.dataIndex].join("."); - return [seriesModel.uid, source, target].join(KEY_DELIMITER); - }; - var getOppositeKey = function(key) { - var keys2 = key.split(KEY_DELIMITER); - return [keys2[0], keys2[2], keys2[1]].join(KEY_DELIMITER); - }; - var getEdgeFromMap = function(edge, seriesModel) { - var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel); - return seriesModel.__edgeMap[key]; - }; - var getTotalLengthBetweenNodes = function(edge, seriesModel) { - var len2 = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel); - var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel); - return len2 + lenV; - }; - var getEdgeMapLengthWithKey = function(key, seriesModel) { - var edgeMap = seriesModel.__edgeMap; - return edgeMap[key] ? edgeMap[key].length : 0; - }; - function initCurvenessList(seriesModel) { - if (!getAutoCurvenessParams(seriesModel)) { - return; - } - seriesModel.__curvenessList = []; - seriesModel.__edgeMap = {}; - createCurveness(seriesModel); - } - function createEdgeMapForCurveness(n1, n2, seriesModel, index) { - if (!getAutoCurvenessParams(seriesModel)) { - return; - } - var key = getKeyOfEdges(n1, n2, seriesModel); - var edgeMap = seriesModel.__edgeMap; - var oppositeEdges = edgeMap[getOppositeKey(key)]; - if (edgeMap[key] && !oppositeEdges) { - edgeMap[key].isForward = true; - } else if (oppositeEdges && edgeMap[key]) { - oppositeEdges.isForward = true; - edgeMap[key].isForward = false; - } - edgeMap[key] = edgeMap[key] || []; - edgeMap[key].push(index); - } - function getCurvenessForEdge(edge, seriesModel, index, needReverse) { - var autoCurvenessParams = getAutoCurvenessParams(seriesModel); - var isArrayParam = isArray(autoCurvenessParams); - if (!autoCurvenessParams) { - return null; - } - var edgeArray = getEdgeFromMap(edge, seriesModel); - if (!edgeArray) { - return null; - } - var edgeIndex = -1; - for (var i = 0; i < edgeArray.length; i++) { - if (edgeArray[i] === index) { - edgeIndex = i; - break; - } - } - var totalLen = getTotalLengthBetweenNodes(edge, seriesModel); - createCurveness(seriesModel, totalLen); - edge.lineStyle = edge.lineStyle || {}; - var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel); - var curvenessList = seriesModel.__curvenessList; - var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1; - if (!edgeArray.isForward) { - var oppositeKey = getOppositeKey(curKey); - var len2 = getEdgeMapLengthWithKey(oppositeKey, seriesModel); - var resValue = curvenessList[edgeIndex + len2 + parityCorrection]; - if (needReverse) { - if (isArrayParam) { - if (autoCurvenessParams && autoCurvenessParams[0] === 0) { - return (len2 + parityCorrection) % 2 ? resValue : -resValue; - } else { - return ((len2 % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue; - } - } else { - return (len2 + parityCorrection) % 2 ? resValue : -resValue; - } - } else { - return curvenessList[edgeIndex + len2 + parityCorrection]; - } - } else { - return curvenessList[parityCorrection + edgeIndex]; - } - } - - // node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js - function simpleLayout(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - if (coordSys && coordSys.type !== "view") { - return; - } - var graph = seriesModel.getGraph(); - graph.eachNode(function(node) { - var model = node.getModel(); - node.setLayout([+model.get("x"), +model.get("y")]); - }); - simpleLayoutEdge(graph, seriesModel); - } - function simpleLayoutEdge(graph, seriesModel) { - graph.eachEdge(function(edge, index) { - var curveness = retrieve3(edge.getModel().get(["lineStyle", "curveness"]), -getCurvenessForEdge(edge, seriesModel, index, true), 0); - var p1 = clone2(edge.node1.getLayout()); - var p2 = clone2(edge.node2.getLayout()); - var points4 = [p1, p2]; - if (+curveness) { - points4.push([(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness]); - } - edge.setLayout(points4); - }); - } - - // node_modules/echarts/lib/chart/graph/simpleLayout.js - function graphSimpleLayout(ecModel, api) { - ecModel.eachSeriesByType("graph", function(seriesModel) { - var layout5 = seriesModel.get("layout"); - var coordSys = seriesModel.coordinateSystem; - if (coordSys && coordSys.type !== "view") { - var data_1 = seriesModel.getData(); - var dimensions_1 = []; - each(coordSys.dimensions, function(coordDim) { - dimensions_1 = dimensions_1.concat(data_1.mapDimensionsAll(coordDim)); - }); - for (var dataIndex = 0; dataIndex < data_1.count(); dataIndex++) { - var value = []; - var hasValue = false; - for (var i = 0; i < dimensions_1.length; i++) { - var val = data_1.get(dimensions_1[i], dataIndex); - if (!isNaN(val)) { - hasValue = true; - } - value.push(val); - } - if (hasValue) { - data_1.setItemLayout(dataIndex, coordSys.dataToPoint(value)); - } else { - data_1.setItemLayout(dataIndex, [NaN, NaN]); - } - } - simpleLayoutEdge(data_1.graph, seriesModel); - } else if (!layout5 || layout5 === "none") { - simpleLayout(seriesModel); - } - }); - } - - // node_modules/echarts/lib/chart/graph/graphHelper.js - function getNodeGlobalScale(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - if (coordSys.type !== "view") { - return 1; - } - var nodeScaleRatio = seriesModel.option.nodeScaleRatio; - var groupZoom = coordSys.scaleX; - var roamZoom = coordSys.getZoom(); - var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1; - return nodeScale / groupZoom; - } - function getSymbolSize(node) { - var symbolSize = node.getVisual("symbolSize"); - if (symbolSize instanceof Array) { - symbolSize = (symbolSize[0] + symbolSize[1]) / 2; - } - return +symbolSize; - } - - // node_modules/echarts/lib/chart/graph/circularLayoutHelper.js - var PI8 = Math.PI; - var _symbolRadiansHalf = []; - function circularLayout(seriesModel, basedOn, draggingNode, pointer) { - var coordSys = seriesModel.coordinateSystem; - if (coordSys && coordSys.type !== "view") { - return; - } - var rect = coordSys.getBoundingRect(); - var nodeData = seriesModel.getData(); - var graph = nodeData.graph; - var cx = rect.width / 2 + rect.x; - var cy = rect.height / 2 + rect.y; - var r = Math.min(rect.width, rect.height) / 2; - var count2 = nodeData.count(); - nodeData.setLayout({ - cx, - cy - }); - if (!count2) { - return; - } - if (draggingNode) { - var _a2 = coordSys.pointToData(pointer), tempX = _a2[0], tempY = _a2[1]; - var v = [tempX - cx, tempY - cy]; - normalize(v, v); - scale(v, v, r); - draggingNode.setLayout([cx + v[0], cy + v[1]], true); - var circularRotateLabel = seriesModel.get(["circular", "rotateLabel"]); - rotateNodeLabel(draggingNode, circularRotateLabel, cx, cy); - } - _layoutNodesBasedOn[basedOn](seriesModel, graph, nodeData, r, cx, cy, count2); - graph.eachEdge(function(edge, index) { - var curveness = retrieve3(edge.getModel().get(["lineStyle", "curveness"]), getCurvenessForEdge(edge, seriesModel, index), 0); - var p1 = clone2(edge.node1.getLayout()); - var p2 = clone2(edge.node2.getLayout()); - var cp1; - var x12 = (p1[0] + p2[0]) / 2; - var y12 = (p1[1] + p2[1]) / 2; - if (+curveness) { - curveness *= 3; - cp1 = [cx * curveness + x12 * (1 - curveness), cy * curveness + y12 * (1 - curveness)]; - } - edge.setLayout([p1, p2, cp1]); - }); - } - var _layoutNodesBasedOn = { - value: function(seriesModel, graph, nodeData, r, cx, cy, count2) { - var angle = 0; - var sum2 = nodeData.getSum("value"); - var unitAngle = Math.PI * 2 / (sum2 || count2); - graph.eachNode(function(node) { - var value = node.getValue("value"); - var radianHalf = unitAngle * (sum2 ? value : 1) / 2; - angle += radianHalf; - node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]); - angle += radianHalf; - }); - }, - symbolSize: function(seriesModel, graph, nodeData, r, cx, cy, count2) { - var sumRadian = 0; - _symbolRadiansHalf.length = count2; - var nodeScale = getNodeGlobalScale(seriesModel); - graph.eachNode(function(node) { - var symbolSize = getSymbolSize(node); - isNaN(symbolSize) && (symbolSize = 2); - symbolSize < 0 && (symbolSize = 0); - symbolSize *= nodeScale; - var symbolRadianHalf = Math.asin(symbolSize / 2 / r); - isNaN(symbolRadianHalf) && (symbolRadianHalf = PI8 / 2); - _symbolRadiansHalf[node.dataIndex] = symbolRadianHalf; - sumRadian += symbolRadianHalf * 2; - }); - var halfRemainRadian = (2 * PI8 - sumRadian) / count2 / 2; - var angle = 0; - graph.eachNode(function(node) { - var radianHalf = halfRemainRadian + _symbolRadiansHalf[node.dataIndex]; - angle += radianHalf; - (!node.getLayout() || !node.getLayout().fixed) && node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]); - angle += radianHalf; - }); - } - }; - function rotateNodeLabel(node, circularRotateLabel, cx, cy) { - var el = node.getGraphicEl(); - if (!el) { - return; - } - var nodeModel = node.getModel(); - var labelRotate = nodeModel.get(["label", "rotate"]) || 0; - var symbolPath = el.getSymbolPath(); - if (circularRotateLabel) { - var pos = node.getLayout(); - var rad = Math.atan2(pos[1] - cy, pos[0] - cx); - if (rad < 0) { - rad = Math.PI * 2 + rad; - } - var isLeft = pos[0] < cx; - if (isLeft) { - rad = rad - Math.PI; - } - var textPosition = isLeft ? "left" : "right"; - symbolPath.setTextConfig({ - rotation: -rad, - position: textPosition, - origin: "center" - }); - var emphasisState = symbolPath.ensureState("emphasis"); - extend(emphasisState.textConfig || (emphasisState.textConfig = {}), { - position: textPosition - }); - } else { - symbolPath.setTextConfig({ - rotation: labelRotate *= Math.PI / 180 - }); - } - } - - // node_modules/echarts/lib/chart/graph/circularLayout.js - function graphCircularLayout(ecModel) { - ecModel.eachSeriesByType("graph", function(seriesModel) { - if (seriesModel.get("layout") === "circular") { - circularLayout(seriesModel, "symbolSize"); - } - }); - } - - // node_modules/echarts/lib/chart/graph/forceHelper.js - var scaleAndAdd2 = scaleAndAdd; - function forceLayout(inNodes, inEdges, opts) { - var nodes = inNodes; - var edges = inEdges; - var rect = opts.rect; - var width = rect.width; - var height = rect.height; - var center3 = [rect.x + width / 2, rect.y + height / 2]; - var gravity = opts.gravity == null ? 0.1 : opts.gravity; - for (var i = 0; i < nodes.length; i++) { - var n = nodes[i]; - if (!n.p) { - n.p = create(width * (Math.random() - 0.5) + center3[0], height * (Math.random() - 0.5) + center3[1]); - } - n.pp = clone2(n.p); - n.edges = null; - } - var initialFriction = opts.friction == null ? 0.6 : opts.friction; - var friction = initialFriction; - var beforeStepCallback; - var afterStepCallback; - return { - warmUp: function() { - friction = initialFriction * 0.8; - }, - setFixed: function(idx) { - nodes[idx].fixed = true; - }, - setUnfixed: function(idx) { - nodes[idx].fixed = false; - }, - /** - * Before step hook - */ - beforeStep: function(cb) { - beforeStepCallback = cb; - }, - /** - * After step hook - */ - afterStep: function(cb) { - afterStepCallback = cb; - }, - /** - * Some formulas were originally copied from "d3.js" - * https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/layout/force.js - * with some modifications made for this project. - * See the license statement at the head of this file. - */ - step: function(cb) { - beforeStepCallback && beforeStepCallback(nodes, edges); - var v12 = []; - var nLen = nodes.length; - for (var i2 = 0; i2 < edges.length; i2++) { - var e2 = edges[i2]; - if (e2.ignoreForceLayout) { - continue; - } - var n1 = e2.n1; - var n2 = e2.n2; - sub(v12, n2.p, n1.p); - var d = len(v12) - e2.d; - var w = n2.w / (n1.w + n2.w); - if (isNaN(w)) { - w = 0; - } - normalize(v12, v12); - !n1.fixed && scaleAndAdd2(n1.p, n1.p, v12, w * d * friction); - !n2.fixed && scaleAndAdd2(n2.p, n2.p, v12, -(1 - w) * d * friction); - } - for (var i2 = 0; i2 < nLen; i2++) { - var n3 = nodes[i2]; - if (!n3.fixed) { - sub(v12, center3, n3.p); - scaleAndAdd2(n3.p, n3.p, v12, gravity * friction); - } - } - for (var i2 = 0; i2 < nLen; i2++) { - var n1 = nodes[i2]; - for (var j = i2 + 1; j < nLen; j++) { - var n2 = nodes[j]; - sub(v12, n2.p, n1.p); - var d = len(v12); - if (d === 0) { - set(v12, Math.random() - 0.5, Math.random() - 0.5); - d = 1; - } - var repFact = (n1.rep + n2.rep) / d / d; - !n1.fixed && scaleAndAdd2(n1.pp, n1.pp, v12, repFact); - !n2.fixed && scaleAndAdd2(n2.pp, n2.pp, v12, -repFact); - } - } - var v = []; - for (var i2 = 0; i2 < nLen; i2++) { - var n3 = nodes[i2]; - if (!n3.fixed) { - sub(v, n3.p, n3.pp); - scaleAndAdd2(n3.p, n3.p, v, friction); - copy(n3.pp, n3.p); - } - } - friction = friction * 0.992; - var finished = friction < 0.01; - afterStepCallback && afterStepCallback(nodes, edges, finished); - cb && cb(finished); - } - }; - } - - // node_modules/echarts/lib/chart/graph/forceLayout.js - function graphForceLayout(ecModel) { - ecModel.eachSeriesByType("graph", function(graphSeries) { - var coordSys = graphSeries.coordinateSystem; - if (coordSys && coordSys.type !== "view") { - return; - } - if (graphSeries.get("layout") === "force") { - var preservedPoints_1 = graphSeries.preservedPoints || {}; - var graph_1 = graphSeries.getGraph(); - var nodeData_1 = graph_1.data; - var edgeData = graph_1.edgeData; - var forceModel = graphSeries.getModel("force"); - var initLayout = forceModel.get("initLayout"); - if (graphSeries.preservedPoints) { - nodeData_1.each(function(idx) { - var id = nodeData_1.getId(idx); - nodeData_1.setItemLayout(idx, preservedPoints_1[id] || [NaN, NaN]); - }); - } else if (!initLayout || initLayout === "none") { - simpleLayout(graphSeries); - } else if (initLayout === "circular") { - circularLayout(graphSeries, "value"); - } - var nodeDataExtent_1 = nodeData_1.getDataExtent("value"); - var edgeDataExtent_1 = edgeData.getDataExtent("value"); - var repulsion = forceModel.get("repulsion"); - var edgeLength = forceModel.get("edgeLength"); - var repulsionArr_1 = isArray(repulsion) ? repulsion : [repulsion, repulsion]; - var edgeLengthArr_1 = isArray(edgeLength) ? edgeLength : [edgeLength, edgeLength]; - edgeLengthArr_1 = [edgeLengthArr_1[1], edgeLengthArr_1[0]]; - var nodes_1 = nodeData_1.mapArray("value", function(value, idx) { - var point = nodeData_1.getItemLayout(idx); - var rep = linearMap(value, nodeDataExtent_1, repulsionArr_1); - if (isNaN(rep)) { - rep = (repulsionArr_1[0] + repulsionArr_1[1]) / 2; - } - return { - w: rep, - rep, - fixed: nodeData_1.getItemModel(idx).get("fixed"), - p: !point || isNaN(point[0]) || isNaN(point[1]) ? null : point - }; - }); - var edges = edgeData.mapArray("value", function(value, idx) { - var edge = graph_1.getEdgeByIndex(idx); - var d = linearMap(value, edgeDataExtent_1, edgeLengthArr_1); - if (isNaN(d)) { - d = (edgeLengthArr_1[0] + edgeLengthArr_1[1]) / 2; - } - var edgeModel = edge.getModel(); - var curveness = retrieve3(edge.getModel().get(["lineStyle", "curveness"]), -getCurvenessForEdge(edge, graphSeries, idx, true), 0); - return { - n1: nodes_1[edge.node1.dataIndex], - n2: nodes_1[edge.node2.dataIndex], - d, - curveness, - ignoreForceLayout: edgeModel.get("ignoreForceLayout") - }; - }); - var rect = coordSys.getBoundingRect(); - var forceInstance = forceLayout(nodes_1, edges, { - rect, - gravity: forceModel.get("gravity"), - friction: forceModel.get("friction") - }); - forceInstance.beforeStep(function(nodes, edges2) { - for (var i = 0, l = nodes.length; i < l; i++) { - if (nodes[i].fixed) { - copy(nodes[i].p, graph_1.getNodeByIndex(i).getLayout()); - } - } - }); - forceInstance.afterStep(function(nodes, edges2, stopped) { - for (var i = 0, l = nodes.length; i < l; i++) { - if (!nodes[i].fixed) { - graph_1.getNodeByIndex(i).setLayout(nodes[i].p); - } - preservedPoints_1[nodeData_1.getId(i)] = nodes[i].p; - } - for (var i = 0, l = edges2.length; i < l; i++) { - var e2 = edges2[i]; - var edge = graph_1.getEdgeByIndex(i); - var p1 = e2.n1.p; - var p2 = e2.n2.p; - var points4 = edge.getLayout(); - points4 = points4 ? points4.slice() : []; - points4[0] = points4[0] || []; - points4[1] = points4[1] || []; - copy(points4[0], p1); - copy(points4[1], p2); - if (+e2.curveness) { - points4[2] = [(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e2.curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e2.curveness]; - } - edge.setLayout(points4); - } - }); - graphSeries.forceLayout = forceInstance; - graphSeries.preservedPoints = preservedPoints_1; - forceInstance.step(); - } else { - graphSeries.forceLayout = null; - } - }); - } - - // node_modules/echarts/lib/chart/graph/createView.js - function getViewRect3(seriesModel, api, aspect) { - var option = extend(seriesModel.getBoxLayoutParams(), { - aspect - }); - return getLayoutRect(option, { - width: api.getWidth(), - height: api.getHeight() - }); - } - function createViewCoordSys(ecModel, api) { - var viewList = []; - ecModel.eachSeriesByType("graph", function(seriesModel) { - var coordSysType = seriesModel.get("coordinateSystem"); - if (!coordSysType || coordSysType === "view") { - var data_1 = seriesModel.getData(); - var positions = data_1.mapArray(function(idx) { - var itemModel = data_1.getItemModel(idx); - return [+itemModel.get("x"), +itemModel.get("y")]; - }); - var min4 = []; - var max4 = []; - fromPoints(positions, min4, max4); - if (max4[0] - min4[0] === 0) { - max4[0] += 1; - min4[0] -= 1; - } - if (max4[1] - min4[1] === 0) { - max4[1] += 1; - min4[1] -= 1; - } - var aspect = (max4[0] - min4[0]) / (max4[1] - min4[1]); - var viewRect2 = getViewRect3(seriesModel, api, aspect); - if (isNaN(aspect)) { - min4 = [viewRect2.x, viewRect2.y]; - max4 = [viewRect2.x + viewRect2.width, viewRect2.y + viewRect2.height]; - } - var bbWidth = max4[0] - min4[0]; - var bbHeight = max4[1] - min4[1]; - var viewWidth = viewRect2.width; - var viewHeight = viewRect2.height; - var viewCoordSys = seriesModel.coordinateSystem = new View_default(); - viewCoordSys.zoomLimit = seriesModel.get("scaleLimit"); - viewCoordSys.setBoundingRect(min4[0], min4[1], bbWidth, bbHeight); - viewCoordSys.setViewRect(viewRect2.x, viewRect2.y, viewWidth, viewHeight); - viewCoordSys.setCenter(seriesModel.get("center"), api); - viewCoordSys.setZoom(seriesModel.get("zoom")); - viewList.push(viewCoordSys); - } - }); - return viewList; - } - - // node_modules/echarts/lib/chart/helper/LinePath.js - var straightLineProto = Line_default.prototype; - var bezierCurveProto = BezierCurve_default.prototype; - var StraightLineShape = ( - /** @class */ - /* @__PURE__ */ function() { - function StraightLineShape2() { - this.x1 = 0; - this.y1 = 0; - this.x2 = 0; - this.y2 = 0; - this.percent = 1; - } - return StraightLineShape2; - }() - ); - var CurveShape = ( - /** @class */ - function(_super) { - __extends(CurveShape2, _super); - function CurveShape2() { - return _super !== null && _super.apply(this, arguments) || this; - } - return CurveShape2; - }(StraightLineShape) - ); - function isStraightLine(shape) { - return isNaN(+shape.cpx1) || isNaN(+shape.cpy1); - } - var ECLinePath = ( - /** @class */ - function(_super) { - __extends(ECLinePath2, _super); - function ECLinePath2(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "ec-line"; - return _this; - } - ECLinePath2.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - ECLinePath2.prototype.getDefaultShape = function() { - return new StraightLineShape(); - }; - ECLinePath2.prototype.buildPath = function(ctx, shape) { - if (isStraightLine(shape)) { - straightLineProto.buildPath.call(this, ctx, shape); - } else { - bezierCurveProto.buildPath.call(this, ctx, shape); - } - }; - ECLinePath2.prototype.pointAt = function(t) { - if (isStraightLine(this.shape)) { - return straightLineProto.pointAt.call(this, t); - } else { - return bezierCurveProto.pointAt.call(this, t); - } - }; - ECLinePath2.prototype.tangentAt = function(t) { - var shape = this.shape; - var p = isStraightLine(shape) ? [shape.x2 - shape.x1, shape.y2 - shape.y1] : bezierCurveProto.tangentAt.call(this, t); - return normalize(p, p); - }; - return ECLinePath2; - }(Path_default) - ); - var LinePath_default = ECLinePath; - - // node_modules/echarts/lib/chart/helper/Line.js - var SYMBOL_CATEGORIES = ["fromSymbol", "toSymbol"]; - function makeSymbolTypeKey(symbolCategory) { - return "_" + symbolCategory + "Type"; - } - function makeSymbolTypeValue(name, lineData, idx) { - var symbolType = lineData.getItemVisual(idx, name); - if (!symbolType || symbolType === "none") { - return symbolType; - } - var symbolSize = lineData.getItemVisual(idx, name + "Size"); - var symbolRotate = lineData.getItemVisual(idx, name + "Rotate"); - var symbolOffset = lineData.getItemVisual(idx, name + "Offset"); - var symbolKeepAspect = lineData.getItemVisual(idx, name + "KeepAspect"); - var symbolSizeArr = normalizeSymbolSize(symbolSize); - var symbolOffsetArr = normalizeSymbolOffset(symbolOffset || 0, symbolSizeArr); - return symbolType + symbolSizeArr + symbolOffsetArr + (symbolRotate || "") + (symbolKeepAspect || ""); - } - function createSymbol2(name, lineData, idx) { - var symbolType = lineData.getItemVisual(idx, name); - if (!symbolType || symbolType === "none") { - return; - } - var symbolSize = lineData.getItemVisual(idx, name + "Size"); - var symbolRotate = lineData.getItemVisual(idx, name + "Rotate"); - var symbolOffset = lineData.getItemVisual(idx, name + "Offset"); - var symbolKeepAspect = lineData.getItemVisual(idx, name + "KeepAspect"); - var symbolSizeArr = normalizeSymbolSize(symbolSize); - var symbolOffsetArr = normalizeSymbolOffset(symbolOffset || 0, symbolSizeArr); - var symbolPath = createSymbol(symbolType, -symbolSizeArr[0] / 2 + symbolOffsetArr[0], -symbolSizeArr[1] / 2 + symbolOffsetArr[1], symbolSizeArr[0], symbolSizeArr[1], null, symbolKeepAspect); - symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate) ? void 0 : +symbolRotate * Math.PI / 180 || 0; - symbolPath.name = name; - return symbolPath; - } - function createLine(points4) { - var line = new LinePath_default({ - name: "line", - subPixelOptimize: true - }); - setLinePoints(line.shape, points4); - return line; - } - function setLinePoints(targetShape, points4) { - targetShape.x1 = points4[0][0]; - targetShape.y1 = points4[0][1]; - targetShape.x2 = points4[1][0]; - targetShape.y2 = points4[1][1]; - targetShape.percent = 1; - var cp1 = points4[2]; - if (cp1) { - targetShape.cpx1 = cp1[0]; - targetShape.cpy1 = cp1[1]; - } else { - targetShape.cpx1 = NaN; - targetShape.cpy1 = NaN; - } - } - var Line2 = ( - /** @class */ - function(_super) { - __extends(Line3, _super); - function Line3(lineData, idx, seriesScope) { - var _this = _super.call(this) || this; - _this._createLine(lineData, idx, seriesScope); - return _this; - } - Line3.prototype._createLine = function(lineData, idx, seriesScope) { - var seriesModel = lineData.hostModel; - var linePoints = lineData.getItemLayout(idx); - var line = createLine(linePoints); - line.shape.percent = 0; - initProps(line, { - shape: { - percent: 1 - } - }, seriesModel, idx); - this.add(line); - each(SYMBOL_CATEGORIES, function(symbolCategory) { - var symbol = createSymbol2(symbolCategory, lineData, idx); - this.add(symbol); - this[makeSymbolTypeKey(symbolCategory)] = makeSymbolTypeValue(symbolCategory, lineData, idx); - }, this); - this._updateCommonStl(lineData, idx, seriesScope); - }; - Line3.prototype.updateData = function(lineData, idx, seriesScope) { - var seriesModel = lineData.hostModel; - var line = this.childOfName("line"); - var linePoints = lineData.getItemLayout(idx); - var target = { - shape: {} - }; - setLinePoints(target.shape, linePoints); - updateProps(line, target, seriesModel, idx); - each(SYMBOL_CATEGORIES, function(symbolCategory) { - var symbolType = makeSymbolTypeValue(symbolCategory, lineData, idx); - var key = makeSymbolTypeKey(symbolCategory); - if (this[key] !== symbolType) { - this.remove(this.childOfName(symbolCategory)); - var symbol = createSymbol2(symbolCategory, lineData, idx); - this.add(symbol); - } - this[key] = symbolType; - }, this); - this._updateCommonStl(lineData, idx, seriesScope); - }; - ; - Line3.prototype.getLinePath = function() { - return this.childAt(0); - }; - Line3.prototype._updateCommonStl = function(lineData, idx, seriesScope) { - var seriesModel = lineData.hostModel; - var line = this.childOfName("line"); - var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle; - var blurLineStyle = seriesScope && seriesScope.blurLineStyle; - var selectLineStyle = seriesScope && seriesScope.selectLineStyle; - var labelStatesModels = seriesScope && seriesScope.labelStatesModels; - var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled; - var focus = seriesScope && seriesScope.focus; - var blurScope = seriesScope && seriesScope.blurScope; - if (!seriesScope || lineData.hasItemOption) { - var itemModel = lineData.getItemModel(idx); - var emphasisModel = itemModel.getModel("emphasis"); - emphasisLineStyle = emphasisModel.getModel("lineStyle").getLineStyle(); - blurLineStyle = itemModel.getModel(["blur", "lineStyle"]).getLineStyle(); - selectLineStyle = itemModel.getModel(["select", "lineStyle"]).getLineStyle(); - emphasisDisabled = emphasisModel.get("disabled"); - focus = emphasisModel.get("focus"); - blurScope = emphasisModel.get("blurScope"); - labelStatesModels = getLabelStatesModels(itemModel); - } - var lineStyle = lineData.getItemVisual(idx, "style"); - var visualColor = lineStyle.stroke; - line.useStyle(lineStyle); - line.style.fill = null; - line.style.strokeNoScale = true; - line.ensureState("emphasis").style = emphasisLineStyle; - line.ensureState("blur").style = blurLineStyle; - line.ensureState("select").style = selectLineStyle; - each(SYMBOL_CATEGORIES, function(symbolCategory) { - var symbol = this.childOfName(symbolCategory); - if (symbol) { - symbol.setColor(visualColor); - symbol.style.opacity = lineStyle.opacity; - for (var i = 0; i < SPECIAL_STATES.length; i++) { - var stateName = SPECIAL_STATES[i]; - var lineState = line.getState(stateName); - if (lineState) { - var lineStateStyle = lineState.style || {}; - var state = symbol.ensureState(stateName); - var stateStyle = state.style || (state.style = {}); - if (lineStateStyle.stroke != null) { - stateStyle[symbol.__isEmptyBrush ? "stroke" : "fill"] = lineStateStyle.stroke; - } - if (lineStateStyle.opacity != null) { - stateStyle.opacity = lineStateStyle.opacity; - } - } - } - symbol.markRedraw(); - } - }, this); - var rawVal = seriesModel.getRawValue(idx); - setLabelStyle(this, labelStatesModels, { - labelDataIndex: idx, - labelFetcher: { - getFormattedLabel: function(dataIndex, stateName) { - return seriesModel.getFormattedLabel(dataIndex, stateName, lineData.dataType); - } - }, - inheritColor: visualColor || "#000", - defaultOpacity: lineStyle.opacity, - defaultText: (rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round(rawVal) : rawVal) + "" - }); - var label = this.getTextContent(); - if (label) { - var labelNormalModel = labelStatesModels.normal; - label.__align = label.style.align; - label.__verticalAlign = label.style.verticalAlign; - label.__position = labelNormalModel.get("position") || "middle"; - var distance2 = labelNormalModel.get("distance"); - if (!isArray(distance2)) { - distance2 = [distance2, distance2]; - } - label.__labelDistance = distance2; - } - this.setTextConfig({ - position: null, - local: true, - inside: false - // Can't be inside for stroke element. - }); - toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled); - }; - Line3.prototype.highlight = function() { - enterEmphasis(this); - }; - Line3.prototype.downplay = function() { - leaveEmphasis(this); - }; - Line3.prototype.updateLayout = function(lineData, idx) { - this.setLinePoints(lineData.getItemLayout(idx)); - }; - Line3.prototype.setLinePoints = function(points4) { - var linePath = this.childOfName("line"); - setLinePoints(linePath.shape, points4); - linePath.dirty(); - }; - Line3.prototype.beforeUpdate = function() { - var lineGroup = this; - var symbolFrom = lineGroup.childOfName("fromSymbol"); - var symbolTo = lineGroup.childOfName("toSymbol"); - var label = lineGroup.getTextContent(); - if (!symbolFrom && !symbolTo && (!label || label.ignore)) { - return; - } - var invScale = 1; - var parentNode2 = this.parent; - while (parentNode2) { - if (parentNode2.scaleX) { - invScale /= parentNode2.scaleX; - } - parentNode2 = parentNode2.parent; - } - var line = lineGroup.childOfName("line"); - if (!this.__dirty && !line.__dirty) { - return; - } - var percent = line.shape.percent; - var fromPos = line.pointAt(0); - var toPos = line.pointAt(percent); - var d = sub([], toPos, fromPos); - normalize(d, d); - function setSymbolRotation(symbol, percent2) { - var specifiedRotation = symbol.__specifiedRotation; - if (specifiedRotation == null) { - var tangent2 = line.tangentAt(percent2); - symbol.attr("rotation", (percent2 === 1 ? -1 : 1) * Math.PI / 2 - Math.atan2(tangent2[1], tangent2[0])); - } else { - symbol.attr("rotation", specifiedRotation); - } - } - if (symbolFrom) { - symbolFrom.setPosition(fromPos); - setSymbolRotation(symbolFrom, 0); - symbolFrom.scaleX = symbolFrom.scaleY = invScale * percent; - symbolFrom.markRedraw(); - } - if (symbolTo) { - symbolTo.setPosition(toPos); - setSymbolRotation(symbolTo, 1); - symbolTo.scaleX = symbolTo.scaleY = invScale * percent; - symbolTo.markRedraw(); - } - if (label && !label.ignore) { - label.x = label.y = 0; - label.originX = label.originY = 0; - var textAlign = void 0; - var textVerticalAlign = void 0; - var distance2 = label.__labelDistance; - var distanceX = distance2[0] * invScale; - var distanceY = distance2[1] * invScale; - var halfPercent = percent / 2; - var tangent = line.tangentAt(halfPercent); - var n = [tangent[1], -tangent[0]]; - var cp = line.pointAt(halfPercent); - if (n[1] > 0) { - n[0] = -n[0]; - n[1] = -n[1]; - } - var dir3 = tangent[0] < 0 ? -1 : 1; - if (label.__position !== "start" && label.__position !== "end") { - var rotation = -Math.atan2(tangent[1], tangent[0]); - if (toPos[0] < fromPos[0]) { - rotation = Math.PI + rotation; - } - label.rotation = rotation; - } - var dy = void 0; - switch (label.__position) { - case "insideStartTop": - case "insideMiddleTop": - case "insideEndTop": - case "middle": - dy = -distanceY; - textVerticalAlign = "bottom"; - break; - case "insideStartBottom": - case "insideMiddleBottom": - case "insideEndBottom": - dy = distanceY; - textVerticalAlign = "top"; - break; - default: - dy = 0; - textVerticalAlign = "middle"; - } - switch (label.__position) { - case "end": - label.x = d[0] * distanceX + toPos[0]; - label.y = d[1] * distanceY + toPos[1]; - textAlign = d[0] > 0.8 ? "left" : d[0] < -0.8 ? "right" : "center"; - textVerticalAlign = d[1] > 0.8 ? "top" : d[1] < -0.8 ? "bottom" : "middle"; - break; - case "start": - label.x = -d[0] * distanceX + fromPos[0]; - label.y = -d[1] * distanceY + fromPos[1]; - textAlign = d[0] > 0.8 ? "right" : d[0] < -0.8 ? "left" : "center"; - textVerticalAlign = d[1] > 0.8 ? "bottom" : d[1] < -0.8 ? "top" : "middle"; - break; - case "insideStartTop": - case "insideStart": - case "insideStartBottom": - label.x = distanceX * dir3 + fromPos[0]; - label.y = fromPos[1] + dy; - textAlign = tangent[0] < 0 ? "right" : "left"; - label.originX = -distanceX * dir3; - label.originY = -dy; - break; - case "insideMiddleTop": - case "insideMiddle": - case "insideMiddleBottom": - case "middle": - label.x = cp[0]; - label.y = cp[1] + dy; - textAlign = "center"; - label.originY = -dy; - break; - case "insideEndTop": - case "insideEnd": - case "insideEndBottom": - label.x = -distanceX * dir3 + toPos[0]; - label.y = toPos[1] + dy; - textAlign = tangent[0] >= 0 ? "right" : "left"; - label.originX = distanceX * dir3; - label.originY = -dy; - break; - } - label.scaleX = label.scaleY = invScale; - label.setStyle({ - // Use the user specified text align and baseline first - verticalAlign: label.__verticalAlign || textVerticalAlign, - align: label.__align || textAlign - }); - } - }; - return Line3; - }(Group_default) - ); - var Line_default2 = Line2; - - // node_modules/echarts/lib/chart/helper/LineDraw.js - var LineDraw = ( - /** @class */ - function() { - function LineDraw2(LineCtor) { - this.group = new Group_default(); - this._LineCtor = LineCtor || Line_default2; - } - LineDraw2.prototype.updateData = function(lineData) { - var _this = this; - this._progressiveEls = null; - var lineDraw = this; - var group = lineDraw.group; - var oldLineData = lineDraw._lineData; - lineDraw._lineData = lineData; - if (!oldLineData) { - group.removeAll(); - } - var seriesScope = makeSeriesScope2(lineData); - lineData.diff(oldLineData).add(function(idx) { - _this._doAdd(lineData, idx, seriesScope); - }).update(function(newIdx, oldIdx) { - _this._doUpdate(oldLineData, lineData, oldIdx, newIdx, seriesScope); - }).remove(function(idx) { - group.remove(oldLineData.getItemGraphicEl(idx)); - }).execute(); - }; - ; - LineDraw2.prototype.updateLayout = function() { - var lineData = this._lineData; - if (!lineData) { - return; - } - lineData.eachItemGraphicEl(function(el, idx) { - el.updateLayout(lineData, idx); - }, this); - }; - ; - LineDraw2.prototype.incrementalPrepareUpdate = function(lineData) { - this._seriesScope = makeSeriesScope2(lineData); - this._lineData = null; - this.group.removeAll(); - }; - ; - LineDraw2.prototype.incrementalUpdate = function(taskParams, lineData) { - this._progressiveEls = []; - function updateIncrementalAndHover(el2) { - if (!el2.isGroup && !isEffectObject(el2)) { - el2.incremental = true; - el2.ensureState("emphasis").hoverLayer = true; - } - } - for (var idx = taskParams.start; idx < taskParams.end; idx++) { - var itemLayout = lineData.getItemLayout(idx); - if (lineNeedsDraw(itemLayout)) { - var el = new this._LineCtor(lineData, idx, this._seriesScope); - el.traverse(updateIncrementalAndHover); - this.group.add(el); - lineData.setItemGraphicEl(idx, el); - this._progressiveEls.push(el); - } - } - }; - ; - LineDraw2.prototype.remove = function() { - this.group.removeAll(); - }; - ; - LineDraw2.prototype.eachRendered = function(cb) { - traverseElements(this._progressiveEls || this.group, cb); - }; - LineDraw2.prototype._doAdd = function(lineData, idx, seriesScope) { - var itemLayout = lineData.getItemLayout(idx); - if (!lineNeedsDraw(itemLayout)) { - return; - } - var el = new this._LineCtor(lineData, idx, seriesScope); - lineData.setItemGraphicEl(idx, el); - this.group.add(el); - }; - LineDraw2.prototype._doUpdate = function(oldLineData, newLineData, oldIdx, newIdx, seriesScope) { - var itemEl = oldLineData.getItemGraphicEl(oldIdx); - if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) { - this.group.remove(itemEl); - return; - } - if (!itemEl) { - itemEl = new this._LineCtor(newLineData, newIdx, seriesScope); - } else { - itemEl.updateData(newLineData, newIdx, seriesScope); - } - newLineData.setItemGraphicEl(newIdx, itemEl); - this.group.add(itemEl); - }; - return LineDraw2; - }() - ); - function isEffectObject(el) { - return el.animators && el.animators.length > 0; - } - function makeSeriesScope2(lineData) { - var hostModel = lineData.hostModel; - var emphasisModel = hostModel.getModel("emphasis"); - return { - lineStyle: hostModel.getModel("lineStyle").getLineStyle(), - emphasisLineStyle: emphasisModel.getModel(["lineStyle"]).getLineStyle(), - blurLineStyle: hostModel.getModel(["blur", "lineStyle"]).getLineStyle(), - selectLineStyle: hostModel.getModel(["select", "lineStyle"]).getLineStyle(), - emphasisDisabled: emphasisModel.get("disabled"), - blurScope: emphasisModel.get("blurScope"), - focus: emphasisModel.get("focus"), - labelStatesModels: getLabelStatesModels(hostModel) - }; - } - function isPointNaN(pt) { - return isNaN(pt[0]) || isNaN(pt[1]); - } - function lineNeedsDraw(pts) { - return pts && !isPointNaN(pts[0]) && !isPointNaN(pts[1]); - } - var LineDraw_default = LineDraw; - - // node_modules/echarts/lib/chart/graph/adjustEdge.js - var v1 = []; - var v2 = []; - var v3 = []; - var quadraticAt2 = quadraticAt; - var v2DistSquare = distSquare; - var mathAbs3 = Math.abs; - function intersectCurveCircle(curvePoints, center3, radius) { - var p0 = curvePoints[0]; - var p1 = curvePoints[1]; - var p2 = curvePoints[2]; - var d = Infinity; - var t; - var radiusSquare = radius * radius; - var interval = 0.1; - for (var _t = 0.1; _t <= 0.9; _t += 0.1) { - v1[0] = quadraticAt2(p0[0], p1[0], p2[0], _t); - v1[1] = quadraticAt2(p0[1], p1[1], p2[1], _t); - var diff = mathAbs3(v2DistSquare(v1, center3) - radiusSquare); - if (diff < d) { - d = diff; - t = _t; - } - } - for (var i = 0; i < 32; i++) { - var next = t + interval; - v2[0] = quadraticAt2(p0[0], p1[0], p2[0], t); - v2[1] = quadraticAt2(p0[1], p1[1], p2[1], t); - v3[0] = quadraticAt2(p0[0], p1[0], p2[0], next); - v3[1] = quadraticAt2(p0[1], p1[1], p2[1], next); - var diff = v2DistSquare(v2, center3) - radiusSquare; - if (mathAbs3(diff) < 0.01) { - break; - } - var nextDiff = v2DistSquare(v3, center3) - radiusSquare; - interval /= 2; - if (diff < 0) { - if (nextDiff >= 0) { - t = t + interval; - } else { - t = t - interval; - } - } else { - if (nextDiff >= 0) { - t = t - interval; - } else { - t = t + interval; - } - } - } - return t; - } - function adjustEdge(graph, scale4) { - var tmp0 = []; - var quadraticSubdivide2 = quadraticSubdivide; - var pts = [[], [], []]; - var pts2 = [[], []]; - var v = []; - scale4 /= 2; - graph.eachEdge(function(edge, idx) { - var linePoints = edge.getLayout(); - var fromSymbol = edge.getVisual("fromSymbol"); - var toSymbol = edge.getVisual("toSymbol"); - if (!linePoints.__original) { - linePoints.__original = [clone2(linePoints[0]), clone2(linePoints[1])]; - if (linePoints[2]) { - linePoints.__original.push(clone2(linePoints[2])); - } - } - var originalPoints = linePoints.__original; - if (linePoints[2] != null) { - copy(pts[0], originalPoints[0]); - copy(pts[1], originalPoints[2]); - copy(pts[2], originalPoints[1]); - if (fromSymbol && fromSymbol !== "none") { - var symbolSize = getSymbolSize(edge.node1); - var t = intersectCurveCircle(pts, originalPoints[0], symbolSize * scale4); - quadraticSubdivide2(pts[0][0], pts[1][0], pts[2][0], t, tmp0); - pts[0][0] = tmp0[3]; - pts[1][0] = tmp0[4]; - quadraticSubdivide2(pts[0][1], pts[1][1], pts[2][1], t, tmp0); - pts[0][1] = tmp0[3]; - pts[1][1] = tmp0[4]; - } - if (toSymbol && toSymbol !== "none") { - var symbolSize = getSymbolSize(edge.node2); - var t = intersectCurveCircle(pts, originalPoints[1], symbolSize * scale4); - quadraticSubdivide2(pts[0][0], pts[1][0], pts[2][0], t, tmp0); - pts[1][0] = tmp0[1]; - pts[2][0] = tmp0[2]; - quadraticSubdivide2(pts[0][1], pts[1][1], pts[2][1], t, tmp0); - pts[1][1] = tmp0[1]; - pts[2][1] = tmp0[2]; - } - copy(linePoints[0], pts[0]); - copy(linePoints[1], pts[2]); - copy(linePoints[2], pts[1]); - } else { - copy(pts2[0], originalPoints[0]); - copy(pts2[1], originalPoints[1]); - sub(v, pts2[1], pts2[0]); - normalize(v, v); - if (fromSymbol && fromSymbol !== "none") { - var symbolSize = getSymbolSize(edge.node1); - scaleAndAdd(pts2[0], pts2[0], v, symbolSize * scale4); - } - if (toSymbol && toSymbol !== "none") { - var symbolSize = getSymbolSize(edge.node2); - scaleAndAdd(pts2[1], pts2[1], v, -symbolSize * scale4); - } - copy(linePoints[0], pts2[0]); - copy(linePoints[1], pts2[1]); - } - }); - } - - // node_modules/echarts/lib/chart/graph/GraphView.js - function isViewCoordSys(coordSys) { - return coordSys.type === "view"; - } - var GraphView = ( - /** @class */ - function(_super) { - __extends(GraphView2, _super); - function GraphView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GraphView2.type; - return _this; - } - GraphView2.prototype.init = function(ecModel, api) { - var symbolDraw = new SymbolDraw_default(); - var lineDraw = new LineDraw_default(); - var group = this.group; - this._controller = new RoamController_default(api.getZr()); - this._controllerHost = { - target: group - }; - group.add(symbolDraw.group); - group.add(lineDraw.group); - this._symbolDraw = symbolDraw; - this._lineDraw = lineDraw; - this._firstRender = true; - }; - GraphView2.prototype.render = function(seriesModel, ecModel, api) { - var _this = this; - var coordSys = seriesModel.coordinateSystem; - this._model = seriesModel; - var symbolDraw = this._symbolDraw; - var lineDraw = this._lineDraw; - var group = this.group; - if (isViewCoordSys(coordSys)) { - var groupNewProp = { - x: coordSys.x, - y: coordSys.y, - scaleX: coordSys.scaleX, - scaleY: coordSys.scaleY - }; - if (this._firstRender) { - group.attr(groupNewProp); - } else { - updateProps(group, groupNewProp, seriesModel); - } - } - adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel)); - var data = seriesModel.getData(); - symbolDraw.updateData(data); - var edgeData = seriesModel.getEdgeData(); - lineDraw.updateData(edgeData); - this._updateNodeAndLinkScale(); - this._updateController(seriesModel, ecModel, api); - clearTimeout(this._layoutTimeout); - var forceLayout2 = seriesModel.forceLayout; - var layoutAnimation = seriesModel.get(["force", "layoutAnimation"]); - if (forceLayout2) { - this._startForceLayoutIteration(forceLayout2, layoutAnimation); - } - var layout5 = seriesModel.get("layout"); - data.graph.eachNode(function(node) { - var idx = node.dataIndex; - var el = node.getGraphicEl(); - var itemModel = node.getModel(); - if (!el) { - return; - } - el.off("drag").off("dragend"); - var draggable = itemModel.get("draggable"); - if (draggable) { - el.on("drag", function(e2) { - switch (layout5) { - case "force": - forceLayout2.warmUp(); - !_this._layouting && _this._startForceLayoutIteration(forceLayout2, layoutAnimation); - forceLayout2.setFixed(idx); - data.setItemLayout(idx, [el.x, el.y]); - break; - case "circular": - data.setItemLayout(idx, [el.x, el.y]); - node.setLayout({ - fixed: true - }, true); - circularLayout(seriesModel, "symbolSize", node, [e2.offsetX, e2.offsetY]); - _this.updateLayout(seriesModel); - break; - case "none": - default: - data.setItemLayout(idx, [el.x, el.y]); - simpleLayoutEdge(seriesModel.getGraph(), seriesModel); - _this.updateLayout(seriesModel); - break; - } - }).on("dragend", function() { - if (forceLayout2) { - forceLayout2.setUnfixed(idx); - } - }); - } - el.setDraggable(draggable, !!itemModel.get("cursor")); - var focus = itemModel.get(["emphasis", "focus"]); - if (focus === "adjacency") { - getECData(el).focus = node.getAdjacentDataIndices(); - } - }); - data.graph.eachEdge(function(edge) { - var el = edge.getGraphicEl(); - var focus = edge.getModel().get(["emphasis", "focus"]); - if (!el) { - return; - } - if (focus === "adjacency") { - getECData(el).focus = { - edge: [edge.dataIndex], - node: [edge.node1.dataIndex, edge.node2.dataIndex] - }; - } - }); - var circularRotateLabel = seriesModel.get("layout") === "circular" && seriesModel.get(["circular", "rotateLabel"]); - var cx = data.getLayout("cx"); - var cy = data.getLayout("cy"); - data.graph.eachNode(function(node) { - rotateNodeLabel(node, circularRotateLabel, cx, cy); - }); - this._firstRender = false; - }; - GraphView2.prototype.dispose = function() { - this.remove(); - this._controller && this._controller.dispose(); - this._controllerHost = null; - }; - GraphView2.prototype._startForceLayoutIteration = function(forceLayout2, layoutAnimation) { - var self2 = this; - (function step() { - forceLayout2.step(function(stopped) { - self2.updateLayout(self2._model); - (self2._layouting = !stopped) && (layoutAnimation ? self2._layoutTimeout = setTimeout(step, 16) : step()); - }); - })(); - }; - GraphView2.prototype._updateController = function(seriesModel, ecModel, api) { - var _this = this; - var controller = this._controller; - var controllerHost = this._controllerHost; - var group = this.group; - controller.setPointerChecker(function(e2, x, y) { - var rect = group.getBoundingRect(); - rect.applyTransform(group.transform); - return rect.contain(x, y) && !onIrrelevantElement(e2, api, seriesModel); - }); - if (!isViewCoordSys(seriesModel.coordinateSystem)) { - controller.disable(); - return; - } - controller.enable(seriesModel.get("roam")); - controllerHost.zoomLimit = seriesModel.get("scaleLimit"); - controllerHost.zoom = seriesModel.coordinateSystem.getZoom(); - controller.off("pan").off("zoom").on("pan", function(e2) { - updateViewOnPan(controllerHost, e2.dx, e2.dy); - api.dispatchAction({ - seriesId: seriesModel.id, - type: "graphRoam", - dx: e2.dx, - dy: e2.dy - }); - }).on("zoom", function(e2) { - updateViewOnZoom(controllerHost, e2.scale, e2.originX, e2.originY); - api.dispatchAction({ - seriesId: seriesModel.id, - type: "graphRoam", - zoom: e2.scale, - originX: e2.originX, - originY: e2.originY - }); - _this._updateNodeAndLinkScale(); - adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel)); - _this._lineDraw.updateLayout(); - api.updateLabelLayout(); - }); - }; - GraphView2.prototype._updateNodeAndLinkScale = function() { - var seriesModel = this._model; - var data = seriesModel.getData(); - var nodeScale = getNodeGlobalScale(seriesModel); - data.eachItemGraphicEl(function(el, idx) { - el && el.setSymbolScale(nodeScale); - }); - }; - GraphView2.prototype.updateLayout = function(seriesModel) { - adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel)); - this._symbolDraw.updateLayout(); - this._lineDraw.updateLayout(); - }; - GraphView2.prototype.remove = function() { - clearTimeout(this._layoutTimeout); - this._layouting = false; - this._layoutTimeout = null; - this._symbolDraw && this._symbolDraw.remove(); - this._lineDraw && this._lineDraw.remove(); - }; - GraphView2.type = "graph"; - return GraphView2; - }(Chart_default) - ); - var GraphView_default = GraphView; - - // node_modules/echarts/lib/data/Graph.js - function generateNodeKey(id) { - return "_EC_" + id; - } - var Graph = ( - /** @class */ - function() { - function Graph2(directed) { - this.type = "graph"; - this.nodes = []; - this.edges = []; - this._nodesMap = {}; - this._edgesMap = {}; - this._directed = directed || false; - } - Graph2.prototype.isDirected = function() { - return this._directed; - }; - ; - Graph2.prototype.addNode = function(id, dataIndex) { - id = id == null ? "" + dataIndex : "" + id; - var nodesMap = this._nodesMap; - if (nodesMap[generateNodeKey(id)]) { - if (true) { - console.error("Graph nodes have duplicate name or id"); - } - return; - } - var node = new GraphNode(id, dataIndex); - node.hostGraph = this; - this.nodes.push(node); - nodesMap[generateNodeKey(id)] = node; - return node; - }; - ; - Graph2.prototype.getNodeByIndex = function(dataIndex) { - var rawIdx = this.data.getRawIndex(dataIndex); - return this.nodes[rawIdx]; - }; - ; - Graph2.prototype.getNodeById = function(id) { - return this._nodesMap[generateNodeKey(id)]; - }; - ; - Graph2.prototype.addEdge = function(n1, n2, dataIndex) { - var nodesMap = this._nodesMap; - var edgesMap = this._edgesMap; - if (isNumber(n1)) { - n1 = this.nodes[n1]; - } - if (isNumber(n2)) { - n2 = this.nodes[n2]; - } - if (!(n1 instanceof GraphNode)) { - n1 = nodesMap[generateNodeKey(n1)]; - } - if (!(n2 instanceof GraphNode)) { - n2 = nodesMap[generateNodeKey(n2)]; - } - if (!n1 || !n2) { - return; - } - var key = n1.id + "-" + n2.id; - var edge = new GraphEdge(n1, n2, dataIndex); - edge.hostGraph = this; - if (this._directed) { - n1.outEdges.push(edge); - n2.inEdges.push(edge); - } - n1.edges.push(edge); - if (n1 !== n2) { - n2.edges.push(edge); - } - this.edges.push(edge); - edgesMap[key] = edge; - return edge; - }; - ; - Graph2.prototype.getEdgeByIndex = function(dataIndex) { - var rawIdx = this.edgeData.getRawIndex(dataIndex); - return this.edges[rawIdx]; - }; - ; - Graph2.prototype.getEdge = function(n1, n2) { - if (n1 instanceof GraphNode) { - n1 = n1.id; - } - if (n2 instanceof GraphNode) { - n2 = n2.id; - } - var edgesMap = this._edgesMap; - if (this._directed) { - return edgesMap[n1 + "-" + n2]; - } else { - return edgesMap[n1 + "-" + n2] || edgesMap[n2 + "-" + n1]; - } - }; - ; - Graph2.prototype.eachNode = function(cb, context) { - var nodes = this.nodes; - var len2 = nodes.length; - for (var i = 0; i < len2; i++) { - if (nodes[i].dataIndex >= 0) { - cb.call(context, nodes[i], i); - } - } - }; - ; - Graph2.prototype.eachEdge = function(cb, context) { - var edges = this.edges; - var len2 = edges.length; - for (var i = 0; i < len2; i++) { - if (edges[i].dataIndex >= 0 && edges[i].node1.dataIndex >= 0 && edges[i].node2.dataIndex >= 0) { - cb.call(context, edges[i], i); - } - } - }; - ; - Graph2.prototype.breadthFirstTraverse = function(cb, startNode, direction, context) { - if (!(startNode instanceof GraphNode)) { - startNode = this._nodesMap[generateNodeKey(startNode)]; - } - if (!startNode) { - return; - } - var edgeType = direction === "out" ? "outEdges" : direction === "in" ? "inEdges" : "edges"; - for (var i = 0; i < this.nodes.length; i++) { - this.nodes[i].__visited = false; - } - if (cb.call(context, startNode, null)) { - return; - } - var queue = [startNode]; - while (queue.length) { - var currentNode = queue.shift(); - var edges = currentNode[edgeType]; - for (var i = 0; i < edges.length; i++) { - var e2 = edges[i]; - var otherNode = e2.node1 === currentNode ? e2.node2 : e2.node1; - if (!otherNode.__visited) { - if (cb.call(context, otherNode, currentNode)) { - return; - } - queue.push(otherNode); - otherNode.__visited = true; - } - } - } - }; - ; - Graph2.prototype.update = function() { - var data = this.data; - var edgeData = this.edgeData; - var nodes = this.nodes; - var edges = this.edges; - for (var i = 0, len2 = nodes.length; i < len2; i++) { - nodes[i].dataIndex = -1; - } - for (var i = 0, len2 = data.count(); i < len2; i++) { - nodes[data.getRawIndex(i)].dataIndex = i; - } - edgeData.filterSelf(function(idx) { - var edge = edges[edgeData.getRawIndex(idx)]; - return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0; - }); - for (var i = 0, len2 = edges.length; i < len2; i++) { - edges[i].dataIndex = -1; - } - for (var i = 0, len2 = edgeData.count(); i < len2; i++) { - edges[edgeData.getRawIndex(i)].dataIndex = i; - } - }; - ; - Graph2.prototype.clone = function() { - var graph = new Graph2(this._directed); - var nodes = this.nodes; - var edges = this.edges; - for (var i = 0; i < nodes.length; i++) { - graph.addNode(nodes[i].id, nodes[i].dataIndex); - } - for (var i = 0; i < edges.length; i++) { - var e2 = edges[i]; - graph.addEdge(e2.node1.id, e2.node2.id, e2.dataIndex); - } - return graph; - }; - ; - return Graph2; - }() - ); - var GraphNode = ( - /** @class */ - function() { - function GraphNode2(id, dataIndex) { - this.inEdges = []; - this.outEdges = []; - this.edges = []; - this.dataIndex = -1; - this.id = id == null ? "" : id; - this.dataIndex = dataIndex == null ? -1 : dataIndex; - } - GraphNode2.prototype.degree = function() { - return this.edges.length; - }; - GraphNode2.prototype.inDegree = function() { - return this.inEdges.length; - }; - GraphNode2.prototype.outDegree = function() { - return this.outEdges.length; - }; - GraphNode2.prototype.getModel = function(path) { - if (this.dataIndex < 0) { - return; - } - var graph = this.hostGraph; - var itemModel = graph.data.getItemModel(this.dataIndex); - return itemModel.getModel(path); - }; - GraphNode2.prototype.getAdjacentDataIndices = function() { - var dataIndices = { - edge: [], - node: [] - }; - for (var i = 0; i < this.edges.length; i++) { - var adjacentEdge = this.edges[i]; - if (adjacentEdge.dataIndex < 0) { - continue; - } - dataIndices.edge.push(adjacentEdge.dataIndex); - dataIndices.node.push(adjacentEdge.node1.dataIndex, adjacentEdge.node2.dataIndex); - } - return dataIndices; - }; - GraphNode2.prototype.getTrajectoryDataIndices = function() { - var connectedEdgesMap = createHashMap(); - var connectedNodesMap = createHashMap(); - for (var i = 0; i < this.edges.length; i++) { - var adjacentEdge = this.edges[i]; - if (adjacentEdge.dataIndex < 0) { - continue; - } - connectedEdgesMap.set(adjacentEdge.dataIndex, true); - var sourceNodesQueue = [adjacentEdge.node1]; - var targetNodesQueue = [adjacentEdge.node2]; - var nodeIteratorIndex = 0; - while (nodeIteratorIndex < sourceNodesQueue.length) { - var sourceNode = sourceNodesQueue[nodeIteratorIndex]; - nodeIteratorIndex++; - connectedNodesMap.set(sourceNode.dataIndex, true); - for (var j = 0; j < sourceNode.inEdges.length; j++) { - connectedEdgesMap.set(sourceNode.inEdges[j].dataIndex, true); - sourceNodesQueue.push(sourceNode.inEdges[j].node1); - } - } - nodeIteratorIndex = 0; - while (nodeIteratorIndex < targetNodesQueue.length) { - var targetNode = targetNodesQueue[nodeIteratorIndex]; - nodeIteratorIndex++; - connectedNodesMap.set(targetNode.dataIndex, true); - for (var j = 0; j < targetNode.outEdges.length; j++) { - connectedEdgesMap.set(targetNode.outEdges[j].dataIndex, true); - targetNodesQueue.push(targetNode.outEdges[j].node2); - } - } - } - return { - edge: connectedEdgesMap.keys(), - node: connectedNodesMap.keys() - }; - }; - return GraphNode2; - }() - ); - var GraphEdge = ( - /** @class */ - function() { - function GraphEdge2(n1, n2, dataIndex) { - this.dataIndex = -1; - this.node1 = n1; - this.node2 = n2; - this.dataIndex = dataIndex == null ? -1 : dataIndex; - } - GraphEdge2.prototype.getModel = function(path) { - if (this.dataIndex < 0) { - return; - } - var graph = this.hostGraph; - var itemModel = graph.edgeData.getItemModel(this.dataIndex); - return itemModel.getModel(path); - }; - GraphEdge2.prototype.getAdjacentDataIndices = function() { - return { - edge: [this.dataIndex], - node: [this.node1.dataIndex, this.node2.dataIndex] - }; - }; - GraphEdge2.prototype.getTrajectoryDataIndices = function() { - var connectedEdgesMap = createHashMap(); - var connectedNodesMap = createHashMap(); - connectedEdgesMap.set(this.dataIndex, true); - var sourceNodes = [this.node1]; - var targetNodes = [this.node2]; - var nodeIteratorIndex = 0; - while (nodeIteratorIndex < sourceNodes.length) { - var sourceNode = sourceNodes[nodeIteratorIndex]; - nodeIteratorIndex++; - connectedNodesMap.set(sourceNode.dataIndex, true); - for (var j = 0; j < sourceNode.inEdges.length; j++) { - connectedEdgesMap.set(sourceNode.inEdges[j].dataIndex, true); - sourceNodes.push(sourceNode.inEdges[j].node1); - } - } - nodeIteratorIndex = 0; - while (nodeIteratorIndex < targetNodes.length) { - var targetNode = targetNodes[nodeIteratorIndex]; - nodeIteratorIndex++; - connectedNodesMap.set(targetNode.dataIndex, true); - for (var j = 0; j < targetNode.outEdges.length; j++) { - connectedEdgesMap.set(targetNode.outEdges[j].dataIndex, true); - targetNodes.push(targetNode.outEdges[j].node2); - } - } - return { - edge: connectedEdgesMap.keys(), - node: connectedNodesMap.keys() - }; - }; - return GraphEdge2; - }() - ); - function createGraphDataProxyMixin(hostName, dataName) { - return { - /** - * @param Default 'value'. can be 'a', 'b', 'c', 'd', 'e'. - */ - getValue: function(dimension) { - var data = this[hostName][dataName]; - return data.getStore().get(data.getDimensionIndex(dimension || "value"), this.dataIndex); - }, - // TODO: TYPE stricter type. - setVisual: function(key, value) { - this.dataIndex >= 0 && this[hostName][dataName].setItemVisual(this.dataIndex, key, value); - }, - getVisual: function(key) { - return this[hostName][dataName].getItemVisual(this.dataIndex, key); - }, - setLayout: function(layout5, merge2) { - this.dataIndex >= 0 && this[hostName][dataName].setItemLayout(this.dataIndex, layout5, merge2); - }, - getLayout: function() { - return this[hostName][dataName].getItemLayout(this.dataIndex); - }, - getGraphicEl: function() { - return this[hostName][dataName].getItemGraphicEl(this.dataIndex); - }, - getRawIndex: function() { - return this[hostName][dataName].getRawIndex(this.dataIndex); - } - }; - } - mixin(GraphNode, createGraphDataProxyMixin("hostGraph", "data")); - mixin(GraphEdge, createGraphDataProxyMixin("hostGraph", "edgeData")); - var Graph_default = Graph; - - // node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js - function createGraphFromNodeEdge(nodes, edges, seriesModel, directed, beforeLink) { - var graph = new Graph_default(directed); - for (var i = 0; i < nodes.length; i++) { - graph.addNode(retrieve( - // Id, name, dataIndex - nodes[i].id, - nodes[i].name, - i - ), i); - } - var linkNameList = []; - var validEdges = []; - var linkCount = 0; - for (var i = 0; i < edges.length; i++) { - var link = edges[i]; - var source = link.source; - var target = link.target; - if (graph.addEdge(source, target, linkCount)) { - validEdges.push(link); - linkNameList.push(retrieve(convertOptionIdName(link.id, null), source + " > " + target)); - linkCount++; - } - } - var coordSys = seriesModel.get("coordinateSystem"); - var nodeData; - if (coordSys === "cartesian2d" || coordSys === "polar") { - nodeData = createSeriesData_default(nodes, seriesModel); - } else { - var coordSysCtor = CoordinateSystem_default.get(coordSys); - var coordDimensions = coordSysCtor ? coordSysCtor.dimensions || [] : []; - if (indexOf(coordDimensions, "value") < 0) { - coordDimensions.concat(["value"]); - } - var dimensions = prepareSeriesDataSchema(nodes, { - coordDimensions, - encodeDefine: seriesModel.getEncode() - }).dimensions; - nodeData = new SeriesData_default(dimensions, seriesModel); - nodeData.initData(nodes); - } - var edgeData = new SeriesData_default(["value"], seriesModel); - edgeData.initData(validEdges, linkNameList); - beforeLink && beforeLink(nodeData, edgeData); - linkSeriesData_default({ - mainData: nodeData, - struct: graph, - structAttr: "graph", - datas: { - node: nodeData, - edge: edgeData - }, - datasAttr: { - node: "data", - edge: "edgeData" - } - }); - graph.update(); - return graph; - } - - // node_modules/echarts/lib/chart/graph/GraphSeries.js - var GraphSeriesModel = ( - /** @class */ - function(_super) { - __extends(GraphSeriesModel2, _super); - function GraphSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GraphSeriesModel2.type; - _this.hasSymbolVisual = true; - return _this; - } - GraphSeriesModel2.prototype.init = function(option) { - _super.prototype.init.apply(this, arguments); - var self2 = this; - function getCategoriesData() { - return self2._categoriesData; - } - this.legendVisualProvider = new LegendVisualProvider_default(getCategoriesData, getCategoriesData); - this.fillDataTextStyle(option.edges || option.links); - this._updateCategoriesData(); - }; - GraphSeriesModel2.prototype.mergeOption = function(option) { - _super.prototype.mergeOption.apply(this, arguments); - this.fillDataTextStyle(option.edges || option.links); - this._updateCategoriesData(); - }; - GraphSeriesModel2.prototype.mergeDefaultAndTheme = function(option) { - _super.prototype.mergeDefaultAndTheme.apply(this, arguments); - defaultEmphasis(option, "edgeLabel", ["show"]); - }; - GraphSeriesModel2.prototype.getInitialData = function(option, ecModel) { - var edges = option.edges || option.links || []; - var nodes = option.data || option.nodes || []; - var self2 = this; - if (nodes && edges) { - initCurvenessList(this); - var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink); - each(graph.edges, function(edge) { - createEdgeMapForCurveness(edge.node1, edge.node2, this, edge.dataIndex); - }, this); - return graph.data; - } - function beforeLink(nodeData, edgeData) { - nodeData.wrapMethod("getItemModel", function(model) { - var categoriesModels = self2._categoriesModels; - var categoryIdx = model.getShallow("category"); - var categoryModel = categoriesModels[categoryIdx]; - if (categoryModel) { - categoryModel.parentModel = model.parentModel; - model.parentModel = categoryModel; - } - return model; - }); - var oldGetModel = Model_default.prototype.getModel; - function newGetModel(path, parentModel) { - var model = oldGetModel.call(this, path, parentModel); - model.resolveParentPath = resolveParentPath; - return model; - } - edgeData.wrapMethod("getItemModel", function(model) { - model.resolveParentPath = resolveParentPath; - model.getModel = newGetModel; - return model; - }); - function resolveParentPath(pathArr) { - if (pathArr && (pathArr[0] === "label" || pathArr[1] === "label")) { - var newPathArr = pathArr.slice(); - if (pathArr[0] === "label") { - newPathArr[0] = "edgeLabel"; - } else if (pathArr[1] === "label") { - newPathArr[1] = "edgeLabel"; - } - return newPathArr; - } - return pathArr; - } - } - }; - GraphSeriesModel2.prototype.getGraph = function() { - return this.getData().graph; - }; - GraphSeriesModel2.prototype.getEdgeData = function() { - return this.getGraph().edgeData; - }; - GraphSeriesModel2.prototype.getCategoriesData = function() { - return this._categoriesData; - }; - GraphSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - if (dataType === "edge") { - var nodeData = this.getData(); - var params = this.getDataParams(dataIndex, dataType); - var edge = nodeData.graph.getEdgeByIndex(dataIndex); - var sourceName = nodeData.getName(edge.node1.dataIndex); - var targetName = nodeData.getName(edge.node2.dataIndex); - var nameArr = []; - sourceName != null && nameArr.push(sourceName); - targetName != null && nameArr.push(targetName); - return createTooltipMarkup("nameValue", { - name: nameArr.join(" > "), - value: params.value, - noValue: params.value == null - }); - } - var nodeMarkup = defaultSeriesFormatTooltip({ - series: this, - dataIndex, - multipleSeries - }); - return nodeMarkup; - }; - GraphSeriesModel2.prototype._updateCategoriesData = function() { - var categories = map(this.option.categories || [], function(category) { - return category.value != null ? category : extend({ - value: 0 - }, category); - }); - var categoriesData = new SeriesData_default(["value"], this); - categoriesData.initData(categories); - this._categoriesData = categoriesData; - this._categoriesModels = categoriesData.mapArray(function(idx) { - return categoriesData.getItemModel(idx); - }); - }; - GraphSeriesModel2.prototype.setZoom = function(zoom) { - this.option.zoom = zoom; - }; - GraphSeriesModel2.prototype.setCenter = function(center3) { - this.option.center = center3; - }; - GraphSeriesModel2.prototype.isAnimationEnabled = function() { - return _super.prototype.isAnimationEnabled.call(this) && !(this.get("layout") === "force" && this.get(["force", "layoutAnimation"])); - }; - GraphSeriesModel2.type = "series.graph"; - GraphSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"]; - GraphSeriesModel2.defaultOption = { - // zlevel: 0, - z: 2, - coordinateSystem: "view", - // Default option for all coordinate systems - // xAxisIndex: 0, - // yAxisIndex: 0, - // polarIndex: 0, - // geoIndex: 0, - legendHoverLink: true, - layout: null, - // Configuration of circular layout - circular: { - rotateLabel: false - }, - // Configuration of force directed layout - force: { - initLayout: null, - // Node repulsion. Can be an array to represent range. - repulsion: [0, 50], - gravity: 0.1, - // Initial friction - friction: 0.6, - // Edge length. Can be an array to represent range. - edgeLength: 30, - layoutAnimation: true - }, - left: "center", - top: "center", - // right: null, - // bottom: null, - // width: '80%', - // height: '80%', - symbol: "circle", - symbolSize: 10, - edgeSymbol: ["none", "none"], - edgeSymbolSize: 10, - edgeLabel: { - position: "middle", - distance: 5 - }, - draggable: false, - roam: false, - // Default on center of graph - center: null, - zoom: 1, - // Symbol size scale ratio in roam - nodeScaleRatio: 0.6, - // cursor: null, - // categories: [], - // data: [] - // Or - // nodes: [] - // - // links: [] - // Or - // edges: [] - label: { - show: false, - formatter: "{b}" - }, - itemStyle: {}, - lineStyle: { - color: "#aaa", - width: 1, - opacity: 0.5 - }, - emphasis: { - scale: true, - label: { - show: true - } - }, - select: { - itemStyle: { - borderColor: "#212121" - } - } - }; - return GraphSeriesModel2; - }(Series_default) - ); - var GraphSeries_default = GraphSeriesModel; - - // node_modules/echarts/lib/chart/graph/install.js - var actionInfo = { - type: "graphRoam", - event: "graphRoam", - update: "none" - }; - function install14(registers) { - registers.registerChartView(GraphView_default); - registers.registerSeriesModel(GraphSeries_default); - registers.registerProcessor(categoryFilter); - registers.registerVisual(categoryVisual); - registers.registerVisual(graphEdgeVisual); - registers.registerLayout(graphSimpleLayout); - registers.registerLayout(registers.PRIORITY.VISUAL.POST_CHART_LAYOUT, graphCircularLayout); - registers.registerLayout(graphForceLayout); - registers.registerCoordinateSystem("graphView", { - dimensions: View_default.dimensions, - create: createViewCoordSys - }); - registers.registerAction({ - type: "focusNodeAdjacency", - event: "focusNodeAdjacency", - update: "series:focusNodeAdjacency" - }, noop); - registers.registerAction({ - type: "unfocusNodeAdjacency", - event: "unfocusNodeAdjacency", - update: "series:unfocusNodeAdjacency" - }, noop); - registers.registerAction(actionInfo, function(payload, ecModel, api) { - ecModel.eachComponent({ - mainType: "series", - query: payload - }, function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - var res = updateCenterAndZoom(coordSys, payload, void 0, api); - seriesModel.setCenter && seriesModel.setCenter(res.center); - seriesModel.setZoom && seriesModel.setZoom(res.zoom); - }); - }); - } - - // node_modules/echarts/lib/chart/gauge/PointerPath.js - var PointerShape = ( - /** @class */ - /* @__PURE__ */ function() { - function PointerShape2() { - this.angle = 0; - this.width = 10; - this.r = 10; - this.x = 0; - this.y = 0; - } - return PointerShape2; - }() - ); - var PointerPath = ( - /** @class */ - function(_super) { - __extends(PointerPath2, _super); - function PointerPath2(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "pointer"; - return _this; - } - PointerPath2.prototype.getDefaultShape = function() { - return new PointerShape(); - }; - PointerPath2.prototype.buildPath = function(ctx, shape) { - var mathCos6 = Math.cos; - var mathSin6 = Math.sin; - var r = shape.r; - var width = shape.width; - var angle = shape.angle; - var x = shape.x - mathCos6(angle) * width * (width >= r / 3 ? 1 : 2); - var y = shape.y - mathSin6(angle) * width * (width >= r / 3 ? 1 : 2); - angle = shape.angle - Math.PI / 2; - ctx.moveTo(x, y); - ctx.lineTo(shape.x + mathCos6(angle) * width, shape.y + mathSin6(angle) * width); - ctx.lineTo(shape.x + mathCos6(shape.angle) * r, shape.y + mathSin6(shape.angle) * r); - ctx.lineTo(shape.x - mathCos6(angle) * width, shape.y - mathSin6(angle) * width); - ctx.lineTo(x, y); - }; - return PointerPath2; - }(Path_default) - ); - var PointerPath_default = PointerPath; - - // node_modules/echarts/lib/chart/gauge/GaugeView.js - function parsePosition(seriesModel, api) { - var center3 = seriesModel.get("center"); - var width = api.getWidth(); - var height = api.getHeight(); - var size2 = Math.min(width, height); - var cx = parsePercent2(center3[0], api.getWidth()); - var cy = parsePercent2(center3[1], api.getHeight()); - var r = parsePercent2(seriesModel.get("radius"), size2 / 2); - return { - cx, - cy, - r - }; - } - function formatLabel(value, labelFormatter) { - var label = value == null ? "" : value + ""; - if (labelFormatter) { - if (isString(labelFormatter)) { - label = labelFormatter.replace("{value}", label); - } else if (isFunction(labelFormatter)) { - label = labelFormatter(value); - } - } - return label; - } - var GaugeView = ( - /** @class */ - function(_super) { - __extends(GaugeView2, _super); - function GaugeView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GaugeView2.type; - return _this; - } - GaugeView2.prototype.render = function(seriesModel, ecModel, api) { - this.group.removeAll(); - var colorList = seriesModel.get(["axisLine", "lineStyle", "color"]); - var posInfo = parsePosition(seriesModel, api); - this._renderMain(seriesModel, ecModel, api, colorList, posInfo); - this._data = seriesModel.getData(); - }; - GaugeView2.prototype.dispose = function() { - }; - GaugeView2.prototype._renderMain = function(seriesModel, ecModel, api, colorList, posInfo) { - var group = this.group; - var clockwise = seriesModel.get("clockwise"); - var startAngle = -seriesModel.get("startAngle") / 180 * Math.PI; - var endAngle = -seriesModel.get("endAngle") / 180 * Math.PI; - var axisLineModel = seriesModel.getModel("axisLine"); - var roundCap = axisLineModel.get("roundCap"); - var MainPath = roundCap ? sausage_default : Sector_default; - var showAxis = axisLineModel.get("show"); - var lineStyleModel = axisLineModel.getModel("lineStyle"); - var axisLineWidth = lineStyleModel.get("width"); - var angles = [startAngle, endAngle]; - normalizeArcAngles(angles, !clockwise); - startAngle = angles[0]; - endAngle = angles[1]; - var angleRangeSpan = endAngle - startAngle; - var prevEndAngle = startAngle; - var sectors = []; - for (var i = 0; showAxis && i < colorList.length; i++) { - var percent = Math.min(Math.max(colorList[i][0], 0), 1); - endAngle = startAngle + angleRangeSpan * percent; - var sector = new MainPath({ - shape: { - startAngle: prevEndAngle, - endAngle, - cx: posInfo.cx, - cy: posInfo.cy, - clockwise, - r0: posInfo.r - axisLineWidth, - r: posInfo.r - }, - silent: true - }); - sector.setStyle({ - fill: colorList[i][1] - }); - sector.setStyle(lineStyleModel.getLineStyle( - // Because we use sector to simulate arc - // so the properties for stroking are useless - ["color", "width"] - )); - sectors.push(sector); - prevEndAngle = endAngle; - } - sectors.reverse(); - each(sectors, function(sector2) { - return group.add(sector2); - }); - var getColor2 = function(percent2) { - if (percent2 <= 0) { - return colorList[0][1]; - } - var i2; - for (i2 = 0; i2 < colorList.length; i2++) { - if (colorList[i2][0] >= percent2 && (i2 === 0 ? 0 : colorList[i2 - 1][0]) < percent2) { - return colorList[i2][1]; - } - } - return colorList[i2 - 1][1]; - }; - this._renderTicks(seriesModel, ecModel, api, getColor2, posInfo, startAngle, endAngle, clockwise, axisLineWidth); - this._renderTitleAndDetail(seriesModel, ecModel, api, getColor2, posInfo); - this._renderAnchor(seriesModel, posInfo); - this._renderPointer(seriesModel, ecModel, api, getColor2, posInfo, startAngle, endAngle, clockwise, axisLineWidth); - }; - GaugeView2.prototype._renderTicks = function(seriesModel, ecModel, api, getColor2, posInfo, startAngle, endAngle, clockwise, axisLineWidth) { - var group = this.group; - var cx = posInfo.cx; - var cy = posInfo.cy; - var r = posInfo.r; - var minVal = +seriesModel.get("min"); - var maxVal = +seriesModel.get("max"); - var splitLineModel = seriesModel.getModel("splitLine"); - var tickModel = seriesModel.getModel("axisTick"); - var labelModel = seriesModel.getModel("axisLabel"); - var splitNumber = seriesModel.get("splitNumber"); - var subSplitNumber = tickModel.get("splitNumber"); - var splitLineLen = parsePercent2(splitLineModel.get("length"), r); - var tickLen = parsePercent2(tickModel.get("length"), r); - var angle = startAngle; - var step = (endAngle - startAngle) / splitNumber; - var subStep = step / subSplitNumber; - var splitLineStyle = splitLineModel.getModel("lineStyle").getLineStyle(); - var tickLineStyle = tickModel.getModel("lineStyle").getLineStyle(); - var splitLineDistance = splitLineModel.get("distance"); - var unitX; - var unitY; - for (var i = 0; i <= splitNumber; i++) { - unitX = Math.cos(angle); - unitY = Math.sin(angle); - if (splitLineModel.get("show")) { - var distance2 = splitLineDistance ? splitLineDistance + axisLineWidth : axisLineWidth; - var splitLine = new Line_default({ - shape: { - x1: unitX * (r - distance2) + cx, - y1: unitY * (r - distance2) + cy, - x2: unitX * (r - splitLineLen - distance2) + cx, - y2: unitY * (r - splitLineLen - distance2) + cy - }, - style: splitLineStyle, - silent: true - }); - if (splitLineStyle.stroke === "auto") { - splitLine.setStyle({ - stroke: getColor2(i / splitNumber) - }); - } - group.add(splitLine); - } - if (labelModel.get("show")) { - var distance2 = labelModel.get("distance") + splitLineDistance; - var label = formatLabel(round(i / splitNumber * (maxVal - minVal) + minVal), labelModel.get("formatter")); - var autoColor = getColor2(i / splitNumber); - var textStyleX = unitX * (r - splitLineLen - distance2) + cx; - var textStyleY = unitY * (r - splitLineLen - distance2) + cy; - var rotateType = labelModel.get("rotate"); - var rotate2 = 0; - if (rotateType === "radial") { - rotate2 = -angle + 2 * Math.PI; - if (rotate2 > Math.PI / 2) { - rotate2 += Math.PI; - } - } else if (rotateType === "tangential") { - rotate2 = -angle - Math.PI / 2; - } else if (isNumber(rotateType)) { - rotate2 = rotateType * Math.PI / 180; - } - if (rotate2 === 0) { - group.add(new Text_default({ - style: createTextStyle(labelModel, { - text: label, - x: textStyleX, - y: textStyleY, - verticalAlign: unitY < -0.8 ? "top" : unitY > 0.8 ? "bottom" : "middle", - align: unitX < -0.4 ? "left" : unitX > 0.4 ? "right" : "center" - }, { - inheritColor: autoColor - }), - silent: true - })); - } else { - group.add(new Text_default({ - style: createTextStyle(labelModel, { - text: label, - x: textStyleX, - y: textStyleY, - verticalAlign: "middle", - align: "center" - }, { - inheritColor: autoColor - }), - silent: true, - originX: textStyleX, - originY: textStyleY, - rotation: rotate2 - })); - } - } - if (tickModel.get("show") && i !== splitNumber) { - var distance2 = tickModel.get("distance"); - distance2 = distance2 ? distance2 + axisLineWidth : axisLineWidth; - for (var j = 0; j <= subSplitNumber; j++) { - unitX = Math.cos(angle); - unitY = Math.sin(angle); - var tickLine = new Line_default({ - shape: { - x1: unitX * (r - distance2) + cx, - y1: unitY * (r - distance2) + cy, - x2: unitX * (r - tickLen - distance2) + cx, - y2: unitY * (r - tickLen - distance2) + cy - }, - silent: true, - style: tickLineStyle - }); - if (tickLineStyle.stroke === "auto") { - tickLine.setStyle({ - stroke: getColor2((i + j / subSplitNumber) / splitNumber) - }); - } - group.add(tickLine); - angle += subStep; - } - angle -= subStep; - } else { - angle += step; - } - } - }; - GaugeView2.prototype._renderPointer = function(seriesModel, ecModel, api, getColor2, posInfo, startAngle, endAngle, clockwise, axisLineWidth) { - var group = this.group; - var oldData = this._data; - var oldProgressData = this._progressEls; - var progressList = []; - var showPointer2 = seriesModel.get(["pointer", "show"]); - var progressModel = seriesModel.getModel("progress"); - var showProgress = progressModel.get("show"); - var data = seriesModel.getData(); - var valueDim = data.mapDimension("value"); - var minVal = +seriesModel.get("min"); - var maxVal = +seriesModel.get("max"); - var valueExtent = [minVal, maxVal]; - var angleExtent = [startAngle, endAngle]; - function createPointer(idx, angle) { - var itemModel = data.getItemModel(idx); - var pointerModel = itemModel.getModel("pointer"); - var pointerWidth = parsePercent2(pointerModel.get("width"), posInfo.r); - var pointerLength = parsePercent2(pointerModel.get("length"), posInfo.r); - var pointerStr = seriesModel.get(["pointer", "icon"]); - var pointerOffset = pointerModel.get("offsetCenter"); - var pointerOffsetX = parsePercent2(pointerOffset[0], posInfo.r); - var pointerOffsetY = parsePercent2(pointerOffset[1], posInfo.r); - var pointerKeepAspect = pointerModel.get("keepAspect"); - var pointer; - if (pointerStr) { - pointer = createSymbol(pointerStr, pointerOffsetX - pointerWidth / 2, pointerOffsetY - pointerLength, pointerWidth, pointerLength, null, pointerKeepAspect); - } else { - pointer = new PointerPath_default({ - shape: { - angle: -Math.PI / 2, - width: pointerWidth, - r: pointerLength, - x: pointerOffsetX, - y: pointerOffsetY - } - }); - } - pointer.rotation = -(angle + Math.PI / 2); - pointer.x = posInfo.cx; - pointer.y = posInfo.cy; - return pointer; - } - function createProgress(idx, endAngle2) { - var roundCap = progressModel.get("roundCap"); - var ProgressPath = roundCap ? sausage_default : Sector_default; - var isOverlap = progressModel.get("overlap"); - var progressWidth = isOverlap ? progressModel.get("width") : axisLineWidth / data.count(); - var r0 = isOverlap ? posInfo.r - progressWidth : posInfo.r - (idx + 1) * progressWidth; - var r = isOverlap ? posInfo.r : posInfo.r - idx * progressWidth; - var progress = new ProgressPath({ - shape: { - startAngle, - endAngle: endAngle2, - cx: posInfo.cx, - cy: posInfo.cy, - clockwise, - r0, - r - } - }); - isOverlap && (progress.z2 = linearMap(data.get(valueDim, idx), [minVal, maxVal], [100, 0], true)); - return progress; - } - if (showProgress || showPointer2) { - data.diff(oldData).add(function(idx) { - var val = data.get(valueDim, idx); - if (showPointer2) { - var pointer = createPointer(idx, startAngle); - initProps(pointer, { - rotation: -((isNaN(+val) ? angleExtent[0] : linearMap(val, valueExtent, angleExtent, true)) + Math.PI / 2) - }, seriesModel); - group.add(pointer); - data.setItemGraphicEl(idx, pointer); - } - if (showProgress) { - var progress = createProgress(idx, startAngle); - var isClip = progressModel.get("clip"); - initProps(progress, { - shape: { - endAngle: linearMap(val, valueExtent, angleExtent, isClip) - } - }, seriesModel); - group.add(progress); - setCommonECData(seriesModel.seriesIndex, data.dataType, idx, progress); - progressList[idx] = progress; - } - }).update(function(newIdx, oldIdx) { - var val = data.get(valueDim, newIdx); - if (showPointer2) { - var previousPointer = oldData.getItemGraphicEl(oldIdx); - var previousRotate = previousPointer ? previousPointer.rotation : startAngle; - var pointer = createPointer(newIdx, previousRotate); - pointer.rotation = previousRotate; - updateProps(pointer, { - rotation: -((isNaN(+val) ? angleExtent[0] : linearMap(val, valueExtent, angleExtent, true)) + Math.PI / 2) - }, seriesModel); - group.add(pointer); - data.setItemGraphicEl(newIdx, pointer); - } - if (showProgress) { - var previousProgress = oldProgressData[oldIdx]; - var previousEndAngle = previousProgress ? previousProgress.shape.endAngle : startAngle; - var progress = createProgress(newIdx, previousEndAngle); - var isClip = progressModel.get("clip"); - updateProps(progress, { - shape: { - endAngle: linearMap(val, valueExtent, angleExtent, isClip) - } - }, seriesModel); - group.add(progress); - setCommonECData(seriesModel.seriesIndex, data.dataType, newIdx, progress); - progressList[newIdx] = progress; - } - }).execute(); - data.each(function(idx) { - var itemModel = data.getItemModel(idx); - var emphasisModel = itemModel.getModel("emphasis"); - var focus = emphasisModel.get("focus"); - var blurScope = emphasisModel.get("blurScope"); - var emphasisDisabled = emphasisModel.get("disabled"); - if (showPointer2) { - var pointer = data.getItemGraphicEl(idx); - var symbolStyle = data.getItemVisual(idx, "style"); - var visualColor = symbolStyle.fill; - if (pointer instanceof Image_default) { - var pathStyle = pointer.style; - pointer.useStyle(extend({ - image: pathStyle.image, - x: pathStyle.x, - y: pathStyle.y, - width: pathStyle.width, - height: pathStyle.height - }, symbolStyle)); - } else { - pointer.useStyle(symbolStyle); - pointer.type !== "pointer" && pointer.setColor(visualColor); - } - pointer.setStyle(itemModel.getModel(["pointer", "itemStyle"]).getItemStyle()); - if (pointer.style.fill === "auto") { - pointer.setStyle("fill", getColor2(linearMap(data.get(valueDim, idx), valueExtent, [0, 1], true))); - } - pointer.z2EmphasisLift = 0; - setStatesStylesFromModel(pointer, itemModel); - toggleHoverEmphasis(pointer, focus, blurScope, emphasisDisabled); - } - if (showProgress) { - var progress = progressList[idx]; - progress.useStyle(data.getItemVisual(idx, "style")); - progress.setStyle(itemModel.getModel(["progress", "itemStyle"]).getItemStyle()); - progress.z2EmphasisLift = 0; - setStatesStylesFromModel(progress, itemModel); - toggleHoverEmphasis(progress, focus, blurScope, emphasisDisabled); - } - }); - this._progressEls = progressList; - } - }; - GaugeView2.prototype._renderAnchor = function(seriesModel, posInfo) { - var anchorModel = seriesModel.getModel("anchor"); - var showAnchor = anchorModel.get("show"); - if (showAnchor) { - var anchorSize = anchorModel.get("size"); - var anchorType = anchorModel.get("icon"); - var offsetCenter = anchorModel.get("offsetCenter"); - var anchorKeepAspect = anchorModel.get("keepAspect"); - var anchor = createSymbol(anchorType, posInfo.cx - anchorSize / 2 + parsePercent2(offsetCenter[0], posInfo.r), posInfo.cy - anchorSize / 2 + parsePercent2(offsetCenter[1], posInfo.r), anchorSize, anchorSize, null, anchorKeepAspect); - anchor.z2 = anchorModel.get("showAbove") ? 1 : 0; - anchor.setStyle(anchorModel.getModel("itemStyle").getItemStyle()); - this.group.add(anchor); - } - }; - GaugeView2.prototype._renderTitleAndDetail = function(seriesModel, ecModel, api, getColor2, posInfo) { - var _this = this; - var data = seriesModel.getData(); - var valueDim = data.mapDimension("value"); - var minVal = +seriesModel.get("min"); - var maxVal = +seriesModel.get("max"); - var contentGroup = new Group_default(); - var newTitleEls = []; - var newDetailEls = []; - var hasAnimation = seriesModel.isAnimationEnabled(); - var showPointerAbove = seriesModel.get(["pointer", "showAbove"]); - data.diff(this._data).add(function(idx) { - newTitleEls[idx] = new Text_default({ - silent: true - }); - newDetailEls[idx] = new Text_default({ - silent: true - }); - }).update(function(idx, oldIdx) { - newTitleEls[idx] = _this._titleEls[oldIdx]; - newDetailEls[idx] = _this._detailEls[oldIdx]; - }).execute(); - data.each(function(idx) { - var itemModel = data.getItemModel(idx); - var value = data.get(valueDim, idx); - var itemGroup = new Group_default(); - var autoColor = getColor2(linearMap(value, [minVal, maxVal], [0, 1], true)); - var itemTitleModel = itemModel.getModel("title"); - if (itemTitleModel.get("show")) { - var titleOffsetCenter = itemTitleModel.get("offsetCenter"); - var titleX = posInfo.cx + parsePercent2(titleOffsetCenter[0], posInfo.r); - var titleY = posInfo.cy + parsePercent2(titleOffsetCenter[1], posInfo.r); - var labelEl = newTitleEls[idx]; - labelEl.attr({ - z2: showPointerAbove ? 0 : 2, - style: createTextStyle(itemTitleModel, { - x: titleX, - y: titleY, - text: data.getName(idx), - align: "center", - verticalAlign: "middle" - }, { - inheritColor: autoColor - }) - }); - itemGroup.add(labelEl); - } - var itemDetailModel = itemModel.getModel("detail"); - if (itemDetailModel.get("show")) { - var detailOffsetCenter = itemDetailModel.get("offsetCenter"); - var detailX = posInfo.cx + parsePercent2(detailOffsetCenter[0], posInfo.r); - var detailY = posInfo.cy + parsePercent2(detailOffsetCenter[1], posInfo.r); - var width = parsePercent2(itemDetailModel.get("width"), posInfo.r); - var height = parsePercent2(itemDetailModel.get("height"), posInfo.r); - var detailColor = seriesModel.get(["progress", "show"]) ? data.getItemVisual(idx, "style").fill : autoColor; - var labelEl = newDetailEls[idx]; - var formatter_1 = itemDetailModel.get("formatter"); - labelEl.attr({ - z2: showPointerAbove ? 0 : 2, - style: createTextStyle(itemDetailModel, { - x: detailX, - y: detailY, - text: formatLabel(value, formatter_1), - width: isNaN(width) ? null : width, - height: isNaN(height) ? null : height, - align: "center", - verticalAlign: "middle" - }, { - inheritColor: detailColor - }) - }); - setLabelValueAnimation(labelEl, { - normal: itemDetailModel - }, value, function(value2) { - return formatLabel(value2, formatter_1); - }); - hasAnimation && animateLabelValue(labelEl, idx, data, seriesModel, { - getFormattedLabel: function(labelDataIndex, status, dataType, labelDimIndex, fmt, extendParams) { - return formatLabel(extendParams ? extendParams.interpolatedValue : value, formatter_1); - } - }); - itemGroup.add(labelEl); - } - contentGroup.add(itemGroup); - }); - this.group.add(contentGroup); - this._titleEls = newTitleEls; - this._detailEls = newDetailEls; - }; - GaugeView2.type = "gauge"; - return GaugeView2; - }(Chart_default) - ); - var GaugeView_default = GaugeView; - - // node_modules/echarts/lib/chart/gauge/GaugeSeries.js - var GaugeSeriesModel = ( - /** @class */ - function(_super) { - __extends(GaugeSeriesModel2, _super); - function GaugeSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GaugeSeriesModel2.type; - _this.visualStyleAccessPath = "itemStyle"; - return _this; - } - GaugeSeriesModel2.prototype.getInitialData = function(option, ecModel) { - return createSeriesDataSimply(this, ["value"]); - }; - GaugeSeriesModel2.type = "series.gauge"; - GaugeSeriesModel2.defaultOption = { - // zlevel: 0, - z: 2, - colorBy: "data", - // 默认全局居中 - center: ["50%", "50%"], - legendHoverLink: true, - radius: "75%", - startAngle: 225, - endAngle: -45, - clockwise: true, - // 最小值 - min: 0, - // 最大值 - max: 100, - // 分割段数,默认为10 - splitNumber: 10, - // 坐标轴线 - axisLine: { - // 默认显示,属性show控制显示与否 - show: true, - roundCap: false, - lineStyle: { - color: [[1, "#E6EBF8"]], - width: 10 - } - }, - // 坐标轴线 - progress: { - // 默认显示,属性show控制显示与否 - show: false, - overlap: true, - width: 10, - roundCap: false, - clip: true - }, - // 分隔线 - splitLine: { - // 默认显示,属性show控制显示与否 - show: true, - // 属性length控制线长 - length: 10, - distance: 10, - // 属性lineStyle(详见lineStyle)控制线条样式 - lineStyle: { - color: "#63677A", - width: 3, - type: "solid" - } - }, - // 坐标轴小标记 - axisTick: { - // 属性show控制显示与否,默认不显示 - show: true, - // 每份split细分多少段 - splitNumber: 5, - // 属性length控制线长 - length: 6, - distance: 10, - // 属性lineStyle控制线条样式 - lineStyle: { - color: "#63677A", - width: 1, - type: "solid" - } - }, - axisLabel: { - show: true, - distance: 15, - // formatter: null, - color: "#464646", - fontSize: 12, - rotate: 0 - }, - pointer: { - icon: null, - offsetCenter: [0, 0], - show: true, - showAbove: true, - length: "60%", - width: 6, - keepAspect: false - }, - anchor: { - show: false, - showAbove: false, - size: 6, - icon: "circle", - offsetCenter: [0, 0], - keepAspect: false, - itemStyle: { - color: "#fff", - borderWidth: 0, - borderColor: "#5470c6" - } - }, - title: { - show: true, - // x, y,单位px - offsetCenter: [0, "20%"], - // 其余属性默认使用全局文本样式,详见TEXTSTYLE - color: "#464646", - fontSize: 16, - valueAnimation: false - }, - detail: { - show: true, - backgroundColor: "rgba(0,0,0,0)", - borderWidth: 0, - borderColor: "#ccc", - width: 100, - height: null, - padding: [5, 10], - // x, y,单位px - offsetCenter: [0, "40%"], - // formatter: null, - // 其余属性默认使用全局文本样式,详见TEXTSTYLE - color: "#464646", - fontSize: 30, - fontWeight: "bold", - lineHeight: 30, - valueAnimation: false - } - }; - return GaugeSeriesModel2; - }(Series_default) - ); - var GaugeSeries_default = GaugeSeriesModel; - - // node_modules/echarts/lib/chart/gauge/install.js - function install15(registers) { - registers.registerChartView(GaugeView_default); - registers.registerSeriesModel(GaugeSeries_default); - } - - // node_modules/echarts/lib/chart/funnel/FunnelView.js - var opacityAccessPath = ["itemStyle", "opacity"]; - var FunnelPiece = ( - /** @class */ - function(_super) { - __extends(FunnelPiece2, _super); - function FunnelPiece2(data, idx) { - var _this = _super.call(this) || this; - var polygon = _this; - var labelLine = new Polyline_default(); - var text = new Text_default(); - polygon.setTextContent(text); - _this.setTextGuideLine(labelLine); - _this.updateData(data, idx, true); - return _this; - } - FunnelPiece2.prototype.updateData = function(data, idx, firstCreate) { - var polygon = this; - var seriesModel = data.hostModel; - var itemModel = data.getItemModel(idx); - var layout5 = data.getItemLayout(idx); - var emphasisModel = itemModel.getModel("emphasis"); - var opacity = itemModel.get(opacityAccessPath); - opacity = opacity == null ? 1 : opacity; - if (!firstCreate) { - saveOldStyle(polygon); - } - polygon.useStyle(data.getItemVisual(idx, "style")); - polygon.style.lineJoin = "round"; - if (firstCreate) { - polygon.setShape({ - points: layout5.points - }); - polygon.style.opacity = 0; - initProps(polygon, { - style: { - opacity - } - }, seriesModel, idx); - } else { - updateProps(polygon, { - style: { - opacity - }, - shape: { - points: layout5.points - } - }, seriesModel, idx); - } - setStatesStylesFromModel(polygon, itemModel); - this._updateLabel(data, idx); - toggleHoverEmphasis(this, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - }; - FunnelPiece2.prototype._updateLabel = function(data, idx) { - var polygon = this; - var labelLine = this.getTextGuideLine(); - var labelText = polygon.getTextContent(); - var seriesModel = data.hostModel; - var itemModel = data.getItemModel(idx); - var layout5 = data.getItemLayout(idx); - var labelLayout2 = layout5.label; - var style = data.getItemVisual(idx, "style"); - var visualColor = style.fill; - setLabelStyle( - // position will not be used in setLabelStyle - labelText, - getLabelStatesModels(itemModel), - { - labelFetcher: data.hostModel, - labelDataIndex: idx, - defaultOpacity: style.opacity, - defaultText: data.getName(idx) - }, - { - normal: { - align: labelLayout2.textAlign, - verticalAlign: labelLayout2.verticalAlign - } - } - ); - polygon.setTextConfig({ - local: true, - inside: !!labelLayout2.inside, - insideStroke: visualColor, - // insideFill: 'auto', - outsideFill: visualColor - }); - var linePoints = labelLayout2.linePoints; - labelLine.setShape({ - points: linePoints - }); - polygon.textGuideLineConfig = { - anchor: linePoints ? new Point_default(linePoints[0][0], linePoints[0][1]) : null - }; - updateProps(labelText, { - style: { - x: labelLayout2.x, - y: labelLayout2.y - } - }, seriesModel, idx); - labelText.attr({ - rotation: labelLayout2.rotation, - originX: labelLayout2.x, - originY: labelLayout2.y, - z2: 10 - }); - setLabelLineStyle(polygon, getLabelLineStatesModels(itemModel), { - // Default use item visual color - stroke: visualColor - }); - }; - return FunnelPiece2; - }(Polygon_default) - ); - var FunnelView = ( - /** @class */ - function(_super) { - __extends(FunnelView2, _super); - function FunnelView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = FunnelView2.type; - _this.ignoreLabelLineUpdate = true; - return _this; - } - FunnelView2.prototype.render = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var oldData = this._data; - var group = this.group; - data.diff(oldData).add(function(idx) { - var funnelPiece = new FunnelPiece(data, idx); - data.setItemGraphicEl(idx, funnelPiece); - group.add(funnelPiece); - }).update(function(newIdx, oldIdx) { - var piece = oldData.getItemGraphicEl(oldIdx); - piece.updateData(data, newIdx); - group.add(piece); - data.setItemGraphicEl(newIdx, piece); - }).remove(function(idx) { - var piece = oldData.getItemGraphicEl(idx); - removeElementWithFadeOut(piece, seriesModel, idx); - }).execute(); - this._data = data; - }; - FunnelView2.prototype.remove = function() { - this.group.removeAll(); - this._data = null; - }; - FunnelView2.prototype.dispose = function() { - }; - FunnelView2.type = "funnel"; - return FunnelView2; - }(Chart_default) - ); - var FunnelView_default = FunnelView; - - // node_modules/echarts/lib/chart/funnel/FunnelSeries.js - var FunnelSeriesModel = ( - /** @class */ - function(_super) { - __extends(FunnelSeriesModel2, _super); - function FunnelSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = FunnelSeriesModel2.type; - return _this; - } - FunnelSeriesModel2.prototype.init = function(option) { - _super.prototype.init.apply(this, arguments); - this.legendVisualProvider = new LegendVisualProvider_default(bind(this.getData, this), bind(this.getRawData, this)); - this._defaultLabelLine(option); - }; - FunnelSeriesModel2.prototype.getInitialData = function(option, ecModel) { - return createSeriesDataSimply(this, { - coordDimensions: ["value"], - encodeDefaulter: curry(makeSeriesEncodeForNameBased, this) - }); - }; - FunnelSeriesModel2.prototype._defaultLabelLine = function(option) { - defaultEmphasis(option, "labelLine", ["show"]); - var labelLineNormalOpt = option.labelLine; - var labelLineEmphasisOpt = option.emphasis.labelLine; - labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show; - labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show; - }; - FunnelSeriesModel2.prototype.getDataParams = function(dataIndex) { - var data = this.getData(); - var params = _super.prototype.getDataParams.call(this, dataIndex); - var valueDim = data.mapDimension("value"); - var sum2 = data.getSum(valueDim); - params.percent = !sum2 ? 0 : +(data.get(valueDim, dataIndex) / sum2 * 100).toFixed(2); - params.$vars.push("percent"); - return params; - }; - FunnelSeriesModel2.type = "series.funnel"; - FunnelSeriesModel2.defaultOption = { - // zlevel: 0, // 一级层叠 - z: 2, - legendHoverLink: true, - colorBy: "data", - left: 80, - top: 60, - right: 80, - bottom: 60, - // width: {totalWidth} - left - right, - // height: {totalHeight} - top - bottom, - // 默认取数据最小最大值 - // min: 0, - // max: 100, - minSize: "0%", - maxSize: "100%", - sort: "descending", - orient: "vertical", - gap: 0, - funnelAlign: "center", - label: { - show: true, - position: "outer" - // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 - }, - labelLine: { - show: true, - length: 20, - lineStyle: { - // color: 各异, - width: 1 - } - }, - itemStyle: { - // color: 各异, - borderColor: "#fff", - borderWidth: 1 - }, - emphasis: { - label: { - show: true - } - }, - select: { - itemStyle: { - borderColor: "#212121" - } - } - }; - return FunnelSeriesModel2; - }(Series_default) - ); - var FunnelSeries_default = FunnelSeriesModel; - - // node_modules/echarts/lib/chart/funnel/funnelLayout.js - function getViewRect4(seriesModel, api) { - return getLayoutRect(seriesModel.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }); - } - function getSortedIndices(data, sort4) { - var valueDim = data.mapDimension("value"); - var valueArr = data.mapArray(valueDim, function(val) { - return val; - }); - var indices = []; - var isAscending = sort4 === "ascending"; - for (var i = 0, len2 = data.count(); i < len2; i++) { - indices[i] = i; - } - if (isFunction(sort4)) { - indices.sort(sort4); - } else if (sort4 !== "none") { - indices.sort(function(a, b) { - return isAscending ? valueArr[a] - valueArr[b] : valueArr[b] - valueArr[a]; - }); - } - return indices; - } - function labelLayout(data) { - var seriesModel = data.hostModel; - var orient = seriesModel.get("orient"); - data.each(function(idx) { - var itemModel = data.getItemModel(idx); - var labelModel = itemModel.getModel("label"); - var labelPosition = labelModel.get("position"); - var labelLineModel = itemModel.getModel("labelLine"); - var layout5 = data.getItemLayout(idx); - var points4 = layout5.points; - var isLabelInside = labelPosition === "inner" || labelPosition === "inside" || labelPosition === "center" || labelPosition === "insideLeft" || labelPosition === "insideRight"; - var textAlign; - var textX; - var textY; - var linePoints; - if (isLabelInside) { - if (labelPosition === "insideLeft") { - textX = (points4[0][0] + points4[3][0]) / 2 + 5; - textY = (points4[0][1] + points4[3][1]) / 2; - textAlign = "left"; - } else if (labelPosition === "insideRight") { - textX = (points4[1][0] + points4[2][0]) / 2 - 5; - textY = (points4[1][1] + points4[2][1]) / 2; - textAlign = "right"; - } else { - textX = (points4[0][0] + points4[1][0] + points4[2][0] + points4[3][0]) / 4; - textY = (points4[0][1] + points4[1][1] + points4[2][1] + points4[3][1]) / 4; - textAlign = "center"; - } - linePoints = [[textX, textY], [textX, textY]]; - } else { - var x1 = void 0; - var y1 = void 0; - var x2 = void 0; - var y2 = void 0; - var labelLineLen = labelLineModel.get("length"); - if (true) { - if (orient === "vertical" && ["top", "bottom"].indexOf(labelPosition) > -1) { - labelPosition = "left"; - console.warn("Position error: Funnel chart on vertical orient dose not support top and bottom."); - } - if (orient === "horizontal" && ["left", "right"].indexOf(labelPosition) > -1) { - labelPosition = "bottom"; - console.warn("Position error: Funnel chart on horizontal orient dose not support left and right."); - } - } - if (labelPosition === "left") { - x1 = (points4[3][0] + points4[0][0]) / 2; - y1 = (points4[3][1] + points4[0][1]) / 2; - x2 = x1 - labelLineLen; - textX = x2 - 5; - textAlign = "right"; - } else if (labelPosition === "right") { - x1 = (points4[1][0] + points4[2][0]) / 2; - y1 = (points4[1][1] + points4[2][1]) / 2; - x2 = x1 + labelLineLen; - textX = x2 + 5; - textAlign = "left"; - } else if (labelPosition === "top") { - x1 = (points4[3][0] + points4[0][0]) / 2; - y1 = (points4[3][1] + points4[0][1]) / 2; - y2 = y1 - labelLineLen; - textY = y2 - 5; - textAlign = "center"; - } else if (labelPosition === "bottom") { - x1 = (points4[1][0] + points4[2][0]) / 2; - y1 = (points4[1][1] + points4[2][1]) / 2; - y2 = y1 + labelLineLen; - textY = y2 + 5; - textAlign = "center"; - } else if (labelPosition === "rightTop") { - x1 = orient === "horizontal" ? points4[3][0] : points4[1][0]; - y1 = orient === "horizontal" ? points4[3][1] : points4[1][1]; - if (orient === "horizontal") { - y2 = y1 - labelLineLen; - textY = y2 - 5; - textAlign = "center"; - } else { - x2 = x1 + labelLineLen; - textX = x2 + 5; - textAlign = "top"; - } - } else if (labelPosition === "rightBottom") { - x1 = points4[2][0]; - y1 = points4[2][1]; - if (orient === "horizontal") { - y2 = y1 + labelLineLen; - textY = y2 + 5; - textAlign = "center"; - } else { - x2 = x1 + labelLineLen; - textX = x2 + 5; - textAlign = "bottom"; - } - } else if (labelPosition === "leftTop") { - x1 = points4[0][0]; - y1 = orient === "horizontal" ? points4[0][1] : points4[1][1]; - if (orient === "horizontal") { - y2 = y1 - labelLineLen; - textY = y2 - 5; - textAlign = "center"; - } else { - x2 = x1 - labelLineLen; - textX = x2 - 5; - textAlign = "right"; - } - } else if (labelPosition === "leftBottom") { - x1 = orient === "horizontal" ? points4[1][0] : points4[3][0]; - y1 = orient === "horizontal" ? points4[1][1] : points4[2][1]; - if (orient === "horizontal") { - y2 = y1 + labelLineLen; - textY = y2 + 5; - textAlign = "center"; - } else { - x2 = x1 - labelLineLen; - textX = x2 - 5; - textAlign = "right"; - } - } else { - x1 = (points4[1][0] + points4[2][0]) / 2; - y1 = (points4[1][1] + points4[2][1]) / 2; - if (orient === "horizontal") { - y2 = y1 + labelLineLen; - textY = y2 + 5; - textAlign = "center"; - } else { - x2 = x1 + labelLineLen; - textX = x2 + 5; - textAlign = "left"; - } - } - if (orient === "horizontal") { - x2 = x1; - textX = x2; - } else { - y2 = y1; - textY = y2; - } - linePoints = [[x1, y1], [x2, y2]]; - } - layout5.label = { - linePoints, - x: textX, - y: textY, - verticalAlign: "middle", - textAlign, - inside: isLabelInside - }; - }); - } - function funnelLayout(ecModel, api) { - ecModel.eachSeriesByType("funnel", function(seriesModel) { - var data = seriesModel.getData(); - var valueDim = data.mapDimension("value"); - var sort4 = seriesModel.get("sort"); - var viewRect2 = getViewRect4(seriesModel, api); - var orient = seriesModel.get("orient"); - var viewWidth = viewRect2.width; - var viewHeight = viewRect2.height; - var indices = getSortedIndices(data, sort4); - var x = viewRect2.x; - var y = viewRect2.y; - var sizeExtent = orient === "horizontal" ? [parsePercent2(seriesModel.get("minSize"), viewHeight), parsePercent2(seriesModel.get("maxSize"), viewHeight)] : [parsePercent2(seriesModel.get("minSize"), viewWidth), parsePercent2(seriesModel.get("maxSize"), viewWidth)]; - var dataExtent = data.getDataExtent(valueDim); - var min4 = seriesModel.get("min"); - var max4 = seriesModel.get("max"); - if (min4 == null) { - min4 = Math.min(dataExtent[0], 0); - } - if (max4 == null) { - max4 = dataExtent[1]; - } - var funnelAlign = seriesModel.get("funnelAlign"); - var gap = seriesModel.get("gap"); - var viewSize = orient === "horizontal" ? viewWidth : viewHeight; - var itemSize = (viewSize - gap * (data.count() - 1)) / data.count(); - var getLinePoints = function(idx2, offset3) { - if (orient === "horizontal") { - var val_1 = data.get(valueDim, idx2) || 0; - var itemHeight = linearMap(val_1, [min4, max4], sizeExtent, true); - var y0 = void 0; - switch (funnelAlign) { - case "top": - y0 = y; - break; - case "center": - y0 = y + (viewHeight - itemHeight) / 2; - break; - case "bottom": - y0 = y + (viewHeight - itemHeight); - break; - } - return [[offset3, y0], [offset3, y0 + itemHeight]]; - } - var val = data.get(valueDim, idx2) || 0; - var itemWidth = linearMap(val, [min4, max4], sizeExtent, true); - var x0; - switch (funnelAlign) { - case "left": - x0 = x; - break; - case "center": - x0 = x + (viewWidth - itemWidth) / 2; - break; - case "right": - x0 = x + viewWidth - itemWidth; - break; - } - return [[x0, offset3], [x0 + itemWidth, offset3]]; - }; - if (sort4 === "ascending") { - itemSize = -itemSize; - gap = -gap; - if (orient === "horizontal") { - x += viewWidth; - } else { - y += viewHeight; - } - indices = indices.reverse(); - } - for (var i = 0; i < indices.length; i++) { - var idx = indices[i]; - var nextIdx = indices[i + 1]; - var itemModel = data.getItemModel(idx); - if (orient === "horizontal") { - var width = itemModel.get(["itemStyle", "width"]); - if (width == null) { - width = itemSize; - } else { - width = parsePercent2(width, viewWidth); - if (sort4 === "ascending") { - width = -width; - } - } - var start3 = getLinePoints(idx, x); - var end2 = getLinePoints(nextIdx, x + width); - x += width + gap; - data.setItemLayout(idx, { - points: start3.concat(end2.slice().reverse()) - }); - } else { - var height = itemModel.get(["itemStyle", "height"]); - if (height == null) { - height = itemSize; - } else { - height = parsePercent2(height, viewHeight); - if (sort4 === "ascending") { - height = -height; - } - } - var start3 = getLinePoints(idx, y); - var end2 = getLinePoints(nextIdx, y + height); - y += height + gap; - data.setItemLayout(idx, { - points: start3.concat(end2.slice().reverse()) - }); - } - } - labelLayout(data); - }); - } - - // node_modules/echarts/lib/chart/funnel/install.js - function install16(registers) { - registers.registerChartView(FunnelView_default); - registers.registerSeriesModel(FunnelSeries_default); - registers.registerLayout(funnelLayout); - registers.registerProcessor(dataFilter("funnel")); - } - - // node_modules/echarts/lib/chart/parallel/ParallelView.js - var DEFAULT_SMOOTH = 0.3; - var ParallelView = ( - /** @class */ - function(_super) { - __extends(ParallelView3, _super); - function ParallelView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ParallelView3.type; - _this._dataGroup = new Group_default(); - _this._initialized = false; - return _this; - } - ParallelView3.prototype.init = function() { - this.group.add(this._dataGroup); - }; - ParallelView3.prototype.render = function(seriesModel, ecModel, api, payload) { - this._progressiveEls = null; - var dataGroup = this._dataGroup; - var data = seriesModel.getData(); - var oldData = this._data; - var coordSys = seriesModel.coordinateSystem; - var dimensions = coordSys.dimensions; - var seriesScope = makeSeriesScope3(seriesModel); - data.diff(oldData).add(add3).update(update).remove(remove).execute(); - function add3(newDataIndex) { - var line = addEl(data, dataGroup, newDataIndex, dimensions, coordSys); - updateElCommon(line, data, newDataIndex, seriesScope); - } - function update(newDataIndex, oldDataIndex) { - var line = oldData.getItemGraphicEl(oldDataIndex); - var points4 = createLinePoints(data, newDataIndex, dimensions, coordSys); - data.setItemGraphicEl(newDataIndex, line); - updateProps(line, { - shape: { - points: points4 - } - }, seriesModel, newDataIndex); - saveOldStyle(line); - updateElCommon(line, data, newDataIndex, seriesScope); - } - function remove(oldDataIndex) { - var line = oldData.getItemGraphicEl(oldDataIndex); - dataGroup.remove(line); - } - if (!this._initialized) { - this._initialized = true; - var clipPath = createGridClipShape(coordSys, seriesModel, function() { - setTimeout(function() { - dataGroup.removeClipPath(); - }); - }); - dataGroup.setClipPath(clipPath); - } - this._data = data; - }; - ParallelView3.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) { - this._initialized = true; - this._data = null; - this._dataGroup.removeAll(); - }; - ParallelView3.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) { - var data = seriesModel.getData(); - var coordSys = seriesModel.coordinateSystem; - var dimensions = coordSys.dimensions; - var seriesScope = makeSeriesScope3(seriesModel); - var progressiveEls = this._progressiveEls = []; - for (var dataIndex = taskParams.start; dataIndex < taskParams.end; dataIndex++) { - var line = addEl(data, this._dataGroup, dataIndex, dimensions, coordSys); - line.incremental = true; - updateElCommon(line, data, dataIndex, seriesScope); - progressiveEls.push(line); - } - }; - ParallelView3.prototype.remove = function() { - this._dataGroup && this._dataGroup.removeAll(); - this._data = null; - }; - ParallelView3.type = "parallel"; - return ParallelView3; - }(Chart_default) - ); - function createGridClipShape(coordSys, seriesModel, cb) { - var parallelModel = coordSys.model; - var rect = coordSys.getRect(); - var rectEl = new Rect_default({ - shape: { - x: rect.x, - y: rect.y, - width: rect.width, - height: rect.height - } - }); - var dim = parallelModel.get("layout") === "horizontal" ? "width" : "height"; - rectEl.setShape(dim, 0); - initProps(rectEl, { - shape: { - width: rect.width, - height: rect.height - } - }, seriesModel, cb); - return rectEl; - } - function createLinePoints(data, dataIndex, dimensions, coordSys) { - var points4 = []; - for (var i = 0; i < dimensions.length; i++) { - var dimName = dimensions[i]; - var value = data.get(data.mapDimension(dimName), dataIndex); - if (!isEmptyValue(value, coordSys.getAxis(dimName).type)) { - points4.push(coordSys.dataToPoint(value, dimName)); - } - } - return points4; - } - function addEl(data, dataGroup, dataIndex, dimensions, coordSys) { - var points4 = createLinePoints(data, dataIndex, dimensions, coordSys); - var line = new Polyline_default({ - shape: { - points: points4 - }, - // silent: true, - z2: 10 - }); - dataGroup.add(line); - data.setItemGraphicEl(dataIndex, line); - return line; - } - function makeSeriesScope3(seriesModel) { - var smooth = seriesModel.get("smooth", true); - smooth === true && (smooth = DEFAULT_SMOOTH); - smooth = numericToNumber(smooth); - eqNaN(smooth) && (smooth = 0); - return { - smooth - }; - } - function updateElCommon(el, data, dataIndex, seriesScope) { - el.useStyle(data.getItemVisual(dataIndex, "style")); - el.style.fill = null; - el.setShape("smooth", seriesScope.smooth); - var itemModel = data.getItemModel(dataIndex); - var emphasisModel = itemModel.getModel("emphasis"); - setStatesStylesFromModel(el, itemModel, "lineStyle"); - toggleHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - } - function isEmptyValue(val, axisType) { - return axisType === "category" ? val == null : val == null || isNaN(val); - } - var ParallelView_default = ParallelView; - - // node_modules/echarts/lib/chart/parallel/ParallelSeries.js - var ParallelSeriesModel = ( - /** @class */ - function(_super) { - __extends(ParallelSeriesModel2, _super); - function ParallelSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ParallelSeriesModel2.type; - _this.visualStyleAccessPath = "lineStyle"; - _this.visualDrawType = "stroke"; - return _this; - } - ParallelSeriesModel2.prototype.getInitialData = function(option, ecModel) { - return createSeriesData_default(null, this, { - useEncodeDefaulter: bind(makeDefaultEncode, null, this) - }); - }; - ParallelSeriesModel2.prototype.getRawIndicesByActiveState = function(activeState) { - var coordSys = this.coordinateSystem; - var data = this.getData(); - var indices = []; - coordSys.eachActiveState(data, function(theActiveState, dataIndex) { - if (activeState === theActiveState) { - indices.push(data.getRawIndex(dataIndex)); - } - }); - return indices; - }; - ParallelSeriesModel2.type = "series.parallel"; - ParallelSeriesModel2.dependencies = ["parallel"]; - ParallelSeriesModel2.defaultOption = { - // zlevel: 0, - z: 2, - coordinateSystem: "parallel", - parallelIndex: 0, - label: { - show: false - }, - inactiveOpacity: 0.05, - activeOpacity: 1, - lineStyle: { - width: 1, - opacity: 0.45, - type: "solid" - }, - emphasis: { - label: { - show: false - } - }, - progressive: 500, - smooth: false, - animationEasing: "linear" - }; - return ParallelSeriesModel2; - }(Series_default) - ); - function makeDefaultEncode(seriesModel) { - var parallelModel = seriesModel.ecModel.getComponent("parallel", seriesModel.get("parallelIndex")); - if (!parallelModel) { - return; - } - var encodeDefine = {}; - each(parallelModel.dimensions, function(axisDim) { - var dataDimIndex = convertDimNameToNumber(axisDim); - encodeDefine[axisDim] = dataDimIndex; - }); - return encodeDefine; - } - function convertDimNameToNumber(dimName) { - return +dimName.replace("dim", ""); - } - var ParallelSeries_default = ParallelSeriesModel; - - // node_modules/echarts/lib/chart/parallel/parallelVisual.js - var opacityAccessPath2 = ["lineStyle", "opacity"]; - var parallelVisual = { - seriesType: "parallel", - reset: function(seriesModel, ecModel) { - var coordSys = seriesModel.coordinateSystem; - var opacityMap = { - normal: seriesModel.get(["lineStyle", "opacity"]), - active: seriesModel.get("activeOpacity"), - inactive: seriesModel.get("inactiveOpacity") - }; - return { - progress: function(params, data) { - coordSys.eachActiveState(data, function(activeState, dataIndex) { - var opacity = opacityMap[activeState]; - if (activeState === "normal" && data.hasItemOption) { - var itemOpacity = data.getItemModel(dataIndex).get(opacityAccessPath2, true); - itemOpacity != null && (opacity = itemOpacity); - } - var existsStyle = data.ensureUniqueItemVisual(dataIndex, "style"); - existsStyle.opacity = opacity; - }, params.start, params.end); - } - }; - } - }; - var parallelVisual_default = parallelVisual; - - // node_modules/echarts/lib/coord/parallel/parallelPreprocessor.js - function parallelPreprocessor(option) { - createParallelIfNeeded(option); - mergeAxisOptionFromParallel(option); - } - function createParallelIfNeeded(option) { - if (option.parallel) { - return; - } - var hasParallelSeries = false; - each(option.series, function(seriesOpt) { - if (seriesOpt && seriesOpt.type === "parallel") { - hasParallelSeries = true; - } - }); - if (hasParallelSeries) { - option.parallel = [{}]; - } - } - function mergeAxisOptionFromParallel(option) { - var axes = normalizeToArray(option.parallelAxis); - each(axes, function(axisOption) { - if (!isObject(axisOption)) { - return; - } - var parallelIndex = axisOption.parallelIndex || 0; - var parallelOption = normalizeToArray(option.parallel)[parallelIndex]; - if (parallelOption && parallelOption.parallelAxisDefault) { - merge(axisOption, parallelOption.parallelAxisDefault, false); - } - }); - } - - // node_modules/echarts/lib/component/parallel/ParallelView.js - var CLICK_THRESHOLD = 5; - var ParallelView2 = ( - /** @class */ - function(_super) { - __extends(ParallelView3, _super); - function ParallelView3() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ParallelView3.type; - return _this; - } - ParallelView3.prototype.render = function(parallelModel, ecModel, api) { - this._model = parallelModel; - this._api = api; - if (!this._handlers) { - this._handlers = {}; - each(handlers, function(handler, eventName) { - api.getZr().on(eventName, this._handlers[eventName] = bind(handler, this)); - }, this); - } - createOrUpdate(this, "_throttledDispatchExpand", parallelModel.get("axisExpandRate"), "fixRate"); - }; - ParallelView3.prototype.dispose = function(ecModel, api) { - clear(this, "_throttledDispatchExpand"); - each(this._handlers, function(handler, eventName) { - api.getZr().off(eventName, handler); - }); - this._handlers = null; - }; - ParallelView3.prototype._throttledDispatchExpand = function(opt) { - this._dispatchExpand(opt); - }; - ParallelView3.prototype._dispatchExpand = function(opt) { - opt && this._api.dispatchAction(extend({ - type: "parallelAxisExpand" - }, opt)); - }; - ParallelView3.type = "parallel"; - return ParallelView3; - }(Component_default2) - ); - var handlers = { - mousedown: function(e2) { - if (checkTrigger(this, "click")) { - this._mouseDownPoint = [e2.offsetX, e2.offsetY]; - } - }, - mouseup: function(e2) { - var mouseDownPoint = this._mouseDownPoint; - if (checkTrigger(this, "click") && mouseDownPoint) { - var point = [e2.offsetX, e2.offsetY]; - var dist3 = Math.pow(mouseDownPoint[0] - point[0], 2) + Math.pow(mouseDownPoint[1] - point[1], 2); - if (dist3 > CLICK_THRESHOLD) { - return; - } - var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e2.offsetX, e2.offsetY]); - result.behavior !== "none" && this._dispatchExpand({ - axisExpandWindow: result.axisExpandWindow - }); - } - this._mouseDownPoint = null; - }, - mousemove: function(e2) { - if (this._mouseDownPoint || !checkTrigger(this, "mousemove")) { - return; - } - var model = this._model; - var result = model.coordinateSystem.getSlidedAxisExpandWindow([e2.offsetX, e2.offsetY]); - var behavior = result.behavior; - behavior === "jump" && this._throttledDispatchExpand.debounceNextCall(model.get("axisExpandDebounce")); - this._throttledDispatchExpand(behavior === "none" ? null : { - axisExpandWindow: result.axisExpandWindow, - // Jumping uses animation, and sliding suppresses animation. - animation: behavior === "jump" ? null : { - duration: 0 - // Disable animation. - } - }); - } - }; - function checkTrigger(view, triggerOn) { - var model = view._model; - return model.get("axisExpandable") && model.get("axisExpandTriggerOn") === triggerOn; - } - var ParallelView_default2 = ParallelView2; - - // node_modules/echarts/lib/coord/parallel/ParallelModel.js - var ParallelModel = ( - /** @class */ - function(_super) { - __extends(ParallelModel2, _super); - function ParallelModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ParallelModel2.type; - return _this; - } - ParallelModel2.prototype.init = function() { - _super.prototype.init.apply(this, arguments); - this.mergeOption({}); - }; - ParallelModel2.prototype.mergeOption = function(newOption) { - var thisOption = this.option; - newOption && merge(thisOption, newOption, true); - this._initDimensions(); - }; - ParallelModel2.prototype.contains = function(model, ecModel) { - var parallelIndex = model.get("parallelIndex"); - return parallelIndex != null && ecModel.getComponent("parallel", parallelIndex) === this; - }; - ParallelModel2.prototype.setAxisExpand = function(opt) { - each(["axisExpandable", "axisExpandCenter", "axisExpandCount", "axisExpandWidth", "axisExpandWindow"], function(name) { - if (opt.hasOwnProperty(name)) { - this.option[name] = opt[name]; - } - }, this); - }; - ParallelModel2.prototype._initDimensions = function() { - var dimensions = this.dimensions = []; - var parallelAxisIndex = this.parallelAxisIndex = []; - var axisModels = filter(this.ecModel.queryComponents({ - mainType: "parallelAxis" - }), function(axisModel) { - return (axisModel.get("parallelIndex") || 0) === this.componentIndex; - }, this); - each(axisModels, function(axisModel) { - dimensions.push("dim" + axisModel.get("dim")); - parallelAxisIndex.push(axisModel.componentIndex); - }); - }; - ParallelModel2.type = "parallel"; - ParallelModel2.dependencies = ["parallelAxis"]; - ParallelModel2.layoutMode = "box"; - ParallelModel2.defaultOption = { - // zlevel: 0, - z: 0, - left: 80, - top: 60, - right: 80, - bottom: 60, - // width: {totalWidth} - left - right, - // height: {totalHeight} - top - bottom, - layout: "horizontal", - // FIXME - // naming? - axisExpandable: false, - axisExpandCenter: null, - axisExpandCount: 0, - axisExpandWidth: 50, - axisExpandRate: 17, - axisExpandDebounce: 50, - // [out, in, jumpTarget]. In percentage. If use [null, 0.05], null means full. - // Do not doc to user until necessary. - axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4], - axisExpandTriggerOn: "click", - parallelAxisDefault: null - }; - return ParallelModel2; - }(Component_default) - ); - var ParallelModel_default = ParallelModel; - - // node_modules/echarts/lib/coord/parallel/ParallelAxis.js - var ParallelAxis = ( - /** @class */ - function(_super) { - __extends(ParallelAxis2, _super); - function ParallelAxis2(dim, scale4, coordExtent, axisType, axisIndex) { - var _this = _super.call(this, dim, scale4, coordExtent) || this; - _this.type = axisType || "value"; - _this.axisIndex = axisIndex; - return _this; - } - ParallelAxis2.prototype.isHorizontal = function() { - return this.coordinateSystem.getModel().get("layout") !== "horizontal"; - }; - return ParallelAxis2; - }(Axis_default) - ); - var ParallelAxis_default = ParallelAxis; - - // node_modules/echarts/lib/component/helper/sliderMove.js - function sliderMove(delta, handleEnds, extent3, handleIndex, minSpan, maxSpan) { - delta = delta || 0; - var extentSpan = extent3[1] - extent3[0]; - if (minSpan != null) { - minSpan = restrict(minSpan, [0, extentSpan]); - } - if (maxSpan != null) { - maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0); - } - if (handleIndex === "all") { - var handleSpan = Math.abs(handleEnds[1] - handleEnds[0]); - handleSpan = restrict(handleSpan, [0, extentSpan]); - minSpan = maxSpan = restrict(handleSpan, [minSpan, maxSpan]); - handleIndex = 0; - } - handleEnds[0] = restrict(handleEnds[0], extent3); - handleEnds[1] = restrict(handleEnds[1], extent3); - var originalDistSign = getSpanSign(handleEnds, handleIndex); - handleEnds[handleIndex] += delta; - var extentMinSpan = minSpan || 0; - var realExtent = extent3.slice(); - originalDistSign.sign < 0 ? realExtent[0] += extentMinSpan : realExtent[1] -= extentMinSpan; - handleEnds[handleIndex] = restrict(handleEnds[handleIndex], realExtent); - var currDistSign; - currDistSign = getSpanSign(handleEnds, handleIndex); - if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) { - handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan; - } - currDistSign = getSpanSign(handleEnds, handleIndex); - if (maxSpan != null && currDistSign.span > maxSpan) { - handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan; - } - return handleEnds; - } - function getSpanSign(handleEnds, handleIndex) { - var dist3 = handleEnds[handleIndex] - handleEnds[1 - handleIndex]; - return { - span: Math.abs(dist3), - sign: dist3 > 0 ? -1 : dist3 < 0 ? 1 : handleIndex ? -1 : 1 - }; - } - function restrict(value, extend3) { - return Math.min(extend3[1] != null ? extend3[1] : Infinity, Math.max(extend3[0] != null ? extend3[0] : -Infinity, value)); - } - - // node_modules/echarts/lib/coord/parallel/Parallel.js - var each6 = each; - var mathMin9 = Math.min; - var mathMax9 = Math.max; - var mathFloor2 = Math.floor; - var mathCeil2 = Math.ceil; - var round6 = round; - var PI9 = Math.PI; - var Parallel = ( - /** @class */ - function() { - function Parallel2(parallelModel, ecModel, api) { - this.type = "parallel"; - this._axesMap = createHashMap(); - this._axesLayout = {}; - this.dimensions = parallelModel.dimensions; - this._model = parallelModel; - this._init(parallelModel, ecModel, api); - } - Parallel2.prototype._init = function(parallelModel, ecModel, api) { - var dimensions = parallelModel.dimensions; - var parallelAxisIndex = parallelModel.parallelAxisIndex; - each6(dimensions, function(dim, idx) { - var axisIndex = parallelAxisIndex[idx]; - var axisModel = ecModel.getComponent("parallelAxis", axisIndex); - var axis = this._axesMap.set(dim, new ParallelAxis_default(dim, createScaleByModel(axisModel), [0, 0], axisModel.get("type"), axisIndex)); - var isCategory2 = axis.type === "category"; - axis.onBand = isCategory2 && axisModel.get("boundaryGap"); - axis.inverse = axisModel.get("inverse"); - axisModel.axis = axis; - axis.model = axisModel; - axis.coordinateSystem = axisModel.coordinateSystem = this; - }, this); - }; - Parallel2.prototype.update = function(ecModel, api) { - this._updateAxesFromSeries(this._model, ecModel); - }; - Parallel2.prototype.containPoint = function(point) { - var layoutInfo = this._makeLayoutInfo(); - var axisBase = layoutInfo.axisBase; - var layoutBase = layoutInfo.layoutBase; - var pixelDimIndex = layoutInfo.pixelDimIndex; - var pAxis = point[1 - pixelDimIndex]; - var pLayout = point[pixelDimIndex]; - return pAxis >= axisBase && pAxis <= axisBase + layoutInfo.axisLength && pLayout >= layoutBase && pLayout <= layoutBase + layoutInfo.layoutLength; - }; - Parallel2.prototype.getModel = function() { - return this._model; - }; - Parallel2.prototype._updateAxesFromSeries = function(parallelModel, ecModel) { - ecModel.eachSeries(function(seriesModel) { - if (!parallelModel.contains(seriesModel, ecModel)) { - return; - } - var data = seriesModel.getData(); - each6(this.dimensions, function(dim) { - var axis = this._axesMap.get(dim); - axis.scale.unionExtentFromData(data, data.mapDimension(dim)); - niceScaleExtent(axis.scale, axis.model); - }, this); - }, this); - }; - Parallel2.prototype.resize = function(parallelModel, api) { - this._rect = getLayoutRect(parallelModel.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }); - this._layoutAxes(); - }; - Parallel2.prototype.getRect = function() { - return this._rect; - }; - Parallel2.prototype._makeLayoutInfo = function() { - var parallelModel = this._model; - var rect = this._rect; - var xy = ["x", "y"]; - var wh = ["width", "height"]; - var layout5 = parallelModel.get("layout"); - var pixelDimIndex = layout5 === "horizontal" ? 0 : 1; - var layoutLength = rect[wh[pixelDimIndex]]; - var layoutExtent = [0, layoutLength]; - var axisCount = this.dimensions.length; - var axisExpandWidth = restrict2(parallelModel.get("axisExpandWidth"), layoutExtent); - var axisExpandCount = restrict2(parallelModel.get("axisExpandCount") || 0, [0, axisCount]); - var axisExpandable = parallelModel.get("axisExpandable") && axisCount > 3 && axisCount > axisExpandCount && axisExpandCount > 1 && axisExpandWidth > 0 && layoutLength > 0; - var axisExpandWindow = parallelModel.get("axisExpandWindow"); - var winSize; - if (!axisExpandWindow) { - winSize = restrict2(axisExpandWidth * (axisExpandCount - 1), layoutExtent); - var axisExpandCenter = parallelModel.get("axisExpandCenter") || mathFloor2(axisCount / 2); - axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2]; - axisExpandWindow[1] = axisExpandWindow[0] + winSize; - } else { - winSize = restrict2(axisExpandWindow[1] - axisExpandWindow[0], layoutExtent); - axisExpandWindow[1] = axisExpandWindow[0] + winSize; - } - var axisCollapseWidth = (layoutLength - winSize) / (axisCount - axisExpandCount); - axisCollapseWidth < 3 && (axisCollapseWidth = 0); - var winInnerIndices = [mathFloor2(round6(axisExpandWindow[0] / axisExpandWidth, 1)) + 1, mathCeil2(round6(axisExpandWindow[1] / axisExpandWidth, 1)) - 1]; - var axisExpandWindow0Pos = axisCollapseWidth / axisExpandWidth * axisExpandWindow[0]; - return { - layout: layout5, - pixelDimIndex, - layoutBase: rect[xy[pixelDimIndex]], - layoutLength, - axisBase: rect[xy[1 - pixelDimIndex]], - axisLength: rect[wh[1 - pixelDimIndex]], - axisExpandable, - axisExpandWidth, - axisCollapseWidth, - axisExpandWindow, - axisCount, - winInnerIndices, - axisExpandWindow0Pos - }; - }; - Parallel2.prototype._layoutAxes = function() { - var rect = this._rect; - var axes = this._axesMap; - var dimensions = this.dimensions; - var layoutInfo = this._makeLayoutInfo(); - var layout5 = layoutInfo.layout; - axes.each(function(axis) { - var axisExtent = [0, layoutInfo.axisLength]; - var idx = axis.inverse ? 1 : 0; - axis.setExtent(axisExtent[idx], axisExtent[1 - idx]); - }); - each6(dimensions, function(dim, idx) { - var posInfo = (layoutInfo.axisExpandable ? layoutAxisWithExpand : layoutAxisWithoutExpand)(idx, layoutInfo); - var positionTable = { - horizontal: { - x: posInfo.position, - y: layoutInfo.axisLength - }, - vertical: { - x: 0, - y: posInfo.position - } - }; - var rotationTable = { - horizontal: PI9 / 2, - vertical: 0 - }; - var position2 = [positionTable[layout5].x + rect.x, positionTable[layout5].y + rect.y]; - var rotation = rotationTable[layout5]; - var transform2 = create2(); - rotate(transform2, transform2, rotation); - translate(transform2, transform2, position2); - this._axesLayout[dim] = { - position: position2, - rotation, - transform: transform2, - axisNameAvailableWidth: posInfo.axisNameAvailableWidth, - axisLabelShow: posInfo.axisLabelShow, - nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth, - tickDirection: 1, - labelDirection: 1 - }; - }, this); - }; - Parallel2.prototype.getAxis = function(dim) { - return this._axesMap.get(dim); - }; - Parallel2.prototype.dataToPoint = function(value, dim) { - return this.axisCoordToPoint(this._axesMap.get(dim).dataToCoord(value), dim); - }; - Parallel2.prototype.eachActiveState = function(data, callback, start3, end2) { - start3 == null && (start3 = 0); - end2 == null && (end2 = data.count()); - var axesMap = this._axesMap; - var dimensions = this.dimensions; - var dataDimensions = []; - var axisModels = []; - each(dimensions, function(axisDim) { - dataDimensions.push(data.mapDimension(axisDim)); - axisModels.push(axesMap.get(axisDim).model); - }); - var hasActiveSet = this.hasAxisBrushed(); - for (var dataIndex = start3; dataIndex < end2; dataIndex++) { - var activeState = void 0; - if (!hasActiveSet) { - activeState = "normal"; - } else { - activeState = "active"; - var values = data.getValues(dataDimensions, dataIndex); - for (var j = 0, lenj = dimensions.length; j < lenj; j++) { - var state = axisModels[j].getActiveState(values[j]); - if (state === "inactive") { - activeState = "inactive"; - break; - } - } - } - callback(activeState, dataIndex); - } - }; - Parallel2.prototype.hasAxisBrushed = function() { - var dimensions = this.dimensions; - var axesMap = this._axesMap; - var hasActiveSet = false; - for (var j = 0, lenj = dimensions.length; j < lenj; j++) { - if (axesMap.get(dimensions[j]).model.getActiveState() !== "normal") { - hasActiveSet = true; - } - } - return hasActiveSet; - }; - Parallel2.prototype.axisCoordToPoint = function(coord, dim) { - var axisLayout = this._axesLayout[dim]; - return applyTransform2([coord, 0], axisLayout.transform); - }; - Parallel2.prototype.getAxisLayout = function(dim) { - return clone(this._axesLayout[dim]); - }; - Parallel2.prototype.getSlidedAxisExpandWindow = function(point) { - var layoutInfo = this._makeLayoutInfo(); - var pixelDimIndex = layoutInfo.pixelDimIndex; - var axisExpandWindow = layoutInfo.axisExpandWindow.slice(); - var winSize = axisExpandWindow[1] - axisExpandWindow[0]; - var extent3 = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)]; - if (!this.containPoint(point)) { - return { - behavior: "none", - axisExpandWindow - }; - } - var pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos; - var delta; - var behavior = "slide"; - var axisCollapseWidth = layoutInfo.axisCollapseWidth; - var triggerArea = this._model.get("axisExpandSlideTriggerArea"); - var useJump = triggerArea[0] != null; - if (axisCollapseWidth) { - if (useJump && axisCollapseWidth && pointCoord < winSize * triggerArea[0]) { - behavior = "jump"; - delta = pointCoord - winSize * triggerArea[2]; - } else if (useJump && axisCollapseWidth && pointCoord > winSize * (1 - triggerArea[0])) { - behavior = "jump"; - delta = pointCoord - winSize * (1 - triggerArea[2]); - } else { - (delta = pointCoord - winSize * triggerArea[1]) >= 0 && (delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0 && (delta = 0); - } - delta *= layoutInfo.axisExpandWidth / axisCollapseWidth; - delta ? sliderMove(delta, axisExpandWindow, extent3, "all") : behavior = "none"; - } else { - var winSize2 = axisExpandWindow[1] - axisExpandWindow[0]; - var pos = extent3[1] * pointCoord / winSize2; - axisExpandWindow = [mathMax9(0, pos - winSize2 / 2)]; - axisExpandWindow[1] = mathMin9(extent3[1], axisExpandWindow[0] + winSize2); - axisExpandWindow[0] = axisExpandWindow[1] - winSize2; - } - return { - axisExpandWindow, - behavior - }; - }; - return Parallel2; - }() - ); - function restrict2(len2, extent3) { - return mathMin9(mathMax9(len2, extent3[0]), extent3[1]); - } - function layoutAxisWithoutExpand(axisIndex, layoutInfo) { - var step = layoutInfo.layoutLength / (layoutInfo.axisCount - 1); - return { - position: step * axisIndex, - axisNameAvailableWidth: step, - axisLabelShow: true - }; - } - function layoutAxisWithExpand(axisIndex, layoutInfo) { - var layoutLength = layoutInfo.layoutLength; - var axisExpandWidth = layoutInfo.axisExpandWidth; - var axisCount = layoutInfo.axisCount; - var axisCollapseWidth = layoutInfo.axisCollapseWidth; - var winInnerIndices = layoutInfo.winInnerIndices; - var position2; - var axisNameAvailableWidth = axisCollapseWidth; - var axisLabelShow = false; - var nameTruncateMaxWidth; - if (axisIndex < winInnerIndices[0]) { - position2 = axisIndex * axisCollapseWidth; - nameTruncateMaxWidth = axisCollapseWidth; - } else if (axisIndex <= winInnerIndices[1]) { - position2 = layoutInfo.axisExpandWindow0Pos + axisIndex * axisExpandWidth - layoutInfo.axisExpandWindow[0]; - axisNameAvailableWidth = axisExpandWidth; - axisLabelShow = true; - } else { - position2 = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth; - nameTruncateMaxWidth = axisCollapseWidth; - } - return { - position: position2, - axisNameAvailableWidth, - axisLabelShow, - nameTruncateMaxWidth - }; - } - var Parallel_default = Parallel; - - // node_modules/echarts/lib/coord/parallel/parallelCreator.js - function createParallelCoordSys(ecModel, api) { - var coordSysList = []; - ecModel.eachComponent("parallel", function(parallelModel, idx) { - var coordSys = new Parallel_default(parallelModel, ecModel, api); - coordSys.name = "parallel_" + idx; - coordSys.resize(parallelModel, api); - parallelModel.coordinateSystem = coordSys; - coordSys.model = parallelModel; - coordSysList.push(coordSys); - }); - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.get("coordinateSystem") === "parallel") { - var parallelModel = seriesModel.getReferringComponents("parallel", SINGLE_REFERRING).models[0]; - seriesModel.coordinateSystem = parallelModel.coordinateSystem; - } - }); - return coordSysList; - } - var parallelCoordSysCreator = { - create: createParallelCoordSys - }; - var parallelCreator_default = parallelCoordSysCreator; - - // node_modules/echarts/lib/coord/parallel/AxisModel.js - var ParallelAxisModel = ( - /** @class */ - function(_super) { - __extends(ParallelAxisModel2, _super); - function ParallelAxisModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ParallelAxisModel2.type; - _this.activeIntervals = []; - return _this; - } - ParallelAxisModel2.prototype.getAreaSelectStyle = function() { - return makeStyleMapper([ - ["fill", "color"], - ["lineWidth", "borderWidth"], - ["stroke", "borderColor"], - ["width", "width"], - ["opacity", "opacity"] - // Option decal is in `DecalObject` but style.decal is in `PatternObject`. - // So do not transfer decal directly. - ])(this.getModel("areaSelectStyle")); - }; - ParallelAxisModel2.prototype.setActiveIntervals = function(intervals) { - var activeIntervals = this.activeIntervals = clone(intervals); - if (activeIntervals) { - for (var i = activeIntervals.length - 1; i >= 0; i--) { - asc(activeIntervals[i]); - } - } - }; - ParallelAxisModel2.prototype.getActiveState = function(value) { - var activeIntervals = this.activeIntervals; - if (!activeIntervals.length) { - return "normal"; - } - if (value == null || isNaN(+value)) { - return "inactive"; - } - if (activeIntervals.length === 1) { - var interval = activeIntervals[0]; - if (interval[0] <= value && value <= interval[1]) { - return "active"; - } - } else { - for (var i = 0, len2 = activeIntervals.length; i < len2; i++) { - if (activeIntervals[i][0] <= value && value <= activeIntervals[i][1]) { - return "active"; - } - } - } - return "inactive"; - }; - return ParallelAxisModel2; - }(Component_default) - ); - mixin(ParallelAxisModel, AxisModelCommonMixin); - var AxisModel_default = ParallelAxisModel; - - // node_modules/echarts/lib/component/helper/BrushController.js - var BRUSH_PANEL_GLOBAL = true; - var mathMin10 = Math.min; - var mathMax10 = Math.max; - var mathPow3 = Math.pow; - var COVER_Z = 1e4; - var UNSELECT_THRESHOLD = 6; - var MIN_RESIZE_LINE_WIDTH = 6; - var MUTEX_RESOURCE_KEY = "globalPan"; - var DIRECTION_MAP = { - w: [0, 0], - e: [0, 1], - n: [1, 0], - s: [1, 1] - }; - var CURSOR_MAP = { - w: "ew", - e: "ew", - n: "ns", - s: "ns", - ne: "nesw", - sw: "nesw", - nw: "nwse", - se: "nwse" - }; - var DEFAULT_BRUSH_OPT = { - brushStyle: { - lineWidth: 2, - stroke: "rgba(210,219,238,0.3)", - fill: "#D2DBEE" - }, - transformable: true, - brushMode: "single", - removeOnClick: false - }; - var baseUID = 0; - var BrushController = ( - /** @class */ - function(_super) { - __extends(BrushController2, _super); - function BrushController2(zr) { - var _this = _super.call(this) || this; - _this._track = []; - _this._covers = []; - _this._handlers = {}; - if (true) { - assert(zr); - } - _this._zr = zr; - _this.group = new Group_default(); - _this._uid = "brushController_" + baseUID++; - each(pointerHandlers, function(handler, eventName) { - this._handlers[eventName] = bind(handler, this); - }, _this); - return _this; - } - BrushController2.prototype.enableBrush = function(brushOption) { - if (true) { - assert(this._mounted); - } - this._brushType && this._doDisableBrush(); - brushOption.brushType && this._doEnableBrush(brushOption); - return this; - }; - BrushController2.prototype._doEnableBrush = function(brushOption) { - var zr = this._zr; - if (!this._enableGlobalPan) { - take(zr, MUTEX_RESOURCE_KEY, this._uid); - } - each(this._handlers, function(handler, eventName) { - zr.on(eventName, handler); - }); - this._brushType = brushOption.brushType; - this._brushOption = merge(clone(DEFAULT_BRUSH_OPT), brushOption, true); - }; - BrushController2.prototype._doDisableBrush = function() { - var zr = this._zr; - release(zr, MUTEX_RESOURCE_KEY, this._uid); - each(this._handlers, function(handler, eventName) { - zr.off(eventName, handler); - }); - this._brushType = this._brushOption = null; - }; - BrushController2.prototype.setPanels = function(panelOpts) { - if (panelOpts && panelOpts.length) { - var panels_1 = this._panels = {}; - each(panelOpts, function(panelOpts2) { - panels_1[panelOpts2.panelId] = clone(panelOpts2); - }); - } else { - this._panels = null; - } - return this; - }; - BrushController2.prototype.mount = function(opt) { - opt = opt || {}; - if (true) { - this._mounted = true; - } - this._enableGlobalPan = opt.enableGlobalPan; - var thisGroup = this.group; - this._zr.add(thisGroup); - thisGroup.attr({ - x: opt.x || 0, - y: opt.y || 0, - rotation: opt.rotation || 0, - scaleX: opt.scaleX || 1, - scaleY: opt.scaleY || 1 - }); - this._transform = thisGroup.getLocalTransform(); - return this; - }; - BrushController2.prototype.updateCovers = function(coverConfigList) { - if (true) { - assert(this._mounted); - } - coverConfigList = map(coverConfigList, function(coverConfig) { - return merge(clone(DEFAULT_BRUSH_OPT), coverConfig, true); - }); - var tmpIdPrefix = "\0-brush-index-"; - var oldCovers = this._covers; - var newCovers = this._covers = []; - var controller = this; - var creatingCover = this._creatingCover; - new DataDiffer_default(oldCovers, coverConfigList, oldGetKey, getKey2).add(addOrUpdate).update(addOrUpdate).remove(remove).execute(); - return this; - function getKey2(brushOption, index) { - return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index) + "-" + brushOption.brushType; - } - function oldGetKey(cover, index) { - return getKey2(cover.__brushOption, index); - } - function addOrUpdate(newIndex, oldIndex) { - var newBrushInternal = coverConfigList[newIndex]; - if (oldIndex != null && oldCovers[oldIndex] === creatingCover) { - newCovers[newIndex] = oldCovers[oldIndex]; - } else { - var cover = newCovers[newIndex] = oldIndex != null ? (oldCovers[oldIndex].__brushOption = newBrushInternal, oldCovers[oldIndex]) : endCreating(controller, createCover(controller, newBrushInternal)); - updateCoverAfterCreation(controller, cover); - } - } - function remove(oldIndex) { - if (oldCovers[oldIndex] !== creatingCover) { - controller.group.remove(oldCovers[oldIndex]); - } - } - }; - BrushController2.prototype.unmount = function() { - if (true) { - if (!this._mounted) { - return; - } - } - this.enableBrush(false); - clearCovers(this); - this._zr.remove(this.group); - if (true) { - this._mounted = false; - } - return this; - }; - BrushController2.prototype.dispose = function() { - this.unmount(); - this.off(); - }; - return BrushController2; - }(Eventful_default) - ); - function createCover(controller, brushOption) { - var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption); - cover.__brushOption = brushOption; - updateZ(cover, brushOption); - controller.group.add(cover); - return cover; - } - function endCreating(controller, creatingCover) { - var coverRenderer = getCoverRenderer(creatingCover); - if (coverRenderer.endCreating) { - coverRenderer.endCreating(controller, creatingCover); - updateZ(creatingCover, creatingCover.__brushOption); - } - return creatingCover; - } - function updateCoverShape(controller, cover) { - var brushOption = cover.__brushOption; - getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption); - } - function updateZ(cover, brushOption) { - var z = brushOption.z; - z == null && (z = COVER_Z); - cover.traverse(function(el) { - el.z = z; - el.z2 = z; - }); - } - function updateCoverAfterCreation(controller, cover) { - getCoverRenderer(cover).updateCommon(controller, cover); - updateCoverShape(controller, cover); - } - function getCoverRenderer(cover) { - return coverRenderers[cover.__brushOption.brushType]; - } - function getPanelByPoint(controller, e2, localCursorPoint) { - var panels = controller._panels; - if (!panels) { - return BRUSH_PANEL_GLOBAL; - } - var panel; - var transform2 = controller._transform; - each(panels, function(pn) { - pn.isTargetByCursor(e2, localCursorPoint, transform2) && (panel = pn); - }); - return panel; - } - function getPanelByCover(controller, cover) { - var panels = controller._panels; - if (!panels) { - return BRUSH_PANEL_GLOBAL; - } - var panelId = cover.__brushOption.panelId; - return panelId != null ? panels[panelId] : BRUSH_PANEL_GLOBAL; - } - function clearCovers(controller) { - var covers = controller._covers; - var originalLength = covers.length; - each(covers, function(cover) { - controller.group.remove(cover); - }, controller); - covers.length = 0; - return !!originalLength; - } - function trigger2(controller, opt) { - var areas = map(controller._covers, function(cover) { - var brushOption = cover.__brushOption; - var range = clone(brushOption.range); - return { - brushType: brushOption.brushType, - panelId: brushOption.panelId, - range - }; - }); - controller.trigger("brush", { - areas, - isEnd: !!opt.isEnd, - removeOnClick: !!opt.removeOnClick - }); - } - function shouldShowCover(controller) { - var track = controller._track; - if (!track.length) { - return false; - } - var p2 = track[track.length - 1]; - var p1 = track[0]; - var dx = p2[0] - p1[0]; - var dy = p2[1] - p1[1]; - var dist3 = mathPow3(dx * dx + dy * dy, 0.5); - return dist3 > UNSELECT_THRESHOLD; - } - function getTrackEnds(track) { - var tail = track.length - 1; - tail < 0 && (tail = 0); - return [track[0], track[tail]]; - } - function createBaseRectCover(rectRangeConverter, controller, brushOption, edgeNameSequences) { - var cover = new Group_default(); - cover.add(new Rect_default({ - name: "main", - style: makeStyle(brushOption), - silent: true, - draggable: true, - cursor: "move", - drift: curry(driftRect, rectRangeConverter, controller, cover, ["n", "s", "w", "e"]), - ondragend: curry(trigger2, controller, { - isEnd: true - }) - })); - each(edgeNameSequences, function(nameSequence) { - cover.add(new Rect_default({ - name: nameSequence.join(""), - style: { - opacity: 0 - }, - draggable: true, - silent: true, - invisible: true, - drift: curry(driftRect, rectRangeConverter, controller, cover, nameSequence), - ondragend: curry(trigger2, controller, { - isEnd: true - }) - })); - }); - return cover; - } - function updateBaseRect(controller, cover, localRange, brushOption) { - var lineWidth = brushOption.brushStyle.lineWidth || 0; - var handleSize = mathMax10(lineWidth, MIN_RESIZE_LINE_WIDTH); - var x = localRange[0][0]; - var y = localRange[1][0]; - var xa = x - lineWidth / 2; - var ya = y - lineWidth / 2; - var x2 = localRange[0][1]; - var y2 = localRange[1][1]; - var x2a = x2 - handleSize + lineWidth / 2; - var y2a = y2 - handleSize + lineWidth / 2; - var width = x2 - x; - var height = y2 - y; - var widtha = width + lineWidth; - var heighta = height + lineWidth; - updateRectShape(controller, cover, "main", x, y, width, height); - if (brushOption.transformable) { - updateRectShape(controller, cover, "w", xa, ya, handleSize, heighta); - updateRectShape(controller, cover, "e", x2a, ya, handleSize, heighta); - updateRectShape(controller, cover, "n", xa, ya, widtha, handleSize); - updateRectShape(controller, cover, "s", xa, y2a, widtha, handleSize); - updateRectShape(controller, cover, "nw", xa, ya, handleSize, handleSize); - updateRectShape(controller, cover, "ne", x2a, ya, handleSize, handleSize); - updateRectShape(controller, cover, "sw", xa, y2a, handleSize, handleSize); - updateRectShape(controller, cover, "se", x2a, y2a, handleSize, handleSize); - } - } - function updateCommon(controller, cover) { - var brushOption = cover.__brushOption; - var transformable = brushOption.transformable; - var mainEl = cover.childAt(0); - mainEl.useStyle(makeStyle(brushOption)); - mainEl.attr({ - silent: !transformable, - cursor: transformable ? "move" : "default" - }); - each([["w"], ["e"], ["n"], ["s"], ["s", "e"], ["s", "w"], ["n", "e"], ["n", "w"]], function(nameSequence) { - var el = cover.childOfName(nameSequence.join("")); - var globalDir = nameSequence.length === 1 ? getGlobalDirection1(controller, nameSequence[0]) : getGlobalDirection2(controller, nameSequence); - el && el.attr({ - silent: !transformable, - invisible: !transformable, - cursor: transformable ? CURSOR_MAP[globalDir] + "-resize" : null - }); - }); - } - function updateRectShape(controller, cover, name, x, y, w, h) { - var el = cover.childOfName(name); - el && el.setShape(pointsToRect(clipByPanel(controller, cover, [[x, y], [x + w, y + h]]))); - } - function makeStyle(brushOption) { - return defaults({ - strokeNoScale: true - }, brushOption.brushStyle); - } - function formatRectRange(x, y, x2, y2) { - var min4 = [mathMin10(x, x2), mathMin10(y, y2)]; - var max4 = [mathMax10(x, x2), mathMax10(y, y2)]; - return [ - [min4[0], max4[0]], - [min4[1], max4[1]] - // y range - ]; - } - function getTransform2(controller) { - return getTransform(controller.group); - } - function getGlobalDirection1(controller, localDirName) { - var map3 = { - w: "left", - e: "right", - n: "top", - s: "bottom" - }; - var inverseMap = { - left: "w", - right: "e", - top: "n", - bottom: "s" - }; - var dir3 = transformDirection(map3[localDirName], getTransform2(controller)); - return inverseMap[dir3]; - } - function getGlobalDirection2(controller, localDirNameSeq) { - var globalDir = [getGlobalDirection1(controller, localDirNameSeq[0]), getGlobalDirection1(controller, localDirNameSeq[1])]; - (globalDir[0] === "e" || globalDir[0] === "w") && globalDir.reverse(); - return globalDir.join(""); - } - function driftRect(rectRangeConverter, controller, cover, dirNameSequence, dx, dy) { - var brushOption = cover.__brushOption; - var rectRange = rectRangeConverter.toRectRange(brushOption.range); - var localDelta = toLocalDelta(controller, dx, dy); - each(dirNameSequence, function(dirName) { - var ind = DIRECTION_MAP[dirName]; - rectRange[ind[0]][ind[1]] += localDelta[ind[0]]; - }); - brushOption.range = rectRangeConverter.fromRectRange(formatRectRange(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1])); - updateCoverAfterCreation(controller, cover); - trigger2(controller, { - isEnd: false - }); - } - function driftPolygon(controller, cover, dx, dy) { - var range = cover.__brushOption.range; - var localDelta = toLocalDelta(controller, dx, dy); - each(range, function(point) { - point[0] += localDelta[0]; - point[1] += localDelta[1]; - }); - updateCoverAfterCreation(controller, cover); - trigger2(controller, { - isEnd: false - }); - } - function toLocalDelta(controller, dx, dy) { - var thisGroup = controller.group; - var localD = thisGroup.transformCoordToLocal(dx, dy); - var localZero = thisGroup.transformCoordToLocal(0, 0); - return [localD[0] - localZero[0], localD[1] - localZero[1]]; - } - function clipByPanel(controller, cover, data) { - var panel = getPanelByCover(controller, cover); - return panel && panel !== BRUSH_PANEL_GLOBAL ? panel.clipPath(data, controller._transform) : clone(data); - } - function pointsToRect(points4) { - var xmin = mathMin10(points4[0][0], points4[1][0]); - var ymin = mathMin10(points4[0][1], points4[1][1]); - var xmax = mathMax10(points4[0][0], points4[1][0]); - var ymax = mathMax10(points4[0][1], points4[1][1]); - return { - x: xmin, - y: ymin, - width: xmax - xmin, - height: ymax - ymin - }; - } - function resetCursor(controller, e2, localCursorPoint) { - if ( - // Check active - !controller._brushType || isOutsideZrArea(controller, e2.offsetX, e2.offsetY) - ) { - return; - } - var zr = controller._zr; - var covers = controller._covers; - var currPanel = getPanelByPoint(controller, e2, localCursorPoint); - if (!controller._dragging) { - for (var i = 0; i < covers.length; i++) { - var brushOption = covers[i].__brushOption; - if (currPanel && (currPanel === BRUSH_PANEL_GLOBAL || brushOption.panelId === currPanel.panelId) && coverRenderers[brushOption.brushType].contain(covers[i], localCursorPoint[0], localCursorPoint[1])) { - return; - } - } - } - currPanel && zr.setCursorStyle("crosshair"); - } - function preventDefault(e2) { - var rawE = e2.event; - rawE.preventDefault && rawE.preventDefault(); - } - function mainShapeContain(cover, x, y) { - return cover.childOfName("main").contain(x, y); - } - function updateCoverByMouse(controller, e2, localCursorPoint, isEnd) { - var creatingCover = controller._creatingCover; - var panel = controller._creatingPanel; - var thisBrushOption = controller._brushOption; - var eventParams; - controller._track.push(localCursorPoint.slice()); - if (shouldShowCover(controller) || creatingCover) { - if (panel && !creatingCover) { - thisBrushOption.brushMode === "single" && clearCovers(controller); - var brushOption = clone(thisBrushOption); - brushOption.brushType = determineBrushType(brushOption.brushType, panel); - brushOption.panelId = panel === BRUSH_PANEL_GLOBAL ? null : panel.panelId; - creatingCover = controller._creatingCover = createCover(controller, brushOption); - controller._covers.push(creatingCover); - } - if (creatingCover) { - var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)]; - var coverBrushOption = creatingCover.__brushOption; - coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel(controller, creatingCover, controller._track)); - if (isEnd) { - endCreating(controller, creatingCover); - coverRenderer.updateCommon(controller, creatingCover); - } - updateCoverShape(controller, creatingCover); - eventParams = { - isEnd - }; - } - } else if (isEnd && thisBrushOption.brushMode === "single" && thisBrushOption.removeOnClick) { - if (getPanelByPoint(controller, e2, localCursorPoint) && clearCovers(controller)) { - eventParams = { - isEnd, - removeOnClick: true - }; - } - } - return eventParams; - } - function determineBrushType(brushType, panel) { - if (brushType === "auto") { - if (true) { - assert(panel && panel.defaultBrushType, 'MUST have defaultBrushType when brushType is "atuo"'); - } - return panel.defaultBrushType; - } - return brushType; - } - var pointerHandlers = { - mousedown: function(e2) { - if (this._dragging) { - handleDragEnd(this, e2); - } else if (!e2.target || !e2.target.draggable) { - preventDefault(e2); - var localCursorPoint = this.group.transformCoordToLocal(e2.offsetX, e2.offsetY); - this._creatingCover = null; - var panel = this._creatingPanel = getPanelByPoint(this, e2, localCursorPoint); - if (panel) { - this._dragging = true; - this._track = [localCursorPoint.slice()]; - } - } - }, - mousemove: function(e2) { - var x = e2.offsetX; - var y = e2.offsetY; - var localCursorPoint = this.group.transformCoordToLocal(x, y); - resetCursor(this, e2, localCursorPoint); - if (this._dragging) { - preventDefault(e2); - var eventParams = updateCoverByMouse(this, e2, localCursorPoint, false); - eventParams && trigger2(this, eventParams); - } - }, - mouseup: function(e2) { - handleDragEnd(this, e2); - } - }; - function handleDragEnd(controller, e2) { - if (controller._dragging) { - preventDefault(e2); - var x = e2.offsetX; - var y = e2.offsetY; - var localCursorPoint = controller.group.transformCoordToLocal(x, y); - var eventParams = updateCoverByMouse(controller, e2, localCursorPoint, true); - controller._dragging = false; - controller._track = []; - controller._creatingCover = null; - eventParams && trigger2(controller, eventParams); - } - } - function isOutsideZrArea(controller, x, y) { - var zr = controller._zr; - return x < 0 || x > zr.getWidth() || y < 0 || y > zr.getHeight(); - } - var coverRenderers = { - lineX: getLineRenderer(0), - lineY: getLineRenderer(1), - rect: { - createCover: function(controller, brushOption) { - function returnInput(range) { - return range; - } - return createBaseRectCover({ - toRectRange: returnInput, - fromRectRange: returnInput - }, controller, brushOption, [["w"], ["e"], ["n"], ["s"], ["s", "e"], ["s", "w"], ["n", "e"], ["n", "w"]]); - }, - getCreatingRange: function(localTrack) { - var ends = getTrackEnds(localTrack); - return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]); - }, - updateCoverShape: function(controller, cover, localRange, brushOption) { - updateBaseRect(controller, cover, localRange, brushOption); - }, - updateCommon, - contain: mainShapeContain - }, - polygon: { - createCover: function(controller, brushOption) { - var cover = new Group_default(); - cover.add(new Polyline_default({ - name: "main", - style: makeStyle(brushOption), - silent: true - })); - return cover; - }, - getCreatingRange: function(localTrack) { - return localTrack; - }, - endCreating: function(controller, cover) { - cover.remove(cover.childAt(0)); - cover.add(new Polygon_default({ - name: "main", - draggable: true, - drift: curry(driftPolygon, controller, cover), - ondragend: curry(trigger2, controller, { - isEnd: true - }) - })); - }, - updateCoverShape: function(controller, cover, localRange, brushOption) { - cover.childAt(0).setShape({ - points: clipByPanel(controller, cover, localRange) - }); - }, - updateCommon, - contain: mainShapeContain - } - }; - function getLineRenderer(xyIndex) { - return { - createCover: function(controller, brushOption) { - return createBaseRectCover({ - toRectRange: function(range) { - var rectRange = [range, [0, 100]]; - xyIndex && rectRange.reverse(); - return rectRange; - }, - fromRectRange: function(rectRange) { - return rectRange[xyIndex]; - } - }, controller, brushOption, [[["w"], ["e"]], [["n"], ["s"]]][xyIndex]); - }, - getCreatingRange: function(localTrack) { - var ends = getTrackEnds(localTrack); - var min4 = mathMin10(ends[0][xyIndex], ends[1][xyIndex]); - var max4 = mathMax10(ends[0][xyIndex], ends[1][xyIndex]); - return [min4, max4]; - }, - updateCoverShape: function(controller, cover, localRange, brushOption) { - var otherExtent; - var panel = getPanelByCover(controller, cover); - if (panel !== BRUSH_PANEL_GLOBAL && panel.getLinearBrushOtherExtent) { - otherExtent = panel.getLinearBrushOtherExtent(xyIndex); - } else { - var zr = controller._zr; - otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]]; - } - var rectRange = [localRange, otherExtent]; - xyIndex && rectRange.reverse(); - updateBaseRect(controller, cover, rectRange, brushOption); - }, - updateCommon, - contain: mainShapeContain - }; - } - var BrushController_default = BrushController; - - // node_modules/echarts/lib/component/helper/brushHelper.js - function makeRectPanelClipPath(rect) { - rect = normalizeRect(rect); - return function(localPoints) { - return clipPointsByRect(localPoints, rect); - }; - } - function makeLinearBrushOtherExtent(rect, specifiedXYIndex) { - rect = normalizeRect(rect); - return function(xyIndex) { - var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex; - var brushWidth = idx ? rect.width : rect.height; - var base2 = idx ? rect.x : rect.y; - return [base2, base2 + (brushWidth || 0)]; - }; - } - function makeRectIsTargetByCursor(rect, api, targetModel) { - var boundingRect = normalizeRect(rect); - return function(e2, localCursorPoint) { - return boundingRect.contain(localCursorPoint[0], localCursorPoint[1]) && !onIrrelevantElement(e2, api, targetModel); - }; - } - function normalizeRect(rect) { - return BoundingRect_default.create(rect); - } - - // node_modules/echarts/lib/component/axis/ParallelAxisView.js - var elementList = ["axisLine", "axisTickLabel", "axisName"]; - var ParallelAxisView = ( - /** @class */ - function(_super) { - __extends(ParallelAxisView2, _super); - function ParallelAxisView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ParallelAxisView2.type; - return _this; - } - ParallelAxisView2.prototype.init = function(ecModel, api) { - _super.prototype.init.apply(this, arguments); - (this._brushController = new BrushController_default(api.getZr())).on("brush", bind(this._onBrush, this)); - }; - ParallelAxisView2.prototype.render = function(axisModel, ecModel, api, payload) { - if (fromAxisAreaSelect(axisModel, ecModel, payload)) { - return; - } - this.axisModel = axisModel; - this.api = api; - this.group.removeAll(); - var oldAxisGroup = this._axisGroup; - this._axisGroup = new Group_default(); - this.group.add(this._axisGroup); - if (!axisModel.get("show")) { - return; - } - var coordSysModel = getCoordSysModel(axisModel, ecModel); - var coordSys = coordSysModel.coordinateSystem; - var areaSelectStyle = axisModel.getAreaSelectStyle(); - var areaWidth = areaSelectStyle.width; - var dim = axisModel.axis.dim; - var axisLayout = coordSys.getAxisLayout(dim); - var builderOpt = extend({ - strokeContainThreshold: areaWidth - }, axisLayout); - var axisBuilder = new AxisBuilder_default(axisModel, builderOpt); - each(elementList, axisBuilder.add, axisBuilder); - this._axisGroup.add(axisBuilder.getGroup()); - this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api); - groupTransition(oldAxisGroup, this._axisGroup, axisModel); - }; - ParallelAxisView2.prototype._refreshBrushController = function(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) { - var extent3 = axisModel.axis.getExtent(); - var extentLen = extent3[1] - extent3[0]; - var extra = Math.min(30, Math.abs(extentLen) * 0.1); - var rect = BoundingRect_default.create({ - x: extent3[0], - y: -areaWidth / 2, - width: extentLen, - height: areaWidth - }); - rect.x -= extra; - rect.width += 2 * extra; - this._brushController.mount({ - enableGlobalPan: true, - rotation: builderOpt.rotation, - x: builderOpt.position[0], - y: builderOpt.position[1] - }).setPanels([{ - panelId: "pl", - clipPath: makeRectPanelClipPath(rect), - isTargetByCursor: makeRectIsTargetByCursor(rect, api, coordSysModel), - getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect, 0) - }]).enableBrush({ - brushType: "lineX", - brushStyle: areaSelectStyle, - removeOnClick: true - }).updateCovers(getCoverInfoList(axisModel)); - }; - ParallelAxisView2.prototype._onBrush = function(eventParam) { - var coverInfoList = eventParam.areas; - var axisModel = this.axisModel; - var axis = axisModel.axis; - var intervals = map(coverInfoList, function(coverInfo) { - return [axis.coordToData(coverInfo.range[0], true), axis.coordToData(coverInfo.range[1], true)]; - }); - if (!axisModel.option.realtime === eventParam.isEnd || eventParam.removeOnClick) { - this.api.dispatchAction({ - type: "axisAreaSelect", - parallelAxisId: axisModel.id, - intervals - }); - } - }; - ParallelAxisView2.prototype.dispose = function() { - this._brushController.dispose(); - }; - ParallelAxisView2.type = "parallelAxis"; - return ParallelAxisView2; - }(Component_default2) - ); - function fromAxisAreaSelect(axisModel, ecModel, payload) { - return payload && payload.type === "axisAreaSelect" && ecModel.findComponents({ - mainType: "parallelAxis", - query: payload - })[0] === axisModel; - } - function getCoverInfoList(axisModel) { - var axis = axisModel.axis; - return map(axisModel.activeIntervals, function(interval) { - return { - brushType: "lineX", - panelId: "pl", - range: [axis.dataToCoord(interval[0], true), axis.dataToCoord(interval[1], true)] - }; - }); - } - function getCoordSysModel(axisModel, ecModel) { - return ecModel.getComponent("parallel", axisModel.get("parallelIndex")); - } - var ParallelAxisView_default = ParallelAxisView; - - // node_modules/echarts/lib/component/axis/parallelAxisAction.js - var actionInfo2 = { - type: "axisAreaSelect", - event: "axisAreaSelected" - // update: 'updateVisual' - }; - function installParallelActions(registers) { - registers.registerAction(actionInfo2, function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "parallelAxis", - query: payload - }, function(parallelAxisModel) { - parallelAxisModel.axis.model.setActiveIntervals(payload.intervals); - }); - }); - registers.registerAction("parallelAxisExpand", function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "parallel", - query: payload - }, function(parallelModel) { - parallelModel.setAxisExpand(payload); - }); - }); - } - - // node_modules/echarts/lib/component/parallel/install.js - var defaultAxisOption = { - type: "value", - areaSelectStyle: { - width: 20, - borderWidth: 1, - borderColor: "rgba(160,197,232)", - color: "rgba(160,197,232)", - opacity: 0.3 - }, - realtime: true, - z: 10 - }; - function install17(registers) { - registers.registerComponentView(ParallelView_default2); - registers.registerComponentModel(ParallelModel_default); - registers.registerCoordinateSystem("parallel", parallelCreator_default); - registers.registerPreprocessor(parallelPreprocessor); - registers.registerComponentModel(AxisModel_default); - registers.registerComponentView(ParallelAxisView_default); - axisModelCreator(registers, "parallel", AxisModel_default, defaultAxisOption); - installParallelActions(registers); - } - - // node_modules/echarts/lib/chart/parallel/install.js - function install18(registers) { - use(install17); - registers.registerChartView(ParallelView_default); - registers.registerSeriesModel(ParallelSeries_default); - registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, parallelVisual_default); - } - - // node_modules/echarts/lib/chart/sankey/SankeyView.js - var SankeyPathShape = ( - /** @class */ - /* @__PURE__ */ function() { - function SankeyPathShape2() { - this.x1 = 0; - this.y1 = 0; - this.x2 = 0; - this.y2 = 0; - this.cpx1 = 0; - this.cpy1 = 0; - this.cpx2 = 0; - this.cpy2 = 0; - this.extent = 0; - } - return SankeyPathShape2; - }() - ); - var SankeyPath = ( - /** @class */ - function(_super) { - __extends(SankeyPath2, _super); - function SankeyPath2(opts) { - return _super.call(this, opts) || this; - } - SankeyPath2.prototype.getDefaultShape = function() { - return new SankeyPathShape(); - }; - SankeyPath2.prototype.buildPath = function(ctx, shape) { - var extent3 = shape.extent; - ctx.moveTo(shape.x1, shape.y1); - ctx.bezierCurveTo(shape.cpx1, shape.cpy1, shape.cpx2, shape.cpy2, shape.x2, shape.y2); - if (shape.orient === "vertical") { - ctx.lineTo(shape.x2 + extent3, shape.y2); - ctx.bezierCurveTo(shape.cpx2 + extent3, shape.cpy2, shape.cpx1 + extent3, shape.cpy1, shape.x1 + extent3, shape.y1); - } else { - ctx.lineTo(shape.x2, shape.y2 + extent3); - ctx.bezierCurveTo(shape.cpx2, shape.cpy2 + extent3, shape.cpx1, shape.cpy1 + extent3, shape.x1, shape.y1 + extent3); - } - ctx.closePath(); - }; - SankeyPath2.prototype.highlight = function() { - enterEmphasis(this); - }; - SankeyPath2.prototype.downplay = function() { - leaveEmphasis(this); - }; - return SankeyPath2; - }(Path_default) - ); - var SankeyView = ( - /** @class */ - function(_super) { - __extends(SankeyView2, _super); - function SankeyView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SankeyView2.type; - _this._focusAdjacencyDisabled = false; - return _this; - } - SankeyView2.prototype.render = function(seriesModel, ecModel, api) { - var sankeyView = this; - var graph = seriesModel.getGraph(); - var group = this.group; - var layoutInfo = seriesModel.layoutInfo; - var width = layoutInfo.width; - var height = layoutInfo.height; - var nodeData = seriesModel.getData(); - var edgeData = seriesModel.getData("edge"); - var orient = seriesModel.get("orient"); - this._model = seriesModel; - group.removeAll(); - group.x = layoutInfo.x; - group.y = layoutInfo.y; - graph.eachEdge(function(edge) { - var curve = new SankeyPath(); - var ecData = getECData(curve); - ecData.dataIndex = edge.dataIndex; - ecData.seriesIndex = seriesModel.seriesIndex; - ecData.dataType = "edge"; - var edgeModel = edge.getModel(); - var lineStyleModel = edgeModel.getModel("lineStyle"); - var curvature = lineStyleModel.get("curveness"); - var n1Layout = edge.node1.getLayout(); - var node1Model = edge.node1.getModel(); - var dragX1 = node1Model.get("localX"); - var dragY1 = node1Model.get("localY"); - var n2Layout = edge.node2.getLayout(); - var node2Model = edge.node2.getModel(); - var dragX2 = node2Model.get("localX"); - var dragY2 = node2Model.get("localY"); - var edgeLayout = edge.getLayout(); - var x1; - var y1; - var x2; - var y2; - var cpx1; - var cpy1; - var cpx2; - var cpy2; - curve.shape.extent = Math.max(1, edgeLayout.dy); - curve.shape.orient = orient; - if (orient === "vertical") { - x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + edgeLayout.sy; - y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + n1Layout.dy; - x2 = (dragX2 != null ? dragX2 * width : n2Layout.x) + edgeLayout.ty; - y2 = dragY2 != null ? dragY2 * height : n2Layout.y; - cpx1 = x1; - cpy1 = y1 * (1 - curvature) + y2 * curvature; - cpx2 = x2; - cpy2 = y1 * curvature + y2 * (1 - curvature); - } else { - x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + n1Layout.dx; - y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + edgeLayout.sy; - x2 = dragX2 != null ? dragX2 * width : n2Layout.x; - y2 = (dragY2 != null ? dragY2 * height : n2Layout.y) + edgeLayout.ty; - cpx1 = x1 * (1 - curvature) + x2 * curvature; - cpy1 = y1; - cpx2 = x1 * curvature + x2 * (1 - curvature); - cpy2 = y2; - } - curve.setShape({ - x1, - y1, - x2, - y2, - cpx1, - cpy1, - cpx2, - cpy2 - }); - curve.useStyle(lineStyleModel.getItemStyle()); - applyCurveStyle(curve.style, orient, edge); - var defaultEdgeLabelText = "" + edgeModel.get("value"); - var edgeLabelStateModels = getLabelStatesModels(edgeModel, "edgeLabel"); - setLabelStyle(curve, edgeLabelStateModels, { - labelFetcher: { - getFormattedLabel: function(dataIndex, stateName, dataType, labelDimIndex, formatter, extendParams) { - return seriesModel.getFormattedLabel( - dataIndex, - stateName, - "edge", - labelDimIndex, - // ensure edgeLabel formatter is provided - // to prevent the inheritance from `label.formatter` of the series - retrieve3(formatter, edgeLabelStateModels.normal && edgeLabelStateModels.normal.get("formatter"), defaultEdgeLabelText), - extendParams - ); - } - }, - labelDataIndex: edge.dataIndex, - defaultText: defaultEdgeLabelText - }); - curve.setTextConfig({ - position: "inside" - }); - var emphasisModel = edgeModel.getModel("emphasis"); - setStatesStylesFromModel(curve, edgeModel, "lineStyle", function(model) { - var style = model.getItemStyle(); - applyCurveStyle(style, orient, edge); - return style; - }); - group.add(curve); - edgeData.setItemGraphicEl(edge.dataIndex, curve); - var focus = emphasisModel.get("focus"); - toggleHoverEmphasis(curve, focus === "adjacency" ? edge.getAdjacentDataIndices() : focus === "trajectory" ? edge.getTrajectoryDataIndices() : focus, emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - }); - graph.eachNode(function(node) { - var layout5 = node.getLayout(); - var itemModel = node.getModel(); - var dragX = itemModel.get("localX"); - var dragY = itemModel.get("localY"); - var emphasisModel = itemModel.getModel("emphasis"); - var borderRadius = itemModel.get(["itemStyle", "borderRadius"]) || 0; - var rect = new Rect_default({ - shape: { - x: dragX != null ? dragX * width : layout5.x, - y: dragY != null ? dragY * height : layout5.y, - width: layout5.dx, - height: layout5.dy, - r: borderRadius - }, - style: itemModel.getModel("itemStyle").getItemStyle(), - z2: 10 - }); - setLabelStyle(rect, getLabelStatesModels(itemModel), { - labelFetcher: { - getFormattedLabel: function(dataIndex, stateName) { - return seriesModel.getFormattedLabel(dataIndex, stateName, "node"); - } - }, - labelDataIndex: node.dataIndex, - defaultText: node.id - }); - rect.disableLabelAnimation = true; - rect.setStyle("fill", node.getVisual("color")); - rect.setStyle("decal", node.getVisual("style").decal); - setStatesStylesFromModel(rect, itemModel); - group.add(rect); - nodeData.setItemGraphicEl(node.dataIndex, rect); - getECData(rect).dataType = "node"; - var focus = emphasisModel.get("focus"); - toggleHoverEmphasis(rect, focus === "adjacency" ? node.getAdjacentDataIndices() : focus === "trajectory" ? node.getTrajectoryDataIndices() : focus, emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - }); - nodeData.eachItemGraphicEl(function(el, dataIndex) { - var itemModel = nodeData.getItemModel(dataIndex); - if (itemModel.get("draggable")) { - el.drift = function(dx, dy) { - sankeyView._focusAdjacencyDisabled = true; - this.shape.x += dx; - this.shape.y += dy; - this.dirty(); - api.dispatchAction({ - type: "dragNode", - seriesId: seriesModel.id, - dataIndex: nodeData.getRawIndex(dataIndex), - localX: this.shape.x / width, - localY: this.shape.y / height - }); - }; - el.ondragend = function() { - sankeyView._focusAdjacencyDisabled = false; - }; - el.draggable = true; - el.cursor = "move"; - } - }); - if (!this._data && seriesModel.isAnimationEnabled()) { - group.setClipPath(createGridClipShape2(group.getBoundingRect(), seriesModel, function() { - group.removeClipPath(); - })); - } - this._data = seriesModel.getData(); - }; - SankeyView2.prototype.dispose = function() { - }; - SankeyView2.type = "sankey"; - return SankeyView2; - }(Chart_default) - ); - function applyCurveStyle(curveProps, orient, edge) { - switch (curveProps.fill) { - case "source": - curveProps.fill = edge.node1.getVisual("color"); - curveProps.decal = edge.node1.getVisual("style").decal; - break; - case "target": - curveProps.fill = edge.node2.getVisual("color"); - curveProps.decal = edge.node2.getVisual("style").decal; - break; - case "gradient": - var sourceColor = edge.node1.getVisual("color"); - var targetColor = edge.node2.getVisual("color"); - if (isString(sourceColor) && isString(targetColor)) { - curveProps.fill = new LinearGradient_default(0, 0, +(orient === "horizontal"), +(orient === "vertical"), [{ - color: sourceColor, - offset: 0 - }, { - color: targetColor, - offset: 1 - }]); - } - } - } - function createGridClipShape2(rect, seriesModel, cb) { - var rectEl = new Rect_default({ - shape: { - x: rect.x - 10, - y: rect.y - 10, - width: 0, - height: rect.height + 20 - } - }); - initProps(rectEl, { - shape: { - width: rect.width + 20 - } - }, seriesModel, cb); - return rectEl; - } - var SankeyView_default = SankeyView; - - // node_modules/echarts/lib/chart/sankey/SankeySeries.js - var SankeySeriesModel = ( - /** @class */ - function(_super) { - __extends(SankeySeriesModel2, _super); - function SankeySeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SankeySeriesModel2.type; - return _this; - } - SankeySeriesModel2.prototype.getInitialData = function(option, ecModel) { - var links = option.edges || option.links || []; - var nodes = option.data || option.nodes || []; - var levels = option.levels || []; - this.levelModels = []; - var levelModels = this.levelModels; - for (var i = 0; i < levels.length; i++) { - if (levels[i].depth != null && levels[i].depth >= 0) { - levelModels[levels[i].depth] = new Model_default(levels[i], this, ecModel); - } else { - if (true) { - throw new Error("levels[i].depth is mandatory and should be natural number"); - } - } - } - var graph = createGraphFromNodeEdge(nodes, links, this, true, beforeLink); - return graph.data; - function beforeLink(nodeData, edgeData) { - nodeData.wrapMethod("getItemModel", function(model, idx) { - var seriesModel = model.parentModel; - var layout5 = seriesModel.getData().getItemLayout(idx); - if (layout5) { - var nodeDepth = layout5.depth; - var levelModel = seriesModel.levelModels[nodeDepth]; - if (levelModel) { - model.parentModel = levelModel; - } - } - return model; - }); - edgeData.wrapMethod("getItemModel", function(model, idx) { - var seriesModel = model.parentModel; - var edge = seriesModel.getGraph().getEdgeByIndex(idx); - var layout5 = edge.node1.getLayout(); - if (layout5) { - var depth = layout5.depth; - var levelModel = seriesModel.levelModels[depth]; - if (levelModel) { - model.parentModel = levelModel; - } - } - return model; - }); - } - }; - SankeySeriesModel2.prototype.setNodePosition = function(dataIndex, localPosition) { - var nodes = this.option.data || this.option.nodes; - var dataItem = nodes[dataIndex]; - dataItem.localX = localPosition[0]; - dataItem.localY = localPosition[1]; - }; - SankeySeriesModel2.prototype.getGraph = function() { - return this.getData().graph; - }; - SankeySeriesModel2.prototype.getEdgeData = function() { - return this.getGraph().edgeData; - }; - SankeySeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - function noValue(val) { - return isNaN(val) || val == null; - } - if (dataType === "edge") { - var params = this.getDataParams(dataIndex, dataType); - var rawDataOpt = params.data; - var edgeValue = params.value; - var edgeName = rawDataOpt.source + " -- " + rawDataOpt.target; - return createTooltipMarkup("nameValue", { - name: edgeName, - value: edgeValue, - noValue: noValue(edgeValue) - }); - } else { - var node = this.getGraph().getNodeByIndex(dataIndex); - var value = node.getLayout().value; - var name_1 = this.getDataParams(dataIndex, dataType).data.name; - return createTooltipMarkup("nameValue", { - name: name_1 != null ? name_1 + "" : null, - value, - noValue: noValue(value) - }); - } - }; - SankeySeriesModel2.prototype.optionUpdated = function() { - }; - SankeySeriesModel2.prototype.getDataParams = function(dataIndex, dataType) { - var params = _super.prototype.getDataParams.call(this, dataIndex, dataType); - if (params.value == null && dataType === "node") { - var node = this.getGraph().getNodeByIndex(dataIndex); - var nodeValue = node.getLayout().value; - params.value = nodeValue; - } - return params; - }; - SankeySeriesModel2.type = "series.sankey"; - SankeySeriesModel2.defaultOption = { - // zlevel: 0, - z: 2, - coordinateSystem: "view", - left: "5%", - top: "5%", - right: "20%", - bottom: "5%", - orient: "horizontal", - nodeWidth: 20, - nodeGap: 8, - draggable: true, - layoutIterations: 32, - label: { - show: true, - position: "right", - fontSize: 12 - }, - edgeLabel: { - show: false, - fontSize: 12 - }, - levels: [], - nodeAlign: "justify", - lineStyle: { - color: "#314656", - opacity: 0.2, - curveness: 0.5 - }, - emphasis: { - label: { - show: true - }, - lineStyle: { - opacity: 0.5 - } - }, - select: { - itemStyle: { - borderColor: "#212121" - } - }, - animationEasing: "linear", - animationDuration: 1e3 - }; - return SankeySeriesModel2; - }(Series_default) - ); - var SankeySeries_default = SankeySeriesModel; - - // node_modules/echarts/lib/chart/sankey/sankeyLayout.js - function sankeyLayout(ecModel, api) { - ecModel.eachSeriesByType("sankey", function(seriesModel) { - var nodeWidth = seriesModel.get("nodeWidth"); - var nodeGap = seriesModel.get("nodeGap"); - var layoutInfo = getViewRect5(seriesModel, api); - seriesModel.layoutInfo = layoutInfo; - var width = layoutInfo.width; - var height = layoutInfo.height; - var graph = seriesModel.getGraph(); - var nodes = graph.nodes; - var edges = graph.edges; - computeNodeValues(nodes); - var filteredNodes = filter(nodes, function(node) { - return node.getLayout().value === 0; - }); - var iterations = filteredNodes.length !== 0 ? 0 : seriesModel.get("layoutIterations"); - var orient = seriesModel.get("orient"); - var nodeAlign = seriesModel.get("nodeAlign"); - layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign); - }); - } - function getViewRect5(seriesModel, api) { - return getLayoutRect(seriesModel.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }); - } - function layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign) { - computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign); - computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient); - computeEdgeDepths(nodes, orient); - } - function computeNodeValues(nodes) { - each(nodes, function(node) { - var value1 = sum(node.outEdges, getEdgeValue); - var value2 = sum(node.inEdges, getEdgeValue); - var nodeRawValue = node.getValue() || 0; - var value = Math.max(value1, value2, nodeRawValue); - node.setLayout({ - value - }, true); - }); - } - function computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign) { - var remainEdges = []; - var indegreeArr = []; - var zeroIndegrees = []; - var nextTargetNode = []; - var x = 0; - for (var i = 0; i < edges.length; i++) { - remainEdges[i] = 1; - } - for (var i = 0; i < nodes.length; i++) { - indegreeArr[i] = nodes[i].inEdges.length; - if (indegreeArr[i] === 0) { - zeroIndegrees.push(nodes[i]); - } - } - var maxNodeDepth = -1; - while (zeroIndegrees.length) { - for (var idx = 0; idx < zeroIndegrees.length; idx++) { - var node = zeroIndegrees[idx]; - var item = node.hostGraph.data.getRawDataItem(node.dataIndex); - var isItemDepth = item.depth != null && item.depth >= 0; - if (isItemDepth && item.depth > maxNodeDepth) { - maxNodeDepth = item.depth; - } - node.setLayout({ - depth: isItemDepth ? item.depth : x - }, true); - orient === "vertical" ? node.setLayout({ - dy: nodeWidth - }, true) : node.setLayout({ - dx: nodeWidth - }, true); - for (var edgeIdx = 0; edgeIdx < node.outEdges.length; edgeIdx++) { - var edge = node.outEdges[edgeIdx]; - var indexEdge = edges.indexOf(edge); - remainEdges[indexEdge] = 0; - var targetNode = edge.node2; - var nodeIndex = nodes.indexOf(targetNode); - if (--indegreeArr[nodeIndex] === 0 && nextTargetNode.indexOf(targetNode) < 0) { - nextTargetNode.push(targetNode); - } - } - } - ++x; - zeroIndegrees = nextTargetNode; - nextTargetNode = []; - } - for (var i = 0; i < remainEdges.length; i++) { - if (remainEdges[i] === 1) { - throw new Error("Sankey is a DAG, the original data has cycle!"); - } - } - var maxDepth = maxNodeDepth > x - 1 ? maxNodeDepth : x - 1; - if (nodeAlign && nodeAlign !== "left") { - adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth); - } - var kx = orient === "vertical" ? (height - nodeWidth) / maxDepth : (width - nodeWidth) / maxDepth; - scaleNodeBreadths(nodes, kx, orient); - } - function isNodeDepth(node) { - var item = node.hostGraph.data.getRawDataItem(node.dataIndex); - return item.depth != null && item.depth >= 0; - } - function adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth) { - if (nodeAlign === "right") { - var nextSourceNode = []; - var remainNodes = nodes; - var nodeHeight = 0; - while (remainNodes.length) { - for (var i = 0; i < remainNodes.length; i++) { - var node = remainNodes[i]; - node.setLayout({ - skNodeHeight: nodeHeight - }, true); - for (var j = 0; j < node.inEdges.length; j++) { - var edge = node.inEdges[j]; - if (nextSourceNode.indexOf(edge.node1) < 0) { - nextSourceNode.push(edge.node1); - } - } - } - remainNodes = nextSourceNode; - nextSourceNode = []; - ++nodeHeight; - } - each(nodes, function(node2) { - if (!isNodeDepth(node2)) { - node2.setLayout({ - depth: Math.max(0, maxDepth - node2.getLayout().skNodeHeight) - }, true); - } - }); - } else if (nodeAlign === "justify") { - moveSinksRight(nodes, maxDepth); - } - } - function moveSinksRight(nodes, maxDepth) { - each(nodes, function(node) { - if (!isNodeDepth(node) && !node.outEdges.length) { - node.setLayout({ - depth: maxDepth - }, true); - } - }); - } - function scaleNodeBreadths(nodes, kx, orient) { - each(nodes, function(node) { - var nodeDepth = node.getLayout().depth * kx; - orient === "vertical" ? node.setLayout({ - y: nodeDepth - }, true) : node.setLayout({ - x: nodeDepth - }, true); - }); - } - function computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient) { - var nodesByBreadth = prepareNodesByBreadth(nodes, orient); - initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient); - resolveCollisions(nodesByBreadth, nodeGap, height, width, orient); - for (var alpha = 1; iterations > 0; iterations--) { - alpha *= 0.99; - relaxRightToLeft(nodesByBreadth, alpha, orient); - resolveCollisions(nodesByBreadth, nodeGap, height, width, orient); - relaxLeftToRight(nodesByBreadth, alpha, orient); - resolveCollisions(nodesByBreadth, nodeGap, height, width, orient); - } - } - function prepareNodesByBreadth(nodes, orient) { - var nodesByBreadth = []; - var keyAttr = orient === "vertical" ? "y" : "x"; - var groupResult = groupData(nodes, function(node) { - return node.getLayout()[keyAttr]; - }); - groupResult.keys.sort(function(a, b) { - return a - b; - }); - each(groupResult.keys, function(key) { - nodesByBreadth.push(groupResult.buckets.get(key)); - }); - return nodesByBreadth; - } - function initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient) { - var minKy = Infinity; - each(nodesByBreadth, function(nodes) { - var n = nodes.length; - var sum2 = 0; - each(nodes, function(node) { - sum2 += node.getLayout().value; - }); - var ky = orient === "vertical" ? (width - (n - 1) * nodeGap) / sum2 : (height - (n - 1) * nodeGap) / sum2; - if (ky < minKy) { - minKy = ky; - } - }); - each(nodesByBreadth, function(nodes) { - each(nodes, function(node, i) { - var nodeDy = node.getLayout().value * minKy; - if (orient === "vertical") { - node.setLayout({ - x: i - }, true); - node.setLayout({ - dx: nodeDy - }, true); - } else { - node.setLayout({ - y: i - }, true); - node.setLayout({ - dy: nodeDy - }, true); - } - }); - }); - each(edges, function(edge) { - var edgeDy = +edge.getValue() * minKy; - edge.setLayout({ - dy: edgeDy - }, true); - }); - } - function resolveCollisions(nodesByBreadth, nodeGap, height, width, orient) { - var keyAttr = orient === "vertical" ? "x" : "y"; - each(nodesByBreadth, function(nodes) { - nodes.sort(function(a, b) { - return a.getLayout()[keyAttr] - b.getLayout()[keyAttr]; - }); - var nodeX; - var node; - var dy; - var y0 = 0; - var n = nodes.length; - var nodeDyAttr = orient === "vertical" ? "dx" : "dy"; - for (var i = 0; i < n; i++) { - node = nodes[i]; - dy = y0 - node.getLayout()[keyAttr]; - if (dy > 0) { - nodeX = node.getLayout()[keyAttr] + dy; - orient === "vertical" ? node.setLayout({ - x: nodeX - }, true) : node.setLayout({ - y: nodeX - }, true); - } - y0 = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap; - } - var viewWidth = orient === "vertical" ? width : height; - dy = y0 - nodeGap - viewWidth; - if (dy > 0) { - nodeX = node.getLayout()[keyAttr] - dy; - orient === "vertical" ? node.setLayout({ - x: nodeX - }, true) : node.setLayout({ - y: nodeX - }, true); - y0 = nodeX; - for (var i = n - 2; i >= 0; --i) { - node = nodes[i]; - dy = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap - y0; - if (dy > 0) { - nodeX = node.getLayout()[keyAttr] - dy; - orient === "vertical" ? node.setLayout({ - x: nodeX - }, true) : node.setLayout({ - y: nodeX - }, true); - } - y0 = node.getLayout()[keyAttr]; - } - } - }); - } - function relaxRightToLeft(nodesByBreadth, alpha, orient) { - each(nodesByBreadth.slice().reverse(), function(nodes) { - each(nodes, function(node) { - if (node.outEdges.length) { - var y = sum(node.outEdges, weightedTarget, orient) / sum(node.outEdges, getEdgeValue); - if (isNaN(y)) { - var len2 = node.outEdges.length; - y = len2 ? sum(node.outEdges, centerTarget, orient) / len2 : 0; - } - if (orient === "vertical") { - var nodeX = node.getLayout().x + (y - center2(node, orient)) * alpha; - node.setLayout({ - x: nodeX - }, true); - } else { - var nodeY = node.getLayout().y + (y - center2(node, orient)) * alpha; - node.setLayout({ - y: nodeY - }, true); - } - } - }); - }); - } - function weightedTarget(edge, orient) { - return center2(edge.node2, orient) * edge.getValue(); - } - function centerTarget(edge, orient) { - return center2(edge.node2, orient); - } - function weightedSource(edge, orient) { - return center2(edge.node1, orient) * edge.getValue(); - } - function centerSource(edge, orient) { - return center2(edge.node1, orient); - } - function center2(node, orient) { - return orient === "vertical" ? node.getLayout().x + node.getLayout().dx / 2 : node.getLayout().y + node.getLayout().dy / 2; - } - function getEdgeValue(edge) { - return edge.getValue(); - } - function sum(array, cb, orient) { - var sum2 = 0; - var len2 = array.length; - var i = -1; - while (++i < len2) { - var value = +cb(array[i], orient); - if (!isNaN(value)) { - sum2 += value; - } - } - return sum2; - } - function relaxLeftToRight(nodesByBreadth, alpha, orient) { - each(nodesByBreadth, function(nodes) { - each(nodes, function(node) { - if (node.inEdges.length) { - var y = sum(node.inEdges, weightedSource, orient) / sum(node.inEdges, getEdgeValue); - if (isNaN(y)) { - var len2 = node.inEdges.length; - y = len2 ? sum(node.inEdges, centerSource, orient) / len2 : 0; - } - if (orient === "vertical") { - var nodeX = node.getLayout().x + (y - center2(node, orient)) * alpha; - node.setLayout({ - x: nodeX - }, true); - } else { - var nodeY = node.getLayout().y + (y - center2(node, orient)) * alpha; - node.setLayout({ - y: nodeY - }, true); - } - } - }); - }); - } - function computeEdgeDepths(nodes, orient) { - var keyAttr = orient === "vertical" ? "x" : "y"; - each(nodes, function(node) { - node.outEdges.sort(function(a, b) { - return a.node2.getLayout()[keyAttr] - b.node2.getLayout()[keyAttr]; - }); - node.inEdges.sort(function(a, b) { - return a.node1.getLayout()[keyAttr] - b.node1.getLayout()[keyAttr]; - }); - }); - each(nodes, function(node) { - var sy = 0; - var ty = 0; - each(node.outEdges, function(edge) { - edge.setLayout({ - sy - }, true); - sy += edge.getLayout().dy; - }); - each(node.inEdges, function(edge) { - edge.setLayout({ - ty - }, true); - ty += edge.getLayout().dy; - }); - }); - } - - // node_modules/echarts/lib/chart/sankey/sankeyVisual.js - function sankeyVisual(ecModel) { - ecModel.eachSeriesByType("sankey", function(seriesModel) { - var graph = seriesModel.getGraph(); - var nodes = graph.nodes; - var edges = graph.edges; - if (nodes.length) { - var minValue_1 = Infinity; - var maxValue_1 = -Infinity; - each(nodes, function(node) { - var nodeValue = node.getLayout().value; - if (nodeValue < minValue_1) { - minValue_1 = nodeValue; - } - if (nodeValue > maxValue_1) { - maxValue_1 = nodeValue; - } - }); - each(nodes, function(node) { - var mapping = new VisualMapping_default({ - type: "color", - mappingMethod: "linear", - dataExtent: [minValue_1, maxValue_1], - visual: seriesModel.get("color") - }); - var mapValueToColor = mapping.mapValueToVisual(node.getLayout().value); - var customColor = node.getModel().get(["itemStyle", "color"]); - if (customColor != null) { - node.setVisual("color", customColor); - node.setVisual("style", { - fill: customColor - }); - } else { - node.setVisual("color", mapValueToColor); - node.setVisual("style", { - fill: mapValueToColor - }); - } - }); - } - if (edges.length) { - each(edges, function(edge) { - var edgeStyle = edge.getModel().get("lineStyle"); - edge.setVisual("style", edgeStyle); - }); - } - }); - } - - // node_modules/echarts/lib/chart/sankey/install.js - function install19(registers) { - registers.registerChartView(SankeyView_default); - registers.registerSeriesModel(SankeySeries_default); - registers.registerLayout(sankeyLayout); - registers.registerVisual(sankeyVisual); - registers.registerAction({ - type: "dragNode", - event: "dragnode", - // here can only use 'update' now, other value is not support in echarts. - update: "update" - }, function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "series", - subType: "sankey", - query: payload - }, function(seriesModel) { - seriesModel.setNodePosition(payload.dataIndex, [payload.localX, payload.localY]); - }); - }); - } - - // node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js - var WhiskerBoxCommonMixin = ( - /** @class */ - function() { - function WhiskerBoxCommonMixin2() { - } - WhiskerBoxCommonMixin2.prototype._hasEncodeRule = function(key) { - var encodeRules = this.getEncode(); - return encodeRules && encodeRules.get(key) != null; - }; - WhiskerBoxCommonMixin2.prototype.getInitialData = function(option, ecModel) { - var ordinalMeta; - var xAxisModel = ecModel.getComponent("xAxis", this.get("xAxisIndex")); - var yAxisModel = ecModel.getComponent("yAxis", this.get("yAxisIndex")); - var xAxisType = xAxisModel.get("type"); - var yAxisType = yAxisModel.get("type"); - var addOrdinal; - if (xAxisType === "category") { - option.layout = "horizontal"; - ordinalMeta = xAxisModel.getOrdinalMeta(); - addOrdinal = !this._hasEncodeRule("x"); - } else if (yAxisType === "category") { - option.layout = "vertical"; - ordinalMeta = yAxisModel.getOrdinalMeta(); - addOrdinal = !this._hasEncodeRule("y"); - } else { - option.layout = option.layout || "horizontal"; - } - var coordDims = ["x", "y"]; - var baseAxisDimIndex = option.layout === "horizontal" ? 0 : 1; - var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex]; - var otherAxisDim = coordDims[1 - baseAxisDimIndex]; - var axisModels = [xAxisModel, yAxisModel]; - var baseAxisType = axisModels[baseAxisDimIndex].get("type"); - var otherAxisType = axisModels[1 - baseAxisDimIndex].get("type"); - var data = option.data; - if (data && addOrdinal) { - var newOptionData_1 = []; - each(data, function(item, index) { - var newItem; - if (isArray(item)) { - newItem = item.slice(); - item.unshift(index); - } else if (isArray(item.value)) { - newItem = extend({}, item); - newItem.value = newItem.value.slice(); - item.value.unshift(index); - } else { - newItem = item; - } - newOptionData_1.push(newItem); - }); - option.data = newOptionData_1; - } - var defaultValueDimensions = this.defaultValueDimensions; - var coordDimensions = [{ - name: baseAxisDim, - type: getDimensionTypeByAxis(baseAxisType), - ordinalMeta, - otherDims: { - tooltip: false, - itemName: 0 - }, - dimsDef: ["base"] - }, { - name: otherAxisDim, - type: getDimensionTypeByAxis(otherAxisType), - dimsDef: defaultValueDimensions.slice() - }]; - return createSeriesDataSimply(this, { - coordDimensions, - dimensionsCount: defaultValueDimensions.length + 1, - encodeDefaulter: curry(makeSeriesEncodeForAxisCoordSys, coordDimensions, this) - }); - }; - WhiskerBoxCommonMixin2.prototype.getBaseAxis = function() { - var dim = this._baseAxisDim; - return this.ecModel.getComponent(dim + "Axis", this.get(dim + "AxisIndex")).axis; - }; - return WhiskerBoxCommonMixin2; - }() - ); - - // node_modules/echarts/lib/chart/boxplot/BoxplotSeries.js - var BoxplotSeriesModel = ( - /** @class */ - function(_super) { - __extends(BoxplotSeriesModel2, _super); - function BoxplotSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = BoxplotSeriesModel2.type; - _this.defaultValueDimensions = [{ - name: "min", - defaultTooltip: true - }, { - name: "Q1", - defaultTooltip: true - }, { - name: "median", - defaultTooltip: true - }, { - name: "Q3", - defaultTooltip: true - }, { - name: "max", - defaultTooltip: true - }]; - _this.visualDrawType = "stroke"; - return _this; - } - BoxplotSeriesModel2.type = "series.boxplot"; - BoxplotSeriesModel2.dependencies = ["xAxis", "yAxis", "grid"]; - BoxplotSeriesModel2.defaultOption = { - // zlevel: 0, - z: 2, - coordinateSystem: "cartesian2d", - legendHoverLink: true, - layout: null, - boxWidth: [7, 50], - itemStyle: { - color: "#fff", - borderWidth: 1 - }, - emphasis: { - scale: true, - itemStyle: { - borderWidth: 2, - shadowBlur: 5, - shadowOffsetX: 1, - shadowOffsetY: 1, - shadowColor: "rgba(0,0,0,0.2)" - } - }, - animationDuration: 800 - }; - return BoxplotSeriesModel2; - }(Series_default) - ); - mixin(BoxplotSeriesModel, WhiskerBoxCommonMixin, true); - var BoxplotSeries_default = BoxplotSeriesModel; - - // node_modules/echarts/lib/chart/boxplot/BoxplotView.js - var BoxplotView = ( - /** @class */ - function(_super) { - __extends(BoxplotView2, _super); - function BoxplotView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = BoxplotView2.type; - return _this; - } - BoxplotView2.prototype.render = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var group = this.group; - var oldData = this._data; - if (!this._data) { - group.removeAll(); - } - var constDim = seriesModel.get("layout") === "horizontal" ? 1 : 0; - data.diff(oldData).add(function(newIdx) { - if (data.hasValue(newIdx)) { - var itemLayout = data.getItemLayout(newIdx); - var symbolEl = createNormalBox(itemLayout, data, newIdx, constDim, true); - data.setItemGraphicEl(newIdx, symbolEl); - group.add(symbolEl); - } - }).update(function(newIdx, oldIdx) { - var symbolEl = oldData.getItemGraphicEl(oldIdx); - if (!data.hasValue(newIdx)) { - group.remove(symbolEl); - return; - } - var itemLayout = data.getItemLayout(newIdx); - if (!symbolEl) { - symbolEl = createNormalBox(itemLayout, data, newIdx, constDim); - } else { - saveOldStyle(symbolEl); - updateNormalBoxData(itemLayout, symbolEl, data, newIdx); - } - group.add(symbolEl); - data.setItemGraphicEl(newIdx, symbolEl); - }).remove(function(oldIdx) { - var el = oldData.getItemGraphicEl(oldIdx); - el && group.remove(el); - }).execute(); - this._data = data; - }; - BoxplotView2.prototype.remove = function(ecModel) { - var group = this.group; - var data = this._data; - this._data = null; - data && data.eachItemGraphicEl(function(el) { - el && group.remove(el); - }); - }; - BoxplotView2.type = "boxplot"; - return BoxplotView2; - }(Chart_default) - ); - var BoxPathShape = ( - /** @class */ - /* @__PURE__ */ function() { - function BoxPathShape2() { - } - return BoxPathShape2; - }() - ); - var BoxPath = ( - /** @class */ - function(_super) { - __extends(BoxPath2, _super); - function BoxPath2(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "boxplotBoxPath"; - return _this; - } - BoxPath2.prototype.getDefaultShape = function() { - return new BoxPathShape(); - }; - BoxPath2.prototype.buildPath = function(ctx, shape) { - var ends = shape.points; - var i = 0; - ctx.moveTo(ends[i][0], ends[i][1]); - i++; - for (; i < 4; i++) { - ctx.lineTo(ends[i][0], ends[i][1]); - } - ctx.closePath(); - for (; i < ends.length; i++) { - ctx.moveTo(ends[i][0], ends[i][1]); - i++; - ctx.lineTo(ends[i][0], ends[i][1]); - } - }; - return BoxPath2; - }(Path_default) - ); - function createNormalBox(itemLayout, data, dataIndex, constDim, isInit) { - var ends = itemLayout.ends; - var el = new BoxPath({ - shape: { - points: isInit ? transInit(ends, constDim, itemLayout) : ends - } - }); - updateNormalBoxData(itemLayout, el, data, dataIndex, isInit); - return el; - } - function updateNormalBoxData(itemLayout, el, data, dataIndex, isInit) { - var seriesModel = data.hostModel; - var updateMethod = graphic_exports[isInit ? "initProps" : "updateProps"]; - updateMethod(el, { - shape: { - points: itemLayout.ends - } - }, seriesModel, dataIndex); - el.useStyle(data.getItemVisual(dataIndex, "style")); - el.style.strokeNoScale = true; - el.z2 = 100; - var itemModel = data.getItemModel(dataIndex); - var emphasisModel = itemModel.getModel("emphasis"); - setStatesStylesFromModel(el, itemModel); - toggleHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - } - function transInit(points4, dim, itemLayout) { - return map(points4, function(point) { - point = point.slice(); - point[dim] = itemLayout.initBaseline; - return point; - }); - } - var BoxplotView_default = BoxplotView; - - // node_modules/echarts/lib/chart/boxplot/boxplotLayout.js - var each7 = each; - function boxplotLayout(ecModel) { - var groupResult = groupSeriesByAxis(ecModel); - each7(groupResult, function(groupItem) { - var seriesModels = groupItem.seriesModels; - if (!seriesModels.length) { - return; - } - calculateBase(groupItem); - each7(seriesModels, function(seriesModel, idx) { - layoutSingleSeries(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]); - }); - }); - } - function groupSeriesByAxis(ecModel) { - var result = []; - var axisList = []; - ecModel.eachSeriesByType("boxplot", function(seriesModel) { - var baseAxis = seriesModel.getBaseAxis(); - var idx = indexOf(axisList, baseAxis); - if (idx < 0) { - idx = axisList.length; - axisList[idx] = baseAxis; - result[idx] = { - axis: baseAxis, - seriesModels: [] - }; - } - result[idx].seriesModels.push(seriesModel); - }); - return result; - } - function calculateBase(groupItem) { - var baseAxis = groupItem.axis; - var seriesModels = groupItem.seriesModels; - var seriesCount = seriesModels.length; - var boxWidthList = groupItem.boxWidthList = []; - var boxOffsetList = groupItem.boxOffsetList = []; - var boundList = []; - var bandWidth; - if (baseAxis.type === "category") { - bandWidth = baseAxis.getBandWidth(); - } else { - var maxDataCount_1 = 0; - each7(seriesModels, function(seriesModel) { - maxDataCount_1 = Math.max(maxDataCount_1, seriesModel.getData().count()); - }); - var extent3 = baseAxis.getExtent(); - bandWidth = Math.abs(extent3[1] - extent3[0]) / maxDataCount_1; - } - each7(seriesModels, function(seriesModel) { - var boxWidthBound = seriesModel.get("boxWidth"); - if (!isArray(boxWidthBound)) { - boxWidthBound = [boxWidthBound, boxWidthBound]; - } - boundList.push([parsePercent2(boxWidthBound[0], bandWidth) || 0, parsePercent2(boxWidthBound[1], bandWidth) || 0]); - }); - var availableWidth = bandWidth * 0.8 - 2; - var boxGap = availableWidth / seriesCount * 0.3; - var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount; - var base2 = boxWidth / 2 - availableWidth / 2; - each7(seriesModels, function(seriesModel, idx) { - boxOffsetList.push(base2); - base2 += boxGap + boxWidth; - boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1])); - }); - } - function layoutSingleSeries(seriesModel, offset3, boxWidth) { - var coordSys = seriesModel.coordinateSystem; - var data = seriesModel.getData(); - var halfWidth = boxWidth / 2; - var cDimIdx = seriesModel.get("layout") === "horizontal" ? 0 : 1; - var vDimIdx = 1 - cDimIdx; - var coordDims = ["x", "y"]; - var cDim = data.mapDimension(coordDims[cDimIdx]); - var vDims = data.mapDimensionsAll(coordDims[vDimIdx]); - if (cDim == null || vDims.length < 5) { - return; - } - for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) { - var axisDimVal = data.get(cDim, dataIndex); - var median = getPoint(axisDimVal, vDims[2], dataIndex); - var end1 = getPoint(axisDimVal, vDims[0], dataIndex); - var end2 = getPoint(axisDimVal, vDims[1], dataIndex); - var end4 = getPoint(axisDimVal, vDims[3], dataIndex); - var end5 = getPoint(axisDimVal, vDims[4], dataIndex); - var ends = []; - addBodyEnd(ends, end2, false); - addBodyEnd(ends, end4, true); - ends.push(end1, end2, end5, end4); - layEndLine(ends, end1); - layEndLine(ends, end5); - layEndLine(ends, median); - data.setItemLayout(dataIndex, { - initBaseline: median[vDimIdx], - ends - }); - } - function getPoint(axisDimVal2, dim, dataIndex2) { - var val = data.get(dim, dataIndex2); - var p = []; - p[cDimIdx] = axisDimVal2; - p[vDimIdx] = val; - var point; - if (isNaN(axisDimVal2) || isNaN(val)) { - point = [NaN, NaN]; - } else { - point = coordSys.dataToPoint(p); - point[cDimIdx] += offset3; - } - return point; - } - function addBodyEnd(ends2, point, start3) { - var point1 = point.slice(); - var point2 = point.slice(); - point1[cDimIdx] += halfWidth; - point2[cDimIdx] -= halfWidth; - start3 ? ends2.push(point1, point2) : ends2.push(point2, point1); - } - function layEndLine(ends2, endCenter) { - var from = endCenter.slice(); - var to = endCenter.slice(); - from[cDimIdx] -= halfWidth; - to[cDimIdx] += halfWidth; - ends2.push(from, to); - } - } - - // node_modules/echarts/lib/chart/boxplot/prepareBoxplotData.js - function prepareBoxplotData(rawData, opt) { - opt = opt || {}; - var boxData = []; - var outliers = []; - var boundIQR = opt.boundIQR; - var useExtreme = boundIQR === "none" || boundIQR === 0; - for (var i = 0; i < rawData.length; i++) { - var ascList = asc(rawData[i].slice()); - var Q1 = quantile(ascList, 0.25); - var Q2 = quantile(ascList, 0.5); - var Q3 = quantile(ascList, 0.75); - var min4 = ascList[0]; - var max4 = ascList[ascList.length - 1]; - var bound = (boundIQR == null ? 1.5 : boundIQR) * (Q3 - Q1); - var low = useExtreme ? min4 : Math.max(min4, Q1 - bound); - var high = useExtreme ? max4 : Math.min(max4, Q3 + bound); - var itemNameFormatter = opt.itemNameFormatter; - var itemName = isFunction(itemNameFormatter) ? itemNameFormatter({ - value: i - }) : isString(itemNameFormatter) ? itemNameFormatter.replace("{value}", i + "") : i + ""; - boxData.push([itemName, low, Q1, Q2, Q3, high]); - for (var j = 0; j < ascList.length; j++) { - var dataItem = ascList[j]; - if (dataItem < low || dataItem > high) { - var outlier = [itemName, dataItem]; - outliers.push(outlier); - } - } - } - return { - boxData, - outliers - }; - } - - // node_modules/echarts/lib/chart/boxplot/boxplotTransform.js - var boxplotTransform = { - type: "echarts:boxplot", - transform: function transform(params) { - var upstream = params.upstream; - if (upstream.sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS) { - var errMsg = ""; - if (true) { - errMsg = makePrintable("source data is not applicable for this boxplot transform. Expect number[][]."); - } - throwError(errMsg); - } - var result = prepareBoxplotData(upstream.getRawData(), params.config); - return [{ - dimensions: ["ItemName", "Low", "Q1", "Q2", "Q3", "High"], - data: result.boxData - }, { - data: result.outliers - }]; - } - }; - - // node_modules/echarts/lib/chart/boxplot/install.js - function install20(registers) { - registers.registerSeriesModel(BoxplotSeries_default); - registers.registerChartView(BoxplotView_default); - registers.registerLayout(boxplotLayout); - registers.registerTransform(boxplotTransform); - } - - // node_modules/echarts/lib/chart/candlestick/candlestickVisual.js - var positiveBorderColorQuery = ["itemStyle", "borderColor"]; - var negativeBorderColorQuery = ["itemStyle", "borderColor0"]; - var dojiBorderColorQuery = ["itemStyle", "borderColorDoji"]; - var positiveColorQuery = ["itemStyle", "color"]; - var negativeColorQuery = ["itemStyle", "color0"]; - function getColor(sign, model) { - return model.get(sign > 0 ? positiveColorQuery : negativeColorQuery); - } - function getBorderColor(sign, model) { - return model.get(sign === 0 ? dojiBorderColorQuery : sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery); - } - var candlestickVisual = { - seriesType: "candlestick", - plan: createRenderPlanner(), - // For legend. - performRawSeries: true, - reset: function(seriesModel, ecModel) { - if (ecModel.isSeriesFiltered(seriesModel)) { - return; - } - var isLargeRender = seriesModel.pipelineContext.large; - return !isLargeRender && { - progress: function(params, data) { - var dataIndex; - while ((dataIndex = params.next()) != null) { - var itemModel = data.getItemModel(dataIndex); - var sign = data.getItemLayout(dataIndex).sign; - var style = itemModel.getItemStyle(); - style.fill = getColor(sign, itemModel); - style.stroke = getBorderColor(sign, itemModel) || style.fill; - var existsStyle = data.ensureUniqueItemVisual(dataIndex, "style"); - extend(existsStyle, style); - } - } - }; - } - }; - var candlestickVisual_default = candlestickVisual; - - // node_modules/echarts/lib/chart/candlestick/CandlestickView.js - var SKIP_PROPS = ["color", "borderColor"]; - var CandlestickView = ( - /** @class */ - function(_super) { - __extends(CandlestickView2, _super); - function CandlestickView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CandlestickView2.type; - return _this; - } - CandlestickView2.prototype.render = function(seriesModel, ecModel, api) { - this.group.removeClipPath(); - this._progressiveEls = null; - this._updateDrawMode(seriesModel); - this._isLargeDraw ? this._renderLarge(seriesModel) : this._renderNormal(seriesModel); - }; - CandlestickView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) { - this._clear(); - this._updateDrawMode(seriesModel); - }; - CandlestickView2.prototype.incrementalRender = function(params, seriesModel, ecModel, api) { - this._progressiveEls = []; - this._isLargeDraw ? this._incrementalRenderLarge(params, seriesModel) : this._incrementalRenderNormal(params, seriesModel); - }; - CandlestickView2.prototype.eachRendered = function(cb) { - traverseElements(this._progressiveEls || this.group, cb); - }; - CandlestickView2.prototype._updateDrawMode = function(seriesModel) { - var isLargeDraw = seriesModel.pipelineContext.large; - if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) { - this._isLargeDraw = isLargeDraw; - this._clear(); - } - }; - CandlestickView2.prototype._renderNormal = function(seriesModel) { - var data = seriesModel.getData(); - var oldData = this._data; - var group = this.group; - var isSimpleBox = data.getLayout("isSimpleBox"); - var needsClip = seriesModel.get("clip", true); - var coord = seriesModel.coordinateSystem; - var clipArea = coord.getArea && coord.getArea(); - if (!this._data) { - group.removeAll(); - } - data.diff(oldData).add(function(newIdx) { - if (data.hasValue(newIdx)) { - var itemLayout = data.getItemLayout(newIdx); - if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) { - return; - } - var el = createNormalBox2(itemLayout, newIdx, true); - initProps(el, { - shape: { - points: itemLayout.ends - } - }, seriesModel, newIdx); - setBoxCommon(el, data, newIdx, isSimpleBox); - group.add(el); - data.setItemGraphicEl(newIdx, el); - } - }).update(function(newIdx, oldIdx) { - var el = oldData.getItemGraphicEl(oldIdx); - if (!data.hasValue(newIdx)) { - group.remove(el); - return; - } - var itemLayout = data.getItemLayout(newIdx); - if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) { - group.remove(el); - return; - } - if (!el) { - el = createNormalBox2(itemLayout, newIdx); - } else { - updateProps(el, { - shape: { - points: itemLayout.ends - } - }, seriesModel, newIdx); - saveOldStyle(el); - } - setBoxCommon(el, data, newIdx, isSimpleBox); - group.add(el); - data.setItemGraphicEl(newIdx, el); - }).remove(function(oldIdx) { - var el = oldData.getItemGraphicEl(oldIdx); - el && group.remove(el); - }).execute(); - this._data = data; - }; - CandlestickView2.prototype._renderLarge = function(seriesModel) { - this._clear(); - createLarge2(seriesModel, this.group); - var clipPath = seriesModel.get("clip", true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null; - if (clipPath) { - this.group.setClipPath(clipPath); - } else { - this.group.removeClipPath(); - } - }; - CandlestickView2.prototype._incrementalRenderNormal = function(params, seriesModel) { - var data = seriesModel.getData(); - var isSimpleBox = data.getLayout("isSimpleBox"); - var dataIndex; - while ((dataIndex = params.next()) != null) { - var itemLayout = data.getItemLayout(dataIndex); - var el = createNormalBox2(itemLayout, dataIndex); - setBoxCommon(el, data, dataIndex, isSimpleBox); - el.incremental = true; - this.group.add(el); - this._progressiveEls.push(el); - } - }; - CandlestickView2.prototype._incrementalRenderLarge = function(params, seriesModel) { - createLarge2(seriesModel, this.group, this._progressiveEls, true); - }; - CandlestickView2.prototype.remove = function(ecModel) { - this._clear(); - }; - CandlestickView2.prototype._clear = function() { - this.group.removeAll(); - this._data = null; - }; - CandlestickView2.type = "candlestick"; - return CandlestickView2; - }(Chart_default) - ); - var NormalBoxPathShape = ( - /** @class */ - /* @__PURE__ */ function() { - function NormalBoxPathShape2() { - } - return NormalBoxPathShape2; - }() - ); - var NormalBoxPath = ( - /** @class */ - function(_super) { - __extends(NormalBoxPath2, _super); - function NormalBoxPath2(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "normalCandlestickBox"; - return _this; - } - NormalBoxPath2.prototype.getDefaultShape = function() { - return new NormalBoxPathShape(); - }; - NormalBoxPath2.prototype.buildPath = function(ctx, shape) { - var ends = shape.points; - if (this.__simpleBox) { - ctx.moveTo(ends[4][0], ends[4][1]); - ctx.lineTo(ends[6][0], ends[6][1]); - } else { - ctx.moveTo(ends[0][0], ends[0][1]); - ctx.lineTo(ends[1][0], ends[1][1]); - ctx.lineTo(ends[2][0], ends[2][1]); - ctx.lineTo(ends[3][0], ends[3][1]); - ctx.closePath(); - ctx.moveTo(ends[4][0], ends[4][1]); - ctx.lineTo(ends[5][0], ends[5][1]); - ctx.moveTo(ends[6][0], ends[6][1]); - ctx.lineTo(ends[7][0], ends[7][1]); - } - }; - return NormalBoxPath2; - }(Path_default) - ); - function createNormalBox2(itemLayout, dataIndex, isInit) { - var ends = itemLayout.ends; - return new NormalBoxPath({ - shape: { - points: isInit ? transInit2(ends, itemLayout) : ends - }, - z2: 100 - }); - } - function isNormalBoxClipped(clipArea, itemLayout) { - var clipped = true; - for (var i = 0; i < itemLayout.ends.length; i++) { - if (clipArea.contain(itemLayout.ends[i][0], itemLayout.ends[i][1])) { - clipped = false; - break; - } - } - return clipped; - } - function setBoxCommon(el, data, dataIndex, isSimpleBox) { - var itemModel = data.getItemModel(dataIndex); - el.useStyle(data.getItemVisual(dataIndex, "style")); - el.style.strokeNoScale = true; - el.__simpleBox = isSimpleBox; - setStatesStylesFromModel(el, itemModel); - var sign = data.getItemLayout(dataIndex).sign; - each(el.states, function(state, stateName) { - var stateModel = itemModel.getModel(stateName); - var color = getColor(sign, stateModel); - var borderColor = getBorderColor(sign, stateModel) || color; - var stateStyle = state.style || (state.style = {}); - color && (stateStyle.fill = color); - borderColor && (stateStyle.stroke = borderColor); - }); - var emphasisModel = itemModel.getModel("emphasis"); - toggleHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - } - function transInit2(points4, itemLayout) { - return map(points4, function(point) { - point = point.slice(); - point[1] = itemLayout.initBaseline; - return point; - }); - } - var LargeBoxPathShape = ( - /** @class */ - /* @__PURE__ */ function() { - function LargeBoxPathShape2() { - } - return LargeBoxPathShape2; - }() - ); - var LargeBoxPath = ( - /** @class */ - function(_super) { - __extends(LargeBoxPath2, _super); - function LargeBoxPath2(opts) { - var _this = _super.call(this, opts) || this; - _this.type = "largeCandlestickBox"; - return _this; - } - LargeBoxPath2.prototype.getDefaultShape = function() { - return new LargeBoxPathShape(); - }; - LargeBoxPath2.prototype.buildPath = function(ctx, shape) { - var points4 = shape.points; - for (var i = 0; i < points4.length; ) { - if (this.__sign === points4[i++]) { - var x = points4[i++]; - ctx.moveTo(x, points4[i++]); - ctx.lineTo(x, points4[i++]); - } else { - i += 3; - } - } - }; - return LargeBoxPath2; - }(Path_default) - ); - function createLarge2(seriesModel, group, progressiveEls, incremental) { - var data = seriesModel.getData(); - var largePoints = data.getLayout("largePoints"); - var elP = new LargeBoxPath({ - shape: { - points: largePoints - }, - __sign: 1, - ignoreCoarsePointer: true - }); - group.add(elP); - var elN = new LargeBoxPath({ - shape: { - points: largePoints - }, - __sign: -1, - ignoreCoarsePointer: true - }); - group.add(elN); - var elDoji = new LargeBoxPath({ - shape: { - points: largePoints - }, - __sign: 0, - ignoreCoarsePointer: true - }); - group.add(elDoji); - setLargeStyle(1, elP, seriesModel, data); - setLargeStyle(-1, elN, seriesModel, data); - setLargeStyle(0, elDoji, seriesModel, data); - if (incremental) { - elP.incremental = true; - elN.incremental = true; - } - if (progressiveEls) { - progressiveEls.push(elP, elN); - } - } - function setLargeStyle(sign, el, seriesModel, data) { - var borderColor = getBorderColor(sign, seriesModel) || getColor(sign, seriesModel); - var itemStyle = seriesModel.getModel("itemStyle").getItemStyle(SKIP_PROPS); - el.useStyle(itemStyle); - el.style.fill = null; - el.style.stroke = borderColor; - } - var CandlestickView_default = CandlestickView; - - // node_modules/echarts/lib/chart/candlestick/CandlestickSeries.js - var CandlestickSeriesModel = ( - /** @class */ - function(_super) { - __extends(CandlestickSeriesModel2, _super); - function CandlestickSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CandlestickSeriesModel2.type; - _this.defaultValueDimensions = [{ - name: "open", - defaultTooltip: true - }, { - name: "close", - defaultTooltip: true - }, { - name: "lowest", - defaultTooltip: true - }, { - name: "highest", - defaultTooltip: true - }]; - return _this; - } - CandlestickSeriesModel2.prototype.getShadowDim = function() { - return "open"; - }; - CandlestickSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) { - var itemLayout = data.getItemLayout(dataIndex); - return itemLayout && selectors.rect(itemLayout.brushRect); - }; - CandlestickSeriesModel2.type = "series.candlestick"; - CandlestickSeriesModel2.dependencies = ["xAxis", "yAxis", "grid"]; - CandlestickSeriesModel2.defaultOption = { - // zlevel: 0, - z: 2, - coordinateSystem: "cartesian2d", - legendHoverLink: true, - // xAxisIndex: 0, - // yAxisIndex: 0, - layout: null, - clip: true, - itemStyle: { - color: "#eb5454", - color0: "#47b262", - borderColor: "#eb5454", - borderColor0: "#47b262", - borderColorDoji: null, - // borderColor: '#d24040', - // borderColor0: '#398f4f', - borderWidth: 1 - }, - emphasis: { - itemStyle: { - borderWidth: 2 - } - }, - barMaxWidth: null, - barMinWidth: null, - barWidth: null, - large: true, - largeThreshold: 600, - progressive: 3e3, - progressiveThreshold: 1e4, - progressiveChunkMode: "mod", - animationEasing: "linear", - animationDuration: 300 - }; - return CandlestickSeriesModel2; - }(Series_default) - ); - mixin(CandlestickSeriesModel, WhiskerBoxCommonMixin, true); - var CandlestickSeries_default = CandlestickSeriesModel; - - // node_modules/echarts/lib/chart/candlestick/preprocessor.js - function candlestickPreprocessor(option) { - if (!option || !isArray(option.series)) { - return; - } - each(option.series, function(seriesItem) { - if (isObject(seriesItem) && seriesItem.type === "k") { - seriesItem.type = "candlestick"; - } - }); - } - - // node_modules/echarts/lib/chart/candlestick/candlestickLayout.js - var candlestickLayout = { - seriesType: "candlestick", - plan: createRenderPlanner(), - reset: function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - var data = seriesModel.getData(); - var candleWidth = calculateCandleWidth(seriesModel, data); - var cDimIdx = 0; - var vDimIdx = 1; - var coordDims = ["x", "y"]; - var cDimI = data.getDimensionIndex(data.mapDimension(coordDims[cDimIdx])); - var vDimsI = map(data.mapDimensionsAll(coordDims[vDimIdx]), data.getDimensionIndex, data); - var openDimI = vDimsI[0]; - var closeDimI = vDimsI[1]; - var lowestDimI = vDimsI[2]; - var highestDimI = vDimsI[3]; - data.setLayout({ - candleWidth, - // The value is experimented visually. - isSimpleBox: candleWidth <= 1.3 - }); - if (cDimI < 0 || vDimsI.length < 4) { - return; - } - return { - progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress - }; - function normalProgress(params, data2) { - var dataIndex; - var store = data2.getStore(); - while ((dataIndex = params.next()) != null) { - var axisDimVal = store.get(cDimI, dataIndex); - var openVal = store.get(openDimI, dataIndex); - var closeVal = store.get(closeDimI, dataIndex); - var lowestVal = store.get(lowestDimI, dataIndex); - var highestVal = store.get(highestDimI, dataIndex); - var ocLow = Math.min(openVal, closeVal); - var ocHigh = Math.max(openVal, closeVal); - var ocLowPoint = getPoint(ocLow, axisDimVal); - var ocHighPoint = getPoint(ocHigh, axisDimVal); - var lowestPoint = getPoint(lowestVal, axisDimVal); - var highestPoint = getPoint(highestVal, axisDimVal); - var ends = []; - addBodyEnd(ends, ocHighPoint, 0); - addBodyEnd(ends, ocLowPoint, 1); - ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint)); - var itemModel = data2.getItemModel(dataIndex); - var hasDojiColor = !!itemModel.get(["itemStyle", "borderColorDoji"]); - data2.setItemLayout(dataIndex, { - sign: getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor), - initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx], - ends, - brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal) - }); - } - function getPoint(val, axisDimVal2) { - var p = []; - p[cDimIdx] = axisDimVal2; - p[vDimIdx] = val; - return isNaN(axisDimVal2) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p); - } - function addBodyEnd(ends2, point, start3) { - var point1 = point.slice(); - var point2 = point.slice(); - point1[cDimIdx] = subPixelOptimize2(point1[cDimIdx] + candleWidth / 2, 1, false); - point2[cDimIdx] = subPixelOptimize2(point2[cDimIdx] - candleWidth / 2, 1, true); - start3 ? ends2.push(point1, point2) : ends2.push(point2, point1); - } - function makeBrushRect(lowestVal2, highestVal2, axisDimVal2) { - var pmin = getPoint(lowestVal2, axisDimVal2); - var pmax = getPoint(highestVal2, axisDimVal2); - pmin[cDimIdx] -= candleWidth / 2; - pmax[cDimIdx] -= candleWidth / 2; - return { - x: pmin[0], - y: pmin[1], - width: vDimIdx ? candleWidth : pmax[0] - pmin[0], - height: vDimIdx ? pmax[1] - pmin[1] : candleWidth - }; - } - function subPixelOptimizePoint(point) { - point[cDimIdx] = subPixelOptimize2(point[cDimIdx], 1); - return point; - } - } - function largeProgress(params, data2) { - var points4 = createFloat32Array(params.count * 4); - var offset3 = 0; - var point; - var tmpIn = []; - var tmpOut = []; - var dataIndex; - var store = data2.getStore(); - var hasDojiColor = !!seriesModel.get(["itemStyle", "borderColorDoji"]); - while ((dataIndex = params.next()) != null) { - var axisDimVal = store.get(cDimI, dataIndex); - var openVal = store.get(openDimI, dataIndex); - var closeVal = store.get(closeDimI, dataIndex); - var lowestVal = store.get(lowestDimI, dataIndex); - var highestVal = store.get(highestDimI, dataIndex); - if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) { - points4[offset3++] = NaN; - offset3 += 3; - continue; - } - points4[offset3++] = getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor); - tmpIn[cDimIdx] = axisDimVal; - tmpIn[vDimIdx] = lowestVal; - point = coordSys.dataToPoint(tmpIn, null, tmpOut); - points4[offset3++] = point ? point[0] : NaN; - points4[offset3++] = point ? point[1] : NaN; - tmpIn[vDimIdx] = highestVal; - point = coordSys.dataToPoint(tmpIn, null, tmpOut); - points4[offset3++] = point ? point[1] : NaN; - } - data2.setLayout("largePoints", points4); - } - } - }; - function getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor) { - var sign; - if (openVal > closeVal) { - sign = -1; - } else if (openVal < closeVal) { - sign = 1; - } else { - sign = hasDojiColor ? 0 : dataIndex > 0 ? store.get(closeDimI, dataIndex - 1) <= closeVal ? 1 : -1 : 1; - } - return sign; - } - function calculateCandleWidth(seriesModel, data) { - var baseAxis = seriesModel.getBaseAxis(); - var extent3; - var bandWidth = baseAxis.type === "category" ? baseAxis.getBandWidth() : (extent3 = baseAxis.getExtent(), Math.abs(extent3[1] - extent3[0]) / data.count()); - var barMaxWidth = parsePercent2(retrieve2(seriesModel.get("barMaxWidth"), bandWidth), bandWidth); - var barMinWidth = parsePercent2(retrieve2(seriesModel.get("barMinWidth"), 1), bandWidth); - var barWidth = seriesModel.get("barWidth"); - return barWidth != null ? parsePercent2(barWidth, bandWidth) : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth); - } - var candlestickLayout_default = candlestickLayout; - - // node_modules/echarts/lib/chart/candlestick/install.js - function install21(registers) { - registers.registerChartView(CandlestickView_default); - registers.registerSeriesModel(CandlestickSeries_default); - registers.registerPreprocessor(candlestickPreprocessor); - registers.registerVisual(candlestickVisual_default); - registers.registerLayout(candlestickLayout_default); - } - - // node_modules/echarts/lib/chart/helper/EffectSymbol.js - function updateRipplePath(rippleGroup, effectCfg) { - var color = effectCfg.rippleEffectColor || effectCfg.color; - rippleGroup.eachChild(function(ripplePath) { - ripplePath.attr({ - z: effectCfg.z, - zlevel: effectCfg.zlevel, - style: { - stroke: effectCfg.brushType === "stroke" ? color : null, - fill: effectCfg.brushType === "fill" ? color : null - } - }); - }); - } - var EffectSymbol = ( - /** @class */ - function(_super) { - __extends(EffectSymbol2, _super); - function EffectSymbol2(data, idx) { - var _this = _super.call(this) || this; - var symbol = new Symbol_default(data, idx); - var rippleGroup = new Group_default(); - _this.add(symbol); - _this.add(rippleGroup); - _this.updateData(data, idx); - return _this; - } - EffectSymbol2.prototype.stopEffectAnimation = function() { - this.childAt(1).removeAll(); - }; - EffectSymbol2.prototype.startEffectAnimation = function(effectCfg) { - var symbolType = effectCfg.symbolType; - var color = effectCfg.color; - var rippleNumber = effectCfg.rippleNumber; - var rippleGroup = this.childAt(1); - for (var i = 0; i < rippleNumber; i++) { - var ripplePath = createSymbol(symbolType, -1, -1, 2, 2, color); - ripplePath.attr({ - style: { - strokeNoScale: true - }, - z2: 99, - silent: true, - scaleX: 0.5, - scaleY: 0.5 - }); - var delay = -i / rippleNumber * effectCfg.period + effectCfg.effectOffset; - ripplePath.animate("", true).when(effectCfg.period, { - scaleX: effectCfg.rippleScale / 2, - scaleY: effectCfg.rippleScale / 2 - }).delay(delay).start(); - ripplePath.animateStyle(true).when(effectCfg.period, { - opacity: 0 - }).delay(delay).start(); - rippleGroup.add(ripplePath); - } - updateRipplePath(rippleGroup, effectCfg); - }; - EffectSymbol2.prototype.updateEffectAnimation = function(effectCfg) { - var oldEffectCfg = this._effectCfg; - var rippleGroup = this.childAt(1); - var DIFFICULT_PROPS = ["symbolType", "period", "rippleScale", "rippleNumber"]; - for (var i = 0; i < DIFFICULT_PROPS.length; i++) { - var propName = DIFFICULT_PROPS[i]; - if (oldEffectCfg[propName] !== effectCfg[propName]) { - this.stopEffectAnimation(); - this.startEffectAnimation(effectCfg); - return; - } - } - updateRipplePath(rippleGroup, effectCfg); - }; - EffectSymbol2.prototype.highlight = function() { - enterEmphasis(this); - }; - EffectSymbol2.prototype.downplay = function() { - leaveEmphasis(this); - }; - EffectSymbol2.prototype.getSymbolType = function() { - var symbol = this.childAt(0); - return symbol && symbol.getSymbolType(); - }; - EffectSymbol2.prototype.updateData = function(data, idx) { - var _this = this; - var seriesModel = data.hostModel; - this.childAt(0).updateData(data, idx); - var rippleGroup = this.childAt(1); - var itemModel = data.getItemModel(idx); - var symbolType = data.getItemVisual(idx, "symbol"); - var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, "symbolSize")); - var symbolStyle = data.getItemVisual(idx, "style"); - var color = symbolStyle && symbolStyle.fill; - var emphasisModel = itemModel.getModel("emphasis"); - rippleGroup.setScale(symbolSize); - rippleGroup.traverse(function(ripplePath) { - ripplePath.setStyle("fill", color); - }); - var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, "symbolOffset"), symbolSize); - if (symbolOffset) { - rippleGroup.x = symbolOffset[0]; - rippleGroup.y = symbolOffset[1]; - } - var symbolRotate = data.getItemVisual(idx, "symbolRotate"); - rippleGroup.rotation = (symbolRotate || 0) * Math.PI / 180 || 0; - var effectCfg = {}; - effectCfg.showEffectOn = seriesModel.get("showEffectOn"); - effectCfg.rippleScale = itemModel.get(["rippleEffect", "scale"]); - effectCfg.brushType = itemModel.get(["rippleEffect", "brushType"]); - effectCfg.period = itemModel.get(["rippleEffect", "period"]) * 1e3; - effectCfg.effectOffset = idx / data.count(); - effectCfg.z = seriesModel.getShallow("z") || 0; - effectCfg.zlevel = seriesModel.getShallow("zlevel") || 0; - effectCfg.symbolType = symbolType; - effectCfg.color = color; - effectCfg.rippleEffectColor = itemModel.get(["rippleEffect", "color"]); - effectCfg.rippleNumber = itemModel.get(["rippleEffect", "number"]); - if (effectCfg.showEffectOn === "render") { - this._effectCfg ? this.updateEffectAnimation(effectCfg) : this.startEffectAnimation(effectCfg); - this._effectCfg = effectCfg; - } else { - this._effectCfg = null; - this.stopEffectAnimation(); - this.onHoverStateChange = function(toState) { - if (toState === "emphasis") { - if (effectCfg.showEffectOn !== "render") { - _this.startEffectAnimation(effectCfg); - } - } else if (toState === "normal") { - if (effectCfg.showEffectOn !== "render") { - _this.stopEffectAnimation(); - } - } - }; - } - this._effectCfg = effectCfg; - toggleHoverEmphasis(this, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - }; - ; - EffectSymbol2.prototype.fadeOut = function(cb) { - cb && cb(); - }; - ; - return EffectSymbol2; - }(Group_default) - ); - var EffectSymbol_default = EffectSymbol; - - // node_modules/echarts/lib/chart/effectScatter/EffectScatterView.js - var EffectScatterView = ( - /** @class */ - function(_super) { - __extends(EffectScatterView2, _super); - function EffectScatterView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = EffectScatterView2.type; - return _this; - } - EffectScatterView2.prototype.init = function() { - this._symbolDraw = new SymbolDraw_default(EffectSymbol_default); - }; - EffectScatterView2.prototype.render = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var effectSymbolDraw = this._symbolDraw; - effectSymbolDraw.updateData(data, { - clipShape: this._getClipShape(seriesModel) - }); - this.group.add(effectSymbolDraw.group); - }; - EffectScatterView2.prototype._getClipShape = function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - var clipArea = coordSys && coordSys.getArea && coordSys.getArea(); - return seriesModel.get("clip", true) ? clipArea : null; - }; - EffectScatterView2.prototype.updateTransform = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - this.group.dirty(); - var res = pointsLayout("").reset(seriesModel, ecModel, api); - if (res.progress) { - res.progress({ - start: 0, - end: data.count(), - count: data.count() - }, data); - } - this._symbolDraw.updateLayout(); - }; - EffectScatterView2.prototype._updateGroupTransform = function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - if (coordSys && coordSys.getRoamTransform) { - this.group.transform = clone3(coordSys.getRoamTransform()); - this.group.decomposeTransform(); - } - }; - EffectScatterView2.prototype.remove = function(ecModel, api) { - this._symbolDraw && this._symbolDraw.remove(true); - }; - EffectScatterView2.type = "effectScatter"; - return EffectScatterView2; - }(Chart_default) - ); - var EffectScatterView_default = EffectScatterView; - - // node_modules/echarts/lib/chart/effectScatter/EffectScatterSeries.js - var EffectScatterSeriesModel = ( - /** @class */ - function(_super) { - __extends(EffectScatterSeriesModel2, _super); - function EffectScatterSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = EffectScatterSeriesModel2.type; - _this.hasSymbolVisual = true; - return _this; - } - EffectScatterSeriesModel2.prototype.getInitialData = function(option, ecModel) { - return createSeriesData_default(null, this, { - useEncodeDefaulter: true - }); - }; - EffectScatterSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) { - return selectors.point(data.getItemLayout(dataIndex)); - }; - EffectScatterSeriesModel2.type = "series.effectScatter"; - EffectScatterSeriesModel2.dependencies = ["grid", "polar"]; - EffectScatterSeriesModel2.defaultOption = { - coordinateSystem: "cartesian2d", - // zlevel: 0, - z: 2, - legendHoverLink: true, - effectType: "ripple", - progressive: 0, - // When to show the effect, option: 'render'|'emphasis' - showEffectOn: "render", - clip: true, - // Ripple effect config - rippleEffect: { - period: 4, - // Scale of ripple - scale: 2.5, - // Brush type can be fill or stroke - brushType: "fill", - // Ripple number - number: 3 - }, - universalTransition: { - divideShape: "clone" - }, - // Cartesian coordinate system - // xAxisIndex: 0, - // yAxisIndex: 0, - // Polar coordinate system - // polarIndex: 0, - // Geo coordinate system - // geoIndex: 0, - // symbol: null, // 图形类型 - symbolSize: 10 - // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2 - // symbolRotate: null, // 图形旋转控制 - // itemStyle: { - // opacity: 1 - // } - }; - return EffectScatterSeriesModel2; - }(Series_default) - ); - var EffectScatterSeries_default = EffectScatterSeriesModel; - - // node_modules/echarts/lib/chart/effectScatter/install.js - function install22(registers) { - registers.registerChartView(EffectScatterView_default); - registers.registerSeriesModel(EffectScatterSeries_default); - registers.registerLayout(pointsLayout("effectScatter")); - } - - // node_modules/echarts/lib/chart/helper/EffectLine.js - var EffectLine = ( - /** @class */ - function(_super) { - __extends(EffectLine2, _super); - function EffectLine2(lineData, idx, seriesScope) { - var _this = _super.call(this) || this; - _this.add(_this.createLine(lineData, idx, seriesScope)); - _this._updateEffectSymbol(lineData, idx); - return _this; - } - EffectLine2.prototype.createLine = function(lineData, idx, seriesScope) { - return new Line_default2(lineData, idx, seriesScope); - }; - EffectLine2.prototype._updateEffectSymbol = function(lineData, idx) { - var itemModel = lineData.getItemModel(idx); - var effectModel = itemModel.getModel("effect"); - var size2 = effectModel.get("symbolSize"); - var symbolType = effectModel.get("symbol"); - if (!isArray(size2)) { - size2 = [size2, size2]; - } - var lineStyle = lineData.getItemVisual(idx, "style"); - var color = effectModel.get("color") || lineStyle && lineStyle.stroke; - var symbol = this.childAt(1); - if (this._symbolType !== symbolType) { - this.remove(symbol); - symbol = createSymbol(symbolType, -0.5, -0.5, 1, 1, color); - symbol.z2 = 100; - symbol.culling = true; - this.add(symbol); - } - if (!symbol) { - return; - } - symbol.setStyle("shadowColor", color); - symbol.setStyle(effectModel.getItemStyle(["color"])); - symbol.scaleX = size2[0]; - symbol.scaleY = size2[1]; - symbol.setColor(color); - this._symbolType = symbolType; - this._symbolScale = size2; - this._updateEffectAnimation(lineData, effectModel, idx); - }; - EffectLine2.prototype._updateEffectAnimation = function(lineData, effectModel, idx) { - var symbol = this.childAt(1); - if (!symbol) { - return; - } - var points4 = lineData.getItemLayout(idx); - var period = effectModel.get("period") * 1e3; - var loop = effectModel.get("loop"); - var roundTrip = effectModel.get("roundTrip"); - var constantSpeed = effectModel.get("constantSpeed"); - var delayExpr = retrieve(effectModel.get("delay"), function(idx2) { - return idx2 / lineData.count() * period / 3; - }); - symbol.ignore = true; - this._updateAnimationPoints(symbol, points4); - if (constantSpeed > 0) { - period = this._getLineLength(symbol) / constantSpeed * 1e3; - } - if (period !== this._period || loop !== this._loop || roundTrip !== this._roundTrip) { - symbol.stopAnimation(); - var delayNum = void 0; - if (isFunction(delayExpr)) { - delayNum = delayExpr(idx); - } else { - delayNum = delayExpr; - } - if (symbol.__t > 0) { - delayNum = -period * symbol.__t; - } - this._animateSymbol(symbol, period, delayNum, loop, roundTrip); - } - this._period = period; - this._loop = loop; - this._roundTrip = roundTrip; - }; - EffectLine2.prototype._animateSymbol = function(symbol, period, delayNum, loop, roundTrip) { - if (period > 0) { - symbol.__t = 0; - var self_1 = this; - var animator = symbol.animate("", loop).when(roundTrip ? period * 2 : period, { - __t: roundTrip ? 2 : 1 - }).delay(delayNum).during(function() { - self_1._updateSymbolPosition(symbol); - }); - if (!loop) { - animator.done(function() { - self_1.remove(symbol); - }); - } - animator.start(); - } - }; - EffectLine2.prototype._getLineLength = function(symbol) { - return dist(symbol.__p1, symbol.__cp1) + dist(symbol.__cp1, symbol.__p2); - }; - EffectLine2.prototype._updateAnimationPoints = function(symbol, points4) { - symbol.__p1 = points4[0]; - symbol.__p2 = points4[1]; - symbol.__cp1 = points4[2] || [(points4[0][0] + points4[1][0]) / 2, (points4[0][1] + points4[1][1]) / 2]; - }; - EffectLine2.prototype.updateData = function(lineData, idx, seriesScope) { - this.childAt(0).updateData(lineData, idx, seriesScope); - this._updateEffectSymbol(lineData, idx); - }; - EffectLine2.prototype._updateSymbolPosition = function(symbol) { - var p1 = symbol.__p1; - var p2 = symbol.__p2; - var cp1 = symbol.__cp1; - var t = symbol.__t < 1 ? symbol.__t : 2 - symbol.__t; - var pos = [symbol.x, symbol.y]; - var lastPos = pos.slice(); - var quadraticAt3 = quadraticAt; - var quadraticDerivativeAt2 = quadraticDerivativeAt; - pos[0] = quadraticAt3(p1[0], cp1[0], p2[0], t); - pos[1] = quadraticAt3(p1[1], cp1[1], p2[1], t); - var tx = symbol.__t < 1 ? quadraticDerivativeAt2(p1[0], cp1[0], p2[0], t) : quadraticDerivativeAt2(p2[0], cp1[0], p1[0], 1 - t); - var ty = symbol.__t < 1 ? quadraticDerivativeAt2(p1[1], cp1[1], p2[1], t) : quadraticDerivativeAt2(p2[1], cp1[1], p1[1], 1 - t); - symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; - if (this._symbolType === "line" || this._symbolType === "rect" || this._symbolType === "roundRect") { - if (symbol.__lastT !== void 0 && symbol.__lastT < symbol.__t) { - symbol.scaleY = dist(lastPos, pos) * 1.05; - if (t === 1) { - pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2; - pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2; - } - } else if (symbol.__lastT === 1) { - symbol.scaleY = 2 * dist(p1, pos); - } else { - symbol.scaleY = this._symbolScale[1]; - } - } - symbol.__lastT = symbol.__t; - symbol.ignore = false; - symbol.x = pos[0]; - symbol.y = pos[1]; - }; - EffectLine2.prototype.updateLayout = function(lineData, idx) { - this.childAt(0).updateLayout(lineData, idx); - var effectModel = lineData.getItemModel(idx).getModel("effect"); - this._updateEffectAnimation(lineData, effectModel, idx); - }; - return EffectLine2; - }(Group_default) - ); - var EffectLine_default = EffectLine; - - // node_modules/echarts/lib/chart/helper/Polyline.js - var Polyline2 = ( - /** @class */ - function(_super) { - __extends(Polyline3, _super); - function Polyline3(lineData, idx, seriesScope) { - var _this = _super.call(this) || this; - _this._createPolyline(lineData, idx, seriesScope); - return _this; - } - Polyline3.prototype._createPolyline = function(lineData, idx, seriesScope) { - var points4 = lineData.getItemLayout(idx); - var line = new Polyline_default({ - shape: { - points: points4 - } - }); - this.add(line); - this._updateCommonStl(lineData, idx, seriesScope); - }; - ; - Polyline3.prototype.updateData = function(lineData, idx, seriesScope) { - var seriesModel = lineData.hostModel; - var line = this.childAt(0); - var target = { - shape: { - points: lineData.getItemLayout(idx) - } - }; - updateProps(line, target, seriesModel, idx); - this._updateCommonStl(lineData, idx, seriesScope); - }; - ; - Polyline3.prototype._updateCommonStl = function(lineData, idx, seriesScope) { - var line = this.childAt(0); - var itemModel = lineData.getItemModel(idx); - var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle; - var focus = seriesScope && seriesScope.focus; - var blurScope = seriesScope && seriesScope.blurScope; - var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled; - if (!seriesScope || lineData.hasItemOption) { - var emphasisModel = itemModel.getModel("emphasis"); - emphasisLineStyle = emphasisModel.getModel("lineStyle").getLineStyle(); - emphasisDisabled = emphasisModel.get("disabled"); - focus = emphasisModel.get("focus"); - blurScope = emphasisModel.get("blurScope"); - } - line.useStyle(lineData.getItemVisual(idx, "style")); - line.style.fill = null; - line.style.strokeNoScale = true; - var lineEmphasisState = line.ensureState("emphasis"); - lineEmphasisState.style = emphasisLineStyle; - toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled); - }; - ; - Polyline3.prototype.updateLayout = function(lineData, idx) { - var polyline = this.childAt(0); - polyline.setShape("points", lineData.getItemLayout(idx)); - }; - ; - return Polyline3; - }(Group_default) - ); - var Polyline_default2 = Polyline2; - - // node_modules/echarts/lib/chart/helper/EffectPolyline.js - var EffectPolyline = ( - /** @class */ - function(_super) { - __extends(EffectPolyline2, _super); - function EffectPolyline2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._lastFrame = 0; - _this._lastFramePercent = 0; - return _this; - } - EffectPolyline2.prototype.createLine = function(lineData, idx, seriesScope) { - return new Polyline_default2(lineData, idx, seriesScope); - }; - ; - EffectPolyline2.prototype._updateAnimationPoints = function(symbol, points4) { - this._points = points4; - var accLenArr = [0]; - var len2 = 0; - for (var i = 1; i < points4.length; i++) { - var p1 = points4[i - 1]; - var p2 = points4[i]; - len2 += dist(p1, p2); - accLenArr.push(len2); - } - if (len2 === 0) { - this._length = 0; - return; - } - for (var i = 0; i < accLenArr.length; i++) { - accLenArr[i] /= len2; - } - this._offsets = accLenArr; - this._length = len2; - }; - ; - EffectPolyline2.prototype._getLineLength = function() { - return this._length; - }; - ; - EffectPolyline2.prototype._updateSymbolPosition = function(symbol) { - var t = symbol.__t < 1 ? symbol.__t : 2 - symbol.__t; - var points4 = this._points; - var offsets = this._offsets; - var len2 = points4.length; - if (!offsets) { - return; - } - var lastFrame = this._lastFrame; - var frame; - if (t < this._lastFramePercent) { - var start3 = Math.min(lastFrame + 1, len2 - 1); - for (frame = start3; frame >= 0; frame--) { - if (offsets[frame] <= t) { - break; - } - } - frame = Math.min(frame, len2 - 2); - } else { - for (frame = lastFrame; frame < len2; frame++) { - if (offsets[frame] > t) { - break; - } - } - frame = Math.min(frame - 1, len2 - 2); - } - var p = (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]); - var p0 = points4[frame]; - var p1 = points4[frame + 1]; - symbol.x = p0[0] * (1 - p) + p * p1[0]; - symbol.y = p0[1] * (1 - p) + p * p1[1]; - var tx = symbol.__t < 1 ? p1[0] - p0[0] : p0[0] - p1[0]; - var ty = symbol.__t < 1 ? p1[1] - p0[1] : p0[1] - p1[1]; - symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; - this._lastFrame = frame; - this._lastFramePercent = t; - symbol.ignore = false; - }; - ; - return EffectPolyline2; - }(EffectLine_default) - ); - var EffectPolyline_default = EffectPolyline; - - // node_modules/echarts/lib/chart/helper/LargeLineDraw.js - var LargeLinesPathShape = ( - /** @class */ - /* @__PURE__ */ function() { - function LargeLinesPathShape2() { - this.polyline = false; - this.curveness = 0; - this.segs = []; - } - return LargeLinesPathShape2; - }() - ); - var LargeLinesPath = ( - /** @class */ - function(_super) { - __extends(LargeLinesPath2, _super); - function LargeLinesPath2(opts) { - var _this = _super.call(this, opts) || this; - _this._off = 0; - _this.hoverDataIdx = -1; - return _this; - } - LargeLinesPath2.prototype.reset = function() { - this.notClear = false; - this._off = 0; - }; - LargeLinesPath2.prototype.getDefaultStyle = function() { - return { - stroke: "#000", - fill: null - }; - }; - LargeLinesPath2.prototype.getDefaultShape = function() { - return new LargeLinesPathShape(); - }; - LargeLinesPath2.prototype.buildPath = function(ctx, shape) { - var segs = shape.segs; - var curveness = shape.curveness; - var i; - if (shape.polyline) { - for (i = this._off; i < segs.length; ) { - var count2 = segs[i++]; - if (count2 > 0) { - ctx.moveTo(segs[i++], segs[i++]); - for (var k = 1; k < count2; k++) { - ctx.lineTo(segs[i++], segs[i++]); - } - } - } - } else { - for (i = this._off; i < segs.length; ) { - var x0 = segs[i++]; - var y0 = segs[i++]; - var x1 = segs[i++]; - var y1 = segs[i++]; - ctx.moveTo(x0, y0); - if (curveness > 0) { - var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness; - var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness; - ctx.quadraticCurveTo(x2, y2, x1, y1); - } else { - ctx.lineTo(x1, y1); - } - } - } - if (this.incremental) { - this._off = i; - this.notClear = true; - } - }; - LargeLinesPath2.prototype.findDataIndex = function(x, y) { - var shape = this.shape; - var segs = shape.segs; - var curveness = shape.curveness; - var lineWidth = this.style.lineWidth; - if (shape.polyline) { - var dataIndex = 0; - for (var i = 0; i < segs.length; ) { - var count2 = segs[i++]; - if (count2 > 0) { - var x0 = segs[i++]; - var y0 = segs[i++]; - for (var k = 1; k < count2; k++) { - var x1 = segs[i++]; - var y1 = segs[i++]; - if (containStroke(x0, y0, x1, y1, lineWidth, x, y)) { - return dataIndex; - } - } - } - dataIndex++; - } - } else { - var dataIndex = 0; - for (var i = 0; i < segs.length; ) { - var x0 = segs[i++]; - var y0 = segs[i++]; - var x1 = segs[i++]; - var y1 = segs[i++]; - if (curveness > 0) { - var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness; - var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness; - if (containStroke3(x0, y0, x2, y2, x1, y1, lineWidth, x, y)) { - return dataIndex; - } - } else { - if (containStroke(x0, y0, x1, y1, lineWidth, x, y)) { - return dataIndex; - } - } - dataIndex++; - } - } - return -1; - }; - LargeLinesPath2.prototype.contain = function(x, y) { - var localPos = this.transformCoordToLocal(x, y); - var rect = this.getBoundingRect(); - x = localPos[0]; - y = localPos[1]; - if (rect.contain(x, y)) { - var dataIdx = this.hoverDataIdx = this.findDataIndex(x, y); - return dataIdx >= 0; - } - this.hoverDataIdx = -1; - return false; - }; - LargeLinesPath2.prototype.getBoundingRect = function() { - var rect = this._rect; - if (!rect) { - var shape = this.shape; - var points4 = shape.segs; - var minX = Infinity; - var minY = Infinity; - var maxX = -Infinity; - var maxY = -Infinity; - for (var i = 0; i < points4.length; ) { - var x = points4[i++]; - var y = points4[i++]; - minX = Math.min(x, minX); - maxX = Math.max(x, maxX); - minY = Math.min(y, minY); - maxY = Math.max(y, maxY); - } - rect = this._rect = new BoundingRect_default(minX, minY, maxX, maxY); - } - return rect; - }; - return LargeLinesPath2; - }(Path_default) - ); - var LargeLineDraw = ( - /** @class */ - function() { - function LargeLineDraw2() { - this.group = new Group_default(); - } - LargeLineDraw2.prototype.updateData = function(data) { - this._clear(); - var lineEl = this._create(); - lineEl.setShape({ - segs: data.getLayout("linesPoints") - }); - this._setCommon(lineEl, data); - }; - ; - LargeLineDraw2.prototype.incrementalPrepareUpdate = function(data) { - this.group.removeAll(); - this._clear(); - }; - ; - LargeLineDraw2.prototype.incrementalUpdate = function(taskParams, data) { - var lastAdded = this._newAdded[0]; - var linePoints = data.getLayout("linesPoints"); - var oldSegs = lastAdded && lastAdded.shape.segs; - if (oldSegs && oldSegs.length < 2e4) { - var oldLen = oldSegs.length; - var newSegs = new Float32Array(oldLen + linePoints.length); - newSegs.set(oldSegs); - newSegs.set(linePoints, oldLen); - lastAdded.setShape({ - segs: newSegs - }); - } else { - this._newAdded = []; - var lineEl = this._create(); - lineEl.incremental = true; - lineEl.setShape({ - segs: linePoints - }); - this._setCommon(lineEl, data); - lineEl.__startIndex = taskParams.start; - } - }; - LargeLineDraw2.prototype.remove = function() { - this._clear(); - }; - LargeLineDraw2.prototype.eachRendered = function(cb) { - this._newAdded[0] && cb(this._newAdded[0]); - }; - LargeLineDraw2.prototype._create = function() { - var lineEl = new LargeLinesPath({ - cursor: "default", - ignoreCoarsePointer: true - }); - this._newAdded.push(lineEl); - this.group.add(lineEl); - return lineEl; - }; - LargeLineDraw2.prototype._setCommon = function(lineEl, data, isIncremental) { - var hostModel = data.hostModel; - lineEl.setShape({ - polyline: hostModel.get("polyline"), - curveness: hostModel.get(["lineStyle", "curveness"]) - }); - lineEl.useStyle(hostModel.getModel("lineStyle").getLineStyle()); - lineEl.style.strokeNoScale = true; - var style = data.getVisual("style"); - if (style && style.stroke) { - lineEl.setStyle("stroke", style.stroke); - } - lineEl.setStyle("fill", null); - var ecData = getECData(lineEl); - ecData.seriesIndex = hostModel.seriesIndex; - lineEl.on("mousemove", function(e2) { - ecData.dataIndex = null; - var dataIndex = lineEl.hoverDataIdx; - if (dataIndex > 0) { - ecData.dataIndex = dataIndex + lineEl.__startIndex; - } - }); - }; - ; - LargeLineDraw2.prototype._clear = function() { - this._newAdded = []; - this.group.removeAll(); - }; - ; - return LargeLineDraw2; - }() - ); - var LargeLineDraw_default = LargeLineDraw; - - // node_modules/echarts/lib/chart/lines/linesLayout.js - var linesLayout = { - seriesType: "lines", - plan: createRenderPlanner(), - reset: function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - if (!coordSys) { - if (true) { - error("The lines series must have a coordinate system."); - } - return; - } - var isPolyline = seriesModel.get("polyline"); - var isLarge = seriesModel.pipelineContext.large; - return { - progress: function(params, lineData) { - var lineCoords = []; - if (isLarge) { - var points4 = void 0; - var segCount = params.end - params.start; - if (isPolyline) { - var totalCoordsCount = 0; - for (var i = params.start; i < params.end; i++) { - totalCoordsCount += seriesModel.getLineCoordsCount(i); - } - points4 = new Float32Array(segCount + totalCoordsCount * 2); - } else { - points4 = new Float32Array(segCount * 4); - } - var offset3 = 0; - var pt = []; - for (var i = params.start; i < params.end; i++) { - var len2 = seriesModel.getLineCoords(i, lineCoords); - if (isPolyline) { - points4[offset3++] = len2; - } - for (var k = 0; k < len2; k++) { - pt = coordSys.dataToPoint(lineCoords[k], false, pt); - points4[offset3++] = pt[0]; - points4[offset3++] = pt[1]; - } - } - lineData.setLayout("linesPoints", points4); - } else { - for (var i = params.start; i < params.end; i++) { - var itemModel = lineData.getItemModel(i); - var len2 = seriesModel.getLineCoords(i, lineCoords); - var pts = []; - if (isPolyline) { - for (var j = 0; j < len2; j++) { - pts.push(coordSys.dataToPoint(lineCoords[j])); - } - } else { - pts[0] = coordSys.dataToPoint(lineCoords[0]); - pts[1] = coordSys.dataToPoint(lineCoords[1]); - var curveness = itemModel.get(["lineStyle", "curveness"]); - if (+curveness) { - pts[2] = [(pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness, (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness]; - } - } - lineData.setItemLayout(i, pts); - } - } - } - }; - } - }; - var linesLayout_default = linesLayout; - - // node_modules/echarts/lib/chart/lines/LinesView.js - var LinesView = ( - /** @class */ - function(_super) { - __extends(LinesView2, _super); - function LinesView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = LinesView2.type; - return _this; - } - LinesView2.prototype.render = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var lineDraw = this._updateLineDraw(data, seriesModel); - var zlevel = seriesModel.get("zlevel"); - var trailLength = seriesModel.get(["effect", "trailLength"]); - var zr = api.getZr(); - var isSvg = zr.painter.getType() === "svg"; - if (!isSvg) { - zr.painter.getLayer(zlevel).clear(true); - } - if (this._lastZlevel != null && !isSvg) { - zr.configLayer(this._lastZlevel, { - motionBlur: false - }); - } - if (this._showEffect(seriesModel) && trailLength > 0) { - if (!isSvg) { - zr.configLayer(zlevel, { - motionBlur: true, - lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0) - }); - } else if (true) { - console.warn("SVG render mode doesn't support lines with trail effect"); - } - } - lineDraw.updateData(data); - var clipPath = seriesModel.get("clip", true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel); - if (clipPath) { - this.group.setClipPath(clipPath); - } else { - this.group.removeClipPath(); - } - this._lastZlevel = zlevel; - this._finished = true; - }; - LinesView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var lineDraw = this._updateLineDraw(data, seriesModel); - lineDraw.incrementalPrepareUpdate(data); - this._clearLayer(api); - this._finished = false; - }; - LinesView2.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) { - this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData()); - this._finished = taskParams.end === seriesModel.getData().count(); - }; - LinesView2.prototype.eachRendered = function(cb) { - this._lineDraw && this._lineDraw.eachRendered(cb); - }; - LinesView2.prototype.updateTransform = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var pipelineContext = seriesModel.pipelineContext; - if (!this._finished || pipelineContext.large || pipelineContext.progressiveRender) { - return { - update: true - }; - } else { - var res = linesLayout_default.reset(seriesModel, ecModel, api); - if (res.progress) { - res.progress({ - start: 0, - end: data.count(), - count: data.count() - }, data); - } - this._lineDraw.updateLayout(); - this._clearLayer(api); - } - }; - LinesView2.prototype._updateLineDraw = function(data, seriesModel) { - var lineDraw = this._lineDraw; - var hasEffect = this._showEffect(seriesModel); - var isPolyline = !!seriesModel.get("polyline"); - var pipelineContext = seriesModel.pipelineContext; - var isLargeDraw = pipelineContext.large; - if (true) { - if (hasEffect && isLargeDraw) { - console.warn("Large lines not support effect"); - } - } - if (!lineDraw || hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLargeDraw !== this._isLargeDraw) { - if (lineDraw) { - lineDraw.remove(); - } - lineDraw = this._lineDraw = isLargeDraw ? new LargeLineDraw_default() : new LineDraw_default(isPolyline ? hasEffect ? EffectPolyline_default : Polyline_default2 : hasEffect ? EffectLine_default : Line_default2); - this._hasEffet = hasEffect; - this._isPolyline = isPolyline; - this._isLargeDraw = isLargeDraw; - } - this.group.add(lineDraw.group); - return lineDraw; - }; - LinesView2.prototype._showEffect = function(seriesModel) { - return !!seriesModel.get(["effect", "show"]); - }; - LinesView2.prototype._clearLayer = function(api) { - var zr = api.getZr(); - var isSvg = zr.painter.getType() === "svg"; - if (!isSvg && this._lastZlevel != null) { - zr.painter.getLayer(this._lastZlevel).clear(true); - } - }; - LinesView2.prototype.remove = function(ecModel, api) { - this._lineDraw && this._lineDraw.remove(); - this._lineDraw = null; - this._clearLayer(api); - }; - LinesView2.prototype.dispose = function(ecModel, api) { - this.remove(ecModel, api); - }; - LinesView2.type = "lines"; - return LinesView2; - }(Chart_default) - ); - var LinesView_default = LinesView; - - // node_modules/echarts/lib/chart/lines/LinesSeries.js - var Uint32Arr = typeof Uint32Array === "undefined" ? Array : Uint32Array; - var Float64Arr = typeof Float64Array === "undefined" ? Array : Float64Array; - function compatEc2(seriesOpt) { - var data = seriesOpt.data; - if (data && data[0] && data[0][0] && data[0][0].coord) { - if (true) { - console.warn("Lines data configuration has been changed to { coords:[[1,2],[2,3]] }"); - } - seriesOpt.data = map(data, function(itemOpt) { - var coords = [itemOpt[0].coord, itemOpt[1].coord]; - var target = { - coords - }; - if (itemOpt[0].name) { - target.fromName = itemOpt[0].name; - } - if (itemOpt[1].name) { - target.toName = itemOpt[1].name; - } - return mergeAll([target, itemOpt[0], itemOpt[1]]); - }); - } - } - var LinesSeriesModel = ( - /** @class */ - function(_super) { - __extends(LinesSeriesModel2, _super); - function LinesSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = LinesSeriesModel2.type; - _this.visualStyleAccessPath = "lineStyle"; - _this.visualDrawType = "stroke"; - return _this; - } - LinesSeriesModel2.prototype.init = function(option) { - option.data = option.data || []; - compatEc2(option); - var result = this._processFlatCoordsArray(option.data); - this._flatCoords = result.flatCoords; - this._flatCoordsOffset = result.flatCoordsOffset; - if (result.flatCoords) { - option.data = new Float32Array(result.count); - } - _super.prototype.init.apply(this, arguments); - }; - LinesSeriesModel2.prototype.mergeOption = function(option) { - compatEc2(option); - if (option.data) { - var result = this._processFlatCoordsArray(option.data); - this._flatCoords = result.flatCoords; - this._flatCoordsOffset = result.flatCoordsOffset; - if (result.flatCoords) { - option.data = new Float32Array(result.count); - } - } - _super.prototype.mergeOption.apply(this, arguments); - }; - LinesSeriesModel2.prototype.appendData = function(params) { - var result = this._processFlatCoordsArray(params.data); - if (result.flatCoords) { - if (!this._flatCoords) { - this._flatCoords = result.flatCoords; - this._flatCoordsOffset = result.flatCoordsOffset; - } else { - this._flatCoords = concatArray(this._flatCoords, result.flatCoords); - this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset); - } - params.data = new Float32Array(result.count); - } - this.getRawData().appendData(params.data); - }; - LinesSeriesModel2.prototype._getCoordsFromItemModel = function(idx) { - var itemModel = this.getData().getItemModel(idx); - var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow("coords"); - if (true) { - if (!(coords instanceof Array && coords.length > 0 && coords[0] instanceof Array)) { - throw new Error("Invalid coords " + JSON.stringify(coords) + ". Lines must have 2d coords array in data item."); - } - } - return coords; - }; - LinesSeriesModel2.prototype.getLineCoordsCount = function(idx) { - if (this._flatCoordsOffset) { - return this._flatCoordsOffset[idx * 2 + 1]; - } else { - return this._getCoordsFromItemModel(idx).length; - } - }; - LinesSeriesModel2.prototype.getLineCoords = function(idx, out2) { - if (this._flatCoordsOffset) { - var offset3 = this._flatCoordsOffset[idx * 2]; - var len2 = this._flatCoordsOffset[idx * 2 + 1]; - for (var i = 0; i < len2; i++) { - out2[i] = out2[i] || []; - out2[i][0] = this._flatCoords[offset3 + i * 2]; - out2[i][1] = this._flatCoords[offset3 + i * 2 + 1]; - } - return len2; - } else { - var coords = this._getCoordsFromItemModel(idx); - for (var i = 0; i < coords.length; i++) { - out2[i] = out2[i] || []; - out2[i][0] = coords[i][0]; - out2[i][1] = coords[i][1]; - } - return coords.length; - } - }; - LinesSeriesModel2.prototype._processFlatCoordsArray = function(data) { - var startOffset = 0; - if (this._flatCoords) { - startOffset = this._flatCoords.length; - } - if (isNumber(data[0])) { - var len2 = data.length; - var coordsOffsetAndLenStorage = new Uint32Arr(len2); - var coordsStorage = new Float64Arr(len2); - var coordsCursor = 0; - var offsetCursor = 0; - var dataCount = 0; - for (var i = 0; i < len2; ) { - dataCount++; - var count2 = data[i++]; - coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset; - coordsOffsetAndLenStorage[offsetCursor++] = count2; - for (var k = 0; k < count2; k++) { - var x = data[i++]; - var y = data[i++]; - coordsStorage[coordsCursor++] = x; - coordsStorage[coordsCursor++] = y; - if (i > len2) { - if (true) { - throw new Error("Invalid data format."); - } - } - } - } - return { - flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor), - flatCoords: coordsStorage, - count: dataCount - }; - } - return { - flatCoordsOffset: null, - flatCoords: null, - count: data.length - }; - }; - LinesSeriesModel2.prototype.getInitialData = function(option, ecModel) { - if (true) { - var CoordSys = CoordinateSystem_default.get(option.coordinateSystem); - if (!CoordSys) { - throw new Error("Unknown coordinate system " + option.coordinateSystem); - } - } - var lineData = new SeriesData_default(["value"], this); - lineData.hasItemOption = false; - lineData.initData(option.data, [], function(dataItem, dimName, dataIndex, dimIndex) { - if (dataItem instanceof Array) { - return NaN; - } else { - lineData.hasItemOption = true; - var value = dataItem.value; - if (value != null) { - return value instanceof Array ? value[dimIndex] : value; - } - } - }); - return lineData; - }; - LinesSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - var data = this.getData(); - var itemModel = data.getItemModel(dataIndex); - var name = itemModel.get("name"); - if (name) { - return name; - } - var fromName = itemModel.get("fromName"); - var toName = itemModel.get("toName"); - var nameArr = []; - fromName != null && nameArr.push(fromName); - toName != null && nameArr.push(toName); - return createTooltipMarkup("nameValue", { - name: nameArr.join(" > ") - }); - }; - LinesSeriesModel2.prototype.preventIncremental = function() { - return !!this.get(["effect", "show"]); - }; - LinesSeriesModel2.prototype.getProgressive = function() { - var progressive = this.option.progressive; - if (progressive == null) { - return this.option.large ? 1e4 : this.get("progressive"); - } - return progressive; - }; - LinesSeriesModel2.prototype.getProgressiveThreshold = function() { - var progressiveThreshold = this.option.progressiveThreshold; - if (progressiveThreshold == null) { - return this.option.large ? 2e4 : this.get("progressiveThreshold"); - } - return progressiveThreshold; - }; - LinesSeriesModel2.prototype.getZLevelKey = function() { - var effectModel = this.getModel("effect"); - var trailLength = effectModel.get("trailLength"); - return this.getData().count() > this.getProgressiveThreshold() ? this.id : effectModel.get("show") && trailLength > 0 ? trailLength + "" : ""; - }; - LinesSeriesModel2.type = "series.lines"; - LinesSeriesModel2.dependencies = ["grid", "polar", "geo", "calendar"]; - LinesSeriesModel2.defaultOption = { - coordinateSystem: "geo", - // zlevel: 0, - z: 2, - legendHoverLink: true, - // Cartesian coordinate system - xAxisIndex: 0, - yAxisIndex: 0, - symbol: ["none", "none"], - symbolSize: [10, 10], - // Geo coordinate system - geoIndex: 0, - effect: { - show: false, - period: 4, - constantSpeed: 0, - symbol: "circle", - symbolSize: 3, - loop: true, - trailLength: 0.2 - }, - large: false, - // Available when large is true - largeThreshold: 2e3, - polyline: false, - clip: true, - label: { - show: false, - position: "end" - // distance: 5, - // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 - }, - lineStyle: { - opacity: 0.5 - } - }; - return LinesSeriesModel2; - }(Series_default) - ); - var LinesSeries_default = LinesSeriesModel; - - // node_modules/echarts/lib/chart/lines/linesVisual.js - function normalize4(a) { - if (!(a instanceof Array)) { - a = [a, a]; - } - return a; - } - var linesVisual = { - seriesType: "lines", - reset: function(seriesModel) { - var symbolType = normalize4(seriesModel.get("symbol")); - var symbolSize = normalize4(seriesModel.get("symbolSize")); - var data = seriesModel.getData(); - data.setVisual("fromSymbol", symbolType && symbolType[0]); - data.setVisual("toSymbol", symbolType && symbolType[1]); - data.setVisual("fromSymbolSize", symbolSize && symbolSize[0]); - data.setVisual("toSymbolSize", symbolSize && symbolSize[1]); - function dataEach(data2, idx) { - var itemModel = data2.getItemModel(idx); - var symbolType2 = normalize4(itemModel.getShallow("symbol", true)); - var symbolSize2 = normalize4(itemModel.getShallow("symbolSize", true)); - symbolType2[0] && data2.setItemVisual(idx, "fromSymbol", symbolType2[0]); - symbolType2[1] && data2.setItemVisual(idx, "toSymbol", symbolType2[1]); - symbolSize2[0] && data2.setItemVisual(idx, "fromSymbolSize", symbolSize2[0]); - symbolSize2[1] && data2.setItemVisual(idx, "toSymbolSize", symbolSize2[1]); - } - return { - dataEach: data.hasItemOption ? dataEach : null - }; - } - }; - var linesVisual_default = linesVisual; - - // node_modules/echarts/lib/chart/lines/install.js - function install23(registers) { - registers.registerChartView(LinesView_default); - registers.registerSeriesModel(LinesSeries_default); - registers.registerLayout(linesLayout_default); - registers.registerVisual(linesVisual_default); - } - - // node_modules/echarts/lib/chart/heatmap/HeatmapLayer.js - var GRADIENT_LEVELS = 256; - var HeatmapLayer = ( - /** @class */ - function() { - function HeatmapLayer2() { - this.blurSize = 30; - this.pointSize = 20; - this.maxOpacity = 1; - this.minOpacity = 0; - this._gradientPixels = { - inRange: null, - outOfRange: null - }; - var canvas = platformApi.createCanvas(); - this.canvas = canvas; - } - HeatmapLayer2.prototype.update = function(data, width, height, normalize5, colorFunc, isInRange) { - var brush3 = this._getBrush(); - var gradientInRange = this._getGradient(colorFunc, "inRange"); - var gradientOutOfRange = this._getGradient(colorFunc, "outOfRange"); - var r = this.pointSize + this.blurSize; - var canvas = this.canvas; - var ctx = canvas.getContext("2d"); - var len2 = data.length; - canvas.width = width; - canvas.height = height; - for (var i = 0; i < len2; ++i) { - var p = data[i]; - var x = p[0]; - var y = p[1]; - var value = p[2]; - var alpha = normalize5(value); - ctx.globalAlpha = alpha; - ctx.drawImage(brush3, x - r, y - r); - } - if (!canvas.width || !canvas.height) { - return canvas; - } - var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); - var pixels = imageData.data; - var offset3 = 0; - var pixelLen = pixels.length; - var minOpacity = this.minOpacity; - var maxOpacity = this.maxOpacity; - var diffOpacity = maxOpacity - minOpacity; - while (offset3 < pixelLen) { - var alpha = pixels[offset3 + 3] / 256; - var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS - 1)) * 4; - if (alpha > 0) { - var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange; - alpha > 0 && (alpha = alpha * diffOpacity + minOpacity); - pixels[offset3++] = gradient[gradientOffset]; - pixels[offset3++] = gradient[gradientOffset + 1]; - pixels[offset3++] = gradient[gradientOffset + 2]; - pixels[offset3++] = gradient[gradientOffset + 3] * alpha * 256; - } else { - offset3 += 4; - } - } - ctx.putImageData(imageData, 0, 0); - return canvas; - }; - HeatmapLayer2.prototype._getBrush = function() { - var brushCanvas = this._brushCanvas || (this._brushCanvas = platformApi.createCanvas()); - var r = this.pointSize + this.blurSize; - var d = r * 2; - brushCanvas.width = d; - brushCanvas.height = d; - var ctx = brushCanvas.getContext("2d"); - ctx.clearRect(0, 0, d, d); - ctx.shadowOffsetX = d; - ctx.shadowBlur = this.blurSize; - ctx.shadowColor = "#000"; - ctx.beginPath(); - ctx.arc(-r, r, this.pointSize, 0, Math.PI * 2, true); - ctx.closePath(); - ctx.fill(); - return brushCanvas; - }; - HeatmapLayer2.prototype._getGradient = function(colorFunc, state) { - var gradientPixels = this._gradientPixels; - var pixelsSingleState = gradientPixels[state] || (gradientPixels[state] = new Uint8ClampedArray(256 * 4)); - var color = [0, 0, 0, 0]; - var off = 0; - for (var i = 0; i < 256; i++) { - colorFunc[state](i / 255, true, color); - pixelsSingleState[off++] = color[0]; - pixelsSingleState[off++] = color[1]; - pixelsSingleState[off++] = color[2]; - pixelsSingleState[off++] = color[3]; - } - return pixelsSingleState; - }; - return HeatmapLayer2; - }() - ); - var HeatmapLayer_default = HeatmapLayer; - - // node_modules/echarts/lib/chart/heatmap/HeatmapView.js - function getIsInPiecewiseRange(dataExtent, pieceList, selected) { - var dataSpan = dataExtent[1] - dataExtent[0]; - pieceList = map(pieceList, function(piece) { - return { - interval: [(piece.interval[0] - dataExtent[0]) / dataSpan, (piece.interval[1] - dataExtent[0]) / dataSpan] - }; - }); - var len2 = pieceList.length; - var lastIndex = 0; - return function(val) { - var i; - for (i = lastIndex; i < len2; i++) { - var interval = pieceList[i].interval; - if (interval[0] <= val && val <= interval[1]) { - lastIndex = i; - break; - } - } - if (i === len2) { - for (i = lastIndex - 1; i >= 0; i--) { - var interval = pieceList[i].interval; - if (interval[0] <= val && val <= interval[1]) { - lastIndex = i; - break; - } - } - } - return i >= 0 && i < len2 && selected[i]; - }; - } - function getIsInContinuousRange(dataExtent, range) { - var dataSpan = dataExtent[1] - dataExtent[0]; - range = [(range[0] - dataExtent[0]) / dataSpan, (range[1] - dataExtent[0]) / dataSpan]; - return function(val) { - return val >= range[0] && val <= range[1]; - }; - } - function isGeoCoordSys(coordSys) { - var dimensions = coordSys.dimensions; - return dimensions[0] === "lng" && dimensions[1] === "lat"; - } - var HeatmapView = ( - /** @class */ - function(_super) { - __extends(HeatmapView2, _super); - function HeatmapView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = HeatmapView2.type; - return _this; - } - HeatmapView2.prototype.render = function(seriesModel, ecModel, api) { - var visualMapOfThisSeries; - ecModel.eachComponent("visualMap", function(visualMap) { - visualMap.eachTargetSeries(function(targetSeries) { - if (targetSeries === seriesModel) { - visualMapOfThisSeries = visualMap; - } - }); - }); - if (true) { - if (!visualMapOfThisSeries) { - throw new Error("Heatmap must use with visualMap"); - } - } - this._progressiveEls = null; - this.group.removeAll(); - var coordSys = seriesModel.coordinateSystem; - if (coordSys.type === "cartesian2d" || coordSys.type === "calendar") { - this._renderOnCartesianAndCalendar(seriesModel, api, 0, seriesModel.getData().count()); - } else if (isGeoCoordSys(coordSys)) { - this._renderOnGeo(coordSys, seriesModel, visualMapOfThisSeries, api); - } - }; - HeatmapView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) { - this.group.removeAll(); - }; - HeatmapView2.prototype.incrementalRender = function(params, seriesModel, ecModel, api) { - var coordSys = seriesModel.coordinateSystem; - if (coordSys) { - if (isGeoCoordSys(coordSys)) { - this.render(seriesModel, ecModel, api); - } else { - this._progressiveEls = []; - this._renderOnCartesianAndCalendar(seriesModel, api, params.start, params.end, true); - } - } - }; - HeatmapView2.prototype.eachRendered = function(cb) { - traverseElements(this._progressiveEls || this.group, cb); - }; - HeatmapView2.prototype._renderOnCartesianAndCalendar = function(seriesModel, api, start3, end2, incremental) { - var coordSys = seriesModel.coordinateSystem; - var isCartesian2d = isCoordinateSystemType(coordSys, "cartesian2d"); - var width; - var height; - var xAxisExtent; - var yAxisExtent; - if (isCartesian2d) { - var xAxis = coordSys.getAxis("x"); - var yAxis = coordSys.getAxis("y"); - if (true) { - if (!(xAxis.type === "category" && yAxis.type === "category")) { - throw new Error("Heatmap on cartesian must have two category axes"); - } - if (!(xAxis.onBand && yAxis.onBand)) { - throw new Error("Heatmap on cartesian must have two axes with boundaryGap true"); - } - } - width = xAxis.getBandWidth() + 0.5; - height = yAxis.getBandWidth() + 0.5; - xAxisExtent = xAxis.scale.getExtent(); - yAxisExtent = yAxis.scale.getExtent(); - } - var group = this.group; - var data = seriesModel.getData(); - var emphasisStyle = seriesModel.getModel(["emphasis", "itemStyle"]).getItemStyle(); - var blurStyle = seriesModel.getModel(["blur", "itemStyle"]).getItemStyle(); - var selectStyle = seriesModel.getModel(["select", "itemStyle"]).getItemStyle(); - var borderRadius = seriesModel.get(["itemStyle", "borderRadius"]); - var labelStatesModels = getLabelStatesModels(seriesModel); - var emphasisModel = seriesModel.getModel("emphasis"); - var focus = emphasisModel.get("focus"); - var blurScope = emphasisModel.get("blurScope"); - var emphasisDisabled = emphasisModel.get("disabled"); - var dataDims = isCartesian2d ? [data.mapDimension("x"), data.mapDimension("y"), data.mapDimension("value")] : [data.mapDimension("time"), data.mapDimension("value")]; - for (var idx = start3; idx < end2; idx++) { - var rect = void 0; - var style = data.getItemVisual(idx, "style"); - if (isCartesian2d) { - var dataDimX = data.get(dataDims[0], idx); - var dataDimY = data.get(dataDims[1], idx); - if (isNaN(data.get(dataDims[2], idx)) || isNaN(dataDimX) || isNaN(dataDimY) || dataDimX < xAxisExtent[0] || dataDimX > xAxisExtent[1] || dataDimY < yAxisExtent[0] || dataDimY > yAxisExtent[1]) { - continue; - } - var point = coordSys.dataToPoint([dataDimX, dataDimY]); - rect = new Rect_default({ - shape: { - x: point[0] - width / 2, - y: point[1] - height / 2, - width, - height - }, - style - }); - } else { - if (isNaN(data.get(dataDims[1], idx))) { - continue; - } - rect = new Rect_default({ - z2: 1, - shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape, - style - }); - } - if (data.hasItemOption) { - var itemModel = data.getItemModel(idx); - var emphasisModel_1 = itemModel.getModel("emphasis"); - emphasisStyle = emphasisModel_1.getModel("itemStyle").getItemStyle(); - blurStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle(); - selectStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle(); - borderRadius = itemModel.get(["itemStyle", "borderRadius"]); - focus = emphasisModel_1.get("focus"); - blurScope = emphasisModel_1.get("blurScope"); - emphasisDisabled = emphasisModel_1.get("disabled"); - labelStatesModels = getLabelStatesModels(itemModel); - } - rect.shape.r = borderRadius; - var rawValue = seriesModel.getRawValue(idx); - var defaultText = "-"; - if (rawValue && rawValue[2] != null) { - defaultText = rawValue[2] + ""; - } - setLabelStyle(rect, labelStatesModels, { - labelFetcher: seriesModel, - labelDataIndex: idx, - defaultOpacity: style.opacity, - defaultText - }); - rect.ensureState("emphasis").style = emphasisStyle; - rect.ensureState("blur").style = blurStyle; - rect.ensureState("select").style = selectStyle; - toggleHoverEmphasis(rect, focus, blurScope, emphasisDisabled); - rect.incremental = incremental; - if (incremental) { - rect.states.emphasis.hoverLayer = true; - } - group.add(rect); - data.setItemGraphicEl(idx, rect); - if (this._progressiveEls) { - this._progressiveEls.push(rect); - } - } - }; - HeatmapView2.prototype._renderOnGeo = function(geo, seriesModel, visualMapModel, api) { - var inRangeVisuals = visualMapModel.targetVisuals.inRange; - var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange; - var data = seriesModel.getData(); - var hmLayer = this._hmLayer || this._hmLayer || new HeatmapLayer_default(); - hmLayer.blurSize = seriesModel.get("blurSize"); - hmLayer.pointSize = seriesModel.get("pointSize"); - hmLayer.minOpacity = seriesModel.get("minOpacity"); - hmLayer.maxOpacity = seriesModel.get("maxOpacity"); - var rect = geo.getViewRect().clone(); - var roamTransform = geo.getRoamTransform(); - rect.applyTransform(roamTransform); - var x = Math.max(rect.x, 0); - var y = Math.max(rect.y, 0); - var x2 = Math.min(rect.width + rect.x, api.getWidth()); - var y2 = Math.min(rect.height + rect.y, api.getHeight()); - var width = x2 - x; - var height = y2 - y; - var dims = [data.mapDimension("lng"), data.mapDimension("lat"), data.mapDimension("value")]; - var points4 = data.mapArray(dims, function(lng, lat, value) { - var pt = geo.dataToPoint([lng, lat]); - pt[0] -= x; - pt[1] -= y; - pt.push(value); - return pt; - }); - var dataExtent = visualMapModel.getExtent(); - var isInRange = visualMapModel.type === "visualMap.continuous" ? getIsInContinuousRange(dataExtent, visualMapModel.option.range) : getIsInPiecewiseRange(dataExtent, visualMapModel.getPieceList(), visualMapModel.option.selected); - hmLayer.update(points4, width, height, inRangeVisuals.color.getNormalizer(), { - inRange: inRangeVisuals.color.getColorMapper(), - outOfRange: outOfRangeVisuals.color.getColorMapper() - }, isInRange); - var img = new Image_default({ - style: { - width, - height, - x, - y, - image: hmLayer.canvas - }, - silent: true - }); - this.group.add(img); - }; - HeatmapView2.type = "heatmap"; - return HeatmapView2; - }(Chart_default) - ); - var HeatmapView_default = HeatmapView; - - // node_modules/echarts/lib/chart/heatmap/HeatmapSeries.js - var HeatmapSeriesModel = ( - /** @class */ - function(_super) { - __extends(HeatmapSeriesModel2, _super); - function HeatmapSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = HeatmapSeriesModel2.type; - return _this; - } - HeatmapSeriesModel2.prototype.getInitialData = function(option, ecModel) { - return createSeriesData_default(null, this, { - generateCoord: "value" - }); - }; - HeatmapSeriesModel2.prototype.preventIncremental = function() { - var coordSysCreator = CoordinateSystem_default.get(this.get("coordinateSystem")); - if (coordSysCreator && coordSysCreator.dimensions) { - return coordSysCreator.dimensions[0] === "lng" && coordSysCreator.dimensions[1] === "lat"; - } - }; - HeatmapSeriesModel2.type = "series.heatmap"; - HeatmapSeriesModel2.dependencies = ["grid", "geo", "calendar"]; - HeatmapSeriesModel2.defaultOption = { - coordinateSystem: "cartesian2d", - // zlevel: 0, - z: 2, - // Cartesian coordinate system - // xAxisIndex: 0, - // yAxisIndex: 0, - // Geo coordinate system - geoIndex: 0, - blurSize: 30, - pointSize: 20, - maxOpacity: 1, - minOpacity: 0, - select: { - itemStyle: { - borderColor: "#212121" - } - } - }; - return HeatmapSeriesModel2; - }(Series_default) - ); - var HeatmapSeries_default = HeatmapSeriesModel; - - // node_modules/echarts/lib/chart/heatmap/install.js - function install24(registers) { - registers.registerChartView(HeatmapView_default); - registers.registerSeriesModel(HeatmapSeries_default); - } - - // node_modules/echarts/lib/chart/bar/PictorialBarView.js - var BAR_BORDER_WIDTH_QUERY = ["itemStyle", "borderWidth"]; - var LAYOUT_ATTRS = [{ - xy: "x", - wh: "width", - index: 0, - posDesc: ["left", "right"] - }, { - xy: "y", - wh: "height", - index: 1, - posDesc: ["top", "bottom"] - }]; - var pathForLineWidth = new Circle_default(); - var PictorialBarView = ( - /** @class */ - function(_super) { - __extends(PictorialBarView2, _super); - function PictorialBarView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = PictorialBarView2.type; - return _this; - } - PictorialBarView2.prototype.render = function(seriesModel, ecModel, api) { - var group = this.group; - var data = seriesModel.getData(); - var oldData = this._data; - var cartesian = seriesModel.coordinateSystem; - var baseAxis = cartesian.getBaseAxis(); - var isHorizontal = baseAxis.isHorizontal(); - var coordSysRect = cartesian.master.getRect(); - var opt = { - ecSize: { - width: api.getWidth(), - height: api.getHeight() - }, - seriesModel, - coordSys: cartesian, - coordSysExtent: [[coordSysRect.x, coordSysRect.x + coordSysRect.width], [coordSysRect.y, coordSysRect.y + coordSysRect.height]], - isHorizontal, - valueDim: LAYOUT_ATTRS[+isHorizontal], - categoryDim: LAYOUT_ATTRS[1 - +isHorizontal] - }; - data.diff(oldData).add(function(dataIndex) { - if (!data.hasValue(dataIndex)) { - return; - } - var itemModel = getItemModel(data, dataIndex); - var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt); - var bar = createBar(data, opt, symbolMeta); - data.setItemGraphicEl(dataIndex, bar); - group.add(bar); - updateCommon2(bar, opt, symbolMeta); - }).update(function(newIndex, oldIndex) { - var bar = oldData.getItemGraphicEl(oldIndex); - if (!data.hasValue(newIndex)) { - group.remove(bar); - return; - } - var itemModel = getItemModel(data, newIndex); - var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt); - var pictorialShapeStr = getShapeStr(data, symbolMeta); - if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) { - group.remove(bar); - data.setItemGraphicEl(newIndex, null); - bar = null; - } - if (bar) { - updateBar(bar, opt, symbolMeta); - } else { - bar = createBar(data, opt, symbolMeta, true); - } - data.setItemGraphicEl(newIndex, bar); - bar.__pictorialSymbolMeta = symbolMeta; - group.add(bar); - updateCommon2(bar, opt, symbolMeta); - }).remove(function(dataIndex) { - var bar = oldData.getItemGraphicEl(dataIndex); - bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar); - }).execute(); - var clipPath = seriesModel.get("clip", true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null; - if (clipPath) { - group.setClipPath(clipPath); - } else { - group.removeClipPath(); - } - this._data = data; - return this.group; - }; - PictorialBarView2.prototype.remove = function(ecModel, api) { - var group = this.group; - var data = this._data; - if (ecModel.get("animation")) { - if (data) { - data.eachItemGraphicEl(function(bar) { - removeBar(data, getECData(bar).dataIndex, ecModel, bar); - }); - } - } else { - group.removeAll(); - } - }; - PictorialBarView2.type = "pictorialBar"; - return PictorialBarView2; - }(Chart_default) - ); - function getSymbolMeta(data, dataIndex, itemModel, opt) { - var layout5 = data.getItemLayout(dataIndex); - var symbolRepeat = itemModel.get("symbolRepeat"); - var symbolClip = itemModel.get("symbolClip"); - var symbolPosition = itemModel.get("symbolPosition") || "start"; - var symbolRotate = itemModel.get("symbolRotate"); - var rotation = (symbolRotate || 0) * Math.PI / 180 || 0; - var symbolPatternSize = itemModel.get("symbolPatternSize") || 2; - var isAnimationEnabled2 = itemModel.isAnimationEnabled(); - var symbolMeta = { - dataIndex, - layout: layout5, - itemModel, - symbolType: data.getItemVisual(dataIndex, "symbol") || "circle", - style: data.getItemVisual(dataIndex, "style"), - symbolClip, - symbolRepeat, - symbolRepeatDirection: itemModel.get("symbolRepeatDirection"), - symbolPatternSize, - rotation, - animationModel: isAnimationEnabled2 ? itemModel : null, - hoverScale: isAnimationEnabled2 && itemModel.get(["emphasis", "scale"]), - z2: itemModel.getShallow("z", true) || 0 - }; - prepareBarLength(itemModel, symbolRepeat, layout5, opt, symbolMeta); - prepareSymbolSize(data, dataIndex, layout5, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta); - prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta); - var symbolSize = symbolMeta.symbolSize; - var symbolOffset = normalizeSymbolOffset(itemModel.get("symbolOffset"), symbolSize); - prepareLayoutInfo(itemModel, symbolSize, layout5, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta); - return symbolMeta; - } - function prepareBarLength(itemModel, symbolRepeat, layout5, opt, outputSymbolMeta) { - var valueDim = opt.valueDim; - var symbolBoundingData = itemModel.get("symbolBoundingData"); - var valueAxis2 = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis()); - var zeroPx = valueAxis2.toGlobalCoord(valueAxis2.dataToCoord(0)); - var pxSignIdx = 1 - +(layout5[valueDim.wh] <= 0); - var boundingLength; - if (isArray(symbolBoundingData)) { - var symbolBoundingExtent = [convertToCoordOnAxis(valueAxis2, symbolBoundingData[0]) - zeroPx, convertToCoordOnAxis(valueAxis2, symbolBoundingData[1]) - zeroPx]; - symbolBoundingExtent[1] < symbolBoundingExtent[0] && symbolBoundingExtent.reverse(); - boundingLength = symbolBoundingExtent[pxSignIdx]; - } else if (symbolBoundingData != null) { - boundingLength = convertToCoordOnAxis(valueAxis2, symbolBoundingData) - zeroPx; - } else if (symbolRepeat) { - boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx; - } else { - boundingLength = layout5[valueDim.wh]; - } - outputSymbolMeta.boundingLength = boundingLength; - if (symbolRepeat) { - outputSymbolMeta.repeatCutLength = layout5[valueDim.wh]; - } - var isXAxis = valueDim.xy === "x"; - var isInverse = valueAxis2.inverse; - outputSymbolMeta.pxSign = isXAxis && !isInverse || !isXAxis && isInverse ? boundingLength >= 0 ? 1 : -1 : boundingLength > 0 ? 1 : -1; - } - function convertToCoordOnAxis(axis, value) { - return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value))); - } - function prepareSymbolSize(data, dataIndex, layout5, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, outputSymbolMeta) { - var valueDim = opt.valueDim; - var categoryDim = opt.categoryDim; - var categorySize = Math.abs(layout5[categoryDim.wh]); - var symbolSize = data.getItemVisual(dataIndex, "symbolSize"); - var parsedSymbolSize; - if (isArray(symbolSize)) { - parsedSymbolSize = symbolSize.slice(); - } else { - if (symbolSize == null) { - parsedSymbolSize = ["100%", "100%"]; - } else { - parsedSymbolSize = [symbolSize, symbolSize]; - } - } - parsedSymbolSize[categoryDim.index] = parsePercent2(parsedSymbolSize[categoryDim.index], categorySize); - parsedSymbolSize[valueDim.index] = parsePercent2(parsedSymbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength)); - outputSymbolMeta.symbolSize = parsedSymbolSize; - var symbolScale = outputSymbolMeta.symbolScale = [parsedSymbolSize[0] / symbolPatternSize, parsedSymbolSize[1] / symbolPatternSize]; - symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign; - } - function prepareLineWidth(itemModel, symbolScale, rotation, opt, outputSymbolMeta) { - var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0; - if (valueLineWidth) { - pathForLineWidth.attr({ - scaleX: symbolScale[0], - scaleY: symbolScale[1], - rotation - }); - pathForLineWidth.updateTransform(); - valueLineWidth /= pathForLineWidth.getLineScale(); - valueLineWidth *= symbolScale[opt.valueDim.index]; - } - outputSymbolMeta.valueLineWidth = valueLineWidth || 0; - } - function prepareLayoutInfo(itemModel, symbolSize, layout5, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, outputSymbolMeta) { - var categoryDim = opt.categoryDim; - var valueDim = opt.valueDim; - var pxSign = outputSymbolMeta.pxSign; - var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0); - var pathLen = unitLength; - if (symbolRepeat) { - var absBoundingLength = Math.abs(boundingLength); - var symbolMargin = retrieve(itemModel.get("symbolMargin"), "15%") + ""; - var hasEndGap = false; - if (symbolMargin.lastIndexOf("!") === symbolMargin.length - 1) { - hasEndGap = true; - symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1); - } - var symbolMarginNumeric = parsePercent2(symbolMargin, symbolSize[valueDim.index]); - var uLenWithMargin = Math.max(unitLength + symbolMarginNumeric * 2, 0); - var endFix = hasEndGap ? 0 : symbolMarginNumeric * 2; - var repeatSpecified = isNumeric(symbolRepeat); - var repeatTimes = repeatSpecified ? symbolRepeat : toIntTimes((absBoundingLength + endFix) / uLenWithMargin); - var mDiff = absBoundingLength - repeatTimes * unitLength; - symbolMarginNumeric = mDiff / 2 / (hasEndGap ? repeatTimes : Math.max(repeatTimes - 1, 1)); - uLenWithMargin = unitLength + symbolMarginNumeric * 2; - endFix = hasEndGap ? 0 : symbolMarginNumeric * 2; - if (!repeatSpecified && symbolRepeat !== "fixed") { - repeatTimes = repeatCutLength ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin) : 0; - } - pathLen = repeatTimes * uLenWithMargin - endFix; - outputSymbolMeta.repeatTimes = repeatTimes; - outputSymbolMeta.symbolMargin = symbolMarginNumeric; - } - var sizeFix = pxSign * (pathLen / 2); - var pathPosition = outputSymbolMeta.pathPosition = []; - pathPosition[categoryDim.index] = layout5[categoryDim.wh] / 2; - pathPosition[valueDim.index] = symbolPosition === "start" ? sizeFix : symbolPosition === "end" ? boundingLength - sizeFix : boundingLength / 2; - if (symbolOffset) { - pathPosition[0] += symbolOffset[0]; - pathPosition[1] += symbolOffset[1]; - } - var bundlePosition = outputSymbolMeta.bundlePosition = []; - bundlePosition[categoryDim.index] = layout5[categoryDim.xy]; - bundlePosition[valueDim.index] = layout5[valueDim.xy]; - var barRectShape = outputSymbolMeta.barRectShape = extend({}, layout5); - barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout5[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix)); - barRectShape[categoryDim.wh] = layout5[categoryDim.wh]; - var clipShape = outputSymbolMeta.clipShape = {}; - clipShape[categoryDim.xy] = -layout5[categoryDim.xy]; - clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh]; - clipShape[valueDim.xy] = 0; - clipShape[valueDim.wh] = layout5[valueDim.wh]; - } - function createPath(symbolMeta) { - var symbolPatternSize = symbolMeta.symbolPatternSize; - var path = createSymbol( - // Consider texture img, make a big size. - symbolMeta.symbolType, - -symbolPatternSize / 2, - -symbolPatternSize / 2, - symbolPatternSize, - symbolPatternSize - ); - path.attr({ - culling: true - }); - path.type !== "image" && path.setStyle({ - strokeNoScale: true - }); - return path; - } - function createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) { - var bundle = bar.__pictorialBundle; - var symbolSize = symbolMeta.symbolSize; - var valueLineWidth = symbolMeta.valueLineWidth; - var pathPosition = symbolMeta.pathPosition; - var valueDim = opt.valueDim; - var repeatTimes = symbolMeta.repeatTimes || 0; - var index = 0; - var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2; - eachPath(bar, function(path2) { - path2.__pictorialAnimationIndex = index; - path2.__pictorialRepeatTimes = repeatTimes; - if (index < repeatTimes) { - updateAttr(path2, null, makeTarget(index), symbolMeta, isUpdate); - } else { - updateAttr(path2, null, { - scaleX: 0, - scaleY: 0 - }, symbolMeta, isUpdate, function() { - bundle.remove(path2); - }); - } - index++; - }); - for (; index < repeatTimes; index++) { - var path = createPath(symbolMeta); - path.__pictorialAnimationIndex = index; - path.__pictorialRepeatTimes = repeatTimes; - bundle.add(path); - var target = makeTarget(index); - updateAttr(path, { - x: target.x, - y: target.y, - scaleX: 0, - scaleY: 0 - }, { - scaleX: target.scaleX, - scaleY: target.scaleY, - rotation: target.rotation - }, symbolMeta, isUpdate); - } - function makeTarget(index2) { - var position2 = pathPosition.slice(); - var pxSign = symbolMeta.pxSign; - var i = index2; - if (symbolMeta.symbolRepeatDirection === "start" ? pxSign > 0 : pxSign < 0) { - i = repeatTimes - 1 - index2; - } - position2[valueDim.index] = unit * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index]; - return { - x: position2[0], - y: position2[1], - scaleX: symbolMeta.symbolScale[0], - scaleY: symbolMeta.symbolScale[1], - rotation: symbolMeta.rotation - }; - } - } - function createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) { - var bundle = bar.__pictorialBundle; - var mainPath = bar.__pictorialMainPath; - if (!mainPath) { - mainPath = bar.__pictorialMainPath = createPath(symbolMeta); - bundle.add(mainPath); - updateAttr(mainPath, { - x: symbolMeta.pathPosition[0], - y: symbolMeta.pathPosition[1], - scaleX: 0, - scaleY: 0, - rotation: symbolMeta.rotation - }, { - scaleX: symbolMeta.symbolScale[0], - scaleY: symbolMeta.symbolScale[1] - }, symbolMeta, isUpdate); - } else { - updateAttr(mainPath, null, { - x: symbolMeta.pathPosition[0], - y: symbolMeta.pathPosition[1], - scaleX: symbolMeta.symbolScale[0], - scaleY: symbolMeta.symbolScale[1], - rotation: symbolMeta.rotation - }, symbolMeta, isUpdate); - } - } - function createOrUpdateBarRect(bar, symbolMeta, isUpdate) { - var rectShape = extend({}, symbolMeta.barRectShape); - var barRect = bar.__pictorialBarRect; - if (!barRect) { - barRect = bar.__pictorialBarRect = new Rect_default({ - z2: 2, - shape: rectShape, - silent: true, - style: { - stroke: "transparent", - fill: "transparent", - lineWidth: 0 - } - }); - barRect.disableMorphing = true; - bar.add(barRect); - } else { - updateAttr(barRect, null, { - shape: rectShape - }, symbolMeta, isUpdate); - } - } - function createOrUpdateClip(bar, opt, symbolMeta, isUpdate) { - if (symbolMeta.symbolClip) { - var clipPath = bar.__pictorialClipPath; - var clipShape = extend({}, symbolMeta.clipShape); - var valueDim = opt.valueDim; - var animationModel = symbolMeta.animationModel; - var dataIndex = symbolMeta.dataIndex; - if (clipPath) { - updateProps(clipPath, { - shape: clipShape - }, animationModel, dataIndex); - } else { - clipShape[valueDim.wh] = 0; - clipPath = new Rect_default({ - shape: clipShape - }); - bar.__pictorialBundle.setClipPath(clipPath); - bar.__pictorialClipPath = clipPath; - var target = {}; - target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh]; - graphic_exports[isUpdate ? "updateProps" : "initProps"](clipPath, { - shape: target - }, animationModel, dataIndex); - } - } - } - function getItemModel(data, dataIndex) { - var itemModel = data.getItemModel(dataIndex); - itemModel.getAnimationDelayParams = getAnimationDelayParams; - itemModel.isAnimationEnabled = isAnimationEnabled; - return itemModel; - } - function getAnimationDelayParams(path) { - return { - index: path.__pictorialAnimationIndex, - count: path.__pictorialRepeatTimes - }; - } - function isAnimationEnabled() { - return this.parentModel.isAnimationEnabled() && !!this.getShallow("animation"); - } - function createBar(data, opt, symbolMeta, isUpdate) { - var bar = new Group_default(); - var bundle = new Group_default(); - bar.add(bundle); - bar.__pictorialBundle = bundle; - bundle.x = symbolMeta.bundlePosition[0]; - bundle.y = symbolMeta.bundlePosition[1]; - if (symbolMeta.symbolRepeat) { - createOrUpdateRepeatSymbols(bar, opt, symbolMeta); - } else { - createOrUpdateSingleSymbol(bar, opt, symbolMeta); - } - createOrUpdateBarRect(bar, symbolMeta, isUpdate); - createOrUpdateClip(bar, opt, symbolMeta, isUpdate); - bar.__pictorialShapeStr = getShapeStr(data, symbolMeta); - bar.__pictorialSymbolMeta = symbolMeta; - return bar; - } - function updateBar(bar, opt, symbolMeta) { - var animationModel = symbolMeta.animationModel; - var dataIndex = symbolMeta.dataIndex; - var bundle = bar.__pictorialBundle; - updateProps(bundle, { - x: symbolMeta.bundlePosition[0], - y: symbolMeta.bundlePosition[1] - }, animationModel, dataIndex); - if (symbolMeta.symbolRepeat) { - createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true); - } else { - createOrUpdateSingleSymbol(bar, opt, symbolMeta, true); - } - createOrUpdateBarRect(bar, symbolMeta, true); - createOrUpdateClip(bar, opt, symbolMeta, true); - } - function removeBar(data, dataIndex, animationModel, bar) { - var labelRect = bar.__pictorialBarRect; - labelRect && labelRect.removeTextContent(); - var paths = []; - eachPath(bar, function(path) { - paths.push(path); - }); - bar.__pictorialMainPath && paths.push(bar.__pictorialMainPath); - bar.__pictorialClipPath && (animationModel = null); - each(paths, function(path) { - removeElement(path, { - scaleX: 0, - scaleY: 0 - }, animationModel, dataIndex, function() { - bar.parent && bar.parent.remove(bar); - }); - }); - data.setItemGraphicEl(dataIndex, null); - } - function getShapeStr(data, symbolMeta) { - return [data.getItemVisual(symbolMeta.dataIndex, "symbol") || "none", !!symbolMeta.symbolRepeat, !!symbolMeta.symbolClip].join(":"); - } - function eachPath(bar, cb, context) { - each(bar.__pictorialBundle.children(), function(el) { - el !== bar.__pictorialBarRect && cb.call(context, el); - }); - } - function updateAttr(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) { - immediateAttrs && el.attr(immediateAttrs); - if (symbolMeta.symbolClip && !isUpdate) { - animationAttrs && el.attr(animationAttrs); - } else { - animationAttrs && graphic_exports[isUpdate ? "updateProps" : "initProps"](el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb); - } - } - function updateCommon2(bar, opt, symbolMeta) { - var dataIndex = symbolMeta.dataIndex; - var itemModel = symbolMeta.itemModel; - var emphasisModel = itemModel.getModel("emphasis"); - var emphasisStyle = emphasisModel.getModel("itemStyle").getItemStyle(); - var blurStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle(); - var selectStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle(); - var cursorStyle = itemModel.getShallow("cursor"); - var focus = emphasisModel.get("focus"); - var blurScope = emphasisModel.get("blurScope"); - var hoverScale = emphasisModel.get("scale"); - eachPath(bar, function(path) { - if (path instanceof Image_default) { - var pathStyle = path.style; - path.useStyle(extend({ - // TODO other properties like dx, dy ? - image: pathStyle.image, - x: pathStyle.x, - y: pathStyle.y, - width: pathStyle.width, - height: pathStyle.height - }, symbolMeta.style)); - } else { - path.useStyle(symbolMeta.style); - } - var emphasisState = path.ensureState("emphasis"); - emphasisState.style = emphasisStyle; - if (hoverScale) { - emphasisState.scaleX = path.scaleX * 1.1; - emphasisState.scaleY = path.scaleY * 1.1; - } - path.ensureState("blur").style = blurStyle; - path.ensureState("select").style = selectStyle; - cursorStyle && (path.cursor = cursorStyle); - path.z2 = symbolMeta.z2; - }); - var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)]; - var barRect = bar.__pictorialBarRect; - barRect.ignoreClip = true; - setLabelStyle(barRect, getLabelStatesModels(itemModel), { - labelFetcher: opt.seriesModel, - labelDataIndex: dataIndex, - defaultText: getDefaultLabel(opt.seriesModel.getData(), dataIndex), - inheritColor: symbolMeta.style.fill, - defaultOpacity: symbolMeta.style.opacity, - defaultOutsidePosition: barPositionOutside - }); - toggleHoverEmphasis(bar, focus, blurScope, emphasisModel.get("disabled")); - } - function toIntTimes(times) { - var roundedTimes = Math.round(times); - return Math.abs(times - roundedTimes) < 1e-4 ? roundedTimes : Math.ceil(times); - } - var PictorialBarView_default = PictorialBarView; - - // node_modules/echarts/lib/chart/bar/PictorialBarSeries.js - var PictorialBarSeriesModel = ( - /** @class */ - function(_super) { - __extends(PictorialBarSeriesModel2, _super); - function PictorialBarSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = PictorialBarSeriesModel2.type; - _this.hasSymbolVisual = true; - _this.defaultSymbol = "roundRect"; - return _this; - } - PictorialBarSeriesModel2.prototype.getInitialData = function(option) { - option.stack = null; - return _super.prototype.getInitialData.apply(this, arguments); - }; - PictorialBarSeriesModel2.type = "series.pictorialBar"; - PictorialBarSeriesModel2.dependencies = ["grid"]; - PictorialBarSeriesModel2.defaultOption = inheritDefaultOption(BaseBarSeries_default.defaultOption, { - symbol: "circle", - symbolSize: null, - symbolRotate: null, - symbolPosition: null, - symbolOffset: null, - symbolMargin: null, - symbolRepeat: false, - symbolRepeatDirection: "end", - symbolClip: false, - symbolBoundingData: null, - symbolPatternSize: 400, - barGap: "-100%", - // Pictorial bar do not clip by default because in many cases - // xAxis and yAxis are not displayed and it's expected not to clip - clip: false, - // z can be set in data item, which is z2 actually. - // Disable progressive - progressive: 0, - emphasis: { - // By default pictorialBar do not hover scale. Hover scale is not suitable - // for the case that both has foreground and background. - scale: false - }, - select: { - itemStyle: { - borderColor: "#212121" - } - } - }); - return PictorialBarSeriesModel2; - }(BaseBarSeries_default) - ); - var PictorialBarSeries_default = PictorialBarSeriesModel; - - // node_modules/echarts/lib/chart/bar/installPictorialBar.js - function install25(registers) { - registers.registerChartView(PictorialBarView_default); - registers.registerSeriesModel(PictorialBarSeries_default); - registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, curry(layout, "pictorialBar")); - registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout("pictorialBar")); - } - - // node_modules/echarts/lib/chart/themeRiver/ThemeRiverView.js - var ThemeRiverView = ( - /** @class */ - function(_super) { - __extends(ThemeRiverView2, _super); - function ThemeRiverView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ThemeRiverView2.type; - _this._layers = []; - return _this; - } - ThemeRiverView2.prototype.render = function(seriesModel, ecModel, api) { - var data = seriesModel.getData(); - var self2 = this; - var group = this.group; - var layersSeries = seriesModel.getLayerSeries(); - var layoutInfo = data.getLayout("layoutInfo"); - var rect = layoutInfo.rect; - var boundaryGap = layoutInfo.boundaryGap; - group.x = 0; - group.y = rect.y + boundaryGap[0]; - function keyGetter(item) { - return item.name; - } - var dataDiffer = new DataDiffer_default(this._layersSeries || [], layersSeries, keyGetter, keyGetter); - var newLayersGroups = []; - dataDiffer.add(bind(process2, this, "add")).update(bind(process2, this, "update")).remove(bind(process2, this, "remove")).execute(); - function process2(status, idx, oldIdx) { - var oldLayersGroups = self2._layers; - if (status === "remove") { - group.remove(oldLayersGroups[idx]); - return; - } - var points0 = []; - var points1 = []; - var style; - var indices = layersSeries[idx].indices; - var j = 0; - for (; j < indices.length; j++) { - var layout5 = data.getItemLayout(indices[j]); - var x = layout5.x; - var y0 = layout5.y0; - var y = layout5.y; - points0.push(x, y0); - points1.push(x, y0 + y); - style = data.getItemVisual(indices[j], "style"); - } - var polygon; - var textLayout = data.getItemLayout(indices[0]); - var labelModel = seriesModel.getModel("label"); - var margin = labelModel.get("margin"); - var emphasisModel = seriesModel.getModel("emphasis"); - if (status === "add") { - var layerGroup = newLayersGroups[idx] = new Group_default(); - polygon = new ECPolygon({ - shape: { - points: points0, - stackedOnPoints: points1, - smooth: 0.4, - stackedOnSmooth: 0.4, - smoothConstraint: false - }, - z2: 0 - }); - layerGroup.add(polygon); - group.add(layerGroup); - if (seriesModel.isAnimationEnabled()) { - polygon.setClipPath(createGridClipShape3(polygon.getBoundingRect(), seriesModel, function() { - polygon.removeClipPath(); - })); - } - } else { - var layerGroup = oldLayersGroups[oldIdx]; - polygon = layerGroup.childAt(0); - group.add(layerGroup); - newLayersGroups[idx] = layerGroup; - updateProps(polygon, { - shape: { - points: points0, - stackedOnPoints: points1 - } - }, seriesModel); - saveOldStyle(polygon); - } - setLabelStyle(polygon, getLabelStatesModels(seriesModel), { - labelDataIndex: indices[j - 1], - defaultText: data.getName(indices[j - 1]), - inheritColor: style.fill - }, { - normal: { - verticalAlign: "middle" - // align: 'right' - } - }); - polygon.setTextConfig({ - position: null, - local: true - }); - var labelEl = polygon.getTextContent(); - if (labelEl) { - labelEl.x = textLayout.x - margin; - labelEl.y = textLayout.y0 + textLayout.y / 2; - } - polygon.useStyle(style); - data.setItemGraphicEl(idx, polygon); - setStatesStylesFromModel(polygon, seriesModel); - toggleHoverEmphasis(polygon, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - } - this._layersSeries = layersSeries; - this._layers = newLayersGroups; - }; - ThemeRiverView2.type = "themeRiver"; - return ThemeRiverView2; - }(Chart_default) - ); - function createGridClipShape3(rect, seriesModel, cb) { - var rectEl = new Rect_default({ - shape: { - x: rect.x - 10, - y: rect.y - 10, - width: 0, - height: rect.height + 20 - } - }); - initProps(rectEl, { - shape: { - x: rect.x - 50, - width: rect.width + 100, - height: rect.height + 20 - } - }, seriesModel, cb); - return rectEl; - } - var ThemeRiverView_default = ThemeRiverView; - - // node_modules/echarts/lib/chart/themeRiver/ThemeRiverSeries.js - var DATA_NAME_INDEX = 2; - var ThemeRiverSeriesModel = ( - /** @class */ - function(_super) { - __extends(ThemeRiverSeriesModel2, _super); - function ThemeRiverSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ThemeRiverSeriesModel2.type; - return _this; - } - ThemeRiverSeriesModel2.prototype.init = function(option) { - _super.prototype.init.apply(this, arguments); - this.legendVisualProvider = new LegendVisualProvider_default(bind(this.getData, this), bind(this.getRawData, this)); - }; - ThemeRiverSeriesModel2.prototype.fixData = function(data) { - var rawDataLength = data.length; - var timeValueKeys = {}; - var groupResult = groupData(data, function(item) { - if (!timeValueKeys.hasOwnProperty(item[0] + "")) { - timeValueKeys[item[0] + ""] = -1; - } - return item[2]; - }); - var layerData = []; - groupResult.buckets.each(function(items, key) { - layerData.push({ - name: key, - dataList: items - }); - }); - var layerNum = layerData.length; - for (var k = 0; k < layerNum; ++k) { - var name_1 = layerData[k].name; - for (var j = 0; j < layerData[k].dataList.length; ++j) { - var timeValue = layerData[k].dataList[j][0] + ""; - timeValueKeys[timeValue] = k; - } - for (var timeValue in timeValueKeys) { - if (timeValueKeys.hasOwnProperty(timeValue) && timeValueKeys[timeValue] !== k) { - timeValueKeys[timeValue] = k; - data[rawDataLength] = [timeValue, 0, name_1]; - rawDataLength++; - } - } - } - return data; - }; - ThemeRiverSeriesModel2.prototype.getInitialData = function(option, ecModel) { - var singleAxisModel = this.getReferringComponents("singleAxis", SINGLE_REFERRING).models[0]; - var axisType = singleAxisModel.get("type"); - var filterData = filter(option.data, function(dataItem) { - return dataItem[2] !== void 0; - }); - var data = this.fixData(filterData || []); - var nameList = []; - var nameMap = this.nameMap = createHashMap(); - var count2 = 0; - for (var i = 0; i < data.length; ++i) { - nameList.push(data[i][DATA_NAME_INDEX]); - if (!nameMap.get(data[i][DATA_NAME_INDEX])) { - nameMap.set(data[i][DATA_NAME_INDEX], count2); - count2++; - } - } - var dimensions = prepareSeriesDataSchema(data, { - coordDimensions: ["single"], - dimensionsDefine: [{ - name: "time", - type: getDimensionTypeByAxis(axisType) - }, { - name: "value", - type: "float" - }, { - name: "name", - type: "ordinal" - }], - encodeDefine: { - single: 0, - value: 1, - itemName: 2 - } - }).dimensions; - var list = new SeriesData_default(dimensions, this); - list.initData(data); - return list; - }; - ThemeRiverSeriesModel2.prototype.getLayerSeries = function() { - var data = this.getData(); - var lenCount = data.count(); - var indexArr = []; - for (var i = 0; i < lenCount; ++i) { - indexArr[i] = i; - } - var timeDim = data.mapDimension("single"); - var groupResult = groupData(indexArr, function(index) { - return data.get("name", index); - }); - var layerSeries = []; - groupResult.buckets.each(function(items, key) { - items.sort(function(index1, index2) { - return data.get(timeDim, index1) - data.get(timeDim, index2); - }); - layerSeries.push({ - name: key, - indices: items - }); - }); - return layerSeries; - }; - ThemeRiverSeriesModel2.prototype.getAxisTooltipData = function(dim, value, baseAxis) { - if (!isArray(dim)) { - dim = dim ? [dim] : []; - } - var data = this.getData(); - var layerSeries = this.getLayerSeries(); - var indices = []; - var layerNum = layerSeries.length; - var nestestValue; - for (var i = 0; i < layerNum; ++i) { - var minDist = Number.MAX_VALUE; - var nearestIdx = -1; - var pointNum = layerSeries[i].indices.length; - for (var j = 0; j < pointNum; ++j) { - var theValue = data.get(dim[0], layerSeries[i].indices[j]); - var dist3 = Math.abs(theValue - value); - if (dist3 <= minDist) { - nestestValue = theValue; - minDist = dist3; - nearestIdx = layerSeries[i].indices[j]; - } - } - indices.push(nearestIdx); - } - return { - dataIndices: indices, - nestestValue - }; - }; - ThemeRiverSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - var data = this.getData(); - var name = data.getName(dataIndex); - var value = data.get(data.mapDimension("value"), dataIndex); - return createTooltipMarkup("nameValue", { - name, - value - }); - }; - ThemeRiverSeriesModel2.type = "series.themeRiver"; - ThemeRiverSeriesModel2.dependencies = ["singleAxis"]; - ThemeRiverSeriesModel2.defaultOption = { - // zlevel: 0, - z: 2, - colorBy: "data", - coordinateSystem: "singleAxis", - // gap in axis's orthogonal orientation - boundaryGap: ["10%", "10%"], - // legendHoverLink: true, - singleAxisIndex: 0, - animationEasing: "linear", - label: { - margin: 4, - show: true, - position: "left", - fontSize: 11 - }, - emphasis: { - label: { - show: true - } - } - }; - return ThemeRiverSeriesModel2; - }(Series_default) - ); - var ThemeRiverSeries_default = ThemeRiverSeriesModel; - - // node_modules/echarts/lib/chart/themeRiver/themeRiverLayout.js - function themeRiverLayout(ecModel, api) { - ecModel.eachSeriesByType("themeRiver", function(seriesModel) { - var data = seriesModel.getData(); - var single = seriesModel.coordinateSystem; - var layoutInfo = {}; - var rect = single.getRect(); - layoutInfo.rect = rect; - var boundaryGap = seriesModel.get("boundaryGap"); - var axis = single.getAxis(); - layoutInfo.boundaryGap = boundaryGap; - if (axis.orient === "horizontal") { - boundaryGap[0] = parsePercent2(boundaryGap[0], rect.height); - boundaryGap[1] = parsePercent2(boundaryGap[1], rect.height); - var height = rect.height - boundaryGap[0] - boundaryGap[1]; - doThemeRiverLayout(data, seriesModel, height); - } else { - boundaryGap[0] = parsePercent2(boundaryGap[0], rect.width); - boundaryGap[1] = parsePercent2(boundaryGap[1], rect.width); - var width = rect.width - boundaryGap[0] - boundaryGap[1]; - doThemeRiverLayout(data, seriesModel, width); - } - data.setLayout("layoutInfo", layoutInfo); - }); - } - function doThemeRiverLayout(data, seriesModel, height) { - if (!data.count()) { - return; - } - var coordSys = seriesModel.coordinateSystem; - var layerSeries = seriesModel.getLayerSeries(); - var timeDim = data.mapDimension("single"); - var valueDim = data.mapDimension("value"); - var layerPoints = map(layerSeries, function(singleLayer) { - return map(singleLayer.indices, function(idx) { - var pt = coordSys.dataToPoint(data.get(timeDim, idx)); - pt[1] = data.get(valueDim, idx); - return pt; - }); - }); - var base2 = computeBaseline(layerPoints); - var baseLine = base2.y0; - var ky = height / base2.max; - var n = layerSeries.length; - var m2 = layerSeries[0].indices.length; - var baseY0; - for (var j = 0; j < m2; ++j) { - baseY0 = baseLine[j] * ky; - data.setItemLayout(layerSeries[0].indices[j], { - layerIndex: 0, - x: layerPoints[0][j][0], - y0: baseY0, - y: layerPoints[0][j][1] * ky - }); - for (var i = 1; i < n; ++i) { - baseY0 += layerPoints[i - 1][j][1] * ky; - data.setItemLayout(layerSeries[i].indices[j], { - layerIndex: i, - x: layerPoints[i][j][0], - y0: baseY0, - y: layerPoints[i][j][1] * ky - }); - } - } - } - function computeBaseline(data) { - var layerNum = data.length; - var pointNum = data[0].length; - var sums = []; - var y0 = []; - var max4 = 0; - for (var i = 0; i < pointNum; ++i) { - var temp = 0; - for (var j = 0; j < layerNum; ++j) { - temp += data[j][i][1]; - } - if (temp > max4) { - max4 = temp; - } - sums.push(temp); - } - for (var k = 0; k < pointNum; ++k) { - y0[k] = (max4 - sums[k]) / 2; - } - max4 = 0; - for (var l = 0; l < pointNum; ++l) { - var sum2 = sums[l] + y0[l]; - if (sum2 > max4) { - max4 = sum2; - } - } - return { - y0, - max: max4 - }; - } - - // node_modules/echarts/lib/chart/themeRiver/install.js - function install26(registers) { - registers.registerChartView(ThemeRiverView_default); - registers.registerSeriesModel(ThemeRiverSeries_default); - registers.registerLayout(themeRiverLayout); - registers.registerProcessor(dataFilter("themeRiver")); - } - - // node_modules/echarts/lib/chart/sunburst/SunburstPiece.js - var DEFAULT_SECTOR_Z = 2; - var DEFAULT_TEXT_Z = 4; - var SunburstPiece = ( - /** @class */ - function(_super) { - __extends(SunburstPiece2, _super); - function SunburstPiece2(node, seriesModel, ecModel, api) { - var _this = _super.call(this) || this; - _this.z2 = DEFAULT_SECTOR_Z; - _this.textConfig = { - inside: true - }; - getECData(_this).seriesIndex = seriesModel.seriesIndex; - var text = new Text_default({ - z2: DEFAULT_TEXT_Z, - silent: node.getModel().get(["label", "silent"]) - }); - _this.setTextContent(text); - _this.updateData(true, node, seriesModel, ecModel, api); - return _this; - } - SunburstPiece2.prototype.updateData = function(firstCreate, node, seriesModel, ecModel, api) { - this.node = node; - node.piece = this; - seriesModel = seriesModel || this._seriesModel; - ecModel = ecModel || this._ecModel; - var sector = this; - getECData(sector).dataIndex = node.dataIndex; - var itemModel = node.getModel(); - var emphasisModel = itemModel.getModel("emphasis"); - var layout5 = node.getLayout(); - var sectorShape = extend({}, layout5); - sectorShape.label = null; - var normalStyle = node.getVisual("style"); - normalStyle.lineJoin = "bevel"; - var decal = node.getVisual("decal"); - if (decal) { - normalStyle.decal = createOrUpdatePatternFromDecal(decal, api); - } - var cornerRadius = getSectorCornerRadius(itemModel.getModel("itemStyle"), sectorShape, true); - extend(sectorShape, cornerRadius); - each(SPECIAL_STATES, function(stateName) { - var state = sector.ensureState(stateName); - var itemStyleModel = itemModel.getModel([stateName, "itemStyle"]); - state.style = itemStyleModel.getItemStyle(); - var cornerRadius2 = getSectorCornerRadius(itemStyleModel, sectorShape); - if (cornerRadius2) { - state.shape = cornerRadius2; - } - }); - if (firstCreate) { - sector.setShape(sectorShape); - sector.shape.r = layout5.r0; - initProps(sector, { - shape: { - r: layout5.r - } - }, seriesModel, node.dataIndex); - } else { - updateProps(sector, { - shape: sectorShape - }, seriesModel); - saveOldStyle(sector); - } - sector.useStyle(normalStyle); - this._updateLabel(seriesModel); - var cursorStyle = itemModel.getShallow("cursor"); - cursorStyle && sector.attr("cursor", cursorStyle); - this._seriesModel = seriesModel || this._seriesModel; - this._ecModel = ecModel || this._ecModel; - var focus = emphasisModel.get("focus"); - var focusOrIndices = focus === "relative" ? concatArray(node.getAncestorsIndices(), node.getDescendantIndices()) : focus === "ancestor" ? node.getAncestorsIndices() : focus === "descendant" ? node.getDescendantIndices() : focus; - toggleHoverEmphasis(this, focusOrIndices, emphasisModel.get("blurScope"), emphasisModel.get("disabled")); - }; - SunburstPiece2.prototype._updateLabel = function(seriesModel) { - var _this = this; - var itemModel = this.node.getModel(); - var normalLabelModel = itemModel.getModel("label"); - var layout5 = this.node.getLayout(); - var angle = layout5.endAngle - layout5.startAngle; - var midAngle = (layout5.startAngle + layout5.endAngle) / 2; - var dx = Math.cos(midAngle); - var dy = Math.sin(midAngle); - var sector = this; - var label = sector.getTextContent(); - var dataIndex = this.node.dataIndex; - var labelMinAngle = normalLabelModel.get("minAngle") / 180 * Math.PI; - var isNormalShown = normalLabelModel.get("show") && !(labelMinAngle != null && Math.abs(angle) < labelMinAngle); - label.ignore = !isNormalShown; - each(DISPLAY_STATES, function(stateName) { - var labelStateModel = stateName === "normal" ? itemModel.getModel("label") : itemModel.getModel([stateName, "label"]); - var isNormal = stateName === "normal"; - var state = isNormal ? label : label.ensureState(stateName); - var text = seriesModel.getFormattedLabel(dataIndex, stateName); - if (isNormal) { - text = text || _this.node.name; - } - state.style = createTextStyle(labelStateModel, {}, null, stateName !== "normal", true); - if (text) { - state.style.text = text; - } - var isShown = labelStateModel.get("show"); - if (isShown != null && !isNormal) { - state.ignore = !isShown; - } - var labelPosition = getLabelAttr(labelStateModel, "position"); - var sectorState = isNormal ? sector : sector.states[stateName]; - var labelColor = sectorState.style.fill; - sectorState.textConfig = { - outsideFill: labelStateModel.get("color") === "inherit" ? labelColor : null, - inside: labelPosition !== "outside" - }; - var r; - var labelPadding = getLabelAttr(labelStateModel, "distance") || 0; - var textAlign = getLabelAttr(labelStateModel, "align"); - var rotateType = getLabelAttr(labelStateModel, "rotate"); - var flipStartAngle = Math.PI * 0.5; - var flipEndAngle = Math.PI * 1.5; - var midAngleNormal = normalizeRadian(rotateType === "tangential" ? Math.PI / 2 - midAngle : midAngle); - var needsFlip = midAngleNormal > flipStartAngle && !isRadianAroundZero(midAngleNormal - flipStartAngle) && midAngleNormal < flipEndAngle; - if (labelPosition === "outside") { - r = layout5.r + labelPadding; - textAlign = needsFlip ? "right" : "left"; - } else { - if (!textAlign || textAlign === "center") { - if (angle === 2 * Math.PI && layout5.r0 === 0) { - r = 0; - } else { - r = (layout5.r + layout5.r0) / 2; - } - textAlign = "center"; - } else if (textAlign === "left") { - r = layout5.r0 + labelPadding; - textAlign = needsFlip ? "right" : "left"; - } else if (textAlign === "right") { - r = layout5.r - labelPadding; - textAlign = needsFlip ? "left" : "right"; - } - } - state.style.align = textAlign; - state.style.verticalAlign = getLabelAttr(labelStateModel, "verticalAlign") || "middle"; - state.x = r * dx + layout5.cx; - state.y = r * dy + layout5.cy; - var rotate2 = 0; - if (rotateType === "radial") { - rotate2 = normalizeRadian(-midAngle) + (needsFlip ? Math.PI : 0); - } else if (rotateType === "tangential") { - rotate2 = normalizeRadian(Math.PI / 2 - midAngle) + (needsFlip ? Math.PI : 0); - } else if (isNumber(rotateType)) { - rotate2 = rotateType * Math.PI / 180; - } - state.rotation = normalizeRadian(rotate2); - }); - function getLabelAttr(model, name) { - var stateAttr = model.get(name); - if (stateAttr == null) { - return normalLabelModel.get(name); - } - return stateAttr; - } - label.dirtyStyle(); - }; - return SunburstPiece2; - }(Sector_default) - ); - var SunburstPiece_default = SunburstPiece; - - // node_modules/echarts/lib/chart/sunburst/sunburstAction.js - var ROOT_TO_NODE_ACTION = "sunburstRootToNode"; - var HIGHLIGHT_ACTION = "sunburstHighlight"; - var UNHIGHLIGHT_ACTION = "sunburstUnhighlight"; - function installSunburstAction(registers) { - registers.registerAction({ - type: ROOT_TO_NODE_ACTION, - update: "updateView" - }, function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "series", - subType: "sunburst", - query: payload - }, handleRootToNode); - function handleRootToNode(model, index) { - var targetInfo = retrieveTargetInfo(payload, [ROOT_TO_NODE_ACTION], model); - if (targetInfo) { - var originViewRoot = model.getViewRoot(); - if (originViewRoot) { - payload.direction = aboveViewRoot(originViewRoot, targetInfo.node) ? "rollUp" : "drillDown"; - } - model.resetViewRoot(targetInfo.node); - } - } - }); - registers.registerAction({ - type: HIGHLIGHT_ACTION, - update: "none" - }, function(payload, ecModel, api) { - payload = extend({}, payload); - ecModel.eachComponent({ - mainType: "series", - subType: "sunburst", - query: payload - }, handleHighlight); - function handleHighlight(model) { - var targetInfo = retrieveTargetInfo(payload, [HIGHLIGHT_ACTION], model); - if (targetInfo) { - payload.dataIndex = targetInfo.node.dataIndex; - } - } - if (true) { - deprecateReplaceLog("sunburstHighlight", "highlight"); - } - api.dispatchAction(extend(payload, { - type: "highlight" - })); - }); - registers.registerAction({ - type: UNHIGHLIGHT_ACTION, - update: "updateView" - }, function(payload, ecModel, api) { - payload = extend({}, payload); - if (true) { - deprecateReplaceLog("sunburstUnhighlight", "downplay"); - } - api.dispatchAction(extend(payload, { - type: "downplay" - })); - }); - } - - // node_modules/echarts/lib/chart/sunburst/SunburstView.js - var SunburstView = ( - /** @class */ - function(_super) { - __extends(SunburstView2, _super); - function SunburstView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SunburstView2.type; - return _this; - } - SunburstView2.prototype.render = function(seriesModel, ecModel, api, payload) { - var self2 = this; - this.seriesModel = seriesModel; - this.api = api; - this.ecModel = ecModel; - var data = seriesModel.getData(); - var virtualRoot = data.tree.root; - var newRoot = seriesModel.getViewRoot(); - var group = this.group; - var renderLabelForZeroData = seriesModel.get("renderLabelForZeroData"); - var newChildren = []; - newRoot.eachNode(function(node) { - newChildren.push(node); - }); - var oldChildren = this._oldChildren || []; - dualTravel(newChildren, oldChildren); - renderRollUp(virtualRoot, newRoot); - this._initEvents(); - this._oldChildren = newChildren; - function dualTravel(newChildren2, oldChildren2) { - if (newChildren2.length === 0 && oldChildren2.length === 0) { - return; - } - new DataDiffer_default(oldChildren2, newChildren2, getKey2, getKey2).add(processNode).update(processNode).remove(curry(processNode, null)).execute(); - function getKey2(node) { - return node.getId(); - } - function processNode(newIdx, oldIdx) { - var newNode = newIdx == null ? null : newChildren2[newIdx]; - var oldNode = oldIdx == null ? null : oldChildren2[oldIdx]; - doRenderNode(newNode, oldNode); - } - } - function doRenderNode(newNode, oldNode) { - if (!renderLabelForZeroData && newNode && !newNode.getValue()) { - newNode = null; - } - if (newNode !== virtualRoot && oldNode !== virtualRoot) { - if (oldNode && oldNode.piece) { - if (newNode) { - oldNode.piece.updateData(false, newNode, seriesModel, ecModel, api); - data.setItemGraphicEl(newNode.dataIndex, oldNode.piece); - } else { - removeNode2(oldNode); - } - } else if (newNode) { - var piece = new SunburstPiece_default(newNode, seriesModel, ecModel, api); - group.add(piece); - data.setItemGraphicEl(newNode.dataIndex, piece); - } - } - } - function removeNode2(node) { - if (!node) { - return; - } - if (node.piece) { - group.remove(node.piece); - node.piece = null; - } - } - function renderRollUp(virtualRoot2, viewRoot) { - if (viewRoot.depth > 0) { - if (self2.virtualPiece) { - self2.virtualPiece.updateData(false, virtualRoot2, seriesModel, ecModel, api); - } else { - self2.virtualPiece = new SunburstPiece_default(virtualRoot2, seriesModel, ecModel, api); - group.add(self2.virtualPiece); - } - viewRoot.piece.off("click"); - self2.virtualPiece.on("click", function(e2) { - self2._rootToNode(viewRoot.parentNode); - }); - } else if (self2.virtualPiece) { - group.remove(self2.virtualPiece); - self2.virtualPiece = null; - } - } - }; - SunburstView2.prototype._initEvents = function() { - var _this = this; - this.group.off("click"); - this.group.on("click", function(e2) { - var targetFound = false; - var viewRoot = _this.seriesModel.getViewRoot(); - viewRoot.eachNode(function(node) { - if (!targetFound && node.piece && node.piece === e2.target) { - var nodeClick = node.getModel().get("nodeClick"); - if (nodeClick === "rootToNode") { - _this._rootToNode(node); - } else if (nodeClick === "link") { - var itemModel = node.getModel(); - var link = itemModel.get("link"); - if (link) { - var linkTarget = itemModel.get("target", true) || "_blank"; - windowOpen(link, linkTarget); - } - } - targetFound = true; - } - }); - }); - }; - SunburstView2.prototype._rootToNode = function(node) { - if (node !== this.seriesModel.getViewRoot()) { - this.api.dispatchAction({ - type: ROOT_TO_NODE_ACTION, - from: this.uid, - seriesId: this.seriesModel.id, - targetNode: node - }); - } - }; - SunburstView2.prototype.containPoint = function(point, seriesModel) { - var treeRoot = seriesModel.getData(); - var itemLayout = treeRoot.getItemLayout(0); - if (itemLayout) { - var dx = point[0] - itemLayout.cx; - var dy = point[1] - itemLayout.cy; - var radius = Math.sqrt(dx * dx + dy * dy); - return radius <= itemLayout.r && radius >= itemLayout.r0; - } - }; - SunburstView2.type = "sunburst"; - return SunburstView2; - }(Chart_default) - ); - var SunburstView_default = SunburstView; - - // node_modules/echarts/lib/chart/sunburst/SunburstSeries.js - var SunburstSeriesModel = ( - /** @class */ - function(_super) { - __extends(SunburstSeriesModel2, _super); - function SunburstSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SunburstSeriesModel2.type; - _this.ignoreStyleOnData = true; - return _this; - } - SunburstSeriesModel2.prototype.getInitialData = function(option, ecModel) { - var root = { - name: option.name, - children: option.data - }; - completeTreeValue2(root); - var levelModels = this._levelModels = map(option.levels || [], function(levelDefine) { - return new Model_default(levelDefine, this, ecModel); - }, this); - var tree = Tree_default.createTree(root, this, beforeLink); - function beforeLink(nodeData) { - nodeData.wrapMethod("getItemModel", function(model, idx) { - var node = tree.getNodeByDataIndex(idx); - var levelModel = levelModels[node.depth]; - levelModel && (model.parentModel = levelModel); - return model; - }); - } - return tree.data; - }; - SunburstSeriesModel2.prototype.optionUpdated = function() { - this.resetViewRoot(); - }; - SunburstSeriesModel2.prototype.getDataParams = function(dataIndex) { - var params = _super.prototype.getDataParams.apply(this, arguments); - var node = this.getData().tree.getNodeByDataIndex(dataIndex); - params.treePathInfo = wrapTreePathInfo(node, this); - return params; - }; - SunburstSeriesModel2.prototype.getLevelModel = function(node) { - return this._levelModels && this._levelModels[node.depth]; - }; - SunburstSeriesModel2.prototype.getViewRoot = function() { - return this._viewRoot; - }; - SunburstSeriesModel2.prototype.resetViewRoot = function(viewRoot) { - viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot; - var root = this.getRawData().tree.root; - if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) { - this._viewRoot = root; - } - }; - SunburstSeriesModel2.prototype.enableAriaDecal = function() { - enableAriaDecalForTree(this); - }; - SunburstSeriesModel2.type = "series.sunburst"; - SunburstSeriesModel2.defaultOption = { - // zlevel: 0, - z: 2, - // 默认全局居中 - center: ["50%", "50%"], - radius: [0, "75%"], - // 默认顺时针 - clockwise: true, - startAngle: 90, - // 最小角度改为0 - minAngle: 0, - // If still show when all data zero. - stillShowZeroSum: true, - // 'rootToNode', 'link', or false - nodeClick: "rootToNode", - renderLabelForZeroData: false, - label: { - // could be: 'radial', 'tangential', or 'none' - rotate: "radial", - show: true, - opacity: 1, - // 'left' is for inner side of inside, and 'right' is for outer - // side for inside - align: "center", - position: "inside", - distance: 5, - silent: true - }, - itemStyle: { - borderWidth: 1, - borderColor: "white", - borderType: "solid", - shadowBlur: 0, - shadowColor: "rgba(0, 0, 0, 0.2)", - shadowOffsetX: 0, - shadowOffsetY: 0, - opacity: 1 - }, - emphasis: { - focus: "descendant" - }, - blur: { - itemStyle: { - opacity: 0.2 - }, - label: { - opacity: 0.1 - } - }, - // Animation type can be expansion, scale. - animationType: "expansion", - animationDuration: 1e3, - animationDurationUpdate: 500, - data: [], - /** - * Sort order. - * - * Valid values: 'desc', 'asc', null, or callback function. - * 'desc' and 'asc' for descend and ascendant order; - * null for not sorting; - * example of callback function: - * function(nodeA, nodeB) { - * return nodeA.getValue() - nodeB.getValue(); - * } - */ - sort: "desc" - }; - return SunburstSeriesModel2; - }(Series_default) - ); - function completeTreeValue2(dataNode) { - var sum2 = 0; - each(dataNode.children, function(child) { - completeTreeValue2(child); - var childValue = child.value; - isArray(childValue) && (childValue = childValue[0]); - sum2 += childValue; - }); - var thisValue = dataNode.value; - if (isArray(thisValue)) { - thisValue = thisValue[0]; - } - if (thisValue == null || isNaN(thisValue)) { - thisValue = sum2; - } - if (thisValue < 0) { - thisValue = 0; - } - isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue; - } - var SunburstSeries_default = SunburstSeriesModel; - - // node_modules/echarts/lib/chart/sunburst/sunburstLayout.js - var RADIAN3 = Math.PI / 180; - function sunburstLayout(seriesType2, ecModel, api) { - ecModel.eachSeriesByType(seriesType2, function(seriesModel) { - var center3 = seriesModel.get("center"); - var radius = seriesModel.get("radius"); - if (!isArray(radius)) { - radius = [0, radius]; - } - if (!isArray(center3)) { - center3 = [center3, center3]; - } - var width = api.getWidth(); - var height = api.getHeight(); - var size2 = Math.min(width, height); - var cx = parsePercent2(center3[0], width); - var cy = parsePercent2(center3[1], height); - var r0 = parsePercent2(radius[0], size2 / 2); - var r = parsePercent2(radius[1], size2 / 2); - var startAngle = -seriesModel.get("startAngle") * RADIAN3; - var minAngle = seriesModel.get("minAngle") * RADIAN3; - var virtualRoot = seriesModel.getData().tree.root; - var treeRoot = seriesModel.getViewRoot(); - var rootDepth = treeRoot.depth; - var sort4 = seriesModel.get("sort"); - if (sort4 != null) { - initChildren2(treeRoot, sort4); - } - var validDataCount = 0; - each(treeRoot.children, function(child) { - !isNaN(child.getValue()) && validDataCount++; - }); - var sum2 = treeRoot.getValue(); - var unitRadian = Math.PI / (sum2 || validDataCount) * 2; - var renderRollupNode = treeRoot.depth > 0; - var levels = treeRoot.height - (renderRollupNode ? -1 : 1); - var rPerLevel = (r - r0) / (levels || 1); - var clockwise = seriesModel.get("clockwise"); - var stillShowZeroSum = seriesModel.get("stillShowZeroSum"); - var dir3 = clockwise ? 1 : -1; - var renderNode2 = function(node, startAngle2) { - if (!node) { - return; - } - var endAngle = startAngle2; - if (node !== virtualRoot) { - var value = node.getValue(); - var angle2 = sum2 === 0 && stillShowZeroSum ? unitRadian : value * unitRadian; - if (angle2 < minAngle) { - angle2 = minAngle; - } - endAngle = startAngle2 + dir3 * angle2; - var depth = node.depth - rootDepth - (renderRollupNode ? -1 : 1); - var rStart2 = r0 + rPerLevel * depth; - var rEnd2 = r0 + rPerLevel * (depth + 1); - var levelModel = seriesModel.getLevelModel(node); - if (levelModel) { - var r0_1 = levelModel.get("r0", true); - var r_1 = levelModel.get("r", true); - var radius_1 = levelModel.get("radius", true); - if (radius_1 != null) { - r0_1 = radius_1[0]; - r_1 = radius_1[1]; - } - r0_1 != null && (rStart2 = parsePercent2(r0_1, size2 / 2)); - r_1 != null && (rEnd2 = parsePercent2(r_1, size2 / 2)); - } - node.setLayout({ - angle: angle2, - startAngle: startAngle2, - endAngle, - clockwise, - cx, - cy, - r0: rStart2, - r: rEnd2 - }); - } - if (node.children && node.children.length) { - var siblingAngle_1 = 0; - each(node.children, function(node2) { - siblingAngle_1 += renderNode2(node2, startAngle2 + siblingAngle_1); - }); - } - return endAngle - startAngle2; - }; - if (renderRollupNode) { - var rStart = r0; - var rEnd = r0 + rPerLevel; - var angle = Math.PI * 2; - virtualRoot.setLayout({ - angle, - startAngle, - endAngle: startAngle + angle, - clockwise, - cx, - cy, - r0: rStart, - r: rEnd - }); - } - renderNode2(treeRoot, startAngle); - }); - } - function initChildren2(node, sortOrder) { - var children = node.children || []; - node.children = sort3(children, sortOrder); - if (children.length) { - each(node.children, function(child) { - initChildren2(child, sortOrder); - }); - } - } - function sort3(children, sortOrder) { - if (isFunction(sortOrder)) { - var sortTargets = map(children, function(child, idx) { - var value = child.getValue(); - return { - params: { - depth: child.depth, - height: child.height, - dataIndex: child.dataIndex, - getValue: function() { - return value; - } - }, - index: idx - }; - }); - sortTargets.sort(function(a, b) { - return sortOrder(a.params, b.params); - }); - return map(sortTargets, function(target) { - return children[target.index]; - }); - } else { - var isAsc_1 = sortOrder === "asc"; - return children.sort(function(a, b) { - var diff = (a.getValue() - b.getValue()) * (isAsc_1 ? 1 : -1); - return diff === 0 ? (a.dataIndex - b.dataIndex) * (isAsc_1 ? -1 : 1) : diff; - }); - } - } - - // node_modules/echarts/lib/chart/sunburst/sunburstVisual.js - function sunburstVisual(ecModel) { - var paletteScope = {}; - function pickColor(node, seriesModel, treeHeight) { - var current = node; - while (current && current.depth > 1) { - current = current.parentNode; - } - var color = seriesModel.getColorFromPalette(current.name || current.dataIndex + "", paletteScope); - if (node.depth > 1 && isString(color)) { - color = lift(color, (node.depth - 1) / (treeHeight - 1) * 0.5); - } - return color; - } - ecModel.eachSeriesByType("sunburst", function(seriesModel) { - var data = seriesModel.getData(); - var tree = data.tree; - tree.eachNode(function(node) { - var model = node.getModel(); - var style = model.getModel("itemStyle").getItemStyle(); - if (!style.fill) { - style.fill = pickColor(node, seriesModel, tree.root.height); - } - var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, "style"); - extend(existsStyle, style); - }); - }); - } - - // node_modules/echarts/lib/chart/sunburst/install.js - function install27(registers) { - registers.registerChartView(SunburstView_default); - registers.registerSeriesModel(SunburstSeries_default); - registers.registerLayout(curry(sunburstLayout, "sunburst")); - registers.registerProcessor(curry(dataFilter, "sunburst")); - registers.registerVisual(sunburstVisual); - installSunburstAction(registers); - } - - // node_modules/echarts/lib/chart/custom/CustomSeries.js - var STYLE_VISUAL_TYPE = { - color: "fill", - borderColor: "stroke" - }; - var NON_STYLE_VISUAL_PROPS = { - symbol: 1, - symbolSize: 1, - symbolKeepAspect: 1, - legendIcon: 1, - visualMeta: 1, - liftZ: 1, - decal: 1 - }; - var customInnerStore = makeInner(); - var CustomSeriesModel = ( - /** @class */ - function(_super) { - __extends(CustomSeriesModel2, _super); - function CustomSeriesModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CustomSeriesModel2.type; - return _this; - } - CustomSeriesModel2.prototype.optionUpdated = function() { - this.currentZLevel = this.get("zlevel", true); - this.currentZ = this.get("z", true); - }; - CustomSeriesModel2.prototype.getInitialData = function(option, ecModel) { - return createSeriesData_default(null, this); - }; - CustomSeriesModel2.prototype.getDataParams = function(dataIndex, dataType, el) { - var params = _super.prototype.getDataParams.call(this, dataIndex, dataType); - el && (params.info = customInnerStore(el).info); - return params; - }; - CustomSeriesModel2.type = "series.custom"; - CustomSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"]; - CustomSeriesModel2.defaultOption = { - coordinateSystem: "cartesian2d", - // zlevel: 0, - z: 2, - legendHoverLink: true, - // Custom series will not clip by default. - // Some case will use custom series to draw label - // For example https://echarts.apache.org/examples/en/editor.html?c=custom-gantt-flight - clip: false - // Cartesian coordinate system - // xAxisIndex: 0, - // yAxisIndex: 0, - // Polar coordinate system - // polarIndex: 0, - // Geo coordinate system - // geoIndex: 0, - }; - return CustomSeriesModel2; - }(Series_default) - ); - var CustomSeries_default = CustomSeriesModel; - - // node_modules/echarts/lib/coord/cartesian/prepareCustom.js - function dataToCoordSize(dataSize, dataItem) { - dataItem = dataItem || [0, 0]; - return map(["x", "y"], function(dim, dimIdx) { - var axis = this.getAxis(dim); - var val = dataItem[dimIdx]; - var halfSize = dataSize[dimIdx] / 2; - return axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize)); - }, this); - } - function cartesianPrepareCustom(coordSys) { - var rect = coordSys.master.getRect(); - return { - coordSys: { - // The name exposed to user is always 'cartesian2d' but not 'grid'. - type: "cartesian2d", - x: rect.x, - y: rect.y, - width: rect.width, - height: rect.height - }, - api: { - coord: function(data) { - return coordSys.dataToPoint(data); - }, - size: bind(dataToCoordSize, coordSys) - } - }; - } - - // node_modules/echarts/lib/coord/geo/prepareCustom.js - function dataToCoordSize2(dataSize, dataItem) { - dataItem = dataItem || [0, 0]; - return map([0, 1], function(dimIdx) { - var val = dataItem[dimIdx]; - var halfSize = dataSize[dimIdx] / 2; - var p1 = []; - var p2 = []; - p1[dimIdx] = val - halfSize; - p2[dimIdx] = val + halfSize; - p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx]; - return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]); - }, this); - } - function geoPrepareCustom(coordSys) { - var rect = coordSys.getBoundingRect(); - return { - coordSys: { - type: "geo", - x: rect.x, - y: rect.y, - width: rect.width, - height: rect.height, - zoom: coordSys.getZoom() - }, - api: { - coord: function(data) { - return coordSys.dataToPoint(data); - }, - size: bind(dataToCoordSize2, coordSys) - } - }; - } - - // node_modules/echarts/lib/coord/single/prepareCustom.js - function dataToCoordSize3(dataSize, dataItem) { - var axis = this.getAxis(); - var val = dataItem instanceof Array ? dataItem[0] : dataItem; - var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2; - return axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize)); - } - function singlePrepareCustom(coordSys) { - var rect = coordSys.getRect(); - return { - coordSys: { - type: "singleAxis", - x: rect.x, - y: rect.y, - width: rect.width, - height: rect.height - }, - api: { - coord: function(val) { - return coordSys.dataToPoint(val); - }, - size: bind(dataToCoordSize3, coordSys) - } - }; - } - - // node_modules/echarts/lib/coord/polar/prepareCustom.js - function dataToCoordSize4(dataSize, dataItem) { - dataItem = dataItem || [0, 0]; - return map(["Radius", "Angle"], function(dim, dimIdx) { - var getterName = "get" + dim + "Axis"; - var axis = this[getterName](); - var val = dataItem[dimIdx]; - var halfSize = dataSize[dimIdx] / 2; - var result = axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize)); - if (dim === "Angle") { - result = result * Math.PI / 180; - } - return result; - }, this); - } - function polarPrepareCustom(coordSys) { - var radiusAxis = coordSys.getRadiusAxis(); - var angleAxis = coordSys.getAngleAxis(); - var radius = radiusAxis.getExtent(); - radius[0] > radius[1] && radius.reverse(); - return { - coordSys: { - type: "polar", - cx: coordSys.cx, - cy: coordSys.cy, - r: radius[1], - r0: radius[0] - }, - api: { - coord: function(data) { - var radius2 = radiusAxis.dataToRadius(data[0]); - var angle = angleAxis.dataToAngle(data[1]); - var coord = coordSys.coordToPoint([radius2, angle]); - coord.push(radius2, angle * Math.PI / 180); - return coord; - }, - size: bind(dataToCoordSize4, coordSys) - } - }; - } - - // node_modules/echarts/lib/coord/calendar/prepareCustom.js - function calendarPrepareCustom(coordSys) { - var rect = coordSys.getRect(); - var rangeInfo = coordSys.getRangeInfo(); - return { - coordSys: { - type: "calendar", - x: rect.x, - y: rect.y, - width: rect.width, - height: rect.height, - cellWidth: coordSys.getCellWidth(), - cellHeight: coordSys.getCellHeight(), - rangeInfo: { - start: rangeInfo.start, - end: rangeInfo.end, - weeks: rangeInfo.weeks, - dayCount: rangeInfo.allDay - } - }, - api: { - coord: function(data, clamp3) { - return coordSys.dataToPoint(data, clamp3); - } - } - }; - } - - // node_modules/echarts/lib/util/styleCompat.js - var deprecatedLogs = {}; - function isEC4CompatibleStyle(style, elType, hasOwnTextContentOption, hasOwnTextConfig) { - return style && (style.legacy || style.legacy !== false && !hasOwnTextContentOption && !hasOwnTextConfig && elType !== "tspan" && (elType === "text" || hasOwn(style, "text"))); - } - function convertFromEC4CompatibleStyle(hostStyle, elType, isNormal) { - var srcStyle = hostStyle; - var textConfig; - var textContent; - var textContentStyle; - if (elType === "text") { - textContentStyle = srcStyle; - } else { - textContentStyle = {}; - hasOwn(srcStyle, "text") && (textContentStyle.text = srcStyle.text); - hasOwn(srcStyle, "rich") && (textContentStyle.rich = srcStyle.rich); - hasOwn(srcStyle, "textFill") && (textContentStyle.fill = srcStyle.textFill); - hasOwn(srcStyle, "textStroke") && (textContentStyle.stroke = srcStyle.textStroke); - hasOwn(srcStyle, "fontFamily") && (textContentStyle.fontFamily = srcStyle.fontFamily); - hasOwn(srcStyle, "fontSize") && (textContentStyle.fontSize = srcStyle.fontSize); - hasOwn(srcStyle, "fontStyle") && (textContentStyle.fontStyle = srcStyle.fontStyle); - hasOwn(srcStyle, "fontWeight") && (textContentStyle.fontWeight = srcStyle.fontWeight); - textContent = { - type: "text", - style: textContentStyle, - // ec4 does not support rectText trigger. - // And when text position is different in normal and emphasis - // => hover text trigger emphasis; - // => text position changed, leave mouse pointer immediately; - // That might cause incorrect state. - silent: true - }; - textConfig = {}; - var hasOwnPos = hasOwn(srcStyle, "textPosition"); - if (isNormal) { - textConfig.position = hasOwnPos ? srcStyle.textPosition : "inside"; - } else { - hasOwnPos && (textConfig.position = srcStyle.textPosition); - } - hasOwn(srcStyle, "textPosition") && (textConfig.position = srcStyle.textPosition); - hasOwn(srcStyle, "textOffset") && (textConfig.offset = srcStyle.textOffset); - hasOwn(srcStyle, "textRotation") && (textConfig.rotation = srcStyle.textRotation); - hasOwn(srcStyle, "textDistance") && (textConfig.distance = srcStyle.textDistance); - } - convertEC4CompatibleRichItem(textContentStyle, hostStyle); - each(textContentStyle.rich, function(richItem) { - convertEC4CompatibleRichItem(richItem, richItem); - }); - return { - textConfig, - textContent - }; - } - function convertEC4CompatibleRichItem(out2, richItem) { - if (!richItem) { - return; - } - richItem.font = richItem.textFont || richItem.font; - hasOwn(richItem, "textStrokeWidth") && (out2.lineWidth = richItem.textStrokeWidth); - hasOwn(richItem, "textAlign") && (out2.align = richItem.textAlign); - hasOwn(richItem, "textVerticalAlign") && (out2.verticalAlign = richItem.textVerticalAlign); - hasOwn(richItem, "textLineHeight") && (out2.lineHeight = richItem.textLineHeight); - hasOwn(richItem, "textWidth") && (out2.width = richItem.textWidth); - hasOwn(richItem, "textHeight") && (out2.height = richItem.textHeight); - hasOwn(richItem, "textBackgroundColor") && (out2.backgroundColor = richItem.textBackgroundColor); - hasOwn(richItem, "textPadding") && (out2.padding = richItem.textPadding); - hasOwn(richItem, "textBorderColor") && (out2.borderColor = richItem.textBorderColor); - hasOwn(richItem, "textBorderWidth") && (out2.borderWidth = richItem.textBorderWidth); - hasOwn(richItem, "textBorderRadius") && (out2.borderRadius = richItem.textBorderRadius); - hasOwn(richItem, "textBoxShadowColor") && (out2.shadowColor = richItem.textBoxShadowColor); - hasOwn(richItem, "textBoxShadowBlur") && (out2.shadowBlur = richItem.textBoxShadowBlur); - hasOwn(richItem, "textBoxShadowOffsetX") && (out2.shadowOffsetX = richItem.textBoxShadowOffsetX); - hasOwn(richItem, "textBoxShadowOffsetY") && (out2.shadowOffsetY = richItem.textBoxShadowOffsetY); - } - function convertToEC4StyleForCustomSerise(itemStl, txStl, txCfg) { - var out2 = itemStl; - out2.textPosition = out2.textPosition || txCfg.position || "inside"; - txCfg.offset != null && (out2.textOffset = txCfg.offset); - txCfg.rotation != null && (out2.textRotation = txCfg.rotation); - txCfg.distance != null && (out2.textDistance = txCfg.distance); - var isInside = out2.textPosition.indexOf("inside") >= 0; - var hostFill = itemStl.fill || "#000"; - convertToEC4RichItem(out2, txStl); - var textFillNotSet = out2.textFill == null; - if (isInside) { - if (textFillNotSet) { - out2.textFill = txCfg.insideFill || "#fff"; - !out2.textStroke && txCfg.insideStroke && (out2.textStroke = txCfg.insideStroke); - !out2.textStroke && (out2.textStroke = hostFill); - out2.textStrokeWidth == null && (out2.textStrokeWidth = 2); - } - } else { - if (textFillNotSet) { - out2.textFill = itemStl.fill || txCfg.outsideFill || "#000"; - } - !out2.textStroke && txCfg.outsideStroke && (out2.textStroke = txCfg.outsideStroke); - } - out2.text = txStl.text; - out2.rich = txStl.rich; - each(txStl.rich, function(richItem) { - convertToEC4RichItem(richItem, richItem); - }); - return out2; - } - function convertToEC4RichItem(out2, richItem) { - if (!richItem) { - return; - } - hasOwn(richItem, "fill") && (out2.textFill = richItem.fill); - hasOwn(richItem, "stroke") && (out2.textStroke = richItem.fill); - hasOwn(richItem, "lineWidth") && (out2.textStrokeWidth = richItem.lineWidth); - hasOwn(richItem, "font") && (out2.font = richItem.font); - hasOwn(richItem, "fontStyle") && (out2.fontStyle = richItem.fontStyle); - hasOwn(richItem, "fontWeight") && (out2.fontWeight = richItem.fontWeight); - hasOwn(richItem, "fontSize") && (out2.fontSize = richItem.fontSize); - hasOwn(richItem, "fontFamily") && (out2.fontFamily = richItem.fontFamily); - hasOwn(richItem, "align") && (out2.textAlign = richItem.align); - hasOwn(richItem, "verticalAlign") && (out2.textVerticalAlign = richItem.verticalAlign); - hasOwn(richItem, "lineHeight") && (out2.textLineHeight = richItem.lineHeight); - hasOwn(richItem, "width") && (out2.textWidth = richItem.width); - hasOwn(richItem, "height") && (out2.textHeight = richItem.height); - hasOwn(richItem, "backgroundColor") && (out2.textBackgroundColor = richItem.backgroundColor); - hasOwn(richItem, "padding") && (out2.textPadding = richItem.padding); - hasOwn(richItem, "borderColor") && (out2.textBorderColor = richItem.borderColor); - hasOwn(richItem, "borderWidth") && (out2.textBorderWidth = richItem.borderWidth); - hasOwn(richItem, "borderRadius") && (out2.textBorderRadius = richItem.borderRadius); - hasOwn(richItem, "shadowColor") && (out2.textBoxShadowColor = richItem.shadowColor); - hasOwn(richItem, "shadowBlur") && (out2.textBoxShadowBlur = richItem.shadowBlur); - hasOwn(richItem, "shadowOffsetX") && (out2.textBoxShadowOffsetX = richItem.shadowOffsetX); - hasOwn(richItem, "shadowOffsetY") && (out2.textBoxShadowOffsetY = richItem.shadowOffsetY); - hasOwn(richItem, "textShadowColor") && (out2.textShadowColor = richItem.textShadowColor); - hasOwn(richItem, "textShadowBlur") && (out2.textShadowBlur = richItem.textShadowBlur); - hasOwn(richItem, "textShadowOffsetX") && (out2.textShadowOffsetX = richItem.textShadowOffsetX); - hasOwn(richItem, "textShadowOffsetY") && (out2.textShadowOffsetY = richItem.textShadowOffsetY); - } - function warnDeprecated(deprecated, insteadApproach) { - if (true) { - var key = deprecated + "^_^" + insteadApproach; - if (!deprecatedLogs[key]) { - console.warn('[ECharts] DEPRECATED: "' + deprecated + '" has been deprecated. ' + insteadApproach); - deprecatedLogs[key] = true; - } - } - } - - // node_modules/echarts/lib/animation/customGraphicTransition.js - var LEGACY_TRANSFORM_PROPS_MAP = { - position: ["x", "y"], - scale: ["scaleX", "scaleY"], - origin: ["originX", "originY"] - }; - var LEGACY_TRANSFORM_PROPS = keys(LEGACY_TRANSFORM_PROPS_MAP); - var TRANSFORM_PROPS_MAP = reduce(TRANSFORMABLE_PROPS, function(obj, key) { - obj[key] = 1; - return obj; - }, {}); - var transformPropNamesStr = TRANSFORMABLE_PROPS.join(", "); - var ELEMENT_ANIMATABLE_PROPS = ["", "style", "shape", "extra"]; - var transitionInnerStore = makeInner(); - function getElementAnimationConfig(animationType, el, elOption, parentModel, dataIndex) { - var animationProp = animationType + "Animation"; - var config2 = getAnimationConfig(animationType, parentModel, dataIndex) || {}; - var userDuring = transitionInnerStore(el).userDuring; - if (config2.duration > 0) { - config2.during = userDuring ? bind(duringCall, { - el, - userDuring - }) : null; - config2.setToFinal = true; - config2.scope = animationType; - } - extend(config2, elOption[animationProp]); - return config2; - } - function applyUpdateTransition(el, elOption, animatableModel, opts) { - opts = opts || {}; - var dataIndex = opts.dataIndex, isInit = opts.isInit, clearStyle = opts.clearStyle; - var hasAnimation = animatableModel.isAnimationEnabled(); - var store = transitionInnerStore(el); - var styleOpt = elOption.style; - store.userDuring = elOption.during; - var transFromProps = {}; - var propsToSet = {}; - prepareTransformAllPropsFinal(el, elOption, propsToSet); - prepareShapeOrExtraAllPropsFinal("shape", elOption, propsToSet); - prepareShapeOrExtraAllPropsFinal("extra", elOption, propsToSet); - if (!isInit && hasAnimation) { - prepareTransformTransitionFrom(el, elOption, transFromProps); - prepareShapeOrExtraTransitionFrom("shape", el, elOption, transFromProps); - prepareShapeOrExtraTransitionFrom("extra", el, elOption, transFromProps); - prepareStyleTransitionFrom(el, elOption, styleOpt, transFromProps); - } - propsToSet.style = styleOpt; - applyPropsDirectly(el, propsToSet, clearStyle); - applyMiscProps(el, elOption); - if (hasAnimation) { - if (isInit) { - var enterFromProps_1 = {}; - each(ELEMENT_ANIMATABLE_PROPS, function(propName) { - var prop = propName ? elOption[propName] : elOption; - if (prop && prop.enterFrom) { - if (propName) { - enterFromProps_1[propName] = enterFromProps_1[propName] || {}; - } - extend(propName ? enterFromProps_1[propName] : enterFromProps_1, prop.enterFrom); - } - }); - var config2 = getElementAnimationConfig("enter", el, elOption, animatableModel, dataIndex); - if (config2.duration > 0) { - el.animateFrom(enterFromProps_1, config2); - } - } else { - applyPropsTransition(el, elOption, dataIndex || 0, animatableModel, transFromProps); - } - } - updateLeaveTo(el, elOption); - styleOpt ? el.dirty() : el.markRedraw(); - } - function updateLeaveTo(el, elOption) { - var leaveToProps = transitionInnerStore(el).leaveToProps; - for (var i = 0; i < ELEMENT_ANIMATABLE_PROPS.length; i++) { - var propName = ELEMENT_ANIMATABLE_PROPS[i]; - var prop = propName ? elOption[propName] : elOption; - if (prop && prop.leaveTo) { - if (!leaveToProps) { - leaveToProps = transitionInnerStore(el).leaveToProps = {}; - } - if (propName) { - leaveToProps[propName] = leaveToProps[propName] || {}; - } - extend(propName ? leaveToProps[propName] : leaveToProps, prop.leaveTo); - } - } - } - function applyLeaveTransition(el, elOption, animatableModel, onRemove) { - if (el) { - var parent_1 = el.parent; - var leaveToProps = transitionInnerStore(el).leaveToProps; - if (leaveToProps) { - var config2 = getElementAnimationConfig("update", el, elOption, animatableModel, 0); - config2.done = function() { - parent_1.remove(el); - onRemove && onRemove(); - }; - el.animateTo(leaveToProps, config2); - } else { - parent_1.remove(el); - onRemove && onRemove(); - } - } - } - function isTransitionAll(transition) { - return transition === "all"; - } - function applyPropsDirectly(el, allPropsFinal, clearStyle) { - var styleOpt = allPropsFinal.style; - if (!el.isGroup && styleOpt) { - if (clearStyle) { - el.useStyle({}); - var animators = el.animators; - for (var i = 0; i < animators.length; i++) { - var animator = animators[i]; - if (animator.targetName === "style") { - animator.changeTarget(el.style); - } - } - } - el.setStyle(styleOpt); - } - if (allPropsFinal) { - allPropsFinal.style = null; - allPropsFinal && el.attr(allPropsFinal); - allPropsFinal.style = styleOpt; - } - } - function applyPropsTransition(el, elOption, dataIndex, model, transFromProps) { - if (transFromProps) { - var config2 = getElementAnimationConfig("update", el, elOption, model, dataIndex); - if (config2.duration > 0) { - el.animateFrom(transFromProps, config2); - } - } - } - function applyMiscProps(el, elOption) { - hasOwn(elOption, "silent") && (el.silent = elOption.silent); - hasOwn(elOption, "ignore") && (el.ignore = elOption.ignore); - if (el instanceof Displayable_default) { - hasOwn(elOption, "invisible") && (el.invisible = elOption.invisible); - } - if (el instanceof Path_default) { - hasOwn(elOption, "autoBatch") && (el.autoBatch = elOption.autoBatch); - } - } - var tmpDuringScope = {}; - var transitionDuringAPI = { - // Usually other props do not need to be changed in animation during. - setTransform: function(key, val) { - if (true) { - assert(hasOwn(TRANSFORM_PROPS_MAP, key), "Only " + transformPropNamesStr + " available in `setTransform`."); - } - tmpDuringScope.el[key] = val; - return this; - }, - getTransform: function(key) { - if (true) { - assert(hasOwn(TRANSFORM_PROPS_MAP, key), "Only " + transformPropNamesStr + " available in `getTransform`."); - } - return tmpDuringScope.el[key]; - }, - setShape: function(key, val) { - if (true) { - assertNotReserved(key); - } - var el = tmpDuringScope.el; - var shape = el.shape || (el.shape = {}); - shape[key] = val; - el.dirtyShape && el.dirtyShape(); - return this; - }, - getShape: function(key) { - if (true) { - assertNotReserved(key); - } - var shape = tmpDuringScope.el.shape; - if (shape) { - return shape[key]; - } - }, - setStyle: function(key, val) { - if (true) { - assertNotReserved(key); - } - var el = tmpDuringScope.el; - var style = el.style; - if (style) { - if (true) { - if (eqNaN(val)) { - warn("style." + key + " must not be assigned with NaN."); - } - } - style[key] = val; - el.dirtyStyle && el.dirtyStyle(); - } - return this; - }, - getStyle: function(key) { - if (true) { - assertNotReserved(key); - } - var style = tmpDuringScope.el.style; - if (style) { - return style[key]; - } - }, - setExtra: function(key, val) { - if (true) { - assertNotReserved(key); - } - var extra = tmpDuringScope.el.extra || (tmpDuringScope.el.extra = {}); - extra[key] = val; - return this; - }, - getExtra: function(key) { - if (true) { - assertNotReserved(key); - } - var extra = tmpDuringScope.el.extra; - if (extra) { - return extra[key]; - } - } - }; - function assertNotReserved(key) { - if (true) { - if (key === "transition" || key === "enterFrom" || key === "leaveTo") { - throw new Error('key must not be "' + key + '"'); - } - } - } - function duringCall() { - var scope = this; - var el = scope.el; - if (!el) { - return; - } - var latestUserDuring = transitionInnerStore(el).userDuring; - var scopeUserDuring = scope.userDuring; - if (latestUserDuring !== scopeUserDuring) { - scope.el = scope.userDuring = null; - return; - } - tmpDuringScope.el = el; - scopeUserDuring(transitionDuringAPI); - } - function prepareShapeOrExtraTransitionFrom(mainAttr, fromEl, elOption, transFromProps) { - var attrOpt = elOption[mainAttr]; - if (!attrOpt) { - return; - } - var elPropsInAttr = fromEl[mainAttr]; - var transFromPropsInAttr; - if (elPropsInAttr) { - var transition = elOption.transition; - var attrTransition = attrOpt.transition; - if (attrTransition) { - !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {}); - if (isTransitionAll(attrTransition)) { - extend(transFromPropsInAttr, elPropsInAttr); - } else { - var transitionKeys = normalizeToArray(attrTransition); - for (var i = 0; i < transitionKeys.length; i++) { - var key = transitionKeys[i]; - var elVal = elPropsInAttr[key]; - transFromPropsInAttr[key] = elVal; - } - } - } else if (isTransitionAll(transition) || indexOf(transition, mainAttr) >= 0) { - !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {}); - var elPropsInAttrKeys = keys(elPropsInAttr); - for (var i = 0; i < elPropsInAttrKeys.length; i++) { - var key = elPropsInAttrKeys[i]; - var elVal = elPropsInAttr[key]; - if (isNonStyleTransitionEnabled(attrOpt[key], elVal)) { - transFromPropsInAttr[key] = elVal; - } - } - } - } - } - function prepareShapeOrExtraAllPropsFinal(mainAttr, elOption, allProps) { - var attrOpt = elOption[mainAttr]; - if (!attrOpt) { - return; - } - var allPropsInAttr = allProps[mainAttr] = {}; - var keysInAttr = keys(attrOpt); - for (var i = 0; i < keysInAttr.length; i++) { - var key = keysInAttr[i]; - allPropsInAttr[key] = cloneValue(attrOpt[key]); - } - } - function prepareTransformTransitionFrom(el, elOption, transFromProps) { - var transition = elOption.transition; - var transitionKeys = isTransitionAll(transition) ? TRANSFORMABLE_PROPS : normalizeToArray(transition || []); - for (var i = 0; i < transitionKeys.length; i++) { - var key = transitionKeys[i]; - if (key === "style" || key === "shape" || key === "extra") { - continue; - } - var elVal = el[key]; - if (true) { - checkTransformPropRefer(key, "el.transition"); - } - transFromProps[key] = elVal; - } - } - function prepareTransformAllPropsFinal(el, elOption, allProps) { - for (var i = 0; i < LEGACY_TRANSFORM_PROPS.length; i++) { - var legacyName = LEGACY_TRANSFORM_PROPS[i]; - var xyName = LEGACY_TRANSFORM_PROPS_MAP[legacyName]; - var legacyArr = elOption[legacyName]; - if (legacyArr) { - allProps[xyName[0]] = legacyArr[0]; - allProps[xyName[1]] = legacyArr[1]; - } - } - for (var i = 0; i < TRANSFORMABLE_PROPS.length; i++) { - var key = TRANSFORMABLE_PROPS[i]; - if (elOption[key] != null) { - allProps[key] = elOption[key]; - } - } - } - function prepareStyleTransitionFrom(fromEl, elOption, styleOpt, transFromProps) { - if (!styleOpt) { - return; - } - var fromElStyle = fromEl.style; - var transFromStyleProps; - if (fromElStyle) { - var styleTransition = styleOpt.transition; - var elTransition = elOption.transition; - if (styleTransition && !isTransitionAll(styleTransition)) { - var transitionKeys = normalizeToArray(styleTransition); - !transFromStyleProps && (transFromStyleProps = transFromProps.style = {}); - for (var i = 0; i < transitionKeys.length; i++) { - var key = transitionKeys[i]; - var elVal = fromElStyle[key]; - transFromStyleProps[key] = elVal; - } - } else if (fromEl.getAnimationStyleProps && (isTransitionAll(elTransition) || isTransitionAll(styleTransition) || indexOf(elTransition, "style") >= 0)) { - var animationProps = fromEl.getAnimationStyleProps(); - var animationStyleProps = animationProps ? animationProps.style : null; - if (animationStyleProps) { - !transFromStyleProps && (transFromStyleProps = transFromProps.style = {}); - var styleKeys = keys(styleOpt); - for (var i = 0; i < styleKeys.length; i++) { - var key = styleKeys[i]; - if (animationStyleProps[key]) { - var elVal = fromElStyle[key]; - transFromStyleProps[key] = elVal; - } - } - } - } - } - } - function isNonStyleTransitionEnabled(optVal, elVal) { - return !isArrayLike(optVal) ? optVal != null && isFinite(optVal) : optVal !== elVal; - } - var checkTransformPropRefer; - if (true) { - checkTransformPropRefer = function(key, usedIn) { - if (!hasOwn(TRANSFORM_PROPS_MAP, key)) { - warn("Prop `" + key + "` is not a permitted in `" + usedIn + "`. Only `" + keys(TRANSFORM_PROPS_MAP).join("`, `") + "` are permitted."); - } - }; - } - - // node_modules/echarts/lib/animation/customGraphicKeyframeAnimation.js - var getStateToRestore = makeInner(); - var KEYFRAME_EXCLUDE_KEYS = ["percent", "easing", "shape", "style", "extra"]; - function stopPreviousKeyframeAnimationAndRestore(el) { - el.stopAnimation("keyframe"); - el.attr(getStateToRestore(el)); - } - function applyKeyframeAnimation(el, animationOpts, animatableModel) { - if (!animatableModel.isAnimationEnabled() || !animationOpts) { - return; - } - if (isArray(animationOpts)) { - each(animationOpts, function(singleAnimationOpts) { - applyKeyframeAnimation(el, singleAnimationOpts, animatableModel); - }); - return; - } - var keyframes = animationOpts.keyframes; - var duration = animationOpts.duration; - if (animatableModel && duration == null) { - var config2 = getAnimationConfig("enter", animatableModel, 0); - duration = config2 && config2.duration; - } - if (!keyframes || !duration) { - return; - } - var stateToRestore = getStateToRestore(el); - each(ELEMENT_ANIMATABLE_PROPS, function(targetPropName) { - if (targetPropName && !el[targetPropName]) { - return; - } - var animator; - var endFrameIsSet = false; - keyframes.sort(function(a, b) { - return a.percent - b.percent; - }); - each(keyframes, function(kf) { - var animators = el.animators; - var kfValues = targetPropName ? kf[targetPropName] : kf; - if (true) { - if (kf.percent >= 1) { - endFrameIsSet = true; - } - } - if (!kfValues) { - return; - } - var propKeys = keys(kfValues); - if (!targetPropName) { - propKeys = filter(propKeys, function(key) { - return indexOf(KEYFRAME_EXCLUDE_KEYS, key) < 0; - }); - } - if (!propKeys.length) { - return; - } - if (!animator) { - animator = el.animate(targetPropName, animationOpts.loop, true); - animator.scope = "keyframe"; - } - for (var i = 0; i < animators.length; i++) { - if (animators[i] !== animator && animators[i].targetName === animator.targetName) { - animators[i].stopTracks(propKeys); - } - } - targetPropName && (stateToRestore[targetPropName] = stateToRestore[targetPropName] || {}); - var savedTarget = targetPropName ? stateToRestore[targetPropName] : stateToRestore; - each(propKeys, function(key) { - savedTarget[key] = ((targetPropName ? el[targetPropName] : el) || {})[key]; - }); - animator.whenWithKeys(duration * kf.percent, kfValues, propKeys, kf.easing); - }); - if (!animator) { - return; - } - if (true) { - if (!endFrameIsSet) { - warn("End frame with percent: 1 is missing in the keyframeAnimation.", true); - } - } - animator.delay(animationOpts.delay || 0).duration(duration).start(animationOpts.easing); - }); - } - - // node_modules/echarts/lib/chart/custom/CustomView.js - var EMPHASIS = "emphasis"; - var NORMAL = "normal"; - var BLUR = "blur"; - var SELECT = "select"; - var STATES = [NORMAL, EMPHASIS, BLUR, SELECT]; - var PATH_ITEM_STYLE = { - normal: ["itemStyle"], - emphasis: [EMPHASIS, "itemStyle"], - blur: [BLUR, "itemStyle"], - select: [SELECT, "itemStyle"] - }; - var PATH_LABEL = { - normal: ["label"], - emphasis: [EMPHASIS, "label"], - blur: [BLUR, "label"], - select: [SELECT, "label"] - }; - var DEFAULT_TRANSITION = ["x", "y"]; - var GROUP_DIFF_PREFIX = "e\0\0"; - var attachedTxInfoTmp = { - normal: {}, - emphasis: {}, - blur: {}, - select: {} - }; - var prepareCustoms = { - cartesian2d: cartesianPrepareCustom, - geo: geoPrepareCustom, - single: singlePrepareCustom, - polar: polarPrepareCustom, - calendar: calendarPrepareCustom - }; - function isPath2(el) { - return el instanceof Path_default; - } - function isDisplayable(el) { - return el instanceof Displayable_default; - } - function copyElement(sourceEl, targetEl) { - targetEl.copyTransform(sourceEl); - if (isDisplayable(targetEl) && isDisplayable(sourceEl)) { - targetEl.setStyle(sourceEl.style); - targetEl.z = sourceEl.z; - targetEl.z2 = sourceEl.z2; - targetEl.zlevel = sourceEl.zlevel; - targetEl.invisible = sourceEl.invisible; - targetEl.ignore = sourceEl.ignore; - if (isPath2(targetEl) && isPath2(sourceEl)) { - targetEl.setShape(sourceEl.shape); - } - } - } - var CustomChartView = ( - /** @class */ - function(_super) { - __extends(CustomChartView2, _super); - function CustomChartView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CustomChartView2.type; - return _this; - } - CustomChartView2.prototype.render = function(customSeries, ecModel, api, payload) { - this._progressiveEls = null; - var oldData = this._data; - var data = customSeries.getData(); - var group = this.group; - var renderItem = makeRenderItem(customSeries, data, ecModel, api); - if (!oldData) { - group.removeAll(); - } - data.diff(oldData).add(function(newIdx) { - createOrUpdateItem(api, null, newIdx, renderItem(newIdx, payload), customSeries, group, data); - }).remove(function(oldIdx) { - var el = oldData.getItemGraphicEl(oldIdx); - el && applyLeaveTransition(el, customInnerStore(el).option, customSeries); - }).update(function(newIdx, oldIdx) { - var oldEl = oldData.getItemGraphicEl(oldIdx); - createOrUpdateItem(api, oldEl, newIdx, renderItem(newIdx, payload), customSeries, group, data); - }).execute(); - var clipPath = customSeries.get("clip", true) ? createClipPath(customSeries.coordinateSystem, false, customSeries) : null; - if (clipPath) { - group.setClipPath(clipPath); - } else { - group.removeClipPath(); - } - this._data = data; - }; - CustomChartView2.prototype.incrementalPrepareRender = function(customSeries, ecModel, api) { - this.group.removeAll(); - this._data = null; - }; - CustomChartView2.prototype.incrementalRender = function(params, customSeries, ecModel, api, payload) { - var data = customSeries.getData(); - var renderItem = makeRenderItem(customSeries, data, ecModel, api); - var progressiveEls = this._progressiveEls = []; - function setIncrementalAndHoverLayer(el2) { - if (!el2.isGroup) { - el2.incremental = true; - el2.ensureState("emphasis").hoverLayer = true; - } - } - for (var idx = params.start; idx < params.end; idx++) { - var el = createOrUpdateItem(null, null, idx, renderItem(idx, payload), customSeries, this.group, data); - if (el) { - el.traverse(setIncrementalAndHoverLayer); - progressiveEls.push(el); - } - } - }; - CustomChartView2.prototype.eachRendered = function(cb) { - traverseElements(this._progressiveEls || this.group, cb); - }; - CustomChartView2.prototype.filterForExposedEvent = function(eventType, query, targetEl, packedEvent) { - var elementName = query.element; - if (elementName == null || targetEl.name === elementName) { - return true; - } - while ((targetEl = targetEl.__hostTarget || targetEl.parent) && targetEl !== this.group) { - if (targetEl.name === elementName) { - return true; - } - } - return false; - }; - CustomChartView2.type = "custom"; - return CustomChartView2; - }(Chart_default) - ); - var CustomView_default = CustomChartView; - function createEl(elOption) { - var graphicType = elOption.type; - var el; - if (graphicType === "path") { - var shape = elOption.shape; - var pathRect = shape.width != null && shape.height != null ? { - x: shape.x || 0, - y: shape.y || 0, - width: shape.width, - height: shape.height - } : null; - var pathData = getPathData(shape); - el = makePath(pathData, null, pathRect, shape.layout || "center"); - customInnerStore(el).customPathData = pathData; - } else if (graphicType === "image") { - el = new Image_default({}); - customInnerStore(el).customImagePath = elOption.style.image; - } else if (graphicType === "text") { - el = new Text_default({}); - } else if (graphicType === "group") { - el = new Group_default(); - } else if (graphicType === "compoundPath") { - throw new Error('"compoundPath" is not supported yet.'); - } else { - var Clz = getShapeClass(graphicType); - if (!Clz) { - var errMsg = ""; - if (true) { - errMsg = 'graphic type "' + graphicType + '" can not be found.'; - } - throwError(errMsg); - } - el = new Clz(); - } - customInnerStore(el).customGraphicType = graphicType; - el.name = elOption.name; - el.z2EmphasisLift = 1; - el.z2SelectLift = 1; - return el; - } - function updateElNormal(api, el, dataIndex, elOption, attachedTxInfo, seriesModel, isInit) { - stopPreviousKeyframeAnimationAndRestore(el); - var txCfgOpt = attachedTxInfo && attachedTxInfo.normal.cfg; - if (txCfgOpt) { - el.setTextConfig(txCfgOpt); - } - if (elOption && elOption.transition == null) { - elOption.transition = DEFAULT_TRANSITION; - } - var styleOpt = elOption && elOption.style; - if (styleOpt) { - if (el.type === "text") { - var textOptionStyle = styleOpt; - hasOwn(textOptionStyle, "textFill") && (textOptionStyle.fill = textOptionStyle.textFill); - hasOwn(textOptionStyle, "textStroke") && (textOptionStyle.stroke = textOptionStyle.textStroke); - } - var decalPattern = void 0; - var decalObj = isPath2(el) ? styleOpt.decal : null; - if (api && decalObj) { - decalObj.dirty = true; - decalPattern = createOrUpdatePatternFromDecal(decalObj, api); - } - styleOpt.__decalPattern = decalPattern; - } - if (isDisplayable(el)) { - if (styleOpt) { - var decalPattern = styleOpt.__decalPattern; - if (decalPattern) { - styleOpt.decal = decalPattern; - } - } - } - applyUpdateTransition(el, elOption, seriesModel, { - dataIndex, - isInit, - clearStyle: true - }); - applyKeyframeAnimation(el, elOption.keyframeAnimation, seriesModel); - } - function updateElOnState(state, el, elStateOpt, styleOpt, attachedTxInfo) { - var elDisplayable = el.isGroup ? null : el; - var txCfgOpt = attachedTxInfo && attachedTxInfo[state].cfg; - if (elDisplayable) { - var stateObj = elDisplayable.ensureState(state); - if (styleOpt === false) { - var existingEmphasisState = elDisplayable.getState(state); - if (existingEmphasisState) { - existingEmphasisState.style = null; - } - } else { - stateObj.style = styleOpt || null; - } - if (txCfgOpt) { - stateObj.textConfig = txCfgOpt; - } - setDefaultStateProxy(elDisplayable); - } - } - function updateZ2(el, elOption, seriesModel) { - if (el.isGroup) { - return; - } - var elDisplayable = el; - var currentZ = seriesModel.currentZ; - var currentZLevel = seriesModel.currentZLevel; - elDisplayable.z = currentZ; - elDisplayable.zlevel = currentZLevel; - var optZ2 = elOption.z2; - optZ2 != null && (elDisplayable.z2 = optZ2 || 0); - for (var i = 0; i < STATES.length; i++) { - updateZForEachState(elDisplayable, elOption, STATES[i]); - } - } - function updateZForEachState(elDisplayable, elOption, state) { - var isNormal = state === NORMAL; - var elStateOpt = isNormal ? elOption : retrieveStateOption(elOption, state); - var optZ2 = elStateOpt ? elStateOpt.z2 : null; - var stateObj; - if (optZ2 != null) { - stateObj = isNormal ? elDisplayable : elDisplayable.ensureState(state); - stateObj.z2 = optZ2 || 0; - } - } - function makeRenderItem(customSeries, data, ecModel, api) { - var renderItem = customSeries.get("renderItem"); - var coordSys = customSeries.coordinateSystem; - var prepareResult2 = {}; - if (coordSys) { - if (true) { - assert(renderItem, "series.render is required."); - assert(coordSys.prepareCustoms || prepareCustoms[coordSys.type], "This coordSys does not support custom series."); - } - prepareResult2 = coordSys.prepareCustoms ? coordSys.prepareCustoms(coordSys) : prepareCustoms[coordSys.type](coordSys); - } - var userAPI = defaults({ - getWidth: api.getWidth, - getHeight: api.getHeight, - getZr: api.getZr, - getDevicePixelRatio: api.getDevicePixelRatio, - value, - style, - ordinalRawValue, - styleEmphasis, - visual, - barLayout, - currentSeriesIndices, - font - }, prepareResult2.api || {}); - var userParams = { - // The life cycle of context: current round of rendering. - // The global life cycle is probably not necessary, because - // user can store global status by themselves. - context: {}, - seriesId: customSeries.id, - seriesName: customSeries.name, - seriesIndex: customSeries.seriesIndex, - coordSys: prepareResult2.coordSys, - dataInsideLength: data.count(), - encode: wrapEncodeDef(customSeries.getData()) - }; - var currDataIndexInside; - var currItemModel; - var currItemStyleModels = {}; - var currLabelModels = {}; - var seriesItemStyleModels = {}; - var seriesLabelModels = {}; - for (var i = 0; i < STATES.length; i++) { - var stateName = STATES[i]; - seriesItemStyleModels[stateName] = customSeries.getModel(PATH_ITEM_STYLE[stateName]); - seriesLabelModels[stateName] = customSeries.getModel(PATH_LABEL[stateName]); - } - function getItemModel2(dataIndexInside) { - return dataIndexInside === currDataIndexInside ? currItemModel || (currItemModel = data.getItemModel(dataIndexInside)) : data.getItemModel(dataIndexInside); - } - function getItemStyleModel(dataIndexInside, state) { - return !data.hasItemOption ? seriesItemStyleModels[state] : dataIndexInside === currDataIndexInside ? currItemStyleModels[state] || (currItemStyleModels[state] = getItemModel2(dataIndexInside).getModel(PATH_ITEM_STYLE[state])) : getItemModel2(dataIndexInside).getModel(PATH_ITEM_STYLE[state]); - } - function getLabelModel(dataIndexInside, state) { - return !data.hasItemOption ? seriesLabelModels[state] : dataIndexInside === currDataIndexInside ? currLabelModels[state] || (currLabelModels[state] = getItemModel2(dataIndexInside).getModel(PATH_LABEL[state])) : getItemModel2(dataIndexInside).getModel(PATH_LABEL[state]); - } - return function(dataIndexInside, payload) { - currDataIndexInside = dataIndexInside; - currItemModel = null; - currItemStyleModels = {}; - currLabelModels = {}; - return renderItem && renderItem(defaults({ - dataIndexInside, - dataIndex: data.getRawIndex(dataIndexInside), - // Can be used for optimization when zoom or roam. - actionType: payload ? payload.type : null - }, userParams), userAPI); - }; - function value(dim, dataIndexInside) { - dataIndexInside == null && (dataIndexInside = currDataIndexInside); - return data.getStore().get(data.getDimensionIndex(dim || 0), dataIndexInside); - } - function ordinalRawValue(dim, dataIndexInside) { - dataIndexInside == null && (dataIndexInside = currDataIndexInside); - dim = dim || 0; - var dimInfo = data.getDimensionInfo(dim); - if (!dimInfo) { - var dimIndex = data.getDimensionIndex(dim); - return dimIndex >= 0 ? data.getStore().get(dimIndex, dataIndexInside) : void 0; - } - var val = data.get(dimInfo.name, dataIndexInside); - var ordinalMeta = dimInfo && dimInfo.ordinalMeta; - return ordinalMeta ? ordinalMeta.categories[val] : val; - } - function style(userProps, dataIndexInside) { - if (true) { - warnDeprecated("api.style", "Please write literal style directly instead."); - } - dataIndexInside == null && (dataIndexInside = currDataIndexInside); - var style2 = data.getItemVisual(dataIndexInside, "style"); - var visualColor = style2 && style2.fill; - var opacity = style2 && style2.opacity; - var itemStyle = getItemStyleModel(dataIndexInside, NORMAL).getItemStyle(); - visualColor != null && (itemStyle.fill = visualColor); - opacity != null && (itemStyle.opacity = opacity); - var opt = { - inheritColor: isString(visualColor) ? visualColor : "#000" - }; - var labelModel = getLabelModel(dataIndexInside, NORMAL); - var textStyle = createTextStyle(labelModel, null, opt, false, true); - textStyle.text = labelModel.getShallow("show") ? retrieve2(customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside)) : null; - var textConfig = createTextConfig(labelModel, opt, false); - preFetchFromExtra(userProps, itemStyle); - itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig); - userProps && applyUserPropsAfter(itemStyle, userProps); - itemStyle.legacy = true; - return itemStyle; - } - function styleEmphasis(userProps, dataIndexInside) { - if (true) { - warnDeprecated("api.styleEmphasis", "Please write literal style directly instead."); - } - dataIndexInside == null && (dataIndexInside = currDataIndexInside); - var itemStyle = getItemStyleModel(dataIndexInside, EMPHASIS).getItemStyle(); - var labelModel = getLabelModel(dataIndexInside, EMPHASIS); - var textStyle = createTextStyle(labelModel, null, null, true, true); - textStyle.text = labelModel.getShallow("show") ? retrieve3(customSeries.getFormattedLabel(dataIndexInside, EMPHASIS), customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside)) : null; - var textConfig = createTextConfig(labelModel, null, true); - preFetchFromExtra(userProps, itemStyle); - itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig); - userProps && applyUserPropsAfter(itemStyle, userProps); - itemStyle.legacy = true; - return itemStyle; - } - function applyUserPropsAfter(itemStyle, extra) { - for (var key in extra) { - if (hasOwn(extra, key)) { - itemStyle[key] = extra[key]; - } - } - } - function preFetchFromExtra(extra, itemStyle) { - if (extra) { - extra.textFill && (itemStyle.textFill = extra.textFill); - extra.textPosition && (itemStyle.textPosition = extra.textPosition); - } - } - function visual(visualType, dataIndexInside) { - dataIndexInside == null && (dataIndexInside = currDataIndexInside); - if (hasOwn(STYLE_VISUAL_TYPE, visualType)) { - var style_1 = data.getItemVisual(dataIndexInside, "style"); - return style_1 ? style_1[STYLE_VISUAL_TYPE[visualType]] : null; - } - if (hasOwn(NON_STYLE_VISUAL_PROPS, visualType)) { - return data.getItemVisual(dataIndexInside, visualType); - } - } - function barLayout(opt) { - if (coordSys.type === "cartesian2d") { - var baseAxis = coordSys.getBaseAxis(); - return getLayoutOnAxis(defaults({ - axis: baseAxis - }, opt)); - } - } - function currentSeriesIndices() { - return ecModel.getCurrentSeriesIndices(); - } - function font(opt) { - return getFont(opt, ecModel); - } - } - function wrapEncodeDef(data) { - var encodeDef = {}; - each(data.dimensions, function(dimName) { - var dimInfo = data.getDimensionInfo(dimName); - if (!dimInfo.isExtraCoord) { - var coordDim = dimInfo.coordDim; - var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || []; - dataDims[dimInfo.coordDimIndex] = data.getDimensionIndex(dimName); - } - }); - return encodeDef; - } - function createOrUpdateItem(api, existsEl, dataIndex, elOption, seriesModel, group, data) { - if (!elOption) { - group.remove(existsEl); - return; - } - var el = doCreateOrUpdateEl(api, existsEl, dataIndex, elOption, seriesModel, group); - el && data.setItemGraphicEl(dataIndex, el); - el && toggleHoverEmphasis(el, elOption.focus, elOption.blurScope, elOption.emphasisDisabled); - return el; - } - function doCreateOrUpdateEl(api, existsEl, dataIndex, elOption, seriesModel, group) { - if (true) { - assert(elOption, "should not have an null/undefined element setting"); - } - var toBeReplacedIdx = -1; - var oldEl = existsEl; - if (existsEl && doesElNeedRecreate(existsEl, elOption, seriesModel)) { - toBeReplacedIdx = indexOf(group.childrenRef(), existsEl); - existsEl = null; - } - var isInit = !existsEl; - var el = existsEl; - if (!el) { - el = createEl(elOption); - if (oldEl) { - copyElement(oldEl, el); - } - } else { - el.clearStates(); - } - if (elOption.morph === false) { - el.disableMorphing = true; - } else if (el.disableMorphing) { - el.disableMorphing = false; - } - attachedTxInfoTmp.normal.cfg = attachedTxInfoTmp.normal.conOpt = attachedTxInfoTmp.emphasis.cfg = attachedTxInfoTmp.emphasis.conOpt = attachedTxInfoTmp.blur.cfg = attachedTxInfoTmp.blur.conOpt = attachedTxInfoTmp.select.cfg = attachedTxInfoTmp.select.conOpt = null; - attachedTxInfoTmp.isLegacy = false; - doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfoTmp); - doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit); - updateElNormal(api, el, dataIndex, elOption, attachedTxInfoTmp, seriesModel, isInit); - hasOwn(elOption, "info") && (customInnerStore(el).info = elOption.info); - for (var i = 0; i < STATES.length; i++) { - var stateName = STATES[i]; - if (stateName !== NORMAL) { - var otherStateOpt = retrieveStateOption(elOption, stateName); - var otherStyleOpt = retrieveStyleOptionOnState(elOption, otherStateOpt, stateName); - updateElOnState(stateName, el, otherStateOpt, otherStyleOpt, attachedTxInfoTmp); - } - } - updateZ2(el, elOption, seriesModel); - if (elOption.type === "group") { - mergeChildren(api, el, dataIndex, elOption, seriesModel); - } - if (toBeReplacedIdx >= 0) { - group.replaceAt(el, toBeReplacedIdx); - } else { - group.add(el); - } - return el; - } - function doesElNeedRecreate(el, elOption, seriesModel) { - var elInner = customInnerStore(el); - var elOptionType = elOption.type; - var elOptionShape = elOption.shape; - var elOptionStyle = elOption.style; - return ( - // Always create new if universal transition is enabled. - // Because we do transition after render. It needs to know what old element is. Replacement will loose it. - seriesModel.isUniversalTransitionEnabled() || elOptionType != null && elOptionType !== elInner.customGraphicType || elOptionType === "path" && hasOwnPathData(elOptionShape) && getPathData(elOptionShape) !== elInner.customPathData || elOptionType === "image" && hasOwn(elOptionStyle, "image") && elOptionStyle.image !== elInner.customImagePath - ); - } - function doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit) { - var clipPathOpt = elOption.clipPath; - if (clipPathOpt === false) { - if (el && el.getClipPath()) { - el.removeClipPath(); - } - } else if (clipPathOpt) { - var clipPath = el.getClipPath(); - if (clipPath && doesElNeedRecreate(clipPath, clipPathOpt, seriesModel)) { - clipPath = null; - } - if (!clipPath) { - clipPath = createEl(clipPathOpt); - if (true) { - assert(isPath2(clipPath), "Only any type of `path` can be used in `clipPath`, rather than " + clipPath.type + "."); - } - el.setClipPath(clipPath); - } - updateElNormal(null, clipPath, dataIndex, clipPathOpt, null, seriesModel, isInit); - } - } - function doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfo) { - if (el.isGroup) { - return; - } - processTxInfo(elOption, null, attachedTxInfo); - processTxInfo(elOption, EMPHASIS, attachedTxInfo); - var txConOptNormal = attachedTxInfo.normal.conOpt; - var txConOptEmphasis = attachedTxInfo.emphasis.conOpt; - var txConOptBlur = attachedTxInfo.blur.conOpt; - var txConOptSelect = attachedTxInfo.select.conOpt; - if (txConOptNormal != null || txConOptEmphasis != null || txConOptSelect != null || txConOptBlur != null) { - var textContent = el.getTextContent(); - if (txConOptNormal === false) { - textContent && el.removeTextContent(); - } else { - txConOptNormal = attachedTxInfo.normal.conOpt = txConOptNormal || { - type: "text" - }; - if (!textContent) { - textContent = createEl(txConOptNormal); - el.setTextContent(textContent); - } else { - textContent.clearStates(); - } - updateElNormal(null, textContent, dataIndex, txConOptNormal, null, seriesModel, isInit); - var txConStlOptNormal = txConOptNormal && txConOptNormal.style; - for (var i = 0; i < STATES.length; i++) { - var stateName = STATES[i]; - if (stateName !== NORMAL) { - var txConOptOtherState = attachedTxInfo[stateName].conOpt; - updateElOnState(stateName, textContent, txConOptOtherState, retrieveStyleOptionOnState(txConOptNormal, txConOptOtherState, stateName), null); - } - } - txConStlOptNormal ? textContent.dirty() : textContent.markRedraw(); - } - } - } - function processTxInfo(elOption, state, attachedTxInfo) { - var stateOpt = !state ? elOption : retrieveStateOption(elOption, state); - var styleOpt = !state ? elOption.style : retrieveStyleOptionOnState(elOption, stateOpt, EMPHASIS); - var elType = elOption.type; - var txCfg = stateOpt ? stateOpt.textConfig : null; - var txConOptNormal = elOption.textContent; - var txConOpt = !txConOptNormal ? null : !state ? txConOptNormal : retrieveStateOption(txConOptNormal, state); - if (styleOpt && // Because emphasis style has little info to detect legacy, - // if normal is legacy, emphasis is trade as legacy. - (attachedTxInfo.isLegacy || isEC4CompatibleStyle(styleOpt, elType, !!txCfg, !!txConOpt))) { - attachedTxInfo.isLegacy = true; - var convertResult = convertFromEC4CompatibleStyle(styleOpt, elType, !state); - if (!txCfg && convertResult.textConfig) { - txCfg = convertResult.textConfig; - } - if (!txConOpt && convertResult.textContent) { - txConOpt = convertResult.textContent; - } - } - if (!state && txConOpt) { - var txConOptNormal_1 = txConOpt; - !txConOptNormal_1.type && (txConOptNormal_1.type = "text"); - if (true) { - assert(txConOptNormal_1.type === "text", 'textContent.type must be "text"'); - } - } - var info = !state ? attachedTxInfo.normal : attachedTxInfo[state]; - info.cfg = txCfg; - info.conOpt = txConOpt; - } - function retrieveStateOption(elOption, state) { - return !state ? elOption : elOption ? elOption[state] : null; - } - function retrieveStyleOptionOnState(stateOptionNormal, stateOption, state) { - var style = stateOption && stateOption.style; - if (style == null && state === EMPHASIS && stateOptionNormal) { - style = stateOptionNormal.styleEmphasis; - } - return style; - } - function mergeChildren(api, el, dataIndex, elOption, seriesModel) { - var newChildren = elOption.children; - var newLen = newChildren ? newChildren.length : 0; - var mergeChildren2 = elOption.$mergeChildren; - var byName = mergeChildren2 === "byName" || elOption.diffChildrenByName; - var notMerge = mergeChildren2 === false; - if (!newLen && !byName && !notMerge) { - return; - } - if (byName) { - diffGroupChildren({ - api, - oldChildren: el.children() || [], - newChildren: newChildren || [], - dataIndex, - seriesModel, - group: el - }); - return; - } - notMerge && el.removeAll(); - var index = 0; - for (; index < newLen; index++) { - var newChild = newChildren[index]; - var oldChild = el.childAt(index); - if (newChild) { - if (newChild.ignore == null) { - newChild.ignore = false; - } - doCreateOrUpdateEl(api, oldChild, dataIndex, newChild, seriesModel, el); - } else { - if (true) { - assert(oldChild, "renderItem should not return a group containing elements as null/undefined/{} if they do not exist before."); - } - oldChild.ignore = true; - } - } - for (var i = el.childCount() - 1; i >= index; i--) { - var child = el.childAt(i); - removeChildFromGroup(el, child, seriesModel); - } - } - function removeChildFromGroup(group, child, seriesModel) { - child && applyLeaveTransition(child, customInnerStore(group).option, seriesModel); - } - function diffGroupChildren(context) { - new DataDiffer_default(context.oldChildren, context.newChildren, getKey, getKey, context).add(processAddUpdate).update(processAddUpdate).remove(processRemove).execute(); - } - function getKey(item, idx) { - var name = item && item.name; - return name != null ? name : GROUP_DIFF_PREFIX + idx; - } - function processAddUpdate(newIndex, oldIndex) { - var context = this.context; - var childOption = newIndex != null ? context.newChildren[newIndex] : null; - var child = oldIndex != null ? context.oldChildren[oldIndex] : null; - doCreateOrUpdateEl(context.api, child, context.dataIndex, childOption, context.seriesModel, context.group); - } - function processRemove(oldIndex) { - var context = this.context; - var child = context.oldChildren[oldIndex]; - child && applyLeaveTransition(child, customInnerStore(child).option, context.seriesModel); - } - function getPathData(shape) { - return shape && (shape.pathData || shape.d); - } - function hasOwnPathData(shape) { - return shape && (hasOwn(shape, "pathData") || hasOwn(shape, "d")); - } - - // node_modules/echarts/lib/chart/custom/install.js - function install28(registers) { - registers.registerChartView(CustomView_default); - registers.registerSeriesModel(CustomSeries_default); - } - - // node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js - var inner11 = makeInner(); - var clone4 = clone; - var bind2 = bind; - var BaseAxisPointer = ( - /** @class */ - function() { - function BaseAxisPointer2() { - this._dragging = false; - this.animationThreshold = 15; - } - BaseAxisPointer2.prototype.render = function(axisModel, axisPointerModel, api, forceRender) { - var value = axisPointerModel.get("value"); - var status = axisPointerModel.get("status"); - this._axisModel = axisModel; - this._axisPointerModel = axisPointerModel; - this._api = api; - if (!forceRender && this._lastValue === value && this._lastStatus === status) { - return; - } - this._lastValue = value; - this._lastStatus = status; - var group = this._group; - var handle = this._handle; - if (!status || status === "hide") { - group && group.hide(); - handle && handle.hide(); - return; - } - group && group.show(); - handle && handle.show(); - var elOption = {}; - this.makeElOption(elOption, value, axisModel, axisPointerModel, api); - var graphicKey = elOption.graphicKey; - if (graphicKey !== this._lastGraphicKey) { - this.clear(api); - } - this._lastGraphicKey = graphicKey; - var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel); - if (!group) { - group = this._group = new Group_default(); - this.createPointerEl(group, elOption, axisModel, axisPointerModel); - this.createLabelEl(group, elOption, axisModel, axisPointerModel); - api.getZr().add(group); - } else { - var doUpdateProps = curry(updateProps2, axisPointerModel, moveAnimation); - this.updatePointerEl(group, elOption, doUpdateProps); - this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel); - } - updateMandatoryProps(group, axisPointerModel, true); - this._renderHandle(value); - }; - BaseAxisPointer2.prototype.remove = function(api) { - this.clear(api); - }; - BaseAxisPointer2.prototype.dispose = function(api) { - this.clear(api); - }; - BaseAxisPointer2.prototype.determineAnimation = function(axisModel, axisPointerModel) { - var animation = axisPointerModel.get("animation"); - var axis = axisModel.axis; - var isCategoryAxis = axis.type === "category"; - var useSnap = axisPointerModel.get("snap"); - if (!useSnap && !isCategoryAxis) { - return false; - } - if (animation === "auto" || animation == null) { - var animationThreshold = this.animationThreshold; - if (isCategoryAxis && axis.getBandWidth() > animationThreshold) { - return true; - } - if (useSnap) { - var seriesDataCount = getAxisInfo(axisModel).seriesDataCount; - var axisExtent = axis.getExtent(); - return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold; - } - return false; - } - return animation === true; - }; - BaseAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) { - }; - BaseAxisPointer2.prototype.createPointerEl = function(group, elOption, axisModel, axisPointerModel) { - var pointerOption = elOption.pointer; - if (pointerOption) { - var pointerEl = inner11(group).pointerEl = new graphic_exports[pointerOption.type](clone4(elOption.pointer)); - group.add(pointerEl); - } - }; - BaseAxisPointer2.prototype.createLabelEl = function(group, elOption, axisModel, axisPointerModel) { - if (elOption.label) { - var labelEl = inner11(group).labelEl = new Text_default(clone4(elOption.label)); - group.add(labelEl); - updateLabelShowHide(labelEl, axisPointerModel); - } - }; - BaseAxisPointer2.prototype.updatePointerEl = function(group, elOption, updateProps3) { - var pointerEl = inner11(group).pointerEl; - if (pointerEl && elOption.pointer) { - pointerEl.setStyle(elOption.pointer.style); - updateProps3(pointerEl, { - shape: elOption.pointer.shape - }); - } - }; - BaseAxisPointer2.prototype.updateLabelEl = function(group, elOption, updateProps3, axisPointerModel) { - var labelEl = inner11(group).labelEl; - if (labelEl) { - labelEl.setStyle(elOption.label.style); - updateProps3(labelEl, { - // Consider text length change in vertical axis, animation should - // be used on shape, otherwise the effect will be weird. - // TODOTODO - // shape: elOption.label.shape, - x: elOption.label.x, - y: elOption.label.y - }); - updateLabelShowHide(labelEl, axisPointerModel); - } - }; - BaseAxisPointer2.prototype._renderHandle = function(value) { - if (this._dragging || !this.updateHandleTransform) { - return; - } - var axisPointerModel = this._axisPointerModel; - var zr = this._api.getZr(); - var handle = this._handle; - var handleModel = axisPointerModel.getModel("handle"); - var status = axisPointerModel.get("status"); - if (!handleModel.get("show") || !status || status === "hide") { - handle && zr.remove(handle); - this._handle = null; - return; - } - var isInit; - if (!this._handle) { - isInit = true; - handle = this._handle = createIcon(handleModel.get("icon"), { - cursor: "move", - draggable: true, - onmousemove: function(e2) { - stop(e2.event); - }, - onmousedown: bind2(this._onHandleDragMove, this, 0, 0), - drift: bind2(this._onHandleDragMove, this), - ondragend: bind2(this._onHandleDragEnd, this) - }); - zr.add(handle); - } - updateMandatoryProps(handle, axisPointerModel, false); - handle.setStyle(handleModel.getItemStyle(null, ["color", "borderColor", "borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"])); - var handleSize = handleModel.get("size"); - if (!isArray(handleSize)) { - handleSize = [handleSize, handleSize]; - } - handle.scaleX = handleSize[0] / 2; - handle.scaleY = handleSize[1] / 2; - createOrUpdate(this, "_doDispatchAxisPointer", handleModel.get("throttle") || 0, "fixRate"); - this._moveHandleToValue(value, isInit); - }; - BaseAxisPointer2.prototype._moveHandleToValue = function(value, isInit) { - updateProps2(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel))); - }; - BaseAxisPointer2.prototype._onHandleDragMove = function(dx, dy) { - var handle = this._handle; - if (!handle) { - return; - } - this._dragging = true; - var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel); - this._payloadInfo = trans; - handle.stopAnimation(); - handle.attr(getHandleTransProps(trans)); - inner11(handle).lastProp = null; - this._doDispatchAxisPointer(); - }; - BaseAxisPointer2.prototype._doDispatchAxisPointer = function() { - var handle = this._handle; - if (!handle) { - return; - } - var payloadInfo = this._payloadInfo; - var axisModel = this._axisModel; - this._api.dispatchAction({ - type: "updateAxisPointer", - x: payloadInfo.cursorPoint[0], - y: payloadInfo.cursorPoint[1], - tooltipOption: payloadInfo.tooltipOption, - axesInfo: [{ - axisDim: axisModel.axis.dim, - axisIndex: axisModel.componentIndex - }] - }); - }; - BaseAxisPointer2.prototype._onHandleDragEnd = function() { - this._dragging = false; - var handle = this._handle; - if (!handle) { - return; - } - var value = this._axisPointerModel.get("value"); - this._moveHandleToValue(value); - this._api.dispatchAction({ - type: "hideTip" - }); - }; - BaseAxisPointer2.prototype.clear = function(api) { - this._lastValue = null; - this._lastStatus = null; - var zr = api.getZr(); - var group = this._group; - var handle = this._handle; - if (zr && group) { - this._lastGraphicKey = null; - group && zr.remove(group); - handle && zr.remove(handle); - this._group = null; - this._handle = null; - this._payloadInfo = null; - } - clear(this, "_doDispatchAxisPointer"); - }; - BaseAxisPointer2.prototype.doClear = function() { - }; - BaseAxisPointer2.prototype.buildLabel = function(xy, wh, xDimIndex) { - xDimIndex = xDimIndex || 0; - return { - x: xy[xDimIndex], - y: xy[1 - xDimIndex], - width: wh[xDimIndex], - height: wh[1 - xDimIndex] - }; - }; - return BaseAxisPointer2; - }() - ); - function updateProps2(animationModel, moveAnimation, el, props) { - if (!propsEqual(inner11(el).lastProp, props)) { - inner11(el).lastProp = props; - moveAnimation ? updateProps(el, props, animationModel) : (el.stopAnimation(), el.attr(props)); - } - } - function propsEqual(lastProps, newProps) { - if (isObject(lastProps) && isObject(newProps)) { - var equals_1 = true; - each(newProps, function(item, key) { - equals_1 = equals_1 && propsEqual(lastProps[key], item); - }); - return !!equals_1; - } else { - return lastProps === newProps; - } - } - function updateLabelShowHide(labelEl, axisPointerModel) { - labelEl[axisPointerModel.get(["label", "show"]) ? "show" : "hide"](); - } - function getHandleTransProps(trans) { - return { - x: trans.x || 0, - y: trans.y || 0, - rotation: trans.rotation || 0 - }; - } - function updateMandatoryProps(group, axisPointerModel, silent) { - var z = axisPointerModel.get("z"); - var zlevel = axisPointerModel.get("zlevel"); - group && group.traverse(function(el) { - if (el.type !== "group") { - z != null && (el.z = z); - zlevel != null && (el.zlevel = zlevel); - el.silent = silent; - } - }); - } - var BaseAxisPointer_default = BaseAxisPointer; - - // node_modules/echarts/lib/component/axisPointer/viewHelper.js - function buildElStyle(axisPointerModel) { - var axisPointerType = axisPointerModel.get("type"); - var styleModel = axisPointerModel.getModel(axisPointerType + "Style"); - var style; - if (axisPointerType === "line") { - style = styleModel.getLineStyle(); - style.fill = null; - } else if (axisPointerType === "shadow") { - style = styleModel.getAreaStyle(); - style.stroke = null; - } - return style; - } - function buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) { - var value = axisPointerModel.get("value"); - var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get("seriesDataIndices"), { - precision: axisPointerModel.get(["label", "precision"]), - formatter: axisPointerModel.get(["label", "formatter"]) - }); - var labelModel = axisPointerModel.getModel("label"); - var paddings = normalizeCssArray2(labelModel.get("padding") || 0); - var font = labelModel.getFont(); - var textRect = getBoundingRect(text, font); - var position2 = labelPos.position; - var width = textRect.width + paddings[1] + paddings[3]; - var height = textRect.height + paddings[0] + paddings[2]; - var align = labelPos.align; - align === "right" && (position2[0] -= width); - align === "center" && (position2[0] -= width / 2); - var verticalAlign = labelPos.verticalAlign; - verticalAlign === "bottom" && (position2[1] -= height); - verticalAlign === "middle" && (position2[1] -= height / 2); - confineInContainer(position2, width, height, api); - var bgColor = labelModel.get("backgroundColor"); - if (!bgColor || bgColor === "auto") { - bgColor = axisModel.get(["axisLine", "lineStyle", "color"]); - } - elOption.label = { - // shape: {x: 0, y: 0, width: width, height: height, r: labelModel.get('borderRadius')}, - x: position2[0], - y: position2[1], - style: createTextStyle(labelModel, { - text, - font, - fill: labelModel.getTextColor(), - padding: paddings, - backgroundColor: bgColor - }), - // Label should be over axisPointer. - z2: 10 - }; - } - function confineInContainer(position2, width, height, api) { - var viewWidth = api.getWidth(); - var viewHeight = api.getHeight(); - position2[0] = Math.min(position2[0] + width, viewWidth) - width; - position2[1] = Math.min(position2[1] + height, viewHeight) - height; - position2[0] = Math.max(position2[0], 0); - position2[1] = Math.max(position2[1], 0); - } - function getValueLabel(value, axis, ecModel, seriesDataIndices, opt) { - value = axis.scale.parse(value); - var text = axis.scale.getLabel({ - value - }, { - // If `precision` is set, width can be fixed (like '12.00500'), which - // helps to debounce when when moving label. - precision: opt.precision - }); - var formatter = opt.formatter; - if (formatter) { - var params_1 = { - value: getAxisRawValue(axis, { - value - }), - axisDimension: axis.dim, - axisIndex: axis.index, - seriesData: [] - }; - each(seriesDataIndices, function(idxItem) { - var series = ecModel.getSeriesByIndex(idxItem.seriesIndex); - var dataIndex = idxItem.dataIndexInside; - var dataParams = series && series.getDataParams(dataIndex); - dataParams && params_1.seriesData.push(dataParams); - }); - if (isString(formatter)) { - text = formatter.replace("{value}", text); - } else if (isFunction(formatter)) { - text = formatter(params_1); - } - } - return text; - } - function getTransformedPosition(axis, value, layoutInfo) { - var transform2 = create2(); - rotate(transform2, transform2, layoutInfo.rotation); - translate(transform2, transform2, layoutInfo.position); - return applyTransform2([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform2); - } - function buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) { - var textLayout = AxisBuilder_default.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection); - layoutInfo.labelMargin = axisPointerModel.get(["label", "margin"]); - buildLabelElOption(elOption, axisModel, axisPointerModel, api, { - position: getTransformedPosition(axisModel.axis, value, layoutInfo), - align: textLayout.textAlign, - verticalAlign: textLayout.textVerticalAlign - }); - } - function makeLineShape(p1, p2, xDimIndex) { - xDimIndex = xDimIndex || 0; - return { - x1: p1[xDimIndex], - y1: p1[1 - xDimIndex], - x2: p2[xDimIndex], - y2: p2[1 - xDimIndex] - }; - } - function makeRectShape(xy, wh, xDimIndex) { - xDimIndex = xDimIndex || 0; - return { - x: xy[xDimIndex], - y: xy[1 - xDimIndex], - width: wh[xDimIndex], - height: wh[1 - xDimIndex] - }; - } - function makeSectorShape(cx, cy, r0, r, startAngle, endAngle) { - return { - cx, - cy, - r0, - r, - startAngle, - endAngle, - clockwise: true - }; - } - - // node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js - var CartesianAxisPointer = ( - /** @class */ - function(_super) { - __extends(CartesianAxisPointer2, _super); - function CartesianAxisPointer2() { - return _super !== null && _super.apply(this, arguments) || this; - } - CartesianAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) { - var axis = axisModel.axis; - var grid = axis.grid; - var axisPointerType = axisPointerModel.get("type"); - var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent(); - var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true)); - if (axisPointerType && axisPointerType !== "none") { - var elStyle = buildElStyle(axisPointerModel); - var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent); - pointerOption.style = elStyle; - elOption.graphicKey = pointerOption.type; - elOption.pointer = pointerOption; - } - var layoutInfo = layout2(grid.model, axisModel); - buildCartesianSingleLabelElOption( - // @ts-ignore - value, - elOption, - layoutInfo, - axisModel, - axisPointerModel, - api - ); - }; - CartesianAxisPointer2.prototype.getHandleTransform = function(value, axisModel, axisPointerModel) { - var layoutInfo = layout2(axisModel.axis.grid.model, axisModel, { - labelInside: false - }); - layoutInfo.labelMargin = axisPointerModel.get(["handle", "margin"]); - var pos = getTransformedPosition(axisModel.axis, value, layoutInfo); - return { - x: pos[0], - y: pos[1], - rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0) - }; - }; - CartesianAxisPointer2.prototype.updateHandleTransform = function(transform2, delta, axisModel, axisPointerModel) { - var axis = axisModel.axis; - var grid = axis.grid; - var axisExtent = axis.getGlobalExtent(true); - var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent(); - var dimIndex = axis.dim === "x" ? 0 : 1; - var currPosition = [transform2.x, transform2.y]; - currPosition[dimIndex] += delta[dimIndex]; - currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]); - currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]); - var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2; - var cursorPoint = [cursorOtherValue, cursorOtherValue]; - cursorPoint[dimIndex] = currPosition[dimIndex]; - var tooltipOptions = [{ - verticalAlign: "middle" - }, { - align: "center" - }]; - return { - x: currPosition[0], - y: currPosition[1], - rotation: transform2.rotation, - cursorPoint, - tooltipOption: tooltipOptions[dimIndex] - }; - }; - return CartesianAxisPointer2; - }(BaseAxisPointer_default) - ); - function getCartesian(grid, axis) { - var opt = {}; - opt[axis.dim + "AxisIndex"] = axis.index; - return grid.getCartesian(opt); - } - var pointerShapeBuilder = { - line: function(axis, pixelValue, otherExtent) { - var targetShape = makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis)); - return { - type: "Line", - subPixelOptimize: true, - shape: targetShape - }; - }, - shadow: function(axis, pixelValue, otherExtent) { - var bandWidth = Math.max(1, axis.getBandWidth()); - var span = otherExtent[1] - otherExtent[0]; - return { - type: "Rect", - shape: makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis)) - }; - } - }; - function getAxisDimIndex(axis) { - return axis.dim === "x" ? 0 : 1; - } - var CartesianAxisPointer_default = CartesianAxisPointer; - - // node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js - var AxisPointerModel = ( - /** @class */ - function(_super) { - __extends(AxisPointerModel2, _super); - function AxisPointerModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = AxisPointerModel2.type; - return _this; - } - AxisPointerModel2.type = "axisPointer"; - AxisPointerModel2.defaultOption = { - // 'auto' means that show when triggered by tooltip or handle. - show: "auto", - // zlevel: 0, - z: 50, - type: "line", - // axispointer triggered by tootip determine snap automatically, - // see `modelHelper`. - snap: false, - triggerTooltip: true, - triggerEmphasis: true, - value: null, - status: null, - link: [], - // Do not set 'auto' here, otherwise global animation: false - // will not effect at this axispointer. - animation: null, - animationDurationUpdate: 200, - lineStyle: { - color: "#B9BEC9", - width: 1, - type: "dashed" - }, - shadowStyle: { - color: "rgba(210,219,238,0.2)" - }, - label: { - show: true, - formatter: null, - precision: "auto", - margin: 3, - color: "#fff", - padding: [5, 7, 5, 7], - backgroundColor: "auto", - borderColor: null, - borderWidth: 0, - borderRadius: 3 - }, - handle: { - show: false, - // eslint-disable-next-line - icon: "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z", - size: 45, - // handle margin is from symbol center to axis, which is stable when circular move. - margin: 50, - // color: '#1b8bbd' - // color: '#2f4554' - color: "#333", - shadowBlur: 3, - shadowColor: "#aaa", - shadowOffsetX: 0, - shadowOffsetY: 2, - // For mobile performance - throttle: 40 - } - }; - return AxisPointerModel2; - }(Component_default) - ); - var AxisPointerModel_default = AxisPointerModel; - - // node_modules/echarts/lib/component/axisPointer/globalListener.js - var inner12 = makeInner(); - var each8 = each; - function register(key, api, handler) { - if (env_default.node) { - return; - } - var zr = api.getZr(); - inner12(zr).records || (inner12(zr).records = {}); - initGlobalListeners(zr, api); - var record = inner12(zr).records[key] || (inner12(zr).records[key] = {}); - record.handler = handler; - } - function initGlobalListeners(zr, api) { - if (inner12(zr).initialized) { - return; - } - inner12(zr).initialized = true; - useHandler("click", curry(doEnter, "click")); - useHandler("mousemove", curry(doEnter, "mousemove")); - useHandler("globalout", onLeave); - function useHandler(eventType, cb) { - zr.on(eventType, function(e2) { - var dis = makeDispatchAction(api); - each8(inner12(zr).records, function(record) { - record && cb(record, e2, dis.dispatchAction); - }); - dispatchTooltipFinally(dis.pendings, api); - }); - } - } - function dispatchTooltipFinally(pendings, api) { - var showLen = pendings.showTip.length; - var hideLen = pendings.hideTip.length; - var actuallyPayload; - if (showLen) { - actuallyPayload = pendings.showTip[showLen - 1]; - } else if (hideLen) { - actuallyPayload = pendings.hideTip[hideLen - 1]; - } - if (actuallyPayload) { - actuallyPayload.dispatchAction = null; - api.dispatchAction(actuallyPayload); - } - } - function onLeave(record, e2, dispatchAction3) { - record.handler("leave", null, dispatchAction3); - } - function doEnter(currTrigger, record, e2, dispatchAction3) { - record.handler(currTrigger, e2, dispatchAction3); - } - function makeDispatchAction(api) { - var pendings = { - showTip: [], - hideTip: [] - }; - var dispatchAction3 = function(payload) { - var pendingList = pendings[payload.type]; - if (pendingList) { - pendingList.push(payload); - } else { - payload.dispatchAction = dispatchAction3; - api.dispatchAction(payload); - } - }; - return { - dispatchAction: dispatchAction3, - pendings - }; - } - function unregister(key, api) { - if (env_default.node) { - return; - } - var zr = api.getZr(); - var record = (inner12(zr).records || {})[key]; - if (record) { - inner12(zr).records[key] = null; - } - } - - // node_modules/echarts/lib/component/axisPointer/AxisPointerView.js - var AxisPointerView = ( - /** @class */ - function(_super) { - __extends(AxisPointerView2, _super); - function AxisPointerView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = AxisPointerView2.type; - return _this; - } - AxisPointerView2.prototype.render = function(globalAxisPointerModel, ecModel, api) { - var globalTooltipModel = ecModel.getComponent("tooltip"); - var triggerOn = globalAxisPointerModel.get("triggerOn") || globalTooltipModel && globalTooltipModel.get("triggerOn") || "mousemove|click"; - register("axisPointer", api, function(currTrigger, e2, dispatchAction3) { - if (triggerOn !== "none" && (currTrigger === "leave" || triggerOn.indexOf(currTrigger) >= 0)) { - dispatchAction3({ - type: "updateAxisPointer", - currTrigger, - x: e2 && e2.offsetX, - y: e2 && e2.offsetY - }); - } - }); - }; - AxisPointerView2.prototype.remove = function(ecModel, api) { - unregister("axisPointer", api); - }; - AxisPointerView2.prototype.dispose = function(ecModel, api) { - unregister("axisPointer", api); - }; - AxisPointerView2.type = "axisPointer"; - return AxisPointerView2; - }(Component_default2) - ); - var AxisPointerView_default = AxisPointerView; - - // node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js - function findPointFromSeries(finder, ecModel) { - var point = []; - var seriesIndex = finder.seriesIndex; - var seriesModel; - if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) { - return { - point: [] - }; - } - var data = seriesModel.getData(); - var dataIndex = queryDataIndex(data, finder); - if (dataIndex == null || dataIndex < 0 || isArray(dataIndex)) { - return { - point: [] - }; - } - var el = data.getItemGraphicEl(dataIndex); - var coordSys = seriesModel.coordinateSystem; - if (seriesModel.getTooltipPosition) { - point = seriesModel.getTooltipPosition(dataIndex) || []; - } else if (coordSys && coordSys.dataToPoint) { - if (finder.isStacked) { - var baseAxis = coordSys.getBaseAxis(); - var valueAxis2 = coordSys.getOtherAxis(baseAxis); - var valueAxisDim = valueAxis2.dim; - var baseAxisDim = baseAxis.dim; - var baseDataOffset = valueAxisDim === "x" || valueAxisDim === "radius" ? 1 : 0; - var baseDim = data.mapDimension(baseAxisDim); - var stackedData = []; - stackedData[baseDataOffset] = data.get(baseDim, dataIndex); - stackedData[1 - baseDataOffset] = data.get(data.getCalculationInfo("stackResultDimension"), dataIndex); - point = coordSys.dataToPoint(stackedData) || []; - } else { - point = coordSys.dataToPoint(data.getValues(map(coordSys.dimensions, function(dim) { - return data.mapDimension(dim); - }), dataIndex)) || []; - } - } else if (el) { - var rect = el.getBoundingRect().clone(); - rect.applyTransform(el.transform); - point = [rect.x + rect.width / 2, rect.y + rect.height / 2]; - } - return { - point, - el - }; - } - - // node_modules/echarts/lib/component/axisPointer/axisTrigger.js - var inner13 = makeInner(); - function axisTrigger(payload, ecModel, api) { - var currTrigger = payload.currTrigger; - var point = [payload.x, payload.y]; - var finder = payload; - var dispatchAction3 = payload.dispatchAction || bind(api.dispatchAction, api); - var coordSysAxesInfo = ecModel.getComponent("axisPointer").coordSysAxesInfo; - if (!coordSysAxesInfo) { - return; - } - if (illegalPoint(point)) { - point = findPointFromSeries({ - seriesIndex: finder.seriesIndex, - // Do not use dataIndexInside from other ec instance. - // FIXME: auto detect it? - dataIndex: finder.dataIndex - }, ecModel).point; - } - var isIllegalPoint = illegalPoint(point); - var inputAxesInfo = finder.axesInfo; - var axesInfo = coordSysAxesInfo.axesInfo; - var shouldHide = currTrigger === "leave" || illegalPoint(point); - var outputPayload = {}; - var showValueMap = {}; - var dataByCoordSys = { - list: [], - map: {} - }; - var updaters = { - showPointer: curry(showPointer, showValueMap), - showTooltip: curry(showTooltip, dataByCoordSys) - }; - each(coordSysAxesInfo.coordSysMap, function(coordSys, coordSysKey) { - var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point); - each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function(axisInfo, key) { - var axis = axisInfo.axis; - var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo); - if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) { - var val = inputAxisInfo && inputAxisInfo.value; - if (val == null && !isIllegalPoint) { - val = axis.pointToData(point); - } - val != null && processOnAxis(axisInfo, val, updaters, false, outputPayload); - } - }); - }); - var linkTriggers = {}; - each(axesInfo, function(tarAxisInfo, tarKey) { - var linkGroup = tarAxisInfo.linkGroup; - if (linkGroup && !showValueMap[tarKey]) { - each(linkGroup.axesInfo, function(srcAxisInfo, srcKey) { - var srcValItem = showValueMap[srcKey]; - if (srcAxisInfo !== tarAxisInfo && srcValItem) { - var val = srcValItem.value; - linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo)))); - linkTriggers[tarAxisInfo.key] = val; - } - }); - } - }); - each(linkTriggers, function(val, tarKey) { - processOnAxis(axesInfo[tarKey], val, updaters, true, outputPayload); - }); - updateModelActually(showValueMap, axesInfo, outputPayload); - dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction3); - dispatchHighDownActually(axesInfo, dispatchAction3, api); - return outputPayload; - } - function processOnAxis(axisInfo, newValue, updaters, noSnap, outputFinder) { - var axis = axisInfo.axis; - if (axis.scale.isBlank() || !axis.containData(newValue)) { - return; - } - if (!axisInfo.involveSeries) { - updaters.showPointer(axisInfo, newValue); - return; - } - var payloadInfo = buildPayloadsBySeries(newValue, axisInfo); - var payloadBatch = payloadInfo.payloadBatch; - var snapToValue = payloadInfo.snapToValue; - if (payloadBatch[0] && outputFinder.seriesIndex == null) { - extend(outputFinder, payloadBatch[0]); - } - if (!noSnap && axisInfo.snap) { - if (axis.containData(snapToValue) && snapToValue != null) { - newValue = snapToValue; - } - } - updaters.showPointer(axisInfo, newValue, payloadBatch); - updaters.showTooltip(axisInfo, payloadInfo, snapToValue); - } - function buildPayloadsBySeries(value, axisInfo) { - var axis = axisInfo.axis; - var dim = axis.dim; - var snapToValue = value; - var payloadBatch = []; - var minDist = Number.MAX_VALUE; - var minDiff = -1; - each(axisInfo.seriesModels, function(series, idx) { - var dataDim = series.getData().mapDimensionsAll(dim); - var seriesNestestValue; - var dataIndices; - if (series.getAxisTooltipData) { - var result = series.getAxisTooltipData(dataDim, value, axis); - dataIndices = result.dataIndices; - seriesNestestValue = result.nestestValue; - } else { - dataIndices = series.getData().indicesOfNearest( - dataDim[0], - value, - // Add a threshold to avoid find the wrong dataIndex - // when data length is not same. - // false, - axis.type === "category" ? 0.5 : null - ); - if (!dataIndices.length) { - return; - } - seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]); - } - if (seriesNestestValue == null || !isFinite(seriesNestestValue)) { - return; - } - var diff = value - seriesNestestValue; - var dist3 = Math.abs(diff); - if (dist3 <= minDist) { - if (dist3 < minDist || diff >= 0 && minDiff < 0) { - minDist = dist3; - minDiff = diff; - snapToValue = seriesNestestValue; - payloadBatch.length = 0; - } - each(dataIndices, function(dataIndex) { - payloadBatch.push({ - seriesIndex: series.seriesIndex, - dataIndexInside: dataIndex, - dataIndex: series.getData().getRawIndex(dataIndex) - }); - }); - } - }); - return { - payloadBatch, - snapToValue - }; - } - function showPointer(showValueMap, axisInfo, value, payloadBatch) { - showValueMap[axisInfo.key] = { - value, - payloadBatch - }; - } - function showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) { - var payloadBatch = payloadInfo.payloadBatch; - var axis = axisInfo.axis; - var axisModel = axis.model; - var axisPointerModel = axisInfo.axisPointerModel; - if (!axisInfo.triggerTooltip || !payloadBatch.length) { - return; - } - var coordSysModel = axisInfo.coordSys.model; - var coordSysKey = makeKey(coordSysModel); - var coordSysItem = dataByCoordSys.map[coordSysKey]; - if (!coordSysItem) { - coordSysItem = dataByCoordSys.map[coordSysKey] = { - coordSysId: coordSysModel.id, - coordSysIndex: coordSysModel.componentIndex, - coordSysType: coordSysModel.type, - coordSysMainType: coordSysModel.mainType, - dataByAxis: [] - }; - dataByCoordSys.list.push(coordSysItem); - } - coordSysItem.dataByAxis.push({ - axisDim: axis.dim, - axisIndex: axisModel.componentIndex, - axisType: axisModel.type, - axisId: axisModel.id, - value, - // Caustion: viewHelper.getValueLabel is actually on "view stage", which - // depends that all models have been updated. So it should not be performed - // here. Considering axisPointerModel used here is volatile, which is hard - // to be retrieve in TooltipView, we prepare parameters here. - valueLabelOpt: { - precision: axisPointerModel.get(["label", "precision"]), - formatter: axisPointerModel.get(["label", "formatter"]) - }, - seriesDataIndices: payloadBatch.slice() - }); - } - function updateModelActually(showValueMap, axesInfo, outputPayload) { - var outputAxesInfo = outputPayload.axesInfo = []; - each(axesInfo, function(axisInfo, key) { - var option = axisInfo.axisPointerModel.option; - var valItem = showValueMap[key]; - if (valItem) { - !axisInfo.useHandle && (option.status = "show"); - option.value = valItem.value; - option.seriesDataIndices = (valItem.payloadBatch || []).slice(); - } else { - !axisInfo.useHandle && (option.status = "hide"); - } - option.status === "show" && outputAxesInfo.push({ - axisDim: axisInfo.axis.dim, - axisIndex: axisInfo.axis.model.componentIndex, - value: option.value - }); - }); - } - function dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction3) { - if (illegalPoint(point) || !dataByCoordSys.list.length) { - dispatchAction3({ - type: "hideTip" - }); - return; - } - var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {}; - dispatchAction3({ - type: "showTip", - escapeConnect: true, - x: point[0], - y: point[1], - tooltipOption: payload.tooltipOption, - position: payload.position, - dataIndexInside: sampleItem.dataIndexInside, - dataIndex: sampleItem.dataIndex, - seriesIndex: sampleItem.seriesIndex, - dataByCoordSys: dataByCoordSys.list - }); - } - function dispatchHighDownActually(axesInfo, dispatchAction3, api) { - var zr = api.getZr(); - var highDownKey = "axisPointerLastHighlights"; - var lastHighlights = inner13(zr)[highDownKey] || {}; - var newHighlights = inner13(zr)[highDownKey] = {}; - each(axesInfo, function(axisInfo, key) { - var option = axisInfo.axisPointerModel.option; - option.status === "show" && axisInfo.triggerEmphasis && each(option.seriesDataIndices, function(batchItem) { - var key2 = batchItem.seriesIndex + " | " + batchItem.dataIndex; - newHighlights[key2] = batchItem; - }); - }); - var toHighlight = []; - var toDownplay = []; - each(lastHighlights, function(batchItem, key) { - !newHighlights[key] && toDownplay.push(batchItem); - }); - each(newHighlights, function(batchItem, key) { - !lastHighlights[key] && toHighlight.push(batchItem); - }); - toDownplay.length && api.dispatchAction({ - type: "downplay", - escapeConnect: true, - // Not blur others when highlight in axisPointer. - notBlur: true, - batch: toDownplay - }); - toHighlight.length && api.dispatchAction({ - type: "highlight", - escapeConnect: true, - // Not blur others when highlight in axisPointer. - notBlur: true, - batch: toHighlight - }); - } - function findInputAxisInfo(inputAxesInfo, axisInfo) { - for (var i = 0; i < (inputAxesInfo || []).length; i++) { - var inputAxisInfo = inputAxesInfo[i]; - if (axisInfo.axis.dim === inputAxisInfo.axisDim && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) { - return inputAxisInfo; - } - } - } - function makeMapperParam(axisInfo) { - var axisModel = axisInfo.axis.model; - var item = {}; - var dim = item.axisDim = axisInfo.axis.dim; - item.axisIndex = item[dim + "AxisIndex"] = axisModel.componentIndex; - item.axisName = item[dim + "AxisName"] = axisModel.name; - item.axisId = item[dim + "AxisId"] = axisModel.id; - return item; - } - function illegalPoint(point) { - return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]); - } - - // node_modules/echarts/lib/component/axisPointer/install.js - function install29(registers) { - AxisView_default.registerAxisPointerClass("CartesianAxisPointer", CartesianAxisPointer_default); - registers.registerComponentModel(AxisPointerModel_default); - registers.registerComponentView(AxisPointerView_default); - registers.registerPreprocessor(function(option) { - if (option) { - (!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {}); - var link = option.axisPointer.link; - if (link && !isArray(link)) { - option.axisPointer.link = [link]; - } - } - }); - registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, function(ecModel, api) { - ecModel.getComponent("axisPointer").coordSysAxesInfo = collect(ecModel, api); - }); - registers.registerAction({ - type: "updateAxisPointer", - event: "updateAxisPointer", - update: ":updateAxisPointer" - }, axisTrigger); - } - - // node_modules/echarts/lib/component/grid/install.js - function install30(registers) { - use(install6); - use(install29); - } - - // node_modules/echarts/lib/component/axisPointer/PolarAxisPointer.js - var PolarAxisPointer = ( - /** @class */ - function(_super) { - __extends(PolarAxisPointer2, _super); - function PolarAxisPointer2() { - return _super !== null && _super.apply(this, arguments) || this; - } - PolarAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) { - var axis = axisModel.axis; - if (axis.dim === "angle") { - this.animationThreshold = Math.PI / 18; - } - var polar = axis.polar; - var otherAxis = polar.getOtherAxis(axis); - var otherExtent = otherAxis.getExtent(); - var coordValue = axis.dataToCoord(value); - var axisPointerType = axisPointerModel.get("type"); - if (axisPointerType && axisPointerType !== "none") { - var elStyle = buildElStyle(axisPointerModel); - var pointerOption = pointerShapeBuilder2[axisPointerType](axis, polar, coordValue, otherExtent); - pointerOption.style = elStyle; - elOption.graphicKey = pointerOption.type; - elOption.pointer = pointerOption; - } - var labelMargin = axisPointerModel.get(["label", "margin"]); - var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin); - buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos); - }; - return PolarAxisPointer2; - }(BaseAxisPointer_default) - ); - function getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) { - var axis = axisModel.axis; - var coord = axis.dataToCoord(value); - var axisAngle = polar.getAngleAxis().getExtent()[0]; - axisAngle = axisAngle / 180 * Math.PI; - var radiusExtent = polar.getRadiusAxis().getExtent(); - var position2; - var align; - var verticalAlign; - if (axis.dim === "radius") { - var transform2 = create2(); - rotate(transform2, transform2, axisAngle); - translate(transform2, transform2, [polar.cx, polar.cy]); - position2 = applyTransform2([coord, -labelMargin], transform2); - var labelRotation = axisModel.getModel("axisLabel").get("rotate") || 0; - var labelLayout2 = AxisBuilder_default.innerTextLayout(axisAngle, labelRotation * Math.PI / 180, -1); - align = labelLayout2.textAlign; - verticalAlign = labelLayout2.textVerticalAlign; - } else { - var r = radiusExtent[1]; - position2 = polar.coordToPoint([r + labelMargin, coord]); - var cx = polar.cx; - var cy = polar.cy; - align = Math.abs(position2[0] - cx) / r < 0.3 ? "center" : position2[0] > cx ? "left" : "right"; - verticalAlign = Math.abs(position2[1] - cy) / r < 0.3 ? "middle" : position2[1] > cy ? "top" : "bottom"; - } - return { - position: position2, - align, - verticalAlign - }; - } - var pointerShapeBuilder2 = { - line: function(axis, polar, coordValue, otherExtent) { - return axis.dim === "angle" ? { - type: "Line", - shape: makeLineShape(polar.coordToPoint([otherExtent[0], coordValue]), polar.coordToPoint([otherExtent[1], coordValue])) - } : { - type: "Circle", - shape: { - cx: polar.cx, - cy: polar.cy, - r: coordValue - } - }; - }, - shadow: function(axis, polar, coordValue, otherExtent) { - var bandWidth = Math.max(1, axis.getBandWidth()); - var radian = Math.PI / 180; - return axis.dim === "angle" ? { - type: "Sector", - shape: makeSectorShape( - polar.cx, - polar.cy, - otherExtent[0], - otherExtent[1], - // In ECharts y is negative if angle is positive - (-coordValue - bandWidth / 2) * radian, - (-coordValue + bandWidth / 2) * radian - ) - } : { - type: "Sector", - shape: makeSectorShape(polar.cx, polar.cy, coordValue - bandWidth / 2, coordValue + bandWidth / 2, 0, Math.PI * 2) - }; - } - }; - var PolarAxisPointer_default = PolarAxisPointer; - - // node_modules/echarts/lib/coord/polar/PolarModel.js - var PolarModel = ( - /** @class */ - function(_super) { - __extends(PolarModel2, _super); - function PolarModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = PolarModel2.type; - return _this; - } - PolarModel2.prototype.findAxisModel = function(axisType) { - var foundAxisModel; - var ecModel = this.ecModel; - ecModel.eachComponent(axisType, function(axisModel) { - if (axisModel.getCoordSysModel() === this) { - foundAxisModel = axisModel; - } - }, this); - return foundAxisModel; - }; - PolarModel2.type = "polar"; - PolarModel2.dependencies = ["radiusAxis", "angleAxis"]; - PolarModel2.defaultOption = { - // zlevel: 0, - z: 0, - center: ["50%", "50%"], - radius: "80%" - }; - return PolarModel2; - }(Component_default) - ); - var PolarModel_default = PolarModel; - - // node_modules/echarts/lib/coord/polar/AxisModel.js - var PolarAxisModel = ( - /** @class */ - function(_super) { - __extends(PolarAxisModel2, _super); - function PolarAxisModel2() { - return _super !== null && _super.apply(this, arguments) || this; - } - PolarAxisModel2.prototype.getCoordSysModel = function() { - return this.getReferringComponents("polar", SINGLE_REFERRING).models[0]; - }; - PolarAxisModel2.type = "polarAxis"; - return PolarAxisModel2; - }(Component_default) - ); - mixin(PolarAxisModel, AxisModelCommonMixin); - var AngleAxisModel = ( - /** @class */ - function(_super) { - __extends(AngleAxisModel2, _super); - function AngleAxisModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = AngleAxisModel2.type; - return _this; - } - AngleAxisModel2.type = "angleAxis"; - return AngleAxisModel2; - }(PolarAxisModel) - ); - var RadiusAxisModel = ( - /** @class */ - function(_super) { - __extends(RadiusAxisModel2, _super); - function RadiusAxisModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = RadiusAxisModel2.type; - return _this; - } - RadiusAxisModel2.type = "radiusAxis"; - return RadiusAxisModel2; - }(PolarAxisModel) - ); - - // node_modules/echarts/lib/coord/polar/RadiusAxis.js - var RadiusAxis = ( - /** @class */ - function(_super) { - __extends(RadiusAxis2, _super); - function RadiusAxis2(scale4, radiusExtent) { - return _super.call(this, "radius", scale4, radiusExtent) || this; - } - RadiusAxis2.prototype.pointToData = function(point, clamp3) { - return this.polar.pointToData(point, clamp3)[this.dim === "radius" ? 0 : 1]; - }; - return RadiusAxis2; - }(Axis_default) - ); - RadiusAxis.prototype.dataToRadius = Axis_default.prototype.dataToCoord; - RadiusAxis.prototype.radiusToData = Axis_default.prototype.coordToData; - var RadiusAxis_default = RadiusAxis; - - // node_modules/echarts/lib/coord/polar/AngleAxis.js - var inner14 = makeInner(); - var AngleAxis = ( - /** @class */ - function(_super) { - __extends(AngleAxis2, _super); - function AngleAxis2(scale4, angleExtent) { - return _super.call(this, "angle", scale4, angleExtent || [0, 360]) || this; - } - AngleAxis2.prototype.pointToData = function(point, clamp3) { - return this.polar.pointToData(point, clamp3)[this.dim === "radius" ? 0 : 1]; - }; - AngleAxis2.prototype.calculateCategoryInterval = function() { - var axis = this; - var labelModel = axis.getLabelModel(); - var ordinalScale = axis.scale; - var ordinalExtent = ordinalScale.getExtent(); - var tickCount = ordinalScale.count(); - if (ordinalExtent[1] - ordinalExtent[0] < 1) { - return 0; - } - var tickValue = ordinalExtent[0]; - var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue); - var unitH = Math.abs(unitSpan); - var rect = getBoundingRect(tickValue == null ? "" : tickValue + "", labelModel.getFont(), "center", "top"); - var maxH = Math.max(rect.height, 7); - var dh = maxH / unitH; - isNaN(dh) && (dh = Infinity); - var interval = Math.max(0, Math.floor(dh)); - var cache2 = inner14(axis.model); - var lastAutoInterval = cache2.lastAutoInterval; - var lastTickCount = cache2.lastTickCount; - if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 && lastAutoInterval > interval) { - interval = lastAutoInterval; - } else { - cache2.lastTickCount = tickCount; - cache2.lastAutoInterval = interval; - } - return interval; - }; - return AngleAxis2; - }(Axis_default) - ); - AngleAxis.prototype.dataToAngle = Axis_default.prototype.dataToCoord; - AngleAxis.prototype.angleToData = Axis_default.prototype.coordToData; - var AngleAxis_default = AngleAxis; - - // node_modules/echarts/lib/coord/polar/Polar.js - var polarDimensions = ["radius", "angle"]; - var Polar = ( - /** @class */ - function() { - function Polar2(name) { - this.dimensions = polarDimensions; - this.type = "polar"; - this.cx = 0; - this.cy = 0; - this._radiusAxis = new RadiusAxis_default(); - this._angleAxis = new AngleAxis_default(); - this.axisPointerEnabled = true; - this.name = name || ""; - this._radiusAxis.polar = this._angleAxis.polar = this; - } - Polar2.prototype.containPoint = function(point) { - var coord = this.pointToCoord(point); - return this._radiusAxis.contain(coord[0]) && this._angleAxis.contain(coord[1]); - }; - Polar2.prototype.containData = function(data) { - return this._radiusAxis.containData(data[0]) && this._angleAxis.containData(data[1]); - }; - Polar2.prototype.getAxis = function(dim) { - var key = "_" + dim + "Axis"; - return this[key]; - }; - Polar2.prototype.getAxes = function() { - return [this._radiusAxis, this._angleAxis]; - }; - Polar2.prototype.getAxesByScale = function(scaleType) { - var axes = []; - var angleAxis = this._angleAxis; - var radiusAxis = this._radiusAxis; - angleAxis.scale.type === scaleType && axes.push(angleAxis); - radiusAxis.scale.type === scaleType && axes.push(radiusAxis); - return axes; - }; - Polar2.prototype.getAngleAxis = function() { - return this._angleAxis; - }; - Polar2.prototype.getRadiusAxis = function() { - return this._radiusAxis; - }; - Polar2.prototype.getOtherAxis = function(axis) { - var angleAxis = this._angleAxis; - return axis === angleAxis ? this._radiusAxis : angleAxis; - }; - Polar2.prototype.getBaseAxis = function() { - return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAngleAxis(); - }; - Polar2.prototype.getTooltipAxes = function(dim) { - var baseAxis = dim != null && dim !== "auto" ? this.getAxis(dim) : this.getBaseAxis(); - return { - baseAxes: [baseAxis], - otherAxes: [this.getOtherAxis(baseAxis)] - }; - }; - Polar2.prototype.dataToPoint = function(data, clamp3) { - return this.coordToPoint([this._radiusAxis.dataToRadius(data[0], clamp3), this._angleAxis.dataToAngle(data[1], clamp3)]); - }; - Polar2.prototype.pointToData = function(point, clamp3) { - var coord = this.pointToCoord(point); - return [this._radiusAxis.radiusToData(coord[0], clamp3), this._angleAxis.angleToData(coord[1], clamp3)]; - }; - Polar2.prototype.pointToCoord = function(point) { - var dx = point[0] - this.cx; - var dy = point[1] - this.cy; - var angleAxis = this.getAngleAxis(); - var extent3 = angleAxis.getExtent(); - var minAngle = Math.min(extent3[0], extent3[1]); - var maxAngle = Math.max(extent3[0], extent3[1]); - angleAxis.inverse ? minAngle = maxAngle - 360 : maxAngle = minAngle + 360; - var radius = Math.sqrt(dx * dx + dy * dy); - dx /= radius; - dy /= radius; - var radian = Math.atan2(-dy, dx) / Math.PI * 180; - var dir3 = radian < minAngle ? 1 : -1; - while (radian < minAngle || radian > maxAngle) { - radian += dir3 * 360; - } - return [radius, radian]; - }; - Polar2.prototype.coordToPoint = function(coord) { - var radius = coord[0]; - var radian = coord[1] / 180 * Math.PI; - var x = Math.cos(radian) * radius + this.cx; - var y = -Math.sin(radian) * radius + this.cy; - return [x, y]; - }; - Polar2.prototype.getArea = function() { - var angleAxis = this.getAngleAxis(); - var radiusAxis = this.getRadiusAxis(); - var radiusExtent = radiusAxis.getExtent().slice(); - radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse(); - var angleExtent = angleAxis.getExtent(); - var RADIAN4 = Math.PI / 180; - var EPSILON6 = 1e-4; - return { - cx: this.cx, - cy: this.cy, - r0: radiusExtent[0], - r: radiusExtent[1], - startAngle: -angleExtent[0] * RADIAN4, - endAngle: -angleExtent[1] * RADIAN4, - clockwise: angleAxis.inverse, - contain: function(x, y) { - var dx = x - this.cx; - var dy = y - this.cy; - var d2 = dx * dx + dy * dy; - var r = this.r; - var r0 = this.r0; - return r !== r0 && d2 - EPSILON6 <= r * r && d2 + EPSILON6 >= r0 * r0; - } - }; - }; - Polar2.prototype.convertToPixel = function(ecModel, finder, value) { - var coordSys = getCoordSys3(finder); - return coordSys === this ? this.dataToPoint(value) : null; - }; - Polar2.prototype.convertFromPixel = function(ecModel, finder, pixel) { - var coordSys = getCoordSys3(finder); - return coordSys === this ? this.pointToData(pixel) : null; - }; - return Polar2; - }() - ); - function getCoordSys3(finder) { - var seriesModel = finder.seriesModel; - var polarModel = finder.polarModel; - return polarModel && polarModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem; - } - var Polar_default = Polar; - - // node_modules/echarts/lib/coord/polar/polarCreator.js - function resizePolar(polar, polarModel, api) { - var center3 = polarModel.get("center"); - var width = api.getWidth(); - var height = api.getHeight(); - polar.cx = parsePercent2(center3[0], width); - polar.cy = parsePercent2(center3[1], height); - var radiusAxis = polar.getRadiusAxis(); - var size2 = Math.min(width, height) / 2; - var radius = polarModel.get("radius"); - if (radius == null) { - radius = [0, "100%"]; - } else if (!isArray(radius)) { - radius = [0, radius]; - } - var parsedRadius = [parsePercent2(radius[0], size2), parsePercent2(radius[1], size2)]; - radiusAxis.inverse ? radiusAxis.setExtent(parsedRadius[1], parsedRadius[0]) : radiusAxis.setExtent(parsedRadius[0], parsedRadius[1]); - } - function updatePolarScale(ecModel, api) { - var polar = this; - var angleAxis = polar.getAngleAxis(); - var radiusAxis = polar.getRadiusAxis(); - angleAxis.scale.setExtent(Infinity, -Infinity); - radiusAxis.scale.setExtent(Infinity, -Infinity); - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.coordinateSystem === polar) { - var data_1 = seriesModel.getData(); - each(getDataDimensionsOnAxis(data_1, "radius"), function(dim) { - radiusAxis.scale.unionExtentFromData(data_1, dim); - }); - each(getDataDimensionsOnAxis(data_1, "angle"), function(dim) { - angleAxis.scale.unionExtentFromData(data_1, dim); - }); - } - }); - niceScaleExtent(angleAxis.scale, angleAxis.model); - niceScaleExtent(radiusAxis.scale, radiusAxis.model); - if (angleAxis.type === "category" && !angleAxis.onBand) { - var extent3 = angleAxis.getExtent(); - var diff = 360 / angleAxis.scale.count(); - angleAxis.inverse ? extent3[1] += diff : extent3[1] -= diff; - angleAxis.setExtent(extent3[0], extent3[1]); - } - } - function isAngleAxisModel(axisModel) { - return axisModel.mainType === "angleAxis"; - } - function setAxis(axis, axisModel) { - var _a2; - axis.type = axisModel.get("type"); - axis.scale = createScaleByModel(axisModel); - axis.onBand = axisModel.get("boundaryGap") && axis.type === "category"; - axis.inverse = axisModel.get("inverse"); - if (isAngleAxisModel(axisModel)) { - axis.inverse = axis.inverse !== axisModel.get("clockwise"); - var startAngle = axisModel.get("startAngle"); - var endAngle = (_a2 = axisModel.get("endAngle")) !== null && _a2 !== void 0 ? _a2 : startAngle + (axis.inverse ? -360 : 360); - axis.setExtent(startAngle, endAngle); - } - axisModel.axis = axis; - axis.model = axisModel; - } - var polarCreator = { - dimensions: polarDimensions, - create: function(ecModel, api) { - var polarList = []; - ecModel.eachComponent("polar", function(polarModel, idx) { - var polar = new Polar_default(idx + ""); - polar.update = updatePolarScale; - var radiusAxis = polar.getRadiusAxis(); - var angleAxis = polar.getAngleAxis(); - var radiusAxisModel = polarModel.findAxisModel("radiusAxis"); - var angleAxisModel = polarModel.findAxisModel("angleAxis"); - setAxis(radiusAxis, radiusAxisModel); - setAxis(angleAxis, angleAxisModel); - resizePolar(polar, polarModel, api); - polarList.push(polar); - polarModel.coordinateSystem = polar; - polar.model = polarModel; - }); - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.get("coordinateSystem") === "polar") { - var polarModel = seriesModel.getReferringComponents("polar", SINGLE_REFERRING).models[0]; - if (true) { - if (!polarModel) { - throw new Error('Polar "' + retrieve(seriesModel.get("polarIndex"), seriesModel.get("polarId"), 0) + '" not found'); - } - } - seriesModel.coordinateSystem = polarModel.coordinateSystem; - } - }); - return polarList; - } - }; - var polarCreator_default = polarCreator; - - // node_modules/echarts/lib/component/axis/AngleAxisView.js - var elementList2 = ["axisLine", "axisLabel", "axisTick", "minorTick", "splitLine", "minorSplitLine", "splitArea"]; - function getAxisLineShape(polar, rExtent, angle) { - rExtent[1] > rExtent[0] && (rExtent = rExtent.slice().reverse()); - var start3 = polar.coordToPoint([rExtent[0], angle]); - var end2 = polar.coordToPoint([rExtent[1], angle]); - return { - x1: start3[0], - y1: start3[1], - x2: end2[0], - y2: end2[1] - }; - } - function getRadiusIdx(polar) { - var radiusAxis = polar.getRadiusAxis(); - return radiusAxis.inverse ? 0 : 1; - } - function fixAngleOverlap(list) { - var firstItem = list[0]; - var lastItem = list[list.length - 1]; - if (firstItem && lastItem && Math.abs(Math.abs(firstItem.coord - lastItem.coord) - 360) < 1e-4) { - list.pop(); - } - } - var AngleAxisView = ( - /** @class */ - function(_super) { - __extends(AngleAxisView2, _super); - function AngleAxisView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = AngleAxisView2.type; - _this.axisPointerClass = "PolarAxisPointer"; - return _this; - } - AngleAxisView2.prototype.render = function(angleAxisModel, ecModel) { - this.group.removeAll(); - if (!angleAxisModel.get("show")) { - return; - } - var angleAxis = angleAxisModel.axis; - var polar = angleAxis.polar; - var radiusExtent = polar.getRadiusAxis().getExtent(); - var ticksAngles = angleAxis.getTicksCoords(); - var minorTickAngles = angleAxis.getMinorTicksCoords(); - var labels = map(angleAxis.getViewLabels(), function(labelItem) { - labelItem = clone(labelItem); - var scale4 = angleAxis.scale; - var tickValue = scale4.type === "ordinal" ? scale4.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue; - labelItem.coord = angleAxis.dataToCoord(tickValue); - return labelItem; - }); - fixAngleOverlap(labels); - fixAngleOverlap(ticksAngles); - each(elementList2, function(name) { - if (angleAxisModel.get([name, "show"]) && (!angleAxis.scale.isBlank() || name === "axisLine")) { - angelAxisElementsBuilders[name](this.group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels); - } - }, this); - }; - AngleAxisView2.type = "angleAxis"; - return AngleAxisView2; - }(AxisView_default) - ); - var angelAxisElementsBuilders = { - axisLine: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { - var lineStyleModel = angleAxisModel.getModel(["axisLine", "lineStyle"]); - var angleAxis = polar.getAngleAxis(); - var RADIAN4 = Math.PI / 180; - var angleExtent = angleAxis.getExtent(); - var rId = getRadiusIdx(polar); - var r0Id = rId ? 0 : 1; - var shape; - var shapeType = Math.abs(angleExtent[1] - angleExtent[0]) === 360 ? "Circle" : "Arc"; - if (radiusExtent[r0Id] === 0) { - shape = new graphic_exports[shapeType]({ - shape: { - cx: polar.cx, - cy: polar.cy, - r: radiusExtent[rId], - startAngle: -angleExtent[0] * RADIAN4, - endAngle: -angleExtent[1] * RADIAN4, - clockwise: angleAxis.inverse - }, - style: lineStyleModel.getLineStyle(), - z2: 1, - silent: true - }); - } else { - shape = new Ring_default({ - shape: { - cx: polar.cx, - cy: polar.cy, - r: radiusExtent[rId], - r0: radiusExtent[r0Id] - }, - style: lineStyleModel.getLineStyle(), - z2: 1, - silent: true - }); - } - shape.style.fill = null; - group.add(shape); - }, - axisTick: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { - var tickModel = angleAxisModel.getModel("axisTick"); - var tickLen = (tickModel.get("inside") ? -1 : 1) * tickModel.get("length"); - var radius = radiusExtent[getRadiusIdx(polar)]; - var lines = map(ticksAngles, function(tickAngleItem) { - return new Line_default({ - shape: getAxisLineShape(polar, [radius, radius + tickLen], tickAngleItem.coord) - }); - }); - group.add(mergePath2(lines, { - style: defaults(tickModel.getModel("lineStyle").getLineStyle(), { - stroke: angleAxisModel.get(["axisLine", "lineStyle", "color"]) - }) - })); - }, - minorTick: function(group, angleAxisModel, polar, tickAngles, minorTickAngles, radiusExtent) { - if (!minorTickAngles.length) { - return; - } - var tickModel = angleAxisModel.getModel("axisTick"); - var minorTickModel = angleAxisModel.getModel("minorTick"); - var tickLen = (tickModel.get("inside") ? -1 : 1) * minorTickModel.get("length"); - var radius = radiusExtent[getRadiusIdx(polar)]; - var lines = []; - for (var i = 0; i < minorTickAngles.length; i++) { - for (var k = 0; k < minorTickAngles[i].length; k++) { - lines.push(new Line_default({ - shape: getAxisLineShape(polar, [radius, radius + tickLen], minorTickAngles[i][k].coord) - })); - } - } - group.add(mergePath2(lines, { - style: defaults(minorTickModel.getModel("lineStyle").getLineStyle(), defaults(tickModel.getLineStyle(), { - stroke: angleAxisModel.get(["axisLine", "lineStyle", "color"]) - })) - })); - }, - axisLabel: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels) { - var rawCategoryData = angleAxisModel.getCategories(true); - var commonLabelModel = angleAxisModel.getModel("axisLabel"); - var labelMargin = commonLabelModel.get("margin"); - var triggerEvent = angleAxisModel.get("triggerEvent"); - each(labels, function(labelItem, idx) { - var labelModel = commonLabelModel; - var tickValue = labelItem.tickValue; - var r = radiusExtent[getRadiusIdx(polar)]; - var p = polar.coordToPoint([r + labelMargin, labelItem.coord]); - var cx = polar.cx; - var cy = polar.cy; - var labelTextAlign = Math.abs(p[0] - cx) / r < 0.3 ? "center" : p[0] > cx ? "left" : "right"; - var labelTextVerticalAlign = Math.abs(p[1] - cy) / r < 0.3 ? "middle" : p[1] > cy ? "top" : "bottom"; - if (rawCategoryData && rawCategoryData[tickValue]) { - var rawCategoryItem = rawCategoryData[tickValue]; - if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) { - labelModel = new Model_default(rawCategoryItem.textStyle, commonLabelModel, commonLabelModel.ecModel); - } - } - var textEl = new Text_default({ - silent: AxisBuilder_default.isLabelSilent(angleAxisModel), - style: createTextStyle(labelModel, { - x: p[0], - y: p[1], - fill: labelModel.getTextColor() || angleAxisModel.get(["axisLine", "lineStyle", "color"]), - text: labelItem.formattedLabel, - align: labelTextAlign, - verticalAlign: labelTextVerticalAlign - }) - }); - group.add(textEl); - if (triggerEvent) { - var eventData = AxisBuilder_default.makeAxisEventDataBase(angleAxisModel); - eventData.targetType = "axisLabel"; - eventData.value = labelItem.rawLabel; - getECData(textEl).eventData = eventData; - } - }, this); - }, - splitLine: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { - var splitLineModel = angleAxisModel.getModel("splitLine"); - var lineStyleModel = splitLineModel.getModel("lineStyle"); - var lineColors = lineStyleModel.get("color"); - var lineCount = 0; - lineColors = lineColors instanceof Array ? lineColors : [lineColors]; - var splitLines = []; - for (var i = 0; i < ticksAngles.length; i++) { - var colorIndex = lineCount++ % lineColors.length; - splitLines[colorIndex] = splitLines[colorIndex] || []; - splitLines[colorIndex].push(new Line_default({ - shape: getAxisLineShape(polar, radiusExtent, ticksAngles[i].coord) - })); - } - for (var i = 0; i < splitLines.length; i++) { - group.add(mergePath2(splitLines[i], { - style: defaults({ - stroke: lineColors[i % lineColors.length] - }, lineStyleModel.getLineStyle()), - silent: true, - z: angleAxisModel.get("z") - })); - } - }, - minorSplitLine: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { - if (!minorTickAngles.length) { - return; - } - var minorSplitLineModel = angleAxisModel.getModel("minorSplitLine"); - var lineStyleModel = minorSplitLineModel.getModel("lineStyle"); - var lines = []; - for (var i = 0; i < minorTickAngles.length; i++) { - for (var k = 0; k < minorTickAngles[i].length; k++) { - lines.push(new Line_default({ - shape: getAxisLineShape(polar, radiusExtent, minorTickAngles[i][k].coord) - })); - } - } - group.add(mergePath2(lines, { - style: lineStyleModel.getLineStyle(), - silent: true, - z: angleAxisModel.get("z") - })); - }, - splitArea: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { - if (!ticksAngles.length) { - return; - } - var splitAreaModel = angleAxisModel.getModel("splitArea"); - var areaStyleModel = splitAreaModel.getModel("areaStyle"); - var areaColors = areaStyleModel.get("color"); - var lineCount = 0; - areaColors = areaColors instanceof Array ? areaColors : [areaColors]; - var splitAreas = []; - var RADIAN4 = Math.PI / 180; - var prevAngle = -ticksAngles[0].coord * RADIAN4; - var r0 = Math.min(radiusExtent[0], radiusExtent[1]); - var r1 = Math.max(radiusExtent[0], radiusExtent[1]); - var clockwise = angleAxisModel.get("clockwise"); - for (var i = 1, len2 = ticksAngles.length; i <= len2; i++) { - var coord = i === len2 ? ticksAngles[0].coord : ticksAngles[i].coord; - var colorIndex = lineCount++ % areaColors.length; - splitAreas[colorIndex] = splitAreas[colorIndex] || []; - splitAreas[colorIndex].push(new Sector_default({ - shape: { - cx: polar.cx, - cy: polar.cy, - r0, - r: r1, - startAngle: prevAngle, - endAngle: -coord * RADIAN4, - clockwise - }, - silent: true - })); - prevAngle = -coord * RADIAN4; - } - for (var i = 0; i < splitAreas.length; i++) { - group.add(mergePath2(splitAreas[i], { - style: defaults({ - fill: areaColors[i % areaColors.length] - }, areaStyleModel.getAreaStyle()), - silent: true - })); - } - } - }; - var AngleAxisView_default = AngleAxisView; - - // node_modules/echarts/lib/component/axis/RadiusAxisView.js - var axisBuilderAttrs3 = ["axisLine", "axisTickLabel", "axisName"]; - var selfBuilderAttrs2 = ["splitLine", "splitArea", "minorSplitLine"]; - var RadiusAxisView = ( - /** @class */ - function(_super) { - __extends(RadiusAxisView2, _super); - function RadiusAxisView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = RadiusAxisView2.type; - _this.axisPointerClass = "PolarAxisPointer"; - return _this; - } - RadiusAxisView2.prototype.render = function(radiusAxisModel, ecModel) { - this.group.removeAll(); - if (!radiusAxisModel.get("show")) { - return; - } - var oldAxisGroup = this._axisGroup; - var newAxisGroup = this._axisGroup = new Group_default(); - this.group.add(newAxisGroup); - var radiusAxis = radiusAxisModel.axis; - var polar = radiusAxis.polar; - var angleAxis = polar.getAngleAxis(); - var ticksCoords = radiusAxis.getTicksCoords(); - var minorTicksCoords = radiusAxis.getMinorTicksCoords(); - var axisAngle = angleAxis.getExtent()[0]; - var radiusExtent = radiusAxis.getExtent(); - var layout5 = layoutAxis(polar, radiusAxisModel, axisAngle); - var axisBuilder = new AxisBuilder_default(radiusAxisModel, layout5); - each(axisBuilderAttrs3, axisBuilder.add, axisBuilder); - newAxisGroup.add(axisBuilder.getGroup()); - groupTransition(oldAxisGroup, newAxisGroup, radiusAxisModel); - each(selfBuilderAttrs2, function(name) { - if (radiusAxisModel.get([name, "show"]) && !radiusAxis.scale.isBlank()) { - axisElementBuilders2[name](this.group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords); - } - }, this); - }; - RadiusAxisView2.type = "radiusAxis"; - return RadiusAxisView2; - }(AxisView_default) - ); - var axisElementBuilders2 = { - splitLine: function(group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) { - var splitLineModel = radiusAxisModel.getModel("splitLine"); - var lineStyleModel = splitLineModel.getModel("lineStyle"); - var lineColors = lineStyleModel.get("color"); - var lineCount = 0; - var angleAxis = polar.getAngleAxis(); - var RADIAN4 = Math.PI / 180; - var angleExtent = angleAxis.getExtent(); - var shapeType = Math.abs(angleExtent[1] - angleExtent[0]) === 360 ? "Circle" : "Arc"; - lineColors = lineColors instanceof Array ? lineColors : [lineColors]; - var splitLines = []; - for (var i = 0; i < ticksCoords.length; i++) { - var colorIndex = lineCount++ % lineColors.length; - splitLines[colorIndex] = splitLines[colorIndex] || []; - splitLines[colorIndex].push(new graphic_exports[shapeType]({ - shape: { - cx: polar.cx, - cy: polar.cy, - // ensure circle radius >= 0 - r: Math.max(ticksCoords[i].coord, 0), - startAngle: -angleExtent[0] * RADIAN4, - endAngle: -angleExtent[1] * RADIAN4, - clockwise: angleAxis.inverse - } - })); - } - for (var i = 0; i < splitLines.length; i++) { - group.add(mergePath2(splitLines[i], { - style: defaults({ - stroke: lineColors[i % lineColors.length], - fill: null - }, lineStyleModel.getLineStyle()), - silent: true - })); - } - }, - minorSplitLine: function(group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords) { - if (!minorTicksCoords.length) { - return; - } - var minorSplitLineModel = radiusAxisModel.getModel("minorSplitLine"); - var lineStyleModel = minorSplitLineModel.getModel("lineStyle"); - var lines = []; - for (var i = 0; i < minorTicksCoords.length; i++) { - for (var k = 0; k < minorTicksCoords[i].length; k++) { - lines.push(new Circle_default({ - shape: { - cx: polar.cx, - cy: polar.cy, - r: minorTicksCoords[i][k].coord - } - })); - } - } - group.add(mergePath2(lines, { - style: defaults({ - fill: null - }, lineStyleModel.getLineStyle()), - silent: true - })); - }, - splitArea: function(group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) { - if (!ticksCoords.length) { - return; - } - var splitAreaModel = radiusAxisModel.getModel("splitArea"); - var areaStyleModel = splitAreaModel.getModel("areaStyle"); - var areaColors = areaStyleModel.get("color"); - var lineCount = 0; - areaColors = areaColors instanceof Array ? areaColors : [areaColors]; - var splitAreas = []; - var prevRadius = ticksCoords[0].coord; - for (var i = 1; i < ticksCoords.length; i++) { - var colorIndex = lineCount++ % areaColors.length; - splitAreas[colorIndex] = splitAreas[colorIndex] || []; - splitAreas[colorIndex].push(new Sector_default({ - shape: { - cx: polar.cx, - cy: polar.cy, - r0: prevRadius, - r: ticksCoords[i].coord, - startAngle: 0, - endAngle: Math.PI * 2 - }, - silent: true - })); - prevRadius = ticksCoords[i].coord; - } - for (var i = 0; i < splitAreas.length; i++) { - group.add(mergePath2(splitAreas[i], { - style: defaults({ - fill: areaColors[i % areaColors.length] - }, areaStyleModel.getAreaStyle()), - silent: true - })); - } - } - }; - function layoutAxis(polar, radiusAxisModel, axisAngle) { - return { - position: [polar.cx, polar.cy], - rotation: axisAngle / 180 * Math.PI, - labelDirection: -1, - tickDirection: -1, - nameDirection: 1, - labelRotate: radiusAxisModel.getModel("axisLabel").get("rotate"), - // Over splitLine and splitArea - z2: 1 - }; - } - var RadiusAxisView_default = RadiusAxisView; - - // node_modules/echarts/lib/layout/barPolar.js - function getSeriesStackId2(seriesModel) { - return seriesModel.get("stack") || "__ec_stack_" + seriesModel.seriesIndex; - } - function getAxisKey2(polar, axis) { - return axis.dim + polar.model.componentIndex; - } - function barLayoutPolar(seriesType2, ecModel, api) { - var lastStackCoords = {}; - var barWidthAndOffset = calRadialBar(filter(ecModel.getSeriesByType(seriesType2), function(seriesModel) { - return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === "polar"; - })); - ecModel.eachSeriesByType(seriesType2, function(seriesModel) { - if (seriesModel.coordinateSystem.type !== "polar") { - return; - } - var data = seriesModel.getData(); - var polar = seriesModel.coordinateSystem; - var baseAxis = polar.getBaseAxis(); - var axisKey = getAxisKey2(polar, baseAxis); - var stackId = getSeriesStackId2(seriesModel); - var columnLayoutInfo = barWidthAndOffset[axisKey][stackId]; - var columnOffset = columnLayoutInfo.offset; - var columnWidth = columnLayoutInfo.width; - var valueAxis2 = polar.getOtherAxis(baseAxis); - var cx = seriesModel.coordinateSystem.cx; - var cy = seriesModel.coordinateSystem.cy; - var barMinHeight = seriesModel.get("barMinHeight") || 0; - var barMinAngle = seriesModel.get("barMinAngle") || 0; - lastStackCoords[stackId] = lastStackCoords[stackId] || []; - var valueDim = data.mapDimension(valueAxis2.dim); - var baseDim = data.mapDimension(baseAxis.dim); - var stacked = isDimensionStacked( - data, - valueDim - /* , baseDim */ - ); - var clampLayout = baseAxis.dim !== "radius" || !seriesModel.get("roundCap", true); - var valueAxisModel = valueAxis2.model; - var startValue = valueAxisModel.get("startValue"); - var valueAxisStart = valueAxis2.dataToCoord(startValue || 0); - for (var idx = 0, len2 = data.count(); idx < len2; idx++) { - var value = data.get(valueDim, idx); - var baseValue = data.get(baseDim, idx); - var sign = value >= 0 ? "p" : "n"; - var baseCoord = valueAxisStart; - if (stacked) { - if (!lastStackCoords[stackId][baseValue]) { - lastStackCoords[stackId][baseValue] = { - p: valueAxisStart, - n: valueAxisStart - // Negative stack - }; - } - baseCoord = lastStackCoords[stackId][baseValue][sign]; - } - var r0 = void 0; - var r = void 0; - var startAngle = void 0; - var endAngle = void 0; - if (valueAxis2.dim === "radius") { - var radiusSpan = valueAxis2.dataToCoord(value) - valueAxisStart; - var angle = baseAxis.dataToCoord(baseValue); - if (Math.abs(radiusSpan) < barMinHeight) { - radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight; - } - r0 = baseCoord; - r = baseCoord + radiusSpan; - startAngle = angle - columnOffset; - endAngle = startAngle - columnWidth; - stacked && (lastStackCoords[stackId][baseValue][sign] = r); - } else { - var angleSpan = valueAxis2.dataToCoord(value, clampLayout) - valueAxisStart; - var radius = baseAxis.dataToCoord(baseValue); - if (Math.abs(angleSpan) < barMinAngle) { - angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle; - } - r0 = radius + columnOffset; - r = r0 + columnWidth; - startAngle = baseCoord; - endAngle = baseCoord + angleSpan; - stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle); - } - data.setItemLayout(idx, { - cx, - cy, - r0, - r, - // Consider that positive angle is anti-clockwise, - // while positive radian of sector is clockwise - startAngle: -startAngle * Math.PI / 180, - endAngle: -endAngle * Math.PI / 180, - /** - * Keep the same logic with bar in catesion: use end value to - * control direction. Notice that if clockwise is true (by - * default), the sector will always draw clockwisely, no matter - * whether endAngle is greater or less than startAngle. - */ - clockwise: startAngle >= endAngle - }); - } - }); - } - function calRadialBar(barSeries) { - var columnsMap = {}; - each(barSeries, function(seriesModel, idx) { - var data = seriesModel.getData(); - var polar = seriesModel.coordinateSystem; - var baseAxis = polar.getBaseAxis(); - var axisKey = getAxisKey2(polar, baseAxis); - var axisExtent = baseAxis.getExtent(); - var bandWidth = baseAxis.type === "category" ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count(); - var columnsOnAxis = columnsMap[axisKey] || { - bandWidth, - remainedWidth: bandWidth, - autoWidthCount: 0, - categoryGap: "20%", - gap: "30%", - stacks: {} - }; - var stacks = columnsOnAxis.stacks; - columnsMap[axisKey] = columnsOnAxis; - var stackId = getSeriesStackId2(seriesModel); - if (!stacks[stackId]) { - columnsOnAxis.autoWidthCount++; - } - stacks[stackId] = stacks[stackId] || { - width: 0, - maxWidth: 0 - }; - var barWidth = parsePercent2(seriesModel.get("barWidth"), bandWidth); - var barMaxWidth = parsePercent2(seriesModel.get("barMaxWidth"), bandWidth); - var barGap = seriesModel.get("barGap"); - var barCategoryGap = seriesModel.get("barCategoryGap"); - if (barWidth && !stacks[stackId].width) { - barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth); - stacks[stackId].width = barWidth; - columnsOnAxis.remainedWidth -= barWidth; - } - barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth); - barGap != null && (columnsOnAxis.gap = barGap); - barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap); - }); - var result = {}; - each(columnsMap, function(columnsOnAxis, coordSysName) { - result[coordSysName] = {}; - var stacks = columnsOnAxis.stacks; - var bandWidth = columnsOnAxis.bandWidth; - var categoryGap = parsePercent2(columnsOnAxis.categoryGap, bandWidth); - var barGapPercent = parsePercent2(columnsOnAxis.gap, 1); - var remainedWidth = columnsOnAxis.remainedWidth; - var autoWidthCount = columnsOnAxis.autoWidthCount; - var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); - autoWidth = Math.max(autoWidth, 0); - each(stacks, function(column, stack) { - var maxWidth = column.maxWidth; - if (maxWidth && maxWidth < autoWidth) { - maxWidth = Math.min(maxWidth, remainedWidth); - if (column.width) { - maxWidth = Math.min(maxWidth, column.width); - } - remainedWidth -= maxWidth; - column.width = maxWidth; - autoWidthCount--; - } - }); - autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); - autoWidth = Math.max(autoWidth, 0); - var widthSum = 0; - var lastColumn; - each(stacks, function(column, idx) { - if (!column.width) { - column.width = autoWidth; - } - lastColumn = column; - widthSum += column.width * (1 + barGapPercent); - }); - if (lastColumn) { - widthSum -= lastColumn.width * barGapPercent; - } - var offset3 = -widthSum / 2; - each(stacks, function(column, stackId) { - result[coordSysName][stackId] = result[coordSysName][stackId] || { - offset: offset3, - width: column.width - }; - offset3 += column.width * (1 + barGapPercent); - }); - }); - return result; - } - var barPolar_default = barLayoutPolar; - - // node_modules/echarts/lib/component/polar/install.js - var angleAxisExtraOption = { - startAngle: 90, - clockwise: true, - splitNumber: 12, - axisLabel: { - rotate: 0 - } - }; - var radiusAxisExtraOption = { - splitNumber: 5 - }; - var PolarView = ( - /** @class */ - function(_super) { - __extends(PolarView2, _super); - function PolarView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = PolarView2.type; - return _this; - } - PolarView2.type = "polar"; - return PolarView2; - }(Component_default2) - ); - function install31(registers) { - use(install29); - AxisView_default.registerAxisPointerClass("PolarAxisPointer", PolarAxisPointer_default); - registers.registerCoordinateSystem("polar", polarCreator_default); - registers.registerComponentModel(PolarModel_default); - registers.registerComponentView(PolarView); - axisModelCreator(registers, "angle", AngleAxisModel, angleAxisExtraOption); - axisModelCreator(registers, "radius", RadiusAxisModel, radiusAxisExtraOption); - registers.registerComponentView(AngleAxisView_default); - registers.registerComponentView(RadiusAxisView_default); - registers.registerLayout(curry(barPolar_default, "bar")); - } - - // node_modules/echarts/lib/coord/single/singleAxisHelper.js - function layout3(axisModel, opt) { - opt = opt || {}; - var single = axisModel.coordinateSystem; - var axis = axisModel.axis; - var layout5 = {}; - var axisPosition = axis.position; - var orient = axis.orient; - var rect = single.getRect(); - var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height]; - var positionMap = { - horizontal: { - top: rectBound[2], - bottom: rectBound[3] - }, - vertical: { - left: rectBound[0], - right: rectBound[1] - } - }; - layout5.position = [orient === "vertical" ? positionMap.vertical[axisPosition] : rectBound[0], orient === "horizontal" ? positionMap.horizontal[axisPosition] : rectBound[3]]; - var r = { - horizontal: 0, - vertical: 1 - }; - layout5.rotation = Math.PI / 2 * r[orient]; - var directionMap = { - top: -1, - bottom: 1, - right: 1, - left: -1 - }; - layout5.labelDirection = layout5.tickDirection = layout5.nameDirection = directionMap[axisPosition]; - if (axisModel.get(["axisTick", "inside"])) { - layout5.tickDirection = -layout5.tickDirection; - } - if (retrieve(opt.labelInside, axisModel.get(["axisLabel", "inside"]))) { - layout5.labelDirection = -layout5.labelDirection; - } - var labelRotation = opt.rotate; - labelRotation == null && (labelRotation = axisModel.get(["axisLabel", "rotate"])); - layout5.labelRotation = axisPosition === "top" ? -labelRotation : labelRotation; - layout5.z2 = 1; - return layout5; - } - - // node_modules/echarts/lib/component/axis/SingleAxisView.js - var axisBuilderAttrs4 = ["axisLine", "axisTickLabel", "axisName"]; - var selfBuilderAttrs3 = ["splitArea", "splitLine"]; - var SingleAxisView = ( - /** @class */ - function(_super) { - __extends(SingleAxisView2, _super); - function SingleAxisView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SingleAxisView2.type; - _this.axisPointerClass = "SingleAxisPointer"; - return _this; - } - SingleAxisView2.prototype.render = function(axisModel, ecModel, api, payload) { - var group = this.group; - group.removeAll(); - var oldAxisGroup = this._axisGroup; - this._axisGroup = new Group_default(); - var layout5 = layout3(axisModel); - var axisBuilder = new AxisBuilder_default(axisModel, layout5); - each(axisBuilderAttrs4, axisBuilder.add, axisBuilder); - group.add(this._axisGroup); - group.add(axisBuilder.getGroup()); - each(selfBuilderAttrs3, function(name) { - if (axisModel.get([name, "show"])) { - axisElementBuilders3[name](this, this.group, this._axisGroup, axisModel); - } - }, this); - groupTransition(oldAxisGroup, this._axisGroup, axisModel); - _super.prototype.render.call(this, axisModel, ecModel, api, payload); - }; - SingleAxisView2.prototype.remove = function() { - rectCoordAxisHandleRemove(this); - }; - SingleAxisView2.type = "singleAxis"; - return SingleAxisView2; - }(AxisView_default) - ); - var axisElementBuilders3 = { - splitLine: function(axisView, group, axisGroup, axisModel) { - var axis = axisModel.axis; - if (axis.scale.isBlank()) { - return; - } - var splitLineModel = axisModel.getModel("splitLine"); - var lineStyleModel = splitLineModel.getModel("lineStyle"); - var lineColors = lineStyleModel.get("color"); - lineColors = lineColors instanceof Array ? lineColors : [lineColors]; - var lineWidth = lineStyleModel.get("width"); - var gridRect = axisModel.coordinateSystem.getRect(); - var isHorizontal = axis.isHorizontal(); - var splitLines = []; - var lineCount = 0; - var ticksCoords = axis.getTicksCoords({ - tickModel: splitLineModel - }); - var p1 = []; - var p2 = []; - for (var i = 0; i < ticksCoords.length; ++i) { - var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord); - if (isHorizontal) { - p1[0] = tickCoord; - p1[1] = gridRect.y; - p2[0] = tickCoord; - p2[1] = gridRect.y + gridRect.height; - } else { - p1[0] = gridRect.x; - p1[1] = tickCoord; - p2[0] = gridRect.x + gridRect.width; - p2[1] = tickCoord; - } - var line = new Line_default({ - shape: { - x1: p1[0], - y1: p1[1], - x2: p2[0], - y2: p2[1] - }, - silent: true - }); - subPixelOptimizeLine2(line.shape, lineWidth); - var colorIndex = lineCount++ % lineColors.length; - splitLines[colorIndex] = splitLines[colorIndex] || []; - splitLines[colorIndex].push(line); - } - var lineStyle = lineStyleModel.getLineStyle(["color"]); - for (var i = 0; i < splitLines.length; ++i) { - group.add(mergePath2(splitLines[i], { - style: defaults({ - stroke: lineColors[i % lineColors.length] - }, lineStyle), - silent: true - })); - } - }, - splitArea: function(axisView, group, axisGroup, axisModel) { - rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, axisModel); - } - }; - var SingleAxisView_default = SingleAxisView; - - // node_modules/echarts/lib/coord/single/AxisModel.js - var SingleAxisModel = ( - /** @class */ - function(_super) { - __extends(SingleAxisModel2, _super); - function SingleAxisModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SingleAxisModel2.type; - return _this; - } - SingleAxisModel2.prototype.getCoordSysModel = function() { - return this; - }; - SingleAxisModel2.type = "singleAxis"; - SingleAxisModel2.layoutMode = "box"; - SingleAxisModel2.defaultOption = { - left: "5%", - top: "5%", - right: "5%", - bottom: "5%", - type: "value", - position: "bottom", - orient: "horizontal", - axisLine: { - show: true, - lineStyle: { - width: 1, - type: "solid" - } - }, - // Single coordinate system and single axis is the, - // which is used as the parent tooltip model. - // same model, so we set default tooltip show as true. - tooltip: { - show: true - }, - axisTick: { - show: true, - length: 6, - lineStyle: { - width: 1 - } - }, - axisLabel: { - show: true, - interval: "auto" - }, - splitLine: { - show: true, - lineStyle: { - type: "dashed", - opacity: 0.2 - } - } - }; - return SingleAxisModel2; - }(Component_default) - ); - mixin(SingleAxisModel, AxisModelCommonMixin.prototype); - var AxisModel_default2 = SingleAxisModel; - - // node_modules/echarts/lib/coord/single/SingleAxis.js - var SingleAxis = ( - /** @class */ - function(_super) { - __extends(SingleAxis2, _super); - function SingleAxis2(dim, scale4, coordExtent, axisType, position2) { - var _this = _super.call(this, dim, scale4, coordExtent) || this; - _this.type = axisType || "value"; - _this.position = position2 || "bottom"; - return _this; - } - SingleAxis2.prototype.isHorizontal = function() { - var position2 = this.position; - return position2 === "top" || position2 === "bottom"; - }; - SingleAxis2.prototype.pointToData = function(point, clamp3) { - return this.coordinateSystem.pointToData(point)[0]; - }; - return SingleAxis2; - }(Axis_default) - ); - var SingleAxis_default = SingleAxis; - - // node_modules/echarts/lib/coord/single/Single.js - var singleDimensions = ["single"]; - var Single = ( - /** @class */ - function() { - function Single2(axisModel, ecModel, api) { - this.type = "single"; - this.dimension = "single"; - this.dimensions = singleDimensions; - this.axisPointerEnabled = true; - this.model = axisModel; - this._init(axisModel, ecModel, api); - } - Single2.prototype._init = function(axisModel, ecModel, api) { - var dim = this.dimension; - var axis = new SingleAxis_default(dim, createScaleByModel(axisModel), [0, 0], axisModel.get("type"), axisModel.get("position")); - var isCategory2 = axis.type === "category"; - axis.onBand = isCategory2 && axisModel.get("boundaryGap"); - axis.inverse = axisModel.get("inverse"); - axis.orient = axisModel.get("orient"); - axisModel.axis = axis; - axis.model = axisModel; - axis.coordinateSystem = this; - this._axis = axis; - }; - Single2.prototype.update = function(ecModel, api) { - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.coordinateSystem === this) { - var data_1 = seriesModel.getData(); - each(data_1.mapDimensionsAll(this.dimension), function(dim) { - this._axis.scale.unionExtentFromData(data_1, dim); - }, this); - niceScaleExtent(this._axis.scale, this._axis.model); - } - }, this); - }; - Single2.prototype.resize = function(axisModel, api) { - this._rect = getLayoutRect({ - left: axisModel.get("left"), - top: axisModel.get("top"), - right: axisModel.get("right"), - bottom: axisModel.get("bottom"), - width: axisModel.get("width"), - height: axisModel.get("height") - }, { - width: api.getWidth(), - height: api.getHeight() - }); - this._adjustAxis(); - }; - Single2.prototype.getRect = function() { - return this._rect; - }; - Single2.prototype._adjustAxis = function() { - var rect = this._rect; - var axis = this._axis; - var isHorizontal = axis.isHorizontal(); - var extent3 = isHorizontal ? [0, rect.width] : [0, rect.height]; - var idx = axis.inverse ? 1 : 0; - axis.setExtent(extent3[idx], extent3[1 - idx]); - this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y); - }; - Single2.prototype._updateAxisTransform = function(axis, coordBase) { - var axisExtent = axis.getExtent(); - var extentSum = axisExtent[0] + axisExtent[1]; - var isHorizontal = axis.isHorizontal(); - axis.toGlobalCoord = isHorizontal ? function(coord) { - return coord + coordBase; - } : function(coord) { - return extentSum - coord + coordBase; - }; - axis.toLocalCoord = isHorizontal ? function(coord) { - return coord - coordBase; - } : function(coord) { - return extentSum - coord + coordBase; - }; - }; - Single2.prototype.getAxis = function() { - return this._axis; - }; - Single2.prototype.getBaseAxis = function() { - return this._axis; - }; - Single2.prototype.getAxes = function() { - return [this._axis]; - }; - Single2.prototype.getTooltipAxes = function() { - return { - baseAxes: [this.getAxis()], - // Empty otherAxes - otherAxes: [] - }; - }; - Single2.prototype.containPoint = function(point) { - var rect = this.getRect(); - var axis = this.getAxis(); - var orient = axis.orient; - if (orient === "horizontal") { - return axis.contain(axis.toLocalCoord(point[0])) && point[1] >= rect.y && point[1] <= rect.y + rect.height; - } else { - return axis.contain(axis.toLocalCoord(point[1])) && point[0] >= rect.y && point[0] <= rect.y + rect.height; - } - }; - Single2.prototype.pointToData = function(point) { - var axis = this.getAxis(); - return [axis.coordToData(axis.toLocalCoord(point[axis.orient === "horizontal" ? 0 : 1]))]; - }; - Single2.prototype.dataToPoint = function(val) { - var axis = this.getAxis(); - var rect = this.getRect(); - var pt = []; - var idx = axis.orient === "horizontal" ? 0 : 1; - if (val instanceof Array) { - val = val[0]; - } - pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val)); - pt[1 - idx] = idx === 0 ? rect.y + rect.height / 2 : rect.x + rect.width / 2; - return pt; - }; - Single2.prototype.convertToPixel = function(ecModel, finder, value) { - var coordSys = getCoordSys4(finder); - return coordSys === this ? this.dataToPoint(value) : null; - }; - Single2.prototype.convertFromPixel = function(ecModel, finder, pixel) { - var coordSys = getCoordSys4(finder); - return coordSys === this ? this.pointToData(pixel) : null; - }; - return Single2; - }() - ); - function getCoordSys4(finder) { - var seriesModel = finder.seriesModel; - var singleModel = finder.singleAxisModel; - return singleModel && singleModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem; - } - var Single_default = Single; - - // node_modules/echarts/lib/coord/single/singleCreator.js - function create3(ecModel, api) { - var singles = []; - ecModel.eachComponent("singleAxis", function(axisModel, idx) { - var single = new Single_default(axisModel, ecModel, api); - single.name = "single_" + idx; - single.resize(axisModel, api); - axisModel.coordinateSystem = single; - singles.push(single); - }); - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.get("coordinateSystem") === "singleAxis") { - var singleAxisModel = seriesModel.getReferringComponents("singleAxis", SINGLE_REFERRING).models[0]; - seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem; - } - }); - return singles; - } - var singleCreator = { - create: create3, - dimensions: singleDimensions - }; - var singleCreator_default = singleCreator; - - // node_modules/echarts/lib/component/axisPointer/SingleAxisPointer.js - var XY = ["x", "y"]; - var WH = ["width", "height"]; - var SingleAxisPointer = ( - /** @class */ - function(_super) { - __extends(SingleAxisPointer2, _super); - function SingleAxisPointer2() { - return _super !== null && _super.apply(this, arguments) || this; - } - SingleAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) { - var axis = axisModel.axis; - var coordSys = axis.coordinateSystem; - var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis)); - var pixelValue = coordSys.dataToPoint(value)[0]; - var axisPointerType = axisPointerModel.get("type"); - if (axisPointerType && axisPointerType !== "none") { - var elStyle = buildElStyle(axisPointerModel); - var pointerOption = pointerShapeBuilder3[axisPointerType](axis, pixelValue, otherExtent); - pointerOption.style = elStyle; - elOption.graphicKey = pointerOption.type; - elOption.pointer = pointerOption; - } - var layoutInfo = layout3(axisModel); - buildCartesianSingleLabelElOption( - // @ts-ignore - value, - elOption, - layoutInfo, - axisModel, - axisPointerModel, - api - ); - }; - SingleAxisPointer2.prototype.getHandleTransform = function(value, axisModel, axisPointerModel) { - var layoutInfo = layout3(axisModel, { - labelInside: false - }); - layoutInfo.labelMargin = axisPointerModel.get(["handle", "margin"]); - var position2 = getTransformedPosition(axisModel.axis, value, layoutInfo); - return { - x: position2[0], - y: position2[1], - rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0) - }; - }; - SingleAxisPointer2.prototype.updateHandleTransform = function(transform2, delta, axisModel, axisPointerModel) { - var axis = axisModel.axis; - var coordSys = axis.coordinateSystem; - var dimIndex = getPointDimIndex(axis); - var axisExtent = getGlobalExtent(coordSys, dimIndex); - var currPosition = [transform2.x, transform2.y]; - currPosition[dimIndex] += delta[dimIndex]; - currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]); - currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]); - var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex); - var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2; - var cursorPoint = [cursorOtherValue, cursorOtherValue]; - cursorPoint[dimIndex] = currPosition[dimIndex]; - return { - x: currPosition[0], - y: currPosition[1], - rotation: transform2.rotation, - cursorPoint, - tooltipOption: { - verticalAlign: "middle" - } - }; - }; - return SingleAxisPointer2; - }(BaseAxisPointer_default) - ); - var pointerShapeBuilder3 = { - line: function(axis, pixelValue, otherExtent) { - var targetShape = makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex(axis)); - return { - type: "Line", - subPixelOptimize: true, - shape: targetShape - }; - }, - shadow: function(axis, pixelValue, otherExtent) { - var bandWidth = axis.getBandWidth(); - var span = otherExtent[1] - otherExtent[0]; - return { - type: "Rect", - shape: makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getPointDimIndex(axis)) - }; - } - }; - function getPointDimIndex(axis) { - return axis.isHorizontal() ? 0 : 1; - } - function getGlobalExtent(coordSys, dimIndex) { - var rect = coordSys.getRect(); - return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]]; - } - var SingleAxisPointer_default = SingleAxisPointer; - - // node_modules/echarts/lib/component/singleAxis/install.js - var SingleView = ( - /** @class */ - function(_super) { - __extends(SingleView2, _super); - function SingleView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SingleView2.type; - return _this; - } - SingleView2.type = "single"; - return SingleView2; - }(Component_default2) - ); - function install32(registers) { - use(install29); - AxisView_default.registerAxisPointerClass("SingleAxisPointer", SingleAxisPointer_default); - registers.registerComponentView(SingleView); - registers.registerComponentView(SingleAxisView_default); - registers.registerComponentModel(AxisModel_default2); - axisModelCreator(registers, "single", AxisModel_default2, AxisModel_default2.defaultOption); - registers.registerCoordinateSystem("single", singleCreator_default); - } - - // node_modules/echarts/lib/coord/calendar/CalendarModel.js - var CalendarModel = ( - /** @class */ - function(_super) { - __extends(CalendarModel2, _super); - function CalendarModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CalendarModel2.type; - return _this; - } - CalendarModel2.prototype.init = function(option, parentModel, ecModel) { - var inputPositionParams = getLayoutParams(option); - _super.prototype.init.apply(this, arguments); - mergeAndNormalizeLayoutParams(option, inputPositionParams); - }; - CalendarModel2.prototype.mergeOption = function(option) { - _super.prototype.mergeOption.apply(this, arguments); - mergeAndNormalizeLayoutParams(this.option, option); - }; - CalendarModel2.prototype.getCellSize = function() { - return this.option.cellSize; - }; - CalendarModel2.type = "calendar"; - CalendarModel2.defaultOption = { - // zlevel: 0, - z: 2, - left: 80, - top: 60, - cellSize: 20, - // horizontal vertical - orient: "horizontal", - // month separate line style - splitLine: { - show: true, - lineStyle: { - color: "#000", - width: 1, - type: "solid" - } - }, - // rect style temporarily unused emphasis - itemStyle: { - color: "#fff", - borderWidth: 1, - borderColor: "#ccc" - }, - // week text style - dayLabel: { - show: true, - firstDay: 0, - // start end - position: "start", - margin: "50%", - color: "#000" - }, - // month text style - monthLabel: { - show: true, - // start end - position: "start", - margin: 5, - // center or left - align: "center", - formatter: null, - color: "#000" - }, - // year text style - yearLabel: { - show: true, - // top bottom left right - position: null, - margin: 30, - formatter: null, - color: "#ccc", - fontFamily: "sans-serif", - fontWeight: "bolder", - fontSize: 20 - } - }; - return CalendarModel2; - }(Component_default) - ); - function mergeAndNormalizeLayoutParams(target, raw) { - var cellSize = target.cellSize; - var cellSizeArr; - if (!isArray(cellSize)) { - cellSizeArr = target.cellSize = [cellSize, cellSize]; - } else { - cellSizeArr = cellSize; - } - if (cellSizeArr.length === 1) { - cellSizeArr[1] = cellSizeArr[0]; - } - var ignoreSize = map([0, 1], function(hvIdx) { - if (sizeCalculable(raw, hvIdx)) { - cellSizeArr[hvIdx] = "auto"; - } - return cellSizeArr[hvIdx] != null && cellSizeArr[hvIdx] !== "auto"; - }); - mergeLayoutParam(target, raw, { - type: "box", - ignoreSize - }); - } - var CalendarModel_default = CalendarModel; - - // node_modules/echarts/lib/component/calendar/CalendarView.js - var CalendarView = ( - /** @class */ - function(_super) { - __extends(CalendarView2, _super); - function CalendarView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = CalendarView2.type; - return _this; - } - CalendarView2.prototype.render = function(calendarModel, ecModel, api) { - var group = this.group; - group.removeAll(); - var coordSys = calendarModel.coordinateSystem; - var rangeData = coordSys.getRangeInfo(); - var orient = coordSys.getOrient(); - var localeModel = ecModel.getLocaleModel(); - this._renderDayRect(calendarModel, rangeData, group); - this._renderLines(calendarModel, rangeData, orient, group); - this._renderYearText(calendarModel, rangeData, orient, group); - this._renderMonthText(calendarModel, localeModel, orient, group); - this._renderWeekText(calendarModel, localeModel, rangeData, orient, group); - }; - CalendarView2.prototype._renderDayRect = function(calendarModel, rangeData, group) { - var coordSys = calendarModel.coordinateSystem; - var itemRectStyleModel = calendarModel.getModel("itemStyle").getItemStyle(); - var sw = coordSys.getCellWidth(); - var sh = coordSys.getCellHeight(); - for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) { - var point = coordSys.dataToRect([i], false).tl; - var rect = new Rect_default({ - shape: { - x: point[0], - y: point[1], - width: sw, - height: sh - }, - cursor: "default", - style: itemRectStyleModel - }); - group.add(rect); - } - }; - CalendarView2.prototype._renderLines = function(calendarModel, rangeData, orient, group) { - var self2 = this; - var coordSys = calendarModel.coordinateSystem; - var lineStyleModel = calendarModel.getModel(["splitLine", "lineStyle"]).getLineStyle(); - var show = calendarModel.get(["splitLine", "show"]); - var lineWidth = lineStyleModel.lineWidth; - this._tlpoints = []; - this._blpoints = []; - this._firstDayOfMonth = []; - this._firstDayPoints = []; - var firstDay = rangeData.start; - for (var i = 0; firstDay.time <= rangeData.end.time; i++) { - addPoints(firstDay.formatedDate); - if (i === 0) { - firstDay = coordSys.getDateInfo(rangeData.start.y + "-" + rangeData.start.m); - } - var date = firstDay.date; - date.setMonth(date.getMonth() + 1); - firstDay = coordSys.getDateInfo(date); - } - addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate); - function addPoints(date2) { - self2._firstDayOfMonth.push(coordSys.getDateInfo(date2)); - self2._firstDayPoints.push(coordSys.dataToRect([date2], false).tl); - var points4 = self2._getLinePointsOfOneWeek(calendarModel, date2, orient); - self2._tlpoints.push(points4[0]); - self2._blpoints.push(points4[points4.length - 1]); - show && self2._drawSplitline(points4, lineStyleModel, group); - } - show && this._drawSplitline(self2._getEdgesPoints(self2._tlpoints, lineWidth, orient), lineStyleModel, group); - show && this._drawSplitline(self2._getEdgesPoints(self2._blpoints, lineWidth, orient), lineStyleModel, group); - }; - CalendarView2.prototype._getEdgesPoints = function(points4, lineWidth, orient) { - var rs = [points4[0].slice(), points4[points4.length - 1].slice()]; - var idx = orient === "horizontal" ? 0 : 1; - rs[0][idx] = rs[0][idx] - lineWidth / 2; - rs[1][idx] = rs[1][idx] + lineWidth / 2; - return rs; - }; - CalendarView2.prototype._drawSplitline = function(points4, lineStyle, group) { - var poyline = new Polyline_default({ - z2: 20, - shape: { - points: points4 - }, - style: lineStyle - }); - group.add(poyline); - }; - CalendarView2.prototype._getLinePointsOfOneWeek = function(calendarModel, date, orient) { - var coordSys = calendarModel.coordinateSystem; - var parsedDate = coordSys.getDateInfo(date); - var points4 = []; - for (var i = 0; i < 7; i++) { - var tmpD = coordSys.getNextNDay(parsedDate.time, i); - var point = coordSys.dataToRect([tmpD.time], false); - points4[2 * tmpD.day] = point.tl; - points4[2 * tmpD.day + 1] = point[orient === "horizontal" ? "bl" : "tr"]; - } - return points4; - }; - CalendarView2.prototype._formatterLabel = function(formatter, params) { - if (isString(formatter) && formatter) { - return formatTplSimple(formatter, params); - } - if (isFunction(formatter)) { - return formatter(params); - } - return params.nameMap; - }; - CalendarView2.prototype._yearTextPositionControl = function(textEl, point, orient, position2, margin) { - var x = point[0]; - var y = point[1]; - var aligns = ["center", "bottom"]; - if (position2 === "bottom") { - y += margin; - aligns = ["center", "top"]; - } else if (position2 === "left") { - x -= margin; - } else if (position2 === "right") { - x += margin; - aligns = ["center", "top"]; - } else { - y -= margin; - } - var rotate2 = 0; - if (position2 === "left" || position2 === "right") { - rotate2 = Math.PI / 2; - } - return { - rotation: rotate2, - x, - y, - style: { - align: aligns[0], - verticalAlign: aligns[1] - } - }; - }; - CalendarView2.prototype._renderYearText = function(calendarModel, rangeData, orient, group) { - var yearLabel = calendarModel.getModel("yearLabel"); - if (!yearLabel.get("show")) { - return; - } - var margin = yearLabel.get("margin"); - var pos = yearLabel.get("position"); - if (!pos) { - pos = orient !== "horizontal" ? "top" : "left"; - } - var points4 = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]]; - var xc = (points4[0][0] + points4[1][0]) / 2; - var yc = (points4[0][1] + points4[1][1]) / 2; - var idx = orient === "horizontal" ? 0 : 1; - var posPoints = { - top: [xc, points4[idx][1]], - bottom: [xc, points4[1 - idx][1]], - left: [points4[1 - idx][0], yc], - right: [points4[idx][0], yc] - }; - var name = rangeData.start.y; - if (+rangeData.end.y > +rangeData.start.y) { - name = name + "-" + rangeData.end.y; - } - var formatter = yearLabel.get("formatter"); - var params = { - start: rangeData.start.y, - end: rangeData.end.y, - nameMap: name - }; - var content = this._formatterLabel(formatter, params); - var yearText = new Text_default({ - z2: 30, - style: createTextStyle(yearLabel, { - text: content - }), - silent: yearLabel.get("silent") - }); - yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin)); - group.add(yearText); - }; - CalendarView2.prototype._monthTextPositionControl = function(point, isCenter, orient, position2, margin) { - var align = "left"; - var vAlign = "top"; - var x = point[0]; - var y = point[1]; - if (orient === "horizontal") { - y = y + margin; - if (isCenter) { - align = "center"; - } - if (position2 === "start") { - vAlign = "bottom"; - } - } else { - x = x + margin; - if (isCenter) { - vAlign = "middle"; - } - if (position2 === "start") { - align = "right"; - } - } - return { - x, - y, - align, - verticalAlign: vAlign - }; - }; - CalendarView2.prototype._renderMonthText = function(calendarModel, localeModel, orient, group) { - var monthLabel = calendarModel.getModel("monthLabel"); - if (!monthLabel.get("show")) { - return; - } - var nameMap = monthLabel.get("nameMap"); - var margin = monthLabel.get("margin"); - var pos = monthLabel.get("position"); - var align = monthLabel.get("align"); - var termPoints = [this._tlpoints, this._blpoints]; - if (!nameMap || isString(nameMap)) { - if (nameMap) { - localeModel = getLocaleModel(nameMap) || localeModel; - } - nameMap = localeModel.get(["time", "monthAbbr"]) || []; - } - var idx = pos === "start" ? 0 : 1; - var axis = orient === "horizontal" ? 0 : 1; - margin = pos === "start" ? -margin : margin; - var isCenter = align === "center"; - var labelSilent = monthLabel.get("silent"); - for (var i = 0; i < termPoints[idx].length - 1; i++) { - var tmp = termPoints[idx][i].slice(); - var firstDay = this._firstDayOfMonth[i]; - if (isCenter) { - var firstDayPoints = this._firstDayPoints[i]; - tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2; - } - var formatter = monthLabel.get("formatter"); - var name_1 = nameMap[+firstDay.m - 1]; - var params = { - yyyy: firstDay.y, - yy: (firstDay.y + "").slice(2), - MM: firstDay.m, - M: +firstDay.m, - nameMap: name_1 - }; - var content = this._formatterLabel(formatter, params); - var monthText = new Text_default({ - z2: 30, - style: extend(createTextStyle(monthLabel, { - text: content - }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin)), - silent: labelSilent - }); - group.add(monthText); - } - }; - CalendarView2.prototype._weekTextPositionControl = function(point, orient, position2, margin, cellSize) { - var align = "center"; - var vAlign = "middle"; - var x = point[0]; - var y = point[1]; - var isStart = position2 === "start"; - if (orient === "horizontal") { - x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2; - align = isStart ? "right" : "left"; - } else { - y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2; - vAlign = isStart ? "bottom" : "top"; - } - return { - x, - y, - align, - verticalAlign: vAlign - }; - }; - CalendarView2.prototype._renderWeekText = function(calendarModel, localeModel, rangeData, orient, group) { - var dayLabel = calendarModel.getModel("dayLabel"); - if (!dayLabel.get("show")) { - return; - } - var coordSys = calendarModel.coordinateSystem; - var pos = dayLabel.get("position"); - var nameMap = dayLabel.get("nameMap"); - var margin = dayLabel.get("margin"); - var firstDayOfWeek = coordSys.getFirstDayOfWeek(); - if (!nameMap || isString(nameMap)) { - if (nameMap) { - localeModel = getLocaleModel(nameMap) || localeModel; - } - var dayOfWeekShort = localeModel.get(["time", "dayOfWeekShort"]); - nameMap = dayOfWeekShort || map(localeModel.get(["time", "dayOfWeekAbbr"]), function(val) { - return val[0]; - }); - } - var start3 = coordSys.getNextNDay(rangeData.end.time, 7 - rangeData.lweek).time; - var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()]; - margin = parsePercent2(margin, Math.min(cellSize[1], cellSize[0])); - if (pos === "start") { - start3 = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time; - margin = -margin; - } - var labelSilent = dayLabel.get("silent"); - for (var i = 0; i < 7; i++) { - var tmpD = coordSys.getNextNDay(start3, i); - var point = coordSys.dataToRect([tmpD.time], false).center; - var day = i; - day = Math.abs((i + firstDayOfWeek) % 7); - var weekText = new Text_default({ - z2: 30, - style: extend(createTextStyle(dayLabel, { - text: nameMap[day] - }), this._weekTextPositionControl(point, orient, pos, margin, cellSize)), - silent: labelSilent - }); - group.add(weekText); - } - }; - CalendarView2.type = "calendar"; - return CalendarView2; - }(Component_default2) - ); - var CalendarView_default = CalendarView; - - // node_modules/echarts/lib/coord/calendar/Calendar.js - var PROXIMATE_ONE_DAY = 864e5; - var Calendar = ( - /** @class */ - function() { - function Calendar2(calendarModel, ecModel, api) { - this.type = "calendar"; - this.dimensions = Calendar2.dimensions; - this.getDimensionsInfo = Calendar2.getDimensionsInfo; - this._model = calendarModel; - } - Calendar2.getDimensionsInfo = function() { - return [{ - name: "time", - type: "time" - }, "value"]; - }; - Calendar2.prototype.getRangeInfo = function() { - return this._rangeInfo; - }; - Calendar2.prototype.getModel = function() { - return this._model; - }; - Calendar2.prototype.getRect = function() { - return this._rect; - }; - Calendar2.prototype.getCellWidth = function() { - return this._sw; - }; - Calendar2.prototype.getCellHeight = function() { - return this._sh; - }; - Calendar2.prototype.getOrient = function() { - return this._orient; - }; - Calendar2.prototype.getFirstDayOfWeek = function() { - return this._firstDayOfWeek; - }; - Calendar2.prototype.getDateInfo = function(date) { - date = parseDate(date); - var y = date.getFullYear(); - var m2 = date.getMonth() + 1; - var mStr = m2 < 10 ? "0" + m2 : "" + m2; - var d = date.getDate(); - var dStr = d < 10 ? "0" + d : "" + d; - var day = date.getDay(); - day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7); - return { - y: y + "", - m: mStr, - d: dStr, - day, - time: date.getTime(), - formatedDate: y + "-" + mStr + "-" + dStr, - date - }; - }; - Calendar2.prototype.getNextNDay = function(date, n) { - n = n || 0; - if (n === 0) { - return this.getDateInfo(date); - } - date = new Date(this.getDateInfo(date).time); - date.setDate(date.getDate() + n); - return this.getDateInfo(date); - }; - Calendar2.prototype.update = function(ecModel, api) { - this._firstDayOfWeek = +this._model.getModel("dayLabel").get("firstDay"); - this._orient = this._model.get("orient"); - this._lineWidth = this._model.getModel("itemStyle").getItemStyle().lineWidth || 0; - this._rangeInfo = this._getRangeInfo(this._initRangeOption()); - var weeks = this._rangeInfo.weeks || 1; - var whNames = ["width", "height"]; - var cellSize = this._model.getCellSize().slice(); - var layoutParams = this._model.getBoxLayoutParams(); - var cellNumbers = this._orient === "horizontal" ? [weeks, 7] : [7, weeks]; - each([0, 1], function(idx) { - if (cellSizeSpecified(cellSize, idx)) { - layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx]; - } - }); - var whGlobal = { - width: api.getWidth(), - height: api.getHeight() - }; - var calendarRect = this._rect = getLayoutRect(layoutParams, whGlobal); - each([0, 1], function(idx) { - if (!cellSizeSpecified(cellSize, idx)) { - cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx]; - } - }); - function cellSizeSpecified(cellSize2, idx) { - return cellSize2[idx] != null && cellSize2[idx] !== "auto"; - } - this._sw = cellSize[0]; - this._sh = cellSize[1]; - }; - Calendar2.prototype.dataToPoint = function(data, clamp3) { - isArray(data) && (data = data[0]); - clamp3 == null && (clamp3 = true); - var dayInfo = this.getDateInfo(data); - var range = this._rangeInfo; - var date = dayInfo.formatedDate; - if (clamp3 && !(dayInfo.time >= range.start.time && dayInfo.time < range.end.time + PROXIMATE_ONE_DAY)) { - return [NaN, NaN]; - } - var week = dayInfo.day; - var nthWeek = this._getRangeInfo([range.start.time, date]).nthWeek; - if (this._orient === "vertical") { - return [this._rect.x + week * this._sw + this._sw / 2, this._rect.y + nthWeek * this._sh + this._sh / 2]; - } - return [this._rect.x + nthWeek * this._sw + this._sw / 2, this._rect.y + week * this._sh + this._sh / 2]; - }; - Calendar2.prototype.pointToData = function(point) { - var date = this.pointToDate(point); - return date && date.time; - }; - Calendar2.prototype.dataToRect = function(data, clamp3) { - var point = this.dataToPoint(data, clamp3); - return { - contentShape: { - x: point[0] - (this._sw - this._lineWidth) / 2, - y: point[1] - (this._sh - this._lineWidth) / 2, - width: this._sw - this._lineWidth, - height: this._sh - this._lineWidth - }, - center: point, - tl: [point[0] - this._sw / 2, point[1] - this._sh / 2], - tr: [point[0] + this._sw / 2, point[1] - this._sh / 2], - br: [point[0] + this._sw / 2, point[1] + this._sh / 2], - bl: [point[0] - this._sw / 2, point[1] + this._sh / 2] - }; - }; - Calendar2.prototype.pointToDate = function(point) { - var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1; - var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1; - var range = this._rangeInfo.range; - if (this._orient === "vertical") { - return this._getDateByWeeksAndDay(nthY, nthX - 1, range); - } - return this._getDateByWeeksAndDay(nthX, nthY - 1, range); - }; - Calendar2.prototype.convertToPixel = function(ecModel, finder, value) { - var coordSys = getCoordSys5(finder); - return coordSys === this ? coordSys.dataToPoint(value) : null; - }; - Calendar2.prototype.convertFromPixel = function(ecModel, finder, pixel) { - var coordSys = getCoordSys5(finder); - return coordSys === this ? coordSys.pointToData(pixel) : null; - }; - Calendar2.prototype.containPoint = function(point) { - console.warn("Not implemented."); - return false; - }; - Calendar2.prototype._initRangeOption = function() { - var range = this._model.get("range"); - var normalizedRange; - if (isArray(range) && range.length === 1) { - range = range[0]; - } - if (!isArray(range)) { - var rangeStr = range.toString(); - if (/^\d{4}$/.test(rangeStr)) { - normalizedRange = [rangeStr + "-01-01", rangeStr + "-12-31"]; - } - if (/^\d{4}[\/|-]\d{1,2}$/.test(rangeStr)) { - var start3 = this.getDateInfo(rangeStr); - var firstDay = start3.date; - firstDay.setMonth(firstDay.getMonth() + 1); - var end2 = this.getNextNDay(firstDay, -1); - normalizedRange = [start3.formatedDate, end2.formatedDate]; - } - if (/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(rangeStr)) { - normalizedRange = [rangeStr, rangeStr]; - } - } else { - normalizedRange = range; - } - if (!normalizedRange) { - if (true) { - logError("Invalid date range."); - } - return range; - } - var tmp = this._getRangeInfo(normalizedRange); - if (tmp.start.time > tmp.end.time) { - normalizedRange.reverse(); - } - return normalizedRange; - }; - Calendar2.prototype._getRangeInfo = function(range) { - var parsedRange = [this.getDateInfo(range[0]), this.getDateInfo(range[1])]; - var reversed; - if (parsedRange[0].time > parsedRange[1].time) { - reversed = true; - parsedRange.reverse(); - } - var allDay = Math.floor(parsedRange[1].time / PROXIMATE_ONE_DAY) - Math.floor(parsedRange[0].time / PROXIMATE_ONE_DAY) + 1; - var date = new Date(parsedRange[0].time); - var startDateNum = date.getDate(); - var endDateNum = parsedRange[1].date.getDate(); - date.setDate(startDateNum + allDay - 1); - var dateNum = date.getDate(); - if (dateNum !== endDateNum) { - var sign = date.getTime() - parsedRange[1].time > 0 ? 1 : -1; - while ((dateNum = date.getDate()) !== endDateNum && (date.getTime() - parsedRange[1].time) * sign > 0) { - allDay -= sign; - date.setDate(dateNum - sign); - } - } - var weeks = Math.floor((allDay + parsedRange[0].day + 6) / 7); - var nthWeek = reversed ? -weeks + 1 : weeks - 1; - reversed && parsedRange.reverse(); - return { - range: [parsedRange[0].formatedDate, parsedRange[1].formatedDate], - start: parsedRange[0], - end: parsedRange[1], - allDay, - weeks, - // From 0. - nthWeek, - fweek: parsedRange[0].day, - lweek: parsedRange[1].day - }; - }; - Calendar2.prototype._getDateByWeeksAndDay = function(nthWeek, day, range) { - var rangeInfo = this._getRangeInfo(range); - if (nthWeek > rangeInfo.weeks || nthWeek === 0 && day < rangeInfo.fweek || nthWeek === rangeInfo.weeks && day > rangeInfo.lweek) { - return null; - } - var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day; - var date = new Date(rangeInfo.start.time); - date.setDate(+rangeInfo.start.d + nthDay); - return this.getDateInfo(date); - }; - Calendar2.create = function(ecModel, api) { - var calendarList = []; - ecModel.eachComponent("calendar", function(calendarModel) { - var calendar = new Calendar2(calendarModel, ecModel, api); - calendarList.push(calendar); - calendarModel.coordinateSystem = calendar; - }); - ecModel.eachSeries(function(calendarSeries) { - if (calendarSeries.get("coordinateSystem") === "calendar") { - calendarSeries.coordinateSystem = calendarList[calendarSeries.get("calendarIndex") || 0]; - } - }); - return calendarList; - }; - Calendar2.dimensions = ["time", "value"]; - return Calendar2; - }() - ); - function getCoordSys5(finder) { - var calendarModel = finder.calendarModel; - var seriesModel = finder.seriesModel; - var coordSys = calendarModel ? calendarModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem : null; - return coordSys; - } - var Calendar_default = Calendar; - - // node_modules/echarts/lib/component/calendar/install.js - function install33(registers) { - registers.registerComponentModel(CalendarModel_default); - registers.registerComponentView(CalendarView_default); - registers.registerCoordinateSystem("calendar", Calendar_default); - } - - // node_modules/echarts/lib/component/graphic/GraphicModel.js - function setKeyInfoToNewElOption(resultItem, newElOption) { - var existElOption = resultItem.existing; - newElOption.id = resultItem.keyInfo.id; - !newElOption.type && existElOption && (newElOption.type = existElOption.type); - if (newElOption.parentId == null) { - var newElParentOption = newElOption.parentOption; - if (newElParentOption) { - newElOption.parentId = newElParentOption.id; - } else if (existElOption) { - newElOption.parentId = existElOption.parentId; - } - } - newElOption.parentOption = null; - } - function isSetLoc(obj, props) { - var isSet; - each(props, function(prop) { - obj[prop] != null && obj[prop] !== "auto" && (isSet = true); - }); - return isSet; - } - function mergeNewElOptionToExist(existList, index, newElOption) { - var newElOptCopy = extend({}, newElOption); - var existElOption = existList[index]; - var $action = newElOption.$action || "merge"; - if ($action === "merge") { - if (existElOption) { - if (true) { - var newType = newElOption.type; - assert(!newType || existElOption.type === newType, 'Please set $action: "replace" to change `type`'); - } - merge(existElOption, newElOptCopy, true); - mergeLayoutParam(existElOption, newElOptCopy, { - ignoreSize: true - }); - copyLayoutParams(newElOption, existElOption); - copyTransitionInfo(newElOption, existElOption); - copyTransitionInfo(newElOption, existElOption, "shape"); - copyTransitionInfo(newElOption, existElOption, "style"); - copyTransitionInfo(newElOption, existElOption, "extra"); - newElOption.clipPath = existElOption.clipPath; - } else { - existList[index] = newElOptCopy; - } - } else if ($action === "replace") { - existList[index] = newElOptCopy; - } else if ($action === "remove") { - existElOption && (existList[index] = null); - } - } - var TRANSITION_PROPS_TO_COPY = ["transition", "enterFrom", "leaveTo"]; - var ROOT_TRANSITION_PROPS_TO_COPY = TRANSITION_PROPS_TO_COPY.concat(["enterAnimation", "updateAnimation", "leaveAnimation"]); - function copyTransitionInfo(target, source, targetProp) { - if (targetProp) { - if (!target[targetProp] && source[targetProp]) { - target[targetProp] = {}; - } - target = target[targetProp]; - source = source[targetProp]; - } - if (!target || !source) { - return; - } - var props = targetProp ? TRANSITION_PROPS_TO_COPY : ROOT_TRANSITION_PROPS_TO_COPY; - for (var i = 0; i < props.length; i++) { - var prop = props[i]; - if (target[prop] == null && source[prop] != null) { - target[prop] = source[prop]; - } - } - } - function setLayoutInfoToExist(existItem, newElOption) { - if (!existItem) { - return; - } - existItem.hv = newElOption.hv = [ - // Rigid body, don't care about `width`. - isSetLoc(newElOption, ["left", "right"]), - // Rigid body, don't care about `height`. - isSetLoc(newElOption, ["top", "bottom"]) - ]; - if (existItem.type === "group") { - var existingGroupOpt = existItem; - var newGroupOpt = newElOption; - existingGroupOpt.width == null && (existingGroupOpt.width = newGroupOpt.width = 0); - existingGroupOpt.height == null && (existingGroupOpt.height = newGroupOpt.height = 0); - } - } - var GraphicComponentModel = ( - /** @class */ - function(_super) { - __extends(GraphicComponentModel2, _super); - function GraphicComponentModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GraphicComponentModel2.type; - _this.preventAutoZ = true; - return _this; - } - GraphicComponentModel2.prototype.mergeOption = function(option, ecModel) { - var elements = this.option.elements; - this.option.elements = null; - _super.prototype.mergeOption.call(this, option, ecModel); - this.option.elements = elements; - }; - GraphicComponentModel2.prototype.optionUpdated = function(newOption, isInit) { - var thisOption = this.option; - var newList = (isInit ? thisOption : newOption).elements; - var existList = thisOption.elements = isInit ? [] : thisOption.elements; - var flattenedList = []; - this._flatten(newList, flattenedList, null); - var mappingResult = mappingToExists(existList, flattenedList, "normalMerge"); - var elOptionsToUpdate = this._elOptionsToUpdate = []; - each(mappingResult, function(resultItem, index) { - var newElOption = resultItem.newOption; - if (true) { - assert(isObject(newElOption) || resultItem.existing, "Empty graphic option definition"); - } - if (!newElOption) { - return; - } - elOptionsToUpdate.push(newElOption); - setKeyInfoToNewElOption(resultItem, newElOption); - mergeNewElOptionToExist(existList, index, newElOption); - setLayoutInfoToExist(existList[index], newElOption); - }, this); - thisOption.elements = filter(existList, function(item) { - item && delete item.$action; - return item != null; - }); - }; - GraphicComponentModel2.prototype._flatten = function(optionList, result, parentOption) { - each(optionList, function(option) { - if (!option) { - return; - } - if (parentOption) { - option.parentOption = parentOption; - } - result.push(option); - var children = option.children; - if (children && children.length) { - this._flatten(children, result, option); - } - delete option.children; - }, this); - }; - GraphicComponentModel2.prototype.useElOptionsToUpdate = function() { - var els = this._elOptionsToUpdate; - this._elOptionsToUpdate = null; - return els; - }; - GraphicComponentModel2.type = "graphic"; - GraphicComponentModel2.defaultOption = { - elements: [] - // parentId: null - }; - return GraphicComponentModel2; - }(Component_default) - ); - - // node_modules/echarts/lib/component/graphic/GraphicView.js - var nonShapeGraphicElements = { - // Reserved but not supported in graphic component. - path: null, - compoundPath: null, - // Supported in graphic component. - group: Group_default, - image: Image_default, - text: Text_default - }; - var inner15 = makeInner(); - var GraphicComponentView = ( - /** @class */ - function(_super) { - __extends(GraphicComponentView2, _super); - function GraphicComponentView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = GraphicComponentView2.type; - return _this; - } - GraphicComponentView2.prototype.init = function() { - this._elMap = createHashMap(); - }; - GraphicComponentView2.prototype.render = function(graphicModel, ecModel, api) { - if (graphicModel !== this._lastGraphicModel) { - this._clear(); - } - this._lastGraphicModel = graphicModel; - this._updateElements(graphicModel); - this._relocate(graphicModel, api); - }; - GraphicComponentView2.prototype._updateElements = function(graphicModel) { - var elOptionsToUpdate = graphicModel.useElOptionsToUpdate(); - if (!elOptionsToUpdate) { - return; - } - var elMap = this._elMap; - var rootGroup = this.group; - var globalZ = graphicModel.get("z"); - var globalZLevel = graphicModel.get("zlevel"); - each(elOptionsToUpdate, function(elOption) { - var id = convertOptionIdName(elOption.id, null); - var elExisting = id != null ? elMap.get(id) : null; - var parentId = convertOptionIdName(elOption.parentId, null); - var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup; - var elType = elOption.type; - var elOptionStyle = elOption.style; - if (elType === "text" && elOptionStyle) { - if (elOption.hv && elOption.hv[1]) { - elOptionStyle.textVerticalAlign = elOptionStyle.textBaseline = elOptionStyle.verticalAlign = elOptionStyle.align = null; - } - } - var textContentOption = elOption.textContent; - var textConfig = elOption.textConfig; - if (elOptionStyle && isEC4CompatibleStyle(elOptionStyle, elType, !!textConfig, !!textContentOption)) { - var convertResult = convertFromEC4CompatibleStyle(elOptionStyle, elType, true); - if (!textConfig && convertResult.textConfig) { - textConfig = elOption.textConfig = convertResult.textConfig; - } - if (!textContentOption && convertResult.textContent) { - textContentOption = convertResult.textContent; - } - } - var elOptionCleaned = getCleanedElOption(elOption); - if (true) { - elExisting && assert(targetElParent === elExisting.parent, "Changing parent is not supported."); - } - var $action = elOption.$action || "merge"; - var isMerge = $action === "merge"; - var isReplace = $action === "replace"; - if (isMerge) { - var isInit = !elExisting; - var el_1 = elExisting; - if (isInit) { - el_1 = createEl2(id, targetElParent, elOption.type, elMap); - } else { - el_1 && (inner15(el_1).isNew = false); - stopPreviousKeyframeAnimationAndRestore(el_1); - } - if (el_1) { - applyUpdateTransition(el_1, elOptionCleaned, graphicModel, { - isInit - }); - updateCommonAttrs(el_1, elOption, globalZ, globalZLevel); - } - } else if (isReplace) { - removeEl(elExisting, elOption, elMap, graphicModel); - var el_2 = createEl2(id, targetElParent, elOption.type, elMap); - if (el_2) { - applyUpdateTransition(el_2, elOptionCleaned, graphicModel, { - isInit: true - }); - updateCommonAttrs(el_2, elOption, globalZ, globalZLevel); - } - } else if ($action === "remove") { - updateLeaveTo(elExisting, elOption); - removeEl(elExisting, elOption, elMap, graphicModel); - } - var el = elMap.get(id); - if (el && textContentOption) { - if (isMerge) { - var textContentExisting = el.getTextContent(); - textContentExisting ? textContentExisting.attr(textContentOption) : el.setTextContent(new Text_default(textContentOption)); - } else if (isReplace) { - el.setTextContent(new Text_default(textContentOption)); - } - } - if (el) { - var clipPathOption = elOption.clipPath; - if (clipPathOption) { - var clipPathType = clipPathOption.type; - var clipPath = void 0; - var isInit = false; - if (isMerge) { - var oldClipPath = el.getClipPath(); - isInit = !oldClipPath || inner15(oldClipPath).type !== clipPathType; - clipPath = isInit ? newEl(clipPathType) : oldClipPath; - } else if (isReplace) { - isInit = true; - clipPath = newEl(clipPathType); - } - el.setClipPath(clipPath); - applyUpdateTransition(clipPath, clipPathOption, graphicModel, { - isInit - }); - applyKeyframeAnimation(clipPath, clipPathOption.keyframeAnimation, graphicModel); - } - var elInner = inner15(el); - el.setTextConfig(textConfig); - elInner.option = elOption; - setEventData(el, graphicModel, elOption); - setTooltipConfig({ - el, - componentModel: graphicModel, - itemName: el.name, - itemTooltipOption: elOption.tooltip - }); - applyKeyframeAnimation(el, elOption.keyframeAnimation, graphicModel); - } - }); - }; - GraphicComponentView2.prototype._relocate = function(graphicModel, api) { - var elOptions = graphicModel.option.elements; - var rootGroup = this.group; - var elMap = this._elMap; - var apiWidth = api.getWidth(); - var apiHeight = api.getHeight(); - var xy = ["x", "y"]; - for (var i = 0; i < elOptions.length; i++) { - var elOption = elOptions[i]; - var id = convertOptionIdName(elOption.id, null); - var el = id != null ? elMap.get(id) : null; - if (!el || !el.isGroup) { - continue; - } - var parentEl = el.parent; - var isParentRoot = parentEl === rootGroup; - var elInner = inner15(el); - var parentElInner = inner15(parentEl); - elInner.width = parsePercent2(elInner.option.width, isParentRoot ? apiWidth : parentElInner.width) || 0; - elInner.height = parsePercent2(elInner.option.height, isParentRoot ? apiHeight : parentElInner.height) || 0; - } - for (var i = elOptions.length - 1; i >= 0; i--) { - var elOption = elOptions[i]; - var id = convertOptionIdName(elOption.id, null); - var el = id != null ? elMap.get(id) : null; - if (!el) { - continue; - } - var parentEl = el.parent; - var parentElInner = inner15(parentEl); - var containerInfo = parentEl === rootGroup ? { - width: apiWidth, - height: apiHeight - } : { - width: parentElInner.width, - height: parentElInner.height - }; - var layoutPos = {}; - var layouted = positionElement(el, elOption, containerInfo, null, { - hv: elOption.hv, - boundingMode: elOption.bounding - }, layoutPos); - if (!inner15(el).isNew && layouted) { - var transition = elOption.transition; - var animatePos = {}; - for (var k = 0; k < xy.length; k++) { - var key = xy[k]; - var val = layoutPos[key]; - if (transition && (isTransitionAll(transition) || indexOf(transition, key) >= 0)) { - animatePos[key] = val; - } else { - el[key] = val; - } - } - updateProps(el, animatePos, graphicModel, 0); - } else { - el.attr(layoutPos); - } - } - }; - GraphicComponentView2.prototype._clear = function() { - var _this = this; - var elMap = this._elMap; - elMap.each(function(el) { - removeEl(el, inner15(el).option, elMap, _this._lastGraphicModel); - }); - this._elMap = createHashMap(); - }; - GraphicComponentView2.prototype.dispose = function() { - this._clear(); - }; - GraphicComponentView2.type = "graphic"; - return GraphicComponentView2; - }(Component_default2) - ); - function newEl(graphicType) { - if (true) { - assert(graphicType, "graphic type MUST be set"); - } - var Clz = hasOwn(nonShapeGraphicElements, graphicType) ? nonShapeGraphicElements[graphicType] : getShapeClass(graphicType); - if (true) { - assert(Clz, "graphic type " + graphicType + " can not be found"); - } - var el = new Clz({}); - inner15(el).type = graphicType; - return el; - } - function createEl2(id, targetElParent, graphicType, elMap) { - var el = newEl(graphicType); - targetElParent.add(el); - elMap.set(id, el); - inner15(el).id = id; - inner15(el).isNew = true; - return el; - } - function removeEl(elExisting, elOption, elMap, graphicModel) { - var existElParent = elExisting && elExisting.parent; - if (existElParent) { - elExisting.type === "group" && elExisting.traverse(function(el) { - removeEl(el, elOption, elMap, graphicModel); - }); - applyLeaveTransition(elExisting, elOption, graphicModel); - elMap.removeKey(inner15(elExisting).id); - } - } - function updateCommonAttrs(el, elOption, defaultZ, defaultZlevel) { - if (!el.isGroup) { - each([ - ["cursor", Displayable_default.prototype.cursor], - // We should not support configure z and zlevel in the element level. - // But seems we didn't limit it previously. So here still use it to avoid breaking. - ["zlevel", defaultZlevel || 0], - ["z", defaultZ || 0], - // z2 must not be null/undefined, otherwise sort error may occur. - ["z2", 0] - ], function(item) { - var prop = item[0]; - if (hasOwn(elOption, prop)) { - el[prop] = retrieve2(elOption[prop], item[1]); - } else if (el[prop] == null) { - el[prop] = item[1]; - } - }); - } - each(keys(elOption), function(key) { - if (key.indexOf("on") === 0) { - var val = elOption[key]; - el[key] = isFunction(val) ? val : null; - } - }); - if (hasOwn(elOption, "draggable")) { - el.draggable = elOption.draggable; - } - elOption.name != null && (el.name = elOption.name); - elOption.id != null && (el.id = elOption.id); - } - function getCleanedElOption(elOption) { - elOption = extend({}, elOption); - each(["id", "parentId", "$action", "hv", "bounding", "textContent", "clipPath"].concat(LOCATION_PARAMS), function(name) { - delete elOption[name]; - }); - return elOption; - } - function setEventData(el, graphicModel, elOption) { - var eventData = getECData(el).eventData; - if (!el.silent && !el.ignore && !eventData) { - eventData = getECData(el).eventData = { - componentType: "graphic", - componentIndex: graphicModel.componentIndex, - name: el.name - }; - } - if (eventData) { - eventData.info = elOption.info; - } - } - - // node_modules/echarts/lib/component/graphic/install.js - function install34(registers) { - registers.registerComponentModel(GraphicComponentModel); - registers.registerComponentView(GraphicComponentView); - registers.registerPreprocessor(function(option) { - var graphicOption = option.graphic; - if (isArray(graphicOption)) { - if (!graphicOption[0] || !graphicOption[0].elements) { - option.graphic = [{ - elements: graphicOption - }]; - } else { - option.graphic = [option.graphic[0]]; - } - } else if (graphicOption && !graphicOption.elements) { - option.graphic = [{ - elements: [graphicOption] - }]; - } - }); - } - - // node_modules/echarts/lib/component/dataZoom/helper.js - var DATA_ZOOM_AXIS_DIMENSIONS = ["x", "y", "radius", "angle", "single"]; - var SERIES_COORDS = ["cartesian2d", "polar", "singleAxis"]; - function isCoordSupported(seriesModel) { - var coordType = seriesModel.get("coordinateSystem"); - return indexOf(SERIES_COORDS, coordType) >= 0; - } - function getAxisMainType(axisDim) { - if (true) { - assert(axisDim); - } - return axisDim + "Axis"; - } - function findEffectedDataZooms(ecModel, payload) { - var axisRecords = createHashMap(); - var effectedModels = []; - var effectedModelMap = createHashMap(); - ecModel.eachComponent({ - mainType: "dataZoom", - query: payload - }, function(dataZoomModel) { - if (!effectedModelMap.get(dataZoomModel.uid)) { - addToEffected(dataZoomModel); - } - }); - var foundNewLink; - do { - foundNewLink = false; - ecModel.eachComponent("dataZoom", processSingle); - } while (foundNewLink); - function processSingle(dataZoomModel) { - if (!effectedModelMap.get(dataZoomModel.uid) && isLinked(dataZoomModel)) { - addToEffected(dataZoomModel); - foundNewLink = true; - } - } - function addToEffected(dataZoom) { - effectedModelMap.set(dataZoom.uid, true); - effectedModels.push(dataZoom); - markAxisControlled(dataZoom); - } - function isLinked(dataZoomModel) { - var isLink = false; - dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { - var axisIdxArr = axisRecords.get(axisDim); - if (axisIdxArr && axisIdxArr[axisIndex]) { - isLink = true; - } - }); - return isLink; - } - function markAxisControlled(dataZoomModel) { - dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { - (axisRecords.get(axisDim) || axisRecords.set(axisDim, []))[axisIndex] = true; - }); - } - return effectedModels; - } - function collectReferCoordSysModelInfo(dataZoomModel) { - var ecModel = dataZoomModel.ecModel; - var coordSysInfoWrap = { - infoList: [], - infoMap: createHashMap() - }; - dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { - var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex); - if (!axisModel) { - return; - } - var coordSysModel = axisModel.getCoordSysModel(); - if (!coordSysModel) { - return; - } - var coordSysUid = coordSysModel.uid; - var coordSysInfo = coordSysInfoWrap.infoMap.get(coordSysUid); - if (!coordSysInfo) { - coordSysInfo = { - model: coordSysModel, - axisModels: [] - }; - coordSysInfoWrap.infoList.push(coordSysInfo); - coordSysInfoWrap.infoMap.set(coordSysUid, coordSysInfo); - } - coordSysInfo.axisModels.push(axisModel); - }); - return coordSysInfoWrap; - } - - // node_modules/echarts/lib/component/dataZoom/DataZoomModel.js - var DataZoomAxisInfo = ( - /** @class */ - function() { - function DataZoomAxisInfo2() { - this.indexList = []; - this.indexMap = []; - } - DataZoomAxisInfo2.prototype.add = function(axisCmptIdx) { - if (!this.indexMap[axisCmptIdx]) { - this.indexList.push(axisCmptIdx); - this.indexMap[axisCmptIdx] = true; - } - }; - return DataZoomAxisInfo2; - }() - ); - var DataZoomModel = ( - /** @class */ - function(_super) { - __extends(DataZoomModel2, _super); - function DataZoomModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = DataZoomModel2.type; - _this._autoThrottle = true; - _this._noTarget = true; - _this._rangePropMode = ["percent", "percent"]; - return _this; - } - DataZoomModel2.prototype.init = function(option, parentModel, ecModel) { - var inputRawOption = retrieveRawOption(option); - this.settledOption = inputRawOption; - this.mergeDefaultAndTheme(option, ecModel); - this._doInit(inputRawOption); - }; - DataZoomModel2.prototype.mergeOption = function(newOption) { - var inputRawOption = retrieveRawOption(newOption); - merge(this.option, newOption, true); - merge(this.settledOption, inputRawOption, true); - this._doInit(inputRawOption); - }; - DataZoomModel2.prototype._doInit = function(inputRawOption) { - var thisOption = this.option; - this._setDefaultThrottle(inputRawOption); - this._updateRangeUse(inputRawOption); - var settledOption = this.settledOption; - each([["start", "startValue"], ["end", "endValue"]], function(names, index) { - if (this._rangePropMode[index] === "value") { - thisOption[names[0]] = settledOption[names[0]] = null; - } - }, this); - this._resetTarget(); - }; - DataZoomModel2.prototype._resetTarget = function() { - var optionOrient = this.get("orient", true); - var targetAxisIndexMap = this._targetAxisInfoMap = createHashMap(); - var hasAxisSpecified = this._fillSpecifiedTargetAxis(targetAxisIndexMap); - if (hasAxisSpecified) { - this._orient = optionOrient || this._makeAutoOrientByTargetAxis(); - } else { - this._orient = optionOrient || "horizontal"; - this._fillAutoTargetAxisByOrient(targetAxisIndexMap, this._orient); - } - this._noTarget = true; - targetAxisIndexMap.each(function(axisInfo) { - if (axisInfo.indexList.length) { - this._noTarget = false; - } - }, this); - }; - DataZoomModel2.prototype._fillSpecifiedTargetAxis = function(targetAxisIndexMap) { - var hasAxisSpecified = false; - each(DATA_ZOOM_AXIS_DIMENSIONS, function(axisDim) { - var refering = this.getReferringComponents(getAxisMainType(axisDim), MULTIPLE_REFERRING); - if (!refering.specified) { - return; - } - hasAxisSpecified = true; - var axisInfo = new DataZoomAxisInfo(); - each(refering.models, function(axisModel) { - axisInfo.add(axisModel.componentIndex); - }); - targetAxisIndexMap.set(axisDim, axisInfo); - }, this); - return hasAxisSpecified; - }; - DataZoomModel2.prototype._fillAutoTargetAxisByOrient = function(targetAxisIndexMap, orient) { - var ecModel = this.ecModel; - var needAuto = true; - if (needAuto) { - var axisDim = orient === "vertical" ? "y" : "x"; - var axisModels = ecModel.findComponents({ - mainType: axisDim + "Axis" - }); - setParallelAxis(axisModels, axisDim); - } - if (needAuto) { - var axisModels = ecModel.findComponents({ - mainType: "singleAxis", - filter: function(axisModel) { - return axisModel.get("orient", true) === orient; - } - }); - setParallelAxis(axisModels, "single"); - } - function setParallelAxis(axisModels2, axisDim2) { - var axisModel = axisModels2[0]; - if (!axisModel) { - return; - } - var axisInfo = new DataZoomAxisInfo(); - axisInfo.add(axisModel.componentIndex); - targetAxisIndexMap.set(axisDim2, axisInfo); - needAuto = false; - if (axisDim2 === "x" || axisDim2 === "y") { - var gridModel_1 = axisModel.getReferringComponents("grid", SINGLE_REFERRING).models[0]; - gridModel_1 && each(axisModels2, function(axModel) { - if (axisModel.componentIndex !== axModel.componentIndex && gridModel_1 === axModel.getReferringComponents("grid", SINGLE_REFERRING).models[0]) { - axisInfo.add(axModel.componentIndex); - } - }); - } - } - if (needAuto) { - each(DATA_ZOOM_AXIS_DIMENSIONS, function(axisDim2) { - if (!needAuto) { - return; - } - var axisModels2 = ecModel.findComponents({ - mainType: getAxisMainType(axisDim2), - filter: function(axisModel) { - return axisModel.get("type", true) === "category"; - } - }); - if (axisModels2[0]) { - var axisInfo = new DataZoomAxisInfo(); - axisInfo.add(axisModels2[0].componentIndex); - targetAxisIndexMap.set(axisDim2, axisInfo); - needAuto = false; - } - }, this); - } - }; - DataZoomModel2.prototype._makeAutoOrientByTargetAxis = function() { - var dim; - this.eachTargetAxis(function(axisDim) { - !dim && (dim = axisDim); - }, this); - return dim === "y" ? "vertical" : "horizontal"; - }; - DataZoomModel2.prototype._setDefaultThrottle = function(inputRawOption) { - if (inputRawOption.hasOwnProperty("throttle")) { - this._autoThrottle = false; - } - if (this._autoThrottle) { - var globalOption = this.ecModel.option; - this.option.throttle = globalOption.animation && globalOption.animationDurationUpdate > 0 ? 100 : 20; - } - }; - DataZoomModel2.prototype._updateRangeUse = function(inputRawOption) { - var rangePropMode = this._rangePropMode; - var rangeModeInOption = this.get("rangeMode"); - each([["start", "startValue"], ["end", "endValue"]], function(names, index) { - var percentSpecified = inputRawOption[names[0]] != null; - var valueSpecified = inputRawOption[names[1]] != null; - if (percentSpecified && !valueSpecified) { - rangePropMode[index] = "percent"; - } else if (!percentSpecified && valueSpecified) { - rangePropMode[index] = "value"; - } else if (rangeModeInOption) { - rangePropMode[index] = rangeModeInOption[index]; - } else if (percentSpecified) { - rangePropMode[index] = "percent"; - } - }); - }; - DataZoomModel2.prototype.noTarget = function() { - return this._noTarget; - }; - DataZoomModel2.prototype.getFirstTargetAxisModel = function() { - var firstAxisModel; - this.eachTargetAxis(function(axisDim, axisIndex) { - if (firstAxisModel == null) { - firstAxisModel = this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex); - } - }, this); - return firstAxisModel; - }; - DataZoomModel2.prototype.eachTargetAxis = function(callback, context) { - this._targetAxisInfoMap.each(function(axisInfo, axisDim) { - each(axisInfo.indexList, function(axisIndex) { - callback.call(context, axisDim, axisIndex); - }); - }); - }; - DataZoomModel2.prototype.getAxisProxy = function(axisDim, axisIndex) { - var axisModel = this.getAxisModel(axisDim, axisIndex); - if (axisModel) { - return axisModel.__dzAxisProxy; - } - }; - DataZoomModel2.prototype.getAxisModel = function(axisDim, axisIndex) { - if (true) { - assert(axisDim && axisIndex != null); - } - var axisInfo = this._targetAxisInfoMap.get(axisDim); - if (axisInfo && axisInfo.indexMap[axisIndex]) { - return this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex); - } - }; - DataZoomModel2.prototype.setRawRange = function(opt) { - var thisOption = this.option; - var settledOption = this.settledOption; - each([["start", "startValue"], ["end", "endValue"]], function(names) { - if (opt[names[0]] != null || opt[names[1]] != null) { - thisOption[names[0]] = settledOption[names[0]] = opt[names[0]]; - thisOption[names[1]] = settledOption[names[1]] = opt[names[1]]; - } - }, this); - this._updateRangeUse(opt); - }; - DataZoomModel2.prototype.setCalculatedRange = function(opt) { - var option = this.option; - each(["start", "startValue", "end", "endValue"], function(name) { - option[name] = opt[name]; - }); - }; - DataZoomModel2.prototype.getPercentRange = function() { - var axisProxy = this.findRepresentativeAxisProxy(); - if (axisProxy) { - return axisProxy.getDataPercentWindow(); - } - }; - DataZoomModel2.prototype.getValueRange = function(axisDim, axisIndex) { - if (axisDim == null && axisIndex == null) { - var axisProxy = this.findRepresentativeAxisProxy(); - if (axisProxy) { - return axisProxy.getDataValueWindow(); - } - } else { - return this.getAxisProxy(axisDim, axisIndex).getDataValueWindow(); - } - }; - DataZoomModel2.prototype.findRepresentativeAxisProxy = function(axisModel) { - if (axisModel) { - return axisModel.__dzAxisProxy; - } - var firstProxy; - var axisDimList = this._targetAxisInfoMap.keys(); - for (var i = 0; i < axisDimList.length; i++) { - var axisDim = axisDimList[i]; - var axisInfo = this._targetAxisInfoMap.get(axisDim); - for (var j = 0; j < axisInfo.indexList.length; j++) { - var proxy = this.getAxisProxy(axisDim, axisInfo.indexList[j]); - if (proxy.hostedBy(this)) { - return proxy; - } - if (!firstProxy) { - firstProxy = proxy; - } - } - } - return firstProxy; - }; - DataZoomModel2.prototype.getRangePropMode = function() { - return this._rangePropMode.slice(); - }; - DataZoomModel2.prototype.getOrient = function() { - if (true) { - assert(this._orient); - } - return this._orient; - }; - DataZoomModel2.type = "dataZoom"; - DataZoomModel2.dependencies = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "series", "toolbox"]; - DataZoomModel2.defaultOption = { - // zlevel: 0, - z: 4, - filterMode: "filter", - start: 0, - end: 100 - }; - return DataZoomModel2; - }(Component_default) - ); - function retrieveRawOption(option) { - var ret = {}; - each(["start", "end", "startValue", "endValue", "throttle"], function(name) { - option.hasOwnProperty(name) && (ret[name] = option[name]); - }); - return ret; - } - var DataZoomModel_default = DataZoomModel; - - // node_modules/echarts/lib/component/dataZoom/SelectZoomModel.js - var SelectDataZoomModel = ( - /** @class */ - function(_super) { - __extends(SelectDataZoomModel2, _super); - function SelectDataZoomModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SelectDataZoomModel2.type; - return _this; - } - SelectDataZoomModel2.type = "dataZoom.select"; - return SelectDataZoomModel2; - }(DataZoomModel_default) - ); - var SelectZoomModel_default = SelectDataZoomModel; - - // node_modules/echarts/lib/component/dataZoom/DataZoomView.js - var DataZoomView = ( - /** @class */ - function(_super) { - __extends(DataZoomView2, _super); - function DataZoomView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = DataZoomView2.type; - return _this; - } - DataZoomView2.prototype.render = function(dataZoomModel, ecModel, api, payload) { - this.dataZoomModel = dataZoomModel; - this.ecModel = ecModel; - this.api = api; - }; - DataZoomView2.type = "dataZoom"; - return DataZoomView2; - }(Component_default2) - ); - var DataZoomView_default = DataZoomView; - - // node_modules/echarts/lib/component/dataZoom/SelectZoomView.js - var SelectDataZoomView = ( - /** @class */ - function(_super) { - __extends(SelectDataZoomView2, _super); - function SelectDataZoomView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SelectDataZoomView2.type; - return _this; - } - SelectDataZoomView2.type = "dataZoom.select"; - return SelectDataZoomView2; - }(DataZoomView_default) - ); - var SelectZoomView_default = SelectDataZoomView; - - // node_modules/echarts/lib/component/dataZoom/AxisProxy.js - var each9 = each; - var asc2 = asc; - var AxisProxy = ( - /** @class */ - function() { - function AxisProxy2(dimName, axisIndex, dataZoomModel, ecModel) { - this._dimName = dimName; - this._axisIndex = axisIndex; - this.ecModel = ecModel; - this._dataZoomModel = dataZoomModel; - } - AxisProxy2.prototype.hostedBy = function(dataZoomModel) { - return this._dataZoomModel === dataZoomModel; - }; - AxisProxy2.prototype.getDataValueWindow = function() { - return this._valueWindow.slice(); - }; - AxisProxy2.prototype.getDataPercentWindow = function() { - return this._percentWindow.slice(); - }; - AxisProxy2.prototype.getTargetSeriesModels = function() { - var seriesModels = []; - this.ecModel.eachSeries(function(seriesModel) { - if (isCoordSupported(seriesModel)) { - var axisMainType = getAxisMainType(this._dimName); - var axisModel = seriesModel.getReferringComponents(axisMainType, SINGLE_REFERRING).models[0]; - if (axisModel && this._axisIndex === axisModel.componentIndex) { - seriesModels.push(seriesModel); - } - } - }, this); - return seriesModels; - }; - AxisProxy2.prototype.getAxisModel = function() { - return this.ecModel.getComponent(this._dimName + "Axis", this._axisIndex); - }; - AxisProxy2.prototype.getMinMaxSpan = function() { - return clone(this._minMaxSpan); - }; - AxisProxy2.prototype.calculateDataWindow = function(opt) { - var dataExtent = this._dataExtent; - var axisModel = this.getAxisModel(); - var scale4 = axisModel.axis.scale; - var rangePropMode = this._dataZoomModel.getRangePropMode(); - var percentExtent = [0, 100]; - var percentWindow = []; - var valueWindow = []; - var hasPropModeValue; - each9(["start", "end"], function(prop, idx) { - var boundPercent = opt[prop]; - var boundValue = opt[prop + "Value"]; - if (rangePropMode[idx] === "percent") { - boundPercent == null && (boundPercent = percentExtent[idx]); - boundValue = scale4.parse(linearMap(boundPercent, percentExtent, dataExtent)); - } else { - hasPropModeValue = true; - boundValue = boundValue == null ? dataExtent[idx] : scale4.parse(boundValue); - boundPercent = linearMap(boundValue, dataExtent, percentExtent); - } - valueWindow[idx] = boundValue == null || isNaN(boundValue) ? dataExtent[idx] : boundValue; - percentWindow[idx] = boundPercent == null || isNaN(boundPercent) ? percentExtent[idx] : boundPercent; - }); - asc2(valueWindow); - asc2(percentWindow); - var spans = this._minMaxSpan; - hasPropModeValue ? restrictSet(valueWindow, percentWindow, dataExtent, percentExtent, false) : restrictSet(percentWindow, valueWindow, percentExtent, dataExtent, true); - function restrictSet(fromWindow, toWindow, fromExtent, toExtent, toValue) { - var suffix = toValue ? "Span" : "ValueSpan"; - sliderMove(0, fromWindow, fromExtent, "all", spans["min" + suffix], spans["max" + suffix]); - for (var i = 0; i < 2; i++) { - toWindow[i] = linearMap(fromWindow[i], fromExtent, toExtent, true); - toValue && (toWindow[i] = scale4.parse(toWindow[i])); - } - } - return { - valueWindow, - percentWindow - }; - }; - AxisProxy2.prototype.reset = function(dataZoomModel) { - if (dataZoomModel !== this._dataZoomModel) { - return; - } - var targetSeries = this.getTargetSeriesModels(); - this._dataExtent = calculateDataExtent(this, this._dimName, targetSeries); - this._updateMinMaxSpan(); - var dataWindow = this.calculateDataWindow(dataZoomModel.settledOption); - this._valueWindow = dataWindow.valueWindow; - this._percentWindow = dataWindow.percentWindow; - this._setAxisModel(); - }; - AxisProxy2.prototype.filterData = function(dataZoomModel, api) { - if (dataZoomModel !== this._dataZoomModel) { - return; - } - var axisDim = this._dimName; - var seriesModels = this.getTargetSeriesModels(); - var filterMode = dataZoomModel.get("filterMode"); - var valueWindow = this._valueWindow; - if (filterMode === "none") { - return; - } - each9(seriesModels, function(seriesModel) { - var seriesData = seriesModel.getData(); - var dataDims = seriesData.mapDimensionsAll(axisDim); - if (!dataDims.length) { - return; - } - if (filterMode === "weakFilter") { - var store_1 = seriesData.getStore(); - var dataDimIndices_1 = map(dataDims, function(dim) { - return seriesData.getDimensionIndex(dim); - }, seriesData); - seriesData.filterSelf(function(dataIndex) { - var leftOut; - var rightOut; - var hasValue; - for (var i = 0; i < dataDims.length; i++) { - var value = store_1.get(dataDimIndices_1[i], dataIndex); - var thisHasValue = !isNaN(value); - var thisLeftOut = value < valueWindow[0]; - var thisRightOut = value > valueWindow[1]; - if (thisHasValue && !thisLeftOut && !thisRightOut) { - return true; - } - thisHasValue && (hasValue = true); - thisLeftOut && (leftOut = true); - thisRightOut && (rightOut = true); - } - return hasValue && leftOut && rightOut; - }); - } else { - each9(dataDims, function(dim) { - if (filterMode === "empty") { - seriesModel.setData(seriesData = seriesData.map(dim, function(value) { - return !isInWindow(value) ? NaN : value; - })); - } else { - var range = {}; - range[dim] = valueWindow; - seriesData.selectRange(range); - } - }); - } - each9(dataDims, function(dim) { - seriesData.setApproximateExtent(valueWindow, dim); - }); - }); - function isInWindow(value) { - return value >= valueWindow[0] && value <= valueWindow[1]; - } - }; - AxisProxy2.prototype._updateMinMaxSpan = function() { - var minMaxSpan = this._minMaxSpan = {}; - var dataZoomModel = this._dataZoomModel; - var dataExtent = this._dataExtent; - each9(["min", "max"], function(minMax) { - var percentSpan = dataZoomModel.get(minMax + "Span"); - var valueSpan = dataZoomModel.get(minMax + "ValueSpan"); - valueSpan != null && (valueSpan = this.getAxisModel().axis.scale.parse(valueSpan)); - if (valueSpan != null) { - percentSpan = linearMap(dataExtent[0] + valueSpan, dataExtent, [0, 100], true); - } else if (percentSpan != null) { - valueSpan = linearMap(percentSpan, [0, 100], dataExtent, true) - dataExtent[0]; - } - minMaxSpan[minMax + "Span"] = percentSpan; - minMaxSpan[minMax + "ValueSpan"] = valueSpan; - }, this); - }; - AxisProxy2.prototype._setAxisModel = function() { - var axisModel = this.getAxisModel(); - var percentWindow = this._percentWindow; - var valueWindow = this._valueWindow; - if (!percentWindow) { - return; - } - var precision = getPixelPrecision(valueWindow, [0, 500]); - precision = Math.min(precision, 20); - var rawExtentInfo = axisModel.axis.scale.rawExtentInfo; - if (percentWindow[0] !== 0) { - rawExtentInfo.setDeterminedMinMax("min", +valueWindow[0].toFixed(precision)); - } - if (percentWindow[1] !== 100) { - rawExtentInfo.setDeterminedMinMax("max", +valueWindow[1].toFixed(precision)); - } - rawExtentInfo.freeze(); - }; - return AxisProxy2; - }() - ); - function calculateDataExtent(axisProxy, axisDim, seriesModels) { - var dataExtent = [Infinity, -Infinity]; - each9(seriesModels, function(seriesModel) { - unionAxisExtentFromData(dataExtent, seriesModel.getData(), axisDim); - }); - var axisModel = axisProxy.getAxisModel(); - var rawExtentResult = ensureScaleRawExtentInfo(axisModel.axis.scale, axisModel, dataExtent).calculate(); - return [rawExtentResult.min, rawExtentResult.max]; - } - var AxisProxy_default = AxisProxy; - - // node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js - var dataZoomProcessor = { - // `dataZoomProcessor` will only be performed in needed series. Consider if - // there is a line series and a pie series, it is better not to update the - // line series if only pie series is needed to be updated. - getTargetSeries: function(ecModel) { - function eachAxisModel(cb) { - ecModel.eachComponent("dataZoom", function(dataZoomModel) { - dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { - var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex); - cb(axisDim, axisIndex, axisModel, dataZoomModel); - }); - }); - } - eachAxisModel(function(axisDim, axisIndex, axisModel, dataZoomModel) { - axisModel.__dzAxisProxy = null; - }); - var proxyList = []; - eachAxisModel(function(axisDim, axisIndex, axisModel, dataZoomModel) { - if (!axisModel.__dzAxisProxy) { - axisModel.__dzAxisProxy = new AxisProxy_default(axisDim, axisIndex, dataZoomModel, ecModel); - proxyList.push(axisModel.__dzAxisProxy); - } - }); - var seriesModelMap = createHashMap(); - each(proxyList, function(axisProxy) { - each(axisProxy.getTargetSeriesModels(), function(seriesModel) { - seriesModelMap.set(seriesModel.uid, seriesModel); - }); - }); - return seriesModelMap; - }, - // Consider appendData, where filter should be performed. Because data process is - // in block mode currently, it is not need to worry about that the overallProgress - // execute every frame. - overallReset: function(ecModel, api) { - ecModel.eachComponent("dataZoom", function(dataZoomModel) { - dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { - dataZoomModel.getAxisProxy(axisDim, axisIndex).reset(dataZoomModel); - }); - dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { - dataZoomModel.getAxisProxy(axisDim, axisIndex).filterData(dataZoomModel, api); - }); - }); - ecModel.eachComponent("dataZoom", function(dataZoomModel) { - var axisProxy = dataZoomModel.findRepresentativeAxisProxy(); - if (axisProxy) { - var percentRange = axisProxy.getDataPercentWindow(); - var valueRange = axisProxy.getDataValueWindow(); - dataZoomModel.setCalculatedRange({ - start: percentRange[0], - end: percentRange[1], - startValue: valueRange[0], - endValue: valueRange[1] - }); - } - }); - } - }; - var dataZoomProcessor_default = dataZoomProcessor; - - // node_modules/echarts/lib/component/dataZoom/dataZoomAction.js - function installDataZoomAction(registers) { - registers.registerAction("dataZoom", function(payload, ecModel) { - var effectedModels = findEffectedDataZooms(ecModel, payload); - each(effectedModels, function(dataZoomModel) { - dataZoomModel.setRawRange({ - start: payload.start, - end: payload.end, - startValue: payload.startValue, - endValue: payload.endValue - }); - }); - }); - } - - // node_modules/echarts/lib/component/dataZoom/installCommon.js - var installed = false; - function installCommon(registers) { - if (installed) { - return; - } - installed = true; - registers.registerProcessor(registers.PRIORITY.PROCESSOR.FILTER, dataZoomProcessor_default); - installDataZoomAction(registers); - registers.registerSubTypeDefaulter("dataZoom", function() { - return "slider"; - }); - } - - // node_modules/echarts/lib/component/dataZoom/installDataZoomSelect.js - function install35(registers) { - registers.registerComponentModel(SelectZoomModel_default); - registers.registerComponentView(SelectZoomView_default); - installCommon(registers); - } - - // node_modules/echarts/lib/component/toolbox/featureManager.js - var ToolboxFeature = ( - /** @class */ - /* @__PURE__ */ function() { - function ToolboxFeature2() { - } - return ToolboxFeature2; - }() - ); - var features = {}; - function registerFeature(name, ctor) { - features[name] = ctor; - } - function getFeature(name) { - return features[name]; - } - - // node_modules/echarts/lib/component/toolbox/ToolboxModel.js - var ToolboxModel = ( - /** @class */ - function(_super) { - __extends(ToolboxModel2, _super); - function ToolboxModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ToolboxModel2.type; - return _this; - } - ToolboxModel2.prototype.optionUpdated = function() { - _super.prototype.optionUpdated.apply(this, arguments); - var ecModel = this.ecModel; - each(this.option.feature, function(featureOpt, featureName) { - var Feature = getFeature(featureName); - if (Feature) { - if (Feature.getDefaultOption) { - Feature.defaultOption = Feature.getDefaultOption(ecModel); - } - merge(featureOpt, Feature.defaultOption); - } - }); - }; - ToolboxModel2.type = "toolbox"; - ToolboxModel2.layoutMode = { - type: "box", - ignoreSize: true - }; - ToolboxModel2.defaultOption = { - show: true, - z: 6, - // zlevel: 0, - orient: "horizontal", - left: "right", - top: "top", - // right - // bottom - backgroundColor: "transparent", - borderColor: "#ccc", - borderRadius: 0, - borderWidth: 0, - padding: 5, - itemSize: 15, - itemGap: 8, - showTitle: true, - iconStyle: { - borderColor: "#666", - color: "none" - }, - emphasis: { - iconStyle: { - borderColor: "#3E98C5" - } - }, - // textStyle: {}, - // feature - tooltip: { - show: false, - position: "bottom" - } - }; - return ToolboxModel2; - }(Component_default) - ); - var ToolboxModel_default = ToolboxModel; - - // node_modules/echarts/lib/component/helper/listComponent.js - function layout4(group, componentModel, api) { - var boxLayoutParams = componentModel.getBoxLayoutParams(); - var padding = componentModel.get("padding"); - var viewportSize = { - width: api.getWidth(), - height: api.getHeight() - }; - var rect = getLayoutRect(boxLayoutParams, viewportSize, padding); - box(componentModel.get("orient"), group, componentModel.get("itemGap"), rect.width, rect.height); - positionElement(group, boxLayoutParams, viewportSize, padding); - } - function makeBackground(rect, componentModel) { - var padding = normalizeCssArray2(componentModel.get("padding")); - var style = componentModel.getItemStyle(["color", "opacity"]); - style.fill = componentModel.get("backgroundColor"); - rect = new Rect_default({ - shape: { - x: rect.x - padding[3], - y: rect.y - padding[0], - width: rect.width + padding[1] + padding[3], - height: rect.height + padding[0] + padding[2], - r: componentModel.get("borderRadius") - }, - style, - silent: true, - z2: -1 - }); - return rect; - } - - // node_modules/echarts/lib/component/toolbox/ToolboxView.js - var ToolboxView = ( - /** @class */ - function(_super) { - __extends(ToolboxView2, _super); - function ToolboxView2() { - return _super !== null && _super.apply(this, arguments) || this; - } - ToolboxView2.prototype.render = function(toolboxModel, ecModel, api, payload) { - var group = this.group; - group.removeAll(); - if (!toolboxModel.get("show")) { - return; - } - var itemSize = +toolboxModel.get("itemSize"); - var isVertical = toolboxModel.get("orient") === "vertical"; - var featureOpts = toolboxModel.get("feature") || {}; - var features2 = this._features || (this._features = {}); - var featureNames = []; - each(featureOpts, function(opt, name) { - featureNames.push(name); - }); - new DataDiffer_default(this._featureNames || [], featureNames).add(processFeature).update(processFeature).remove(curry(processFeature, null)).execute(); - this._featureNames = featureNames; - function processFeature(newIndex, oldIndex) { - var featureName = featureNames[newIndex]; - var oldName = featureNames[oldIndex]; - var featureOpt = featureOpts[featureName]; - var featureModel = new Model_default(featureOpt, toolboxModel, toolboxModel.ecModel); - var feature; - if (payload && payload.newTitle != null && payload.featureName === featureName) { - featureOpt.title = payload.newTitle; - } - if (featureName && !oldName) { - if (isUserFeatureName(featureName)) { - feature = { - onclick: featureModel.option.onclick, - featureName - }; - } else { - var Feature = getFeature(featureName); - if (!Feature) { - return; - } - feature = new Feature(); - } - features2[featureName] = feature; - } else { - feature = features2[oldName]; - if (!feature) { - return; - } - } - feature.uid = getUID("toolbox-feature"); - feature.model = featureModel; - feature.ecModel = ecModel; - feature.api = api; - var isToolboxFeature = feature instanceof ToolboxFeature; - if (!featureName && oldName) { - isToolboxFeature && feature.dispose && feature.dispose(ecModel, api); - return; - } - if (!featureModel.get("show") || isToolboxFeature && feature.unusable) { - isToolboxFeature && feature.remove && feature.remove(ecModel, api); - return; - } - createIconPaths(featureModel, feature, featureName); - featureModel.setIconStatus = function(iconName, status) { - var option = this.option; - var iconPaths = this.iconPaths; - option.iconStatus = option.iconStatus || {}; - option.iconStatus[iconName] = status; - if (iconPaths[iconName]) { - (status === "emphasis" ? enterEmphasis : leaveEmphasis)(iconPaths[iconName]); - } - }; - if (feature instanceof ToolboxFeature) { - if (feature.render) { - feature.render(featureModel, ecModel, api, payload); - } - } - } - function createIconPaths(featureModel, feature, featureName) { - var iconStyleModel = featureModel.getModel("iconStyle"); - var iconStyleEmphasisModel = featureModel.getModel(["emphasis", "iconStyle"]); - var icons = feature instanceof ToolboxFeature && feature.getIcons ? feature.getIcons() : featureModel.get("icon"); - var titles = featureModel.get("title") || {}; - var iconsMap; - var titlesMap; - if (isString(icons)) { - iconsMap = {}; - iconsMap[featureName] = icons; - } else { - iconsMap = icons; - } - if (isString(titles)) { - titlesMap = {}; - titlesMap[featureName] = titles; - } else { - titlesMap = titles; - } - var iconPaths = featureModel.iconPaths = {}; - each(iconsMap, function(iconStr, iconName) { - var path = createIcon(iconStr, {}, { - x: -itemSize / 2, - y: -itemSize / 2, - width: itemSize, - height: itemSize - }); - path.setStyle(iconStyleModel.getItemStyle()); - var pathEmphasisState = path.ensureState("emphasis"); - pathEmphasisState.style = iconStyleEmphasisModel.getItemStyle(); - var textContent = new Text_default({ - style: { - text: titlesMap[iconName], - align: iconStyleEmphasisModel.get("textAlign"), - borderRadius: iconStyleEmphasisModel.get("textBorderRadius"), - padding: iconStyleEmphasisModel.get("textPadding"), - fill: null, - font: getFont({ - fontStyle: iconStyleEmphasisModel.get("textFontStyle"), - fontFamily: iconStyleEmphasisModel.get("textFontFamily"), - fontSize: iconStyleEmphasisModel.get("textFontSize"), - fontWeight: iconStyleEmphasisModel.get("textFontWeight") - }, ecModel) - }, - ignore: true - }); - path.setTextContent(textContent); - setTooltipConfig({ - el: path, - componentModel: toolboxModel, - itemName: iconName, - formatterParamsExtra: { - title: titlesMap[iconName] - } - }); - path.__title = titlesMap[iconName]; - path.on("mouseover", function() { - var hoverStyle = iconStyleEmphasisModel.getItemStyle(); - var defaultTextPosition = isVertical ? toolboxModel.get("right") == null && toolboxModel.get("left") !== "right" ? "right" : "left" : toolboxModel.get("bottom") == null && toolboxModel.get("top") !== "bottom" ? "bottom" : "top"; - textContent.setStyle({ - fill: iconStyleEmphasisModel.get("textFill") || hoverStyle.fill || hoverStyle.stroke || "#000", - backgroundColor: iconStyleEmphasisModel.get("textBackgroundColor") - }); - path.setTextConfig({ - position: iconStyleEmphasisModel.get("textPosition") || defaultTextPosition - }); - textContent.ignore = !toolboxModel.get("showTitle"); - api.enterEmphasis(this); - }).on("mouseout", function() { - if (featureModel.get(["iconStatus", iconName]) !== "emphasis") { - api.leaveEmphasis(this); - } - textContent.hide(); - }); - (featureModel.get(["iconStatus", iconName]) === "emphasis" ? enterEmphasis : leaveEmphasis)(path); - group.add(path); - path.on("click", bind(feature.onclick, feature, ecModel, api, iconName)); - iconPaths[iconName] = path; - }); - } - layout4(group, toolboxModel, api); - group.add(makeBackground(group.getBoundingRect(), toolboxModel)); - isVertical || group.eachChild(function(icon) { - var titleText = icon.__title; - var emphasisState = icon.ensureState("emphasis"); - var emphasisTextConfig = emphasisState.textConfig || (emphasisState.textConfig = {}); - var textContent = icon.getTextContent(); - var emphasisTextState = textContent && textContent.ensureState("emphasis"); - if (emphasisTextState && !isFunction(emphasisTextState) && titleText) { - var emphasisTextStyle = emphasisTextState.style || (emphasisTextState.style = {}); - var rect = getBoundingRect(titleText, Text_default.makeFont(emphasisTextStyle)); - var offsetX = icon.x + group.x; - var offsetY = icon.y + group.y + itemSize; - var needPutOnTop = false; - if (offsetY + rect.height > api.getHeight()) { - emphasisTextConfig.position = "top"; - needPutOnTop = true; - } - var topOffset = needPutOnTop ? -5 - rect.height : itemSize + 10; - if (offsetX + rect.width / 2 > api.getWidth()) { - emphasisTextConfig.position = ["100%", topOffset]; - emphasisTextStyle.align = "right"; - } else if (offsetX - rect.width / 2 < 0) { - emphasisTextConfig.position = [0, topOffset]; - emphasisTextStyle.align = "left"; - } - } - }); - }; - ToolboxView2.prototype.updateView = function(toolboxModel, ecModel, api, payload) { - each(this._features, function(feature) { - feature instanceof ToolboxFeature && feature.updateView && feature.updateView(feature.model, ecModel, api, payload); - }); - }; - ToolboxView2.prototype.remove = function(ecModel, api) { - each(this._features, function(feature) { - feature instanceof ToolboxFeature && feature.remove && feature.remove(ecModel, api); - }); - this.group.removeAll(); - }; - ToolboxView2.prototype.dispose = function(ecModel, api) { - each(this._features, function(feature) { - feature instanceof ToolboxFeature && feature.dispose && feature.dispose(ecModel, api); - }); - }; - ToolboxView2.type = "toolbox"; - return ToolboxView2; - }(Component_default2) - ); - function isUserFeatureName(featureName) { - return featureName.indexOf("my") === 0; - } - var ToolboxView_default = ToolboxView; - - // node_modules/echarts/lib/component/toolbox/feature/SaveAsImage.js - var SaveAsImage = ( - /** @class */ - function(_super) { - __extends(SaveAsImage2, _super); - function SaveAsImage2() { - return _super !== null && _super.apply(this, arguments) || this; - } - SaveAsImage2.prototype.onclick = function(ecModel, api) { - var model = this.model; - var title = model.get("name") || ecModel.get("title.0.text") || "echarts"; - var isSvg = api.getZr().painter.getType() === "svg"; - var type = isSvg ? "svg" : model.get("type", true) || "png"; - var url = api.getConnectedDataURL({ - type, - backgroundColor: model.get("backgroundColor", true) || ecModel.get("backgroundColor") || "#fff", - connectedBackgroundColor: model.get("connectedBackgroundColor"), - excludeComponents: model.get("excludeComponents"), - pixelRatio: model.get("pixelRatio") - }); - var browser = env_default.browser; - if (typeof MouseEvent === "function" && (browser.newEdge || !browser.ie && !browser.edge)) { - var $a = document.createElement("a"); - $a.download = title + "." + type; - $a.target = "_blank"; - $a.href = url; - var evt = new MouseEvent("click", { - // some micro front-end framework, window maybe is a Proxy - view: document.defaultView, - bubbles: true, - cancelable: false - }); - $a.dispatchEvent(evt); - } else { - if (window.navigator.msSaveOrOpenBlob || isSvg) { - var parts = url.split(","); - var base64Encoded = parts[0].indexOf("base64") > -1; - var bstr = isSvg ? decodeURIComponent(parts[1]) : parts[1]; - base64Encoded && (bstr = window.atob(bstr)); - var filename = title + "." + type; - if (window.navigator.msSaveOrOpenBlob) { - var n = bstr.length; - var u8arr = new Uint8Array(n); - while (n--) { - u8arr[n] = bstr.charCodeAt(n); - } - var blob = new Blob([u8arr]); - window.navigator.msSaveOrOpenBlob(blob, filename); - } else { - var frame = document.createElement("iframe"); - document.body.appendChild(frame); - var cw = frame.contentWindow; - var doc = cw.document; - doc.open("image/svg+xml", "replace"); - doc.write(bstr); - doc.close(); - cw.focus(); - doc.execCommand("SaveAs", true, filename); - document.body.removeChild(frame); - } - } else { - var lang = model.get("lang"); - var html = ''; - var tab = window.open(); - tab.document.write(html); - tab.document.title = title; - } - } - }; - SaveAsImage2.getDefaultOption = function(ecModel) { - var defaultOption3 = { - show: true, - icon: "M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0", - title: ecModel.getLocaleModel().get(["toolbox", "saveAsImage", "title"]), - type: "png", - // Default use option.backgroundColor - // backgroundColor: '#fff', - connectedBackgroundColor: "#fff", - name: "", - excludeComponents: ["toolbox"], - // use current pixel ratio of device by default - // pixelRatio: 1, - lang: ecModel.getLocaleModel().get(["toolbox", "saveAsImage", "lang"]) - }; - return defaultOption3; - }; - return SaveAsImage2; - }(ToolboxFeature) - ); - var SaveAsImage_default = SaveAsImage; - - // node_modules/echarts/lib/component/toolbox/feature/MagicType.js - var INNER_STACK_KEYWORD = "__ec_magicType_stack__"; - var radioTypes = [["line", "bar"], ["stack"]]; - var MagicType = ( - /** @class */ - function(_super) { - __extends(MagicType2, _super); - function MagicType2() { - return _super !== null && _super.apply(this, arguments) || this; - } - MagicType2.prototype.getIcons = function() { - var model = this.model; - var availableIcons = model.get("icon"); - var icons = {}; - each(model.get("type"), function(type) { - if (availableIcons[type]) { - icons[type] = availableIcons[type]; - } - }); - return icons; - }; - MagicType2.getDefaultOption = function(ecModel) { - var defaultOption3 = { - show: true, - type: [], - // Icon group - icon: { - line: "M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4", - bar: "M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7", - // eslint-disable-next-line - stack: "M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z" - // jshint ignore:line - }, - // `line`, `bar`, `stack`, `tiled` - title: ecModel.getLocaleModel().get(["toolbox", "magicType", "title"]), - option: {}, - seriesIndex: {} - }; - return defaultOption3; - }; - MagicType2.prototype.onclick = function(ecModel, api, type) { - var model = this.model; - var seriesIndex = model.get(["seriesIndex", type]); - if (!seriesOptGenreator[type]) { - return; - } - var newOption = { - series: [] - }; - var generateNewSeriesTypes = function(seriesModel) { - var seriesType2 = seriesModel.subType; - var seriesId = seriesModel.id; - var newSeriesOpt = seriesOptGenreator[type](seriesType2, seriesId, seriesModel, model); - if (newSeriesOpt) { - defaults(newSeriesOpt, seriesModel.option); - newOption.series.push(newSeriesOpt); - } - var coordSys = seriesModel.coordinateSystem; - if (coordSys && coordSys.type === "cartesian2d" && (type === "line" || type === "bar")) { - var categoryAxis2 = coordSys.getAxesByScale("ordinal")[0]; - if (categoryAxis2) { - var axisDim = categoryAxis2.dim; - var axisType = axisDim + "Axis"; - var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0]; - var axisIndex = axisModel.componentIndex; - newOption[axisType] = newOption[axisType] || []; - for (var i = 0; i <= axisIndex; i++) { - newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {}; - } - newOption[axisType][axisIndex].boundaryGap = type === "bar"; - } - } - }; - each(radioTypes, function(radio) { - if (indexOf(radio, type) >= 0) { - each(radio, function(item) { - model.setIconStatus(item, "normal"); - }); - } - }); - model.setIconStatus(type, "emphasis"); - ecModel.eachComponent({ - mainType: "series", - query: seriesIndex == null ? null : { - seriesIndex - } - }, generateNewSeriesTypes); - var newTitle; - var currentType = type; - if (type === "stack") { - newTitle = merge({ - stack: model.option.title.tiled, - tiled: model.option.title.stack - }, model.option.title); - if (model.get(["iconStatus", type]) !== "emphasis") { - currentType = "tiled"; - } - } - api.dispatchAction({ - type: "changeMagicType", - currentType, - newOption, - newTitle, - featureName: "magicType" - }); - }; - return MagicType2; - }(ToolboxFeature) - ); - var seriesOptGenreator = { - "line": function(seriesType2, seriesId, seriesModel, model) { - if (seriesType2 === "bar") { - return merge({ - id: seriesId, - type: "line", - // Preserve data related option - data: seriesModel.get("data"), - stack: seriesModel.get("stack"), - markPoint: seriesModel.get("markPoint"), - markLine: seriesModel.get("markLine") - }, model.get(["option", "line"]) || {}, true); - } - }, - "bar": function(seriesType2, seriesId, seriesModel, model) { - if (seriesType2 === "line") { - return merge({ - id: seriesId, - type: "bar", - // Preserve data related option - data: seriesModel.get("data"), - stack: seriesModel.get("stack"), - markPoint: seriesModel.get("markPoint"), - markLine: seriesModel.get("markLine") - }, model.get(["option", "bar"]) || {}, true); - } - }, - "stack": function(seriesType2, seriesId, seriesModel, model) { - var isStack = seriesModel.get("stack") === INNER_STACK_KEYWORD; - if (seriesType2 === "line" || seriesType2 === "bar") { - model.setIconStatus("stack", isStack ? "normal" : "emphasis"); - return merge({ - id: seriesId, - stack: isStack ? "" : INNER_STACK_KEYWORD - }, model.get(["option", "stack"]) || {}, true); - } - } - }; - registerAction({ - type: "changeMagicType", - event: "magicTypeChanged", - update: "prepareAndUpdate" - }, function(payload, ecModel) { - ecModel.mergeOption(payload.newOption); - }); - var MagicType_default = MagicType; - - // node_modules/echarts/lib/component/toolbox/feature/DataView.js - var BLOCK_SPLITER = new Array(60).join("-"); - var ITEM_SPLITER = " "; - function groupSeries(ecModel) { - var seriesGroupByCategoryAxis = {}; - var otherSeries = []; - var meta = []; - ecModel.eachRawSeries(function(seriesModel) { - var coordSys = seriesModel.coordinateSystem; - if (coordSys && (coordSys.type === "cartesian2d" || coordSys.type === "polar")) { - var baseAxis = coordSys.getBaseAxis(); - if (baseAxis.type === "category") { - var key = baseAxis.dim + "_" + baseAxis.index; - if (!seriesGroupByCategoryAxis[key]) { - seriesGroupByCategoryAxis[key] = { - categoryAxis: baseAxis, - valueAxis: coordSys.getOtherAxis(baseAxis), - series: [] - }; - meta.push({ - axisDim: baseAxis.dim, - axisIndex: baseAxis.index - }); - } - seriesGroupByCategoryAxis[key].series.push(seriesModel); - } else { - otherSeries.push(seriesModel); - } - } else { - otherSeries.push(seriesModel); - } - }); - return { - seriesGroupByCategoryAxis, - other: otherSeries, - meta - }; - } - function assembleSeriesWithCategoryAxis(groups) { - var tables = []; - each(groups, function(group, key) { - var categoryAxis2 = group.categoryAxis; - var valueAxis2 = group.valueAxis; - var valueAxisDim = valueAxis2.dim; - var headers = [" "].concat(map(group.series, function(series) { - return series.name; - })); - var columns = [categoryAxis2.model.getCategories()]; - each(group.series, function(series) { - var rawData = series.getRawData(); - columns.push(series.getRawData().mapArray(rawData.mapDimension(valueAxisDim), function(val) { - return val; - })); - }); - var lines = [headers.join(ITEM_SPLITER)]; - for (var i = 0; i < columns[0].length; i++) { - var items = []; - for (var j = 0; j < columns.length; j++) { - items.push(columns[j][i]); - } - lines.push(items.join(ITEM_SPLITER)); - } - tables.push(lines.join("\n")); - }); - return tables.join("\n\n" + BLOCK_SPLITER + "\n\n"); - } - function assembleOtherSeries(series) { - return map(series, function(series2) { - var data = series2.getRawData(); - var lines = [series2.name]; - var vals = []; - data.each(data.dimensions, function() { - var argLen = arguments.length; - var dataIndex = arguments[argLen - 1]; - var name = data.getName(dataIndex); - for (var i = 0; i < argLen - 1; i++) { - vals[i] = arguments[i]; - } - lines.push((name ? name + ITEM_SPLITER : "") + vals.join(ITEM_SPLITER)); - }); - return lines.join("\n"); - }).join("\n\n" + BLOCK_SPLITER + "\n\n"); - } - function getContentFromModel(ecModel) { - var result = groupSeries(ecModel); - return { - value: filter([assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis), assembleOtherSeries(result.other)], function(str) { - return !!str.replace(/[\n\t\s]/g, ""); - }).join("\n\n" + BLOCK_SPLITER + "\n\n"), - meta: result.meta - }; - } - function trim2(str) { - return str.replace(/^\s\s*/, "").replace(/\s\s*$/, ""); - } - function isTSVFormat(block) { - var firstLine = block.slice(0, block.indexOf("\n")); - if (firstLine.indexOf(ITEM_SPLITER) >= 0) { - return true; - } - } - var itemSplitRegex = new RegExp("[" + ITEM_SPLITER + "]+", "g"); - function parseTSVContents(tsv) { - var tsvLines = tsv.split(/\n+/g); - var headers = trim2(tsvLines.shift()).split(itemSplitRegex); - var categories = []; - var series = map(headers, function(header) { - return { - name: header, - data: [] - }; - }); - for (var i = 0; i < tsvLines.length; i++) { - var items = trim2(tsvLines[i]).split(itemSplitRegex); - categories.push(items.shift()); - for (var j = 0; j < items.length; j++) { - series[j] && (series[j].data[i] = items[j]); - } - } - return { - series, - categories - }; - } - function parseListContents(str) { - var lines = str.split(/\n+/g); - var seriesName = trim2(lines.shift()); - var data = []; - for (var i = 0; i < lines.length; i++) { - var line = trim2(lines[i]); - if (!line) { - continue; - } - var items = line.split(itemSplitRegex); - var name_1 = ""; - var value = void 0; - var hasName = false; - if (isNaN(items[0])) { - hasName = true; - name_1 = items[0]; - items = items.slice(1); - data[i] = { - name: name_1, - value: [] - }; - value = data[i].value; - } else { - value = data[i] = []; - } - for (var j = 0; j < items.length; j++) { - value.push(+items[j]); - } - if (value.length === 1) { - hasName ? data[i].value = value[0] : data[i] = value[0]; - } - } - return { - name: seriesName, - data - }; - } - function parseContents(str, blockMetaList) { - var blocks = str.split(new RegExp("\n*" + BLOCK_SPLITER + "\n*", "g")); - var newOption = { - series: [] - }; - each(blocks, function(block, idx) { - if (isTSVFormat(block)) { - var result = parseTSVContents(block); - var blockMeta = blockMetaList[idx]; - var axisKey = blockMeta.axisDim + "Axis"; - if (blockMeta) { - newOption[axisKey] = newOption[axisKey] || []; - newOption[axisKey][blockMeta.axisIndex] = { - data: result.categories - }; - newOption.series = newOption.series.concat(result.series); - } - } else { - var result = parseListContents(block); - newOption.series.push(result); - } - }); - return newOption; - } - var DataView = ( - /** @class */ - function(_super) { - __extends(DataView2, _super); - function DataView2() { - return _super !== null && _super.apply(this, arguments) || this; - } - DataView2.prototype.onclick = function(ecModel, api) { - setTimeout(function() { - api.dispatchAction({ - type: "hideTip" - }); - }); - var container = api.getDom(); - var model = this.model; - if (this._dom) { - container.removeChild(this._dom); - } - var root = document.createElement("div"); - root.style.cssText = "position:absolute;top:0;bottom:0;left:0;right:0;padding:5px"; - root.style.backgroundColor = model.get("backgroundColor") || "#fff"; - var header = document.createElement("h4"); - var lang = model.get("lang") || []; - header.innerHTML = lang[0] || model.get("title"); - header.style.cssText = "margin:10px 20px"; - header.style.color = model.get("textColor"); - var viewMain = document.createElement("div"); - var textarea = document.createElement("textarea"); - viewMain.style.cssText = "overflow:auto"; - var optionToContent = model.get("optionToContent"); - var contentToOption = model.get("contentToOption"); - var result = getContentFromModel(ecModel); - if (isFunction(optionToContent)) { - var htmlOrDom = optionToContent(api.getOption()); - if (isString(htmlOrDom)) { - viewMain.innerHTML = htmlOrDom; - } else if (isDom(htmlOrDom)) { - viewMain.appendChild(htmlOrDom); - } - } else { - textarea.readOnly = model.get("readOnly"); - var style = textarea.style; - style.cssText = "display:block;width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;resize:none;box-sizing:border-box;outline:none"; - style.color = model.get("textColor"); - style.borderColor = model.get("textareaBorderColor"); - style.backgroundColor = model.get("textareaColor"); - textarea.value = result.value; - viewMain.appendChild(textarea); - } - var blockMetaList = result.meta; - var buttonContainer = document.createElement("div"); - buttonContainer.style.cssText = "position:absolute;bottom:5px;left:0;right:0"; - var buttonStyle = "float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px"; - var closeButton = document.createElement("div"); - var refreshButton = document.createElement("div"); - buttonStyle += ";background-color:" + model.get("buttonColor"); - buttonStyle += ";color:" + model.get("buttonTextColor"); - var self2 = this; - function close() { - container.removeChild(root); - self2._dom = null; - } - addEventListener2(closeButton, "click", close); - addEventListener2(refreshButton, "click", function() { - if (contentToOption == null && optionToContent != null || contentToOption != null && optionToContent == null) { - if (true) { - warn("It seems you have just provided one of `contentToOption` and `optionToContent` functions but missed the other one. Data change is ignored."); - } - close(); - return; - } - var newOption; - try { - if (isFunction(contentToOption)) { - newOption = contentToOption(viewMain, api.getOption()); - } else { - newOption = parseContents(textarea.value, blockMetaList); - } - } catch (e2) { - close(); - throw new Error("Data view format error " + e2); - } - if (newOption) { - api.dispatchAction({ - type: "changeDataView", - newOption - }); - } - close(); - }); - closeButton.innerHTML = lang[1]; - refreshButton.innerHTML = lang[2]; - refreshButton.style.cssText = closeButton.style.cssText = buttonStyle; - !model.get("readOnly") && buttonContainer.appendChild(refreshButton); - buttonContainer.appendChild(closeButton); - root.appendChild(header); - root.appendChild(viewMain); - root.appendChild(buttonContainer); - viewMain.style.height = container.clientHeight - 80 + "px"; - container.appendChild(root); - this._dom = root; - }; - DataView2.prototype.remove = function(ecModel, api) { - this._dom && api.getDom().removeChild(this._dom); - }; - DataView2.prototype.dispose = function(ecModel, api) { - this.remove(ecModel, api); - }; - DataView2.getDefaultOption = function(ecModel) { - var defaultOption3 = { - show: true, - readOnly: false, - optionToContent: null, - contentToOption: null, - // eslint-disable-next-line - icon: "M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28", - title: ecModel.getLocaleModel().get(["toolbox", "dataView", "title"]), - lang: ecModel.getLocaleModel().get(["toolbox", "dataView", "lang"]), - backgroundColor: "#fff", - textColor: "#000", - textareaColor: "#fff", - textareaBorderColor: "#333", - buttonColor: "#c23531", - buttonTextColor: "#fff" - }; - return defaultOption3; - }; - return DataView2; - }(ToolboxFeature) - ); - function tryMergeDataOption(newData, originalData) { - return map(newData, function(newVal, idx) { - var original = originalData && originalData[idx]; - if (isObject(original) && !isArray(original)) { - var newValIsObject = isObject(newVal) && !isArray(newVal); - if (!newValIsObject) { - newVal = { - value: newVal - }; - } - var shouldDeleteName = original.name != null && newVal.name == null; - newVal = defaults(newVal, original); - shouldDeleteName && delete newVal.name; - return newVal; - } else { - return newVal; - } - }); - } - registerAction({ - type: "changeDataView", - event: "dataViewChanged", - update: "prepareAndUpdate" - }, function(payload, ecModel) { - var newSeriesOptList = []; - each(payload.newOption.series, function(seriesOpt) { - var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0]; - if (!seriesModel) { - newSeriesOptList.push(extend({ - // Default is scatter - type: "scatter" - }, seriesOpt)); - } else { - var originalData = seriesModel.get("data"); - newSeriesOptList.push({ - name: seriesOpt.name, - data: tryMergeDataOption(seriesOpt.data, originalData) - }); - } - }); - ecModel.mergeOption(defaults({ - series: newSeriesOptList - }, payload.newOption)); - }); - var DataView_default = DataView; - - // node_modules/echarts/lib/component/dataZoom/history.js - var each10 = each; - var inner16 = makeInner(); - function push(ecModel, newSnapshot) { - var storedSnapshots = getStoreSnapshots(ecModel); - each10(newSnapshot, function(batchItem, dataZoomId) { - var i = storedSnapshots.length - 1; - for (; i >= 0; i--) { - var snapshot = storedSnapshots[i]; - if (snapshot[dataZoomId]) { - break; - } - } - if (i < 0) { - var dataZoomModel = ecModel.queryComponents({ - mainType: "dataZoom", - subType: "select", - id: dataZoomId - })[0]; - if (dataZoomModel) { - var percentRange = dataZoomModel.getPercentRange(); - storedSnapshots[0][dataZoomId] = { - dataZoomId, - start: percentRange[0], - end: percentRange[1] - }; - } - } - }); - storedSnapshots.push(newSnapshot); - } - function pop(ecModel) { - var storedSnapshots = getStoreSnapshots(ecModel); - var head = storedSnapshots[storedSnapshots.length - 1]; - storedSnapshots.length > 1 && storedSnapshots.pop(); - var snapshot = {}; - each10(head, function(batchItem, dataZoomId) { - for (var i = storedSnapshots.length - 1; i >= 0; i--) { - batchItem = storedSnapshots[i][dataZoomId]; - if (batchItem) { - snapshot[dataZoomId] = batchItem; - break; - } - } - }); - return snapshot; - } - function clear2(ecModel) { - inner16(ecModel).snapshots = null; - } - function count(ecModel) { - return getStoreSnapshots(ecModel).length; - } - function getStoreSnapshots(ecModel) { - var store = inner16(ecModel); - if (!store.snapshots) { - store.snapshots = [{}]; - } - return store.snapshots; - } - - // node_modules/echarts/lib/component/toolbox/feature/Restore.js - var RestoreOption = ( - /** @class */ - function(_super) { - __extends(RestoreOption2, _super); - function RestoreOption2() { - return _super !== null && _super.apply(this, arguments) || this; - } - RestoreOption2.prototype.onclick = function(ecModel, api) { - clear2(ecModel); - api.dispatchAction({ - type: "restore", - from: this.uid - }); - }; - RestoreOption2.getDefaultOption = function(ecModel) { - var defaultOption3 = { - show: true, - // eslint-disable-next-line - icon: "M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5", - title: ecModel.getLocaleModel().get(["toolbox", "restore", "title"]) - }; - return defaultOption3; - }; - return RestoreOption2; - }(ToolboxFeature) - ); - registerAction({ - type: "restore", - event: "restore", - update: "prepareAndUpdate" - }, function(payload, ecModel) { - ecModel.resetOption("recreate"); - }); - var Restore_default = RestoreOption; - - // node_modules/echarts/lib/component/helper/BrushTargetManager.js - var INCLUDE_FINDER_MAIN_TYPES = ["grid", "xAxis", "yAxis", "geo", "graph", "polar", "radiusAxis", "angleAxis", "bmap"]; - var BrushTargetManager = ( - /** @class */ - function() { - function BrushTargetManager2(finder, ecModel, opt) { - var _this = this; - this._targetInfoList = []; - var foundCpts = parseFinder2(ecModel, finder); - each(targetInfoBuilders, function(builder, type) { - if (!opt || !opt.include || indexOf(opt.include, type) >= 0) { - builder(foundCpts, _this._targetInfoList); - } - }); - } - BrushTargetManager2.prototype.setOutputRanges = function(areas, ecModel) { - this.matchOutputRanges(areas, ecModel, function(area, coordRange, coordSys) { - (area.coordRanges || (area.coordRanges = [])).push(coordRange); - if (!area.coordRange) { - area.coordRange = coordRange; - var result = coordConvert[area.brushType](0, coordSys, coordRange); - area.__rangeOffset = { - offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]), - xyMinMax: result.xyMinMax - }; - } - }); - return areas; - }; - BrushTargetManager2.prototype.matchOutputRanges = function(areas, ecModel, cb) { - each(areas, function(area) { - var targetInfo = this.findTargetInfo(area, ecModel); - if (targetInfo && targetInfo !== true) { - each(targetInfo.coordSyses, function(coordSys) { - var result = coordConvert[area.brushType](1, coordSys, area.range, true); - cb(area, result.values, coordSys, ecModel); - }); - } - }, this); - }; - BrushTargetManager2.prototype.setInputRanges = function(areas, ecModel) { - each(areas, function(area) { - var targetInfo = this.findTargetInfo(area, ecModel); - if (true) { - assert(!targetInfo || targetInfo === true || area.coordRange, "coordRange must be specified when coord index specified."); - assert(!targetInfo || targetInfo !== true || area.range, "range must be specified in global brush."); - } - area.range = area.range || []; - if (targetInfo && targetInfo !== true) { - area.panelId = targetInfo.panelId; - var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange); - var rangeOffset = area.__rangeOffset; - area.range = rangeOffset ? diffProcessor[area.brushType](result.values, rangeOffset.offset, getScales(result.xyMinMax, rangeOffset.xyMinMax)) : result.values; - } - }, this); - }; - BrushTargetManager2.prototype.makePanelOpts = function(api, getDefaultBrushType) { - return map(this._targetInfoList, function(targetInfo) { - var rect = targetInfo.getPanelRect(); - return { - panelId: targetInfo.panelId, - defaultBrushType: getDefaultBrushType ? getDefaultBrushType(targetInfo) : null, - clipPath: makeRectPanelClipPath(rect), - isTargetByCursor: makeRectIsTargetByCursor(rect, api, targetInfo.coordSysModel), - getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect) - }; - }); - }; - BrushTargetManager2.prototype.controlSeries = function(area, seriesModel, ecModel) { - var targetInfo = this.findTargetInfo(area, ecModel); - return targetInfo === true || targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0; - }; - BrushTargetManager2.prototype.findTargetInfo = function(area, ecModel) { - var targetInfoList = this._targetInfoList; - var foundCpts = parseFinder2(ecModel, area); - for (var i = 0; i < targetInfoList.length; i++) { - var targetInfo = targetInfoList[i]; - var areaPanelId = area.panelId; - if (areaPanelId) { - if (targetInfo.panelId === areaPanelId) { - return targetInfo; - } - } else { - for (var j = 0; j < targetInfoMatchers.length; j++) { - if (targetInfoMatchers[j](foundCpts, targetInfo)) { - return targetInfo; - } - } - } - } - return true; - }; - return BrushTargetManager2; - }() - ); - function formatMinMax(minMax) { - minMax[0] > minMax[1] && minMax.reverse(); - return minMax; - } - function parseFinder2(ecModel, finder) { - return parseFinder(ecModel, finder, { - includeMainTypes: INCLUDE_FINDER_MAIN_TYPES - }); - } - var targetInfoBuilders = { - grid: function(foundCpts, targetInfoList) { - var xAxisModels = foundCpts.xAxisModels; - var yAxisModels = foundCpts.yAxisModels; - var gridModels = foundCpts.gridModels; - var gridModelMap = createHashMap(); - var xAxesHas = {}; - var yAxesHas = {}; - if (!xAxisModels && !yAxisModels && !gridModels) { - return; - } - each(xAxisModels, function(axisModel) { - var gridModel = axisModel.axis.grid.model; - gridModelMap.set(gridModel.id, gridModel); - xAxesHas[gridModel.id] = true; - }); - each(yAxisModels, function(axisModel) { - var gridModel = axisModel.axis.grid.model; - gridModelMap.set(gridModel.id, gridModel); - yAxesHas[gridModel.id] = true; - }); - each(gridModels, function(gridModel) { - gridModelMap.set(gridModel.id, gridModel); - xAxesHas[gridModel.id] = true; - yAxesHas[gridModel.id] = true; - }); - gridModelMap.each(function(gridModel) { - var grid = gridModel.coordinateSystem; - var cartesians = []; - each(grid.getCartesians(), function(cartesian, index) { - if (indexOf(xAxisModels, cartesian.getAxis("x").model) >= 0 || indexOf(yAxisModels, cartesian.getAxis("y").model) >= 0) { - cartesians.push(cartesian); - } - }); - targetInfoList.push({ - panelId: "grid--" + gridModel.id, - gridModel, - coordSysModel: gridModel, - // Use the first one as the representitive coordSys. - coordSys: cartesians[0], - coordSyses: cartesians, - getPanelRect: panelRectBuilders.grid, - xAxisDeclared: xAxesHas[gridModel.id], - yAxisDeclared: yAxesHas[gridModel.id] - }); - }); - }, - geo: function(foundCpts, targetInfoList) { - each(foundCpts.geoModels, function(geoModel) { - var coordSys = geoModel.coordinateSystem; - targetInfoList.push({ - panelId: "geo--" + geoModel.id, - geoModel, - coordSysModel: geoModel, - coordSys, - coordSyses: [coordSys], - getPanelRect: panelRectBuilders.geo - }); - }); - } - }; - var targetInfoMatchers = [ - // grid - function(foundCpts, targetInfo) { - var xAxisModel = foundCpts.xAxisModel; - var yAxisModel = foundCpts.yAxisModel; - var gridModel = foundCpts.gridModel; - !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model); - !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model); - return gridModel && gridModel === targetInfo.gridModel; - }, - // geo - function(foundCpts, targetInfo) { - var geoModel = foundCpts.geoModel; - return geoModel && geoModel === targetInfo.geoModel; - } - ]; - var panelRectBuilders = { - grid: function() { - return this.coordSys.master.getRect().clone(); - }, - geo: function() { - var coordSys = this.coordSys; - var rect = coordSys.getBoundingRect().clone(); - rect.applyTransform(getTransform(coordSys)); - return rect; - } - }; - var coordConvert = { - lineX: curry(axisConvert, 0), - lineY: curry(axisConvert, 1), - rect: function(to, coordSys, rangeOrCoordRange, clamp3) { - var xminymin = to ? coordSys.pointToData([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]], clamp3) : coordSys.dataToPoint([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]], clamp3); - var xmaxymax = to ? coordSys.pointToData([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]], clamp3) : coordSys.dataToPoint([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]], clamp3); - var values = [formatMinMax([xminymin[0], xmaxymax[0]]), formatMinMax([xminymin[1], xmaxymax[1]])]; - return { - values, - xyMinMax: values - }; - }, - polygon: function(to, coordSys, rangeOrCoordRange, clamp3) { - var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]]; - var values = map(rangeOrCoordRange, function(item) { - var p = to ? coordSys.pointToData(item, clamp3) : coordSys.dataToPoint(item, clamp3); - xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]); - xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]); - xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]); - xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]); - return p; - }); - return { - values, - xyMinMax - }; - } - }; - function axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) { - if (true) { - assert(coordSys.type === "cartesian2d", "lineX/lineY brush is available only in cartesian2d."); - } - var axis = coordSys.getAxis(["x", "y"][axisNameIndex]); - var values = formatMinMax(map([0, 1], function(i) { - return to ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i]), true) : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i])); - })); - var xyMinMax = []; - xyMinMax[axisNameIndex] = values; - xyMinMax[1 - axisNameIndex] = [NaN, NaN]; - return { - values, - xyMinMax - }; - } - var diffProcessor = { - lineX: curry(axisDiffProcessor, 0), - lineY: curry(axisDiffProcessor, 1), - rect: function(values, refer, scales) { - return [[values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]], [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]]; - }, - polygon: function(values, refer, scales) { - return map(values, function(item, idx) { - return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]]; - }); - } - }; - function axisDiffProcessor(axisNameIndex, values, refer, scales) { - return [values[0] - scales[axisNameIndex] * refer[0], values[1] - scales[axisNameIndex] * refer[1]]; - } - function getScales(xyMinMaxCurr, xyMinMaxOrigin) { - var sizeCurr = getSize2(xyMinMaxCurr); - var sizeOrigin = getSize2(xyMinMaxOrigin); - var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]]; - isNaN(scales[0]) && (scales[0] = 1); - isNaN(scales[1]) && (scales[1] = 1); - return scales; - } - function getSize2(xyMinMax) { - return xyMinMax ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]] : [NaN, NaN]; - } - var BrushTargetManager_default = BrushTargetManager; - - // node_modules/echarts/lib/component/toolbox/feature/DataZoom.js - var each11 = each; - var DATA_ZOOM_ID_BASE = makeInternalComponentId("toolbox-dataZoom_"); - var DataZoomFeature = ( - /** @class */ - function(_super) { - __extends(DataZoomFeature2, _super); - function DataZoomFeature2() { - return _super !== null && _super.apply(this, arguments) || this; - } - DataZoomFeature2.prototype.render = function(featureModel, ecModel, api, payload) { - if (!this._brushController) { - this._brushController = new BrushController_default(api.getZr()); - this._brushController.on("brush", bind(this._onBrush, this)).mount(); - } - updateZoomBtnStatus(featureModel, ecModel, this, payload, api); - updateBackBtnStatus(featureModel, ecModel); - }; - DataZoomFeature2.prototype.onclick = function(ecModel, api, type) { - handlers2[type].call(this); - }; - DataZoomFeature2.prototype.remove = function(ecModel, api) { - this._brushController && this._brushController.unmount(); - }; - DataZoomFeature2.prototype.dispose = function(ecModel, api) { - this._brushController && this._brushController.dispose(); - }; - DataZoomFeature2.prototype._onBrush = function(eventParam) { - var areas = eventParam.areas; - if (!eventParam.isEnd || !areas.length) { - return; - } - var snapshot = {}; - var ecModel = this.ecModel; - this._brushController.updateCovers([]); - var brushTargetManager = new BrushTargetManager_default(makeAxisFinder(this.model), ecModel, { - include: ["grid"] - }); - brushTargetManager.matchOutputRanges(areas, ecModel, function(area, coordRange, coordSys) { - if (coordSys.type !== "cartesian2d") { - return; - } - var brushType = area.brushType; - if (brushType === "rect") { - setBatch("x", coordSys, coordRange[0]); - setBatch("y", coordSys, coordRange[1]); - } else { - setBatch({ - lineX: "x", - lineY: "y" - }[brushType], coordSys, coordRange); - } - }); - push(ecModel, snapshot); - this._dispatchZoomAction(snapshot); - function setBatch(dimName, coordSys, minMax) { - var axis = coordSys.getAxis(dimName); - var axisModel = axis.model; - var dataZoomModel = findDataZoom(dimName, axisModel, ecModel); - var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy(axisModel).getMinMaxSpan(); - if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) { - minMax = sliderMove(0, minMax.slice(), axis.scale.getExtent(), 0, minMaxSpan.minValueSpan, minMaxSpan.maxValueSpan); - } - dataZoomModel && (snapshot[dataZoomModel.id] = { - dataZoomId: dataZoomModel.id, - startValue: minMax[0], - endValue: minMax[1] - }); - } - function findDataZoom(dimName, axisModel, ecModel2) { - var found; - ecModel2.eachComponent({ - mainType: "dataZoom", - subType: "select" - }, function(dzModel) { - var has3 = dzModel.getAxisModel(dimName, axisModel.componentIndex); - has3 && (found = dzModel); - }); - return found; - } - }; - ; - DataZoomFeature2.prototype._dispatchZoomAction = function(snapshot) { - var batch = []; - each11(snapshot, function(batchItem, dataZoomId) { - batch.push(clone(batchItem)); - }); - batch.length && this.api.dispatchAction({ - type: "dataZoom", - from: this.uid, - batch - }); - }; - DataZoomFeature2.getDefaultOption = function(ecModel) { - var defaultOption3 = { - show: true, - filterMode: "filter", - // Icon group - icon: { - zoom: "M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1", - back: "M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26" - }, - // `zoom`, `back` - title: ecModel.getLocaleModel().get(["toolbox", "dataZoom", "title"]), - brushStyle: { - borderWidth: 0, - color: "rgba(210,219,238,0.2)" - } - }; - return defaultOption3; - }; - return DataZoomFeature2; - }(ToolboxFeature) - ); - var handlers2 = { - zoom: function() { - var nextActive = !this._isZoomActive; - this.api.dispatchAction({ - type: "takeGlobalCursor", - key: "dataZoomSelect", - dataZoomSelectActive: nextActive - }); - }, - back: function() { - this._dispatchZoomAction(pop(this.ecModel)); - } - }; - function makeAxisFinder(dzFeatureModel) { - var setting = { - xAxisIndex: dzFeatureModel.get("xAxisIndex", true), - yAxisIndex: dzFeatureModel.get("yAxisIndex", true), - xAxisId: dzFeatureModel.get("xAxisId", true), - yAxisId: dzFeatureModel.get("yAxisId", true) - }; - if (setting.xAxisIndex == null && setting.xAxisId == null) { - setting.xAxisIndex = "all"; - } - if (setting.yAxisIndex == null && setting.yAxisId == null) { - setting.yAxisIndex = "all"; - } - return setting; - } - function updateBackBtnStatus(featureModel, ecModel) { - featureModel.setIconStatus("back", count(ecModel) > 1 ? "emphasis" : "normal"); - } - function updateZoomBtnStatus(featureModel, ecModel, view, payload, api) { - var zoomActive = view._isZoomActive; - if (payload && payload.type === "takeGlobalCursor") { - zoomActive = payload.key === "dataZoomSelect" ? payload.dataZoomSelectActive : false; - } - view._isZoomActive = zoomActive; - featureModel.setIconStatus("zoom", zoomActive ? "emphasis" : "normal"); - var brushTargetManager = new BrushTargetManager_default(makeAxisFinder(featureModel), ecModel, { - include: ["grid"] - }); - var panels = brushTargetManager.makePanelOpts(api, function(targetInfo) { - return targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared ? "lineX" : !targetInfo.xAxisDeclared && targetInfo.yAxisDeclared ? "lineY" : "rect"; - }); - view._brushController.setPanels(panels).enableBrush(zoomActive && panels.length ? { - brushType: "auto", - brushStyle: featureModel.getModel("brushStyle").getItemStyle() - } : false); - } - registerInternalOptionCreator("dataZoom", function(ecModel) { - var toolboxModel = ecModel.getComponent("toolbox", 0); - var featureDataZoomPath = ["feature", "dataZoom"]; - if (!toolboxModel || toolboxModel.get(featureDataZoomPath) == null) { - return; - } - var dzFeatureModel = toolboxModel.getModel(featureDataZoomPath); - var dzOptions = []; - var finder = makeAxisFinder(dzFeatureModel); - var finderResult = parseFinder(ecModel, finder); - each11(finderResult.xAxisModels, function(axisModel) { - return buildInternalOptions(axisModel, "xAxis", "xAxisIndex"); - }); - each11(finderResult.yAxisModels, function(axisModel) { - return buildInternalOptions(axisModel, "yAxis", "yAxisIndex"); - }); - function buildInternalOptions(axisModel, axisMainType, axisIndexPropName) { - var axisIndex = axisModel.componentIndex; - var newOpt = { - type: "select", - $fromToolbox: true, - // Default to be filter - filterMode: dzFeatureModel.get("filterMode", true) || "filter", - // Id for merge mapping. - id: DATA_ZOOM_ID_BASE + axisMainType + axisIndex - }; - newOpt[axisIndexPropName] = axisIndex; - dzOptions.push(newOpt); - } - return dzOptions; - }); - var DataZoom_default = DataZoomFeature; - - // node_modules/echarts/lib/component/toolbox/install.js - function install36(registers) { - registers.registerComponentModel(ToolboxModel_default); - registers.registerComponentView(ToolboxView_default); - registerFeature("saveAsImage", SaveAsImage_default); - registerFeature("magicType", MagicType_default); - registerFeature("dataView", DataView_default); - registerFeature("dataZoom", DataZoom_default); - registerFeature("restore", Restore_default); - use(install35); - } - - // node_modules/echarts/lib/component/tooltip/TooltipModel.js - var TooltipModel = ( - /** @class */ - function(_super) { - __extends(TooltipModel2, _super); - function TooltipModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TooltipModel2.type; - return _this; - } - TooltipModel2.type = "tooltip"; - TooltipModel2.dependencies = ["axisPointer"]; - TooltipModel2.defaultOption = { - // zlevel: 0, - z: 60, - show: true, - // tooltip main content - showContent: true, - // 'trigger' only works on coordinate system. - // 'item' | 'axis' | 'none' - trigger: "item", - // 'click' | 'mousemove' | 'none' - triggerOn: "mousemove|click", - alwaysShowContent: false, - displayMode: "single", - renderMode: "auto", - // whether restraint content inside viewRect. - // If renderMode: 'richText', default true. - // If renderMode: 'html', defaut false (for backward compat). - confine: null, - showDelay: 0, - hideDelay: 100, - // Animation transition time, unit is second - transitionDuration: 0.4, - enterable: false, - backgroundColor: "#fff", - // box shadow - shadowBlur: 10, - shadowColor: "rgba(0, 0, 0, .2)", - shadowOffsetX: 1, - shadowOffsetY: 2, - // tooltip border radius, unit is px, default is 4 - borderRadius: 4, - // tooltip border width, unit is px, default is 0 (no border) - borderWidth: 1, - // Tooltip inside padding, default is 5 for all direction - // Array is allowed to set up, right, bottom, left, same with css - // The default value: See `tooltip/tooltipMarkup.ts#getPaddingFromTooltipModel`. - padding: null, - // Extra css text - extraCssText: "", - // axis indicator, trigger by axis - axisPointer: { - // default is line - // legal values: 'line' | 'shadow' | 'cross' - type: "line", - // Valid when type is line, appoint tooltip line locate on which line. Optional - // legal values: 'x' | 'y' | 'angle' | 'radius' | 'auto' - // default is 'auto', chose the axis which type is category. - // for multiply y axis, cartesian coord chose x axis, polar chose angle axis - axis: "auto", - animation: "auto", - animationDurationUpdate: 200, - animationEasingUpdate: "exponentialOut", - crossStyle: { - color: "#999", - width: 1, - type: "dashed", - // TODO formatter - textStyle: {} - } - // lineStyle and shadowStyle should not be specified here, - // otherwise it will always override those styles on option.axisPointer. - }, - textStyle: { - color: "#666", - fontSize: 14 - } - }; - return TooltipModel2; - }(Component_default) - ); - var TooltipModel_default = TooltipModel; - - // node_modules/echarts/lib/component/tooltip/helper.js - function shouldTooltipConfine(tooltipModel) { - var confineOption = tooltipModel.get("confine"); - return confineOption != null ? !!confineOption : tooltipModel.get("renderMode") === "richText"; - } - function testStyle(styleProps) { - if (!env_default.domSupported) { - return; - } - var style = document.documentElement.style; - for (var i = 0, len2 = styleProps.length; i < len2; i++) { - if (styleProps[i] in style) { - return styleProps[i]; - } - } - } - var TRANSFORM_VENDOR = testStyle(["transform", "webkitTransform", "OTransform", "MozTransform", "msTransform"]); - var TRANSITION_VENDOR = testStyle(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]); - function toCSSVendorPrefix(styleVendor, styleProp) { - if (!styleVendor) { - return styleProp; - } - styleProp = toCamelCase(styleProp, true); - var idx = styleVendor.indexOf(styleProp); - styleVendor = idx === -1 ? styleProp : "-" + styleVendor.slice(0, idx) + "-" + styleProp; - return styleVendor.toLowerCase(); - } - function getComputedStyle(el, style) { - var stl = el.currentStyle || document.defaultView && document.defaultView.getComputedStyle(el); - return stl ? style ? stl[style] : stl : null; - } - - // node_modules/echarts/lib/component/tooltip/TooltipHTMLContent.js - var CSS_TRANSITION_VENDOR = toCSSVendorPrefix(TRANSITION_VENDOR, "transition"); - var CSS_TRANSFORM_VENDOR = toCSSVendorPrefix(TRANSFORM_VENDOR, "transform"); - var gCssText = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;" + (env_default.transform3dSupported ? "will-change:transform;" : ""); - function mirrorPos(pos) { - pos = pos === "left" ? "right" : pos === "right" ? "left" : pos === "top" ? "bottom" : "top"; - return pos; - } - function assembleArrow(tooltipModel, borderColor, arrowPosition) { - if (!isString(arrowPosition) || arrowPosition === "inside") { - return ""; - } - var backgroundColor2 = tooltipModel.get("backgroundColor"); - var borderWidth = tooltipModel.get("borderWidth"); - borderColor = convertToColorString(borderColor); - var arrowPos = mirrorPos(arrowPosition); - var arrowSize = Math.max(Math.round(borderWidth) * 1.5, 6); - var positionStyle = ""; - var transformStyle = CSS_TRANSFORM_VENDOR + ":"; - var rotateDeg; - if (indexOf(["left", "right"], arrowPos) > -1) { - positionStyle += "top:50%"; - transformStyle += "translateY(-50%) rotate(" + (rotateDeg = arrowPos === "left" ? -225 : -45) + "deg)"; - } else { - positionStyle += "left:50%"; - transformStyle += "translateX(-50%) rotate(" + (rotateDeg = arrowPos === "top" ? 225 : 45) + "deg)"; - } - var rotateRadian = rotateDeg * Math.PI / 180; - var arrowWH = arrowSize + borderWidth; - var rotatedWH = arrowWH * Math.abs(Math.cos(rotateRadian)) + arrowWH * Math.abs(Math.sin(rotateRadian)); - var arrowOffset = Math.round(((rotatedWH - Math.SQRT2 * borderWidth) / 2 + Math.SQRT2 * borderWidth - (rotatedWH - arrowWH) / 2) * 100) / 100; - positionStyle += ";" + arrowPos + ":-" + arrowOffset + "px"; - var borderStyle = borderColor + " solid " + borderWidth + "px;"; - var styleCss = ["position:absolute;width:" + arrowSize + "px;height:" + arrowSize + "px;z-index:-1;", positionStyle + ";" + transformStyle + ";", "border-bottom:" + borderStyle, "border-right:" + borderStyle, "background-color:" + backgroundColor2 + ";"]; - return '
'; - } - function assembleTransition(duration, onlyFade) { - var transitionCurve = "cubic-bezier(0.23,1,0.32,1)"; - var transitionOption = " " + duration / 2 + "s " + transitionCurve; - var transitionText = "opacity" + transitionOption + ",visibility" + transitionOption; - if (!onlyFade) { - transitionOption = " " + duration + "s " + transitionCurve; - transitionText += env_default.transformSupported ? "," + CSS_TRANSFORM_VENDOR + transitionOption : ",left" + transitionOption + ",top" + transitionOption; - } - return CSS_TRANSITION_VENDOR + ":" + transitionText; - } - function assembleTransform(x, y, toString) { - var x0 = x.toFixed(0) + "px"; - var y0 = y.toFixed(0) + "px"; - if (!env_default.transformSupported) { - return toString ? "top:" + y0 + ";left:" + x0 + ";" : [["top", y0], ["left", x0]]; - } - var is3d = env_default.transform3dSupported; - var translate2 = "translate" + (is3d ? "3d" : "") + "(" + x0 + "," + y0 + (is3d ? ",0" : "") + ")"; - return toString ? "top:0;left:0;" + CSS_TRANSFORM_VENDOR + ":" + translate2 + ";" : [["top", 0], ["left", 0], [TRANSFORM_VENDOR, translate2]]; - } - function assembleFont(textStyleModel) { - var cssText = []; - var fontSize = textStyleModel.get("fontSize"); - var color = textStyleModel.getTextColor(); - color && cssText.push("color:" + color); - cssText.push("font:" + textStyleModel.getFont()); - var lineHeight = retrieve2(textStyleModel.get("lineHeight"), Math.round(fontSize * 3 / 2)); - fontSize && cssText.push("line-height:" + lineHeight + "px"); - var shadowColor = textStyleModel.get("textShadowColor"); - var shadowBlur = textStyleModel.get("textShadowBlur") || 0; - var shadowOffsetX = textStyleModel.get("textShadowOffsetX") || 0; - var shadowOffsetY = textStyleModel.get("textShadowOffsetY") || 0; - shadowColor && shadowBlur && cssText.push("text-shadow:" + shadowOffsetX + "px " + shadowOffsetY + "px " + shadowBlur + "px " + shadowColor); - each(["decoration", "align"], function(name) { - var val = textStyleModel.get(name); - val && cssText.push("text-" + name + ":" + val); - }); - return cssText.join(";"); - } - function assembleCssText(tooltipModel, enableTransition, onlyFade) { - var cssText = []; - var transitionDuration = tooltipModel.get("transitionDuration"); - var backgroundColor2 = tooltipModel.get("backgroundColor"); - var shadowBlur = tooltipModel.get("shadowBlur"); - var shadowColor = tooltipModel.get("shadowColor"); - var shadowOffsetX = tooltipModel.get("shadowOffsetX"); - var shadowOffsetY = tooltipModel.get("shadowOffsetY"); - var textStyleModel = tooltipModel.getModel("textStyle"); - var padding = getPaddingFromTooltipModel(tooltipModel, "html"); - var boxShadow = shadowOffsetX + "px " + shadowOffsetY + "px " + shadowBlur + "px " + shadowColor; - cssText.push("box-shadow:" + boxShadow); - enableTransition && transitionDuration && cssText.push(assembleTransition(transitionDuration, onlyFade)); - if (backgroundColor2) { - cssText.push("background-color:" + backgroundColor2); - } - each(["width", "color", "radius"], function(name) { - var borderName = "border-" + name; - var camelCase = toCamelCase(borderName); - var val = tooltipModel.get(camelCase); - val != null && cssText.push(borderName + ":" + val + (name === "color" ? "" : "px")); - }); - cssText.push(assembleFont(textStyleModel)); - if (padding != null) { - cssText.push("padding:" + normalizeCssArray2(padding).join("px ") + "px"); - } - return cssText.join(";") + ";"; - } - function makeStyleCoord(out2, zr, container, zrX, zrY) { - var zrPainter = zr && zr.painter; - if (container) { - var zrViewportRoot = zrPainter && zrPainter.getViewportRoot(); - if (zrViewportRoot) { - transformLocalCoord(out2, zrViewportRoot, container, zrX, zrY); - } - } else { - out2[0] = zrX; - out2[1] = zrY; - var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset(); - if (viewportRootOffset) { - out2[0] += viewportRootOffset.offsetLeft; - out2[1] += viewportRootOffset.offsetTop; - } - } - out2[2] = out2[0] / zr.getWidth(); - out2[3] = out2[1] / zr.getHeight(); - } - var TooltipHTMLContent = ( - /** @class */ - function() { - function TooltipHTMLContent2(api, opt) { - this._show = false; - this._styleCoord = [0, 0, 0, 0]; - this._enterable = true; - this._alwaysShowContent = false; - this._firstShow = true; - this._longHide = true; - if (env_default.wxa) { - return null; - } - var el = document.createElement("div"); - el.domBelongToZr = true; - this.el = el; - var zr = this._zr = api.getZr(); - var appendTo = opt.appendTo; - var container = appendTo && (isString(appendTo) ? document.querySelector(appendTo) : isDom(appendTo) ? appendTo : isFunction(appendTo) && appendTo(api.getDom())); - makeStyleCoord(this._styleCoord, zr, container, api.getWidth() / 2, api.getHeight() / 2); - (container || api.getDom()).appendChild(el); - this._api = api; - this._container = container; - var self2 = this; - el.onmouseenter = function() { - if (self2._enterable) { - clearTimeout(self2._hideTimeout); - self2._show = true; - } - self2._inContent = true; - }; - el.onmousemove = function(e2) { - e2 = e2 || window.event; - if (!self2._enterable) { - var handler = zr.handler; - var zrViewportRoot = zr.painter.getViewportRoot(); - normalizeEvent(zrViewportRoot, e2, true); - handler.dispatch("mousemove", e2); - } - }; - el.onmouseleave = function() { - self2._inContent = false; - if (self2._enterable) { - if (self2._show) { - self2.hideLater(self2._hideDelay); - } - } - }; - } - TooltipHTMLContent2.prototype.update = function(tooltipModel) { - if (!this._container) { - var container = this._api.getDom(); - var position2 = getComputedStyle(container, "position"); - var domStyle = container.style; - if (domStyle.position !== "absolute" && position2 !== "absolute") { - domStyle.position = "relative"; - } - } - var alwaysShowContent = tooltipModel.get("alwaysShowContent"); - alwaysShowContent && this._moveIfResized(); - this._alwaysShowContent = alwaysShowContent; - this.el.className = tooltipModel.get("className") || ""; - }; - TooltipHTMLContent2.prototype.show = function(tooltipModel, nearPointColor) { - clearTimeout(this._hideTimeout); - clearTimeout(this._longHideTimeout); - var el = this.el; - var style = el.style; - var styleCoord = this._styleCoord; - if (!el.innerHTML) { - style.display = "none"; - } else { - style.cssText = gCssText + assembleCssText(tooltipModel, !this._firstShow, this._longHide) + assembleTransform(styleCoord[0], styleCoord[1], true) + ("border-color:" + convertToColorString(nearPointColor) + ";") + (tooltipModel.get("extraCssText") || "") + (";pointer-events:" + (this._enterable ? "auto" : "none")); - } - this._show = true; - this._firstShow = false; - this._longHide = false; - }; - TooltipHTMLContent2.prototype.setContent = function(content, markers, tooltipModel, borderColor, arrowPosition) { - var el = this.el; - if (content == null) { - el.innerHTML = ""; - return; - } - var arrow2 = ""; - if (isString(arrowPosition) && tooltipModel.get("trigger") === "item" && !shouldTooltipConfine(tooltipModel)) { - arrow2 = assembleArrow(tooltipModel, borderColor, arrowPosition); - } - if (isString(content)) { - el.innerHTML = content + arrow2; - } else if (content) { - el.innerHTML = ""; - if (!isArray(content)) { - content = [content]; - } - for (var i = 0; i < content.length; i++) { - if (isDom(content[i]) && content[i].parentNode !== el) { - el.appendChild(content[i]); - } - } - if (arrow2 && el.childNodes.length) { - var arrowEl = document.createElement("div"); - arrowEl.innerHTML = arrow2; - el.appendChild(arrowEl); - } - } - }; - TooltipHTMLContent2.prototype.setEnterable = function(enterable) { - this._enterable = enterable; - }; - TooltipHTMLContent2.prototype.getSize = function() { - var el = this.el; - return el ? [el.offsetWidth, el.offsetHeight] : [0, 0]; - }; - TooltipHTMLContent2.prototype.moveTo = function(zrX, zrY) { - if (!this.el) { - return; - } - var styleCoord = this._styleCoord; - makeStyleCoord(styleCoord, this._zr, this._container, zrX, zrY); - if (styleCoord[0] != null && styleCoord[1] != null) { - var style_1 = this.el.style; - var transforms = assembleTransform(styleCoord[0], styleCoord[1]); - each(transforms, function(transform2) { - style_1[transform2[0]] = transform2[1]; - }); - } - }; - TooltipHTMLContent2.prototype._moveIfResized = function() { - var ratioX = this._styleCoord[2]; - var ratioY = this._styleCoord[3]; - this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight()); - }; - TooltipHTMLContent2.prototype.hide = function() { - var _this = this; - var style = this.el.style; - style.visibility = "hidden"; - style.opacity = "0"; - env_default.transform3dSupported && (style.willChange = ""); - this._show = false; - this._longHideTimeout = setTimeout(function() { - return _this._longHide = true; - }, 500); - }; - TooltipHTMLContent2.prototype.hideLater = function(time) { - if (this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent) { - if (time) { - this._hideDelay = time; - this._show = false; - this._hideTimeout = setTimeout(bind(this.hide, this), time); - } else { - this.hide(); - } - } - }; - TooltipHTMLContent2.prototype.isShow = function() { - return this._show; - }; - TooltipHTMLContent2.prototype.dispose = function() { - clearTimeout(this._hideTimeout); - clearTimeout(this._longHideTimeout); - var parentNode2 = this.el.parentNode; - parentNode2 && parentNode2.removeChild(this.el); - this.el = this._container = null; - }; - return TooltipHTMLContent2; - }() - ); - var TooltipHTMLContent_default = TooltipHTMLContent; - - // node_modules/echarts/lib/component/tooltip/TooltipRichContent.js - var TooltipRichContent = ( - /** @class */ - function() { - function TooltipRichContent2(api) { - this._show = false; - this._styleCoord = [0, 0, 0, 0]; - this._alwaysShowContent = false; - this._enterable = true; - this._zr = api.getZr(); - makeStyleCoord2(this._styleCoord, this._zr, api.getWidth() / 2, api.getHeight() / 2); - } - TooltipRichContent2.prototype.update = function(tooltipModel) { - var alwaysShowContent = tooltipModel.get("alwaysShowContent"); - alwaysShowContent && this._moveIfResized(); - this._alwaysShowContent = alwaysShowContent; - }; - TooltipRichContent2.prototype.show = function() { - if (this._hideTimeout) { - clearTimeout(this._hideTimeout); - } - this.el.show(); - this._show = true; - }; - TooltipRichContent2.prototype.setContent = function(content, markupStyleCreator, tooltipModel, borderColor, arrowPosition) { - var _this = this; - if (isObject(content)) { - throwError(true ? "Passing DOM nodes as content is not supported in richText tooltip!" : ""); - } - if (this.el) { - this._zr.remove(this.el); - } - var textStyleModel = tooltipModel.getModel("textStyle"); - this.el = new Text_default({ - style: { - rich: markupStyleCreator.richTextStyles, - text: content, - lineHeight: 22, - borderWidth: 1, - borderColor, - textShadowColor: textStyleModel.get("textShadowColor"), - fill: tooltipModel.get(["textStyle", "color"]), - padding: getPaddingFromTooltipModel(tooltipModel, "richText"), - verticalAlign: "top", - align: "left" - }, - z: tooltipModel.get("z") - }); - each(["backgroundColor", "borderRadius", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"], function(propName) { - _this.el.style[propName] = tooltipModel.get(propName); - }); - each(["textShadowBlur", "textShadowOffsetX", "textShadowOffsetY"], function(propName) { - _this.el.style[propName] = textStyleModel.get(propName) || 0; - }); - this._zr.add(this.el); - var self2 = this; - this.el.on("mouseover", function() { - if (self2._enterable) { - clearTimeout(self2._hideTimeout); - self2._show = true; - } - self2._inContent = true; - }); - this.el.on("mouseout", function() { - if (self2._enterable) { - if (self2._show) { - self2.hideLater(self2._hideDelay); - } - } - self2._inContent = false; - }); - }; - TooltipRichContent2.prototype.setEnterable = function(enterable) { - this._enterable = enterable; - }; - TooltipRichContent2.prototype.getSize = function() { - var el = this.el; - var bounding = this.el.getBoundingRect(); - var shadowOuterSize = calcShadowOuterSize(el.style); - return [bounding.width + shadowOuterSize.left + shadowOuterSize.right, bounding.height + shadowOuterSize.top + shadowOuterSize.bottom]; - }; - TooltipRichContent2.prototype.moveTo = function(x, y) { - var el = this.el; - if (el) { - var styleCoord = this._styleCoord; - makeStyleCoord2(styleCoord, this._zr, x, y); - x = styleCoord[0]; - y = styleCoord[1]; - var style = el.style; - var borderWidth = mathMaxWith0(style.borderWidth || 0); - var shadowOuterSize = calcShadowOuterSize(style); - el.x = x + borderWidth + shadowOuterSize.left; - el.y = y + borderWidth + shadowOuterSize.top; - el.markRedraw(); - } - }; - TooltipRichContent2.prototype._moveIfResized = function() { - var ratioX = this._styleCoord[2]; - var ratioY = this._styleCoord[3]; - this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight()); - }; - TooltipRichContent2.prototype.hide = function() { - if (this.el) { - this.el.hide(); - } - this._show = false; - }; - TooltipRichContent2.prototype.hideLater = function(time) { - if (this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent) { - if (time) { - this._hideDelay = time; - this._show = false; - this._hideTimeout = setTimeout(bind(this.hide, this), time); - } else { - this.hide(); - } - } - }; - TooltipRichContent2.prototype.isShow = function() { - return this._show; - }; - TooltipRichContent2.prototype.dispose = function() { - this._zr.remove(this.el); - }; - return TooltipRichContent2; - }() - ); - function mathMaxWith0(val) { - return Math.max(0, val); - } - function calcShadowOuterSize(style) { - var shadowBlur = mathMaxWith0(style.shadowBlur || 0); - var shadowOffsetX = mathMaxWith0(style.shadowOffsetX || 0); - var shadowOffsetY = mathMaxWith0(style.shadowOffsetY || 0); - return { - left: mathMaxWith0(shadowBlur - shadowOffsetX), - right: mathMaxWith0(shadowBlur + shadowOffsetX), - top: mathMaxWith0(shadowBlur - shadowOffsetY), - bottom: mathMaxWith0(shadowBlur + shadowOffsetY) - }; - } - function makeStyleCoord2(out2, zr, zrX, zrY) { - out2[0] = zrX; - out2[1] = zrY; - out2[2] = out2[0] / zr.getWidth(); - out2[3] = out2[1] / zr.getHeight(); - } - var TooltipRichContent_default = TooltipRichContent; - - // node_modules/echarts/lib/component/tooltip/TooltipView.js - var proxyRect = new Rect_default({ - shape: { - x: -1, - y: -1, - width: 2, - height: 2 - } - }); - var TooltipView = ( - /** @class */ - function(_super) { - __extends(TooltipView2, _super); - function TooltipView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TooltipView2.type; - return _this; - } - TooltipView2.prototype.init = function(ecModel, api) { - if (env_default.node || !api.getDom()) { - return; - } - var tooltipModel = ecModel.getComponent("tooltip"); - var renderMode = this._renderMode = getTooltipRenderMode(tooltipModel.get("renderMode")); - this._tooltipContent = renderMode === "richText" ? new TooltipRichContent_default(api) : new TooltipHTMLContent_default(api, { - appendTo: tooltipModel.get("appendToBody", true) ? "body" : tooltipModel.get("appendTo", true) - }); - }; - TooltipView2.prototype.render = function(tooltipModel, ecModel, api) { - if (env_default.node || !api.getDom()) { - return; - } - this.group.removeAll(); - this._tooltipModel = tooltipModel; - this._ecModel = ecModel; - this._api = api; - var tooltipContent = this._tooltipContent; - tooltipContent.update(tooltipModel); - tooltipContent.setEnterable(tooltipModel.get("enterable")); - this._initGlobalListener(); - this._keepShow(); - if (this._renderMode !== "richText" && tooltipModel.get("transitionDuration")) { - createOrUpdate(this, "_updatePosition", 50, "fixRate"); - } else { - clear(this, "_updatePosition"); - } - }; - TooltipView2.prototype._initGlobalListener = function() { - var tooltipModel = this._tooltipModel; - var triggerOn = tooltipModel.get("triggerOn"); - register("itemTooltip", this._api, bind(function(currTrigger, e2, dispatchAction3) { - if (triggerOn !== "none") { - if (triggerOn.indexOf(currTrigger) >= 0) { - this._tryShow(e2, dispatchAction3); - } else if (currTrigger === "leave") { - this._hide(dispatchAction3); - } - } - }, this)); - }; - TooltipView2.prototype._keepShow = function() { - var tooltipModel = this._tooltipModel; - var ecModel = this._ecModel; - var api = this._api; - var triggerOn = tooltipModel.get("triggerOn"); - if (this._lastX != null && this._lastY != null && triggerOn !== "none" && triggerOn !== "click") { - var self_1 = this; - clearTimeout(this._refreshUpdateTimeout); - this._refreshUpdateTimeout = setTimeout(function() { - !api.isDisposed() && self_1.manuallyShowTip(tooltipModel, ecModel, api, { - x: self_1._lastX, - y: self_1._lastY, - dataByCoordSys: self_1._lastDataByCoordSys - }); - }); - } - }; - TooltipView2.prototype.manuallyShowTip = function(tooltipModel, ecModel, api, payload) { - if (payload.from === this.uid || env_default.node || !api.getDom()) { - return; - } - var dispatchAction3 = makeDispatchAction2(payload, api); - this._ticket = ""; - var dataByCoordSys = payload.dataByCoordSys; - var cmptRef = findComponentReference(payload, ecModel, api); - if (cmptRef) { - var rect = cmptRef.el.getBoundingRect().clone(); - rect.applyTransform(cmptRef.el.transform); - this._tryShow({ - offsetX: rect.x + rect.width / 2, - offsetY: rect.y + rect.height / 2, - target: cmptRef.el, - position: payload.position, - // When manully trigger, the mouse is not on the el, so we'd better to - // position tooltip on the bottom of the el and display arrow is possible. - positionDefault: "bottom" - }, dispatchAction3); - } else if (payload.tooltip && payload.x != null && payload.y != null) { - var el = proxyRect; - el.x = payload.x; - el.y = payload.y; - el.update(); - getECData(el).tooltipConfig = { - name: null, - option: payload.tooltip - }; - this._tryShow({ - offsetX: payload.x, - offsetY: payload.y, - target: el - }, dispatchAction3); - } else if (dataByCoordSys) { - this._tryShow({ - offsetX: payload.x, - offsetY: payload.y, - position: payload.position, - dataByCoordSys, - tooltipOption: payload.tooltipOption - }, dispatchAction3); - } else if (payload.seriesIndex != null) { - if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) { - return; - } - var pointInfo = findPointFromSeries(payload, ecModel); - var cx = pointInfo.point[0]; - var cy = pointInfo.point[1]; - if (cx != null && cy != null) { - this._tryShow({ - offsetX: cx, - offsetY: cy, - target: pointInfo.el, - position: payload.position, - // When manully trigger, the mouse is not on the el, so we'd better to - // position tooltip on the bottom of the el and display arrow is possible. - positionDefault: "bottom" - }, dispatchAction3); - } - } else if (payload.x != null && payload.y != null) { - api.dispatchAction({ - type: "updateAxisPointer", - x: payload.x, - y: payload.y - }); - this._tryShow({ - offsetX: payload.x, - offsetY: payload.y, - position: payload.position, - target: api.getZr().findHover(payload.x, payload.y).target - }, dispatchAction3); - } - }; - TooltipView2.prototype.manuallyHideTip = function(tooltipModel, ecModel, api, payload) { - var tooltipContent = this._tooltipContent; - if (this._tooltipModel) { - tooltipContent.hideLater(this._tooltipModel.get("hideDelay")); - } - this._lastX = this._lastY = this._lastDataByCoordSys = null; - if (payload.from !== this.uid) { - this._hide(makeDispatchAction2(payload, api)); - } - }; - TooltipView2.prototype._manuallyAxisShowTip = function(tooltipModel, ecModel, api, payload) { - var seriesIndex = payload.seriesIndex; - var dataIndex = payload.dataIndex; - var coordSysAxesInfo = ecModel.getComponent("axisPointer").coordSysAxesInfo; - if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) { - return; - } - var seriesModel = ecModel.getSeriesByIndex(seriesIndex); - if (!seriesModel) { - return; - } - var data = seriesModel.getData(); - var tooltipCascadedModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model], this._tooltipModel); - if (tooltipCascadedModel.get("trigger") !== "axis") { - return; - } - api.dispatchAction({ - type: "updateAxisPointer", - seriesIndex, - dataIndex, - position: payload.position - }); - return true; - }; - TooltipView2.prototype._tryShow = function(e2, dispatchAction3) { - var el = e2.target; - var tooltipModel = this._tooltipModel; - if (!tooltipModel) { - return; - } - this._lastX = e2.offsetX; - this._lastY = e2.offsetY; - var dataByCoordSys = e2.dataByCoordSys; - if (dataByCoordSys && dataByCoordSys.length) { - this._showAxisTooltip(dataByCoordSys, e2); - } else if (el) { - var ecData = getECData(el); - if (ecData.ssrType === "legend") { - return; - } - this._lastDataByCoordSys = null; - var seriesDispatcher_1; - var cmptDispatcher_1; - findEventDispatcher(el, function(target) { - if (getECData(target).dataIndex != null) { - seriesDispatcher_1 = target; - return true; - } - if (getECData(target).tooltipConfig != null) { - cmptDispatcher_1 = target; - return true; - } - }, true); - if (seriesDispatcher_1) { - this._showSeriesItemTooltip(e2, seriesDispatcher_1, dispatchAction3); - } else if (cmptDispatcher_1) { - this._showComponentItemTooltip(e2, cmptDispatcher_1, dispatchAction3); - } else { - this._hide(dispatchAction3); - } - } else { - this._lastDataByCoordSys = null; - this._hide(dispatchAction3); - } - }; - TooltipView2.prototype._showOrMove = function(tooltipModel, cb) { - var delay = tooltipModel.get("showDelay"); - cb = bind(cb, this); - clearTimeout(this._showTimout); - delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb(); - }; - TooltipView2.prototype._showAxisTooltip = function(dataByCoordSys, e2) { - var ecModel = this._ecModel; - var globalTooltipModel = this._tooltipModel; - var point = [e2.offsetX, e2.offsetY]; - var singleTooltipModel = buildTooltipModel([e2.tooltipOption], globalTooltipModel); - var renderMode = this._renderMode; - var cbParamsList = []; - var articleMarkup = createTooltipMarkup("section", { - blocks: [], - noHeader: true - }); - var markupTextArrLegacy = []; - var markupStyleCreator = new TooltipMarkupStyleCreator(); - each(dataByCoordSys, function(itemCoordSys) { - each(itemCoordSys.dataByAxis, function(axisItem) { - var axisModel = ecModel.getComponent(axisItem.axisDim + "Axis", axisItem.axisIndex); - var axisValue = axisItem.value; - if (!axisModel || axisValue == null) { - return; - } - var axisValueLabel = getValueLabel(axisValue, axisModel.axis, ecModel, axisItem.seriesDataIndices, axisItem.valueLabelOpt); - var axisSectionMarkup = createTooltipMarkup("section", { - header: axisValueLabel, - noHeader: !trim(axisValueLabel), - sortBlocks: true, - blocks: [] - }); - articleMarkup.blocks.push(axisSectionMarkup); - each(axisItem.seriesDataIndices, function(idxItem) { - var series = ecModel.getSeriesByIndex(idxItem.seriesIndex); - var dataIndex = idxItem.dataIndexInside; - var cbParams = series.getDataParams(dataIndex); - if (cbParams.dataIndex < 0) { - return; - } - cbParams.axisDim = axisItem.axisDim; - cbParams.axisIndex = axisItem.axisIndex; - cbParams.axisType = axisItem.axisType; - cbParams.axisId = axisItem.axisId; - cbParams.axisValue = getAxisRawValue(axisModel.axis, { - value: axisValue - }); - cbParams.axisValueLabel = axisValueLabel; - cbParams.marker = markupStyleCreator.makeTooltipMarker("item", convertToColorString(cbParams.color), renderMode); - var seriesTooltipResult = normalizeTooltipFormatResult(series.formatTooltip(dataIndex, true, null)); - var frag = seriesTooltipResult.frag; - if (frag) { - var valueFormatter = buildTooltipModel([series], globalTooltipModel).get("valueFormatter"); - axisSectionMarkup.blocks.push(valueFormatter ? extend({ - valueFormatter - }, frag) : frag); - } - if (seriesTooltipResult.text) { - markupTextArrLegacy.push(seriesTooltipResult.text); - } - cbParamsList.push(cbParams); - }); - }); - }); - articleMarkup.blocks.reverse(); - markupTextArrLegacy.reverse(); - var positionExpr = e2.position; - var orderMode = singleTooltipModel.get("order"); - var builtMarkupText = buildTooltipMarkup(articleMarkup, markupStyleCreator, renderMode, orderMode, ecModel.get("useUTC"), singleTooltipModel.get("textStyle")); - builtMarkupText && markupTextArrLegacy.unshift(builtMarkupText); - var blockBreak = renderMode === "richText" ? "\n\n" : "
"; - var allMarkupText = markupTextArrLegacy.join(blockBreak); - this._showOrMove(singleTooltipModel, function() { - if (this._updateContentNotChangedOnAxis(dataByCoordSys, cbParamsList)) { - this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, cbParamsList); - } else { - this._showTooltipContent(singleTooltipModel, allMarkupText, cbParamsList, Math.random() + "", point[0], point[1], positionExpr, null, markupStyleCreator); - } - }); - }; - TooltipView2.prototype._showSeriesItemTooltip = function(e2, dispatcher, dispatchAction3) { - var ecModel = this._ecModel; - var ecData = getECData(dispatcher); - var seriesIndex = ecData.seriesIndex; - var seriesModel = ecModel.getSeriesByIndex(seriesIndex); - var dataModel = ecData.dataModel || seriesModel; - var dataIndex = ecData.dataIndex; - var dataType = ecData.dataType; - var data = dataModel.getData(dataType); - var renderMode = this._renderMode; - var positionDefault = e2.positionDefault; - var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model], this._tooltipModel, positionDefault ? { - position: positionDefault - } : null); - var tooltipTrigger = tooltipModel.get("trigger"); - if (tooltipTrigger != null && tooltipTrigger !== "item") { - return; - } - var params = dataModel.getDataParams(dataIndex, dataType); - var markupStyleCreator = new TooltipMarkupStyleCreator(); - params.marker = markupStyleCreator.makeTooltipMarker("item", convertToColorString(params.color), renderMode); - var seriesTooltipResult = normalizeTooltipFormatResult(dataModel.formatTooltip(dataIndex, false, dataType)); - var orderMode = tooltipModel.get("order"); - var valueFormatter = tooltipModel.get("valueFormatter"); - var frag = seriesTooltipResult.frag; - var markupText = frag ? buildTooltipMarkup(valueFormatter ? extend({ - valueFormatter - }, frag) : frag, markupStyleCreator, renderMode, orderMode, ecModel.get("useUTC"), tooltipModel.get("textStyle")) : seriesTooltipResult.text; - var asyncTicket = "item_" + dataModel.name + "_" + dataIndex; - this._showOrMove(tooltipModel, function() { - this._showTooltipContent(tooltipModel, markupText, params, asyncTicket, e2.offsetX, e2.offsetY, e2.position, e2.target, markupStyleCreator); - }); - dispatchAction3({ - type: "showTip", - dataIndexInside: dataIndex, - dataIndex: data.getRawIndex(dataIndex), - seriesIndex, - from: this.uid - }); - }; - TooltipView2.prototype._showComponentItemTooltip = function(e2, el, dispatchAction3) { - var isHTMLRenderMode = this._renderMode === "html"; - var ecData = getECData(el); - var tooltipConfig = ecData.tooltipConfig; - var tooltipOpt = tooltipConfig.option || {}; - var encodeHTMLContent = tooltipOpt.encodeHTMLContent; - if (isString(tooltipOpt)) { - var content = tooltipOpt; - tooltipOpt = { - content, - // Fixed formatter - formatter: content - }; - encodeHTMLContent = true; - } - if (encodeHTMLContent && isHTMLRenderMode && tooltipOpt.content) { - tooltipOpt = clone(tooltipOpt); - tooltipOpt.content = encodeHTML(tooltipOpt.content); - } - var tooltipModelCascade = [tooltipOpt]; - var cmpt = this._ecModel.getComponent(ecData.componentMainType, ecData.componentIndex); - if (cmpt) { - tooltipModelCascade.push(cmpt); - } - tooltipModelCascade.push({ - formatter: tooltipOpt.content - }); - var positionDefault = e2.positionDefault; - var subTooltipModel = buildTooltipModel(tooltipModelCascade, this._tooltipModel, positionDefault ? { - position: positionDefault - } : null); - var defaultHtml = subTooltipModel.get("content"); - var asyncTicket = Math.random() + ""; - var markupStyleCreator = new TooltipMarkupStyleCreator(); - this._showOrMove(subTooltipModel, function() { - var formatterParams = clone(subTooltipModel.get("formatterParams") || {}); - this._showTooltipContent(subTooltipModel, defaultHtml, formatterParams, asyncTicket, e2.offsetX, e2.offsetY, e2.position, el, markupStyleCreator); - }); - dispatchAction3({ - type: "showTip", - from: this.uid - }); - }; - TooltipView2.prototype._showTooltipContent = function(tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markupStyleCreator) { - this._ticket = ""; - if (!tooltipModel.get("showContent") || !tooltipModel.get("show")) { - return; - } - var tooltipContent = this._tooltipContent; - tooltipContent.setEnterable(tooltipModel.get("enterable")); - var formatter = tooltipModel.get("formatter"); - positionExpr = positionExpr || tooltipModel.get("position"); - var html = defaultHtml; - var nearPoint = this._getNearestPoint([x, y], params, tooltipModel.get("trigger"), tooltipModel.get("borderColor")); - var nearPointColor = nearPoint.color; - if (formatter) { - if (isString(formatter)) { - var useUTC = tooltipModel.ecModel.get("useUTC"); - var params0 = isArray(params) ? params[0] : params; - var isTimeAxis = params0 && params0.axisType && params0.axisType.indexOf("time") >= 0; - html = formatter; - if (isTimeAxis) { - html = format(params0.axisValue, html, useUTC); - } - html = formatTpl(html, params, true); - } else if (isFunction(formatter)) { - var callback = bind(function(cbTicket, html2) { - if (cbTicket === this._ticket) { - tooltipContent.setContent(html2, markupStyleCreator, tooltipModel, nearPointColor, positionExpr); - this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el); - } - }, this); - this._ticket = asyncTicket; - html = formatter(params, asyncTicket, callback); - } else { - html = formatter; - } - } - tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPointColor, positionExpr); - tooltipContent.show(tooltipModel, nearPointColor); - this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el); - }; - TooltipView2.prototype._getNearestPoint = function(point, tooltipDataParams, trigger3, borderColor) { - if (trigger3 === "axis" || isArray(tooltipDataParams)) { - return { - color: borderColor || (this._renderMode === "html" ? "#fff" : "none") - }; - } - if (!isArray(tooltipDataParams)) { - return { - color: borderColor || tooltipDataParams.color || tooltipDataParams.borderColor - }; - } - }; - TooltipView2.prototype._updatePosition = function(tooltipModel, positionExpr, x, y, content, params, el) { - var viewWidth = this._api.getWidth(); - var viewHeight = this._api.getHeight(); - positionExpr = positionExpr || tooltipModel.get("position"); - var contentSize = content.getSize(); - var align = tooltipModel.get("align"); - var vAlign = tooltipModel.get("verticalAlign"); - var rect = el && el.getBoundingRect().clone(); - el && rect.applyTransform(el.transform); - if (isFunction(positionExpr)) { - positionExpr = positionExpr([x, y], params, content.el, rect, { - viewSize: [viewWidth, viewHeight], - contentSize: contentSize.slice() - }); - } - if (isArray(positionExpr)) { - x = parsePercent2(positionExpr[0], viewWidth); - y = parsePercent2(positionExpr[1], viewHeight); - } else if (isObject(positionExpr)) { - var boxLayoutPosition = positionExpr; - boxLayoutPosition.width = contentSize[0]; - boxLayoutPosition.height = contentSize[1]; - var layoutRect = getLayoutRect(boxLayoutPosition, { - width: viewWidth, - height: viewHeight - }); - x = layoutRect.x; - y = layoutRect.y; - align = null; - vAlign = null; - } else if (isString(positionExpr) && el) { - var pos = calcTooltipPosition(positionExpr, rect, contentSize, tooltipModel.get("borderWidth")); - x = pos[0]; - y = pos[1]; - } else { - var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20); - x = pos[0]; - y = pos[1]; - } - align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === "right" ? contentSize[0] : 0); - vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === "bottom" ? contentSize[1] : 0); - if (shouldTooltipConfine(tooltipModel)) { - var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight); - x = pos[0]; - y = pos[1]; - } - content.moveTo(x, y); - }; - TooltipView2.prototype._updateContentNotChangedOnAxis = function(dataByCoordSys, cbParamsList) { - var lastCoordSys = this._lastDataByCoordSys; - var lastCbParamsList = this._cbParamsList; - var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length; - contentNotChanged && each(lastCoordSys, function(lastItemCoordSys, indexCoordSys) { - var lastDataByAxis = lastItemCoordSys.dataByAxis || []; - var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {}; - var thisDataByAxis = thisItemCoordSys.dataByAxis || []; - contentNotChanged = contentNotChanged && lastDataByAxis.length === thisDataByAxis.length; - contentNotChanged && each(lastDataByAxis, function(lastItem, indexAxis) { - var thisItem = thisDataByAxis[indexAxis] || {}; - var lastIndices = lastItem.seriesDataIndices || []; - var newIndices = thisItem.seriesDataIndices || []; - contentNotChanged = contentNotChanged && lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length; - contentNotChanged && each(lastIndices, function(lastIdxItem, j) { - var newIdxItem = newIndices[j]; - contentNotChanged = contentNotChanged && lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex; - }); - lastCbParamsList && each(lastItem.seriesDataIndices, function(idxItem) { - var seriesIdx = idxItem.seriesIndex; - var cbParams = cbParamsList[seriesIdx]; - var lastCbParams = lastCbParamsList[seriesIdx]; - if (cbParams && lastCbParams && lastCbParams.data !== cbParams.data) { - contentNotChanged = false; - } - }); - }); - }); - this._lastDataByCoordSys = dataByCoordSys; - this._cbParamsList = cbParamsList; - return !!contentNotChanged; - }; - TooltipView2.prototype._hide = function(dispatchAction3) { - this._lastDataByCoordSys = null; - dispatchAction3({ - type: "hideTip", - from: this.uid - }); - }; - TooltipView2.prototype.dispose = function(ecModel, api) { - if (env_default.node || !api.getDom()) { - return; - } - clear(this, "_updatePosition"); - this._tooltipContent.dispose(); - unregister("itemTooltip", api); - }; - TooltipView2.type = "tooltip"; - return TooltipView2; - }(Component_default2) - ); - function buildTooltipModel(modelCascade, globalTooltipModel, defaultTooltipOption) { - var ecModel = globalTooltipModel.ecModel; - var resultModel; - if (defaultTooltipOption) { - resultModel = new Model_default(defaultTooltipOption, ecModel, ecModel); - resultModel = new Model_default(globalTooltipModel.option, resultModel, ecModel); - } else { - resultModel = globalTooltipModel; - } - for (var i = modelCascade.length - 1; i >= 0; i--) { - var tooltipOpt = modelCascade[i]; - if (tooltipOpt) { - if (tooltipOpt instanceof Model_default) { - tooltipOpt = tooltipOpt.get("tooltip", true); - } - if (isString(tooltipOpt)) { - tooltipOpt = { - formatter: tooltipOpt - }; - } - if (tooltipOpt) { - resultModel = new Model_default(tooltipOpt, resultModel, ecModel); - } - } - } - return resultModel; - } - function makeDispatchAction2(payload, api) { - return payload.dispatchAction || bind(api.dispatchAction, api); - } - function refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) { - var size2 = content.getSize(); - var width = size2[0]; - var height = size2[1]; - if (gapH != null) { - if (x + width + gapH + 2 > viewWidth) { - x -= width + gapH; - } else { - x += gapH; - } - } - if (gapV != null) { - if (y + height + gapV > viewHeight) { - y -= height + gapV; - } else { - y += gapV; - } - } - return [x, y]; - } - function confineTooltipPosition(x, y, content, viewWidth, viewHeight) { - var size2 = content.getSize(); - var width = size2[0]; - var height = size2[1]; - x = Math.min(x + width, viewWidth) - width; - y = Math.min(y + height, viewHeight) - height; - x = Math.max(x, 0); - y = Math.max(y, 0); - return [x, y]; - } - function calcTooltipPosition(position2, rect, contentSize, borderWidth) { - var domWidth = contentSize[0]; - var domHeight = contentSize[1]; - var offset3 = Math.ceil(Math.SQRT2 * borderWidth) + 8; - var x = 0; - var y = 0; - var rectWidth = rect.width; - var rectHeight = rect.height; - switch (position2) { - case "inside": - x = rect.x + rectWidth / 2 - domWidth / 2; - y = rect.y + rectHeight / 2 - domHeight / 2; - break; - case "top": - x = rect.x + rectWidth / 2 - domWidth / 2; - y = rect.y - domHeight - offset3; - break; - case "bottom": - x = rect.x + rectWidth / 2 - domWidth / 2; - y = rect.y + rectHeight + offset3; - break; - case "left": - x = rect.x - domWidth - offset3; - y = rect.y + rectHeight / 2 - domHeight / 2; - break; - case "right": - x = rect.x + rectWidth + offset3; - y = rect.y + rectHeight / 2 - domHeight / 2; - } - return [x, y]; - } - function isCenterAlign(align) { - return align === "center" || align === "middle"; - } - function findComponentReference(payload, ecModel, api) { - var queryOptionMap = preParseFinder(payload).queryOptionMap; - var componentMainType = queryOptionMap.keys()[0]; - if (!componentMainType || componentMainType === "series") { - return; - } - var queryResult = queryReferringComponents(ecModel, componentMainType, queryOptionMap.get(componentMainType), { - useDefault: false, - enableAll: false, - enableNone: false - }); - var model = queryResult.models[0]; - if (!model) { - return; - } - var view = api.getViewOfComponentModel(model); - var el; - view.group.traverse(function(subEl) { - var tooltipConfig = getECData(subEl).tooltipConfig; - if (tooltipConfig && tooltipConfig.name === payload.name) { - el = subEl; - return true; - } - }); - if (el) { - return { - componentMainType, - componentIndex: model.componentIndex, - el - }; - } - } - var TooltipView_default = TooltipView; - - // node_modules/echarts/lib/component/tooltip/install.js - function install37(registers) { - use(install29); - registers.registerComponentModel(TooltipModel_default); - registers.registerComponentView(TooltipView_default); - registers.registerAction({ - type: "showTip", - event: "showTip", - update: "tooltip:manuallyShowTip" - }, noop); - registers.registerAction({ - type: "hideTip", - event: "hideTip", - update: "tooltip:manuallyHideTip" - }, noop); - } - - // node_modules/echarts/lib/component/brush/preprocessor.js - var DEFAULT_TOOLBOX_BTNS = ["rect", "polygon", "keep", "clear"]; - function brushPreprocessor(option, isNew) { - var brushComponents = normalizeToArray(option ? option.brush : []); - if (!brushComponents.length) { - return; - } - var brushComponentSpecifiedBtns = []; - each(brushComponents, function(brushOpt) { - var tbs = brushOpt.hasOwnProperty("toolbox") ? brushOpt.toolbox : []; - if (tbs instanceof Array) { - brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs); - } - }); - var toolbox = option && option.toolbox; - if (isArray(toolbox)) { - toolbox = toolbox[0]; - } - if (!toolbox) { - toolbox = { - feature: {} - }; - option.toolbox = [toolbox]; - } - var toolboxFeature = toolbox.feature || (toolbox.feature = {}); - var toolboxBrush = toolboxFeature.brush || (toolboxFeature.brush = {}); - var brushTypes = toolboxBrush.type || (toolboxBrush.type = []); - brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns); - removeDuplicate(brushTypes); - if (isNew && !brushTypes.length) { - brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS); - } - } - function removeDuplicate(arr) { - var map3 = {}; - each(arr, function(val) { - map3[val] = 1; - }); - arr.length = 0; - each(map3, function(flag, val) { - arr.push(val); - }); - } - - // node_modules/echarts/lib/visual/visualSolution.js - var each12 = each; - function hasKeys(obj) { - if (obj) { - for (var name_1 in obj) { - if (obj.hasOwnProperty(name_1)) { - return true; - } - } - } - } - function createVisualMappings(option, stateList, supplementVisualOption) { - var visualMappings = {}; - each12(stateList, function(state) { - var mappings = visualMappings[state] = createMappings(); - each12(option[state], function(visualData, visualType) { - if (!VisualMapping_default.isValidType(visualType)) { - return; - } - var mappingOption = { - type: visualType, - visual: visualData - }; - supplementVisualOption && supplementVisualOption(mappingOption, state); - mappings[visualType] = new VisualMapping_default(mappingOption); - if (visualType === "opacity") { - mappingOption = clone(mappingOption); - mappingOption.type = "colorAlpha"; - mappings.__hidden.__alphaForOpacity = new VisualMapping_default(mappingOption); - } - }); - }); - return visualMappings; - function createMappings() { - var Creater = function() { - }; - Creater.prototype.__hidden = Creater.prototype; - var obj = new Creater(); - return obj; - } - } - function replaceVisualOption(thisOption, newOption, keys2) { - var has3; - each(keys2, function(key) { - if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) { - has3 = true; - } - }); - has3 && each(keys2, function(key) { - if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) { - thisOption[key] = clone(newOption[key]); - } else { - delete thisOption[key]; - } - }); - } - function applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) { - var visualTypesMap = {}; - each(stateList, function(state) { - var visualTypes = VisualMapping_default.prepareVisualTypes(visualMappings[state]); - visualTypesMap[state] = visualTypes; - }); - var dataIndex; - function getVisual(key) { - return getItemVisualFromData(data, dataIndex, key); - } - function setVisual(key, value) { - setItemVisualFromData(data, dataIndex, key, value); - } - if (dimension == null) { - data.each(eachItem); - } else { - data.each([dimension], eachItem); - } - function eachItem(valueOrIndex, index) { - dataIndex = dimension == null ? valueOrIndex : index; - var rawDataItem = data.getRawDataItem(dataIndex); - if (rawDataItem && rawDataItem.visualMap === false) { - return; - } - var valueState = getValueState.call(scope, valueOrIndex); - var mappings = visualMappings[valueState]; - var visualTypes = visualTypesMap[valueState]; - for (var i = 0, len2 = visualTypes.length; i < len2; i++) { - var type = visualTypes[i]; - mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual); - } - } - } - function incrementalApplyVisual(stateList, visualMappings, getValueState, dim) { - var visualTypesMap = {}; - each(stateList, function(state) { - var visualTypes = VisualMapping_default.prepareVisualTypes(visualMappings[state]); - visualTypesMap[state] = visualTypes; - }); - return { - progress: function progress(params, data) { - var dimIndex; - if (dim != null) { - dimIndex = data.getDimensionIndex(dim); - } - function getVisual(key) { - return getItemVisualFromData(data, dataIndex, key); - } - function setVisual(key, value2) { - setItemVisualFromData(data, dataIndex, key, value2); - } - var dataIndex; - var store = data.getStore(); - while ((dataIndex = params.next()) != null) { - var rawDataItem = data.getRawDataItem(dataIndex); - if (rawDataItem && rawDataItem.visualMap === false) { - continue; - } - var value = dim != null ? store.get(dimIndex, dataIndex) : dataIndex; - var valueState = getValueState(value); - var mappings = visualMappings[valueState]; - var visualTypes = visualTypesMap[valueState]; - for (var i = 0, len2 = visualTypes.length; i < len2; i++) { - var type = visualTypes[i]; - mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual); - } - } - } - }; - } - - // node_modules/echarts/lib/component/brush/selector.js - function makeBrushCommonSelectorForSeries(area) { - var brushType = area.brushType; - var selectors = { - point: function(itemLayout) { - return selector[brushType].point(itemLayout, selectors, area); - }, - rect: function(itemLayout) { - return selector[brushType].rect(itemLayout, selectors, area); - } - }; - return selectors; - } - var selector = { - lineX: getLineSelectors(0), - lineY: getLineSelectors(1), - rect: { - point: function(itemLayout, selectors, area) { - return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]); - }, - rect: function(itemLayout, selectors, area) { - return itemLayout && area.boundingRect.intersect(itemLayout); - } - }, - polygon: { - point: function(itemLayout, selectors, area) { - return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]) && contain3(area.range, itemLayout[0], itemLayout[1]); - }, - rect: function(itemLayout, selectors, area) { - var points4 = area.range; - if (!itemLayout || points4.length <= 1) { - return false; - } - var x = itemLayout.x; - var y = itemLayout.y; - var width = itemLayout.width; - var height = itemLayout.height; - var p = points4[0]; - if (contain3(points4, x, y) || contain3(points4, x + width, y) || contain3(points4, x, y + height) || contain3(points4, x + width, y + height) || BoundingRect_default.create(itemLayout).contain(p[0], p[1]) || linePolygonIntersect(x, y, x + width, y, points4) || linePolygonIntersect(x, y, x, y + height, points4) || linePolygonIntersect(x + width, y, x + width, y + height, points4) || linePolygonIntersect(x, y + height, x + width, y + height, points4)) { - return true; - } - } - } - }; - function getLineSelectors(xyIndex) { - var xy = ["x", "y"]; - var wh = ["width", "height"]; - return { - point: function(itemLayout, selectors, area) { - if (itemLayout) { - var range = area.range; - var p = itemLayout[xyIndex]; - return inLineRange(p, range); - } - }, - rect: function(itemLayout, selectors, area) { - if (itemLayout) { - var range = area.range; - var layoutRange = [itemLayout[xy[xyIndex]], itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]]]; - layoutRange[1] < layoutRange[0] && layoutRange.reverse(); - return inLineRange(layoutRange[0], range) || inLineRange(layoutRange[1], range) || inLineRange(range[0], layoutRange) || inLineRange(range[1], layoutRange); - } - } - }; - } - function inLineRange(p, range) { - return range[0] <= p && p <= range[1]; - } - - // node_modules/echarts/lib/component/brush/visualEncoding.js - var STATE_LIST = ["inBrush", "outOfBrush"]; - var DISPATCH_METHOD = "__ecBrushSelect"; - var DISPATCH_FLAG = "__ecInBrushSelectEvent"; - function layoutCovers(ecModel) { - ecModel.eachComponent({ - mainType: "brush" - }, function(brushModel) { - var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager_default(brushModel.option, ecModel); - brushTargetManager.setInputRanges(brushModel.areas, ecModel); - }); - } - function brushVisual(ecModel, api, payload) { - var brushSelected = []; - var throttleType; - var throttleDelay; - ecModel.eachComponent({ - mainType: "brush" - }, function(brushModel) { - payload && payload.type === "takeGlobalCursor" && brushModel.setBrushOption(payload.key === "brush" ? payload.brushOption : { - brushType: false - }); - }); - layoutCovers(ecModel); - ecModel.eachComponent({ - mainType: "brush" - }, function(brushModel, brushIndex) { - var thisBrushSelected = { - brushId: brushModel.id, - brushIndex, - brushName: brushModel.name, - areas: clone(brushModel.areas), - selected: [] - }; - brushSelected.push(thisBrushSelected); - var brushOption = brushModel.option; - var brushLink = brushOption.brushLink; - var linkedSeriesMap = []; - var selectedDataIndexForLink = []; - var rangeInfoBySeries = []; - var hasBrushExists = false; - if (!brushIndex) { - throttleType = brushOption.throttleType; - throttleDelay = brushOption.throttleDelay; - } - var areas = map(brushModel.areas, function(area) { - var builder = boundingRectBuilders[area.brushType]; - var selectableArea = defaults({ - boundingRect: builder ? builder(area) : void 0 - }, area); - selectableArea.selectors = makeBrushCommonSelectorForSeries(selectableArea); - return selectableArea; - }); - var visualMappings = createVisualMappings(brushModel.option, STATE_LIST, function(mappingOption) { - mappingOption.mappingMethod = "fixed"; - }); - isArray(brushLink) && each(brushLink, function(seriesIndex) { - linkedSeriesMap[seriesIndex] = 1; - }); - function linkOthers(seriesIndex) { - return brushLink === "all" || !!linkedSeriesMap[seriesIndex]; - } - function brushed(rangeInfoList) { - return !!rangeInfoList.length; - } - ecModel.eachSeries(function(seriesModel, seriesIndex) { - var rangeInfoList = rangeInfoBySeries[seriesIndex] = []; - seriesModel.subType === "parallel" ? stepAParallel(seriesModel, seriesIndex) : stepAOthers(seriesModel, seriesIndex, rangeInfoList); - }); - function stepAParallel(seriesModel, seriesIndex) { - var coordSys = seriesModel.coordinateSystem; - hasBrushExists = hasBrushExists || coordSys.hasAxisBrushed(); - linkOthers(seriesIndex) && coordSys.eachActiveState(seriesModel.getData(), function(activeState, dataIndex) { - activeState === "active" && (selectedDataIndexForLink[dataIndex] = 1); - }); - } - function stepAOthers(seriesModel, seriesIndex, rangeInfoList) { - if (!seriesModel.brushSelector || brushModelNotControll(brushModel, seriesIndex)) { - return; - } - each(areas, function(area) { - if (brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel)) { - rangeInfoList.push(area); - } - hasBrushExists = hasBrushExists || brushed(rangeInfoList); - }); - if (linkOthers(seriesIndex) && brushed(rangeInfoList)) { - var data_1 = seriesModel.getData(); - data_1.each(function(dataIndex) { - if (checkInRange(seriesModel, rangeInfoList, data_1, dataIndex)) { - selectedDataIndexForLink[dataIndex] = 1; - } - }); - } - } - ecModel.eachSeries(function(seriesModel, seriesIndex) { - var seriesBrushSelected = { - seriesId: seriesModel.id, - seriesIndex, - seriesName: seriesModel.name, - dataIndex: [] - }; - thisBrushSelected.selected.push(seriesBrushSelected); - var rangeInfoList = rangeInfoBySeries[seriesIndex]; - var data = seriesModel.getData(); - var getValueState = linkOthers(seriesIndex) ? function(dataIndex) { - return selectedDataIndexForLink[dataIndex] ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), "inBrush") : "outOfBrush"; - } : function(dataIndex) { - return checkInRange(seriesModel, rangeInfoList, data, dataIndex) ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), "inBrush") : "outOfBrush"; - }; - (linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList)) && applyVisual(STATE_LIST, visualMappings, data, getValueState); - }); - }); - dispatchAction(api, throttleType, throttleDelay, brushSelected, payload); - } - function dispatchAction(api, throttleType, throttleDelay, brushSelected, payload) { - if (!payload) { - return; - } - var zr = api.getZr(); - if (zr[DISPATCH_FLAG]) { - return; - } - if (!zr[DISPATCH_METHOD]) { - zr[DISPATCH_METHOD] = doDispatch; - } - var fn = createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType); - fn(api, brushSelected); - } - function doDispatch(api, brushSelected) { - if (!api.isDisposed()) { - var zr = api.getZr(); - zr[DISPATCH_FLAG] = true; - api.dispatchAction({ - type: "brushSelect", - batch: brushSelected - }); - zr[DISPATCH_FLAG] = false; - } - } - function checkInRange(seriesModel, rangeInfoList, data, dataIndex) { - for (var i = 0, len2 = rangeInfoList.length; i < len2; i++) { - var area = rangeInfoList[i]; - if (seriesModel.brushSelector(dataIndex, data, area.selectors, area)) { - return true; - } - } - } - function brushModelNotControll(brushModel, seriesIndex) { - var seriesIndices = brushModel.option.seriesIndex; - return seriesIndices != null && seriesIndices !== "all" && (isArray(seriesIndices) ? indexOf(seriesIndices, seriesIndex) < 0 : seriesIndex !== seriesIndices); - } - var boundingRectBuilders = { - rect: function(area) { - return getBoundingRectFromMinMax(area.range); - }, - polygon: function(area) { - var minMax; - var range = area.range; - for (var i = 0, len2 = range.length; i < len2; i++) { - minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]]; - var rg = range[i]; - rg[0] < minMax[0][0] && (minMax[0][0] = rg[0]); - rg[0] > minMax[0][1] && (minMax[0][1] = rg[0]); - rg[1] < minMax[1][0] && (minMax[1][0] = rg[1]); - rg[1] > minMax[1][1] && (minMax[1][1] = rg[1]); - } - return minMax && getBoundingRectFromMinMax(minMax); - } - }; - function getBoundingRectFromMinMax(minMax) { - return new BoundingRect_default(minMax[0][0], minMax[1][0], minMax[0][1] - minMax[0][0], minMax[1][1] - minMax[1][0]); - } - - // node_modules/echarts/lib/component/brush/BrushView.js - var BrushView = ( - /** @class */ - function(_super) { - __extends(BrushView2, _super); - function BrushView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = BrushView2.type; - return _this; - } - BrushView2.prototype.init = function(ecModel, api) { - this.ecModel = ecModel; - this.api = api; - this.model; - (this._brushController = new BrushController_default(api.getZr())).on("brush", bind(this._onBrush, this)).mount(); - }; - BrushView2.prototype.render = function(brushModel, ecModel, api, payload) { - this.model = brushModel; - this._updateController(brushModel, ecModel, api, payload); - }; - BrushView2.prototype.updateTransform = function(brushModel, ecModel, api, payload) { - layoutCovers(ecModel); - this._updateController(brushModel, ecModel, api, payload); - }; - BrushView2.prototype.updateVisual = function(brushModel, ecModel, api, payload) { - this.updateTransform(brushModel, ecModel, api, payload); - }; - BrushView2.prototype.updateView = function(brushModel, ecModel, api, payload) { - this._updateController(brushModel, ecModel, api, payload); - }; - BrushView2.prototype._updateController = function(brushModel, ecModel, api, payload) { - (!payload || payload.$from !== brushModel.id) && this._brushController.setPanels(brushModel.brushTargetManager.makePanelOpts(api)).enableBrush(brushModel.brushOption).updateCovers(brushModel.areas.slice()); - }; - BrushView2.prototype.dispose = function() { - this._brushController.dispose(); - }; - BrushView2.prototype._onBrush = function(eventParam) { - var modelId = this.model.id; - var areas = this.model.brushTargetManager.setOutputRanges(eventParam.areas, this.ecModel); - (!eventParam.isEnd || eventParam.removeOnClick) && this.api.dispatchAction({ - type: "brush", - brushId: modelId, - areas: clone(areas), - $from: modelId - }); - eventParam.isEnd && this.api.dispatchAction({ - type: "brushEnd", - brushId: modelId, - areas: clone(areas), - $from: modelId - }); - }; - BrushView2.type = "brush"; - return BrushView2; - }(Component_default2) - ); - var BrushView_default = BrushView; - - // node_modules/echarts/lib/component/brush/BrushModel.js - var DEFAULT_OUT_OF_BRUSH_COLOR = "#ddd"; - var BrushModel = ( - /** @class */ - function(_super) { - __extends(BrushModel2, _super); - function BrushModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = BrushModel2.type; - _this.areas = []; - _this.brushOption = {}; - return _this; - } - BrushModel2.prototype.optionUpdated = function(newOption, isInit) { - var thisOption = this.option; - !isInit && replaceVisualOption(thisOption, newOption, ["inBrush", "outOfBrush"]); - var inBrush = thisOption.inBrush = thisOption.inBrush || {}; - thisOption.outOfBrush = thisOption.outOfBrush || { - color: DEFAULT_OUT_OF_BRUSH_COLOR - }; - if (!inBrush.hasOwnProperty("liftZ")) { - inBrush.liftZ = 5; - } - }; - BrushModel2.prototype.setAreas = function(areas) { - if (true) { - assert(isArray(areas)); - each(areas, function(area) { - assert(area.brushType, "Illegal areas"); - }); - } - if (!areas) { - return; - } - this.areas = map(areas, function(area) { - return generateBrushOption(this.option, area); - }, this); - }; - BrushModel2.prototype.setBrushOption = function(brushOption) { - this.brushOption = generateBrushOption(this.option, brushOption); - this.brushType = this.brushOption.brushType; - }; - BrushModel2.type = "brush"; - BrushModel2.dependencies = ["geo", "grid", "xAxis", "yAxis", "parallel", "series"]; - BrushModel2.defaultOption = { - seriesIndex: "all", - brushType: "rect", - brushMode: "single", - transformable: true, - brushStyle: { - borderWidth: 1, - color: "rgba(210,219,238,0.3)", - borderColor: "#D2DBEE" - }, - throttleType: "fixRate", - throttleDelay: 0, - removeOnClick: true, - z: 1e4 - }; - return BrushModel2; - }(Component_default) - ); - function generateBrushOption(option, brushOption) { - return merge({ - brushType: option.brushType, - brushMode: option.brushMode, - transformable: option.transformable, - brushStyle: new Model_default(option.brushStyle).getItemStyle(), - removeOnClick: option.removeOnClick, - z: option.z - }, brushOption, true); - } - var BrushModel_default = BrushModel; - - // node_modules/echarts/lib/component/toolbox/feature/Brush.js - var ICON_TYPES = ["rect", "polygon", "lineX", "lineY", "keep", "clear"]; - var BrushFeature = ( - /** @class */ - function(_super) { - __extends(BrushFeature2, _super); - function BrushFeature2() { - return _super !== null && _super.apply(this, arguments) || this; - } - BrushFeature2.prototype.render = function(featureModel, ecModel, api) { - var brushType; - var brushMode; - var isBrushed; - ecModel.eachComponent({ - mainType: "brush" - }, function(brushModel) { - brushType = brushModel.brushType; - brushMode = brushModel.brushOption.brushMode || "single"; - isBrushed = isBrushed || !!brushModel.areas.length; - }); - this._brushType = brushType; - this._brushMode = brushMode; - each(featureModel.get("type", true), function(type) { - featureModel.setIconStatus(type, (type === "keep" ? brushMode === "multiple" : type === "clear" ? isBrushed : type === brushType) ? "emphasis" : "normal"); - }); - }; - BrushFeature2.prototype.updateView = function(featureModel, ecModel, api) { - this.render(featureModel, ecModel, api); - }; - BrushFeature2.prototype.getIcons = function() { - var model = this.model; - var availableIcons = model.get("icon", true); - var icons = {}; - each(model.get("type", true), function(type) { - if (availableIcons[type]) { - icons[type] = availableIcons[type]; - } - }); - return icons; - }; - ; - BrushFeature2.prototype.onclick = function(ecModel, api, type) { - var brushType = this._brushType; - var brushMode = this._brushMode; - if (type === "clear") { - api.dispatchAction({ - type: "axisAreaSelect", - intervals: [] - }); - api.dispatchAction({ - type: "brush", - command: "clear", - // Clear all areas of all brush components. - areas: [] - }); - } else { - api.dispatchAction({ - type: "takeGlobalCursor", - key: "brush", - brushOption: { - brushType: type === "keep" ? brushType : brushType === type ? false : type, - brushMode: type === "keep" ? brushMode === "multiple" ? "single" : "multiple" : brushMode - } - }); - } - }; - ; - BrushFeature2.getDefaultOption = function(ecModel) { - var defaultOption3 = { - show: true, - type: ICON_TYPES.slice(), - icon: { - /* eslint-disable */ - rect: "M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13", - polygon: "M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2", - lineX: "M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4", - lineY: "M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4", - keep: "M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z", - clear: "M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2" - // jshint ignore:line - /* eslint-enable */ - }, - // `rect`, `polygon`, `lineX`, `lineY`, `keep`, `clear` - title: ecModel.getLocaleModel().get(["toolbox", "brush", "title"]) - }; - return defaultOption3; - }; - return BrushFeature2; - }(ToolboxFeature) - ); - var Brush_default = BrushFeature; - - // node_modules/echarts/lib/component/brush/install.js - function install38(registers) { - registers.registerComponentView(BrushView_default); - registers.registerComponentModel(BrushModel_default); - registers.registerPreprocessor(brushPreprocessor); - registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, brushVisual); - registers.registerAction({ - type: "brush", - event: "brush", - update: "updateVisual" - }, function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "brush", - query: payload - }, function(brushModel) { - brushModel.setAreas(payload.areas); - }); - }); - registers.registerAction({ - type: "brushSelect", - event: "brushSelected", - update: "none" - }, noop); - registers.registerAction({ - type: "brushEnd", - event: "brushEnd", - update: "none" - }, noop); - registerFeature("brush", Brush_default); - } - - // node_modules/echarts/lib/component/title/install.js - var TitleModel = ( - /** @class */ - function(_super) { - __extends(TitleModel2, _super); - function TitleModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TitleModel2.type; - _this.layoutMode = { - type: "box", - ignoreSize: true - }; - return _this; - } - TitleModel2.type = "title"; - TitleModel2.defaultOption = { - // zlevel: 0, - z: 6, - show: true, - text: "", - target: "blank", - subtext: "", - subtarget: "blank", - left: 0, - top: 0, - backgroundColor: "rgba(0,0,0,0)", - borderColor: "#ccc", - borderWidth: 0, - padding: 5, - itemGap: 10, - textStyle: { - fontSize: 18, - fontWeight: "bold", - color: "#464646" - }, - subtextStyle: { - fontSize: 12, - color: "#6E7079" - } - }; - return TitleModel2; - }(Component_default) - ); - var TitleView = ( - /** @class */ - function(_super) { - __extends(TitleView2, _super); - function TitleView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TitleView2.type; - return _this; - } - TitleView2.prototype.render = function(titleModel, ecModel, api) { - this.group.removeAll(); - if (!titleModel.get("show")) { - return; - } - var group = this.group; - var textStyleModel = titleModel.getModel("textStyle"); - var subtextStyleModel = titleModel.getModel("subtextStyle"); - var textAlign = titleModel.get("textAlign"); - var textVerticalAlign = retrieve2(titleModel.get("textBaseline"), titleModel.get("textVerticalAlign")); - var textEl = new Text_default({ - style: createTextStyle(textStyleModel, { - text: titleModel.get("text"), - fill: textStyleModel.getTextColor() - }, { - disableBox: true - }), - z2: 10 - }); - var textRect = textEl.getBoundingRect(); - var subText = titleModel.get("subtext"); - var subTextEl = new Text_default({ - style: createTextStyle(subtextStyleModel, { - text: subText, - fill: subtextStyleModel.getTextColor(), - y: textRect.height + titleModel.get("itemGap"), - verticalAlign: "top" - }, { - disableBox: true - }), - z2: 10 - }); - var link = titleModel.get("link"); - var sublink = titleModel.get("sublink"); - var triggerEvent = titleModel.get("triggerEvent", true); - textEl.silent = !link && !triggerEvent; - subTextEl.silent = !sublink && !triggerEvent; - if (link) { - textEl.on("click", function() { - windowOpen(link, "_" + titleModel.get("target")); - }); - } - if (sublink) { - subTextEl.on("click", function() { - windowOpen(sublink, "_" + titleModel.get("subtarget")); - }); - } - getECData(textEl).eventData = getECData(subTextEl).eventData = triggerEvent ? { - componentType: "title", - componentIndex: titleModel.componentIndex - } : null; - group.add(textEl); - subText && group.add(subTextEl); - var groupRect = group.getBoundingRect(); - var layoutOption = titleModel.getBoxLayoutParams(); - layoutOption.width = groupRect.width; - layoutOption.height = groupRect.height; - var layoutRect = getLayoutRect(layoutOption, { - width: api.getWidth(), - height: api.getHeight() - }, titleModel.get("padding")); - if (!textAlign) { - textAlign = titleModel.get("left") || titleModel.get("right"); - if (textAlign === "middle") { - textAlign = "center"; - } - if (textAlign === "right") { - layoutRect.x += layoutRect.width; - } else if (textAlign === "center") { - layoutRect.x += layoutRect.width / 2; - } - } - if (!textVerticalAlign) { - textVerticalAlign = titleModel.get("top") || titleModel.get("bottom"); - if (textVerticalAlign === "center") { - textVerticalAlign = "middle"; - } - if (textVerticalAlign === "bottom") { - layoutRect.y += layoutRect.height; - } else if (textVerticalAlign === "middle") { - layoutRect.y += layoutRect.height / 2; - } - textVerticalAlign = textVerticalAlign || "top"; - } - group.x = layoutRect.x; - group.y = layoutRect.y; - group.markRedraw(); - var alignStyle = { - align: textAlign, - verticalAlign: textVerticalAlign - }; - textEl.setStyle(alignStyle); - subTextEl.setStyle(alignStyle); - groupRect = group.getBoundingRect(); - var padding = layoutRect.margin; - var style = titleModel.getItemStyle(["color", "opacity"]); - style.fill = titleModel.get("backgroundColor"); - var rect = new Rect_default({ - shape: { - x: groupRect.x - padding[3], - y: groupRect.y - padding[0], - width: groupRect.width + padding[1] + padding[3], - height: groupRect.height + padding[0] + padding[2], - r: titleModel.get("borderRadius") - }, - style, - subPixelOptimize: true, - silent: true - }); - group.add(rect); - }; - TitleView2.type = "title"; - return TitleView2; - }(Component_default2) - ); - function install39(registers) { - registers.registerComponentModel(TitleModel); - registers.registerComponentView(TitleView); - } - - // node_modules/echarts/lib/component/timeline/TimelineModel.js - var TimelineModel = ( - /** @class */ - function(_super) { - __extends(TimelineModel2, _super); - function TimelineModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TimelineModel2.type; - _this.layoutMode = "box"; - return _this; - } - TimelineModel2.prototype.init = function(option, parentModel, ecModel) { - this.mergeDefaultAndTheme(option, ecModel); - this._initData(); - }; - TimelineModel2.prototype.mergeOption = function(option) { - _super.prototype.mergeOption.apply(this, arguments); - this._initData(); - }; - TimelineModel2.prototype.setCurrentIndex = function(currentIndex) { - if (currentIndex == null) { - currentIndex = this.option.currentIndex; - } - var count2 = this._data.count(); - if (this.option.loop) { - currentIndex = (currentIndex % count2 + count2) % count2; - } else { - currentIndex >= count2 && (currentIndex = count2 - 1); - currentIndex < 0 && (currentIndex = 0); - } - this.option.currentIndex = currentIndex; - }; - TimelineModel2.prototype.getCurrentIndex = function() { - return this.option.currentIndex; - }; - TimelineModel2.prototype.isIndexMax = function() { - return this.getCurrentIndex() >= this._data.count() - 1; - }; - TimelineModel2.prototype.setPlayState = function(state) { - this.option.autoPlay = !!state; - }; - TimelineModel2.prototype.getPlayState = function() { - return !!this.option.autoPlay; - }; - TimelineModel2.prototype._initData = function() { - var thisOption = this.option; - var dataArr = thisOption.data || []; - var axisType = thisOption.axisType; - var names = this._names = []; - var processedDataArr; - if (axisType === "category") { - processedDataArr = []; - each(dataArr, function(item, index) { - var value = convertOptionIdName(getDataItemValue(item), ""); - var newItem; - if (isObject(item)) { - newItem = clone(item); - newItem.value = index; - } else { - newItem = index; - } - processedDataArr.push(newItem); - names.push(value); - }); - } else { - processedDataArr = dataArr; - } - var dimType = { - category: "ordinal", - time: "time", - value: "number" - }[axisType] || "number"; - var data = this._data = new SeriesData_default([{ - name: "value", - type: dimType - }], this); - data.initData(processedDataArr, names); - }; - TimelineModel2.prototype.getData = function() { - return this._data; - }; - TimelineModel2.prototype.getCategories = function() { - if (this.get("axisType") === "category") { - return this._names.slice(); - } - }; - TimelineModel2.type = "timeline"; - TimelineModel2.defaultOption = { - // zlevel: 0, // 一级层叠 - z: 4, - show: true, - axisType: "time", - realtime: true, - left: "20%", - top: null, - right: "20%", - bottom: 0, - width: null, - height: 40, - padding: 5, - controlPosition: "left", - autoPlay: false, - rewind: false, - loop: true, - playInterval: 2e3, - currentIndex: 0, - itemStyle: {}, - label: { - color: "#000" - }, - data: [] - }; - return TimelineModel2; - }(Component_default) - ); - var TimelineModel_default = TimelineModel; - - // node_modules/echarts/lib/component/timeline/SliderTimelineModel.js - var SliderTimelineModel = ( - /** @class */ - function(_super) { - __extends(SliderTimelineModel2, _super); - function SliderTimelineModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SliderTimelineModel2.type; - return _this; - } - SliderTimelineModel2.type = "timeline.slider"; - SliderTimelineModel2.defaultOption = inheritDefaultOption(TimelineModel_default.defaultOption, { - backgroundColor: "rgba(0,0,0,0)", - borderColor: "#ccc", - borderWidth: 0, - orient: "horizontal", - inverse: false, - tooltip: { - trigger: "item" - // data item may also have tootip attr. - }, - symbol: "circle", - symbolSize: 12, - lineStyle: { - show: true, - width: 2, - color: "#DAE1F5" - }, - label: { - position: "auto", - // When using number, label position is not - // restricted by viewRect. - // positive: right/bottom, negative: left/top - show: true, - interval: "auto", - rotate: 0, - // formatter: null, - // 其余属性默认使用全局文本样式,详见TEXTSTYLE - color: "#A4B1D7" - }, - itemStyle: { - color: "#A4B1D7", - borderWidth: 1 - }, - checkpointStyle: { - symbol: "circle", - symbolSize: 15, - color: "#316bf3", - borderColor: "#fff", - borderWidth: 2, - shadowBlur: 2, - shadowOffsetX: 1, - shadowOffsetY: 1, - shadowColor: "rgba(0, 0, 0, 0.3)", - // borderColor: 'rgba(194,53,49, 0.5)', - animation: true, - animationDuration: 300, - animationEasing: "quinticInOut" - }, - controlStyle: { - show: true, - showPlayBtn: true, - showPrevBtn: true, - showNextBtn: true, - itemSize: 24, - itemGap: 12, - position: "left", - playIcon: "path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z", - stopIcon: "path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z", - // eslint-disable-next-line max-len - nextIcon: "M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z", - // eslint-disable-next-line max-len - prevIcon: "M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z", - prevBtnSize: 18, - nextBtnSize: 18, - color: "#A4B1D7", - borderColor: "#A4B1D7", - borderWidth: 1 - }, - emphasis: { - label: { - show: true, - // 其余属性默认使用全局文本样式,详见TEXTSTYLE - color: "#6f778d" - }, - itemStyle: { - color: "#316BF3" - }, - controlStyle: { - color: "#316BF3", - borderColor: "#316BF3", - borderWidth: 2 - } - }, - progress: { - lineStyle: { - color: "#316BF3" - }, - itemStyle: { - color: "#316BF3" - }, - label: { - color: "#6f778d" - } - }, - data: [] - }); - return SliderTimelineModel2; - }(TimelineModel_default) - ); - mixin(SliderTimelineModel, DataFormatMixin.prototype); - var SliderTimelineModel_default = SliderTimelineModel; - - // node_modules/echarts/lib/component/timeline/TimelineView.js - var TimelineView = ( - /** @class */ - function(_super) { - __extends(TimelineView2, _super); - function TimelineView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = TimelineView2.type; - return _this; - } - TimelineView2.type = "timeline"; - return TimelineView2; - }(Component_default2) - ); - var TimelineView_default = TimelineView; - - // node_modules/echarts/lib/component/timeline/TimelineAxis.js - var TimelineAxis = ( - /** @class */ - function(_super) { - __extends(TimelineAxis2, _super); - function TimelineAxis2(dim, scale4, coordExtent, axisType) { - var _this = _super.call(this, dim, scale4, coordExtent) || this; - _this.type = axisType || "value"; - return _this; - } - TimelineAxis2.prototype.getLabelModel = function() { - return this.model.getModel("label"); - }; - TimelineAxis2.prototype.isHorizontal = function() { - return this.model.get("orient") === "horizontal"; - }; - return TimelineAxis2; - }(Axis_default) - ); - var TimelineAxis_default = TimelineAxis; - - // node_modules/echarts/lib/component/timeline/SliderTimelineView.js - var PI10 = Math.PI; - var labelDataIndexStore = makeInner(); - var SliderTimelineView = ( - /** @class */ - function(_super) { - __extends(SliderTimelineView2, _super); - function SliderTimelineView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SliderTimelineView2.type; - return _this; - } - SliderTimelineView2.prototype.init = function(ecModel, api) { - this.api = api; - }; - SliderTimelineView2.prototype.render = function(timelineModel, ecModel, api) { - this.model = timelineModel; - this.api = api; - this.ecModel = ecModel; - this.group.removeAll(); - if (timelineModel.get("show", true)) { - var layoutInfo_1 = this._layout(timelineModel, api); - var mainGroup_1 = this._createGroup("_mainGroup"); - var labelGroup = this._createGroup("_labelGroup"); - var axis_1 = this._axis = this._createAxis(layoutInfo_1, timelineModel); - timelineModel.formatTooltip = function(dataIndex) { - var name = axis_1.scale.getLabel({ - value: dataIndex - }); - return createTooltipMarkup("nameValue", { - noName: true, - value: name - }); - }; - each(["AxisLine", "AxisTick", "Control", "CurrentPointer"], function(name) { - this["_render" + name](layoutInfo_1, mainGroup_1, axis_1, timelineModel); - }, this); - this._renderAxisLabel(layoutInfo_1, labelGroup, axis_1, timelineModel); - this._position(layoutInfo_1, timelineModel); - } - this._doPlayStop(); - this._updateTicksStatus(); - }; - SliderTimelineView2.prototype.remove = function() { - this._clearTimer(); - this.group.removeAll(); - }; - SliderTimelineView2.prototype.dispose = function() { - this._clearTimer(); - }; - SliderTimelineView2.prototype._layout = function(timelineModel, api) { - var labelPosOpt = timelineModel.get(["label", "position"]); - var orient = timelineModel.get("orient"); - var viewRect2 = getViewRect6(timelineModel, api); - var parsedLabelPos; - if (labelPosOpt == null || labelPosOpt === "auto") { - parsedLabelPos = orient === "horizontal" ? viewRect2.y + viewRect2.height / 2 < api.getHeight() / 2 ? "-" : "+" : viewRect2.x + viewRect2.width / 2 < api.getWidth() / 2 ? "+" : "-"; - } else if (isString(labelPosOpt)) { - parsedLabelPos = { - horizontal: { - top: "-", - bottom: "+" - }, - vertical: { - left: "-", - right: "+" - } - }[orient][labelPosOpt]; - } else { - parsedLabelPos = labelPosOpt; - } - var labelAlignMap = { - horizontal: "center", - vertical: parsedLabelPos >= 0 || parsedLabelPos === "+" ? "left" : "right" - }; - var labelBaselineMap = { - horizontal: parsedLabelPos >= 0 || parsedLabelPos === "+" ? "top" : "bottom", - vertical: "middle" - }; - var rotationMap = { - horizontal: 0, - vertical: PI10 / 2 - }; - var mainLength = orient === "vertical" ? viewRect2.height : viewRect2.width; - var controlModel = timelineModel.getModel("controlStyle"); - var showControl = controlModel.get("show", true); - var controlSize = showControl ? controlModel.get("itemSize") : 0; - var controlGap = showControl ? controlModel.get("itemGap") : 0; - var sizePlusGap = controlSize + controlGap; - var labelRotation = timelineModel.get(["label", "rotate"]) || 0; - labelRotation = labelRotation * PI10 / 180; - var playPosition; - var prevBtnPosition; - var nextBtnPosition; - var controlPosition = controlModel.get("position", true); - var showPlayBtn = showControl && controlModel.get("showPlayBtn", true); - var showPrevBtn = showControl && controlModel.get("showPrevBtn", true); - var showNextBtn = showControl && controlModel.get("showNextBtn", true); - var xLeft = 0; - var xRight = mainLength; - if (controlPosition === "left" || controlPosition === "bottom") { - showPlayBtn && (playPosition = [0, 0], xLeft += sizePlusGap); - showPrevBtn && (prevBtnPosition = [xLeft, 0], xLeft += sizePlusGap); - showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap); - } else { - showPlayBtn && (playPosition = [xRight - controlSize, 0], xRight -= sizePlusGap); - showPrevBtn && (prevBtnPosition = [0, 0], xLeft += sizePlusGap); - showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap); - } - var axisExtent = [xLeft, xRight]; - if (timelineModel.get("inverse")) { - axisExtent.reverse(); - } - return { - viewRect: viewRect2, - mainLength, - orient, - rotation: rotationMap[orient], - labelRotation, - labelPosOpt: parsedLabelPos, - labelAlign: timelineModel.get(["label", "align"]) || labelAlignMap[orient], - labelBaseline: timelineModel.get(["label", "verticalAlign"]) || timelineModel.get(["label", "baseline"]) || labelBaselineMap[orient], - // Based on mainGroup. - playPosition, - prevBtnPosition, - nextBtnPosition, - axisExtent, - controlSize, - controlGap - }; - }; - SliderTimelineView2.prototype._position = function(layoutInfo, timelineModel) { - var mainGroup = this._mainGroup; - var labelGroup = this._labelGroup; - var viewRect2 = layoutInfo.viewRect; - if (layoutInfo.orient === "vertical") { - var m2 = create2(); - var rotateOriginX = viewRect2.x; - var rotateOriginY = viewRect2.y + viewRect2.height; - translate(m2, m2, [-rotateOriginX, -rotateOriginY]); - rotate(m2, m2, -PI10 / 2); - translate(m2, m2, [rotateOriginX, rotateOriginY]); - viewRect2 = viewRect2.clone(); - viewRect2.applyTransform(m2); - } - var viewBound = getBound(viewRect2); - var mainBound = getBound(mainGroup.getBoundingRect()); - var labelBound = getBound(labelGroup.getBoundingRect()); - var mainPosition = [mainGroup.x, mainGroup.y]; - var labelsPosition = [labelGroup.x, labelGroup.y]; - labelsPosition[0] = mainPosition[0] = viewBound[0][0]; - var labelPosOpt = layoutInfo.labelPosOpt; - if (labelPosOpt == null || isString(labelPosOpt)) { - var mainBoundIdx = labelPosOpt === "+" ? 0 : 1; - toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx); - toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx); - } else { - var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1; - toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx); - labelsPosition[1] = mainPosition[1] + labelPosOpt; - } - mainGroup.setPosition(mainPosition); - labelGroup.setPosition(labelsPosition); - mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation; - setOrigin(mainGroup); - setOrigin(labelGroup); - function setOrigin(targetGroup) { - targetGroup.originX = viewBound[0][0] - targetGroup.x; - targetGroup.originY = viewBound[1][0] - targetGroup.y; - } - function getBound(rect) { - return [[rect.x, rect.x + rect.width], [rect.y, rect.y + rect.height]]; - } - function toBound(fromPos, from, to, dimIdx, boundIdx) { - fromPos[dimIdx] += to[dimIdx][boundIdx] - from[dimIdx][boundIdx]; - } - }; - SliderTimelineView2.prototype._createAxis = function(layoutInfo, timelineModel) { - var data = timelineModel.getData(); - var axisType = timelineModel.get("axisType"); - var scale4 = createScaleByModel2(timelineModel, axisType); - scale4.getTicks = function() { - return data.mapArray(["value"], function(value) { - return { - value - }; - }); - }; - var dataExtent = data.getDataExtent("value"); - scale4.setExtent(dataExtent[0], dataExtent[1]); - scale4.calcNiceTicks(); - var axis = new TimelineAxis_default("value", scale4, layoutInfo.axisExtent, axisType); - axis.model = timelineModel; - return axis; - }; - SliderTimelineView2.prototype._createGroup = function(key) { - var newGroup = this[key] = new Group_default(); - this.group.add(newGroup); - return newGroup; - }; - SliderTimelineView2.prototype._renderAxisLine = function(layoutInfo, group, axis, timelineModel) { - var axisExtent = axis.getExtent(); - if (!timelineModel.get(["lineStyle", "show"])) { - return; - } - var line = new Line_default({ - shape: { - x1: axisExtent[0], - y1: 0, - x2: axisExtent[1], - y2: 0 - }, - style: extend({ - lineCap: "round" - }, timelineModel.getModel("lineStyle").getLineStyle()), - silent: true, - z2: 1 - }); - group.add(line); - var progressLine = this._progressLine = new Line_default({ - shape: { - x1: axisExtent[0], - x2: this._currentPointer ? this._currentPointer.x : axisExtent[0], - y1: 0, - y2: 0 - }, - style: defaults({ - lineCap: "round", - lineWidth: line.style.lineWidth - }, timelineModel.getModel(["progress", "lineStyle"]).getLineStyle()), - silent: true, - z2: 1 - }); - group.add(progressLine); - }; - SliderTimelineView2.prototype._renderAxisTick = function(layoutInfo, group, axis, timelineModel) { - var _this = this; - var data = timelineModel.getData(); - var ticks = axis.scale.getTicks(); - this._tickSymbols = []; - each(ticks, function(tick) { - var tickCoord = axis.dataToCoord(tick.value); - var itemModel = data.getItemModel(tick.value); - var itemStyleModel = itemModel.getModel("itemStyle"); - var hoverStyleModel = itemModel.getModel(["emphasis", "itemStyle"]); - var progressStyleModel = itemModel.getModel(["progress", "itemStyle"]); - var symbolOpt = { - x: tickCoord, - y: 0, - onclick: bind(_this._changeTimeline, _this, tick.value) - }; - var el = giveSymbol(itemModel, itemStyleModel, group, symbolOpt); - el.ensureState("emphasis").style = hoverStyleModel.getItemStyle(); - el.ensureState("progress").style = progressStyleModel.getItemStyle(); - enableHoverEmphasis(el); - var ecData = getECData(el); - if (itemModel.get("tooltip")) { - ecData.dataIndex = tick.value; - ecData.dataModel = timelineModel; - } else { - ecData.dataIndex = ecData.dataModel = null; - } - _this._tickSymbols.push(el); - }); - }; - SliderTimelineView2.prototype._renderAxisLabel = function(layoutInfo, group, axis, timelineModel) { - var _this = this; - var labelModel = axis.getLabelModel(); - if (!labelModel.get("show")) { - return; - } - var data = timelineModel.getData(); - var labels = axis.getViewLabels(); - this._tickLabels = []; - each(labels, function(labelItem) { - var dataIndex = labelItem.tickValue; - var itemModel = data.getItemModel(dataIndex); - var normalLabelModel = itemModel.getModel("label"); - var hoverLabelModel = itemModel.getModel(["emphasis", "label"]); - var progressLabelModel = itemModel.getModel(["progress", "label"]); - var tickCoord = axis.dataToCoord(labelItem.tickValue); - var textEl = new Text_default({ - x: tickCoord, - y: 0, - rotation: layoutInfo.labelRotation - layoutInfo.rotation, - onclick: bind(_this._changeTimeline, _this, dataIndex), - silent: false, - style: createTextStyle(normalLabelModel, { - text: labelItem.formattedLabel, - align: layoutInfo.labelAlign, - verticalAlign: layoutInfo.labelBaseline - }) - }); - textEl.ensureState("emphasis").style = createTextStyle(hoverLabelModel); - textEl.ensureState("progress").style = createTextStyle(progressLabelModel); - group.add(textEl); - enableHoverEmphasis(textEl); - labelDataIndexStore(textEl).dataIndex = dataIndex; - _this._tickLabels.push(textEl); - }); - }; - SliderTimelineView2.prototype._renderControl = function(layoutInfo, group, axis, timelineModel) { - var controlSize = layoutInfo.controlSize; - var rotation = layoutInfo.rotation; - var itemStyle = timelineModel.getModel("controlStyle").getItemStyle(); - var hoverStyle = timelineModel.getModel(["emphasis", "controlStyle"]).getItemStyle(); - var playState = timelineModel.getPlayState(); - var inverse = timelineModel.get("inverse", true); - makeBtn(layoutInfo.nextBtnPosition, "next", bind(this._changeTimeline, this, inverse ? "-" : "+")); - makeBtn(layoutInfo.prevBtnPosition, "prev", bind(this._changeTimeline, this, inverse ? "+" : "-")); - makeBtn(layoutInfo.playPosition, playState ? "stop" : "play", bind(this._handlePlayClick, this, !playState), true); - function makeBtn(position2, iconName, onclick, willRotate) { - if (!position2) { - return; - } - var iconSize = parsePercent(retrieve2(timelineModel.get(["controlStyle", iconName + "BtnSize"]), controlSize), controlSize); - var rect = [0, -iconSize / 2, iconSize, iconSize]; - var btn = makeControlIcon(timelineModel, iconName + "Icon", rect, { - x: position2[0], - y: position2[1], - originX: controlSize / 2, - originY: 0, - rotation: willRotate ? -rotation : 0, - rectHover: true, - style: itemStyle, - onclick - }); - btn.ensureState("emphasis").style = hoverStyle; - group.add(btn); - enableHoverEmphasis(btn); - } - }; - SliderTimelineView2.prototype._renderCurrentPointer = function(layoutInfo, group, axis, timelineModel) { - var data = timelineModel.getData(); - var currentIndex = timelineModel.getCurrentIndex(); - var pointerModel = data.getItemModel(currentIndex).getModel("checkpointStyle"); - var me = this; - var callback = { - onCreate: function(pointer) { - pointer.draggable = true; - pointer.drift = bind(me._handlePointerDrag, me); - pointer.ondragend = bind(me._handlePointerDragend, me); - pointerMoveTo(pointer, me._progressLine, currentIndex, axis, timelineModel, true); - }, - onUpdate: function(pointer) { - pointerMoveTo(pointer, me._progressLine, currentIndex, axis, timelineModel); - } - }; - this._currentPointer = giveSymbol(pointerModel, pointerModel, this._mainGroup, {}, this._currentPointer, callback); - }; - SliderTimelineView2.prototype._handlePlayClick = function(nextState) { - this._clearTimer(); - this.api.dispatchAction({ - type: "timelinePlayChange", - playState: nextState, - from: this.uid - }); - }; - SliderTimelineView2.prototype._handlePointerDrag = function(dx, dy, e2) { - this._clearTimer(); - this._pointerChangeTimeline([e2.offsetX, e2.offsetY]); - }; - SliderTimelineView2.prototype._handlePointerDragend = function(e2) { - this._pointerChangeTimeline([e2.offsetX, e2.offsetY], true); - }; - SliderTimelineView2.prototype._pointerChangeTimeline = function(mousePos, trigger3) { - var toCoord = this._toAxisCoord(mousePos)[0]; - var axis = this._axis; - var axisExtent = asc(axis.getExtent().slice()); - toCoord > axisExtent[1] && (toCoord = axisExtent[1]); - toCoord < axisExtent[0] && (toCoord = axisExtent[0]); - this._currentPointer.x = toCoord; - this._currentPointer.markRedraw(); - var progressLine = this._progressLine; - if (progressLine) { - progressLine.shape.x2 = toCoord; - progressLine.dirty(); - } - var targetDataIndex = this._findNearestTick(toCoord); - var timelineModel = this.model; - if (trigger3 || targetDataIndex !== timelineModel.getCurrentIndex() && timelineModel.get("realtime")) { - this._changeTimeline(targetDataIndex); - } - }; - SliderTimelineView2.prototype._doPlayStop = function() { - var _this = this; - this._clearTimer(); - if (this.model.getPlayState()) { - this._timer = setTimeout(function() { - var timelineModel = _this.model; - _this._changeTimeline(timelineModel.getCurrentIndex() + (timelineModel.get("rewind", true) ? -1 : 1)); - }, this.model.get("playInterval")); - } - }; - SliderTimelineView2.prototype._toAxisCoord = function(vertex) { - var trans = this._mainGroup.getLocalTransform(); - return applyTransform2(vertex, trans, true); - }; - SliderTimelineView2.prototype._findNearestTick = function(axisCoord) { - var data = this.model.getData(); - var dist3 = Infinity; - var targetDataIndex; - var axis = this._axis; - data.each(["value"], function(value, dataIndex) { - var coord = axis.dataToCoord(value); - var d = Math.abs(coord - axisCoord); - if (d < dist3) { - dist3 = d; - targetDataIndex = dataIndex; - } - }); - return targetDataIndex; - }; - SliderTimelineView2.prototype._clearTimer = function() { - if (this._timer) { - clearTimeout(this._timer); - this._timer = null; - } - }; - SliderTimelineView2.prototype._changeTimeline = function(nextIndex) { - var currentIndex = this.model.getCurrentIndex(); - if (nextIndex === "+") { - nextIndex = currentIndex + 1; - } else if (nextIndex === "-") { - nextIndex = currentIndex - 1; - } - this.api.dispatchAction({ - type: "timelineChange", - currentIndex: nextIndex, - from: this.uid - }); - }; - SliderTimelineView2.prototype._updateTicksStatus = function() { - var currentIndex = this.model.getCurrentIndex(); - var tickSymbols = this._tickSymbols; - var tickLabels = this._tickLabels; - if (tickSymbols) { - for (var i = 0; i < tickSymbols.length; i++) { - tickSymbols && tickSymbols[i] && tickSymbols[i].toggleState("progress", i < currentIndex); - } - } - if (tickLabels) { - for (var i = 0; i < tickLabels.length; i++) { - tickLabels && tickLabels[i] && tickLabels[i].toggleState("progress", labelDataIndexStore(tickLabels[i]).dataIndex <= currentIndex); - } - } - }; - SliderTimelineView2.type = "timeline.slider"; - return SliderTimelineView2; - }(TimelineView_default) - ); - function createScaleByModel2(model, axisType) { - axisType = axisType || model.get("type"); - if (axisType) { - switch (axisType) { - case "category": - return new Ordinal_default({ - ordinalMeta: model.getCategories(), - extent: [Infinity, -Infinity] - }); - case "time": - return new Time_default({ - locale: model.ecModel.getLocaleModel(), - useUTC: model.ecModel.get("useUTC") - }); - default: - return new Interval_default(); - } - } - } - function getViewRect6(model, api) { - return getLayoutRect(model.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }, model.get("padding")); - } - function makeControlIcon(timelineModel, objPath, rect, opts) { - var style = opts.style; - var icon = createIcon(timelineModel.get(["controlStyle", objPath]), opts || {}, new BoundingRect_default(rect[0], rect[1], rect[2], rect[3])); - if (style) { - icon.setStyle(style); - } - return icon; - } - function giveSymbol(hostModel, itemStyleModel, group, opt, symbol, callback) { - var color = itemStyleModel.get("color"); - if (!symbol) { - var symbolType = hostModel.get("symbol"); - symbol = createSymbol(symbolType, -1, -1, 2, 2, color); - symbol.setStyle("strokeNoScale", true); - group.add(symbol); - callback && callback.onCreate(symbol); - } else { - symbol.setColor(color); - group.add(symbol); - callback && callback.onUpdate(symbol); - } - var itemStyle = itemStyleModel.getItemStyle(["color"]); - symbol.setStyle(itemStyle); - opt = merge({ - rectHover: true, - z2: 100 - }, opt, true); - var symbolSize = normalizeSymbolSize(hostModel.get("symbolSize")); - opt.scaleX = symbolSize[0] / 2; - opt.scaleY = symbolSize[1] / 2; - var symbolOffset = normalizeSymbolOffset(hostModel.get("symbolOffset"), symbolSize); - if (symbolOffset) { - opt.x = (opt.x || 0) + symbolOffset[0]; - opt.y = (opt.y || 0) + symbolOffset[1]; - } - var symbolRotate = hostModel.get("symbolRotate"); - opt.rotation = (symbolRotate || 0) * Math.PI / 180 || 0; - symbol.attr(opt); - symbol.updateTransform(); - return symbol; - } - function pointerMoveTo(pointer, progressLine, dataIndex, axis, timelineModel, noAnimation) { - if (pointer.dragging) { - return; - } - var pointerModel = timelineModel.getModel("checkpointStyle"); - var toCoord = axis.dataToCoord(timelineModel.getData().get("value", dataIndex)); - if (noAnimation || !pointerModel.get("animation", true)) { - pointer.attr({ - x: toCoord, - y: 0 - }); - progressLine && progressLine.attr({ - shape: { - x2: toCoord - } - }); - } else { - var animationCfg = { - duration: pointerModel.get("animationDuration", true), - easing: pointerModel.get("animationEasing", true) - }; - pointer.stopAnimation(null, true); - pointer.animateTo({ - x: toCoord, - y: 0 - }, animationCfg); - progressLine && progressLine.animateTo({ - shape: { - x2: toCoord - } - }, animationCfg); - } - } - var SliderTimelineView_default = SliderTimelineView; - - // node_modules/echarts/lib/component/timeline/timelineAction.js - function installTimelineAction(registers) { - registers.registerAction({ - type: "timelineChange", - event: "timelineChanged", - update: "prepareAndUpdate" - }, function(payload, ecModel, api) { - var timelineModel = ecModel.getComponent("timeline"); - if (timelineModel && payload.currentIndex != null) { - timelineModel.setCurrentIndex(payload.currentIndex); - if (!timelineModel.get("loop", true) && timelineModel.isIndexMax() && timelineModel.getPlayState()) { - timelineModel.setPlayState(false); - api.dispatchAction({ - type: "timelinePlayChange", - playState: false, - from: payload.from - }); - } - } - ecModel.resetOption("timeline", { - replaceMerge: timelineModel.get("replaceMerge", true) - }); - return defaults({ - currentIndex: timelineModel.option.currentIndex - }, payload); - }); - registers.registerAction({ - type: "timelinePlayChange", - event: "timelinePlayChanged", - update: "update" - }, function(payload, ecModel) { - var timelineModel = ecModel.getComponent("timeline"); - if (timelineModel && payload.playState != null) { - timelineModel.setPlayState(payload.playState); - } - }); - } - - // node_modules/echarts/lib/component/timeline/preprocessor.js - function timelinePreprocessor(option) { - var timelineOpt = option && option.timeline; - if (!isArray(timelineOpt)) { - timelineOpt = timelineOpt ? [timelineOpt] : []; - } - each(timelineOpt, function(opt) { - if (!opt) { - return; - } - compatibleEC2(opt); - }); - } - function compatibleEC2(opt) { - var type = opt.type; - var ec2Types = { - "number": "value", - "time": "time" - }; - if (ec2Types[type]) { - opt.axisType = ec2Types[type]; - delete opt.type; - } - transferItem(opt); - if (has(opt, "controlPosition")) { - var controlStyle = opt.controlStyle || (opt.controlStyle = {}); - if (!has(controlStyle, "position")) { - controlStyle.position = opt.controlPosition; - } - if (controlStyle.position === "none" && !has(controlStyle, "show")) { - controlStyle.show = false; - delete controlStyle.position; - } - delete opt.controlPosition; - } - each(opt.data || [], function(dataItem) { - if (isObject(dataItem) && !isArray(dataItem)) { - if (!has(dataItem, "value") && has(dataItem, "name")) { - dataItem.value = dataItem.name; - } - transferItem(dataItem); - } - }); - } - function transferItem(opt) { - var itemStyle = opt.itemStyle || (opt.itemStyle = {}); - var itemStyleEmphasis = itemStyle.emphasis || (itemStyle.emphasis = {}); - var label = opt.label || opt.label || {}; - var labelNormal = label.normal || (label.normal = {}); - var excludeLabelAttr = { - normal: 1, - emphasis: 1 - }; - each(label, function(value, name) { - if (!excludeLabelAttr[name] && !has(labelNormal, name)) { - labelNormal[name] = value; - } - }); - if (itemStyleEmphasis.label && !has(label, "emphasis")) { - label.emphasis = itemStyleEmphasis.label; - delete itemStyleEmphasis.label; - } - } - function has(obj, attr) { - return obj.hasOwnProperty(attr); - } - - // node_modules/echarts/lib/component/timeline/install.js - function install40(registers) { - registers.registerComponentModel(SliderTimelineModel_default); - registers.registerComponentView(SliderTimelineView_default); - registers.registerSubTypeDefaulter("timeline", function() { - return "slider"; - }); - installTimelineAction(registers); - registers.registerPreprocessor(timelinePreprocessor); - } - - // node_modules/echarts/lib/component/marker/checkMarkerInSeries.js - function checkMarkerInSeries(seriesOpts, markerType) { - if (!seriesOpts) { - return false; - } - var seriesOptArr = isArray(seriesOpts) ? seriesOpts : [seriesOpts]; - for (var idx = 0; idx < seriesOptArr.length; idx++) { - if (seriesOptArr[idx] && seriesOptArr[idx][markerType]) { - return true; - } - } - return false; - } - - // node_modules/echarts/lib/component/marker/MarkerModel.js - function fillLabel(opt) { - defaultEmphasis(opt, "label", ["show"]); - } - var inner17 = makeInner(); - var MarkerModel = ( - /** @class */ - function(_super) { - __extends(MarkerModel2, _super); - function MarkerModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkerModel2.type; - _this.createdBySelf = false; - return _this; - } - MarkerModel2.prototype.init = function(option, parentModel, ecModel) { - if (true) { - if (this.type === "marker") { - throw new Error("Marker component is abstract component. Use markLine, markPoint, markArea instead."); - } - } - this.mergeDefaultAndTheme(option, ecModel); - this._mergeOption(option, ecModel, false, true); - }; - MarkerModel2.prototype.isAnimationEnabled = function() { - if (env_default.node) { - return false; - } - var hostSeries = this.__hostSeries; - return this.getShallow("animation") && hostSeries && hostSeries.isAnimationEnabled(); - }; - MarkerModel2.prototype.mergeOption = function(newOpt, ecModel) { - this._mergeOption(newOpt, ecModel, false, false); - }; - MarkerModel2.prototype._mergeOption = function(newOpt, ecModel, createdBySelf, isInit) { - var componentType = this.mainType; - if (!createdBySelf) { - ecModel.eachSeries(function(seriesModel) { - var markerOpt = seriesModel.get(this.mainType, true); - var markerModel = inner17(seriesModel)[componentType]; - if (!markerOpt || !markerOpt.data) { - inner17(seriesModel)[componentType] = null; - return; - } - if (!markerModel) { - if (isInit) { - fillLabel(markerOpt); - } - each(markerOpt.data, function(item) { - if (item instanceof Array) { - fillLabel(item[0]); - fillLabel(item[1]); - } else { - fillLabel(item); - } - }); - markerModel = this.createMarkerModelFromSeries(markerOpt, this, ecModel); - extend(markerModel, { - mainType: this.mainType, - // Use the same series index and name - seriesIndex: seriesModel.seriesIndex, - name: seriesModel.name, - createdBySelf: true - }); - markerModel.__hostSeries = seriesModel; - } else { - markerModel._mergeOption(markerOpt, ecModel, true); - } - inner17(seriesModel)[componentType] = markerModel; - }, this); - } - }; - MarkerModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { - var data = this.getData(); - var value = this.getRawValue(dataIndex); - var itemName = data.getName(dataIndex); - return createTooltipMarkup("section", { - header: this.name, - blocks: [createTooltipMarkup("nameValue", { - name: itemName, - value, - noName: !itemName, - noValue: value == null - })] - }); - }; - MarkerModel2.prototype.getData = function() { - return this._data; - }; - MarkerModel2.prototype.setData = function(data) { - this._data = data; - }; - MarkerModel2.prototype.getDataParams = function(dataIndex, dataType) { - var params = DataFormatMixin.prototype.getDataParams.call(this, dataIndex, dataType); - var hostSeries = this.__hostSeries; - if (hostSeries) { - params.seriesId = hostSeries.id; - params.seriesName = hostSeries.name; - params.seriesType = hostSeries.subType; - } - return params; - }; - MarkerModel2.getMarkerModelFromSeries = function(seriesModel, componentType) { - return inner17(seriesModel)[componentType]; - }; - MarkerModel2.type = "marker"; - MarkerModel2.dependencies = ["series", "grid", "polar", "geo"]; - return MarkerModel2; - }(Component_default) - ); - mixin(MarkerModel, DataFormatMixin.prototype); - var MarkerModel_default = MarkerModel; - - // node_modules/echarts/lib/component/marker/MarkPointModel.js - var MarkPointModel = ( - /** @class */ - function(_super) { - __extends(MarkPointModel2, _super); - function MarkPointModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkPointModel2.type; - return _this; - } - MarkPointModel2.prototype.createMarkerModelFromSeries = function(markerOpt, masterMarkerModel, ecModel) { - return new MarkPointModel2(markerOpt, masterMarkerModel, ecModel); - }; - MarkPointModel2.type = "markPoint"; - MarkPointModel2.defaultOption = { - // zlevel: 0, - z: 5, - symbol: "pin", - symbolSize: 50, - // symbolRotate: 0, - // symbolOffset: [0, 0] - tooltip: { - trigger: "item" - }, - label: { - show: true, - position: "inside" - }, - itemStyle: { - borderWidth: 2 - }, - emphasis: { - label: { - show: true - } - } - }; - return MarkPointModel2; - }(MarkerModel_default) - ); - var MarkPointModel_default = MarkPointModel; - - // node_modules/echarts/lib/component/marker/markerHelper.js - function hasXOrY(item) { - return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y))); - } - function hasXAndY(item) { - return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y)); - } - function markerTypeCalculatorWithExtent(markerType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) { - var coordArr = []; - var stacked = isDimensionStacked( - data, - targetDataDim - /* , otherDataDim */ - ); - var calcDataDim = stacked ? data.getCalculationInfo("stackResultDimension") : targetDataDim; - var value = numCalculate(data, calcDataDim, markerType); - var dataIndex = data.indicesOfNearest(calcDataDim, value)[0]; - coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex); - coordArr[targetCoordIndex] = data.get(calcDataDim, dataIndex); - var coordArrValue = data.get(targetDataDim, dataIndex); - var precision = getPrecision(data.get(targetDataDim, dataIndex)); - precision = Math.min(precision, 20); - if (precision >= 0) { - coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision); - } - return [coordArr, coordArrValue]; - } - var markerTypeCalculator = { - min: curry(markerTypeCalculatorWithExtent, "min"), - max: curry(markerTypeCalculatorWithExtent, "max"), - average: curry(markerTypeCalculatorWithExtent, "average"), - median: curry(markerTypeCalculatorWithExtent, "median") - }; - function dataTransform(seriesModel, item) { - if (!item) { - return; - } - var data = seriesModel.getData(); - var coordSys = seriesModel.coordinateSystem; - var dims = coordSys && coordSys.dimensions; - if (!hasXAndY(item) && !isArray(item.coord) && isArray(dims)) { - var axisInfo = getAxisInfo2(item, data, coordSys, seriesModel); - item = clone(item); - if (item.type && markerTypeCalculator[item.type] && axisInfo.baseAxis && axisInfo.valueAxis) { - var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim); - var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim); - var coordInfo = markerTypeCalculator[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex); - item.coord = coordInfo[0]; - item.value = coordInfo[1]; - } else { - item.coord = [item.xAxis != null ? item.xAxis : item.radiusAxis, item.yAxis != null ? item.yAxis : item.angleAxis]; - } - } - if (item.coord == null || !isArray(dims)) { - item.coord = []; - } else { - var coord = item.coord; - for (var i = 0; i < 2; i++) { - if (markerTypeCalculator[coord[i]]) { - coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i]); - } - } - } - return item; - } - function getAxisInfo2(item, data, coordSys, seriesModel) { - var ret = {}; - if (item.valueIndex != null || item.valueDim != null) { - ret.valueDataDim = item.valueIndex != null ? data.getDimension(item.valueIndex) : item.valueDim; - ret.valueAxis = coordSys.getAxis(dataDimToCoordDim(seriesModel, ret.valueDataDim)); - ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis); - ret.baseDataDim = data.mapDimension(ret.baseAxis.dim); - } else { - ret.baseAxis = seriesModel.getBaseAxis(); - ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis); - ret.baseDataDim = data.mapDimension(ret.baseAxis.dim); - ret.valueDataDim = data.mapDimension(ret.valueAxis.dim); - } - return ret; - } - function dataDimToCoordDim(seriesModel, dataDim) { - var dimItem = seriesModel.getData().getDimensionInfo(dataDim); - return dimItem && dimItem.coordDim; - } - function dataFilter2(coordSys, item) { - return coordSys && coordSys.containData && item.coord && !hasXOrY(item) ? coordSys.containData(item.coord) : true; - } - function zoneFilter(coordSys, item1, item2) { - return coordSys && coordSys.containZone && item1.coord && item2.coord && !hasXOrY(item1) && !hasXOrY(item2) ? coordSys.containZone(item1.coord, item2.coord) : true; - } - function createMarkerDimValueGetter(inCoordSys, dims) { - return inCoordSys ? function(item, dimName, dataIndex, dimIndex) { - var rawVal = dimIndex < 2 ? item.coord && item.coord[dimIndex] : item.value; - return parseDataValue(rawVal, dims[dimIndex]); - } : function(item, dimName, dataIndex, dimIndex) { - return parseDataValue(item.value, dims[dimIndex]); - }; - } - function numCalculate(data, valueDataDim, type) { - if (type === "average") { - var sum_1 = 0; - var count_1 = 0; - data.each(valueDataDim, function(val, idx) { - if (!isNaN(val)) { - sum_1 += val; - count_1++; - } - }); - return sum_1 / count_1; - } else if (type === "median") { - return data.getMedian(valueDataDim); - } else { - return data.getDataExtent(valueDataDim)[type === "max" ? 1 : 0]; - } - } - - // node_modules/echarts/lib/component/marker/MarkerView.js - var inner18 = makeInner(); - var MarkerView = ( - /** @class */ - function(_super) { - __extends(MarkerView2, _super); - function MarkerView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkerView2.type; - return _this; - } - MarkerView2.prototype.init = function() { - this.markerGroupMap = createHashMap(); - }; - MarkerView2.prototype.render = function(markerModel, ecModel, api) { - var _this = this; - var markerGroupMap = this.markerGroupMap; - markerGroupMap.each(function(item) { - inner18(item).keep = false; - }); - ecModel.eachSeries(function(seriesModel) { - var markerModel2 = MarkerModel_default.getMarkerModelFromSeries(seriesModel, _this.type); - markerModel2 && _this.renderSeries(seriesModel, markerModel2, ecModel, api); - }); - markerGroupMap.each(function(item) { - !inner18(item).keep && _this.group.remove(item.group); - }); - }; - MarkerView2.prototype.markKeep = function(drawGroup) { - inner18(drawGroup).keep = true; - }; - MarkerView2.prototype.toggleBlurSeries = function(seriesModelList, isBlur) { - var _this = this; - each(seriesModelList, function(seriesModel) { - var markerModel = MarkerModel_default.getMarkerModelFromSeries(seriesModel, _this.type); - if (markerModel) { - var data = markerModel.getData(); - data.eachItemGraphicEl(function(el) { - if (el) { - isBlur ? enterBlur(el) : leaveBlur(el); - } - }); - } - }); - }; - MarkerView2.type = "marker"; - return MarkerView2; - }(Component_default2) - ); - var MarkerView_default = MarkerView; - - // node_modules/echarts/lib/component/marker/MarkPointView.js - function updateMarkerLayout(mpData, seriesModel, api) { - var coordSys = seriesModel.coordinateSystem; - mpData.each(function(idx) { - var itemModel = mpData.getItemModel(idx); - var point; - var xPx = parsePercent2(itemModel.get("x"), api.getWidth()); - var yPx = parsePercent2(itemModel.get("y"), api.getHeight()); - if (!isNaN(xPx) && !isNaN(yPx)) { - point = [xPx, yPx]; - } else if (seriesModel.getMarkerPosition) { - point = seriesModel.getMarkerPosition(mpData.getValues(mpData.dimensions, idx)); - } else if (coordSys) { - var x = mpData.get(coordSys.dimensions[0], idx); - var y = mpData.get(coordSys.dimensions[1], idx); - point = coordSys.dataToPoint([x, y]); - } - if (!isNaN(xPx)) { - point[0] = xPx; - } - if (!isNaN(yPx)) { - point[1] = yPx; - } - mpData.setItemLayout(idx, point); - }); - } - var MarkPointView = ( - /** @class */ - function(_super) { - __extends(MarkPointView2, _super); - function MarkPointView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkPointView2.type; - return _this; - } - MarkPointView2.prototype.updateTransform = function(markPointModel, ecModel, api) { - ecModel.eachSeries(function(seriesModel) { - var mpModel = MarkerModel_default.getMarkerModelFromSeries(seriesModel, "markPoint"); - if (mpModel) { - updateMarkerLayout(mpModel.getData(), seriesModel, api); - this.markerGroupMap.get(seriesModel.id).updateLayout(); - } - }, this); - }; - MarkPointView2.prototype.renderSeries = function(seriesModel, mpModel, ecModel, api) { - var coordSys = seriesModel.coordinateSystem; - var seriesId = seriesModel.id; - var seriesData = seriesModel.getData(); - var symbolDrawMap = this.markerGroupMap; - var symbolDraw = symbolDrawMap.get(seriesId) || symbolDrawMap.set(seriesId, new SymbolDraw_default()); - var mpData = createData(coordSys, seriesModel, mpModel); - mpModel.setData(mpData); - updateMarkerLayout(mpModel.getData(), seriesModel, api); - mpData.each(function(idx) { - var itemModel = mpData.getItemModel(idx); - var symbol = itemModel.getShallow("symbol"); - var symbolSize = itemModel.getShallow("symbolSize"); - var symbolRotate = itemModel.getShallow("symbolRotate"); - var symbolOffset = itemModel.getShallow("symbolOffset"); - var symbolKeepAspect = itemModel.getShallow("symbolKeepAspect"); - if (isFunction(symbol) || isFunction(symbolSize) || isFunction(symbolRotate) || isFunction(symbolOffset)) { - var rawIdx = mpModel.getRawValue(idx); - var dataParams = mpModel.getDataParams(idx); - if (isFunction(symbol)) { - symbol = symbol(rawIdx, dataParams); - } - if (isFunction(symbolSize)) { - symbolSize = symbolSize(rawIdx, dataParams); - } - if (isFunction(symbolRotate)) { - symbolRotate = symbolRotate(rawIdx, dataParams); - } - if (isFunction(symbolOffset)) { - symbolOffset = symbolOffset(rawIdx, dataParams); - } - } - var style = itemModel.getModel("itemStyle").getItemStyle(); - var color = getVisualFromData(seriesData, "color"); - if (!style.fill) { - style.fill = color; - } - mpData.setItemVisual(idx, { - symbol, - symbolSize, - symbolRotate, - symbolOffset, - symbolKeepAspect, - style - }); - }); - symbolDraw.updateData(mpData); - this.group.add(symbolDraw.group); - mpData.eachItemGraphicEl(function(el) { - el.traverse(function(child) { - getECData(child).dataModel = mpModel; - }); - }); - this.markKeep(symbolDraw); - symbolDraw.group.silent = mpModel.get("silent") || seriesModel.get("silent"); - }; - MarkPointView2.type = "markPoint"; - return MarkPointView2; - }(MarkerView_default) - ); - function createData(coordSys, seriesModel, mpModel) { - var coordDimsInfos; - if (coordSys) { - coordDimsInfos = map(coordSys && coordSys.dimensions, function(coordDim) { - var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; - return extend(extend({}, info), { - name: coordDim, - // DON'T use ordinalMeta to parse and collect ordinal. - ordinalMeta: null - }); - }); - } else { - coordDimsInfos = [{ - name: "value", - type: "float" - }]; - } - var mpData = new SeriesData_default(coordDimsInfos, mpModel); - var dataOpt = map(mpModel.get("data"), curry(dataTransform, seriesModel)); - if (coordSys) { - dataOpt = filter(dataOpt, curry(dataFilter2, coordSys)); - } - var dimValueGetter = createMarkerDimValueGetter(!!coordSys, coordDimsInfos); - mpData.initData(dataOpt, null, dimValueGetter); - return mpData; - } - var MarkPointView_default = MarkPointView; - - // node_modules/echarts/lib/component/marker/installMarkPoint.js - function install41(registers) { - registers.registerComponentModel(MarkPointModel_default); - registers.registerComponentView(MarkPointView_default); - registers.registerPreprocessor(function(opt) { - if (checkMarkerInSeries(opt.series, "markPoint")) { - opt.markPoint = opt.markPoint || {}; - } - }); - } - - // node_modules/echarts/lib/component/marker/MarkLineModel.js - var MarkLineModel = ( - /** @class */ - function(_super) { - __extends(MarkLineModel2, _super); - function MarkLineModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkLineModel2.type; - return _this; - } - MarkLineModel2.prototype.createMarkerModelFromSeries = function(markerOpt, masterMarkerModel, ecModel) { - return new MarkLineModel2(markerOpt, masterMarkerModel, ecModel); - }; - MarkLineModel2.type = "markLine"; - MarkLineModel2.defaultOption = { - // zlevel: 0, - z: 5, - symbol: ["circle", "arrow"], - symbolSize: [8, 16], - // symbolRotate: 0, - symbolOffset: 0, - precision: 2, - tooltip: { - trigger: "item" - }, - label: { - show: true, - position: "end", - distance: 5 - }, - lineStyle: { - type: "dashed" - }, - emphasis: { - label: { - show: true - }, - lineStyle: { - width: 3 - } - }, - animationEasing: "linear" - }; - return MarkLineModel2; - }(MarkerModel_default) - ); - var MarkLineModel_default = MarkLineModel; - - // node_modules/echarts/lib/component/marker/MarkLineView.js - var inner19 = makeInner(); - var markLineTransform = function(seriesModel, coordSys, mlModel, item) { - var data = seriesModel.getData(); - var itemArray; - if (!isArray(item)) { - var mlType = item.type; - if (mlType === "min" || mlType === "max" || mlType === "average" || mlType === "median" || item.xAxis != null || item.yAxis != null) { - var valueAxis2 = void 0; - var value = void 0; - if (item.yAxis != null || item.xAxis != null) { - valueAxis2 = coordSys.getAxis(item.yAxis != null ? "y" : "x"); - value = retrieve(item.yAxis, item.xAxis); - } else { - var axisInfo = getAxisInfo2(item, data, coordSys, seriesModel); - valueAxis2 = axisInfo.valueAxis; - var valueDataDim = getStackedDimension(data, axisInfo.valueDataDim); - value = numCalculate(data, valueDataDim, mlType); - } - var valueIndex = valueAxis2.dim === "x" ? 0 : 1; - var baseIndex = 1 - valueIndex; - var mlFrom = clone(item); - var mlTo = { - coord: [] - }; - mlFrom.type = null; - mlFrom.coord = []; - mlFrom.coord[baseIndex] = -Infinity; - mlTo.coord[baseIndex] = Infinity; - var precision = mlModel.get("precision"); - if (precision >= 0 && isNumber(value)) { - value = +value.toFixed(Math.min(precision, 20)); - } - mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value; - itemArray = [mlFrom, mlTo, { - type: mlType, - valueIndex: item.valueIndex, - // Force to use the value of calculated value. - value - }]; - } else { - if (true) { - logError("Invalid markLine data."); - } - itemArray = []; - } - } else { - itemArray = item; - } - var normalizedItem = [dataTransform(seriesModel, itemArray[0]), dataTransform(seriesModel, itemArray[1]), extend({}, itemArray[2])]; - normalizedItem[2].type = normalizedItem[2].type || null; - merge(normalizedItem[2], normalizedItem[0]); - merge(normalizedItem[2], normalizedItem[1]); - return normalizedItem; - }; - function isInfinity(val) { - return !isNaN(val) && !isFinite(val); - } - function ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) { - var otherDimIndex = 1 - dimIndex; - var dimName = coordSys.dimensions[dimIndex]; - return isInfinity(fromCoord[otherDimIndex]) && isInfinity(toCoord[otherDimIndex]) && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]); - } - function markLineFilter(coordSys, item) { - if (coordSys.type === "cartesian2d") { - var fromCoord = item[0].coord; - var toCoord = item[1].coord; - if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) { - return true; - } - } - return dataFilter2(coordSys, item[0]) && dataFilter2(coordSys, item[1]); - } - function updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api) { - var coordSys = seriesModel.coordinateSystem; - var itemModel = data.getItemModel(idx); - var point; - var xPx = parsePercent2(itemModel.get("x"), api.getWidth()); - var yPx = parsePercent2(itemModel.get("y"), api.getHeight()); - if (!isNaN(xPx) && !isNaN(yPx)) { - point = [xPx, yPx]; - } else { - if (seriesModel.getMarkerPosition) { - point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx)); - } else { - var dims = coordSys.dimensions; - var x = data.get(dims[0], idx); - var y = data.get(dims[1], idx); - point = coordSys.dataToPoint([x, y]); - } - if (isCoordinateSystemType(coordSys, "cartesian2d")) { - var xAxis = coordSys.getAxis("x"); - var yAxis = coordSys.getAxis("y"); - var dims = coordSys.dimensions; - if (isInfinity(data.get(dims[0], idx))) { - point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]); - } else if (isInfinity(data.get(dims[1], idx))) { - point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]); - } - } - if (!isNaN(xPx)) { - point[0] = xPx; - } - if (!isNaN(yPx)) { - point[1] = yPx; - } - } - data.setItemLayout(idx, point); - } - var MarkLineView = ( - /** @class */ - function(_super) { - __extends(MarkLineView2, _super); - function MarkLineView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkLineView2.type; - return _this; - } - MarkLineView2.prototype.updateTransform = function(markLineModel, ecModel, api) { - ecModel.eachSeries(function(seriesModel) { - var mlModel = MarkerModel_default.getMarkerModelFromSeries(seriesModel, "markLine"); - if (mlModel) { - var mlData_1 = mlModel.getData(); - var fromData_1 = inner19(mlModel).from; - var toData_1 = inner19(mlModel).to; - fromData_1.each(function(idx) { - updateSingleMarkerEndLayout(fromData_1, idx, true, seriesModel, api); - updateSingleMarkerEndLayout(toData_1, idx, false, seriesModel, api); - }); - mlData_1.each(function(idx) { - mlData_1.setItemLayout(idx, [fromData_1.getItemLayout(idx), toData_1.getItemLayout(idx)]); - }); - this.markerGroupMap.get(seriesModel.id).updateLayout(); - } - }, this); - }; - MarkLineView2.prototype.renderSeries = function(seriesModel, mlModel, ecModel, api) { - var coordSys = seriesModel.coordinateSystem; - var seriesId = seriesModel.id; - var seriesData = seriesModel.getData(); - var lineDrawMap = this.markerGroupMap; - var lineDraw = lineDrawMap.get(seriesId) || lineDrawMap.set(seriesId, new LineDraw_default()); - this.group.add(lineDraw.group); - var mlData = createList2(coordSys, seriesModel, mlModel); - var fromData = mlData.from; - var toData = mlData.to; - var lineData = mlData.line; - inner19(mlModel).from = fromData; - inner19(mlModel).to = toData; - mlModel.setData(lineData); - var symbolType = mlModel.get("symbol"); - var symbolSize = mlModel.get("symbolSize"); - var symbolRotate = mlModel.get("symbolRotate"); - var symbolOffset = mlModel.get("symbolOffset"); - if (!isArray(symbolType)) { - symbolType = [symbolType, symbolType]; - } - if (!isArray(symbolSize)) { - symbolSize = [symbolSize, symbolSize]; - } - if (!isArray(symbolRotate)) { - symbolRotate = [symbolRotate, symbolRotate]; - } - if (!isArray(symbolOffset)) { - symbolOffset = [symbolOffset, symbolOffset]; - } - mlData.from.each(function(idx) { - updateDataVisualAndLayout(fromData, idx, true); - updateDataVisualAndLayout(toData, idx, false); - }); - lineData.each(function(idx) { - var lineStyle = lineData.getItemModel(idx).getModel("lineStyle").getLineStyle(); - lineData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]); - if (lineStyle.stroke == null) { - lineStyle.stroke = fromData.getItemVisual(idx, "style").fill; - } - lineData.setItemVisual(idx, { - fromSymbolKeepAspect: fromData.getItemVisual(idx, "symbolKeepAspect"), - fromSymbolOffset: fromData.getItemVisual(idx, "symbolOffset"), - fromSymbolRotate: fromData.getItemVisual(idx, "symbolRotate"), - fromSymbolSize: fromData.getItemVisual(idx, "symbolSize"), - fromSymbol: fromData.getItemVisual(idx, "symbol"), - toSymbolKeepAspect: toData.getItemVisual(idx, "symbolKeepAspect"), - toSymbolOffset: toData.getItemVisual(idx, "symbolOffset"), - toSymbolRotate: toData.getItemVisual(idx, "symbolRotate"), - toSymbolSize: toData.getItemVisual(idx, "symbolSize"), - toSymbol: toData.getItemVisual(idx, "symbol"), - style: lineStyle - }); - }); - lineDraw.updateData(lineData); - mlData.line.eachItemGraphicEl(function(el) { - getECData(el).dataModel = mlModel; - el.traverse(function(child) { - getECData(child).dataModel = mlModel; - }); - }); - function updateDataVisualAndLayout(data, idx, isFrom) { - var itemModel = data.getItemModel(idx); - updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api); - var style = itemModel.getModel("itemStyle").getItemStyle(); - if (style.fill == null) { - style.fill = getVisualFromData(seriesData, "color"); - } - data.setItemVisual(idx, { - symbolKeepAspect: itemModel.get("symbolKeepAspect"), - // `0` should be considered as a valid value, so use `retrieve2` instead of `||` - symbolOffset: retrieve2(itemModel.get("symbolOffset", true), symbolOffset[isFrom ? 0 : 1]), - symbolRotate: retrieve2(itemModel.get("symbolRotate", true), symbolRotate[isFrom ? 0 : 1]), - // TODO: when 2d array is supported, it should ignore parent - symbolSize: retrieve2(itemModel.get("symbolSize"), symbolSize[isFrom ? 0 : 1]), - symbol: retrieve2(itemModel.get("symbol", true), symbolType[isFrom ? 0 : 1]), - style - }); - } - this.markKeep(lineDraw); - lineDraw.group.silent = mlModel.get("silent") || seriesModel.get("silent"); - }; - MarkLineView2.type = "markLine"; - return MarkLineView2; - }(MarkerView_default) - ); - function createList2(coordSys, seriesModel, mlModel) { - var coordDimsInfos; - if (coordSys) { - coordDimsInfos = map(coordSys && coordSys.dimensions, function(coordDim) { - var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; - return extend(extend({}, info), { - name: coordDim, - // DON'T use ordinalMeta to parse and collect ordinal. - ordinalMeta: null - }); - }); - } else { - coordDimsInfos = [{ - name: "value", - type: "float" - }]; - } - var fromData = new SeriesData_default(coordDimsInfos, mlModel); - var toData = new SeriesData_default(coordDimsInfos, mlModel); - var lineData = new SeriesData_default([], mlModel); - var optData = map(mlModel.get("data"), curry(markLineTransform, seriesModel, coordSys, mlModel)); - if (coordSys) { - optData = filter(optData, curry(markLineFilter, coordSys)); - } - var dimValueGetter = createMarkerDimValueGetter(!!coordSys, coordDimsInfos); - fromData.initData(map(optData, function(item) { - return item[0]; - }), null, dimValueGetter); - toData.initData(map(optData, function(item) { - return item[1]; - }), null, dimValueGetter); - lineData.initData(map(optData, function(item) { - return item[2]; - })); - lineData.hasItemOption = true; - return { - from: fromData, - to: toData, - line: lineData - }; - } - var MarkLineView_default = MarkLineView; - - // node_modules/echarts/lib/component/marker/installMarkLine.js - function install42(registers) { - registers.registerComponentModel(MarkLineModel_default); - registers.registerComponentView(MarkLineView_default); - registers.registerPreprocessor(function(opt) { - if (checkMarkerInSeries(opt.series, "markLine")) { - opt.markLine = opt.markLine || {}; - } - }); - } - - // node_modules/echarts/lib/component/marker/MarkAreaModel.js - var MarkAreaModel = ( - /** @class */ - function(_super) { - __extends(MarkAreaModel2, _super); - function MarkAreaModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkAreaModel2.type; - return _this; - } - MarkAreaModel2.prototype.createMarkerModelFromSeries = function(markerOpt, masterMarkerModel, ecModel) { - return new MarkAreaModel2(markerOpt, masterMarkerModel, ecModel); - }; - MarkAreaModel2.type = "markArea"; - MarkAreaModel2.defaultOption = { - // zlevel: 0, - // PENDING - z: 1, - tooltip: { - trigger: "item" - }, - // markArea should fixed on the coordinate system - animation: false, - label: { - show: true, - position: "top" - }, - itemStyle: { - // color and borderColor default to use color from series - // color: 'auto' - // borderColor: 'auto' - borderWidth: 0 - }, - emphasis: { - label: { - show: true, - position: "top" - } - } - }; - return MarkAreaModel2; - }(MarkerModel_default) - ); - var MarkAreaModel_default = MarkAreaModel; - - // node_modules/echarts/lib/component/marker/MarkAreaView.js - var inner20 = makeInner(); - var markAreaTransform = function(seriesModel, coordSys, maModel, item) { - var item0 = item[0]; - var item1 = item[1]; - if (!item0 || !item1) { - return; - } - var lt2 = dataTransform(seriesModel, item0); - var rb2 = dataTransform(seriesModel, item1); - var ltCoord = lt2.coord; - var rbCoord = rb2.coord; - ltCoord[0] = retrieve(ltCoord[0], -Infinity); - ltCoord[1] = retrieve(ltCoord[1], -Infinity); - rbCoord[0] = retrieve(rbCoord[0], Infinity); - rbCoord[1] = retrieve(rbCoord[1], Infinity); - var result = mergeAll([{}, lt2, rb2]); - result.coord = [lt2.coord, rb2.coord]; - result.x0 = lt2.x; - result.y0 = lt2.y; - result.x1 = rb2.x; - result.y1 = rb2.y; - return result; - }; - function isInfinity2(val) { - return !isNaN(val) && !isFinite(val); - } - function ifMarkAreaHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) { - var otherDimIndex = 1 - dimIndex; - return isInfinity2(fromCoord[otherDimIndex]) && isInfinity2(toCoord[otherDimIndex]); - } - function markAreaFilter(coordSys, item) { - var fromCoord = item.coord[0]; - var toCoord = item.coord[1]; - var item0 = { - coord: fromCoord, - x: item.x0, - y: item.y0 - }; - var item1 = { - coord: toCoord, - x: item.x1, - y: item.y1 - }; - if (isCoordinateSystemType(coordSys, "cartesian2d")) { - if (fromCoord && toCoord && (ifMarkAreaHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkAreaHasOnlyDim(0, fromCoord, toCoord, coordSys))) { - return true; - } - return zoneFilter(coordSys, item0, item1); - } - return dataFilter2(coordSys, item0) || dataFilter2(coordSys, item1); - } - function getSingleMarkerEndPoint(data, idx, dims, seriesModel, api) { - var coordSys = seriesModel.coordinateSystem; - var itemModel = data.getItemModel(idx); - var point; - var xPx = parsePercent2(itemModel.get(dims[0]), api.getWidth()); - var yPx = parsePercent2(itemModel.get(dims[1]), api.getHeight()); - if (!isNaN(xPx) && !isNaN(yPx)) { - point = [xPx, yPx]; - } else { - if (seriesModel.getMarkerPosition) { - var pointValue0 = data.getValues(["x0", "y0"], idx); - var pointValue1 = data.getValues(["x1", "y1"], idx); - var clampPointValue0 = coordSys.clampData(pointValue0); - var clampPointValue1 = coordSys.clampData(pointValue1); - var pointValue = []; - if (dims[0] === "x0") { - pointValue[0] = clampPointValue0[0] > clampPointValue1[0] ? pointValue1[0] : pointValue0[0]; - } else { - pointValue[0] = clampPointValue0[0] > clampPointValue1[0] ? pointValue0[0] : pointValue1[0]; - } - if (dims[1] === "y0") { - pointValue[1] = clampPointValue0[1] > clampPointValue1[1] ? pointValue1[1] : pointValue0[1]; - } else { - pointValue[1] = clampPointValue0[1] > clampPointValue1[1] ? pointValue0[1] : pointValue1[1]; - } - point = seriesModel.getMarkerPosition(pointValue, dims, true); - } else { - var x = data.get(dims[0], idx); - var y = data.get(dims[1], idx); - var pt = [x, y]; - coordSys.clampData && coordSys.clampData(pt, pt); - point = coordSys.dataToPoint(pt, true); - } - if (isCoordinateSystemType(coordSys, "cartesian2d")) { - var xAxis = coordSys.getAxis("x"); - var yAxis = coordSys.getAxis("y"); - var x = data.get(dims[0], idx); - var y = data.get(dims[1], idx); - if (isInfinity2(x)) { - point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[dims[0] === "x0" ? 0 : 1]); - } else if (isInfinity2(y)) { - point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[dims[1] === "y0" ? 0 : 1]); - } - } - if (!isNaN(xPx)) { - point[0] = xPx; - } - if (!isNaN(yPx)) { - point[1] = yPx; - } - } - return point; - } - var dimPermutations = [["x0", "y0"], ["x1", "y0"], ["x1", "y1"], ["x0", "y1"]]; - var MarkAreaView = ( - /** @class */ - function(_super) { - __extends(MarkAreaView2, _super); - function MarkAreaView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = MarkAreaView2.type; - return _this; - } - MarkAreaView2.prototype.updateTransform = function(markAreaModel, ecModel, api) { - ecModel.eachSeries(function(seriesModel) { - var maModel = MarkerModel_default.getMarkerModelFromSeries(seriesModel, "markArea"); - if (maModel) { - var areaData_1 = maModel.getData(); - areaData_1.each(function(idx) { - var points4 = map(dimPermutations, function(dim) { - return getSingleMarkerEndPoint(areaData_1, idx, dim, seriesModel, api); - }); - areaData_1.setItemLayout(idx, points4); - var el = areaData_1.getItemGraphicEl(idx); - el.setShape("points", points4); - }); - } - }, this); - }; - MarkAreaView2.prototype.renderSeries = function(seriesModel, maModel, ecModel, api) { - var coordSys = seriesModel.coordinateSystem; - var seriesId = seriesModel.id; - var seriesData = seriesModel.getData(); - var areaGroupMap = this.markerGroupMap; - var polygonGroup = areaGroupMap.get(seriesId) || areaGroupMap.set(seriesId, { - group: new Group_default() - }); - this.group.add(polygonGroup.group); - this.markKeep(polygonGroup); - var areaData = createList3(coordSys, seriesModel, maModel); - maModel.setData(areaData); - areaData.each(function(idx) { - var points4 = map(dimPermutations, function(dim) { - return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api); - }); - var xAxisScale = coordSys.getAxis("x").scale; - var yAxisScale = coordSys.getAxis("y").scale; - var xAxisExtent = xAxisScale.getExtent(); - var yAxisExtent = yAxisScale.getExtent(); - var xPointExtent = [xAxisScale.parse(areaData.get("x0", idx)), xAxisScale.parse(areaData.get("x1", idx))]; - var yPointExtent = [yAxisScale.parse(areaData.get("y0", idx)), yAxisScale.parse(areaData.get("y1", idx))]; - asc(xPointExtent); - asc(yPointExtent); - var overlapped = !(xAxisExtent[0] > xPointExtent[1] || xAxisExtent[1] < xPointExtent[0] || yAxisExtent[0] > yPointExtent[1] || yAxisExtent[1] < yPointExtent[0]); - var allClipped = !overlapped; - areaData.setItemLayout(idx, { - points: points4, - allClipped - }); - var style = areaData.getItemModel(idx).getModel("itemStyle").getItemStyle(); - var color = getVisualFromData(seriesData, "color"); - if (!style.fill) { - style.fill = color; - if (isString(style.fill)) { - style.fill = modifyAlpha(style.fill, 0.4); - } - } - if (!style.stroke) { - style.stroke = color; - } - areaData.setItemVisual(idx, "style", style); - }); - areaData.diff(inner20(polygonGroup).data).add(function(idx) { - var layout5 = areaData.getItemLayout(idx); - if (!layout5.allClipped) { - var polygon = new Polygon_default({ - shape: { - points: layout5.points - } - }); - areaData.setItemGraphicEl(idx, polygon); - polygonGroup.group.add(polygon); - } - }).update(function(newIdx, oldIdx) { - var polygon = inner20(polygonGroup).data.getItemGraphicEl(oldIdx); - var layout5 = areaData.getItemLayout(newIdx); - if (!layout5.allClipped) { - if (polygon) { - updateProps(polygon, { - shape: { - points: layout5.points - } - }, maModel, newIdx); - } else { - polygon = new Polygon_default({ - shape: { - points: layout5.points - } - }); - } - areaData.setItemGraphicEl(newIdx, polygon); - polygonGroup.group.add(polygon); - } else if (polygon) { - polygonGroup.group.remove(polygon); - } - }).remove(function(idx) { - var polygon = inner20(polygonGroup).data.getItemGraphicEl(idx); - polygonGroup.group.remove(polygon); - }).execute(); - areaData.eachItemGraphicEl(function(polygon, idx) { - var itemModel = areaData.getItemModel(idx); - var style = areaData.getItemVisual(idx, "style"); - polygon.useStyle(areaData.getItemVisual(idx, "style")); - setLabelStyle(polygon, getLabelStatesModels(itemModel), { - labelFetcher: maModel, - labelDataIndex: idx, - defaultText: areaData.getName(idx) || "", - inheritColor: isString(style.fill) ? modifyAlpha(style.fill, 1) : "#000" - }); - setStatesStylesFromModel(polygon, itemModel); - toggleHoverEmphasis(polygon, null, null, itemModel.get(["emphasis", "disabled"])); - getECData(polygon).dataModel = maModel; - }); - inner20(polygonGroup).data = areaData; - polygonGroup.group.silent = maModel.get("silent") || seriesModel.get("silent"); - }; - MarkAreaView2.type = "markArea"; - return MarkAreaView2; - }(MarkerView_default) - ); - function createList3(coordSys, seriesModel, maModel) { - var areaData; - var dataDims; - var dims = ["x0", "y0", "x1", "y1"]; - if (coordSys) { - var coordDimsInfos_1 = map(coordSys && coordSys.dimensions, function(coordDim) { - var data = seriesModel.getData(); - var info = data.getDimensionInfo(data.mapDimension(coordDim)) || {}; - return extend(extend({}, info), { - name: coordDim, - // DON'T use ordinalMeta to parse and collect ordinal. - ordinalMeta: null - }); - }); - dataDims = map(dims, function(dim, idx) { - return { - name: dim, - type: coordDimsInfos_1[idx % 2].type - }; - }); - areaData = new SeriesData_default(dataDims, maModel); - } else { - dataDims = [{ - name: "value", - type: "float" - }]; - areaData = new SeriesData_default(dataDims, maModel); - } - var optData = map(maModel.get("data"), curry(markAreaTransform, seriesModel, coordSys, maModel)); - if (coordSys) { - optData = filter(optData, curry(markAreaFilter, coordSys)); - } - var dimValueGetter = coordSys ? function(item, dimName, dataIndex, dimIndex) { - var rawVal = item.coord[Math.floor(dimIndex / 2)][dimIndex % 2]; - return parseDataValue(rawVal, dataDims[dimIndex]); - } : function(item, dimName, dataIndex, dimIndex) { - return parseDataValue(item.value, dataDims[dimIndex]); - }; - areaData.initData(optData, null, dimValueGetter); - areaData.hasItemOption = true; - return areaData; - } - var MarkAreaView_default = MarkAreaView; - - // node_modules/echarts/lib/component/marker/installMarkArea.js - function install43(registers) { - registers.registerComponentModel(MarkAreaModel_default); - registers.registerComponentView(MarkAreaView_default); - registers.registerPreprocessor(function(opt) { - if (checkMarkerInSeries(opt.series, "markArea")) { - opt.markArea = opt.markArea || {}; - } - }); - } - - // node_modules/echarts/lib/component/legend/LegendModel.js - var getDefaultSelectorOptions = function(ecModel, type) { - if (type === "all") { - return { - type: "all", - title: ecModel.getLocaleModel().get(["legend", "selector", "all"]) - }; - } else if (type === "inverse") { - return { - type: "inverse", - title: ecModel.getLocaleModel().get(["legend", "selector", "inverse"]) - }; - } - }; - var LegendModel = ( - /** @class */ - function(_super) { - __extends(LegendModel2, _super); - function LegendModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = LegendModel2.type; - _this.layoutMode = { - type: "box", - // legend.width/height are maxWidth/maxHeight actually, - // whereas real width/height is calculated by its content. - // (Setting {left: 10, right: 10} does not make sense). - // So consider the case: - // `setOption({legend: {left: 10});` - // then `setOption({legend: {right: 10});` - // The previous `left` should be cleared by setting `ignoreSize`. - ignoreSize: true - }; - return _this; - } - LegendModel2.prototype.init = function(option, parentModel, ecModel) { - this.mergeDefaultAndTheme(option, ecModel); - option.selected = option.selected || {}; - this._updateSelector(option); - }; - LegendModel2.prototype.mergeOption = function(option, ecModel) { - _super.prototype.mergeOption.call(this, option, ecModel); - this._updateSelector(option); - }; - LegendModel2.prototype._updateSelector = function(option) { - var selector2 = option.selector; - var ecModel = this.ecModel; - if (selector2 === true) { - selector2 = option.selector = ["all", "inverse"]; - } - if (isArray(selector2)) { - each(selector2, function(item, index) { - isString(item) && (item = { - type: item - }); - selector2[index] = merge(item, getDefaultSelectorOptions(ecModel, item.type)); - }); - } - }; - LegendModel2.prototype.optionUpdated = function() { - this._updateData(this.ecModel); - var legendData = this._data; - if (legendData[0] && this.get("selectedMode") === "single") { - var hasSelected = false; - for (var i = 0; i < legendData.length; i++) { - var name_1 = legendData[i].get("name"); - if (this.isSelected(name_1)) { - this.select(name_1); - hasSelected = true; - break; - } - } - !hasSelected && this.select(legendData[0].get("name")); - } - }; - LegendModel2.prototype._updateData = function(ecModel) { - var potentialData = []; - var availableNames = []; - ecModel.eachRawSeries(function(seriesModel) { - var seriesName = seriesModel.name; - availableNames.push(seriesName); - var isPotential; - if (seriesModel.legendVisualProvider) { - var provider = seriesModel.legendVisualProvider; - var names = provider.getAllNames(); - if (!ecModel.isSeriesFiltered(seriesModel)) { - availableNames = availableNames.concat(names); - } - if (names.length) { - potentialData = potentialData.concat(names); - } else { - isPotential = true; - } - } else { - isPotential = true; - } - if (isPotential && isNameSpecified(seriesModel)) { - potentialData.push(seriesModel.name); - } - }); - this._availableNames = availableNames; - var rawData = this.get("data") || potentialData; - var legendNameMap = createHashMap(); - var legendData = map(rawData, function(dataItem) { - if (isString(dataItem) || isNumber(dataItem)) { - dataItem = { - name: dataItem - }; - } - if (legendNameMap.get(dataItem.name)) { - return null; - } - legendNameMap.set(dataItem.name, true); - return new Model_default(dataItem, this, this.ecModel); - }, this); - this._data = filter(legendData, function(item) { - return !!item; - }); - }; - LegendModel2.prototype.getData = function() { - return this._data; - }; - LegendModel2.prototype.select = function(name) { - var selected = this.option.selected; - var selectedMode = this.get("selectedMode"); - if (selectedMode === "single") { - var data = this._data; - each(data, function(dataItem) { - selected[dataItem.get("name")] = false; - }); - } - selected[name] = true; - }; - LegendModel2.prototype.unSelect = function(name) { - if (this.get("selectedMode") !== "single") { - this.option.selected[name] = false; - } - }; - LegendModel2.prototype.toggleSelected = function(name) { - var selected = this.option.selected; - if (!selected.hasOwnProperty(name)) { - selected[name] = true; - } - this[selected[name] ? "unSelect" : "select"](name); - }; - LegendModel2.prototype.allSelect = function() { - var data = this._data; - var selected = this.option.selected; - each(data, function(dataItem) { - selected[dataItem.get("name", true)] = true; - }); - }; - LegendModel2.prototype.inverseSelect = function() { - var data = this._data; - var selected = this.option.selected; - each(data, function(dataItem) { - var name = dataItem.get("name", true); - if (!selected.hasOwnProperty(name)) { - selected[name] = true; - } - selected[name] = !selected[name]; - }); - }; - LegendModel2.prototype.isSelected = function(name) { - var selected = this.option.selected; - return !(selected.hasOwnProperty(name) && !selected[name]) && indexOf(this._availableNames, name) >= 0; - }; - LegendModel2.prototype.getOrient = function() { - return this.get("orient") === "vertical" ? { - index: 1, - name: "vertical" - } : { - index: 0, - name: "horizontal" - }; - }; - LegendModel2.type = "legend.plain"; - LegendModel2.dependencies = ["series"]; - LegendModel2.defaultOption = { - // zlevel: 0, - z: 4, - show: true, - orient: "horizontal", - left: "center", - // right: 'center', - top: 0, - // bottom: null, - align: "auto", - backgroundColor: "rgba(0,0,0,0)", - borderColor: "#ccc", - borderRadius: 0, - borderWidth: 0, - padding: 5, - itemGap: 10, - itemWidth: 25, - itemHeight: 14, - symbolRotate: "inherit", - symbolKeepAspect: true, - inactiveColor: "#ccc", - inactiveBorderColor: "#ccc", - inactiveBorderWidth: "auto", - itemStyle: { - color: "inherit", - opacity: "inherit", - borderColor: "inherit", - borderWidth: "auto", - borderCap: "inherit", - borderJoin: "inherit", - borderDashOffset: "inherit", - borderMiterLimit: "inherit" - }, - lineStyle: { - width: "auto", - color: "inherit", - inactiveColor: "#ccc", - inactiveWidth: 2, - opacity: "inherit", - type: "inherit", - cap: "inherit", - join: "inherit", - dashOffset: "inherit", - miterLimit: "inherit" - }, - textStyle: { - color: "#333" - }, - selectedMode: true, - selector: false, - selectorLabel: { - show: true, - borderRadius: 10, - padding: [3, 5, 3, 5], - fontSize: 12, - fontFamily: "sans-serif", - color: "#666", - borderWidth: 1, - borderColor: "#666" - }, - emphasis: { - selectorLabel: { - show: true, - color: "#eee", - backgroundColor: "#666" - } - }, - selectorPosition: "auto", - selectorItemGap: 7, - selectorButtonGap: 10, - tooltip: { - show: false - } - }; - return LegendModel2; - }(Component_default) - ); - var LegendModel_default = LegendModel; - - // node_modules/echarts/lib/component/legend/LegendView.js - var curry2 = curry; - var each13 = each; - var Group3 = Group_default; - var LegendView = ( - /** @class */ - function(_super) { - __extends(LegendView2, _super); - function LegendView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = LegendView2.type; - _this.newlineDisabled = false; - return _this; - } - LegendView2.prototype.init = function() { - this.group.add(this._contentGroup = new Group3()); - this.group.add(this._selectorGroup = new Group3()); - this._isFirstRender = true; - }; - LegendView2.prototype.getContentGroup = function() { - return this._contentGroup; - }; - LegendView2.prototype.getSelectorGroup = function() { - return this._selectorGroup; - }; - LegendView2.prototype.render = function(legendModel, ecModel, api) { - var isFirstRender = this._isFirstRender; - this._isFirstRender = false; - this.resetInner(); - if (!legendModel.get("show", true)) { - return; - } - var itemAlign = legendModel.get("align"); - var orient = legendModel.get("orient"); - if (!itemAlign || itemAlign === "auto") { - itemAlign = legendModel.get("left") === "right" && orient === "vertical" ? "right" : "left"; - } - var selector2 = legendModel.get("selector", true); - var selectorPosition = legendModel.get("selectorPosition", true); - if (selector2 && (!selectorPosition || selectorPosition === "auto")) { - selectorPosition = orient === "horizontal" ? "end" : "start"; - } - this.renderInner(itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition); - var positionInfo = legendModel.getBoxLayoutParams(); - var viewportSize = { - width: api.getWidth(), - height: api.getHeight() - }; - var padding = legendModel.get("padding"); - var maxSize = getLayoutRect(positionInfo, viewportSize, padding); - var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector2, selectorPosition); - var layoutRect = getLayoutRect(defaults({ - width: mainRect.width, - height: mainRect.height - }, positionInfo), viewportSize, padding); - this.group.x = layoutRect.x - mainRect.x; - this.group.y = layoutRect.y - mainRect.y; - this.group.markRedraw(); - this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel)); - }; - LegendView2.prototype.resetInner = function() { - this.getContentGroup().removeAll(); - this._backgroundEl && this.group.remove(this._backgroundEl); - this.getSelectorGroup().removeAll(); - }; - LegendView2.prototype.renderInner = function(itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition) { - var contentGroup = this.getContentGroup(); - var legendDrawnMap = createHashMap(); - var selectMode = legendModel.get("selectedMode"); - var excludeSeriesId = []; - ecModel.eachRawSeries(function(seriesModel) { - !seriesModel.get("legendHoverLink") && excludeSeriesId.push(seriesModel.id); - }); - each13(legendModel.getData(), function(legendItemModel, dataIndex) { - var name = legendItemModel.get("name"); - if (!this.newlineDisabled && (name === "" || name === "\n")) { - var g = new Group3(); - g.newline = true; - contentGroup.add(g); - return; - } - var seriesModel = ecModel.getSeriesByName(name)[0]; - if (legendDrawnMap.get(name)) { - return; - } - if (seriesModel) { - var data = seriesModel.getData(); - var lineVisualStyle = data.getVisual("legendLineStyle") || {}; - var legendIcon = data.getVisual("legendIcon"); - var style = data.getVisual("style"); - var itemGroup = this._createItem(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, style, legendIcon, selectMode, api); - itemGroup.on("click", curry2(dispatchSelectAction, name, null, api, excludeSeriesId)).on("mouseover", curry2(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId)).on("mouseout", curry2(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId)); - if (ecModel.ssr) { - itemGroup.eachChild(function(child) { - var ecData = getECData(child); - ecData.seriesIndex = seriesModel.seriesIndex; - ecData.dataIndex = dataIndex; - ecData.ssrType = "legend"; - }); - } - legendDrawnMap.set(name, true); - } else { - ecModel.eachRawSeries(function(seriesModel2) { - if (legendDrawnMap.get(name)) { - return; - } - if (seriesModel2.legendVisualProvider) { - var provider = seriesModel2.legendVisualProvider; - if (!provider.containName(name)) { - return; - } - var idx = provider.indexOfName(name); - var style2 = provider.getItemVisual(idx, "style"); - var legendIcon2 = provider.getItemVisual(idx, "legendIcon"); - var colorArr = parse(style2.fill); - if (colorArr && colorArr[3] === 0) { - colorArr[3] = 0.2; - style2 = extend(extend({}, style2), { - fill: stringify(colorArr, "rgba") - }); - } - var itemGroup2 = this._createItem(seriesModel2, name, dataIndex, legendItemModel, legendModel, itemAlign, {}, style2, legendIcon2, selectMode, api); - itemGroup2.on("click", curry2(dispatchSelectAction, null, name, api, excludeSeriesId)).on("mouseover", curry2(dispatchHighlightAction, null, name, api, excludeSeriesId)).on("mouseout", curry2(dispatchDownplayAction, null, name, api, excludeSeriesId)); - if (ecModel.ssr) { - itemGroup2.eachChild(function(child) { - var ecData = getECData(child); - ecData.seriesIndex = seriesModel2.seriesIndex; - ecData.dataIndex = dataIndex; - ecData.ssrType = "legend"; - }); - } - legendDrawnMap.set(name, true); - } - }, this); - } - if (true) { - if (!legendDrawnMap.get(name)) { - console.warn(name + " series not exists. Legend data should be same with series name or data name."); - } - } - }, this); - if (selector2) { - this._createSelector(selector2, legendModel, api, orient, selectorPosition); - } - }; - LegendView2.prototype._createSelector = function(selector2, legendModel, api, orient, selectorPosition) { - var selectorGroup = this.getSelectorGroup(); - each13(selector2, function createSelectorButton(selectorItem) { - var type = selectorItem.type; - var labelText = new Text_default({ - style: { - x: 0, - y: 0, - align: "center", - verticalAlign: "middle" - }, - onclick: function() { - api.dispatchAction({ - type: type === "all" ? "legendAllSelect" : "legendInverseSelect", - legendId: legendModel.id - }); - } - }); - selectorGroup.add(labelText); - var labelModel = legendModel.getModel("selectorLabel"); - var emphasisLabelModel = legendModel.getModel(["emphasis", "selectorLabel"]); - setLabelStyle(labelText, { - normal: labelModel, - emphasis: emphasisLabelModel - }, { - defaultText: selectorItem.title - }); - enableHoverEmphasis(labelText); - }); - }; - LegendView2.prototype._createItem = function(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, itemVisualStyle, legendIcon, selectMode, api) { - var drawType = seriesModel.visualDrawType; - var itemWidth = legendModel.get("itemWidth"); - var itemHeight = legendModel.get("itemHeight"); - var isSelected = legendModel.isSelected(name); - var iconRotate = legendItemModel.get("symbolRotate"); - var symbolKeepAspect = legendItemModel.get("symbolKeepAspect"); - var legendIconType = legendItemModel.get("icon"); - legendIcon = legendIconType || legendIcon || "roundRect"; - var style = getLegendStyle(legendIcon, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api); - var itemGroup = new Group3(); - var textStyleModel = legendItemModel.getModel("textStyle"); - if (isFunction(seriesModel.getLegendIcon) && (!legendIconType || legendIconType === "inherit")) { - itemGroup.add(seriesModel.getLegendIcon({ - itemWidth, - itemHeight, - icon: legendIcon, - iconRotate, - itemStyle: style.itemStyle, - lineStyle: style.lineStyle, - symbolKeepAspect - })); - } else { - var rotate2 = legendIconType === "inherit" && seriesModel.getData().getVisual("symbol") ? iconRotate === "inherit" ? seriesModel.getData().getVisual("symbolRotate") : iconRotate : 0; - itemGroup.add(getDefaultLegendIcon({ - itemWidth, - itemHeight, - icon: legendIcon, - iconRotate: rotate2, - itemStyle: style.itemStyle, - lineStyle: style.lineStyle, - symbolKeepAspect - })); - } - var textX = itemAlign === "left" ? itemWidth + 5 : -5; - var textAlign = itemAlign; - var formatter = legendModel.get("formatter"); - var content = name; - if (isString(formatter) && formatter) { - content = formatter.replace("{name}", name != null ? name : ""); - } else if (isFunction(formatter)) { - content = formatter(name); - } - var textColor = isSelected ? textStyleModel.getTextColor() : legendItemModel.get("inactiveColor"); - itemGroup.add(new Text_default({ - style: createTextStyle(textStyleModel, { - text: content, - x: textX, - y: itemHeight / 2, - fill: textColor, - align: textAlign, - verticalAlign: "middle" - }, { - inheritColor: textColor - }) - })); - var hitRect = new Rect_default({ - shape: itemGroup.getBoundingRect(), - style: { - // Cannot use 'invisible' because SVG SSR will miss the node - fill: "transparent" - } - }); - var tooltipModel = legendItemModel.getModel("tooltip"); - if (tooltipModel.get("show")) { - setTooltipConfig({ - el: hitRect, - componentModel: legendModel, - itemName: name, - itemTooltipOption: tooltipModel.option - }); - } - itemGroup.add(hitRect); - itemGroup.eachChild(function(child) { - child.silent = true; - }); - hitRect.silent = !selectMode; - this.getContentGroup().add(itemGroup); - enableHoverEmphasis(itemGroup); - itemGroup.__legendDataIndex = dataIndex; - return itemGroup; - }; - LegendView2.prototype.layoutInner = function(legendModel, itemAlign, maxSize, isFirstRender, selector2, selectorPosition) { - var contentGroup = this.getContentGroup(); - var selectorGroup = this.getSelectorGroup(); - box(legendModel.get("orient"), contentGroup, legendModel.get("itemGap"), maxSize.width, maxSize.height); - var contentRect = contentGroup.getBoundingRect(); - var contentPos = [-contentRect.x, -contentRect.y]; - selectorGroup.markRedraw(); - contentGroup.markRedraw(); - if (selector2) { - box( - // Buttons in selectorGroup always layout horizontally - "horizontal", - selectorGroup, - legendModel.get("selectorItemGap", true) - ); - var selectorRect = selectorGroup.getBoundingRect(); - var selectorPos = [-selectorRect.x, -selectorRect.y]; - var selectorButtonGap = legendModel.get("selectorButtonGap", true); - var orientIdx = legendModel.getOrient().index; - var wh = orientIdx === 0 ? "width" : "height"; - var hw = orientIdx === 0 ? "height" : "width"; - var yx = orientIdx === 0 ? "y" : "x"; - if (selectorPosition === "end") { - selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap; - } else { - contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap; - } - selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2; - selectorGroup.x = selectorPos[0]; - selectorGroup.y = selectorPos[1]; - contentGroup.x = contentPos[0]; - contentGroup.y = contentPos[1]; - var mainRect = { - x: 0, - y: 0 - }; - mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh]; - mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]); - mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]); - return mainRect; - } else { - contentGroup.x = contentPos[0]; - contentGroup.y = contentPos[1]; - return this.group.getBoundingRect(); - } - }; - LegendView2.prototype.remove = function() { - this.getContentGroup().removeAll(); - this._isFirstRender = true; - }; - LegendView2.type = "legend.plain"; - return LegendView2; - }(Component_default2) - ); - function getLegendStyle(iconType, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api) { - function handleCommonProps(style, visualStyle) { - if (style.lineWidth === "auto") { - style.lineWidth = visualStyle.lineWidth > 0 ? 2 : 0; - } - each13(style, function(propVal, propName) { - style[propName] === "inherit" && (style[propName] = visualStyle[propName]); - }); - } - var itemStyleModel = legendItemModel.getModel("itemStyle"); - var itemStyle = itemStyleModel.getItemStyle(); - var iconBrushType = iconType.lastIndexOf("empty", 0) === 0 ? "fill" : "stroke"; - var decalStyle = itemStyleModel.getShallow("decal"); - itemStyle.decal = !decalStyle || decalStyle === "inherit" ? itemVisualStyle.decal : createOrUpdatePatternFromDecal(decalStyle, api); - if (itemStyle.fill === "inherit") { - itemStyle.fill = itemVisualStyle[drawType]; - } - if (itemStyle.stroke === "inherit") { - itemStyle.stroke = itemVisualStyle[iconBrushType]; - } - if (itemStyle.opacity === "inherit") { - itemStyle.opacity = (drawType === "fill" ? itemVisualStyle : lineVisualStyle).opacity; - } - handleCommonProps(itemStyle, itemVisualStyle); - var legendLineModel = legendItemModel.getModel("lineStyle"); - var lineStyle = legendLineModel.getLineStyle(); - handleCommonProps(lineStyle, lineVisualStyle); - itemStyle.fill === "auto" && (itemStyle.fill = itemVisualStyle.fill); - itemStyle.stroke === "auto" && (itemStyle.stroke = itemVisualStyle.fill); - lineStyle.stroke === "auto" && (lineStyle.stroke = itemVisualStyle.fill); - if (!isSelected) { - var borderWidth = legendItemModel.get("inactiveBorderWidth"); - var visualHasBorder = itemStyle[iconBrushType]; - itemStyle.lineWidth = borderWidth === "auto" ? itemVisualStyle.lineWidth > 0 && visualHasBorder ? 2 : 0 : itemStyle.lineWidth; - itemStyle.fill = legendItemModel.get("inactiveColor"); - itemStyle.stroke = legendItemModel.get("inactiveBorderColor"); - lineStyle.stroke = legendLineModel.get("inactiveColor"); - lineStyle.lineWidth = legendLineModel.get("inactiveWidth"); - } - return { - itemStyle, - lineStyle - }; - } - function getDefaultLegendIcon(opt) { - var symboType = opt.icon || "roundRect"; - var icon = createSymbol(symboType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill, opt.symbolKeepAspect); - icon.setStyle(opt.itemStyle); - icon.rotation = (opt.iconRotate || 0) * Math.PI / 180; - icon.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]); - if (symboType.indexOf("empty") > -1) { - icon.style.stroke = icon.style.fill; - icon.style.fill = "#fff"; - icon.style.lineWidth = 2; - } - return icon; - } - function dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) { - dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId); - api.dispatchAction({ - type: "legendToggleSelect", - name: seriesName != null ? seriesName : dataName - }); - dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId); - } - function isUseHoverLayer(api) { - var list = api.getZr().storage.getDisplayList(); - var emphasisState; - var i = 0; - var len2 = list.length; - while (i < len2 && !(emphasisState = list[i].states.emphasis)) { - i++; - } - return emphasisState && emphasisState.hoverLayer; - } - function dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) { - if (!isUseHoverLayer(api)) { - api.dispatchAction({ - type: "highlight", - seriesName, - name: dataName, - excludeSeriesId - }); - } - } - function dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) { - if (!isUseHoverLayer(api)) { - api.dispatchAction({ - type: "downplay", - seriesName, - name: dataName, - excludeSeriesId - }); - } - } - var LegendView_default = LegendView; - - // node_modules/echarts/lib/component/legend/legendFilter.js - function legendFilter(ecModel) { - var legendModels = ecModel.findComponents({ - mainType: "legend" - }); - if (legendModels && legendModels.length) { - ecModel.filterSeries(function(series) { - for (var i = 0; i < legendModels.length; i++) { - if (!legendModels[i].isSelected(series.name)) { - return false; - } - } - return true; - }); - } - } - - // node_modules/echarts/lib/component/legend/legendAction.js - function legendSelectActionHandler(methodName, payload, ecModel) { - var isAllSelect = methodName === "allSelect" || methodName === "inverseSelect"; - var selectedMap = {}; - var actionLegendIndices = []; - ecModel.eachComponent({ - mainType: "legend", - query: payload - }, function(legendModel) { - if (isAllSelect) { - legendModel[methodName](); - } else { - legendModel[methodName](payload.name); - } - makeSelectedMap(legendModel, selectedMap); - actionLegendIndices.push(legendModel.componentIndex); - }); - var allSelectedMap = {}; - ecModel.eachComponent("legend", function(legendModel) { - each(selectedMap, function(isSelected, name) { - legendModel[isSelected ? "select" : "unSelect"](name); - }); - makeSelectedMap(legendModel, allSelectedMap); - }); - return isAllSelect ? { - selected: allSelectedMap, - // return legendIndex array to tell the developers which legends are allSelect / inverseSelect - legendIndex: actionLegendIndices - } : { - name: payload.name, - selected: allSelectedMap - }; - } - function makeSelectedMap(legendModel, out2) { - var selectedMap = out2 || {}; - each(legendModel.getData(), function(model) { - var name = model.get("name"); - if (name === "\n" || name === "") { - return; - } - var isItemSelected = legendModel.isSelected(name); - if (hasOwn(selectedMap, name)) { - selectedMap[name] = selectedMap[name] && isItemSelected; - } else { - selectedMap[name] = isItemSelected; - } - }); - return selectedMap; - } - function installLegendAction(registers) { - registers.registerAction("legendToggleSelect", "legendselectchanged", curry(legendSelectActionHandler, "toggleSelected")); - registers.registerAction("legendAllSelect", "legendselectall", curry(legendSelectActionHandler, "allSelect")); - registers.registerAction("legendInverseSelect", "legendinverseselect", curry(legendSelectActionHandler, "inverseSelect")); - registers.registerAction("legendSelect", "legendselected", curry(legendSelectActionHandler, "select")); - registers.registerAction("legendUnSelect", "legendunselected", curry(legendSelectActionHandler, "unSelect")); - } - - // node_modules/echarts/lib/component/legend/installLegendPlain.js - function install44(registers) { - registers.registerComponentModel(LegendModel_default); - registers.registerComponentView(LegendView_default); - registers.registerProcessor(registers.PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter); - registers.registerSubTypeDefaulter("legend", function() { - return "plain"; - }); - installLegendAction(registers); - } - - // node_modules/echarts/lib/component/legend/ScrollableLegendModel.js - var ScrollableLegendModel = ( - /** @class */ - function(_super) { - __extends(ScrollableLegendModel2, _super); - function ScrollableLegendModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ScrollableLegendModel2.type; - return _this; - } - ScrollableLegendModel2.prototype.setScrollDataIndex = function(scrollDataIndex) { - this.option.scrollDataIndex = scrollDataIndex; - }; - ScrollableLegendModel2.prototype.init = function(option, parentModel, ecModel) { - var inputPositionParams = getLayoutParams(option); - _super.prototype.init.call(this, option, parentModel, ecModel); - mergeAndNormalizeLayoutParams2(this, option, inputPositionParams); - }; - ScrollableLegendModel2.prototype.mergeOption = function(option, ecModel) { - _super.prototype.mergeOption.call(this, option, ecModel); - mergeAndNormalizeLayoutParams2(this, this.option, option); - }; - ScrollableLegendModel2.type = "legend.scroll"; - ScrollableLegendModel2.defaultOption = inheritDefaultOption(LegendModel_default.defaultOption, { - scrollDataIndex: 0, - pageButtonItemGap: 5, - pageButtonGap: null, - pageButtonPosition: "end", - pageFormatter: "{current}/{total}", - pageIcons: { - horizontal: ["M0,0L12,-10L12,10z", "M0,0L-12,-10L-12,10z"], - vertical: ["M0,0L20,0L10,-20z", "M0,0L20,0L10,20z"] - }, - pageIconColor: "#2f4554", - pageIconInactiveColor: "#aaa", - pageIconSize: 15, - pageTextStyle: { - color: "#333" - }, - animationDurationUpdate: 800 - }); - return ScrollableLegendModel2; - }(LegendModel_default) - ); - function mergeAndNormalizeLayoutParams2(legendModel, target, raw) { - var orient = legendModel.getOrient(); - var ignoreSize = [1, 1]; - ignoreSize[orient.index] = 0; - mergeLayoutParam(target, raw, { - type: "box", - ignoreSize: !!ignoreSize - }); - } - var ScrollableLegendModel_default = ScrollableLegendModel; - - // node_modules/echarts/lib/component/legend/ScrollableLegendView.js - var Group4 = Group_default; - var WH2 = ["width", "height"]; - var XY2 = ["x", "y"]; - var ScrollableLegendView = ( - /** @class */ - function(_super) { - __extends(ScrollableLegendView2, _super); - function ScrollableLegendView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ScrollableLegendView2.type; - _this.newlineDisabled = true; - _this._currentIndex = 0; - return _this; - } - ScrollableLegendView2.prototype.init = function() { - _super.prototype.init.call(this); - this.group.add(this._containerGroup = new Group4()); - this._containerGroup.add(this.getContentGroup()); - this.group.add(this._controllerGroup = new Group4()); - }; - ScrollableLegendView2.prototype.resetInner = function() { - _super.prototype.resetInner.call(this); - this._controllerGroup.removeAll(); - this._containerGroup.removeClipPath(); - this._containerGroup.__rectSize = null; - }; - ScrollableLegendView2.prototype.renderInner = function(itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition) { - var self2 = this; - _super.prototype.renderInner.call(this, itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition); - var controllerGroup = this._controllerGroup; - var pageIconSize = legendModel.get("pageIconSize", true); - var pageIconSizeArr = isArray(pageIconSize) ? pageIconSize : [pageIconSize, pageIconSize]; - createPageButton("pagePrev", 0); - var pageTextStyleModel = legendModel.getModel("pageTextStyle"); - controllerGroup.add(new Text_default({ - name: "pageText", - style: { - // Placeholder to calculate a proper layout. - text: "xx/xx", - fill: pageTextStyleModel.getTextColor(), - font: pageTextStyleModel.getFont(), - verticalAlign: "middle", - align: "center" - }, - silent: true - })); - createPageButton("pageNext", 1); - function createPageButton(name, iconIdx) { - var pageDataIndexName = name + "DataIndex"; - var icon = createIcon(legendModel.get("pageIcons", true)[legendModel.getOrient().name][iconIdx], { - // Buttons will be created in each render, so we do not need - // to worry about avoiding using legendModel kept in scope. - onclick: bind(self2._pageGo, self2, pageDataIndexName, legendModel, api) - }, { - x: -pageIconSizeArr[0] / 2, - y: -pageIconSizeArr[1] / 2, - width: pageIconSizeArr[0], - height: pageIconSizeArr[1] - }); - icon.name = name; - controllerGroup.add(icon); - } - }; - ScrollableLegendView2.prototype.layoutInner = function(legendModel, itemAlign, maxSize, isFirstRender, selector2, selectorPosition) { - var selectorGroup = this.getSelectorGroup(); - var orientIdx = legendModel.getOrient().index; - var wh = WH2[orientIdx]; - var xy = XY2[orientIdx]; - var hw = WH2[1 - orientIdx]; - var yx = XY2[1 - orientIdx]; - selector2 && box( - // Buttons in selectorGroup always layout horizontally - "horizontal", - selectorGroup, - legendModel.get("selectorItemGap", true) - ); - var selectorButtonGap = legendModel.get("selectorButtonGap", true); - var selectorRect = selectorGroup.getBoundingRect(); - var selectorPos = [-selectorRect.x, -selectorRect.y]; - var processMaxSize = clone(maxSize); - selector2 && (processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap); - var mainRect = this._layoutContentAndController(legendModel, isFirstRender, processMaxSize, orientIdx, wh, hw, yx, xy); - if (selector2) { - if (selectorPosition === "end") { - selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap; - } else { - var offset3 = selectorRect[wh] + selectorButtonGap; - selectorPos[orientIdx] -= offset3; - mainRect[xy] -= offset3; - } - mainRect[wh] += selectorRect[wh] + selectorButtonGap; - selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2; - mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]); - mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]); - selectorGroup.x = selectorPos[0]; - selectorGroup.y = selectorPos[1]; - selectorGroup.markRedraw(); - } - return mainRect; - }; - ScrollableLegendView2.prototype._layoutContentAndController = function(legendModel, isFirstRender, maxSize, orientIdx, wh, hw, yx, xy) { - var contentGroup = this.getContentGroup(); - var containerGroup = this._containerGroup; - var controllerGroup = this._controllerGroup; - box(legendModel.get("orient"), contentGroup, legendModel.get("itemGap"), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height); - box( - // Buttons in controller are layout always horizontally. - "horizontal", - controllerGroup, - legendModel.get("pageButtonItemGap", true) - ); - var contentRect = contentGroup.getBoundingRect(); - var controllerRect = controllerGroup.getBoundingRect(); - var showController = this._showController = contentRect[wh] > maxSize[wh]; - var contentPos = [-contentRect.x, -contentRect.y]; - if (!isFirstRender) { - contentPos[orientIdx] = contentGroup[xy]; - } - var containerPos = [0, 0]; - var controllerPos = [-controllerRect.x, -controllerRect.y]; - var pageButtonGap = retrieve2(legendModel.get("pageButtonGap", true), legendModel.get("itemGap", true)); - if (showController) { - var pageButtonPosition = legendModel.get("pageButtonPosition", true); - if (pageButtonPosition === "end") { - controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh]; - } else { - containerPos[orientIdx] += controllerRect[wh] + pageButtonGap; - } - } - controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2; - contentGroup.setPosition(contentPos); - containerGroup.setPosition(containerPos); - controllerGroup.setPosition(controllerPos); - var mainRect = { - x: 0, - y: 0 - }; - mainRect[wh] = showController ? maxSize[wh] : contentRect[wh]; - mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]); - mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]); - containerGroup.__rectSize = maxSize[wh]; - if (showController) { - var clipShape = { - x: 0, - y: 0 - }; - clipShape[wh] = Math.max(maxSize[wh] - controllerRect[wh] - pageButtonGap, 0); - clipShape[hw] = mainRect[hw]; - containerGroup.setClipPath(new Rect_default({ - shape: clipShape - })); - containerGroup.__rectSize = clipShape[wh]; - } else { - controllerGroup.eachChild(function(child) { - child.attr({ - invisible: true, - silent: true - }); - }); - } - var pageInfo = this._getPageInfo(legendModel); - pageInfo.pageIndex != null && updateProps( - contentGroup, - { - x: pageInfo.contentPosition[0], - y: pageInfo.contentPosition[1] - }, - // When switch from "show controller" to "not show controller", view should be - // updated immediately without animation, otherwise causes weird effect. - showController ? legendModel : null - ); - this._updatePageInfoView(legendModel, pageInfo); - return mainRect; - }; - ScrollableLegendView2.prototype._pageGo = function(to, legendModel, api) { - var scrollDataIndex = this._getPageInfo(legendModel)[to]; - scrollDataIndex != null && api.dispatchAction({ - type: "legendScroll", - scrollDataIndex, - legendId: legendModel.id - }); - }; - ScrollableLegendView2.prototype._updatePageInfoView = function(legendModel, pageInfo) { - var controllerGroup = this._controllerGroup; - each(["pagePrev", "pageNext"], function(name) { - var key = name + "DataIndex"; - var canJump = pageInfo[key] != null; - var icon = controllerGroup.childOfName(name); - if (icon) { - icon.setStyle("fill", canJump ? legendModel.get("pageIconColor", true) : legendModel.get("pageIconInactiveColor", true)); - icon.cursor = canJump ? "pointer" : "default"; - } - }); - var pageText = controllerGroup.childOfName("pageText"); - var pageFormatter = legendModel.get("pageFormatter"); - var pageIndex = pageInfo.pageIndex; - var current = pageIndex != null ? pageIndex + 1 : 0; - var total = pageInfo.pageCount; - pageText && pageFormatter && pageText.setStyle("text", isString(pageFormatter) ? pageFormatter.replace("{current}", current == null ? "" : current + "").replace("{total}", total == null ? "" : total + "") : pageFormatter({ - current, - total - })); - }; - ScrollableLegendView2.prototype._getPageInfo = function(legendModel) { - var scrollDataIndex = legendModel.get("scrollDataIndex", true); - var contentGroup = this.getContentGroup(); - var containerRectSize = this._containerGroup.__rectSize; - var orientIdx = legendModel.getOrient().index; - var wh = WH2[orientIdx]; - var xy = XY2[orientIdx]; - var targetItemIndex = this._findTargetItemIndex(scrollDataIndex); - var children = contentGroup.children(); - var targetItem = children[targetItemIndex]; - var itemCount = children.length; - var pCount = !itemCount ? 0 : 1; - var result = { - contentPosition: [contentGroup.x, contentGroup.y], - pageCount: pCount, - pageIndex: pCount - 1, - pagePrevDataIndex: null, - pageNextDataIndex: null - }; - if (!targetItem) { - return result; - } - var targetItemInfo = getItemInfo(targetItem); - result.contentPosition[orientIdx] = -targetItemInfo.s; - for (var i = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i <= itemCount; ++i) { - currItemInfo = getItemInfo(children[i]); - if ( - // Half of the last item is out of the window. - !currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize || currItemInfo && !intersect2(currItemInfo, winStartItemInfo.s) - ) { - if (winEndItemInfo.i > winStartItemInfo.i) { - winStartItemInfo = winEndItemInfo; - } else { - winStartItemInfo = currItemInfo; - } - if (winStartItemInfo) { - if (result.pageNextDataIndex == null) { - result.pageNextDataIndex = winStartItemInfo.i; - } - ++result.pageCount; - } - } - winEndItemInfo = currItemInfo; - } - for (var i = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i >= -1; --i) { - currItemInfo = getItemInfo(children[i]); - if ( - // If the the end item does not intersect with the window started - // from the current item, a page can be settled. - (!currItemInfo || !intersect2(winEndItemInfo, currItemInfo.s)) && winStartItemInfo.i < winEndItemInfo.i - ) { - winEndItemInfo = winStartItemInfo; - if (result.pagePrevDataIndex == null) { - result.pagePrevDataIndex = winStartItemInfo.i; - } - ++result.pageCount; - ++result.pageIndex; - } - winStartItemInfo = currItemInfo; - } - return result; - function getItemInfo(el) { - if (el) { - var itemRect = el.getBoundingRect(); - var start3 = itemRect[xy] + el[xy]; - return { - s: start3, - e: start3 + itemRect[wh], - i: el.__legendDataIndex - }; - } - } - function intersect2(itemInfo, winStart) { - return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize; - } - }; - ScrollableLegendView2.prototype._findTargetItemIndex = function(targetDataIndex) { - if (!this._showController) { - return 0; - } - var index; - var contentGroup = this.getContentGroup(); - var defaultIndex; - contentGroup.eachChild(function(child, idx) { - var legendDataIdx = child.__legendDataIndex; - if (defaultIndex == null && legendDataIdx != null) { - defaultIndex = idx; - } - if (legendDataIdx === targetDataIndex) { - index = idx; - } - }); - return index != null ? index : defaultIndex; - }; - ScrollableLegendView2.type = "legend.scroll"; - return ScrollableLegendView2; - }(LegendView_default) - ); - var ScrollableLegendView_default = ScrollableLegendView; - - // node_modules/echarts/lib/component/legend/scrollableLegendAction.js - function installScrollableLegendAction(registers) { - registers.registerAction("legendScroll", "legendscroll", function(payload, ecModel) { - var scrollDataIndex = payload.scrollDataIndex; - scrollDataIndex != null && ecModel.eachComponent({ - mainType: "legend", - subType: "scroll", - query: payload - }, function(legendModel) { - legendModel.setScrollDataIndex(scrollDataIndex); - }); - }); - } - - // node_modules/echarts/lib/component/legend/installLegendScroll.js - function install45(registers) { - use(install44); - registers.registerComponentModel(ScrollableLegendModel_default); - registers.registerComponentView(ScrollableLegendView_default); - installScrollableLegendAction(registers); - } - - // node_modules/echarts/lib/component/legend/install.js - function install46(registers) { - use(install44); - use(install45); - } - - // node_modules/echarts/lib/component/dataZoom/InsideZoomModel.js - var InsideZoomModel = ( - /** @class */ - function(_super) { - __extends(InsideZoomModel2, _super); - function InsideZoomModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = InsideZoomModel2.type; - return _this; - } - InsideZoomModel2.type = "dataZoom.inside"; - InsideZoomModel2.defaultOption = inheritDefaultOption(DataZoomModel_default.defaultOption, { - disabled: false, - zoomLock: false, - zoomOnMouseWheel: true, - moveOnMouseMove: true, - moveOnMouseWheel: false, - preventDefaultMouseMove: true - }); - return InsideZoomModel2; - }(DataZoomModel_default) - ); - var InsideZoomModel_default = InsideZoomModel; - - // node_modules/echarts/lib/component/dataZoom/roams.js - var inner21 = makeInner(); - function setViewInfoToCoordSysRecord(api, dataZoomModel, getRange) { - inner21(api).coordSysRecordMap.each(function(coordSysRecord) { - var dzInfo = coordSysRecord.dataZoomInfoMap.get(dataZoomModel.uid); - if (dzInfo) { - dzInfo.getRange = getRange; - } - }); - } - function disposeCoordSysRecordIfNeeded(api, dataZoomModel) { - var coordSysRecordMap = inner21(api).coordSysRecordMap; - var coordSysKeyArr = coordSysRecordMap.keys(); - for (var i = 0; i < coordSysKeyArr.length; i++) { - var coordSysKey = coordSysKeyArr[i]; - var coordSysRecord = coordSysRecordMap.get(coordSysKey); - var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap; - if (dataZoomInfoMap) { - var dzUid = dataZoomModel.uid; - var dzInfo = dataZoomInfoMap.get(dzUid); - if (dzInfo) { - dataZoomInfoMap.removeKey(dzUid); - if (!dataZoomInfoMap.keys().length) { - disposeCoordSysRecord(coordSysRecordMap, coordSysRecord); - } - } - } - } - } - function disposeCoordSysRecord(coordSysRecordMap, coordSysRecord) { - if (coordSysRecord) { - coordSysRecordMap.removeKey(coordSysRecord.model.uid); - var controller = coordSysRecord.controller; - controller && controller.dispose(); - } - } - function createCoordSysRecord(api, coordSysModel) { - var coordSysRecord = { - model: coordSysModel, - containsPoint: curry(containsPoint, coordSysModel), - dispatchAction: curry(dispatchAction2, api), - dataZoomInfoMap: null, - controller: null - }; - var controller = coordSysRecord.controller = new RoamController_default(api.getZr()); - each(["pan", "zoom", "scrollMove"], function(eventName) { - controller.on(eventName, function(event) { - var batch = []; - coordSysRecord.dataZoomInfoMap.each(function(dzInfo) { - if (!event.isAvailableBehavior(dzInfo.model.option)) { - return; - } - var method = (dzInfo.getRange || {})[eventName]; - var range = method && method(dzInfo.dzReferCoordSysInfo, coordSysRecord.model.mainType, coordSysRecord.controller, event); - !dzInfo.model.get("disabled", true) && range && batch.push({ - dataZoomId: dzInfo.model.id, - start: range[0], - end: range[1] - }); - }); - batch.length && coordSysRecord.dispatchAction(batch); - }); - }); - return coordSysRecord; - } - function dispatchAction2(api, batch) { - if (!api.isDisposed()) { - api.dispatchAction({ - type: "dataZoom", - animation: { - easing: "cubicOut", - duration: 100 - }, - batch - }); - } - } - function containsPoint(coordSysModel, e2, x, y) { - return coordSysModel.coordinateSystem.containPoint([x, y]); - } - function mergeControllerParams(dataZoomInfoMap) { - var controlType; - var prefix = "type_"; - var typePriority = { - "type_true": 2, - "type_move": 1, - "type_false": 0, - "type_undefined": -1 - }; - var preventDefaultMouseMove = true; - dataZoomInfoMap.each(function(dataZoomInfo) { - var dataZoomModel = dataZoomInfo.model; - var oneType = dataZoomModel.get("disabled", true) ? false : dataZoomModel.get("zoomLock", true) ? "move" : true; - if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) { - controlType = oneType; - } - preventDefaultMouseMove = preventDefaultMouseMove && dataZoomModel.get("preventDefaultMouseMove", true); - }); - return { - controlType, - opt: { - // RoamController will enable all of these functionalities, - // and the final behavior is determined by its event listener - // provided by each inside zoom. - zoomOnMouseWheel: true, - moveOnMouseMove: true, - moveOnMouseWheel: true, - preventDefaultMouseMove: !!preventDefaultMouseMove - } - }; - } - function installDataZoomRoamProcessor(registers) { - registers.registerProcessor(registers.PRIORITY.PROCESSOR.FILTER, function(ecModel, api) { - var apiInner = inner21(api); - var coordSysRecordMap = apiInner.coordSysRecordMap || (apiInner.coordSysRecordMap = createHashMap()); - coordSysRecordMap.each(function(coordSysRecord) { - coordSysRecord.dataZoomInfoMap = null; - }); - ecModel.eachComponent({ - mainType: "dataZoom", - subType: "inside" - }, function(dataZoomModel) { - var dzReferCoordSysWrap = collectReferCoordSysModelInfo(dataZoomModel); - each(dzReferCoordSysWrap.infoList, function(dzCoordSysInfo) { - var coordSysUid = dzCoordSysInfo.model.uid; - var coordSysRecord = coordSysRecordMap.get(coordSysUid) || coordSysRecordMap.set(coordSysUid, createCoordSysRecord(api, dzCoordSysInfo.model)); - var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap || (coordSysRecord.dataZoomInfoMap = createHashMap()); - dataZoomInfoMap.set(dataZoomModel.uid, { - dzReferCoordSysInfo: dzCoordSysInfo, - model: dataZoomModel, - getRange: null - }); - }); - }); - coordSysRecordMap.each(function(coordSysRecord) { - var controller = coordSysRecord.controller; - var firstDzInfo; - var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap; - if (dataZoomInfoMap) { - var firstDzKey = dataZoomInfoMap.keys()[0]; - if (firstDzKey != null) { - firstDzInfo = dataZoomInfoMap.get(firstDzKey); - } - } - if (!firstDzInfo) { - disposeCoordSysRecord(coordSysRecordMap, coordSysRecord); - return; - } - var controllerParams = mergeControllerParams(dataZoomInfoMap); - controller.enable(controllerParams.controlType, controllerParams.opt); - controller.setPointerChecker(coordSysRecord.containsPoint); - createOrUpdate(coordSysRecord, "dispatchAction", firstDzInfo.model.get("throttle", true), "fixRate"); - }); - }); - } - - // node_modules/echarts/lib/component/dataZoom/InsideZoomView.js - var InsideZoomView = ( - /** @class */ - function(_super) { - __extends(InsideZoomView2, _super); - function InsideZoomView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "dataZoom.inside"; - return _this; - } - InsideZoomView2.prototype.render = function(dataZoomModel, ecModel, api) { - _super.prototype.render.apply(this, arguments); - if (dataZoomModel.noTarget()) { - this._clear(); - return; - } - this.range = dataZoomModel.getPercentRange(); - setViewInfoToCoordSysRecord(api, dataZoomModel, { - pan: bind(getRangeHandlers.pan, this), - zoom: bind(getRangeHandlers.zoom, this), - scrollMove: bind(getRangeHandlers.scrollMove, this) - }); - }; - InsideZoomView2.prototype.dispose = function() { - this._clear(); - _super.prototype.dispose.apply(this, arguments); - }; - InsideZoomView2.prototype._clear = function() { - disposeCoordSysRecordIfNeeded(this.api, this.dataZoomModel); - this.range = null; - }; - InsideZoomView2.type = "dataZoom.inside"; - return InsideZoomView2; - }(DataZoomView_default) - ); - var getRangeHandlers = { - zoom: function(coordSysInfo, coordSysMainType, controller, e2) { - var lastRange = this.range; - var range = lastRange.slice(); - var axisModel = coordSysInfo.axisModels[0]; - if (!axisModel) { - return; - } - var directionInfo = getDirectionInfo[coordSysMainType](null, [e2.originX, e2.originY], axisModel, controller, coordSysInfo); - var percentPoint = (directionInfo.signal > 0 ? directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel : directionInfo.pixel - directionInfo.pixelStart) / directionInfo.pixelLength * (range[1] - range[0]) + range[0]; - var scale4 = Math.max(1 / e2.scale, 0); - range[0] = (range[0] - percentPoint) * scale4 + percentPoint; - range[1] = (range[1] - percentPoint) * scale4 + percentPoint; - var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan(); - sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan); - this.range = range; - if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) { - return range; - } - }, - pan: makeMover(function(range, axisModel, coordSysInfo, coordSysMainType, controller, e2) { - var directionInfo = getDirectionInfo[coordSysMainType]([e2.oldX, e2.oldY], [e2.newX, e2.newY], axisModel, controller, coordSysInfo); - return directionInfo.signal * (range[1] - range[0]) * directionInfo.pixel / directionInfo.pixelLength; - }), - scrollMove: makeMover(function(range, axisModel, coordSysInfo, coordSysMainType, controller, e2) { - var directionInfo = getDirectionInfo[coordSysMainType]([0, 0], [e2.scrollDelta, e2.scrollDelta], axisModel, controller, coordSysInfo); - return directionInfo.signal * (range[1] - range[0]) * e2.scrollDelta; - }) - }; - function makeMover(getPercentDelta) { - return function(coordSysInfo, coordSysMainType, controller, e2) { - var lastRange = this.range; - var range = lastRange.slice(); - var axisModel = coordSysInfo.axisModels[0]; - if (!axisModel) { - return; - } - var percentDelta = getPercentDelta(range, axisModel, coordSysInfo, coordSysMainType, controller, e2); - sliderMove(percentDelta, range, [0, 100], "all"); - this.range = range; - if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) { - return range; - } - }; - } - var getDirectionInfo = { - grid: function(oldPoint, newPoint, axisModel, controller, coordSysInfo) { - var axis = axisModel.axis; - var ret = {}; - var rect = coordSysInfo.model.coordinateSystem.getRect(); - oldPoint = oldPoint || [0, 0]; - if (axis.dim === "x") { - ret.pixel = newPoint[0] - oldPoint[0]; - ret.pixelLength = rect.width; - ret.pixelStart = rect.x; - ret.signal = axis.inverse ? 1 : -1; - } else { - ret.pixel = newPoint[1] - oldPoint[1]; - ret.pixelLength = rect.height; - ret.pixelStart = rect.y; - ret.signal = axis.inverse ? -1 : 1; - } - return ret; - }, - polar: function(oldPoint, newPoint, axisModel, controller, coordSysInfo) { - var axis = axisModel.axis; - var ret = {}; - var polar = coordSysInfo.model.coordinateSystem; - var radiusExtent = polar.getRadiusAxis().getExtent(); - var angleExtent = polar.getAngleAxis().getExtent(); - oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0]; - newPoint = polar.pointToCoord(newPoint); - if (axisModel.mainType === "radiusAxis") { - ret.pixel = newPoint[0] - oldPoint[0]; - ret.pixelLength = radiusExtent[1] - radiusExtent[0]; - ret.pixelStart = radiusExtent[0]; - ret.signal = axis.inverse ? 1 : -1; - } else { - ret.pixel = newPoint[1] - oldPoint[1]; - ret.pixelLength = angleExtent[1] - angleExtent[0]; - ret.pixelStart = angleExtent[0]; - ret.signal = axis.inverse ? -1 : 1; - } - return ret; - }, - singleAxis: function(oldPoint, newPoint, axisModel, controller, coordSysInfo) { - var axis = axisModel.axis; - var rect = coordSysInfo.model.coordinateSystem.getRect(); - var ret = {}; - oldPoint = oldPoint || [0, 0]; - if (axis.orient === "horizontal") { - ret.pixel = newPoint[0] - oldPoint[0]; - ret.pixelLength = rect.width; - ret.pixelStart = rect.x; - ret.signal = axis.inverse ? 1 : -1; - } else { - ret.pixel = newPoint[1] - oldPoint[1]; - ret.pixelLength = rect.height; - ret.pixelStart = rect.y; - ret.signal = axis.inverse ? -1 : 1; - } - return ret; - } - }; - var InsideZoomView_default = InsideZoomView; - - // node_modules/echarts/lib/component/dataZoom/installDataZoomInside.js - function install47(registers) { - installCommon(registers); - registers.registerComponentModel(InsideZoomModel_default); - registers.registerComponentView(InsideZoomView_default); - installDataZoomRoamProcessor(registers); - } - - // node_modules/echarts/lib/component/dataZoom/SliderZoomModel.js - var SliderZoomModel = ( - /** @class */ - function(_super) { - __extends(SliderZoomModel2, _super); - function SliderZoomModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SliderZoomModel2.type; - return _this; - } - SliderZoomModel2.type = "dataZoom.slider"; - SliderZoomModel2.layoutMode = "box"; - SliderZoomModel2.defaultOption = inheritDefaultOption(DataZoomModel_default.defaultOption, { - show: true, - // deault value can only be drived in view stage. - right: "ph", - top: "ph", - width: "ph", - height: "ph", - left: null, - bottom: null, - borderColor: "#d2dbee", - borderRadius: 3, - backgroundColor: "rgba(47,69,84,0)", - // dataBackgroundColor: '#ddd', - dataBackground: { - lineStyle: { - color: "#d2dbee", - width: 0.5 - }, - areaStyle: { - color: "#d2dbee", - opacity: 0.2 - } - }, - selectedDataBackground: { - lineStyle: { - color: "#8fb0f7", - width: 0.5 - }, - areaStyle: { - color: "#8fb0f7", - opacity: 0.2 - } - }, - // Color of selected window. - fillerColor: "rgba(135,175,274,0.2)", - handleIcon: "path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z", - // Percent of the slider height - handleSize: "100%", - handleStyle: { - color: "#fff", - borderColor: "#ACB8D1" - }, - moveHandleSize: 7, - moveHandleIcon: "path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z", - moveHandleStyle: { - color: "#D2DBEE", - opacity: 0.7 - }, - showDetail: true, - showDataShadow: "auto", - realtime: true, - zoomLock: false, - textStyle: { - color: "#6E7079" - }, - brushSelect: true, - brushStyle: { - color: "rgba(135,175,274,0.15)" - }, - emphasis: { - handleLabel: { - show: true - }, - handleStyle: { - borderColor: "#8FB0F7" - }, - moveHandleStyle: { - color: "#8FB0F7" - } - } - }); - return SliderZoomModel2; - }(DataZoomModel_default) - ); - var SliderZoomModel_default = SliderZoomModel; - - // node_modules/echarts/lib/component/dataZoom/SliderZoomView.js - var Rect3 = Rect_default; - var DEFAULT_LOCATION_EDGE_GAP = 7; - var DEFAULT_FRAME_BORDER_WIDTH = 1; - var DEFAULT_FILLER_SIZE = 30; - var DEFAULT_MOVE_HANDLE_SIZE = 7; - var HORIZONTAL = "horizontal"; - var VERTICAL = "vertical"; - var LABEL_GAP = 5; - var SHOW_DATA_SHADOW_SERIES_TYPE = ["line", "bar", "candlestick", "scatter"]; - var REALTIME_ANIMATION_CONFIG = { - easing: "cubicOut", - duration: 100, - delay: 0 - }; - var SliderZoomView = ( - /** @class */ - function(_super) { - __extends(SliderZoomView2, _super); - function SliderZoomView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = SliderZoomView2.type; - _this._displayables = {}; - return _this; - } - SliderZoomView2.prototype.init = function(ecModel, api) { - this.api = api; - this._onBrush = bind(this._onBrush, this); - this._onBrushEnd = bind(this._onBrushEnd, this); - }; - SliderZoomView2.prototype.render = function(dataZoomModel, ecModel, api, payload) { - _super.prototype.render.apply(this, arguments); - createOrUpdate(this, "_dispatchZoomAction", dataZoomModel.get("throttle"), "fixRate"); - this._orient = dataZoomModel.getOrient(); - if (dataZoomModel.get("show") === false) { - this.group.removeAll(); - return; - } - if (dataZoomModel.noTarget()) { - this._clear(); - this.group.removeAll(); - return; - } - if (!payload || payload.type !== "dataZoom" || payload.from !== this.uid) { - this._buildView(); - } - this._updateView(); - }; - SliderZoomView2.prototype.dispose = function() { - this._clear(); - _super.prototype.dispose.apply(this, arguments); - }; - SliderZoomView2.prototype._clear = function() { - clear(this, "_dispatchZoomAction"); - var zr = this.api.getZr(); - zr.off("mousemove", this._onBrush); - zr.off("mouseup", this._onBrushEnd); - }; - SliderZoomView2.prototype._buildView = function() { - var thisGroup = this.group; - thisGroup.removeAll(); - this._brushing = false; - this._displayables.brushRect = null; - this._resetLocation(); - this._resetInterval(); - var barGroup = this._displayables.sliderGroup = new Group_default(); - this._renderBackground(); - this._renderHandle(); - this._renderDataShadow(); - thisGroup.add(barGroup); - this._positionGroup(); - }; - SliderZoomView2.prototype._resetLocation = function() { - var dataZoomModel = this.dataZoomModel; - var api = this.api; - var showMoveHandle = dataZoomModel.get("brushSelect"); - var moveHandleSize = showMoveHandle ? DEFAULT_MOVE_HANDLE_SIZE : 0; - var coordRect = this._findCoordRect(); - var ecSize = { - width: api.getWidth(), - height: api.getHeight() - }; - var positionInfo = this._orient === HORIZONTAL ? { - // Why using 'right', because right should be used in vertical, - // and it is better to be consistent for dealing with position param merge. - right: ecSize.width - coordRect.x - coordRect.width, - top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP - moveHandleSize, - width: coordRect.width, - height: DEFAULT_FILLER_SIZE - } : { - right: DEFAULT_LOCATION_EDGE_GAP, - top: coordRect.y, - width: DEFAULT_FILLER_SIZE, - height: coordRect.height - }; - var layoutParams = getLayoutParams(dataZoomModel.option); - each(["right", "top", "width", "height"], function(name) { - if (layoutParams[name] === "ph") { - layoutParams[name] = positionInfo[name]; - } - }); - var layoutRect = getLayoutRect(layoutParams, ecSize); - this._location = { - x: layoutRect.x, - y: layoutRect.y - }; - this._size = [layoutRect.width, layoutRect.height]; - this._orient === VERTICAL && this._size.reverse(); - }; - SliderZoomView2.prototype._positionGroup = function() { - var thisGroup = this.group; - var location2 = this._location; - var orient = this._orient; - var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel(); - var inverse = targetAxisModel && targetAxisModel.get("inverse"); - var sliderGroup = this._displayables.sliderGroup; - var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse; - sliderGroup.attr(orient === HORIZONTAL && !inverse ? { - scaleY: otherAxisInverse ? 1 : -1, - scaleX: 1 - } : orient === HORIZONTAL && inverse ? { - scaleY: otherAxisInverse ? 1 : -1, - scaleX: -1 - } : orient === VERTICAL && !inverse ? { - scaleY: otherAxisInverse ? -1 : 1, - scaleX: 1, - rotation: Math.PI / 2 - } : { - scaleY: otherAxisInverse ? -1 : 1, - scaleX: -1, - rotation: Math.PI / 2 - }); - var rect = thisGroup.getBoundingRect([sliderGroup]); - thisGroup.x = location2.x - rect.x; - thisGroup.y = location2.y - rect.y; - thisGroup.markRedraw(); - }; - SliderZoomView2.prototype._getViewExtent = function() { - return [0, this._size[0]]; - }; - SliderZoomView2.prototype._renderBackground = function() { - var dataZoomModel = this.dataZoomModel; - var size2 = this._size; - var barGroup = this._displayables.sliderGroup; - var brushSelect = dataZoomModel.get("brushSelect"); - barGroup.add(new Rect3({ - silent: true, - shape: { - x: 0, - y: 0, - width: size2[0], - height: size2[1] - }, - style: { - fill: dataZoomModel.get("backgroundColor") - }, - z2: -40 - })); - var clickPanel = new Rect3({ - shape: { - x: 0, - y: 0, - width: size2[0], - height: size2[1] - }, - style: { - fill: "transparent" - }, - z2: 0, - onclick: bind(this._onClickPanel, this) - }); - var zr = this.api.getZr(); - if (brushSelect) { - clickPanel.on("mousedown", this._onBrushStart, this); - clickPanel.cursor = "crosshair"; - zr.on("mousemove", this._onBrush); - zr.on("mouseup", this._onBrushEnd); - } else { - zr.off("mousemove", this._onBrush); - zr.off("mouseup", this._onBrushEnd); - } - barGroup.add(clickPanel); - }; - SliderZoomView2.prototype._renderDataShadow = function() { - var info = this._dataShadowInfo = this._prepareDataShadowInfo(); - this._displayables.dataShadowSegs = []; - if (!info) { - return; - } - var size2 = this._size; - var oldSize = this._shadowSize || []; - var seriesModel = info.series; - var data = seriesModel.getRawData(); - var candlestickDim = seriesModel.getShadowDim && seriesModel.getShadowDim(); - var otherDim = candlestickDim && data.getDimensionInfo(candlestickDim) ? seriesModel.getShadowDim() : info.otherDim; - if (otherDim == null) { - return; - } - var polygonPts = this._shadowPolygonPts; - var polylinePts = this._shadowPolylinePts; - if (data !== this._shadowData || otherDim !== this._shadowDim || size2[0] !== oldSize[0] || size2[1] !== oldSize[1]) { - var otherDataExtent_1 = data.getDataExtent(otherDim); - var otherOffset = (otherDataExtent_1[1] - otherDataExtent_1[0]) * 0.3; - otherDataExtent_1 = [otherDataExtent_1[0] - otherOffset, otherDataExtent_1[1] + otherOffset]; - var otherShadowExtent_1 = [0, size2[1]]; - var thisShadowExtent = [0, size2[0]]; - var areaPoints_1 = [[size2[0], 0], [0, 0]]; - var linePoints_1 = []; - var step_1 = thisShadowExtent[1] / (data.count() - 1); - var thisCoord_1 = 0; - var stride_1 = Math.round(data.count() / size2[0]); - var lastIsEmpty_1; - data.each([otherDim], function(value, index) { - if (stride_1 > 0 && index % stride_1) { - thisCoord_1 += step_1; - return; - } - var isEmpty = value == null || isNaN(value) || value === ""; - var otherCoord = isEmpty ? 0 : linearMap(value, otherDataExtent_1, otherShadowExtent_1, true); - if (isEmpty && !lastIsEmpty_1 && index) { - areaPoints_1.push([areaPoints_1[areaPoints_1.length - 1][0], 0]); - linePoints_1.push([linePoints_1[linePoints_1.length - 1][0], 0]); - } else if (!isEmpty && lastIsEmpty_1) { - areaPoints_1.push([thisCoord_1, 0]); - linePoints_1.push([thisCoord_1, 0]); - } - areaPoints_1.push([thisCoord_1, otherCoord]); - linePoints_1.push([thisCoord_1, otherCoord]); - thisCoord_1 += step_1; - lastIsEmpty_1 = isEmpty; - }); - polygonPts = this._shadowPolygonPts = areaPoints_1; - polylinePts = this._shadowPolylinePts = linePoints_1; - } - this._shadowData = data; - this._shadowDim = otherDim; - this._shadowSize = [size2[0], size2[1]]; - var dataZoomModel = this.dataZoomModel; - function createDataShadowGroup(isSelectedArea) { - var model = dataZoomModel.getModel(isSelectedArea ? "selectedDataBackground" : "dataBackground"); - var group2 = new Group_default(); - var polygon = new Polygon_default({ - shape: { - points: polygonPts - }, - segmentIgnoreThreshold: 1, - style: model.getModel("areaStyle").getAreaStyle(), - silent: true, - z2: -20 - }); - var polyline = new Polyline_default({ - shape: { - points: polylinePts - }, - segmentIgnoreThreshold: 1, - style: model.getModel("lineStyle").getLineStyle(), - silent: true, - z2: -19 - }); - group2.add(polygon); - group2.add(polyline); - return group2; - } - for (var i = 0; i < 3; i++) { - var group = createDataShadowGroup(i === 1); - this._displayables.sliderGroup.add(group); - this._displayables.dataShadowSegs.push(group); - } - }; - SliderZoomView2.prototype._prepareDataShadowInfo = function() { - var dataZoomModel = this.dataZoomModel; - var showDataShadow = dataZoomModel.get("showDataShadow"); - if (showDataShadow === false) { - return; - } - var result; - var ecModel = this.ecModel; - dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) { - var seriesModels = dataZoomModel.getAxisProxy(axisDim, axisIndex).getTargetSeriesModels(); - each(seriesModels, function(seriesModel) { - if (result) { - return; - } - if (showDataShadow !== true && indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get("type")) < 0) { - return; - } - var thisAxis = ecModel.getComponent(getAxisMainType(axisDim), axisIndex).axis; - var otherDim = getOtherDim(axisDim); - var otherAxisInverse; - var coordSys = seriesModel.coordinateSystem; - if (otherDim != null && coordSys.getOtherAxis) { - otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse; - } - otherDim = seriesModel.getData().mapDimension(otherDim); - result = { - thisAxis, - series: seriesModel, - thisDim: axisDim, - otherDim, - otherAxisInverse - }; - }, this); - }, this); - return result; - }; - SliderZoomView2.prototype._renderHandle = function() { - var thisGroup = this.group; - var displayables = this._displayables; - var handles = displayables.handles = [null, null]; - var handleLabels = displayables.handleLabels = [null, null]; - var sliderGroup = this._displayables.sliderGroup; - var size2 = this._size; - var dataZoomModel = this.dataZoomModel; - var api = this.api; - var borderRadius = dataZoomModel.get("borderRadius") || 0; - var brushSelect = dataZoomModel.get("brushSelect"); - var filler = displayables.filler = new Rect3({ - silent: brushSelect, - style: { - fill: dataZoomModel.get("fillerColor") - }, - textConfig: { - position: "inside" - } - }); - sliderGroup.add(filler); - sliderGroup.add(new Rect3({ - silent: true, - subPixelOptimize: true, - shape: { - x: 0, - y: 0, - width: size2[0], - height: size2[1], - r: borderRadius - }, - style: { - // deprecated option - stroke: dataZoomModel.get("dataBackgroundColor") || dataZoomModel.get("borderColor"), - lineWidth: DEFAULT_FRAME_BORDER_WIDTH, - fill: "rgba(0,0,0,0)" - } - })); - each([0, 1], function(handleIndex) { - var iconStr = dataZoomModel.get("handleIcon"); - if (!symbolBuildProxies[iconStr] && iconStr.indexOf("path://") < 0 && iconStr.indexOf("image://") < 0) { - iconStr = "path://" + iconStr; - if (true) { - deprecateLog("handleIcon now needs 'path://' prefix when using a path string"); - } - } - var path = createSymbol(iconStr, -1, 0, 2, 2, null, true); - path.attr({ - cursor: getCursor(this._orient), - draggable: true, - drift: bind(this._onDragMove, this, handleIndex), - ondragend: bind(this._onDragEnd, this), - onmouseover: bind(this._showDataInfo, this, true), - onmouseout: bind(this._showDataInfo, this, false), - z2: 5 - }); - var bRect = path.getBoundingRect(); - var handleSize = dataZoomModel.get("handleSize"); - this._handleHeight = parsePercent2(handleSize, this._size[1]); - this._handleWidth = bRect.width / bRect.height * this._handleHeight; - path.setStyle(dataZoomModel.getModel("handleStyle").getItemStyle()); - path.style.strokeNoScale = true; - path.rectHover = true; - path.ensureState("emphasis").style = dataZoomModel.getModel(["emphasis", "handleStyle"]).getItemStyle(); - enableHoverEmphasis(path); - var handleColor = dataZoomModel.get("handleColor"); - if (handleColor != null) { - path.style.fill = handleColor; - } - sliderGroup.add(handles[handleIndex] = path); - var textStyleModel = dataZoomModel.getModel("textStyle"); - var handleLabel = dataZoomModel.get("handleLabel") || {}; - var handleLabelShow = handleLabel.show || false; - thisGroup.add(handleLabels[handleIndex] = new Text_default({ - silent: true, - invisible: !handleLabelShow, - style: createTextStyle(textStyleModel, { - x: 0, - y: 0, - text: "", - verticalAlign: "middle", - align: "center", - fill: textStyleModel.getTextColor(), - font: textStyleModel.getFont() - }), - z2: 10 - })); - }, this); - var actualMoveZone = filler; - if (brushSelect) { - var moveHandleHeight = parsePercent2(dataZoomModel.get("moveHandleSize"), size2[1]); - var moveHandle_1 = displayables.moveHandle = new Rect_default({ - style: dataZoomModel.getModel("moveHandleStyle").getItemStyle(), - silent: true, - shape: { - r: [0, 0, 2, 2], - y: size2[1] - 0.5, - height: moveHandleHeight - } - }); - var iconSize = moveHandleHeight * 0.8; - var moveHandleIcon = displayables.moveHandleIcon = createSymbol(dataZoomModel.get("moveHandleIcon"), -iconSize / 2, -iconSize / 2, iconSize, iconSize, "#fff", true); - moveHandleIcon.silent = true; - moveHandleIcon.y = size2[1] + moveHandleHeight / 2 - 0.5; - moveHandle_1.ensureState("emphasis").style = dataZoomModel.getModel(["emphasis", "moveHandleStyle"]).getItemStyle(); - var moveZoneExpandSize = Math.min(size2[1] / 2, Math.max(moveHandleHeight, 10)); - actualMoveZone = displayables.moveZone = new Rect_default({ - invisible: true, - shape: { - y: size2[1] - moveZoneExpandSize, - height: moveHandleHeight + moveZoneExpandSize - } - }); - actualMoveZone.on("mouseover", function() { - api.enterEmphasis(moveHandle_1); - }).on("mouseout", function() { - api.leaveEmphasis(moveHandle_1); - }); - sliderGroup.add(moveHandle_1); - sliderGroup.add(moveHandleIcon); - sliderGroup.add(actualMoveZone); - } - actualMoveZone.attr({ - draggable: true, - cursor: getCursor(this._orient), - drift: bind(this._onDragMove, this, "all"), - ondragstart: bind(this._showDataInfo, this, true), - ondragend: bind(this._onDragEnd, this), - onmouseover: bind(this._showDataInfo, this, true), - onmouseout: bind(this._showDataInfo, this, false) - }); - }; - SliderZoomView2.prototype._resetInterval = function() { - var range = this._range = this.dataZoomModel.getPercentRange(); - var viewExtent = this._getViewExtent(); - this._handleEnds = [linearMap(range[0], [0, 100], viewExtent, true), linearMap(range[1], [0, 100], viewExtent, true)]; - }; - SliderZoomView2.prototype._updateInterval = function(handleIndex, delta) { - var dataZoomModel = this.dataZoomModel; - var handleEnds = this._handleEnds; - var viewExtend = this._getViewExtent(); - var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan(); - var percentExtent = [0, 100]; - sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get("zoomLock") ? "all" : handleIndex, minMaxSpan.minSpan != null ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null); - var lastRange = this._range; - var range = this._range = asc([linearMap(handleEnds[0], viewExtend, percentExtent, true), linearMap(handleEnds[1], viewExtend, percentExtent, true)]); - return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1]; - }; - SliderZoomView2.prototype._updateView = function(nonRealtime) { - var displaybles = this._displayables; - var handleEnds = this._handleEnds; - var handleInterval = asc(handleEnds.slice()); - var size2 = this._size; - each([0, 1], function(handleIndex) { - var handle = displaybles.handles[handleIndex]; - var handleHeight = this._handleHeight; - handle.attr({ - scaleX: handleHeight / 2, - scaleY: handleHeight / 2, - // This is a trick, by adding an extra tiny offset to let the default handle's end point align to the drag window. - // NOTE: It may affect some custom shapes a bit. But we prefer to have better result by default. - x: handleEnds[handleIndex] + (handleIndex ? -1 : 1), - y: size2[1] / 2 - handleHeight / 2 - }); - }, this); - displaybles.filler.setShape({ - x: handleInterval[0], - y: 0, - width: handleInterval[1] - handleInterval[0], - height: size2[1] - }); - var viewExtent = { - x: handleInterval[0], - width: handleInterval[1] - handleInterval[0] - }; - if (displaybles.moveHandle) { - displaybles.moveHandle.setShape(viewExtent); - displaybles.moveZone.setShape(viewExtent); - displaybles.moveZone.getBoundingRect(); - displaybles.moveHandleIcon && displaybles.moveHandleIcon.attr("x", viewExtent.x + viewExtent.width / 2); - } - var dataShadowSegs = displaybles.dataShadowSegs; - var segIntervals = [0, handleInterval[0], handleInterval[1], size2[0]]; - for (var i = 0; i < dataShadowSegs.length; i++) { - var segGroup = dataShadowSegs[i]; - var clipPath = segGroup.getClipPath(); - if (!clipPath) { - clipPath = new Rect_default(); - segGroup.setClipPath(clipPath); - } - clipPath.setShape({ - x: segIntervals[i], - y: 0, - width: segIntervals[i + 1] - segIntervals[i], - height: size2[1] - }); - } - this._updateDataInfo(nonRealtime); - }; - SliderZoomView2.prototype._updateDataInfo = function(nonRealtime) { - var dataZoomModel = this.dataZoomModel; - var displaybles = this._displayables; - var handleLabels = displaybles.handleLabels; - var orient = this._orient; - var labelTexts = ["", ""]; - if (dataZoomModel.get("showDetail")) { - var axisProxy = dataZoomModel.findRepresentativeAxisProxy(); - if (axisProxy) { - var axis = axisProxy.getAxisModel().axis; - var range = this._range; - var dataInterval = nonRealtime ? axisProxy.calculateDataWindow({ - start: range[0], - end: range[1] - }).valueWindow : axisProxy.getDataValueWindow(); - labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)]; - } - } - var orderedHandleEnds = asc(this._handleEnds.slice()); - setLabel.call(this, 0); - setLabel.call(this, 1); - function setLabel(handleIndex) { - var barTransform = getTransform(displaybles.handles[handleIndex].parent, this.group); - var direction = transformDirection(handleIndex === 0 ? "right" : "left", barTransform); - var offset3 = this._handleWidth / 2 + LABEL_GAP; - var textPoint = applyTransform2([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset3 : offset3), this._size[1] / 2], barTransform); - handleLabels[handleIndex].setStyle({ - x: textPoint[0], - y: textPoint[1], - verticalAlign: orient === HORIZONTAL ? "middle" : direction, - align: orient === HORIZONTAL ? direction : "center", - text: labelTexts[handleIndex] - }); - } - }; - SliderZoomView2.prototype._formatLabel = function(value, axis) { - var dataZoomModel = this.dataZoomModel; - var labelFormatter = dataZoomModel.get("labelFormatter"); - var labelPrecision = dataZoomModel.get("labelPrecision"); - if (labelPrecision == null || labelPrecision === "auto") { - labelPrecision = axis.getPixelPrecision(); - } - var valueStr = value == null || isNaN(value) ? "" : axis.type === "category" || axis.type === "time" ? axis.scale.getLabel({ - value: Math.round(value) - }) : value.toFixed(Math.min(labelPrecision, 20)); - return isFunction(labelFormatter) ? labelFormatter(value, valueStr) : isString(labelFormatter) ? labelFormatter.replace("{value}", valueStr) : valueStr; - }; - SliderZoomView2.prototype._showDataInfo = function(isEmphasis) { - var handleLabel = this.dataZoomModel.get("handleLabel") || {}; - var normalShow = handleLabel.show || false; - var emphasisHandleLabel = this.dataZoomModel.getModel(["emphasis", "handleLabel"]); - var emphasisShow = emphasisHandleLabel.get("show") || false; - var toShow = isEmphasis || this._dragging ? emphasisShow : normalShow; - var displayables = this._displayables; - var handleLabels = displayables.handleLabels; - handleLabels[0].attr("invisible", !toShow); - handleLabels[1].attr("invisible", !toShow); - displayables.moveHandle && this.api[toShow ? "enterEmphasis" : "leaveEmphasis"](displayables.moveHandle, 1); - }; - SliderZoomView2.prototype._onDragMove = function(handleIndex, dx, dy, event) { - this._dragging = true; - stop(event.event); - var barTransform = this._displayables.sliderGroup.getLocalTransform(); - var vertex = applyTransform2([dx, dy], barTransform, true); - var changed = this._updateInterval(handleIndex, vertex[0]); - var realtime = this.dataZoomModel.get("realtime"); - this._updateView(!realtime); - changed && realtime && this._dispatchZoomAction(true); - }; - SliderZoomView2.prototype._onDragEnd = function() { - this._dragging = false; - this._showDataInfo(false); - var realtime = this.dataZoomModel.get("realtime"); - !realtime && this._dispatchZoomAction(false); - }; - SliderZoomView2.prototype._onClickPanel = function(e2) { - var size2 = this._size; - var localPoint = this._displayables.sliderGroup.transformCoordToLocal(e2.offsetX, e2.offsetY); - if (localPoint[0] < 0 || localPoint[0] > size2[0] || localPoint[1] < 0 || localPoint[1] > size2[1]) { - return; - } - var handleEnds = this._handleEnds; - var center3 = (handleEnds[0] + handleEnds[1]) / 2; - var changed = this._updateInterval("all", localPoint[0] - center3); - this._updateView(); - changed && this._dispatchZoomAction(false); - }; - SliderZoomView2.prototype._onBrushStart = function(e2) { - var x = e2.offsetX; - var y = e2.offsetY; - this._brushStart = new Point_default(x, y); - this._brushing = true; - this._brushStartTime = +/* @__PURE__ */ new Date(); - }; - SliderZoomView2.prototype._onBrushEnd = function(e2) { - if (!this._brushing) { - return; - } - var brushRect = this._displayables.brushRect; - this._brushing = false; - if (!brushRect) { - return; - } - brushRect.attr("ignore", true); - var brushShape = brushRect.shape; - var brushEndTime = +/* @__PURE__ */ new Date(); - if (brushEndTime - this._brushStartTime < 200 && Math.abs(brushShape.width) < 5) { - return; - } - var viewExtend = this._getViewExtent(); - var percentExtent = [0, 100]; - this._range = asc([linearMap(brushShape.x, viewExtend, percentExtent, true), linearMap(brushShape.x + brushShape.width, viewExtend, percentExtent, true)]); - this._handleEnds = [brushShape.x, brushShape.x + brushShape.width]; - this._updateView(); - this._dispatchZoomAction(false); - }; - SliderZoomView2.prototype._onBrush = function(e2) { - if (this._brushing) { - stop(e2.event); - this._updateBrushRect(e2.offsetX, e2.offsetY); - } - }; - SliderZoomView2.prototype._updateBrushRect = function(mouseX, mouseY) { - var displayables = this._displayables; - var dataZoomModel = this.dataZoomModel; - var brushRect = displayables.brushRect; - if (!brushRect) { - brushRect = displayables.brushRect = new Rect3({ - silent: true, - style: dataZoomModel.getModel("brushStyle").getItemStyle() - }); - displayables.sliderGroup.add(brushRect); - } - brushRect.attr("ignore", false); - var brushStart = this._brushStart; - var sliderGroup = this._displayables.sliderGroup; - var endPoint = sliderGroup.transformCoordToLocal(mouseX, mouseY); - var startPoint = sliderGroup.transformCoordToLocal(brushStart.x, brushStart.y); - var size2 = this._size; - endPoint[0] = Math.max(Math.min(size2[0], endPoint[0]), 0); - brushRect.setShape({ - x: startPoint[0], - y: 0, - width: endPoint[0] - startPoint[0], - height: size2[1] - }); - }; - SliderZoomView2.prototype._dispatchZoomAction = function(realtime) { - var range = this._range; - this.api.dispatchAction({ - type: "dataZoom", - from: this.uid, - dataZoomId: this.dataZoomModel.id, - animation: realtime ? REALTIME_ANIMATION_CONFIG : null, - start: range[0], - end: range[1] - }); - }; - SliderZoomView2.prototype._findCoordRect = function() { - var rect; - var coordSysInfoList = collectReferCoordSysModelInfo(this.dataZoomModel).infoList; - if (!rect && coordSysInfoList.length) { - var coordSys = coordSysInfoList[0].model.coordinateSystem; - rect = coordSys.getRect && coordSys.getRect(); - } - if (!rect) { - var width = this.api.getWidth(); - var height = this.api.getHeight(); - rect = { - x: width * 0.2, - y: height * 0.2, - width: width * 0.6, - height: height * 0.6 - }; - } - return rect; - }; - SliderZoomView2.type = "dataZoom.slider"; - return SliderZoomView2; - }(DataZoomView_default) - ); - function getOtherDim(thisDim) { - var map3 = { - x: "y", - y: "x", - radius: "angle", - angle: "radius" - }; - return map3[thisDim]; - } - function getCursor(orient) { - return orient === "vertical" ? "ns-resize" : "ew-resize"; - } - var SliderZoomView_default = SliderZoomView; - - // node_modules/echarts/lib/component/dataZoom/installDataZoomSlider.js - function install48(registers) { - registers.registerComponentModel(SliderZoomModel_default); - registers.registerComponentView(SliderZoomView_default); - installCommon(registers); - } - - // node_modules/echarts/lib/component/dataZoom/install.js - function install49(registers) { - use(install47); - use(install48); - } - - // node_modules/echarts/lib/visual/visualDefault.js - var visualDefault = { - /** - * @public - */ - get: function(visualType, key, isCategory2) { - var value = clone((defaultOption2[visualType] || {})[key]); - return isCategory2 ? isArray(value) ? value[value.length - 1] : value : value; - } - }; - var defaultOption2 = { - color: { - active: ["#006edd", "#e0ffff"], - inactive: ["rgba(0,0,0,0)"] - }, - colorHue: { - active: [0, 360], - inactive: [0, 0] - }, - colorSaturation: { - active: [0.3, 1], - inactive: [0, 0] - }, - colorLightness: { - active: [0.9, 0.5], - inactive: [0, 0] - }, - colorAlpha: { - active: [0.3, 1], - inactive: [0, 0] - }, - opacity: { - active: [0.3, 1], - inactive: [0, 0] - }, - symbol: { - active: ["circle", "roundRect", "diamond"], - inactive: ["none"] - }, - symbolSize: { - active: [10, 50], - inactive: [0, 0] - } - }; - var visualDefault_default = visualDefault; - - // node_modules/echarts/lib/component/visualMap/VisualMapModel.js - var mapVisual2 = VisualMapping_default.mapVisual; - var eachVisual = VisualMapping_default.eachVisual; - var isArray2 = isArray; - var each14 = each; - var asc3 = asc; - var linearMap2 = linearMap; - var VisualMapModel = ( - /** @class */ - function(_super) { - __extends(VisualMapModel2, _super); - function VisualMapModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = VisualMapModel2.type; - _this.stateList = ["inRange", "outOfRange"]; - _this.replacableOptionKeys = ["inRange", "outOfRange", "target", "controller", "color"]; - _this.layoutMode = { - type: "box", - ignoreSize: true - }; - _this.dataBound = [-Infinity, Infinity]; - _this.targetVisuals = {}; - _this.controllerVisuals = {}; - return _this; - } - VisualMapModel2.prototype.init = function(option, parentModel, ecModel) { - this.mergeDefaultAndTheme(option, ecModel); - }; - VisualMapModel2.prototype.optionUpdated = function(newOption, isInit) { - var thisOption = this.option; - !isInit && replaceVisualOption(thisOption, newOption, this.replacableOptionKeys); - this.textStyleModel = this.getModel("textStyle"); - this.resetItemSize(); - this.completeVisualOption(); - }; - VisualMapModel2.prototype.resetVisual = function(supplementVisualOption) { - var stateList = this.stateList; - supplementVisualOption = bind(supplementVisualOption, this); - this.controllerVisuals = createVisualMappings(this.option.controller, stateList, supplementVisualOption); - this.targetVisuals = createVisualMappings(this.option.target, stateList, supplementVisualOption); - }; - VisualMapModel2.prototype.getItemSymbol = function() { - return null; - }; - VisualMapModel2.prototype.getTargetSeriesIndices = function() { - var optionSeriesIndex = this.option.seriesIndex; - var seriesIndices = []; - if (optionSeriesIndex == null || optionSeriesIndex === "all") { - this.ecModel.eachSeries(function(seriesModel, index) { - seriesIndices.push(index); - }); - } else { - seriesIndices = normalizeToArray(optionSeriesIndex); - } - return seriesIndices; - }; - VisualMapModel2.prototype.eachTargetSeries = function(callback, context) { - each(this.getTargetSeriesIndices(), function(seriesIndex) { - var seriesModel = this.ecModel.getSeriesByIndex(seriesIndex); - if (seriesModel) { - callback.call(context, seriesModel); - } - }, this); - }; - VisualMapModel2.prototype.isTargetSeries = function(seriesModel) { - var is = false; - this.eachTargetSeries(function(model) { - model === seriesModel && (is = true); - }); - return is; - }; - VisualMapModel2.prototype.formatValueText = function(value, isCategory2, edgeSymbols) { - var option = this.option; - var precision = option.precision; - var dataBound = this.dataBound; - var formatter = option.formatter; - var isMinMax; - edgeSymbols = edgeSymbols || ["<", ">"]; - if (isArray(value)) { - value = value.slice(); - isMinMax = true; - } - var textValue = isCategory2 ? value : isMinMax ? [toFixed(value[0]), toFixed(value[1])] : toFixed(value); - if (isString(formatter)) { - return formatter.replace("{value}", isMinMax ? textValue[0] : textValue).replace("{value2}", isMinMax ? textValue[1] : textValue); - } else if (isFunction(formatter)) { - return isMinMax ? formatter(value[0], value[1]) : formatter(value); - } - if (isMinMax) { - if (value[0] === dataBound[0]) { - return edgeSymbols[0] + " " + textValue[1]; - } else if (value[1] === dataBound[1]) { - return edgeSymbols[1] + " " + textValue[0]; - } else { - return textValue[0] + " - " + textValue[1]; - } - } else { - return textValue; - } - function toFixed(val) { - return val === dataBound[0] ? "min" : val === dataBound[1] ? "max" : (+val).toFixed(Math.min(precision, 20)); - } - }; - VisualMapModel2.prototype.resetExtent = function() { - var thisOption = this.option; - var extent3 = asc3([thisOption.min, thisOption.max]); - this._dataExtent = extent3; - }; - VisualMapModel2.prototype.getDataDimensionIndex = function(data) { - var optDim = this.option.dimension; - if (optDim != null) { - return data.getDimensionIndex(optDim); - } - var dimNames = data.dimensions; - for (var i = dimNames.length - 1; i >= 0; i--) { - var dimName = dimNames[i]; - var dimInfo = data.getDimensionInfo(dimName); - if (!dimInfo.isCalculationCoord) { - return dimInfo.storeDimIndex; - } - } - }; - VisualMapModel2.prototype.getExtent = function() { - return this._dataExtent.slice(); - }; - VisualMapModel2.prototype.completeVisualOption = function() { - var ecModel = this.ecModel; - var thisOption = this.option; - var base2 = { - inRange: thisOption.inRange, - outOfRange: thisOption.outOfRange - }; - var target = thisOption.target || (thisOption.target = {}); - var controller = thisOption.controller || (thisOption.controller = {}); - merge(target, base2); - merge(controller, base2); - var isCategory2 = this.isCategory(); - completeSingle.call(this, target); - completeSingle.call(this, controller); - completeInactive.call(this, target, "inRange", "outOfRange"); - completeController.call(this, controller); - function completeSingle(base3) { - if (isArray2(thisOption.color) && !base3.inRange) { - base3.inRange = { - color: thisOption.color.slice().reverse() - }; - } - base3.inRange = base3.inRange || { - color: ecModel.get("gradientColor") - }; - } - function completeInactive(base3, stateExist, stateAbsent) { - var optExist = base3[stateExist]; - var optAbsent = base3[stateAbsent]; - if (optExist && !optAbsent) { - optAbsent = base3[stateAbsent] = {}; - each14(optExist, function(visualData, visualType) { - if (!VisualMapping_default.isValidType(visualType)) { - return; - } - var defa = visualDefault_default.get(visualType, "inactive", isCategory2); - if (defa != null) { - optAbsent[visualType] = defa; - if (visualType === "color" && !optAbsent.hasOwnProperty("opacity") && !optAbsent.hasOwnProperty("colorAlpha")) { - optAbsent.opacity = [0, 0]; - } - } - }); - } - } - function completeController(controller2) { - var symbolExists = (controller2.inRange || {}).symbol || (controller2.outOfRange || {}).symbol; - var symbolSizeExists = (controller2.inRange || {}).symbolSize || (controller2.outOfRange || {}).symbolSize; - var inactiveColor = this.get("inactiveColor"); - var itemSymbol = this.getItemSymbol(); - var defaultSymbol = itemSymbol || "roundRect"; - each14(this.stateList, function(state) { - var itemSize = this.itemSize; - var visuals = controller2[state]; - if (!visuals) { - visuals = controller2[state] = { - color: isCategory2 ? inactiveColor : [inactiveColor] - }; - } - if (visuals.symbol == null) { - visuals.symbol = symbolExists && clone(symbolExists) || (isCategory2 ? defaultSymbol : [defaultSymbol]); - } - if (visuals.symbolSize == null) { - visuals.symbolSize = symbolSizeExists && clone(symbolSizeExists) || (isCategory2 ? itemSize[0] : [itemSize[0], itemSize[0]]); - } - visuals.symbol = mapVisual2(visuals.symbol, function(symbol) { - return symbol === "none" ? defaultSymbol : symbol; - }); - var symbolSize = visuals.symbolSize; - if (symbolSize != null) { - var max_1 = -Infinity; - eachVisual(symbolSize, function(value) { - value > max_1 && (max_1 = value); - }); - visuals.symbolSize = mapVisual2(symbolSize, function(value) { - return linearMap2(value, [0, max_1], [0, itemSize[0]], true); - }); - } - }, this); - } - }; - VisualMapModel2.prototype.resetItemSize = function() { - this.itemSize = [parseFloat(this.get("itemWidth")), parseFloat(this.get("itemHeight"))]; - }; - VisualMapModel2.prototype.isCategory = function() { - return !!this.option.categories; - }; - VisualMapModel2.prototype.setSelected = function(selected) { - }; - VisualMapModel2.prototype.getSelected = function() { - return null; - }; - VisualMapModel2.prototype.getValueState = function(value) { - return null; - }; - VisualMapModel2.prototype.getVisualMeta = function(getColorVisual2) { - return null; - }; - VisualMapModel2.type = "visualMap"; - VisualMapModel2.dependencies = ["series"]; - VisualMapModel2.defaultOption = { - show: true, - // zlevel: 0, - z: 4, - seriesIndex: "all", - min: 0, - max: 200, - left: 0, - right: null, - top: null, - bottom: 0, - itemWidth: null, - itemHeight: null, - inverse: false, - orient: "vertical", - backgroundColor: "rgba(0,0,0,0)", - borderColor: "#ccc", - contentColor: "#5793f3", - inactiveColor: "#aaa", - borderWidth: 0, - padding: 5, - // 接受数组分别设定上右下左边距,同css - textGap: 10, - precision: 0, - textStyle: { - color: "#333" - // 值域文字颜色 - } - }; - return VisualMapModel2; - }(Component_default) - ); - var VisualMapModel_default = VisualMapModel; - - // node_modules/echarts/lib/component/visualMap/ContinuousModel.js - var DEFAULT_BAR_BOUND = [20, 140]; - var ContinuousModel = ( - /** @class */ - function(_super) { - __extends(ContinuousModel2, _super); - function ContinuousModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ContinuousModel2.type; - return _this; - } - ContinuousModel2.prototype.optionUpdated = function(newOption, isInit) { - _super.prototype.optionUpdated.apply(this, arguments); - this.resetExtent(); - this.resetVisual(function(mappingOption) { - mappingOption.mappingMethod = "linear"; - mappingOption.dataExtent = this.getExtent(); - }); - this._resetRange(); - }; - ContinuousModel2.prototype.resetItemSize = function() { - _super.prototype.resetItemSize.apply(this, arguments); - var itemSize = this.itemSize; - (itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND[0]); - (itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND[1]); - }; - ContinuousModel2.prototype._resetRange = function() { - var dataExtent = this.getExtent(); - var range = this.option.range; - if (!range || range.auto) { - dataExtent.auto = 1; - this.option.range = dataExtent; - } else if (isArray(range)) { - if (range[0] > range[1]) { - range.reverse(); - } - range[0] = Math.max(range[0], dataExtent[0]); - range[1] = Math.min(range[1], dataExtent[1]); - } - }; - ContinuousModel2.prototype.completeVisualOption = function() { - _super.prototype.completeVisualOption.apply(this, arguments); - each(this.stateList, function(state) { - var symbolSize = this.option.controller[state].symbolSize; - if (symbolSize && symbolSize[0] !== symbolSize[1]) { - symbolSize[0] = symbolSize[1] / 3; - } - }, this); - }; - ContinuousModel2.prototype.setSelected = function(selected) { - this.option.range = selected.slice(); - this._resetRange(); - }; - ContinuousModel2.prototype.getSelected = function() { - var dataExtent = this.getExtent(); - var dataInterval = asc((this.get("range") || []).slice()); - dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]); - dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]); - dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]); - dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]); - return dataInterval; - }; - ContinuousModel2.prototype.getValueState = function(value) { - var range = this.option.range; - var dataExtent = this.getExtent(); - return (range[0] <= dataExtent[0] || range[0] <= value) && (range[1] >= dataExtent[1] || value <= range[1]) ? "inRange" : "outOfRange"; - }; - ContinuousModel2.prototype.findTargetDataIndices = function(range) { - var result = []; - this.eachTargetSeries(function(seriesModel) { - var dataIndices = []; - var data = seriesModel.getData(); - data.each(this.getDataDimensionIndex(data), function(value, dataIndex) { - range[0] <= value && value <= range[1] && dataIndices.push(dataIndex); - }, this); - result.push({ - seriesId: seriesModel.id, - dataIndex: dataIndices - }); - }, this); - return result; - }; - ContinuousModel2.prototype.getVisualMeta = function(getColorVisual2) { - var oVals = getColorStopValues(this, "outOfRange", this.getExtent()); - var iVals = getColorStopValues(this, "inRange", this.option.range.slice()); - var stops = []; - function setStop(value, valueState) { - stops.push({ - value, - color: getColorVisual2(value, valueState) - }); - } - var iIdx = 0; - var oIdx = 0; - var iLen = iVals.length; - var oLen = oVals.length; - for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) { - if (oVals[oIdx] < iVals[iIdx]) { - setStop(oVals[oIdx], "outOfRange"); - } - } - for (var first = 1; iIdx < iLen; iIdx++, first = 0) { - first && stops.length && setStop(iVals[iIdx], "outOfRange"); - setStop(iVals[iIdx], "inRange"); - } - for (var first = 1; oIdx < oLen; oIdx++) { - if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) { - if (first) { - stops.length && setStop(stops[stops.length - 1].value, "outOfRange"); - first = 0; - } - setStop(oVals[oIdx], "outOfRange"); - } - } - var stopsLen = stops.length; - return { - stops, - outerColors: [stopsLen ? stops[0].color : "transparent", stopsLen ? stops[stopsLen - 1].color : "transparent"] - }; - }; - ContinuousModel2.type = "visualMap.continuous"; - ContinuousModel2.defaultOption = inheritDefaultOption(VisualMapModel_default.defaultOption, { - align: "auto", - calculable: false, - hoverLink: true, - realtime: true, - handleIcon: "path://M-11.39,9.77h0a3.5,3.5,0,0,1-3.5,3.5h-22a3.5,3.5,0,0,1-3.5-3.5h0a3.5,3.5,0,0,1,3.5-3.5h22A3.5,3.5,0,0,1-11.39,9.77Z", - handleSize: "120%", - handleStyle: { - borderColor: "#fff", - borderWidth: 1 - }, - indicatorIcon: "circle", - indicatorSize: "50%", - indicatorStyle: { - borderColor: "#fff", - borderWidth: 2, - shadowBlur: 2, - shadowOffsetX: 1, - shadowOffsetY: 1, - shadowColor: "rgba(0,0,0,0.2)" - } - // emphasis: { - // handleStyle: { - // shadowBlur: 3, - // shadowOffsetX: 1, - // shadowOffsetY: 1, - // shadowColor: 'rgba(0,0,0,0.2)' - // } - // } - }); - return ContinuousModel2; - }(VisualMapModel_default) - ); - function getColorStopValues(visualMapModel, valueState, dataExtent) { - if (dataExtent[0] === dataExtent[1]) { - return dataExtent.slice(); - } - var count2 = 200; - var step = (dataExtent[1] - dataExtent[0]) / count2; - var value = dataExtent[0]; - var stopValues = []; - for (var i = 0; i <= count2 && value < dataExtent[1]; i++) { - stopValues.push(value); - value += step; - } - stopValues.push(dataExtent[1]); - return stopValues; - } - var ContinuousModel_default = ContinuousModel; - - // node_modules/echarts/lib/component/visualMap/VisualMapView.js - var VisualMapView = ( - /** @class */ - function(_super) { - __extends(VisualMapView2, _super); - function VisualMapView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = VisualMapView2.type; - _this.autoPositionValues = { - left: 1, - right: 1, - top: 1, - bottom: 1 - }; - return _this; - } - VisualMapView2.prototype.init = function(ecModel, api) { - this.ecModel = ecModel; - this.api = api; - }; - VisualMapView2.prototype.render = function(visualMapModel, ecModel, api, payload) { - this.visualMapModel = visualMapModel; - if (visualMapModel.get("show") === false) { - this.group.removeAll(); - return; - } - this.doRender(visualMapModel, ecModel, api, payload); - }; - VisualMapView2.prototype.renderBackground = function(group) { - var visualMapModel = this.visualMapModel; - var padding = normalizeCssArray2(visualMapModel.get("padding") || 0); - var rect = group.getBoundingRect(); - group.add(new Rect_default({ - z2: -1, - silent: true, - shape: { - x: rect.x - padding[3], - y: rect.y - padding[0], - width: rect.width + padding[3] + padding[1], - height: rect.height + padding[0] + padding[2] - }, - style: { - fill: visualMapModel.get("backgroundColor"), - stroke: visualMapModel.get("borderColor"), - lineWidth: visualMapModel.get("borderWidth") - } - })); - }; - VisualMapView2.prototype.getControllerVisual = function(targetValue, visualCluster, opts) { - opts = opts || {}; - var forceState = opts.forceState; - var visualMapModel = this.visualMapModel; - var visualObj = {}; - if (visualCluster === "color") { - var defaultColor = visualMapModel.get("contentColor"); - visualObj.color = defaultColor; - } - function getter(key) { - return visualObj[key]; - } - function setter(key, value) { - visualObj[key] = value; - } - var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)]; - var visualTypes = VisualMapping_default.prepareVisualTypes(mappings); - each(visualTypes, function(type) { - var visualMapping = mappings[type]; - if (opts.convertOpacityToAlpha && type === "opacity") { - type = "colorAlpha"; - visualMapping = mappings.__alphaForOpacity; - } - if (VisualMapping_default.dependsOn(type, visualCluster)) { - visualMapping && visualMapping.applyVisual(targetValue, getter, setter); - } - }); - return visualObj[visualCluster]; - }; - VisualMapView2.prototype.positionGroup = function(group) { - var model = this.visualMapModel; - var api = this.api; - positionElement(group, model.getBoxLayoutParams(), { - width: api.getWidth(), - height: api.getHeight() - }); - }; - VisualMapView2.prototype.doRender = function(visualMapModel, ecModel, api, payload) { - }; - VisualMapView2.type = "visualMap"; - return VisualMapView2; - }(Component_default2) - ); - var VisualMapView_default = VisualMapView; - - // node_modules/echarts/lib/component/visualMap/helper.js - var paramsSet = [["left", "right", "width"], ["top", "bottom", "height"]]; - function getItemAlign(visualMapModel, api, itemSize) { - var modelOption = visualMapModel.option; - var itemAlign = modelOption.align; - if (itemAlign != null && itemAlign !== "auto") { - return itemAlign; - } - var ecSize = { - width: api.getWidth(), - height: api.getHeight() - }; - var realIndex = modelOption.orient === "horizontal" ? 1 : 0; - var reals = paramsSet[realIndex]; - var fakeValue = [0, null, 10]; - var layoutInput = {}; - for (var i = 0; i < 3; i++) { - layoutInput[paramsSet[1 - realIndex][i]] = fakeValue[i]; - layoutInput[reals[i]] = i === 2 ? itemSize[0] : modelOption[reals[i]]; - } - var rParam = [["x", "width", 3], ["y", "height", 0]][realIndex]; - var rect = getLayoutRect(layoutInput, ecSize, modelOption.padding); - return reals[(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5 < ecSize[rParam[1]] * 0.5 ? 0 : 1]; - } - function makeHighDownBatch(batch, visualMapModel) { - each(batch || [], function(batchItem) { - if (batchItem.dataIndex != null) { - batchItem.dataIndexInside = batchItem.dataIndex; - batchItem.dataIndex = null; - } - batchItem.highlightKey = "visualMap" + (visualMapModel ? visualMapModel.componentIndex : ""); - }); - return batch; - } - - // node_modules/echarts/lib/component/visualMap/ContinuousView.js - var linearMap3 = linearMap; - var each15 = each; - var mathMin11 = Math.min; - var mathMax11 = Math.max; - var HOVER_LINK_SIZE = 12; - var HOVER_LINK_OUT = 6; - var ContinuousView = ( - /** @class */ - function(_super) { - __extends(ContinuousView2, _super); - function ContinuousView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = ContinuousView2.type; - _this._shapes = {}; - _this._dataInterval = []; - _this._handleEnds = []; - _this._hoverLinkDataIndices = []; - return _this; - } - ContinuousView2.prototype.init = function(ecModel, api) { - _super.prototype.init.call(this, ecModel, api); - this._hoverLinkFromSeriesMouseOver = bind(this._hoverLinkFromSeriesMouseOver, this); - this._hideIndicator = bind(this._hideIndicator, this); - }; - ContinuousView2.prototype.doRender = function(visualMapModel, ecModel, api, payload) { - if (!payload || payload.type !== "selectDataRange" || payload.from !== this.uid) { - this._buildView(); - } - }; - ContinuousView2.prototype._buildView = function() { - this.group.removeAll(); - var visualMapModel = this.visualMapModel; - var thisGroup = this.group; - this._orient = visualMapModel.get("orient"); - this._useHandle = visualMapModel.get("calculable"); - this._resetInterval(); - this._renderBar(thisGroup); - var dataRangeText = visualMapModel.get("text"); - this._renderEndsText(thisGroup, dataRangeText, 0); - this._renderEndsText(thisGroup, dataRangeText, 1); - this._updateView(true); - this.renderBackground(thisGroup); - this._updateView(); - this._enableHoverLinkToSeries(); - this._enableHoverLinkFromSeries(); - this.positionGroup(thisGroup); - }; - ContinuousView2.prototype._renderEndsText = function(group, dataRangeText, endsIndex) { - if (!dataRangeText) { - return; - } - var text = dataRangeText[1 - endsIndex]; - text = text != null ? text + "" : ""; - var visualMapModel = this.visualMapModel; - var textGap = visualMapModel.get("textGap"); - var itemSize = visualMapModel.itemSize; - var barGroup = this._shapes.mainGroup; - var position2 = this._applyTransform([itemSize[0] / 2, endsIndex === 0 ? -textGap : itemSize[1] + textGap], barGroup); - var align = this._applyTransform(endsIndex === 0 ? "bottom" : "top", barGroup); - var orient = this._orient; - var textStyleModel = this.visualMapModel.textStyleModel; - this.group.add(new Text_default({ - style: createTextStyle(textStyleModel, { - x: position2[0], - y: position2[1], - verticalAlign: orient === "horizontal" ? "middle" : align, - align: orient === "horizontal" ? align : "center", - text - }) - })); - }; - ContinuousView2.prototype._renderBar = function(targetGroup) { - var visualMapModel = this.visualMapModel; - var shapes = this._shapes; - var itemSize = visualMapModel.itemSize; - var orient = this._orient; - var useHandle = this._useHandle; - var itemAlign = getItemAlign(visualMapModel, this.api, itemSize); - var mainGroup = shapes.mainGroup = this._createBarGroup(itemAlign); - var gradientBarGroup = new Group_default(); - mainGroup.add(gradientBarGroup); - gradientBarGroup.add(shapes.outOfRange = createPolygon()); - gradientBarGroup.add(shapes.inRange = createPolygon(null, useHandle ? getCursor2(this._orient) : null, bind(this._dragHandle, this, "all", false), bind(this._dragHandle, this, "all", true))); - gradientBarGroup.setClipPath(new Rect_default({ - shape: { - x: 0, - y: 0, - width: itemSize[0], - height: itemSize[1], - r: 3 - } - })); - var textRect = visualMapModel.textStyleModel.getTextRect("\u56FD"); - var textSize = mathMax11(textRect.width, textRect.height); - if (useHandle) { - shapes.handleThumbs = []; - shapes.handleLabels = []; - shapes.handleLabelPoints = []; - this._createHandle(visualMapModel, mainGroup, 0, itemSize, textSize, orient); - this._createHandle(visualMapModel, mainGroup, 1, itemSize, textSize, orient); - } - this._createIndicator(visualMapModel, mainGroup, itemSize, textSize, orient); - targetGroup.add(mainGroup); - }; - ContinuousView2.prototype._createHandle = function(visualMapModel, mainGroup, handleIndex, itemSize, textSize, orient) { - var onDrift = bind(this._dragHandle, this, handleIndex, false); - var onDragEnd = bind(this._dragHandle, this, handleIndex, true); - var handleSize = parsePercent(visualMapModel.get("handleSize"), itemSize[0]); - var handleThumb = createSymbol(visualMapModel.get("handleIcon"), -handleSize / 2, -handleSize / 2, handleSize, handleSize, null, true); - var cursor = getCursor2(this._orient); - handleThumb.attr({ - cursor, - draggable: true, - drift: onDrift, - ondragend: onDragEnd, - onmousemove: function(e2) { - stop(e2.event); - } - }); - handleThumb.x = itemSize[0] / 2; - handleThumb.useStyle(visualMapModel.getModel("handleStyle").getItemStyle()); - handleThumb.setStyle({ - strokeNoScale: true, - strokeFirst: true - }); - handleThumb.style.lineWidth *= 2; - handleThumb.ensureState("emphasis").style = visualMapModel.getModel(["emphasis", "handleStyle"]).getItemStyle(); - setAsHighDownDispatcher(handleThumb, true); - mainGroup.add(handleThumb); - var textStyleModel = this.visualMapModel.textStyleModel; - var handleLabel = new Text_default({ - cursor, - draggable: true, - drift: onDrift, - onmousemove: function(e2) { - stop(e2.event); - }, - ondragend: onDragEnd, - style: createTextStyle(textStyleModel, { - x: 0, - y: 0, - text: "" - }) - }); - handleLabel.ensureState("blur").style = { - opacity: 0.1 - }; - handleLabel.stateTransition = { - duration: 200 - }; - this.group.add(handleLabel); - var handleLabelPoint = [handleSize, 0]; - var shapes = this._shapes; - shapes.handleThumbs[handleIndex] = handleThumb; - shapes.handleLabelPoints[handleIndex] = handleLabelPoint; - shapes.handleLabels[handleIndex] = handleLabel; - }; - ContinuousView2.prototype._createIndicator = function(visualMapModel, mainGroup, itemSize, textSize, orient) { - var scale4 = parsePercent(visualMapModel.get("indicatorSize"), itemSize[0]); - var indicator = createSymbol(visualMapModel.get("indicatorIcon"), -scale4 / 2, -scale4 / 2, scale4, scale4, null, true); - indicator.attr({ - cursor: "move", - invisible: true, - silent: true, - x: itemSize[0] / 2 - }); - var indicatorStyle = visualMapModel.getModel("indicatorStyle").getItemStyle(); - if (indicator instanceof Image_default) { - var pathStyle = indicator.style; - indicator.useStyle(extend({ - // TODO other properties like x, y ? - image: pathStyle.image, - x: pathStyle.x, - y: pathStyle.y, - width: pathStyle.width, - height: pathStyle.height - }, indicatorStyle)); - } else { - indicator.useStyle(indicatorStyle); - } - mainGroup.add(indicator); - var textStyleModel = this.visualMapModel.textStyleModel; - var indicatorLabel = new Text_default({ - silent: true, - invisible: true, - style: createTextStyle(textStyleModel, { - x: 0, - y: 0, - text: "" - }) - }); - this.group.add(indicatorLabel); - var indicatorLabelPoint = [(orient === "horizontal" ? textSize / 2 : HOVER_LINK_OUT) + itemSize[0] / 2, 0]; - var shapes = this._shapes; - shapes.indicator = indicator; - shapes.indicatorLabel = indicatorLabel; - shapes.indicatorLabelPoint = indicatorLabelPoint; - this._firstShowIndicator = true; - }; - ContinuousView2.prototype._dragHandle = function(handleIndex, isEnd, dx, dy) { - if (!this._useHandle) { - return; - } - this._dragging = !isEnd; - if (!isEnd) { - var vertex = this._applyTransform([dx, dy], this._shapes.mainGroup, true); - this._updateInterval(handleIndex, vertex[1]); - this._hideIndicator(); - this._updateView(); - } - if (isEnd === !this.visualMapModel.get("realtime")) { - this.api.dispatchAction({ - type: "selectDataRange", - from: this.uid, - visualMapId: this.visualMapModel.id, - selected: this._dataInterval.slice() - }); - } - if (isEnd) { - !this._hovering && this._clearHoverLinkToSeries(); - } else if (useHoverLinkOnHandle(this.visualMapModel)) { - this._doHoverLinkToSeries(this._handleEnds[handleIndex], false); - } - }; - ContinuousView2.prototype._resetInterval = function() { - var visualMapModel = this.visualMapModel; - var dataInterval = this._dataInterval = visualMapModel.getSelected(); - var dataExtent = visualMapModel.getExtent(); - var sizeExtent = [0, visualMapModel.itemSize[1]]; - this._handleEnds = [linearMap3(dataInterval[0], dataExtent, sizeExtent, true), linearMap3(dataInterval[1], dataExtent, sizeExtent, true)]; - }; - ContinuousView2.prototype._updateInterval = function(handleIndex, delta) { - delta = delta || 0; - var visualMapModel = this.visualMapModel; - var handleEnds = this._handleEnds; - var sizeExtent = [0, visualMapModel.itemSize[1]]; - sliderMove( - delta, - handleEnds, - sizeExtent, - handleIndex, - // cross is forbidden - 0 - ); - var dataExtent = visualMapModel.getExtent(); - this._dataInterval = [linearMap3(handleEnds[0], sizeExtent, dataExtent, true), linearMap3(handleEnds[1], sizeExtent, dataExtent, true)]; - }; - ContinuousView2.prototype._updateView = function(forSketch) { - var visualMapModel = this.visualMapModel; - var dataExtent = visualMapModel.getExtent(); - var shapes = this._shapes; - var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]]; - var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds; - var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, "inRange"); - var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, "outOfRange"); - shapes.inRange.setStyle({ - fill: visualInRange.barColor - // opacity: visualInRange.opacity - }).setShape("points", visualInRange.barPoints); - shapes.outOfRange.setStyle({ - fill: visualOutOfRange.barColor - // opacity: visualOutOfRange.opacity - }).setShape("points", visualOutOfRange.barPoints); - this._updateHandle(inRangeHandleEnds, visualInRange); - }; - ContinuousView2.prototype._createBarVisual = function(dataInterval, dataExtent, handleEnds, forceState) { - var opts = { - forceState, - convertOpacityToAlpha: true - }; - var colorStops = this._makeColorGradient(dataInterval, opts); - var symbolSizes = [this.getControllerVisual(dataInterval[0], "symbolSize", opts), this.getControllerVisual(dataInterval[1], "symbolSize", opts)]; - var barPoints = this._createBarPoints(handleEnds, symbolSizes); - return { - barColor: new LinearGradient_default(0, 0, 0, 1, colorStops), - barPoints, - handlesColor: [colorStops[0].color, colorStops[colorStops.length - 1].color] - }; - }; - ContinuousView2.prototype._makeColorGradient = function(dataInterval, opts) { - var sampleNumber = 100; - var colorStops = []; - var step = (dataInterval[1] - dataInterval[0]) / sampleNumber; - colorStops.push({ - color: this.getControllerVisual(dataInterval[0], "color", opts), - offset: 0 - }); - for (var i = 1; i < sampleNumber; i++) { - var currValue = dataInterval[0] + step * i; - if (currValue > dataInterval[1]) { - break; - } - colorStops.push({ - color: this.getControllerVisual(currValue, "color", opts), - offset: i / sampleNumber - }); - } - colorStops.push({ - color: this.getControllerVisual(dataInterval[1], "color", opts), - offset: 1 - }); - return colorStops; - }; - ContinuousView2.prototype._createBarPoints = function(handleEnds, symbolSizes) { - var itemSize = this.visualMapModel.itemSize; - return [[itemSize[0] - symbolSizes[0], handleEnds[0]], [itemSize[0], handleEnds[0]], [itemSize[0], handleEnds[1]], [itemSize[0] - symbolSizes[1], handleEnds[1]]]; - }; - ContinuousView2.prototype._createBarGroup = function(itemAlign) { - var orient = this._orient; - var inverse = this.visualMapModel.get("inverse"); - return new Group_default(orient === "horizontal" && !inverse ? { - scaleX: itemAlign === "bottom" ? 1 : -1, - rotation: Math.PI / 2 - } : orient === "horizontal" && inverse ? { - scaleX: itemAlign === "bottom" ? -1 : 1, - rotation: -Math.PI / 2 - } : orient === "vertical" && !inverse ? { - scaleX: itemAlign === "left" ? 1 : -1, - scaleY: -1 - } : { - scaleX: itemAlign === "left" ? 1 : -1 - }); - }; - ContinuousView2.prototype._updateHandle = function(handleEnds, visualInRange) { - if (!this._useHandle) { - return; - } - var shapes = this._shapes; - var visualMapModel = this.visualMapModel; - var handleThumbs = shapes.handleThumbs; - var handleLabels = shapes.handleLabels; - var itemSize = visualMapModel.itemSize; - var dataExtent = visualMapModel.getExtent(); - var align = this._applyTransform("left", shapes.mainGroup); - each15([0, 1], function(handleIndex) { - var handleThumb = handleThumbs[handleIndex]; - handleThumb.setStyle("fill", visualInRange.handlesColor[handleIndex]); - handleThumb.y = handleEnds[handleIndex]; - var val = linearMap3(handleEnds[handleIndex], [0, itemSize[1]], dataExtent, true); - var symbolSize = this.getControllerVisual(val, "symbolSize"); - handleThumb.scaleX = handleThumb.scaleY = symbolSize / itemSize[0]; - handleThumb.x = itemSize[0] - symbolSize / 2; - var textPoint = applyTransform2(shapes.handleLabelPoints[handleIndex], getTransform(handleThumb, this.group)); - if (this._orient === "horizontal") { - var minimumOffset = align === "left" || align === "top" ? (itemSize[0] - symbolSize) / 2 : (itemSize[0] - symbolSize) / -2; - textPoint[1] += minimumOffset; - } - handleLabels[handleIndex].setStyle({ - x: textPoint[0], - y: textPoint[1], - text: visualMapModel.formatValueText(this._dataInterval[handleIndex]), - verticalAlign: "middle", - align: this._orient === "vertical" ? this._applyTransform("left", shapes.mainGroup) : "center" - }); - }, this); - }; - ContinuousView2.prototype._showIndicator = function(cursorValue, textValue, rangeSymbol, halfHoverLinkSize) { - var visualMapModel = this.visualMapModel; - var dataExtent = visualMapModel.getExtent(); - var itemSize = visualMapModel.itemSize; - var sizeExtent = [0, itemSize[1]]; - var shapes = this._shapes; - var indicator = shapes.indicator; - if (!indicator) { - return; - } - indicator.attr("invisible", false); - var opts = { - convertOpacityToAlpha: true - }; - var color = this.getControllerVisual(cursorValue, "color", opts); - var symbolSize = this.getControllerVisual(cursorValue, "symbolSize"); - var y = linearMap3(cursorValue, dataExtent, sizeExtent, true); - var x = itemSize[0] - symbolSize / 2; - var oldIndicatorPos = { - x: indicator.x, - y: indicator.y - }; - indicator.y = y; - indicator.x = x; - var textPoint = applyTransform2(shapes.indicatorLabelPoint, getTransform(indicator, this.group)); - var indicatorLabel = shapes.indicatorLabel; - indicatorLabel.attr("invisible", false); - var align = this._applyTransform("left", shapes.mainGroup); - var orient = this._orient; - var isHorizontal = orient === "horizontal"; - indicatorLabel.setStyle({ - text: (rangeSymbol ? rangeSymbol : "") + visualMapModel.formatValueText(textValue), - verticalAlign: isHorizontal ? align : "middle", - align: isHorizontal ? "center" : align - }); - var indicatorNewProps = { - x, - y, - style: { - fill: color - } - }; - var labelNewProps = { - style: { - x: textPoint[0], - y: textPoint[1] - } - }; - if (visualMapModel.ecModel.isAnimationEnabled() && !this._firstShowIndicator) { - var animationCfg = { - duration: 100, - easing: "cubicInOut", - additive: true - }; - indicator.x = oldIndicatorPos.x; - indicator.y = oldIndicatorPos.y; - indicator.animateTo(indicatorNewProps, animationCfg); - indicatorLabel.animateTo(labelNewProps, animationCfg); - } else { - indicator.attr(indicatorNewProps); - indicatorLabel.attr(labelNewProps); - } - this._firstShowIndicator = false; - var handleLabels = this._shapes.handleLabels; - if (handleLabels) { - for (var i = 0; i < handleLabels.length; i++) { - this.api.enterBlur(handleLabels[i]); - } - } - }; - ContinuousView2.prototype._enableHoverLinkToSeries = function() { - var self2 = this; - this._shapes.mainGroup.on("mousemove", function(e2) { - self2._hovering = true; - if (!self2._dragging) { - var itemSize = self2.visualMapModel.itemSize; - var pos = self2._applyTransform([e2.offsetX, e2.offsetY], self2._shapes.mainGroup, true, true); - pos[1] = mathMin11(mathMax11(0, pos[1]), itemSize[1]); - self2._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]); - } - }).on("mouseout", function() { - self2._hovering = false; - !self2._dragging && self2._clearHoverLinkToSeries(); - }); - }; - ContinuousView2.prototype._enableHoverLinkFromSeries = function() { - var zr = this.api.getZr(); - if (this.visualMapModel.option.hoverLink) { - zr.on("mouseover", this._hoverLinkFromSeriesMouseOver, this); - zr.on("mouseout", this._hideIndicator, this); - } else { - this._clearHoverLinkFromSeries(); - } - }; - ContinuousView2.prototype._doHoverLinkToSeries = function(cursorPos, hoverOnBar) { - var visualMapModel = this.visualMapModel; - var itemSize = visualMapModel.itemSize; - if (!visualMapModel.option.hoverLink) { - return; - } - var sizeExtent = [0, itemSize[1]]; - var dataExtent = visualMapModel.getExtent(); - cursorPos = mathMin11(mathMax11(sizeExtent[0], cursorPos), sizeExtent[1]); - var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent); - var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize]; - var cursorValue = linearMap3(cursorPos, sizeExtent, dataExtent, true); - var valueRange = [linearMap3(hoverRange[0], sizeExtent, dataExtent, true), linearMap3(hoverRange[1], sizeExtent, dataExtent, true)]; - hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity); - hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity); - if (hoverOnBar) { - if (valueRange[0] === -Infinity) { - this._showIndicator(cursorValue, valueRange[1], "< ", halfHoverLinkSize); - } else if (valueRange[1] === Infinity) { - this._showIndicator(cursorValue, valueRange[0], "> ", halfHoverLinkSize); - } else { - this._showIndicator(cursorValue, cursorValue, "\u2248 ", halfHoverLinkSize); - } - } - var oldBatch = this._hoverLinkDataIndices; - var newBatch = []; - if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) { - newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange); - } - var resultBatches = compressBatches(oldBatch, newBatch); - this._dispatchHighDown("downplay", makeHighDownBatch(resultBatches[0], visualMapModel)); - this._dispatchHighDown("highlight", makeHighDownBatch(resultBatches[1], visualMapModel)); - }; - ContinuousView2.prototype._hoverLinkFromSeriesMouseOver = function(e2) { - var ecData; - findEventDispatcher(e2.target, function(target) { - var currECData = getECData(target); - if (currECData.dataIndex != null) { - ecData = currECData; - return true; - } - }, true); - if (!ecData) { - return; - } - var dataModel = this.ecModel.getSeriesByIndex(ecData.seriesIndex); - var visualMapModel = this.visualMapModel; - if (!visualMapModel.isTargetSeries(dataModel)) { - return; - } - var data = dataModel.getData(ecData.dataType); - var value = data.getStore().get(visualMapModel.getDataDimensionIndex(data), ecData.dataIndex); - if (!isNaN(value)) { - this._showIndicator(value, value); - } - }; - ContinuousView2.prototype._hideIndicator = function() { - var shapes = this._shapes; - shapes.indicator && shapes.indicator.attr("invisible", true); - shapes.indicatorLabel && shapes.indicatorLabel.attr("invisible", true); - var handleLabels = this._shapes.handleLabels; - if (handleLabels) { - for (var i = 0; i < handleLabels.length; i++) { - this.api.leaveBlur(handleLabels[i]); - } - } - }; - ContinuousView2.prototype._clearHoverLinkToSeries = function() { - this._hideIndicator(); - var indices = this._hoverLinkDataIndices; - this._dispatchHighDown("downplay", makeHighDownBatch(indices, this.visualMapModel)); - indices.length = 0; - }; - ContinuousView2.prototype._clearHoverLinkFromSeries = function() { - this._hideIndicator(); - var zr = this.api.getZr(); - zr.off("mouseover", this._hoverLinkFromSeriesMouseOver); - zr.off("mouseout", this._hideIndicator); - }; - ContinuousView2.prototype._applyTransform = function(vertex, element, inverse, global2) { - var transform2 = getTransform(element, global2 ? null : this.group); - return isArray(vertex) ? applyTransform2(vertex, transform2, inverse) : transformDirection(vertex, transform2, inverse); - }; - ContinuousView2.prototype._dispatchHighDown = function(type, batch) { - batch && batch.length && this.api.dispatchAction({ - type, - batch - }); - }; - ContinuousView2.prototype.dispose = function() { - this._clearHoverLinkFromSeries(); - this._clearHoverLinkToSeries(); - }; - ContinuousView2.type = "visualMap.continuous"; - return ContinuousView2; - }(VisualMapView_default) - ); - function createPolygon(points4, cursor, onDrift, onDragEnd) { - return new Polygon_default({ - shape: { - points: points4 - }, - draggable: !!onDrift, - cursor, - drift: onDrift, - onmousemove: function(e2) { - stop(e2.event); - }, - ondragend: onDragEnd - }); - } - function getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) { - var halfHoverLinkSize = HOVER_LINK_SIZE / 2; - var hoverLinkDataSize = visualMapModel.get("hoverLinkDataSize"); - if (hoverLinkDataSize) { - halfHoverLinkSize = linearMap3(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2; - } - return halfHoverLinkSize; - } - function useHoverLinkOnHandle(visualMapModel) { - var hoverLinkOnHandle = visualMapModel.get("hoverLinkOnHandle"); - return !!(hoverLinkOnHandle == null ? visualMapModel.get("realtime") : hoverLinkOnHandle); - } - function getCursor2(orient) { - return orient === "vertical" ? "ns-resize" : "ew-resize"; - } - var ContinuousView_default = ContinuousView; - - // node_modules/echarts/lib/component/visualMap/visualMapAction.js - var visualMapActionInfo = { - type: "selectDataRange", - event: "dataRangeSelected", - // FIXME use updateView appears wrong - update: "update" - }; - var visualMapActionHander = function(payload, ecModel) { - ecModel.eachComponent({ - mainType: "visualMap", - query: payload - }, function(model) { - model.setSelected(payload.selected); - }); - }; - - // node_modules/echarts/lib/component/visualMap/visualEncoding.js - var visualMapEncodingHandlers = [ - { - createOnAllSeries: true, - reset: function(seriesModel, ecModel) { - var resetDefines = []; - ecModel.eachComponent("visualMap", function(visualMapModel) { - var pipelineContext = seriesModel.pipelineContext; - if (!visualMapModel.isTargetSeries(seriesModel) || pipelineContext && pipelineContext.large) { - return; - } - resetDefines.push(incrementalApplyVisual(visualMapModel.stateList, visualMapModel.targetVisuals, bind(visualMapModel.getValueState, visualMapModel), visualMapModel.getDataDimensionIndex(seriesModel.getData()))); - }); - return resetDefines; - } - }, - // Only support color. - { - createOnAllSeries: true, - reset: function(seriesModel, ecModel) { - var data = seriesModel.getData(); - var visualMetaList = []; - ecModel.eachComponent("visualMap", function(visualMapModel) { - if (visualMapModel.isTargetSeries(seriesModel)) { - var visualMeta = visualMapModel.getVisualMeta(bind(getColorVisual, null, seriesModel, visualMapModel)) || { - stops: [], - outerColors: [] - }; - var dimIdx = visualMapModel.getDataDimensionIndex(data); - if (dimIdx >= 0) { - visualMeta.dimension = dimIdx; - visualMetaList.push(visualMeta); - } - } - }); - seriesModel.getData().setVisual("visualMeta", visualMetaList); - } - } - ]; - function getColorVisual(seriesModel, visualMapModel, value, valueState) { - var mappings = visualMapModel.targetVisuals[valueState]; - var visualTypes = VisualMapping_default.prepareVisualTypes(mappings); - var resultVisual = { - color: getVisualFromData(seriesModel.getData(), "color") - // default color. - }; - for (var i = 0, len2 = visualTypes.length; i < len2; i++) { - var type = visualTypes[i]; - var mapping = mappings[type === "opacity" ? "__alphaForOpacity" : type]; - mapping && mapping.applyVisual(value, getVisual, setVisual); - } - return resultVisual.color; - function getVisual(key) { - return resultVisual[key]; - } - function setVisual(key, value2) { - resultVisual[key] = value2; - } - } - - // node_modules/echarts/lib/component/visualMap/preprocessor.js - var each16 = each; - function visualMapPreprocessor(option) { - var visualMap = option && option.visualMap; - if (!isArray(visualMap)) { - visualMap = visualMap ? [visualMap] : []; - } - each16(visualMap, function(opt) { - if (!opt) { - return; - } - if (has2(opt, "splitList") && !has2(opt, "pieces")) { - opt.pieces = opt.splitList; - delete opt.splitList; - } - var pieces = opt.pieces; - if (pieces && isArray(pieces)) { - each16(pieces, function(piece) { - if (isObject(piece)) { - if (has2(piece, "start") && !has2(piece, "min")) { - piece.min = piece.start; - } - if (has2(piece, "end") && !has2(piece, "max")) { - piece.max = piece.end; - } - } - }); - } - }); - } - function has2(obj, name) { - return obj && obj.hasOwnProperty && obj.hasOwnProperty(name); - } - - // node_modules/echarts/lib/component/visualMap/installCommon.js - var installed2 = false; - function installCommon2(registers) { - if (installed2) { - return; - } - installed2 = true; - registers.registerSubTypeDefaulter("visualMap", function(option) { - return !option.categories && (!(option.pieces ? option.pieces.length > 0 : option.splitNumber > 0) || option.calculable) ? "continuous" : "piecewise"; - }); - registers.registerAction(visualMapActionInfo, visualMapActionHander); - each(visualMapEncodingHandlers, function(handler) { - registers.registerVisual(registers.PRIORITY.VISUAL.COMPONENT, handler); - }); - registers.registerPreprocessor(visualMapPreprocessor); - } - - // node_modules/echarts/lib/component/visualMap/installVisualMapContinuous.js - function install50(registers) { - registers.registerComponentModel(ContinuousModel_default); - registers.registerComponentView(ContinuousView_default); - installCommon2(registers); - } - - // node_modules/echarts/lib/component/visualMap/PiecewiseModel.js - var PiecewiseModel = ( - /** @class */ - function(_super) { - __extends(PiecewiseModel2, _super); - function PiecewiseModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = PiecewiseModel2.type; - _this._pieceList = []; - return _this; - } - PiecewiseModel2.prototype.optionUpdated = function(newOption, isInit) { - _super.prototype.optionUpdated.apply(this, arguments); - this.resetExtent(); - var mode = this._mode = this._determineMode(); - this._pieceList = []; - resetMethods[this._mode].call(this, this._pieceList); - this._resetSelected(newOption, isInit); - var categories = this.option.categories; - this.resetVisual(function(mappingOption, state) { - if (mode === "categories") { - mappingOption.mappingMethod = "category"; - mappingOption.categories = clone(categories); - } else { - mappingOption.dataExtent = this.getExtent(); - mappingOption.mappingMethod = "piecewise"; - mappingOption.pieceList = map(this._pieceList, function(piece) { - piece = clone(piece); - if (state !== "inRange") { - piece.visual = null; - } - return piece; - }); - } - }); - }; - PiecewiseModel2.prototype.completeVisualOption = function() { - var option = this.option; - var visualTypesInPieces = {}; - var visualTypes = VisualMapping_default.listVisualTypes(); - var isCategory2 = this.isCategory(); - each(option.pieces, function(piece) { - each(visualTypes, function(visualType) { - if (piece.hasOwnProperty(visualType)) { - visualTypesInPieces[visualType] = 1; - } - }); - }); - each(visualTypesInPieces, function(v, visualType) { - var exists = false; - each(this.stateList, function(state) { - exists = exists || has3(option, state, visualType) || has3(option.target, state, visualType); - }, this); - !exists && each(this.stateList, function(state) { - (option[state] || (option[state] = {}))[visualType] = visualDefault_default.get(visualType, state === "inRange" ? "active" : "inactive", isCategory2); - }); - }, this); - function has3(obj, state, visualType) { - return obj && obj[state] && obj[state].hasOwnProperty(visualType); - } - _super.prototype.completeVisualOption.apply(this, arguments); - }; - PiecewiseModel2.prototype._resetSelected = function(newOption, isInit) { - var thisOption = this.option; - var pieceList = this._pieceList; - var selected = (isInit ? thisOption : newOption).selected || {}; - thisOption.selected = selected; - each(pieceList, function(piece, index) { - var key = this.getSelectedMapKey(piece); - if (!selected.hasOwnProperty(key)) { - selected[key] = true; - } - }, this); - if (thisOption.selectedMode === "single") { - var hasSel_1 = false; - each(pieceList, function(piece, index) { - var key = this.getSelectedMapKey(piece); - if (selected[key]) { - hasSel_1 ? selected[key] = false : hasSel_1 = true; - } - }, this); - } - }; - PiecewiseModel2.prototype.getItemSymbol = function() { - return this.get("itemSymbol"); - }; - PiecewiseModel2.prototype.getSelectedMapKey = function(piece) { - return this._mode === "categories" ? piece.value + "" : piece.index + ""; - }; - PiecewiseModel2.prototype.getPieceList = function() { - return this._pieceList; - }; - PiecewiseModel2.prototype._determineMode = function() { - var option = this.option; - return option.pieces && option.pieces.length > 0 ? "pieces" : this.option.categories ? "categories" : "splitNumber"; - }; - PiecewiseModel2.prototype.setSelected = function(selected) { - this.option.selected = clone(selected); - }; - PiecewiseModel2.prototype.getValueState = function(value) { - var index = VisualMapping_default.findPieceIndex(value, this._pieceList); - return index != null ? this.option.selected[this.getSelectedMapKey(this._pieceList[index])] ? "inRange" : "outOfRange" : "outOfRange"; - }; - PiecewiseModel2.prototype.findTargetDataIndices = function(pieceIndex) { - var result = []; - var pieceList = this._pieceList; - this.eachTargetSeries(function(seriesModel) { - var dataIndices = []; - var data = seriesModel.getData(); - data.each(this.getDataDimensionIndex(data), function(value, dataIndex) { - var pIdx = VisualMapping_default.findPieceIndex(value, pieceList); - pIdx === pieceIndex && dataIndices.push(dataIndex); - }, this); - result.push({ - seriesId: seriesModel.id, - dataIndex: dataIndices - }); - }, this); - return result; - }; - PiecewiseModel2.prototype.getRepresentValue = function(piece) { - var representValue; - if (this.isCategory()) { - representValue = piece.value; - } else { - if (piece.value != null) { - representValue = piece.value; - } else { - var pieceInterval = piece.interval || []; - representValue = pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity ? 0 : (pieceInterval[0] + pieceInterval[1]) / 2; - } - } - return representValue; - }; - PiecewiseModel2.prototype.getVisualMeta = function(getColorVisual2) { - if (this.isCategory()) { - return; - } - var stops = []; - var outerColors = ["", ""]; - var visualMapModel = this; - function setStop(interval, valueState) { - var representValue = visualMapModel.getRepresentValue({ - interval - }); - if (!valueState) { - valueState = visualMapModel.getValueState(representValue); - } - var color = getColorVisual2(representValue, valueState); - if (interval[0] === -Infinity) { - outerColors[0] = color; - } else if (interval[1] === Infinity) { - outerColors[1] = color; - } else { - stops.push({ - value: interval[0], - color - }, { - value: interval[1], - color - }); - } - } - var pieceList = this._pieceList.slice(); - if (!pieceList.length) { - pieceList.push({ - interval: [-Infinity, Infinity] - }); - } else { - var edge = pieceList[0].interval[0]; - edge !== -Infinity && pieceList.unshift({ - interval: [-Infinity, edge] - }); - edge = pieceList[pieceList.length - 1].interval[1]; - edge !== Infinity && pieceList.push({ - interval: [edge, Infinity] - }); - } - var curr = -Infinity; - each(pieceList, function(piece) { - var interval = piece.interval; - if (interval) { - interval[0] > curr && setStop([curr, interval[0]], "outOfRange"); - setStop(interval.slice()); - curr = interval[1]; - } - }, this); - return { - stops, - outerColors - }; - }; - PiecewiseModel2.type = "visualMap.piecewise"; - PiecewiseModel2.defaultOption = inheritDefaultOption(VisualMapModel_default.defaultOption, { - selected: null, - minOpen: false, - maxOpen: false, - align: "auto", - itemWidth: 20, - itemHeight: 14, - itemSymbol: "roundRect", - pieces: null, - categories: null, - splitNumber: 5, - selectedMode: "multiple", - itemGap: 10, - hoverLink: true - // Enable hover highlight. - }); - return PiecewiseModel2; - }(VisualMapModel_default) - ); - var resetMethods = { - splitNumber: function(outPieceList) { - var thisOption = this.option; - var precision = Math.min(thisOption.precision, 20); - var dataExtent = this.getExtent(); - var splitNumber = thisOption.splitNumber; - splitNumber = Math.max(parseInt(splitNumber, 10), 1); - thisOption.splitNumber = splitNumber; - var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber; - while (+splitStep.toFixed(precision) !== splitStep && precision < 5) { - precision++; - } - thisOption.precision = precision; - splitStep = +splitStep.toFixed(precision); - if (thisOption.minOpen) { - outPieceList.push({ - interval: [-Infinity, dataExtent[0]], - close: [0, 0] - }); - } - for (var index = 0, curr = dataExtent[0]; index < splitNumber; curr += splitStep, index++) { - var max4 = index === splitNumber - 1 ? dataExtent[1] : curr + splitStep; - outPieceList.push({ - interval: [curr, max4], - close: [1, 1] - }); - } - if (thisOption.maxOpen) { - outPieceList.push({ - interval: [dataExtent[1], Infinity], - close: [0, 0] - }); - } - reformIntervals(outPieceList); - each(outPieceList, function(piece, index2) { - piece.index = index2; - piece.text = this.formatValueText(piece.interval); - }, this); - }, - categories: function(outPieceList) { - var thisOption = this.option; - each(thisOption.categories, function(cate) { - outPieceList.push({ - text: this.formatValueText(cate, true), - value: cate - }); - }, this); - normalizeReverse(thisOption, outPieceList); - }, - pieces: function(outPieceList) { - var thisOption = this.option; - each(thisOption.pieces, function(pieceListItem, index) { - if (!isObject(pieceListItem)) { - pieceListItem = { - value: pieceListItem - }; - } - var item = { - text: "", - index - }; - if (pieceListItem.label != null) { - item.text = pieceListItem.label; - } - if (pieceListItem.hasOwnProperty("value")) { - var value = item.value = pieceListItem.value; - item.interval = [value, value]; - item.close = [1, 1]; - } else { - var interval = item.interval = []; - var close_1 = item.close = [0, 0]; - var closeList = [1, 0, 1]; - var infinityList = [-Infinity, Infinity]; - var useMinMax = []; - for (var lg = 0; lg < 2; lg++) { - var names = [["gte", "gt", "min"], ["lte", "lt", "max"]][lg]; - for (var i = 0; i < 3 && interval[lg] == null; i++) { - interval[lg] = pieceListItem[names[i]]; - close_1[lg] = closeList[i]; - useMinMax[lg] = i === 2; - } - interval[lg] == null && (interval[lg] = infinityList[lg]); - } - useMinMax[0] && interval[1] === Infinity && (close_1[0] = 0); - useMinMax[1] && interval[0] === -Infinity && (close_1[1] = 0); - if (true) { - if (interval[0] > interval[1]) { - console.warn("Piece " + index + "is illegal: " + interval + " lower bound should not greater then uppper bound."); - } - } - if (interval[0] === interval[1] && close_1[0] && close_1[1]) { - item.value = interval[0]; - } - } - item.visual = VisualMapping_default.retrieveVisuals(pieceListItem); - outPieceList.push(item); - }, this); - normalizeReverse(thisOption, outPieceList); - reformIntervals(outPieceList); - each(outPieceList, function(piece) { - var close = piece.close; - var edgeSymbols = [["<", "\u2264"][close[1]], [">", "\u2265"][close[0]]]; - piece.text = piece.text || this.formatValueText(piece.value != null ? piece.value : piece.interval, false, edgeSymbols); - }, this); - } - }; - function normalizeReverse(thisOption, pieceList) { - var inverse = thisOption.inverse; - if (thisOption.orient === "vertical" ? !inverse : inverse) { - pieceList.reverse(); - } - } - var PiecewiseModel_default = PiecewiseModel; - - // node_modules/echarts/lib/component/visualMap/PiecewiseView.js - var PiecewiseVisualMapView = ( - /** @class */ - function(_super) { - __extends(PiecewiseVisualMapView2, _super); - function PiecewiseVisualMapView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = PiecewiseVisualMapView2.type; - return _this; - } - PiecewiseVisualMapView2.prototype.doRender = function() { - var thisGroup = this.group; - thisGroup.removeAll(); - var visualMapModel = this.visualMapModel; - var textGap = visualMapModel.get("textGap"); - var textStyleModel = visualMapModel.textStyleModel; - var textFont = textStyleModel.getFont(); - var textFill = textStyleModel.getTextColor(); - var itemAlign = this._getItemAlign(); - var itemSize = visualMapModel.itemSize; - var viewData = this._getViewData(); - var endsText = viewData.endsText; - var showLabel = retrieve(visualMapModel.get("showLabel", true), !endsText); - var silent = !visualMapModel.get("selectedMode"); - endsText && this._renderEndsText(thisGroup, endsText[0], itemSize, showLabel, itemAlign); - each(viewData.viewPieceList, function(item) { - var piece = item.piece; - var itemGroup = new Group_default(); - itemGroup.onclick = bind(this._onItemClick, this, piece); - this._enableHoverLink(itemGroup, item.indexInModelPieceList); - var representValue = visualMapModel.getRepresentValue(piece); - this._createItemSymbol(itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]], silent); - if (showLabel) { - var visualState = this.visualMapModel.getValueState(representValue); - itemGroup.add(new Text_default({ - style: { - x: itemAlign === "right" ? -textGap : itemSize[0] + textGap, - y: itemSize[1] / 2, - text: piece.text, - verticalAlign: "middle", - align: itemAlign, - font: textFont, - fill: textFill, - opacity: visualState === "outOfRange" ? 0.5 : 1 - }, - silent - })); - } - thisGroup.add(itemGroup); - }, this); - endsText && this._renderEndsText(thisGroup, endsText[1], itemSize, showLabel, itemAlign); - box(visualMapModel.get("orient"), thisGroup, visualMapModel.get("itemGap")); - this.renderBackground(thisGroup); - this.positionGroup(thisGroup); - }; - PiecewiseVisualMapView2.prototype._enableHoverLink = function(itemGroup, pieceIndex) { - var _this = this; - itemGroup.on("mouseover", function() { - return onHoverLink("highlight"); - }).on("mouseout", function() { - return onHoverLink("downplay"); - }); - var onHoverLink = function(method) { - var visualMapModel = _this.visualMapModel; - visualMapModel.option.hoverLink && _this.api.dispatchAction({ - type: method, - batch: makeHighDownBatch(visualMapModel.findTargetDataIndices(pieceIndex), visualMapModel) - }); - }; - }; - PiecewiseVisualMapView2.prototype._getItemAlign = function() { - var visualMapModel = this.visualMapModel; - var modelOption = visualMapModel.option; - if (modelOption.orient === "vertical") { - return getItemAlign(visualMapModel, this.api, visualMapModel.itemSize); - } else { - var align = modelOption.align; - if (!align || align === "auto") { - align = "left"; - } - return align; - } - }; - PiecewiseVisualMapView2.prototype._renderEndsText = function(group, text, itemSize, showLabel, itemAlign) { - if (!text) { - return; - } - var itemGroup = new Group_default(); - var textStyleModel = this.visualMapModel.textStyleModel; - itemGroup.add(new Text_default({ - style: createTextStyle(textStyleModel, { - x: showLabel ? itemAlign === "right" ? itemSize[0] : 0 : itemSize[0] / 2, - y: itemSize[1] / 2, - verticalAlign: "middle", - align: showLabel ? itemAlign : "center", - text - }) - })); - group.add(itemGroup); - }; - PiecewiseVisualMapView2.prototype._getViewData = function() { - var visualMapModel = this.visualMapModel; - var viewPieceList = map(visualMapModel.getPieceList(), function(piece, index) { - return { - piece, - indexInModelPieceList: index - }; - }); - var endsText = visualMapModel.get("text"); - var orient = visualMapModel.get("orient"); - var inverse = visualMapModel.get("inverse"); - if (orient === "horizontal" ? inverse : !inverse) { - viewPieceList.reverse(); - } else if (endsText) { - endsText = endsText.slice().reverse(); - } - return { - viewPieceList, - endsText - }; - }; - PiecewiseVisualMapView2.prototype._createItemSymbol = function(group, representValue, shapeParam, silent) { - var itemSymbol = createSymbol( - // symbol will be string - this.getControllerVisual(representValue, "symbol"), - shapeParam[0], - shapeParam[1], - shapeParam[2], - shapeParam[3], - // color will be string - this.getControllerVisual(representValue, "color") - ); - itemSymbol.silent = silent; - group.add(itemSymbol); - }; - PiecewiseVisualMapView2.prototype._onItemClick = function(piece) { - var visualMapModel = this.visualMapModel; - var option = visualMapModel.option; - var selectedMode = option.selectedMode; - if (!selectedMode) { - return; - } - var selected = clone(option.selected); - var newKey = visualMapModel.getSelectedMapKey(piece); - if (selectedMode === "single" || selectedMode === true) { - selected[newKey] = true; - each(selected, function(o, key) { - selected[key] = key === newKey; - }); - } else { - selected[newKey] = !selected[newKey]; - } - this.api.dispatchAction({ - type: "selectDataRange", - from: this.uid, - visualMapId: this.visualMapModel.id, - selected - }); - }; - PiecewiseVisualMapView2.type = "visualMap.piecewise"; - return PiecewiseVisualMapView2; - }(VisualMapView_default) - ); - var PiecewiseView_default = PiecewiseVisualMapView; - - // node_modules/echarts/lib/component/visualMap/installVisualMapPiecewise.js - function install51(registers) { - registers.registerComponentModel(PiecewiseModel_default); - registers.registerComponentView(PiecewiseView_default); - installCommon2(registers); - } - - // node_modules/echarts/lib/component/visualMap/install.js - function install52(registers) { - use(install50); - use(install51); - } - - // node_modules/echarts/lib/visual/aria.js - var DEFAULT_OPTION = { - label: { - enabled: true - }, - decal: { - show: false - } - }; - var inner22 = makeInner(); - var decalPaletteScope = {}; - function ariaVisual(ecModel, api) { - var ariaModel = ecModel.getModel("aria"); - if (!ariaModel.get("enabled")) { - return; - } - var defaultOption3 = clone(DEFAULT_OPTION); - merge(defaultOption3.label, ecModel.getLocaleModel().get("aria"), false); - merge(ariaModel.option, defaultOption3, false); - setDecal(); - setLabel(); - function setDecal() { - var decalModel = ariaModel.getModel("decal"); - var useDecal = decalModel.get("show"); - if (useDecal) { - var paletteScopeGroupByType_1 = createHashMap(); - ecModel.eachSeries(function(seriesModel) { - if (seriesModel.isColorBySeries()) { - return; - } - var decalScope = paletteScopeGroupByType_1.get(seriesModel.type); - if (!decalScope) { - decalScope = {}; - paletteScopeGroupByType_1.set(seriesModel.type, decalScope); - } - inner22(seriesModel).scope = decalScope; - }); - ecModel.eachRawSeries(function(seriesModel) { - if (ecModel.isSeriesFiltered(seriesModel)) { - return; - } - if (isFunction(seriesModel.enableAriaDecal)) { - seriesModel.enableAriaDecal(); - return; - } - var data = seriesModel.getData(); - if (!seriesModel.isColorBySeries()) { - var dataAll_1 = seriesModel.getRawData(); - var idxMap_1 = {}; - var decalScope_1 = inner22(seriesModel).scope; - data.each(function(idx) { - var rawIdx = data.getRawIndex(idx); - idxMap_1[rawIdx] = idx; - }); - var dataCount_1 = dataAll_1.count(); - dataAll_1.each(function(rawIdx) { - var idx = idxMap_1[rawIdx]; - var name = dataAll_1.getName(rawIdx) || rawIdx + ""; - var paletteDecal2 = getDecalFromPalette(seriesModel.ecModel, name, decalScope_1, dataCount_1); - var specifiedDecal2 = data.getItemVisual(idx, "decal"); - data.setItemVisual(idx, "decal", mergeDecal(specifiedDecal2, paletteDecal2)); - }); - } else { - var paletteDecal = getDecalFromPalette(seriesModel.ecModel, seriesModel.name, decalPaletteScope, ecModel.getSeriesCount()); - var specifiedDecal = data.getVisual("decal"); - data.setVisual("decal", mergeDecal(specifiedDecal, paletteDecal)); - } - function mergeDecal(specifiedDecal2, paletteDecal2) { - var resultDecal = specifiedDecal2 ? extend(extend({}, paletteDecal2), specifiedDecal2) : paletteDecal2; - resultDecal.dirty = true; - return resultDecal; - } - }); - } - } - function setLabel() { - var dom = api.getZr().dom; - if (!dom) { - return; - } - var labelLocale = ecModel.getLocaleModel().get("aria"); - var labelModel = ariaModel.getModel("label"); - labelModel.option = defaults(labelModel.option, labelLocale); - if (!labelModel.get("enabled")) { - return; - } - dom.setAttribute("role", "img"); - if (labelModel.get("description")) { - dom.setAttribute("aria-label", labelModel.get("description")); - return; - } - var seriesCnt = ecModel.getSeriesCount(); - var maxDataCnt = labelModel.get(["data", "maxCount"]) || 10; - var maxSeriesCnt = labelModel.get(["series", "maxCount"]) || 10; - var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt); - var ariaLabel; - if (seriesCnt < 1) { - return; - } else { - var title = getTitle(); - if (title) { - var withTitle = labelModel.get(["general", "withTitle"]); - ariaLabel = replace(withTitle, { - title - }); - } else { - ariaLabel = labelModel.get(["general", "withoutTitle"]); - } - var seriesLabels_1 = []; - var prefix = seriesCnt > 1 ? labelModel.get(["series", "multiple", "prefix"]) : labelModel.get(["series", "single", "prefix"]); - ariaLabel += replace(prefix, { - seriesCount: seriesCnt - }); - ecModel.eachSeries(function(seriesModel, idx) { - if (idx < displaySeriesCnt) { - var seriesLabel = void 0; - var seriesName = seriesModel.get("name"); - var withName = seriesName ? "withName" : "withoutName"; - seriesLabel = seriesCnt > 1 ? labelModel.get(["series", "multiple", withName]) : labelModel.get(["series", "single", withName]); - seriesLabel = replace(seriesLabel, { - seriesId: seriesModel.seriesIndex, - seriesName: seriesModel.get("name"), - seriesType: getSeriesTypeName(seriesModel.subType) - }); - var data = seriesModel.getData(); - if (data.count() > maxDataCnt) { - var partialLabel = labelModel.get(["data", "partialData"]); - seriesLabel += replace(partialLabel, { - displayCnt: maxDataCnt - }); - } else { - seriesLabel += labelModel.get(["data", "allData"]); - } - var middleSeparator_1 = labelModel.get(["data", "separator", "middle"]); - var endSeparator_1 = labelModel.get(["data", "separator", "end"]); - var excludeDimensionId_1 = labelModel.get(["data", "excludeDimensionId"]); - var dataLabels = []; - for (var i = 0; i < data.count(); i++) { - if (i < maxDataCnt) { - var name_1 = data.getName(i); - var value = !excludeDimensionId_1 ? data.getValues(i) : filter(data.getValues(i), function(v, j) { - return indexOf(excludeDimensionId_1, j) === -1; - }); - var dataLabel = labelModel.get(["data", name_1 ? "withName" : "withoutName"]); - dataLabels.push(replace(dataLabel, { - name: name_1, - value: value.join(middleSeparator_1) - })); - } - } - seriesLabel += dataLabels.join(middleSeparator_1) + endSeparator_1; - seriesLabels_1.push(seriesLabel); - } - }); - var separatorModel = labelModel.getModel(["series", "multiple", "separator"]); - var middleSeparator = separatorModel.get("middle"); - var endSeparator = separatorModel.get("end"); - ariaLabel += seriesLabels_1.join(middleSeparator) + endSeparator; - dom.setAttribute("aria-label", ariaLabel); - } - } - function replace(str, keyValues) { - if (!isString(str)) { - return str; - } - var result = str; - each(keyValues, function(value, key) { - result = result.replace(new RegExp("\\{\\s*" + key + "\\s*\\}", "g"), value); - }); - return result; - } - function getTitle() { - var title = ecModel.get("title"); - if (title && title.length) { - title = title[0]; - } - return title && title.text; - } - function getSeriesTypeName(type) { - var typeNames = ecModel.getLocaleModel().get(["series", "typeNames"]); - return typeNames[type] || typeNames.chart; - } - } - - // node_modules/echarts/lib/component/aria/preprocessor.js - function ariaPreprocessor(option) { - if (!option || !option.aria) { - return; - } - var aria = option.aria; - if (aria.show != null) { - aria.enabled = aria.show; - } - aria.label = aria.label || {}; - each(["description", "general", "series", "data"], function(name) { - if (aria[name] != null) { - aria.label[name] = aria[name]; - } - }); - } - - // node_modules/echarts/lib/component/aria/install.js - function install53(registers) { - registers.registerPreprocessor(ariaPreprocessor); - registers.registerVisual(registers.PRIORITY.VISUAL.ARIA, ariaVisual); - } - - // node_modules/echarts/lib/util/conditionalExpression.js - var RELATIONAL_EXPRESSION_OP_ALIAS_MAP = { - value: "eq", - // PENDING: not good for literal semantic? - "<": "lt", - "<=": "lte", - ">": "gt", - ">=": "gte", - "=": "eq", - "!=": "ne", - "<>": "ne" - // Might be misleading for sake of the difference between '==' and '===', - // so don't support them. - // '==': 'eq', - // '===': 'seq', - // '!==': 'sne' - // PENDING: Whether support some common alias "ge", "le", "neq"? - // ge: 'gte', - // le: 'lte', - // neq: 'ne', - }; - var RegExpEvaluator = ( - /** @class */ - function() { - function RegExpEvaluator2(rVal) { - var condValue = this._condVal = isString(rVal) ? new RegExp(rVal) : isRegExp(rVal) ? rVal : null; - if (condValue == null) { - var errMsg = ""; - if (true) { - errMsg = makePrintable("Illegal regexp", rVal, "in"); - } - throwError(errMsg); - } - } - RegExpEvaluator2.prototype.evaluate = function(lVal) { - var type = typeof lVal; - return isString(type) ? this._condVal.test(lVal) : isNumber(type) ? this._condVal.test(lVal + "") : false; - }; - return RegExpEvaluator2; - }() - ); - var ConstConditionInternal = ( - /** @class */ - function() { - function ConstConditionInternal2() { - } - ConstConditionInternal2.prototype.evaluate = function() { - return this.value; - }; - return ConstConditionInternal2; - }() - ); - var AndConditionInternal = ( - /** @class */ - function() { - function AndConditionInternal2() { - } - AndConditionInternal2.prototype.evaluate = function() { - var children = this.children; - for (var i = 0; i < children.length; i++) { - if (!children[i].evaluate()) { - return false; - } - } - return true; - }; - return AndConditionInternal2; - }() - ); - var OrConditionInternal = ( - /** @class */ - function() { - function OrConditionInternal2() { - } - OrConditionInternal2.prototype.evaluate = function() { - var children = this.children; - for (var i = 0; i < children.length; i++) { - if (children[i].evaluate()) { - return true; - } - } - return false; - }; - return OrConditionInternal2; - }() - ); - var NotConditionInternal = ( - /** @class */ - function() { - function NotConditionInternal2() { - } - NotConditionInternal2.prototype.evaluate = function() { - return !this.child.evaluate(); - }; - return NotConditionInternal2; - }() - ); - var RelationalConditionInternal = ( - /** @class */ - function() { - function RelationalConditionInternal2() { - } - RelationalConditionInternal2.prototype.evaluate = function() { - var needParse = !!this.valueParser; - var getValue = this.getValue; - var tarValRaw = getValue(this.valueGetterParam); - var tarValParsed = needParse ? this.valueParser(tarValRaw) : null; - for (var i = 0; i < this.subCondList.length; i++) { - if (!this.subCondList[i].evaluate(needParse ? tarValParsed : tarValRaw)) { - return false; - } - } - return true; - }; - return RelationalConditionInternal2; - }() - ); - function parseOption(exprOption, getters) { - if (exprOption === true || exprOption === false) { - var cond = new ConstConditionInternal(); - cond.value = exprOption; - return cond; - } - var errMsg = ""; - if (!isObjectNotArray(exprOption)) { - if (true) { - errMsg = makePrintable("Illegal config. Expect a plain object but actually", exprOption); - } - throwError(errMsg); - } - if (exprOption.and) { - return parseAndOrOption("and", exprOption, getters); - } else if (exprOption.or) { - return parseAndOrOption("or", exprOption, getters); - } else if (exprOption.not) { - return parseNotOption(exprOption, getters); - } - return parseRelationalOption(exprOption, getters); - } - function parseAndOrOption(op, exprOption, getters) { - var subOptionArr = exprOption[op]; - var errMsg = ""; - if (true) { - errMsg = makePrintable('"and"/"or" condition should only be `' + op + ": [...]` and must not be empty array.", "Illegal condition:", exprOption); - } - if (!isArray(subOptionArr)) { - throwError(errMsg); - } - if (!subOptionArr.length) { - throwError(errMsg); - } - var cond = op === "and" ? new AndConditionInternal() : new OrConditionInternal(); - cond.children = map(subOptionArr, function(subOption) { - return parseOption(subOption, getters); - }); - if (!cond.children.length) { - throwError(errMsg); - } - return cond; - } - function parseNotOption(exprOption, getters) { - var subOption = exprOption.not; - var errMsg = ""; - if (true) { - errMsg = makePrintable('"not" condition should only be `not: {}`.', "Illegal condition:", exprOption); - } - if (!isObjectNotArray(subOption)) { - throwError(errMsg); - } - var cond = new NotConditionInternal(); - cond.child = parseOption(subOption, getters); - if (!cond.child) { - throwError(errMsg); - } - return cond; - } - function parseRelationalOption(exprOption, getters) { - var errMsg = ""; - var valueGetterParam = getters.prepareGetValue(exprOption); - var subCondList = []; - var exprKeys = keys(exprOption); - var parserName = exprOption.parser; - var valueParser = parserName ? getRawValueParser(parserName) : null; - for (var i = 0; i < exprKeys.length; i++) { - var keyRaw = exprKeys[i]; - if (keyRaw === "parser" || getters.valueGetterAttrMap.get(keyRaw)) { - continue; - } - var op = hasOwn(RELATIONAL_EXPRESSION_OP_ALIAS_MAP, keyRaw) ? RELATIONAL_EXPRESSION_OP_ALIAS_MAP[keyRaw] : keyRaw; - var condValueRaw = exprOption[keyRaw]; - var condValueParsed = valueParser ? valueParser(condValueRaw) : condValueRaw; - var evaluator = createFilterComparator(op, condValueParsed) || op === "reg" && new RegExpEvaluator(condValueParsed); - if (!evaluator) { - if (true) { - errMsg = makePrintable('Illegal relational operation: "' + keyRaw + '" in condition:', exprOption); - } - throwError(errMsg); - } - subCondList.push(evaluator); - } - if (!subCondList.length) { - if (true) { - errMsg = makePrintable("Relational condition must have at least one operator.", "Illegal condition:", exprOption); - } - throwError(errMsg); - } - var cond = new RelationalConditionInternal(); - cond.valueGetterParam = valueGetterParam; - cond.valueParser = valueParser; - cond.getValue = getters.getValue; - cond.subCondList = subCondList; - return cond; - } - function isObjectNotArray(val) { - return isObject(val) && !isArrayLike(val); - } - var ConditionalExpressionParsed = ( - /** @class */ - function() { - function ConditionalExpressionParsed2(exprOption, getters) { - this._cond = parseOption(exprOption, getters); - } - ConditionalExpressionParsed2.prototype.evaluate = function() { - return this._cond.evaluate(); - }; - return ConditionalExpressionParsed2; - }() - ); - function parseConditionalExpression(exprOption, getters) { - return new ConditionalExpressionParsed(exprOption, getters); - } - - // node_modules/echarts/lib/component/transform/filterTransform.js - var filterTransform = { - type: "echarts:filter", - // PENDING: enhance to filter by index rather than create new data - transform: function(params) { - var upstream = params.upstream; - var rawItem; - var condition = parseConditionalExpression(params.config, { - valueGetterAttrMap: createHashMap({ - dimension: true - }), - prepareGetValue: function(exprOption) { - var errMsg = ""; - var dimLoose = exprOption.dimension; - if (!hasOwn(exprOption, "dimension")) { - if (true) { - errMsg = makePrintable('Relation condition must has prop "dimension" specified.', "Illegal condition:", exprOption); - } - throwError(errMsg); - } - var dimInfo = upstream.getDimensionInfo(dimLoose); - if (!dimInfo) { - if (true) { - errMsg = makePrintable("Can not find dimension info via: " + dimLoose + ".\n", "Existing dimensions: ", upstream.cloneAllDimensionInfo(), ".\n", "Illegal condition:", exprOption, ".\n"); - } - throwError(errMsg); - } - return { - dimIdx: dimInfo.index - }; - }, - getValue: function(param) { - return upstream.retrieveValueFromItem(rawItem, param.dimIdx); - } - }); - var resultData = []; - for (var i = 0, len2 = upstream.count(); i < len2; i++) { - rawItem = upstream.getRawDataItem(i); - if (condition.evaluate()) { - resultData.push(rawItem); - } - } - return { - data: resultData - }; - } - }; - - // node_modules/echarts/lib/component/transform/sortTransform.js - var sampleLog = ""; - if (true) { - sampleLog = ["Valid config is like:", '{ dimension: "age", order: "asc" }', 'or [{ dimension: "age", order: "asc"], { dimension: "date", order: "desc" }]'].join(" "); - } - var sortTransform = { - type: "echarts:sort", - transform: function(params) { - var upstream = params.upstream; - var config2 = params.config; - var errMsg = ""; - var orderExprList = normalizeToArray(config2); - if (!orderExprList.length) { - if (true) { - errMsg = "Empty `config` in sort transform."; - } - throwError(errMsg); - } - var orderDefList = []; - each(orderExprList, function(orderExpr) { - var dimLoose = orderExpr.dimension; - var order = orderExpr.order; - var parserName = orderExpr.parser; - var incomparable = orderExpr.incomparable; - if (dimLoose == null) { - if (true) { - errMsg = 'Sort transform config must has "dimension" specified.' + sampleLog; - } - throwError(errMsg); - } - if (order !== "asc" && order !== "desc") { - if (true) { - errMsg = 'Sort transform config must has "order" specified.' + sampleLog; - } - throwError(errMsg); - } - if (incomparable && incomparable !== "min" && incomparable !== "max") { - var errMsg_1 = ""; - if (true) { - errMsg_1 = 'incomparable must be "min" or "max" rather than "' + incomparable + '".'; - } - throwError(errMsg_1); - } - if (order !== "asc" && order !== "desc") { - var errMsg_2 = ""; - if (true) { - errMsg_2 = 'order must be "asc" or "desc" rather than "' + order + '".'; - } - throwError(errMsg_2); - } - var dimInfo = upstream.getDimensionInfo(dimLoose); - if (!dimInfo) { - if (true) { - errMsg = makePrintable("Can not find dimension info via: " + dimLoose + ".\n", "Existing dimensions: ", upstream.cloneAllDimensionInfo(), ".\n", "Illegal config:", orderExpr, ".\n"); - } - throwError(errMsg); - } - var parser = parserName ? getRawValueParser(parserName) : null; - if (parserName && !parser) { - if (true) { - errMsg = makePrintable("Invalid parser name " + parserName + ".\n", "Illegal config:", orderExpr, ".\n"); - } - throwError(errMsg); - } - orderDefList.push({ - dimIdx: dimInfo.index, - parser, - comparator: new SortOrderComparator(order, incomparable) - }); - }); - var sourceFormat = upstream.sourceFormat; - if (sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) { - if (true) { - errMsg = 'sourceFormat "' + sourceFormat + '" is not supported yet'; - } - throwError(errMsg); - } - var resultData = []; - for (var i = 0, len2 = upstream.count(); i < len2; i++) { - resultData.push(upstream.getRawDataItem(i)); - } - resultData.sort(function(item0, item1) { - for (var i2 = 0; i2 < orderDefList.length; i2++) { - var orderDef = orderDefList[i2]; - var val0 = upstream.retrieveValueFromItem(item0, orderDef.dimIdx); - var val1 = upstream.retrieveValueFromItem(item1, orderDef.dimIdx); - if (orderDef.parser) { - val0 = orderDef.parser(val0); - val1 = orderDef.parser(val1); - } - var result = orderDef.comparator.evaluate(val0, val1); - if (result !== 0) { - return result; - } - } - return 0; - }); - return { - data: resultData - }; - } - }; - - // node_modules/echarts/lib/component/transform/install.js - function install54(registers) { - registers.registerTransform(filterTransform); - registers.registerTransform(sortTransform); - } - - // node_modules/echarts/lib/component/dataset/install.js - var DatasetModel = ( - /** @class */ - function(_super) { - __extends(DatasetModel2, _super); - function DatasetModel2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "dataset"; - return _this; - } - DatasetModel2.prototype.init = function(option, parentModel, ecModel) { - _super.prototype.init.call(this, option, parentModel, ecModel); - this._sourceManager = new SourceManager(this); - disableTransformOptionMerge(this); - }; - DatasetModel2.prototype.mergeOption = function(newOption, ecModel) { - _super.prototype.mergeOption.call(this, newOption, ecModel); - disableTransformOptionMerge(this); - }; - DatasetModel2.prototype.optionUpdated = function() { - this._sourceManager.dirty(); - }; - DatasetModel2.prototype.getSourceManager = function() { - return this._sourceManager; - }; - DatasetModel2.type = "dataset"; - DatasetModel2.defaultOption = { - seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN - }; - return DatasetModel2; - }(Component_default) - ); - var DatasetView = ( - /** @class */ - function(_super) { - __extends(DatasetView2, _super); - function DatasetView2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.type = "dataset"; - return _this; - } - DatasetView2.type = "dataset"; - return DatasetView2; - }(Component_default2) - ); - function install55(registers) { - registers.registerComponentModel(DatasetModel); - registers.registerComponentView(DatasetView); - } - - // node_modules/zrender/lib/tool/convertPath.js - var CMD5 = PathProxy_default.CMD; - function aroundEqual(a, b) { - return Math.abs(a - b) < 1e-5; - } - function pathToBezierCurves(path) { - var data = path.data; - var len2 = path.len(); - var bezierArrayGroups = []; - var currentSubpath; - var xi = 0; - var yi = 0; - var x0 = 0; - var y0 = 0; - function createNewSubpath(x, y) { - if (currentSubpath && currentSubpath.length > 2) { - bezierArrayGroups.push(currentSubpath); - } - currentSubpath = [x, y]; - } - function addLine(x02, y02, x12, y12) { - if (!(aroundEqual(x02, x12) && aroundEqual(y02, y12))) { - currentSubpath.push(x02, y02, x12, y12, x12, y12); - } - } - function addArc(startAngle2, endAngle2, cx2, cy2, rx2, ry2) { - var delta = Math.abs(endAngle2 - startAngle2); - var len3 = Math.tan(delta / 4) * 4 / 3; - var dir3 = endAngle2 < startAngle2 ? -1 : 1; - var c1 = Math.cos(startAngle2); - var s1 = Math.sin(startAngle2); - var c2 = Math.cos(endAngle2); - var s2 = Math.sin(endAngle2); - var x12 = c1 * rx2 + cx2; - var y12 = s1 * ry2 + cy2; - var x4 = c2 * rx2 + cx2; - var y4 = s2 * ry2 + cy2; - var hx = rx2 * len3 * dir3; - var hy = ry2 * len3 * dir3; - currentSubpath.push(x12 - hx * s1, y12 + hy * c1, x4 + hx * s2, y4 - hy * c2, x4, y4); - } - var x1; - var y1; - var x2; - var y2; - for (var i = 0; i < len2; ) { - var cmd = data[i++]; - var isFirst = i === 1; - if (isFirst) { - xi = data[i]; - yi = data[i + 1]; - x0 = xi; - y0 = yi; - if (cmd === CMD5.L || cmd === CMD5.C || cmd === CMD5.Q) { - currentSubpath = [x0, y0]; - } - } - switch (cmd) { - case CMD5.M: - xi = x0 = data[i++]; - yi = y0 = data[i++]; - createNewSubpath(x0, y0); - break; - case CMD5.L: - x1 = data[i++]; - y1 = data[i++]; - addLine(xi, yi, x1, y1); - xi = x1; - yi = y1; - break; - case CMD5.C: - currentSubpath.push(data[i++], data[i++], data[i++], data[i++], xi = data[i++], yi = data[i++]); - break; - case CMD5.Q: - x1 = data[i++]; - y1 = data[i++]; - x2 = data[i++]; - y2 = data[i++]; - currentSubpath.push(xi + 2 / 3 * (x1 - xi), yi + 2 / 3 * (y1 - yi), x2 + 2 / 3 * (x1 - x2), y2 + 2 / 3 * (y1 - y2), x2, y2); - xi = x2; - yi = y2; - break; - case CMD5.A: - var cx = data[i++]; - var cy = data[i++]; - var rx = data[i++]; - var ry = data[i++]; - var startAngle = data[i++]; - var endAngle = data[i++] + startAngle; - i += 1; - var anticlockwise = !data[i++]; - x1 = Math.cos(startAngle) * rx + cx; - y1 = Math.sin(startAngle) * ry + cy; - if (isFirst) { - x0 = x1; - y0 = y1; - createNewSubpath(x0, y0); - } else { - addLine(xi, yi, x1, y1); - } - xi = Math.cos(endAngle) * rx + cx; - yi = Math.sin(endAngle) * ry + cy; - var step = (anticlockwise ? -1 : 1) * Math.PI / 2; - for (var angle = startAngle; anticlockwise ? angle > endAngle : angle < endAngle; angle += step) { - var nextAngle = anticlockwise ? Math.max(angle + step, endAngle) : Math.min(angle + step, endAngle); - addArc(angle, nextAngle, cx, cy, rx, ry); - } - break; - case CMD5.R: - x0 = xi = data[i++]; - y0 = yi = data[i++]; - x1 = x0 + data[i++]; - y1 = y0 + data[i++]; - createNewSubpath(x1, y0); - addLine(x1, y0, x1, y1); - addLine(x1, y1, x0, y1); - addLine(x0, y1, x0, y0); - addLine(x0, y0, x1, y0); - break; - case CMD5.Z: - currentSubpath && addLine(xi, yi, x0, y0); - xi = x0; - yi = y0; - break; - } - } - if (currentSubpath && currentSubpath.length > 2) { - bezierArrayGroups.push(currentSubpath); - } - return bezierArrayGroups; - } - function adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, out2, scale4) { - if (aroundEqual(x0, x1) && aroundEqual(y0, y1) && aroundEqual(x2, x3) && aroundEqual(y2, y3)) { - out2.push(x3, y3); - return; - } - var PIXEL_DISTANCE = 2 / scale4; - var PIXEL_DISTANCE_SQR = PIXEL_DISTANCE * PIXEL_DISTANCE; - var dx = x3 - x0; - var dy = y3 - y0; - var d = Math.sqrt(dx * dx + dy * dy); - dx /= d; - dy /= d; - var dx1 = x1 - x0; - var dy1 = y1 - y0; - var dx2 = x2 - x3; - var dy2 = y2 - y3; - var cp1LenSqr = dx1 * dx1 + dy1 * dy1; - var cp2LenSqr = dx2 * dx2 + dy2 * dy2; - if (cp1LenSqr < PIXEL_DISTANCE_SQR && cp2LenSqr < PIXEL_DISTANCE_SQR) { - out2.push(x3, y3); - return; - } - var projLen1 = dx * dx1 + dy * dy1; - var projLen2 = -dx * dx2 - dy * dy2; - var d1Sqr = cp1LenSqr - projLen1 * projLen1; - var d2Sqr = cp2LenSqr - projLen2 * projLen2; - if (d1Sqr < PIXEL_DISTANCE_SQR && projLen1 >= 0 && d2Sqr < PIXEL_DISTANCE_SQR && projLen2 >= 0) { - out2.push(x3, y3); - return; - } - var tmpSegX = []; - var tmpSegY = []; - cubicSubdivide(x0, x1, x2, x3, 0.5, tmpSegX); - cubicSubdivide(y0, y1, y2, y3, 0.5, tmpSegY); - adpativeBezier(tmpSegX[0], tmpSegY[0], tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], tmpSegX[3], tmpSegY[3], out2, scale4); - adpativeBezier(tmpSegX[4], tmpSegY[4], tmpSegX[5], tmpSegY[5], tmpSegX[6], tmpSegY[6], tmpSegX[7], tmpSegY[7], out2, scale4); - } - function pathToPolygons(path, scale4) { - var bezierArrayGroups = pathToBezierCurves(path); - var polygons = []; - scale4 = scale4 || 1; - for (var i = 0; i < bezierArrayGroups.length; i++) { - var beziers = bezierArrayGroups[i]; - var polygon = []; - var x0 = beziers[0]; - var y0 = beziers[1]; - polygon.push(x0, y0); - for (var k = 2; k < beziers.length; ) { - var x1 = beziers[k++]; - var y1 = beziers[k++]; - var x2 = beziers[k++]; - var y2 = beziers[k++]; - var x3 = beziers[k++]; - var y3 = beziers[k++]; - adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, polygon, scale4); - x0 = x3; - y0 = y3; - } - polygons.push(polygon); - } - return polygons; - } - - // node_modules/zrender/lib/tool/dividePath.js - function getDividingGrids(dimSize, rowDim, count2) { - var rowSize = dimSize[rowDim]; - var columnSize = dimSize[1 - rowDim]; - var ratio = Math.abs(rowSize / columnSize); - var rowCount = Math.ceil(Math.sqrt(ratio * count2)); - var columnCount = Math.floor(count2 / rowCount); - if (columnCount === 0) { - columnCount = 1; - rowCount = count2; - } - var grids = []; - for (var i = 0; i < rowCount; i++) { - grids.push(columnCount); - } - var currentCount = rowCount * columnCount; - var remained = count2 - currentCount; - if (remained > 0) { - for (var i = 0; i < remained; i++) { - grids[i % rowCount] += 1; - } - } - return grids; - } - function divideSector(sectorShape, count2, outShapes) { - var r0 = sectorShape.r0; - var r = sectorShape.r; - var startAngle = sectorShape.startAngle; - var endAngle = sectorShape.endAngle; - var angle = Math.abs(endAngle - startAngle); - var arcLen = angle * r; - var deltaR = r - r0; - var isAngleRow = arcLen > Math.abs(deltaR); - var grids = getDividingGrids([arcLen, deltaR], isAngleRow ? 0 : 1, count2); - var rowSize = (isAngleRow ? angle : deltaR) / grids.length; - for (var row = 0; row < grids.length; row++) { - var columnSize = (isAngleRow ? deltaR : angle) / grids[row]; - for (var column = 0; column < grids[row]; column++) { - var newShape = {}; - if (isAngleRow) { - newShape.startAngle = startAngle + rowSize * row; - newShape.endAngle = startAngle + rowSize * (row + 1); - newShape.r0 = r0 + columnSize * column; - newShape.r = r0 + columnSize * (column + 1); - } else { - newShape.startAngle = startAngle + columnSize * column; - newShape.endAngle = startAngle + columnSize * (column + 1); - newShape.r0 = r0 + rowSize * row; - newShape.r = r0 + rowSize * (row + 1); - } - newShape.clockwise = sectorShape.clockwise; - newShape.cx = sectorShape.cx; - newShape.cy = sectorShape.cy; - outShapes.push(newShape); - } - } - } - function divideRect(rectShape, count2, outShapes) { - var width = rectShape.width; - var height = rectShape.height; - var isHorizontalRow = width > height; - var grids = getDividingGrids([width, height], isHorizontalRow ? 0 : 1, count2); - var rowSizeDim = isHorizontalRow ? "width" : "height"; - var columnSizeDim = isHorizontalRow ? "height" : "width"; - var rowDim = isHorizontalRow ? "x" : "y"; - var columnDim = isHorizontalRow ? "y" : "x"; - var rowSize = rectShape[rowSizeDim] / grids.length; - for (var row = 0; row < grids.length; row++) { - var columnSize = rectShape[columnSizeDim] / grids[row]; - for (var column = 0; column < grids[row]; column++) { - var newShape = {}; - newShape[rowDim] = row * rowSize; - newShape[columnDim] = column * columnSize; - newShape[rowSizeDim] = rowSize; - newShape[columnSizeDim] = columnSize; - newShape.x += rectShape.x; - newShape.y += rectShape.y; - outShapes.push(newShape); - } - } - } - function crossProduct2d2(x1, y1, x2, y2) { - return x1 * y2 - x2 * y1; - } - function lineLineIntersect2(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) { - var mx = a2x - a1x; - var my = a2y - a1y; - var nx = b2x - b1x; - var ny = b2y - b1y; - var nmCrossProduct = crossProduct2d2(nx, ny, mx, my); - if (Math.abs(nmCrossProduct) < 1e-6) { - return null; - } - var b1a1x = a1x - b1x; - var b1a1y = a1y - b1y; - var p = crossProduct2d2(b1a1x, b1a1y, nx, ny) / nmCrossProduct; - if (p < 0 || p > 1) { - return null; - } - return new Point_default(p * mx + a1x, p * my + a1y); - } - function projPtOnLine(pt, lineA, lineB) { - var dir3 = new Point_default(); - Point_default.sub(dir3, lineB, lineA); - dir3.normalize(); - var dir22 = new Point_default(); - Point_default.sub(dir22, pt, lineA); - var len2 = dir22.dot(dir3); - return len2; - } - function addToPoly(poly, pt) { - var last = poly[poly.length - 1]; - if (last && last[0] === pt[0] && last[1] === pt[1]) { - return; - } - poly.push(pt); - } - function splitPolygonByLine(points4, lineA, lineB) { - var len2 = points4.length; - var intersections = []; - for (var i = 0; i < len2; i++) { - var p0 = points4[i]; - var p1 = points4[(i + 1) % len2]; - var intersectionPt = lineLineIntersect2(p0[0], p0[1], p1[0], p1[1], lineA.x, lineA.y, lineB.x, lineB.y); - if (intersectionPt) { - intersections.push({ - projPt: projPtOnLine(intersectionPt, lineA, lineB), - pt: intersectionPt, - idx: i - }); - } - } - if (intersections.length < 2) { - return [{ points: points4 }, { points: points4 }]; - } - intersections.sort(function(a, b) { - return a.projPt - b.projPt; - }); - var splitPt0 = intersections[0]; - var splitPt1 = intersections[intersections.length - 1]; - if (splitPt1.idx < splitPt0.idx) { - var tmp = splitPt0; - splitPt0 = splitPt1; - splitPt1 = tmp; - } - var splitPt0Arr = [splitPt0.pt.x, splitPt0.pt.y]; - var splitPt1Arr = [splitPt1.pt.x, splitPt1.pt.y]; - var newPolyA = [splitPt0Arr]; - var newPolyB = [splitPt1Arr]; - for (var i = splitPt0.idx + 1; i <= splitPt1.idx; i++) { - addToPoly(newPolyA, points4[i].slice()); - } - addToPoly(newPolyA, splitPt1Arr); - addToPoly(newPolyA, splitPt0Arr); - for (var i = splitPt1.idx + 1; i <= splitPt0.idx + len2; i++) { - addToPoly(newPolyB, points4[i % len2].slice()); - } - addToPoly(newPolyB, splitPt0Arr); - addToPoly(newPolyB, splitPt1Arr); - return [{ - points: newPolyA - }, { - points: newPolyB - }]; - } - function binaryDividePolygon(polygonShape) { - var points4 = polygonShape.points; - var min4 = []; - var max4 = []; - fromPoints(points4, min4, max4); - var boundingRect = new BoundingRect_default(min4[0], min4[1], max4[0] - min4[0], max4[1] - min4[1]); - var width = boundingRect.width; - var height = boundingRect.height; - var x = boundingRect.x; - var y = boundingRect.y; - var pt02 = new Point_default(); - var pt12 = new Point_default(); - if (width > height) { - pt02.x = pt12.x = x + width / 2; - pt02.y = y; - pt12.y = y + height; - } else { - pt02.y = pt12.y = y + height / 2; - pt02.x = x; - pt12.x = x + width; - } - return splitPolygonByLine(points4, pt02, pt12); - } - function binaryDivideRecursive(divider, shape, count2, out2) { - if (count2 === 1) { - out2.push(shape); - } else { - var mid = Math.floor(count2 / 2); - var sub2 = divider(shape); - binaryDivideRecursive(divider, sub2[0], mid, out2); - binaryDivideRecursive(divider, sub2[1], count2 - mid, out2); - } - return out2; - } - function clone5(path, count2) { - var paths = []; - for (var i = 0; i < count2; i++) { - paths.push(clonePath(path)); - } - return paths; - } - function copyPathProps(source, target) { - target.setStyle(source.style); - target.z = source.z; - target.z2 = source.z2; - target.zlevel = source.zlevel; - } - function polygonConvert(points4) { - var out2 = []; - for (var i = 0; i < points4.length; ) { - out2.push([points4[i++], points4[i++]]); - } - return out2; - } - function split(path, count2) { - var outShapes = []; - var shape = path.shape; - var OutShapeCtor; - switch (path.type) { - case "rect": - divideRect(shape, count2, outShapes); - OutShapeCtor = Rect_default; - break; - case "sector": - divideSector(shape, count2, outShapes); - OutShapeCtor = Sector_default; - break; - case "circle": - divideSector({ - r0: 0, - r: shape.r, - startAngle: 0, - endAngle: Math.PI * 2, - cx: shape.cx, - cy: shape.cy - }, count2, outShapes); - OutShapeCtor = Sector_default; - break; - default: - var m2 = path.getComputedTransform(); - var scale4 = m2 ? Math.sqrt(Math.max(m2[0] * m2[0] + m2[1] * m2[1], m2[2] * m2[2] + m2[3] * m2[3])) : 1; - var polygons = map(pathToPolygons(path.getUpdatedPathProxy(), scale4), function(poly) { - return polygonConvert(poly); - }); - var polygonCount = polygons.length; - if (polygonCount === 0) { - binaryDivideRecursive(binaryDividePolygon, { - points: polygons[0] - }, count2, outShapes); - } else if (polygonCount === count2) { - for (var i = 0; i < polygonCount; i++) { - outShapes.push({ - points: polygons[i] - }); - } - } else { - var totalArea_1 = 0; - var items = map(polygons, function(poly) { - var min4 = []; - var max4 = []; - fromPoints(poly, min4, max4); - var area = (max4[1] - min4[1]) * (max4[0] - min4[0]); - totalArea_1 += area; - return { poly, area }; - }); - items.sort(function(a, b) { - return b.area - a.area; - }); - var left = count2; - for (var i = 0; i < polygonCount; i++) { - var item = items[i]; - if (left <= 0) { - break; - } - var selfCount = i === polygonCount - 1 ? left : Math.ceil(item.area / totalArea_1 * count2); - if (selfCount < 0) { - continue; - } - binaryDivideRecursive(binaryDividePolygon, { - points: item.poly - }, selfCount, outShapes); - left -= selfCount; - } - ; - } - OutShapeCtor = Polygon_default; - break; - } - if (!OutShapeCtor) { - return clone5(path, count2); - } - var out2 = []; - for (var i = 0; i < outShapes.length; i++) { - var subPath = new OutShapeCtor(); - subPath.setShape(outShapes[i]); - copyPathProps(path, subPath); - out2.push(subPath); - } - return out2; - } - - // node_modules/zrender/lib/tool/morphPath.js - function alignSubpath(subpath1, subpath2) { - var len1 = subpath1.length; - var len2 = subpath2.length; - if (len1 === len2) { - return [subpath1, subpath2]; - } - var tmpSegX = []; - var tmpSegY = []; - var shorterPath = len1 < len2 ? subpath1 : subpath2; - var shorterLen = Math.min(len1, len2); - var diff = Math.abs(len2 - len1) / 6; - var shorterBezierCount = (shorterLen - 2) / 6; - var eachCurveSubDivCount = Math.ceil(diff / shorterBezierCount) + 1; - var newSubpath = [shorterPath[0], shorterPath[1]]; - var remained = diff; - for (var i = 2; i < shorterLen; ) { - var x0 = shorterPath[i - 2]; - var y0 = shorterPath[i - 1]; - var x1 = shorterPath[i++]; - var y1 = shorterPath[i++]; - var x2 = shorterPath[i++]; - var y2 = shorterPath[i++]; - var x3 = shorterPath[i++]; - var y3 = shorterPath[i++]; - if (remained <= 0) { - newSubpath.push(x1, y1, x2, y2, x3, y3); - continue; - } - var actualSubDivCount = Math.min(remained, eachCurveSubDivCount - 1) + 1; - for (var k = 1; k <= actualSubDivCount; k++) { - var p = k / actualSubDivCount; - cubicSubdivide(x0, x1, x2, x3, p, tmpSegX); - cubicSubdivide(y0, y1, y2, y3, p, tmpSegY); - x0 = tmpSegX[3]; - y0 = tmpSegY[3]; - newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0); - x1 = tmpSegX[5]; - y1 = tmpSegY[5]; - x2 = tmpSegX[6]; - y2 = tmpSegY[6]; - } - remained -= actualSubDivCount - 1; - } - return shorterPath === subpath1 ? [newSubpath, subpath2] : [subpath1, newSubpath]; - } - function createSubpath(lastSubpathSubpath, otherSubpath) { - var len2 = lastSubpathSubpath.length; - var lastX = lastSubpathSubpath[len2 - 2]; - var lastY = lastSubpathSubpath[len2 - 1]; - var newSubpath = []; - for (var i = 0; i < otherSubpath.length; ) { - newSubpath[i++] = lastX; - newSubpath[i++] = lastY; - } - return newSubpath; - } - function alignBezierCurves(array1, array2) { - var _a2; - var lastSubpath1; - var lastSubpath2; - var newArray1 = []; - var newArray2 = []; - for (var i = 0; i < Math.max(array1.length, array2.length); i++) { - var subpath1 = array1[i]; - var subpath2 = array2[i]; - var newSubpath1 = void 0; - var newSubpath2 = void 0; - if (!subpath1) { - newSubpath1 = createSubpath(lastSubpath1 || subpath2, subpath2); - newSubpath2 = subpath2; - } else if (!subpath2) { - newSubpath2 = createSubpath(lastSubpath2 || subpath1, subpath1); - newSubpath1 = subpath1; - } else { - _a2 = alignSubpath(subpath1, subpath2), newSubpath1 = _a2[0], newSubpath2 = _a2[1]; - lastSubpath1 = newSubpath1; - lastSubpath2 = newSubpath2; - } - newArray1.push(newSubpath1); - newArray2.push(newSubpath2); - } - return [newArray1, newArray2]; - } - function centroid2(array) { - var signedArea = 0; - var cx = 0; - var cy = 0; - var len2 = array.length; - for (var i = 0, j = len2 - 2; i < len2; j = i, i += 2) { - var x0 = array[j]; - var y0 = array[j + 1]; - var x1 = array[i]; - var y1 = array[i + 1]; - var a = x0 * y1 - x1 * y0; - signedArea += a; - cx += (x0 + x1) * a; - cy += (y0 + y1) * a; - } - if (signedArea === 0) { - return [array[0] || 0, array[1] || 0]; - } - return [cx / signedArea / 3, cy / signedArea / 3, signedArea]; - } - function findBestRingOffset(fromSubBeziers, toSubBeziers, fromCp, toCp) { - var bezierCount = (fromSubBeziers.length - 2) / 6; - var bestScore = Infinity; - var bestOffset = 0; - var len2 = fromSubBeziers.length; - var len22 = len2 - 2; - for (var offset3 = 0; offset3 < bezierCount; offset3++) { - var cursorOffset = offset3 * 6; - var score = 0; - for (var k = 0; k < len2; k += 2) { - var idx = k === 0 ? cursorOffset : (cursorOffset + k - 2) % len22 + 2; - var x0 = fromSubBeziers[idx] - fromCp[0]; - var y0 = fromSubBeziers[idx + 1] - fromCp[1]; - var x1 = toSubBeziers[k] - toCp[0]; - var y1 = toSubBeziers[k + 1] - toCp[1]; - var dx = x1 - x0; - var dy = y1 - y0; - score += dx * dx + dy * dy; - } - if (score < bestScore) { - bestScore = score; - bestOffset = offset3; - } - } - return bestOffset; - } - function reverse(array) { - var newArr = []; - var len2 = array.length; - for (var i = 0; i < len2; i += 2) { - newArr[i] = array[len2 - i - 2]; - newArr[i + 1] = array[len2 - i - 1]; - } - return newArr; - } - function findBestMorphingRotation(fromArr, toArr2, searchAngleIteration, searchAngleRange) { - var result = []; - var fromNeedsReverse; - for (var i = 0; i < fromArr.length; i++) { - var fromSubpathBezier = fromArr[i]; - var toSubpathBezier = toArr2[i]; - var fromCp = centroid2(fromSubpathBezier); - var toCp = centroid2(toSubpathBezier); - if (fromNeedsReverse == null) { - fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0; - } - var newFromSubpathBezier = []; - var newToSubpathBezier = []; - var bestAngle = 0; - var bestScore = Infinity; - var tmpArr2 = []; - var len2 = fromSubpathBezier.length; - if (fromNeedsReverse) { - fromSubpathBezier = reverse(fromSubpathBezier); - } - var offset3 = findBestRingOffset(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6; - var len22 = len2 - 2; - for (var k = 0; k < len22; k += 2) { - var idx = (offset3 + k) % len22 + 2; - newFromSubpathBezier[k + 2] = fromSubpathBezier[idx] - fromCp[0]; - newFromSubpathBezier[k + 3] = fromSubpathBezier[idx + 1] - fromCp[1]; - } - newFromSubpathBezier[0] = fromSubpathBezier[offset3] - fromCp[0]; - newFromSubpathBezier[1] = fromSubpathBezier[offset3 + 1] - fromCp[1]; - if (searchAngleIteration > 0) { - var step = searchAngleRange / searchAngleIteration; - for (var angle = -searchAngleRange / 2; angle <= searchAngleRange / 2; angle += step) { - var sa = Math.sin(angle); - var ca = Math.cos(angle); - var score = 0; - for (var k = 0; k < fromSubpathBezier.length; k += 2) { - var x0 = newFromSubpathBezier[k]; - var y0 = newFromSubpathBezier[k + 1]; - var x1 = toSubpathBezier[k] - toCp[0]; - var y1 = toSubpathBezier[k + 1] - toCp[1]; - var newX1 = x1 * ca - y1 * sa; - var newY1 = x1 * sa + y1 * ca; - tmpArr2[k] = newX1; - tmpArr2[k + 1] = newY1; - var dx = newX1 - x0; - var dy = newY1 - y0; - score += dx * dx + dy * dy; - } - if (score < bestScore) { - bestScore = score; - bestAngle = angle; - for (var m2 = 0; m2 < tmpArr2.length; m2++) { - newToSubpathBezier[m2] = tmpArr2[m2]; - } - } - } - } else { - for (var i_1 = 0; i_1 < len2; i_1 += 2) { - newToSubpathBezier[i_1] = toSubpathBezier[i_1] - toCp[0]; - newToSubpathBezier[i_1 + 1] = toSubpathBezier[i_1 + 1] - toCp[1]; - } - } - result.push({ - from: newFromSubpathBezier, - to: newToSubpathBezier, - fromCp, - toCp, - rotation: -bestAngle - }); - } - return result; - } - function isCombineMorphing(path) { - return path.__isCombineMorphing; - } - var SAVED_METHOD_PREFIX = "__mOriginal_"; - function saveAndModifyMethod(obj, methodName, modifiers) { - var savedMethodName = SAVED_METHOD_PREFIX + methodName; - var originalMethod = obj[savedMethodName] || obj[methodName]; - if (!obj[savedMethodName]) { - obj[savedMethodName] = obj[methodName]; - } - var replace = modifiers.replace; - var after = modifiers.after; - var before = modifiers.before; - obj[methodName] = function() { - var args = arguments; - var res; - before && before.apply(this, args); - if (replace) { - res = replace.apply(this, args); - } else { - res = originalMethod.apply(this, args); - } - after && after.apply(this, args); - return res; - }; - } - function restoreMethod(obj, methodName) { - var savedMethodName = SAVED_METHOD_PREFIX + methodName; - if (obj[savedMethodName]) { - obj[methodName] = obj[savedMethodName]; - obj[savedMethodName] = null; - } - } - function applyTransformOnBeziers(bezierCurves, mm) { - for (var i = 0; i < bezierCurves.length; i++) { - var subBeziers = bezierCurves[i]; - for (var k = 0; k < subBeziers.length; ) { - var x = subBeziers[k]; - var y = subBeziers[k + 1]; - subBeziers[k++] = mm[0] * x + mm[2] * y + mm[4]; - subBeziers[k++] = mm[1] * x + mm[3] * y + mm[5]; - } - } - } - function prepareMorphPath(fromPath, toPath) { - var fromPathProxy = fromPath.getUpdatedPathProxy(); - var toPathProxy = toPath.getUpdatedPathProxy(); - var _a2 = alignBezierCurves(pathToBezierCurves(fromPathProxy), pathToBezierCurves(toPathProxy)), fromBezierCurves = _a2[0], toBezierCurves = _a2[1]; - var fromPathTransform = fromPath.getComputedTransform(); - var toPathTransform = toPath.getComputedTransform(); - function updateIdentityTransform() { - this.transform = null; - } - fromPathTransform && applyTransformOnBeziers(fromBezierCurves, fromPathTransform); - toPathTransform && applyTransformOnBeziers(toBezierCurves, toPathTransform); - saveAndModifyMethod(toPath, "updateTransform", { replace: updateIdentityTransform }); - toPath.transform = null; - var morphingData = findBestMorphingRotation(fromBezierCurves, toBezierCurves, 10, Math.PI); - var tmpArr2 = []; - saveAndModifyMethod(toPath, "buildPath", { replace: function(path) { - var t = toPath.__morphT; - var onet = 1 - t; - var newCp = []; - for (var i = 0; i < morphingData.length; i++) { - var item = morphingData[i]; - var from = item.from; - var to = item.to; - var angle = item.rotation * t; - var fromCp = item.fromCp; - var toCp = item.toCp; - var sa = Math.sin(angle); - var ca = Math.cos(angle); - lerp(newCp, fromCp, toCp, t); - for (var m2 = 0; m2 < from.length; m2 += 2) { - var x0_1 = from[m2]; - var y0_1 = from[m2 + 1]; - var x1 = to[m2]; - var y1 = to[m2 + 1]; - var x = x0_1 * onet + x1 * t; - var y = y0_1 * onet + y1 * t; - tmpArr2[m2] = x * ca - y * sa + newCp[0]; - tmpArr2[m2 + 1] = x * sa + y * ca + newCp[1]; - } - var x0 = tmpArr2[0]; - var y0 = tmpArr2[1]; - path.moveTo(x0, y0); - for (var m2 = 2; m2 < from.length; ) { - var x1 = tmpArr2[m2++]; - var y1 = tmpArr2[m2++]; - var x2 = tmpArr2[m2++]; - var y2 = tmpArr2[m2++]; - var x3 = tmpArr2[m2++]; - var y3 = tmpArr2[m2++]; - if (x0 === x1 && y0 === y1 && x2 === x3 && y2 === y3) { - path.lineTo(x3, y3); - } else { - path.bezierCurveTo(x1, y1, x2, y2, x3, y3); - } - x0 = x3; - y0 = y3; - } - } - } }); - } - function morphPath(fromPath, toPath, animationOpts) { - if (!fromPath || !toPath) { - return toPath; - } - var oldDone = animationOpts.done; - var oldDuring = animationOpts.during; - prepareMorphPath(fromPath, toPath); - toPath.__morphT = 0; - function restoreToPath() { - restoreMethod(toPath, "buildPath"); - restoreMethod(toPath, "updateTransform"); - toPath.__morphT = -1; - toPath.createPathProxy(); - toPath.dirtyShape(); - } - toPath.animateTo({ - __morphT: 1 - }, defaults({ - during: function(p) { - toPath.dirtyShape(); - oldDuring && oldDuring(p); - }, - done: function() { - restoreToPath(); - oldDone && oldDone(); - } - }, animationOpts)); - return toPath; - } - function hilbert(x, y, minX, minY, maxX, maxY) { - var bits = 16; - x = maxX === minX ? 0 : Math.round(32767 * (x - minX) / (maxX - minX)); - y = maxY === minY ? 0 : Math.round(32767 * (y - minY) / (maxY - minY)); - var d = 0; - var tmp; - for (var s = (1 << bits) / 2; s > 0; s /= 2) { - var rx = 0; - var ry = 0; - if ((x & s) > 0) { - rx = 1; - } - if ((y & s) > 0) { - ry = 1; - } - d += s * s * (3 * rx ^ ry); - if (ry === 0) { - if (rx === 1) { - x = s - 1 - x; - y = s - 1 - y; - } - tmp = x; - x = y; - y = tmp; - } - } - return d; - } - function sortPaths(pathList) { - var xMin = Infinity; - var yMin = Infinity; - var xMax = -Infinity; - var yMax = -Infinity; - var cps = map(pathList, function(path) { - var rect = path.getBoundingRect(); - var m2 = path.getComputedTransform(); - var x = rect.x + rect.width / 2 + (m2 ? m2[4] : 0); - var y = rect.y + rect.height / 2 + (m2 ? m2[5] : 0); - xMin = Math.min(x, xMin); - yMin = Math.min(y, yMin); - xMax = Math.max(x, xMax); - yMax = Math.max(y, yMax); - return [x, y]; - }); - var items = map(cps, function(cp, idx) { - return { - cp, - z: hilbert(cp[0], cp[1], xMin, yMin, xMax, yMax), - path: pathList[idx] - }; - }); - return items.sort(function(a, b) { - return a.z - b.z; - }).map(function(item) { - return item.path; - }); - } - function defaultDividePath(param) { - return split(param.path, param.count); - } - function createEmptyReturn() { - return { - fromIndividuals: [], - toIndividuals: [], - count: 0 - }; - } - function combineMorph(fromList, toPath, animationOpts) { - var fromPathList = []; - function addFromPath(fromList2) { - for (var i2 = 0; i2 < fromList2.length; i2++) { - var from2 = fromList2[i2]; - if (isCombineMorphing(from2)) { - addFromPath(from2.childrenRef()); - } else if (from2 instanceof Path_default) { - fromPathList.push(from2); - } - } - } - addFromPath(fromList); - var separateCount = fromPathList.length; - if (!separateCount) { - return createEmptyReturn(); - } - var dividePath = animationOpts.dividePath || defaultDividePath; - var toSubPathList = dividePath({ - path: toPath, - count: separateCount - }); - if (toSubPathList.length !== separateCount) { - console.error("Invalid morphing: unmatched splitted path"); - return createEmptyReturn(); - } - fromPathList = sortPaths(fromPathList); - toSubPathList = sortPaths(toSubPathList); - var oldDone = animationOpts.done; - var oldDuring = animationOpts.during; - var individualDelay = animationOpts.individualDelay; - var identityTransform = new Transformable_default(); - for (var i = 0; i < separateCount; i++) { - var from = fromPathList[i]; - var to = toSubPathList[i]; - to.parent = toPath; - to.copyTransform(identityTransform); - if (!individualDelay) { - prepareMorphPath(from, to); - } - } - toPath.__isCombineMorphing = true; - toPath.childrenRef = function() { - return toSubPathList; - }; - function addToSubPathListToZr(zr) { - for (var i2 = 0; i2 < toSubPathList.length; i2++) { - toSubPathList[i2].addSelfToZr(zr); - } - } - saveAndModifyMethod(toPath, "addSelfToZr", { - after: function(zr) { - addToSubPathListToZr(zr); - } - }); - saveAndModifyMethod(toPath, "removeSelfFromZr", { - after: function(zr) { - for (var i2 = 0; i2 < toSubPathList.length; i2++) { - toSubPathList[i2].removeSelfFromZr(zr); - } - } - }); - function restoreToPath() { - toPath.__isCombineMorphing = false; - toPath.__morphT = -1; - toPath.childrenRef = null; - restoreMethod(toPath, "addSelfToZr"); - restoreMethod(toPath, "removeSelfFromZr"); - } - var toLen = toSubPathList.length; - if (individualDelay) { - var animating_1 = toLen; - var eachDone = function() { - animating_1--; - if (animating_1 === 0) { - restoreToPath(); - oldDone && oldDone(); - } - }; - for (var i = 0; i < toLen; i++) { - var indivdualAnimationOpts = individualDelay ? defaults({ - delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toSubPathList[i]), - done: eachDone - }, animationOpts) : animationOpts; - morphPath(fromPathList[i], toSubPathList[i], indivdualAnimationOpts); - } - } else { - toPath.__morphT = 0; - toPath.animateTo({ - __morphT: 1 - }, defaults({ - during: function(p) { - for (var i2 = 0; i2 < toLen; i2++) { - var child = toSubPathList[i2]; - child.__morphT = toPath.__morphT; - child.dirtyShape(); - } - oldDuring && oldDuring(p); - }, - done: function() { - restoreToPath(); - for (var i2 = 0; i2 < fromList.length; i2++) { - restoreMethod(fromList[i2], "updateTransform"); - } - oldDone && oldDone(); - } - }, animationOpts)); - } - if (toPath.__zr) { - addToSubPathListToZr(toPath.__zr); - } - return { - fromIndividuals: fromPathList, - toIndividuals: toSubPathList, - count: toLen - }; - } - function separateMorph(fromPath, toPathList, animationOpts) { - var toLen = toPathList.length; - var fromPathList = []; - var dividePath = animationOpts.dividePath || defaultDividePath; - function addFromPath(fromList) { - for (var i2 = 0; i2 < fromList.length; i2++) { - var from = fromList[i2]; - if (isCombineMorphing(from)) { - addFromPath(from.childrenRef()); - } else if (from instanceof Path_default) { - fromPathList.push(from); - } - } - } - if (isCombineMorphing(fromPath)) { - addFromPath(fromPath.childrenRef()); - var fromLen = fromPathList.length; - if (fromLen < toLen) { - var k = 0; - for (var i = fromLen; i < toLen; i++) { - fromPathList.push(clonePath(fromPathList[k++ % fromLen])); - } - } - fromPathList.length = toLen; - } else { - fromPathList = dividePath({ path: fromPath, count: toLen }); - var fromPathTransform = fromPath.getComputedTransform(); - for (var i = 0; i < fromPathList.length; i++) { - fromPathList[i].setLocalTransform(fromPathTransform); - } - if (fromPathList.length !== toLen) { - console.error("Invalid morphing: unmatched splitted path"); - return createEmptyReturn(); - } - } - fromPathList = sortPaths(fromPathList); - toPathList = sortPaths(toPathList); - var individualDelay = animationOpts.individualDelay; - for (var i = 0; i < toLen; i++) { - var indivdualAnimationOpts = individualDelay ? defaults({ - delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toPathList[i]) - }, animationOpts) : animationOpts; - morphPath(fromPathList[i], toPathList[i], indivdualAnimationOpts); - } - return { - fromIndividuals: fromPathList, - toIndividuals: toPathList, - count: toPathList.length - }; - } - - // node_modules/echarts/lib/animation/morphTransitionHelper.js - function isMultiple(elements) { - return isArray(elements[0]); - } - function prepareMorphBatches(one, many) { - var batches = []; - var batchCount = one.length; - for (var i = 0; i < batchCount; i++) { - batches.push({ - one: one[i], - many: [] - }); - } - for (var i = 0; i < many.length; i++) { - var len2 = many[i].length; - var k = void 0; - for (k = 0; k < len2; k++) { - batches[k % batchCount].many.push(many[i][k]); - } - } - var off = 0; - for (var i = batchCount - 1; i >= 0; i--) { - if (!batches[i].many.length) { - var moveFrom = batches[off].many; - if (moveFrom.length <= 1) { - if (off) { - off = 0; - } else { - return batches; - } - } - var len2 = moveFrom.length; - var mid = Math.ceil(len2 / 2); - batches[i].many = moveFrom.slice(mid, len2); - batches[off].many = moveFrom.slice(0, mid); - off++; - } - } - return batches; - } - var pathDividers = { - clone: function(params) { - var ret = []; - var approxOpacity = 1 - Math.pow(1 - params.path.style.opacity, 1 / params.count); - for (var i = 0; i < params.count; i++) { - var cloned = clonePath(params.path); - cloned.setStyle("opacity", approxOpacity); - ret.push(cloned); - } - return ret; - }, - // Use the default divider - split: null - }; - function applyMorphAnimation(from, to, divideShape, seriesModel, dataIndex, animateOtherProps) { - if (!from.length || !to.length) { - return; - } - var updateAnimationCfg = getAnimationConfig("update", seriesModel, dataIndex); - if (!(updateAnimationCfg && updateAnimationCfg.duration > 0)) { - return; - } - var animationDelay = seriesModel.getModel("universalTransition").get("delay"); - var animationCfg = Object.assign({ - // Need to setToFinal so the further calculation based on the style can be correct. - // Like emphasis color. - setToFinal: true - }, updateAnimationCfg); - var many; - var one; - if (isMultiple(from)) { - many = from; - one = to; - } - if (isMultiple(to)) { - many = to; - one = from; - } - function morphOneBatch(batch, fromIsMany2, animateIndex2, animateCount2, forceManyOne) { - var batchMany = batch.many; - var batchOne = batch.one; - if (batchMany.length === 1 && !forceManyOne) { - var batchFrom = fromIsMany2 ? batchMany[0] : batchOne; - var batchTo = fromIsMany2 ? batchOne : batchMany[0]; - if (isCombineMorphing(batchFrom)) { - morphOneBatch({ - many: [batchFrom], - one: batchTo - }, true, animateIndex2, animateCount2, true); - } else { - var individualAnimationCfg = animationDelay ? defaults({ - delay: animationDelay(animateIndex2, animateCount2) - }, animationCfg) : animationCfg; - morphPath(batchFrom, batchTo, individualAnimationCfg); - animateOtherProps(batchFrom, batchTo, batchFrom, batchTo, individualAnimationCfg); - } - } else { - var separateAnimationCfg = defaults({ - dividePath: pathDividers[divideShape], - individualDelay: animationDelay && function(idx, count3, fromPath, toPath) { - return animationDelay(idx + animateIndex2, animateCount2); - } - }, animationCfg); - var _a2 = fromIsMany2 ? combineMorph(batchMany, batchOne, separateAnimationCfg) : separateMorph(batchOne, batchMany, separateAnimationCfg), fromIndividuals = _a2.fromIndividuals, toIndividuals = _a2.toIndividuals; - var count2 = fromIndividuals.length; - for (var k = 0; k < count2; k++) { - var individualAnimationCfg = animationDelay ? defaults({ - delay: animationDelay(k, count2) - }, animationCfg) : animationCfg; - animateOtherProps(fromIndividuals[k], toIndividuals[k], fromIsMany2 ? batchMany[k] : batch.one, fromIsMany2 ? batch.one : batchMany[k], individualAnimationCfg); - } - } - } - var fromIsMany = many ? many === from : from.length > to.length; - var morphBatches = many ? prepareMorphBatches(one, many) : prepareMorphBatches(fromIsMany ? to : from, [fromIsMany ? from : to]); - var animateCount = 0; - for (var i = 0; i < morphBatches.length; i++) { - animateCount += morphBatches[i].many.length; - } - var animateIndex = 0; - for (var i = 0; i < morphBatches.length; i++) { - morphOneBatch(morphBatches[i], fromIsMany, animateIndex, animateCount); - animateIndex += morphBatches[i].many.length; - } - } - function getPathList(elements) { - if (!elements) { - return []; - } - if (isArray(elements)) { - var pathList_1 = []; - for (var i = 0; i < elements.length; i++) { - pathList_1.push(getPathList(elements[i])); - } - return pathList_1; - } - var pathList = []; - elements.traverse(function(el) { - if (el instanceof Path_default && !el.disableMorphing && !el.invisible && !el.ignore) { - pathList.push(el); - } - }); - return pathList; - } - - // node_modules/echarts/lib/animation/universalTransition.js - var DATA_COUNT_THRESHOLD = 1e4; - var TRANSITION_NONE = 0; - var TRANSITION_P2C = 1; - var TRANSITION_C2P = 2; - var getUniversalTransitionGlobalStore = makeInner(); - function getDimension(data, visualDimension) { - var dimensions = data.dimensions; - for (var i = 0; i < dimensions.length; i++) { - var dimInfo = data.getDimensionInfo(dimensions[i]); - if (dimInfo && dimInfo.otherDims[visualDimension] === 0) { - return dimensions[i]; - } - } - } - function getValueByDimension(data, dataIndex, dimension) { - var dimInfo = data.getDimensionInfo(dimension); - var dimOrdinalMeta = dimInfo && dimInfo.ordinalMeta; - if (dimInfo) { - var value = data.get(dimInfo.name, dataIndex); - if (dimOrdinalMeta) { - return dimOrdinalMeta.categories[value] || value + ""; - } - return value + ""; - } - } - function getGroupId(data, dataIndex, dataGroupId, isChild) { - var visualDimension = isChild ? "itemChildGroupId" : "itemGroupId"; - var groupIdDim = getDimension(data, visualDimension); - if (groupIdDim) { - var groupId = getValueByDimension(data, dataIndex, groupIdDim); - return groupId; - } - var rawDataItem = data.getRawDataItem(dataIndex); - var property = isChild ? "childGroupId" : "groupId"; - if (rawDataItem && rawDataItem[property]) { - return rawDataItem[property] + ""; - } - if (isChild) { - return; - } - return dataGroupId || data.getId(dataIndex); - } - function flattenDataDiffItems(list) { - var items = []; - each(list, function(seriesInfo) { - var data = seriesInfo.data; - var dataGroupId = seriesInfo.dataGroupId; - if (data.count() > DATA_COUNT_THRESHOLD) { - if (true) { - warn("Universal transition is disabled on large data > 10k."); - } - return; - } - var indices = data.getIndices(); - for (var dataIndex = 0; dataIndex < indices.length; dataIndex++) { - items.push({ - data, - groupId: getGroupId(data, dataIndex, dataGroupId, false), - childGroupId: getGroupId(data, dataIndex, dataGroupId, true), - divide: seriesInfo.divide, - dataIndex - }); - } - }); - return items; - } - function fadeInElement(newEl2, newSeries, newIndex) { - newEl2.traverse(function(el) { - if (el instanceof Path_default) { - initProps(el, { - style: { - opacity: 0 - } - }, newSeries, { - dataIndex: newIndex, - isFrom: true - }); - } - }); - } - function removeEl2(el) { - if (el.parent) { - var computedTransform = el.getComputedTransform(); - el.setLocalTransform(computedTransform); - el.parent.remove(el); - } - } - function stopAnimation(el) { - el.stopAnimation(); - if (el.isGroup) { - el.traverse(function(child) { - child.stopAnimation(); - }); - } - } - function animateElementStyles(el, dataIndex, seriesModel) { - var animationConfig = getAnimationConfig("update", seriesModel, dataIndex); - animationConfig && el.traverse(function(child) { - if (child instanceof Displayable_default) { - var oldStyle = getOldStyle(child); - if (oldStyle) { - child.animateFrom({ - style: oldStyle - }, animationConfig); - } - } - }); - } - function isAllIdSame(oldDiffItems, newDiffItems) { - var len2 = oldDiffItems.length; - if (len2 !== newDiffItems.length) { - return false; - } - for (var i = 0; i < len2; i++) { - var oldItem = oldDiffItems[i]; - var newItem = newDiffItems[i]; - if (oldItem.data.getId(oldItem.dataIndex) !== newItem.data.getId(newItem.dataIndex)) { - return false; - } - } - return true; - } - function transitionBetween(oldList, newList, api) { - var oldDiffItems = flattenDataDiffItems(oldList); - var newDiffItems = flattenDataDiffItems(newList); - function updateMorphingPathProps(from, to, rawFrom, rawTo, animationCfg) { - if (rawFrom || from) { - to.animateFrom({ - style: rawFrom && rawFrom !== from ? extend(extend({}, rawFrom.style), from.style) : from.style - }, animationCfg); - } - } - var hasMorphAnimation = false; - var direction = TRANSITION_NONE; - var oldGroupIds = createHashMap(); - var oldChildGroupIds = createHashMap(); - oldDiffItems.forEach(function(item) { - item.groupId && oldGroupIds.set(item.groupId, true); - item.childGroupId && oldChildGroupIds.set(item.childGroupId, true); - }); - for (var i = 0; i < newDiffItems.length; i++) { - var newGroupId = newDiffItems[i].groupId; - if (oldChildGroupIds.get(newGroupId)) { - direction = TRANSITION_P2C; - break; - } - var newChildGroupId = newDiffItems[i].childGroupId; - if (newChildGroupId && oldGroupIds.get(newChildGroupId)) { - direction = TRANSITION_C2P; - break; - } - } - function createKeyGetter(isOld, onlyGetId) { - return function(diffItem) { - var data = diffItem.data; - var dataIndex = diffItem.dataIndex; - if (onlyGetId) { - return data.getId(dataIndex); - } - if (isOld) { - return direction === TRANSITION_P2C ? diffItem.childGroupId : diffItem.groupId; - } else { - return direction === TRANSITION_C2P ? diffItem.childGroupId : diffItem.groupId; - } - }; - } - var useId = isAllIdSame(oldDiffItems, newDiffItems); - var isElementStillInChart = {}; - if (!useId) { - for (var i = 0; i < newDiffItems.length; i++) { - var newItem = newDiffItems[i]; - var el = newItem.data.getItemGraphicEl(newItem.dataIndex); - if (el) { - isElementStillInChart[el.id] = true; - } - } - } - function updateOneToOne(newIndex, oldIndex) { - var oldItem = oldDiffItems[oldIndex]; - var newItem2 = newDiffItems[newIndex]; - var newSeries = newItem2.data.hostModel; - var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex); - var newEl2 = newItem2.data.getItemGraphicEl(newItem2.dataIndex); - if (oldEl === newEl2) { - newEl2 && animateElementStyles(newEl2, newItem2.dataIndex, newSeries); - return; - } - if ( - // We can't use the elements that already being morphed - oldEl && isElementStillInChart[oldEl.id] - ) { - return; - } - if (newEl2) { - stopAnimation(newEl2); - if (oldEl) { - stopAnimation(oldEl); - removeEl2(oldEl); - hasMorphAnimation = true; - applyMorphAnimation(getPathList(oldEl), getPathList(newEl2), newItem2.divide, newSeries, newIndex, updateMorphingPathProps); - } else { - fadeInElement(newEl2, newSeries, newIndex); - } - } - } - new DataDiffer_default(oldDiffItems, newDiffItems, createKeyGetter(true, useId), createKeyGetter(false, useId), null, "multiple").update(updateOneToOne).updateManyToOne(function(newIndex, oldIndices) { - var newItem2 = newDiffItems[newIndex]; - var newData = newItem2.data; - var newSeries = newData.hostModel; - var newEl2 = newData.getItemGraphicEl(newItem2.dataIndex); - var oldElsList = filter(map(oldIndices, function(idx) { - return oldDiffItems[idx].data.getItemGraphicEl(oldDiffItems[idx].dataIndex); - }), function(oldEl) { - return oldEl && oldEl !== newEl2 && !isElementStillInChart[oldEl.id]; - }); - if (newEl2) { - stopAnimation(newEl2); - if (oldElsList.length) { - each(oldElsList, function(oldEl) { - stopAnimation(oldEl); - removeEl2(oldEl); - }); - hasMorphAnimation = true; - applyMorphAnimation(getPathList(oldElsList), getPathList(newEl2), newItem2.divide, newSeries, newIndex, updateMorphingPathProps); - } else { - fadeInElement(newEl2, newSeries, newItem2.dataIndex); - } - } - }).updateOneToMany(function(newIndices, oldIndex) { - var oldItem = oldDiffItems[oldIndex]; - var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex); - if (oldEl && isElementStillInChart[oldEl.id]) { - return; - } - var newElsList = filter(map(newIndices, function(idx) { - return newDiffItems[idx].data.getItemGraphicEl(newDiffItems[idx].dataIndex); - }), function(el2) { - return el2 && el2 !== oldEl; - }); - var newSeris = newDiffItems[newIndices[0]].data.hostModel; - if (newElsList.length) { - each(newElsList, function(newEl2) { - return stopAnimation(newEl2); - }); - if (oldEl) { - stopAnimation(oldEl); - removeEl2(oldEl); - hasMorphAnimation = true; - applyMorphAnimation( - getPathList(oldEl), - getPathList(newElsList), - oldItem.divide, - // Use divide on old. - newSeris, - newIndices[0], - updateMorphingPathProps - ); - } else { - each(newElsList, function(newEl2) { - return fadeInElement(newEl2, newSeris, newIndices[0]); - }); - } - } - }).updateManyToMany(function(newIndices, oldIndices) { - new DataDiffer_default(oldIndices, newIndices, function(rawIdx) { - return oldDiffItems[rawIdx].data.getId(oldDiffItems[rawIdx].dataIndex); - }, function(rawIdx) { - return newDiffItems[rawIdx].data.getId(newDiffItems[rawIdx].dataIndex); - }).update(function(newIndex, oldIndex) { - updateOneToOne(newIndices[newIndex], oldIndices[oldIndex]); - }).execute(); - }).execute(); - if (hasMorphAnimation) { - each(newList, function(_a2) { - var data = _a2.data; - var seriesModel = data.hostModel; - var view = seriesModel && api.getViewOfSeriesModel(seriesModel); - var animationCfg = getAnimationConfig("update", seriesModel, 0); - if (view && seriesModel.isAnimationEnabled() && animationCfg && animationCfg.duration > 0) { - view.group.traverse(function(el2) { - if (el2 instanceof Path_default && !el2.animators.length) { - el2.animateFrom({ - style: { - opacity: 0 - } - }, animationCfg); - } - }); - } - }); - } - } - function getSeriesTransitionKey(series) { - var seriesKey = series.getModel("universalTransition").get("seriesKey"); - if (!seriesKey) { - return series.id; - } - return seriesKey; - } - function convertArraySeriesKeyToString(seriesKey) { - if (isArray(seriesKey)) { - return seriesKey.sort().join(","); - } - return seriesKey; - } - function getDivideShapeFromData(data) { - if (data.hostModel) { - return data.hostModel.getModel("universalTransition").get("divideShape"); - } - } - function findTransitionSeriesBatches(globalStore, params) { - var updateBatches = createHashMap(); - var oldDataMap = createHashMap(); - var oldDataMapForSplit = createHashMap(); - each(globalStore.oldSeries, function(series, idx) { - var oldDataGroupId = globalStore.oldDataGroupIds[idx]; - var oldData = globalStore.oldData[idx]; - var transitionKey = getSeriesTransitionKey(series); - var transitionKeyStr = convertArraySeriesKeyToString(transitionKey); - oldDataMap.set(transitionKeyStr, { - dataGroupId: oldDataGroupId, - data: oldData - }); - if (isArray(transitionKey)) { - each(transitionKey, function(key) { - oldDataMapForSplit.set(key, { - key: transitionKeyStr, - dataGroupId: oldDataGroupId, - data: oldData - }); - }); - } - }); - function checkTransitionSeriesKeyDuplicated(transitionKeyStr) { - if (updateBatches.get(transitionKeyStr)) { - warn("Duplicated seriesKey in universalTransition " + transitionKeyStr); - } - } - each(params.updatedSeries, function(series) { - if (series.isUniversalTransitionEnabled() && series.isAnimationEnabled()) { - var newDataGroupId = series.get("dataGroupId"); - var newData = series.getData(); - var transitionKey = getSeriesTransitionKey(series); - var transitionKeyStr = convertArraySeriesKeyToString(transitionKey); - var oldData = oldDataMap.get(transitionKeyStr); - if (oldData) { - if (true) { - checkTransitionSeriesKeyDuplicated(transitionKeyStr); - } - updateBatches.set(transitionKeyStr, { - oldSeries: [{ - dataGroupId: oldData.dataGroupId, - divide: getDivideShapeFromData(oldData.data), - data: oldData.data - }], - newSeries: [{ - dataGroupId: newDataGroupId, - divide: getDivideShapeFromData(newData), - data: newData - }] - }); - } else { - if (isArray(transitionKey)) { - if (true) { - checkTransitionSeriesKeyDuplicated(transitionKeyStr); - } - var oldSeries_1 = []; - each(transitionKey, function(key) { - var oldData2 = oldDataMap.get(key); - if (oldData2.data) { - oldSeries_1.push({ - dataGroupId: oldData2.dataGroupId, - divide: getDivideShapeFromData(oldData2.data), - data: oldData2.data - }); - } - }); - if (oldSeries_1.length) { - updateBatches.set(transitionKeyStr, { - oldSeries: oldSeries_1, - newSeries: [{ - dataGroupId: newDataGroupId, - data: newData, - divide: getDivideShapeFromData(newData) - }] - }); - } - } else { - var oldData_1 = oldDataMapForSplit.get(transitionKey); - if (oldData_1) { - var batch = updateBatches.get(oldData_1.key); - if (!batch) { - batch = { - oldSeries: [{ - dataGroupId: oldData_1.dataGroupId, - data: oldData_1.data, - divide: getDivideShapeFromData(oldData_1.data) - }], - newSeries: [] - }; - updateBatches.set(oldData_1.key, batch); - } - batch.newSeries.push({ - dataGroupId: newDataGroupId, - data: newData, - divide: getDivideShapeFromData(newData) - }); - } - } - } - } - }); - return updateBatches; - } - function querySeries(series, finder) { - for (var i = 0; i < series.length; i++) { - var found = finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id; - if (found) { - return i; - } - } - } - function transitionSeriesFromOpt(transitionOpt, globalStore, params, api) { - var from = []; - var to = []; - each(normalizeToArray(transitionOpt.from), function(finder) { - var idx = querySeries(globalStore.oldSeries, finder); - if (idx >= 0) { - from.push({ - dataGroupId: globalStore.oldDataGroupIds[idx], - data: globalStore.oldData[idx], - // TODO can specify divideShape in transition. - divide: getDivideShapeFromData(globalStore.oldData[idx]), - groupIdDim: finder.dimension - }); - } - }); - each(normalizeToArray(transitionOpt.to), function(finder) { - var idx = querySeries(params.updatedSeries, finder); - if (idx >= 0) { - var data = params.updatedSeries[idx].getData(); - to.push({ - dataGroupId: globalStore.oldDataGroupIds[idx], - data, - divide: getDivideShapeFromData(data), - groupIdDim: finder.dimension - }); - } - }); - if (from.length > 0 && to.length > 0) { - transitionBetween(from, to, api); - } - } - function installUniversalTransition(registers) { - registers.registerUpdateLifecycle("series:beforeupdate", function(ecMOdel, api, params) { - each(normalizeToArray(params.seriesTransition), function(transOpt) { - each(normalizeToArray(transOpt.to), function(finder) { - var series = params.updatedSeries; - for (var i = 0; i < series.length; i++) { - if (finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id) { - series[i][SERIES_UNIVERSAL_TRANSITION_PROP] = true; - } - } - }); - }); - }); - registers.registerUpdateLifecycle("series:transition", function(ecModel, api, params) { - var globalStore = getUniversalTransitionGlobalStore(api); - if (globalStore.oldSeries && params.updatedSeries && params.optionChanged) { - var transitionOpt = params.seriesTransition; - if (transitionOpt) { - each(normalizeToArray(transitionOpt), function(opt) { - transitionSeriesFromOpt(opt, globalStore, params, api); - }); - } else { - var updateBatches_1 = findTransitionSeriesBatches(globalStore, params); - each(updateBatches_1.keys(), function(key) { - var batch = updateBatches_1.get(key); - transitionBetween(batch.oldSeries, batch.newSeries, api); - }); - } - each(params.updatedSeries, function(series) { - if (series[SERIES_UNIVERSAL_TRANSITION_PROP]) { - series[SERIES_UNIVERSAL_TRANSITION_PROP] = false; - } - }); - } - var allSeries = ecModel.getSeries(); - var savedSeries = globalStore.oldSeries = []; - var savedDataGroupIds = globalStore.oldDataGroupIds = []; - var savedData = globalStore.oldData = []; - for (var i = 0; i < allSeries.length; i++) { - var data = allSeries[i].getData(); - if (data.count() < DATA_COUNT_THRESHOLD) { - savedSeries.push(allSeries[i]); - savedDataGroupIds.push(allSeries[i].get("dataGroupId")); - savedData.push(data); - } - } - }); - } - - // node_modules/echarts/index.js - use([install2]); - use([install]); - use([install3, install4, install5, install7, install9, install11, install12, install13, install14, install15, install16, install18, install19, install20, install21, install22, install23, install24, install25, install26, install27, install28]); - use(install30); - use(install31); - use(install10); - use(install32); - use(install17); - use(install33); - use(install34); - use(install36); - use(install37); - use(install29); - use(install38); - use(install39); - use(install40); - use(install41); - use(install42); - use(install43); - use(install46); - use(install49); - use(install47); - use(install48); - use(install52); - use(install50); - use(install51); - use(install53); - use(install54); - use(install55); - use(installUniversalTransition); - use(installLabelLayout); - - // app/javascript/rails_pulse/application.js - var import_theme = __toESM(require_theme()); - - // node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js - var turbo_es2017_esm_exports = {}; - __export(turbo_es2017_esm_exports, { - FetchEnctype: () => FetchEnctype, - FetchMethod: () => FetchMethod, - FetchRequest: () => FetchRequest, - FetchResponse: () => FetchResponse, - FrameElement: () => FrameElement, - FrameLoadingStyle: () => FrameLoadingStyle, - FrameRenderer: () => FrameRenderer, - PageRenderer: () => PageRenderer, - PageSnapshot: () => PageSnapshot, - StreamActions: () => StreamActions, - StreamElement: () => StreamElement, - StreamSourceElement: () => StreamSourceElement, - cache: () => cache, - clearCache: () => clearCache, - config: () => config, - connectStreamSource: () => connectStreamSource, - disconnectStreamSource: () => disconnectStreamSource, - fetch: () => fetchWithTurboHeaders, - fetchEnctypeFromString: () => fetchEnctypeFromString, - fetchMethodFromString: () => fetchMethodFromString, - isSafe: () => isSafe, - navigator: () => navigator$1, - registerAdapter: () => registerAdapter, - renderStreamMessage: () => renderStreamMessage, - session: () => session, - setConfirmMethod: () => setConfirmMethod, - setFormMode: () => setFormMode, - setProgressBarDelay: () => setProgressBarDelay, - start: () => start2, - visit: () => visit - }); - (function(prototype) { - if (typeof prototype.requestSubmit == "function") - return; - prototype.requestSubmit = function(submitter2) { - if (submitter2) { - validateSubmitter(submitter2, this); - submitter2.click(); - } else { - submitter2 = document.createElement("input"); - submitter2.type = "submit"; - submitter2.hidden = true; - this.appendChild(submitter2); - submitter2.click(); - this.removeChild(submitter2); - } - }; - function validateSubmitter(submitter2, form) { - submitter2 instanceof HTMLElement || raise(TypeError, "parameter 1 is not of type 'HTMLElement'"); - submitter2.type == "submit" || raise(TypeError, "The specified element is not a submit button"); - submitter2.form == form || raise(DOMException, "The specified element is not owned by this form element", "NotFoundError"); - } - function raise(errorConstructor, message, name) { - throw new errorConstructor("Failed to execute 'requestSubmit' on 'HTMLFormElement': " + message + ".", name); - } - })(HTMLFormElement.prototype); - var submittersByForm = /* @__PURE__ */ new WeakMap(); - function findSubmitterFromClickTarget(target) { - const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null; - const candidate = element ? element.closest("input, button") : null; - return candidate?.type == "submit" ? candidate : null; - } - function clickCaptured(event) { - const submitter2 = findSubmitterFromClickTarget(event.target); - if (submitter2 && submitter2.form) { - submittersByForm.set(submitter2.form, submitter2); - } - } - (function() { - if ("submitter" in Event.prototype) - return; - let prototype = window.Event.prototype; - if ("SubmitEvent" in window) { - const prototypeOfSubmitEvent = window.SubmitEvent.prototype; - if (/Apple Computer/.test(navigator.vendor) && !("submitter" in prototypeOfSubmitEvent)) { - prototype = prototypeOfSubmitEvent; - } else { - return; - } - } - addEventListener("click", clickCaptured, true); - Object.defineProperty(prototype, "submitter", { - get() { - if (this.type == "submit" && this.target instanceof HTMLFormElement) { - return submittersByForm.get(this.target); - } - } - }); - })(); - var FrameLoadingStyle = { - eager: "eager", - lazy: "lazy" - }; - var _FrameElement = class _FrameElement extends HTMLElement { - constructor() { - super(); - __publicField(this, "loaded", Promise.resolve()); - this.delegate = new _FrameElement.delegateConstructor(this); - } - static get observedAttributes() { - return ["disabled", "loading", "src"]; - } - connectedCallback() { - this.delegate.connect(); - } - disconnectedCallback() { - this.delegate.disconnect(); - } - reload() { - return this.delegate.sourceURLReloaded(); - } - attributeChangedCallback(name) { - if (name == "loading") { - this.delegate.loadingStyleChanged(); - } else if (name == "src") { - this.delegate.sourceURLChanged(); - } else if (name == "disabled") { - this.delegate.disabledChanged(); - } - } - /** - * Gets the URL to lazily load source HTML from - */ - get src() { - return this.getAttribute("src"); - } - /** - * Sets the URL to lazily load source HTML from - */ - set src(value) { - if (value) { - this.setAttribute("src", value); - } else { - this.removeAttribute("src"); - } - } - /** - * Gets the refresh mode for the frame. - */ - get refresh() { - return this.getAttribute("refresh"); - } - /** - * Sets the refresh mode for the frame. - */ - set refresh(value) { - if (value) { - this.setAttribute("refresh", value); - } else { - this.removeAttribute("refresh"); - } - } - get shouldReloadWithMorph() { - return this.src && this.refresh === "morph"; - } - /** - * Determines if the element is loading - */ - get loading() { - return frameLoadingStyleFromString(this.getAttribute("loading") || ""); - } - /** - * Sets the value of if the element is loading - */ - set loading(value) { - if (value) { - this.setAttribute("loading", value); - } else { - this.removeAttribute("loading"); - } - } - /** - * Gets the disabled state of the frame. - * - * If disabled, no requests will be intercepted by the frame. - */ - get disabled() { - return this.hasAttribute("disabled"); - } - /** - * Sets the disabled state of the frame. - * - * If disabled, no requests will be intercepted by the frame. - */ - set disabled(value) { - if (value) { - this.setAttribute("disabled", ""); - } else { - this.removeAttribute("disabled"); - } - } - /** - * Gets the autoscroll state of the frame. - * - * If true, the frame will be scrolled into view automatically on update. - */ - get autoscroll() { - return this.hasAttribute("autoscroll"); - } - /** - * Sets the autoscroll state of the frame. - * - * If true, the frame will be scrolled into view automatically on update. - */ - set autoscroll(value) { - if (value) { - this.setAttribute("autoscroll", ""); - } else { - this.removeAttribute("autoscroll"); - } - } - /** - * Determines if the element has finished loading - */ - get complete() { - return !this.delegate.isLoading; - } - /** - * Gets the active state of the frame. - * - * If inactive, source changes will not be observed. - */ - get isActive() { - return this.ownerDocument === document && !this.isPreview; - } - /** - * Sets the active state of the frame. - * - * If inactive, source changes will not be observed. - */ - get isPreview() { - return this.ownerDocument?.documentElement?.hasAttribute("data-turbo-preview"); - } - }; - __publicField(_FrameElement, "delegateConstructor"); - var FrameElement = _FrameElement; - function frameLoadingStyleFromString(style) { - switch (style.toLowerCase()) { - case "lazy": - return FrameLoadingStyle.lazy; - default: - return FrameLoadingStyle.eager; - } - } - var drive = { - enabled: true, - progressBarDelay: 500, - unvisitableExtensions: /* @__PURE__ */ new Set( - [ - ".7z", - ".aac", - ".apk", - ".avi", - ".bmp", - ".bz2", - ".css", - ".csv", - ".deb", - ".dmg", - ".doc", - ".docx", - ".exe", - ".gif", - ".gz", - ".heic", - ".heif", - ".ico", - ".iso", - ".jpeg", - ".jpg", - ".js", - ".json", - ".m4a", - ".mkv", - ".mov", - ".mp3", - ".mp4", - ".mpeg", - ".mpg", - ".msi", - ".ogg", - ".ogv", - ".pdf", - ".pkg", - ".png", - ".ppt", - ".pptx", - ".rar", - ".rtf", - ".svg", - ".tar", - ".tif", - ".tiff", - ".txt", - ".wav", - ".webm", - ".webp", - ".wma", - ".wmv", - ".xls", - ".xlsx", - ".xml", - ".zip" - ] - ) - }; - function activateScriptElement(element) { - if (element.getAttribute("data-turbo-eval") == "false") { - return element; - } else { - const createdScriptElement = document.createElement("script"); - const cspNonce = getCspNonce(); - if (cspNonce) { - createdScriptElement.nonce = cspNonce; - } - createdScriptElement.textContent = element.textContent; - createdScriptElement.async = false; - copyElementAttributes(createdScriptElement, element); - return createdScriptElement; - } - } - function copyElementAttributes(destinationElement, sourceElement) { - for (const { name, value } of sourceElement.attributes) { - destinationElement.setAttribute(name, value); - } - } - function createDocumentFragment(html) { - const template = document.createElement("template"); - template.innerHTML = html; - return template.content; - } - function dispatch(eventName, { target, cancelable, detail } = {}) { - const event = new CustomEvent(eventName, { - cancelable, - bubbles: true, - composed: true, - detail - }); - if (target && target.isConnected) { - target.dispatchEvent(event); - } else { - document.documentElement.dispatchEvent(event); - } - return event; - } - function cancelEvent(event) { - event.preventDefault(); - event.stopImmediatePropagation(); - } - function nextRepaint() { - if (document.visibilityState === "hidden") { - return nextEventLoopTick(); - } else { - return nextAnimationFrame(); - } - } - function nextAnimationFrame() { - return new Promise((resolve) => requestAnimationFrame(() => resolve())); - } - function nextEventLoopTick() { - return new Promise((resolve) => setTimeout(() => resolve(), 0)); - } - function nextMicrotask() { - return Promise.resolve(); - } - function parseHTMLDocument(html = "") { - return new DOMParser().parseFromString(html, "text/html"); - } - function unindent(strings, ...values) { - const lines = interpolate(strings, values).replace(/^\n/, "").split("\n"); - const match = lines[0].match(/^\s+/); - const indent = match ? match[0].length : 0; - return lines.map((line) => line.slice(indent)).join("\n"); - } - function interpolate(strings, values) { - return strings.reduce((result, string, i) => { - const value = values[i] == void 0 ? "" : values[i]; - return result + string + value; - }, ""); - } - function uuid() { - return Array.from({ length: 36 }).map((_, i) => { - if (i == 8 || i == 13 || i == 18 || i == 23) { - return "-"; - } else if (i == 14) { - return "4"; - } else if (i == 19) { - return (Math.floor(Math.random() * 4) + 8).toString(16); - } else { - return Math.floor(Math.random() * 15).toString(16); - } - }).join(""); - } - function getAttribute2(attributeName, ...elements) { - for (const value of elements.map((element) => element?.getAttribute(attributeName))) { - if (typeof value == "string") - return value; - } - return null; - } - function hasAttribute(attributeName, ...elements) { - return elements.some((element) => element && element.hasAttribute(attributeName)); - } - function markAsBusy(...elements) { - for (const element of elements) { - if (element.localName == "turbo-frame") { - element.setAttribute("busy", ""); - } - element.setAttribute("aria-busy", "true"); - } - } - function clearBusyState(...elements) { - for (const element of elements) { - if (element.localName == "turbo-frame") { - element.removeAttribute("busy"); - } - element.removeAttribute("aria-busy"); - } - } - function waitForLoad(element, timeoutInMilliseconds = 2e3) { - return new Promise((resolve) => { - const onComplete = () => { - element.removeEventListener("error", onComplete); - element.removeEventListener("load", onComplete); - resolve(); - }; - element.addEventListener("load", onComplete, { once: true }); - element.addEventListener("error", onComplete, { once: true }); - setTimeout(resolve, timeoutInMilliseconds); - }); - } - function getHistoryMethodForAction(action) { - switch (action) { - case "replace": - return history.replaceState; - case "advance": - case "restore": - return history.pushState; - } - } - function isAction(action) { - return action == "advance" || action == "replace" || action == "restore"; - } - function getVisitAction(...elements) { - const action = getAttribute2("data-turbo-action", ...elements); - return isAction(action) ? action : null; - } - function getMetaElement(name) { - return document.querySelector(`meta[name="${name}"]`); - } - function getMetaContent(name) { - const element = getMetaElement(name); - return element && element.content; - } - function getCspNonce() { - const element = getMetaElement("csp-nonce"); - if (element) { - const { nonce, content } = element; - return nonce == "" ? content : nonce; - } - } - function setMetaContent(name, content) { - let element = getMetaElement(name); - if (!element) { - element = document.createElement("meta"); - element.setAttribute("name", name); - document.head.appendChild(element); - } - element.setAttribute("content", content); - return element; - } - function findClosestRecursively(element, selector2) { - if (element instanceof Element) { - return element.closest(selector2) || findClosestRecursively(element.assignedSlot || element.getRootNode()?.host, selector2); - } - } - function elementIsFocusable(element) { - const inertDisabledOrHidden = "[inert], :disabled, [hidden], details:not([open]), dialog:not([open])"; - return !!element && element.closest(inertDisabledOrHidden) == null && typeof element.focus == "function"; - } - function queryAutofocusableElement(elementOrDocumentFragment) { - return Array.from(elementOrDocumentFragment.querySelectorAll("[autofocus]")).find(elementIsFocusable); - } - async function around(callback, reader) { - const before = reader(); - callback(); - await nextAnimationFrame(); - const after = reader(); - return [before, after]; - } - function doesNotTargetIFrame(name) { - if (name === "_blank") { - return false; - } else if (name) { - for (const element of document.getElementsByName(name)) { - if (element instanceof HTMLIFrameElement) - return false; - } - return true; - } else { - return true; - } - } - function findLinkFromClickTarget(target) { - return findClosestRecursively(target, "a[href]:not([target^=_]):not([download])"); - } - function getLocationForLink(link) { - return expandURL(link.getAttribute("href") || ""); - } - function debounce(fn, delay) { - let timeoutId = null; - return (...args) => { - const callback = () => fn.apply(this, args); - clearTimeout(timeoutId); - timeoutId = setTimeout(callback, delay); - }; - } - var submitter = { - "aria-disabled": { - beforeSubmit: (submitter2) => { - submitter2.setAttribute("aria-disabled", "true"); - submitter2.addEventListener("click", cancelEvent); - }, - afterSubmit: (submitter2) => { - submitter2.removeAttribute("aria-disabled"); - submitter2.removeEventListener("click", cancelEvent); - } - }, - "disabled": { - beforeSubmit: (submitter2) => submitter2.disabled = true, - afterSubmit: (submitter2) => submitter2.disabled = false - } - }; - var _submitter; - var Config = class { - constructor(config2) { - __privateAdd(this, _submitter, null); - Object.assign(this, config2); - } - get submitter() { - return __privateGet(this, _submitter); - } - set submitter(value) { - __privateSet(this, _submitter, submitter[value] || value); - } - }; - _submitter = new WeakMap(); - var forms = new Config({ - mode: "on", - submitter: "disabled" - }); - var config = { - drive, - forms - }; - function expandURL(locatable) { - return new URL(locatable.toString(), document.baseURI); - } - function getAnchor(url) { - let anchorMatch; - if (url.hash) { - return url.hash.slice(1); - } else if (anchorMatch = url.href.match(/#(.*)$/)) { - return anchorMatch[1]; - } - } - function getAction$1(form, submitter2) { - const action = submitter2?.getAttribute("formaction") || form.getAttribute("action") || form.action; - return expandURL(action); - } - function getExtension(url) { - return (getLastPathComponent(url).match(/\.[^.]*$/) || [])[0] || ""; - } - function isPrefixedBy(baseURL, url) { - const prefix = getPrefix(url); - return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix); - } - function locationIsVisitable(location2, rootLocation) { - return isPrefixedBy(location2, rootLocation) && !config.drive.unvisitableExtensions.has(getExtension(location2)); - } - function getRequestURL(url) { - const anchor = getAnchor(url); - return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href; - } - function toCacheKey(url) { - return getRequestURL(url); - } - function urlsAreEqual(left, right) { - return expandURL(left).href == expandURL(right).href; - } - function getPathComponents(url) { - return url.pathname.split("/").slice(1); - } - function getLastPathComponent(url) { - return getPathComponents(url).slice(-1)[0]; - } - function getPrefix(url) { - return addTrailingSlash(url.origin + url.pathname); - } - function addTrailingSlash(value) { - return value.endsWith("/") ? value : value + "/"; - } - var FetchResponse = class { - constructor(response) { - this.response = response; - } - get succeeded() { - return this.response.ok; - } - get failed() { - return !this.succeeded; - } - get clientError() { - return this.statusCode >= 400 && this.statusCode <= 499; - } - get serverError() { - return this.statusCode >= 500 && this.statusCode <= 599; - } - get redirected() { - return this.response.redirected; - } - get location() { - return expandURL(this.response.url); - } - get isHTML() { - return this.contentType && this.contentType.match(/^(?:text\/([^\s;,]+\b)?html|application\/xhtml\+xml)\b/); - } - get statusCode() { - return this.response.status; - } - get contentType() { - return this.header("Content-Type"); - } - get responseText() { - return this.response.clone().text(); - } - get responseHTML() { - if (this.isHTML) { - return this.response.clone().text(); - } else { - return Promise.resolve(void 0); - } - } - header(name) { - return this.response.headers.get(name); - } - }; - var LimitedSet = class extends Set { - constructor(maxSize) { - super(); - this.maxSize = maxSize; - } - add(value) { - if (this.size >= this.maxSize) { - const iterator2 = this.values(); - const oldestValue = iterator2.next().value; - this.delete(oldestValue); - } - super.add(value); - } - }; - var recentRequests = new LimitedSet(20); - var nativeFetch = window.fetch; - function fetchWithTurboHeaders(url, options = {}) { - const modifiedHeaders = new Headers(options.headers || {}); - const requestUID = uuid(); - recentRequests.add(requestUID); - modifiedHeaders.append("X-Turbo-Request-Id", requestUID); - return nativeFetch(url, { - ...options, - headers: modifiedHeaders - }); - } - function fetchMethodFromString(method) { - switch (method.toLowerCase()) { - case "get": - return FetchMethod.get; - case "post": - return FetchMethod.post; - case "put": - return FetchMethod.put; - case "patch": - return FetchMethod.patch; - case "delete": - return FetchMethod.delete; - } - } - var FetchMethod = { - get: "get", - post: "post", - put: "put", - patch: "patch", - delete: "delete" - }; - function fetchEnctypeFromString(encoding) { - switch (encoding.toLowerCase()) { - case FetchEnctype.multipart: - return FetchEnctype.multipart; - case FetchEnctype.plain: - return FetchEnctype.plain; - default: - return FetchEnctype.urlEncoded; - } - } - var FetchEnctype = { - urlEncoded: "application/x-www-form-urlencoded", - multipart: "multipart/form-data", - plain: "text/plain" - }; - var _resolveRequestPromise, _allowRequestToBeIntercepted, allowRequestToBeIntercepted_fn, _willDelegateErrorHandling, willDelegateErrorHandling_fn; - var FetchRequest = class { - constructor(delegate, method, location2, requestBody = new URLSearchParams(), target = null, enctype = FetchEnctype.urlEncoded) { - __privateAdd(this, _allowRequestToBeIntercepted); - __privateAdd(this, _willDelegateErrorHandling); - __publicField(this, "abortController", new AbortController()); - __privateAdd(this, _resolveRequestPromise, (_value) => { - }); - const [url, body] = buildResourceAndBody(expandURL(location2), method, requestBody, enctype); - this.delegate = delegate; - this.url = url; - this.target = target; - this.fetchOptions = { - credentials: "same-origin", - redirect: "follow", - method: method.toUpperCase(), - headers: { ...this.defaultHeaders }, - body, - signal: this.abortSignal, - referrer: this.delegate.referrer?.href - }; - this.enctype = enctype; - } - get method() { - return this.fetchOptions.method; - } - set method(value) { - const fetchBody = this.isSafe ? this.url.searchParams : this.fetchOptions.body || new FormData(); - const fetchMethod = fetchMethodFromString(value) || FetchMethod.get; - this.url.search = ""; - const [url, body] = buildResourceAndBody(this.url, fetchMethod, fetchBody, this.enctype); - this.url = url; - this.fetchOptions.body = body; - this.fetchOptions.method = fetchMethod.toUpperCase(); - } - get headers() { - return this.fetchOptions.headers; - } - set headers(value) { - this.fetchOptions.headers = value; - } - get body() { - if (this.isSafe) { - return this.url.searchParams; - } else { - return this.fetchOptions.body; - } - } - set body(value) { - this.fetchOptions.body = value; - } - get location() { - return this.url; - } - get params() { - return this.url.searchParams; - } - get entries() { - return this.body ? Array.from(this.body.entries()) : []; - } - cancel() { - this.abortController.abort(); - } - async perform() { - const { fetchOptions } = this; - this.delegate.prepareRequest(this); - const event = await __privateMethod(this, _allowRequestToBeIntercepted, allowRequestToBeIntercepted_fn).call(this, fetchOptions); - try { - this.delegate.requestStarted(this); - if (event.detail.fetchRequest) { - this.response = event.detail.fetchRequest.response; - } else { - this.response = fetchWithTurboHeaders(this.url.href, fetchOptions); - } - const response = await this.response; - return await this.receive(response); - } catch (error3) { - if (error3.name !== "AbortError") { - if (__privateMethod(this, _willDelegateErrorHandling, willDelegateErrorHandling_fn).call(this, error3)) { - this.delegate.requestErrored(this, error3); - } - throw error3; - } - } finally { - this.delegate.requestFinished(this); - } - } - async receive(response) { - const fetchResponse = new FetchResponse(response); - const event = dispatch("turbo:before-fetch-response", { - cancelable: true, - detail: { fetchResponse }, - target: this.target - }); - if (event.defaultPrevented) { - this.delegate.requestPreventedHandlingResponse(this, fetchResponse); - } else if (fetchResponse.succeeded) { - this.delegate.requestSucceededWithResponse(this, fetchResponse); - } else { - this.delegate.requestFailedWithResponse(this, fetchResponse); - } - return fetchResponse; - } - get defaultHeaders() { - return { - Accept: "text/html, application/xhtml+xml" - }; - } - get isSafe() { - return isSafe(this.method); - } - get abortSignal() { - return this.abortController.signal; - } - acceptResponseType(mimeType) { - this.headers["Accept"] = [mimeType, this.headers["Accept"]].join(", "); - } - }; - _resolveRequestPromise = new WeakMap(); - _allowRequestToBeIntercepted = new WeakSet(); - allowRequestToBeIntercepted_fn = async function(fetchOptions) { - const requestInterception = new Promise((resolve) => __privateSet(this, _resolveRequestPromise, resolve)); - const event = dispatch("turbo:before-fetch-request", { - cancelable: true, - detail: { - fetchOptions, - url: this.url, - resume: __privateGet(this, _resolveRequestPromise) - }, - target: this.target - }); - this.url = event.detail.url; - if (event.defaultPrevented) - await requestInterception; - return event; - }; - _willDelegateErrorHandling = new WeakSet(); - willDelegateErrorHandling_fn = function(error3) { - const event = dispatch("turbo:fetch-request-error", { - target: this.target, - cancelable: true, - detail: { request: this, error: error3 } - }); - return !event.defaultPrevented; - }; - function isSafe(fetchMethod) { - return fetchMethodFromString(fetchMethod) == FetchMethod.get; - } - function buildResourceAndBody(resource, method, requestBody, enctype) { - const searchParams = Array.from(requestBody).length > 0 ? new URLSearchParams(entriesExcludingFiles(requestBody)) : resource.searchParams; - if (isSafe(method)) { - return [mergeIntoURLSearchParams(resource, searchParams), null]; - } else if (enctype == FetchEnctype.urlEncoded) { - return [resource, searchParams]; - } else { - return [resource, requestBody]; - } - } - function entriesExcludingFiles(requestBody) { - const entries = []; - for (const [name, value] of requestBody) { - if (value instanceof File) - continue; - else - entries.push([name, value]); - } - return entries; - } - function mergeIntoURLSearchParams(url, requestBody) { - const searchParams = new URLSearchParams(entriesExcludingFiles(requestBody)); - url.search = searchParams.toString(); - return url; - } - var AppearanceObserver = class { - constructor(delegate, element) { - __publicField(this, "started", false); - __publicField(this, "intersect", (entries) => { - const lastEntry = entries.slice(-1)[0]; - if (lastEntry?.isIntersecting) { - this.delegate.elementAppearedInViewport(this.element); - } - }); - this.delegate = delegate; - this.element = element; - this.intersectionObserver = new IntersectionObserver(this.intersect); - } - start() { - if (!this.started) { - this.started = true; - this.intersectionObserver.observe(this.element); - } - } - stop() { - if (this.started) { - this.started = false; - this.intersectionObserver.unobserve(this.element); - } - } - }; - var StreamMessage = class { - static wrap(message) { - if (typeof message == "string") { - return new this(createDocumentFragment(message)); - } else { - return message; - } - } - constructor(fragment) { - this.fragment = importStreamElements(fragment); - } - }; - __publicField(StreamMessage, "contentType", "text/vnd.turbo-stream.html"); - function importStreamElements(fragment) { - for (const element of fragment.querySelectorAll("turbo-stream")) { - const streamElement = document.importNode(element, true); - for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll("script")) { - inertScriptElement.replaceWith(activateScriptElement(inertScriptElement)); - } - element.replaceWith(streamElement); - } - return fragment; - } - var PREFETCH_DELAY = 100; - var _prefetchTimeout, _prefetched; - var PrefetchCache = class { - constructor() { - __privateAdd(this, _prefetchTimeout, null); - __privateAdd(this, _prefetched, null); - } - get(url) { - if (__privateGet(this, _prefetched) && __privateGet(this, _prefetched).url === url && __privateGet(this, _prefetched).expire > Date.now()) { - return __privateGet(this, _prefetched).request; - } - } - setLater(url, request, ttl) { - this.clear(); - __privateSet(this, _prefetchTimeout, setTimeout(() => { - request.perform(); - this.set(url, request, ttl); - __privateSet(this, _prefetchTimeout, null); - }, PREFETCH_DELAY)); - } - set(url, request, ttl) { - __privateSet(this, _prefetched, { url, request, expire: new Date((/* @__PURE__ */ new Date()).getTime() + ttl) }); - } - clear() { - if (__privateGet(this, _prefetchTimeout)) - clearTimeout(__privateGet(this, _prefetchTimeout)); - __privateSet(this, _prefetched, null); - } - }; - _prefetchTimeout = new WeakMap(); - _prefetched = new WeakMap(); - var cacheTtl = 10 * 1e3; - var prefetchCache = new PrefetchCache(); - var FormSubmissionState = { - initialized: "initialized", - requesting: "requesting", - waiting: "waiting", - receiving: "receiving", - stopping: "stopping", - stopped: "stopped" - }; - var FormSubmission = class _FormSubmission { - constructor(delegate, formElement, submitter2, mustRedirect = false) { - __publicField(this, "state", FormSubmissionState.initialized); - const method = getMethod(formElement, submitter2); - const action = getAction(getFormAction(formElement, submitter2), method); - const body = buildFormData(formElement, submitter2); - const enctype = getEnctype(formElement, submitter2); - this.delegate = delegate; - this.formElement = formElement; - this.submitter = submitter2; - this.fetchRequest = new FetchRequest(this, method, action, body, formElement, enctype); - this.mustRedirect = mustRedirect; - } - static confirmMethod(message) { - return Promise.resolve(confirm(message)); - } - get method() { - return this.fetchRequest.method; - } - set method(value) { - this.fetchRequest.method = value; - } - get action() { - return this.fetchRequest.url.toString(); - } - set action(value) { - this.fetchRequest.url = expandURL(value); - } - get body() { - return this.fetchRequest.body; - } - get enctype() { - return this.fetchRequest.enctype; - } - get isSafe() { - return this.fetchRequest.isSafe; - } - get location() { - return this.fetchRequest.url; - } - // The submission process - async start() { - const { initialized, requesting } = FormSubmissionState; - const confirmationMessage = getAttribute2("data-turbo-confirm", this.submitter, this.formElement); - if (typeof confirmationMessage === "string") { - const confirmMethod = typeof config.forms.confirm === "function" ? config.forms.confirm : _FormSubmission.confirmMethod; - const answer = await confirmMethod(confirmationMessage, this.formElement, this.submitter); - if (!answer) { - return; - } - } - if (this.state == initialized) { - this.state = requesting; - return this.fetchRequest.perform(); - } - } - stop() { - const { stopping, stopped } = FormSubmissionState; - if (this.state != stopping && this.state != stopped) { - this.state = stopping; - this.fetchRequest.cancel(); - return true; - } - } - // Fetch request delegate - prepareRequest(request) { - if (!request.isSafe) { - const token = getCookieValue(getMetaContent("csrf-param")) || getMetaContent("csrf-token"); - if (token) { - request.headers["X-CSRF-Token"] = token; - } - } - if (this.requestAcceptsTurboStreamResponse(request)) { - request.acceptResponseType(StreamMessage.contentType); - } - } - requestStarted(_request) { - this.state = FormSubmissionState.waiting; - if (this.submitter) - config.forms.submitter.beforeSubmit(this.submitter); - this.setSubmitsWith(); - markAsBusy(this.formElement); - dispatch("turbo:submit-start", { - target: this.formElement, - detail: { formSubmission: this } - }); - this.delegate.formSubmissionStarted(this); - } - requestPreventedHandlingResponse(request, response) { - prefetchCache.clear(); - this.result = { success: response.succeeded, fetchResponse: response }; - } - requestSucceededWithResponse(request, response) { - if (response.clientError || response.serverError) { - this.delegate.formSubmissionFailedWithResponse(this, response); - return; - } - prefetchCache.clear(); - if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) { - const error3 = new Error("Form responses must redirect to another location"); - this.delegate.formSubmissionErrored(this, error3); - } else { - this.state = FormSubmissionState.receiving; - this.result = { success: true, fetchResponse: response }; - this.delegate.formSubmissionSucceededWithResponse(this, response); - } - } - requestFailedWithResponse(request, response) { - this.result = { success: false, fetchResponse: response }; - this.delegate.formSubmissionFailedWithResponse(this, response); - } - requestErrored(request, error3) { - this.result = { success: false, error: error3 }; - this.delegate.formSubmissionErrored(this, error3); - } - requestFinished(_request) { - this.state = FormSubmissionState.stopped; - if (this.submitter) - config.forms.submitter.afterSubmit(this.submitter); - this.resetSubmitterText(); - clearBusyState(this.formElement); - dispatch("turbo:submit-end", { - target: this.formElement, - detail: { formSubmission: this, ...this.result } - }); - this.delegate.formSubmissionFinished(this); - } - // Private - setSubmitsWith() { - if (!this.submitter || !this.submitsWith) - return; - if (this.submitter.matches("button")) { - this.originalSubmitText = this.submitter.innerHTML; - this.submitter.innerHTML = this.submitsWith; - } else if (this.submitter.matches("input")) { - const input = this.submitter; - this.originalSubmitText = input.value; - input.value = this.submitsWith; - } - } - resetSubmitterText() { - if (!this.submitter || !this.originalSubmitText) - return; - if (this.submitter.matches("button")) { - this.submitter.innerHTML = this.originalSubmitText; - } else if (this.submitter.matches("input")) { - const input = this.submitter; - input.value = this.originalSubmitText; - } - } - requestMustRedirect(request) { - return !request.isSafe && this.mustRedirect; - } - requestAcceptsTurboStreamResponse(request) { - return !request.isSafe || hasAttribute("data-turbo-stream", this.submitter, this.formElement); - } - get submitsWith() { - return this.submitter?.getAttribute("data-turbo-submits-with"); - } - }; - function buildFormData(formElement, submitter2) { - const formData = new FormData(formElement); - const name = submitter2?.getAttribute("name"); - const value = submitter2?.getAttribute("value"); - if (name) { - formData.append(name, value || ""); - } - return formData; - } - function getCookieValue(cookieName) { - if (cookieName != null) { - const cookies = document.cookie ? document.cookie.split("; ") : []; - const cookie = cookies.find((cookie2) => cookie2.startsWith(cookieName)); - if (cookie) { - const value = cookie.split("=").slice(1).join("="); - return value ? decodeURIComponent(value) : void 0; - } - } - } - function responseSucceededWithoutRedirect(response) { - return response.statusCode == 200 && !response.redirected; - } - function getFormAction(formElement, submitter2) { - const formElementAction = typeof formElement.action === "string" ? formElement.action : null; - if (submitter2?.hasAttribute("formaction")) { - return submitter2.getAttribute("formaction") || ""; - } else { - return formElement.getAttribute("action") || formElementAction || ""; - } - } - function getAction(formAction, fetchMethod) { - const action = expandURL(formAction); - if (isSafe(fetchMethod)) { - action.search = ""; - } - return action; - } - function getMethod(formElement, submitter2) { - const method = submitter2?.getAttribute("formmethod") || formElement.getAttribute("method") || ""; - return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get; - } - function getEnctype(formElement, submitter2) { - return fetchEnctypeFromString(submitter2?.getAttribute("formenctype") || formElement.enctype); - } - var Snapshot = class { - constructor(element) { - this.element = element; - } - get activeElement() { - return this.element.ownerDocument.activeElement; - } - get children() { - return [...this.element.children]; - } - hasAnchor(anchor) { - return this.getElementForAnchor(anchor) != null; - } - getElementForAnchor(anchor) { - return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null; - } - get isConnected() { - return this.element.isConnected; - } - get firstAutofocusableElement() { - return queryAutofocusableElement(this.element); - } - get permanentElements() { - return queryPermanentElementsAll(this.element); - } - getPermanentElementById(id) { - return getPermanentElementById(this.element, id); - } - getPermanentElementMapForSnapshot(snapshot) { - const permanentElementMap = {}; - for (const currentPermanentElement of this.permanentElements) { - const { id } = currentPermanentElement; - const newPermanentElement = snapshot.getPermanentElementById(id); - if (newPermanentElement) { - permanentElementMap[id] = [currentPermanentElement, newPermanentElement]; - } - } - return permanentElementMap; - } - }; - function getPermanentElementById(node, id) { - return node.querySelector(`#${id}[data-turbo-permanent]`); - } - function queryPermanentElementsAll(node) { - return node.querySelectorAll("[id][data-turbo-permanent]"); - } - var FormSubmitObserver = class { - constructor(delegate, eventTarget) { - __publicField(this, "started", false); - __publicField(this, "submitCaptured", () => { - this.eventTarget.removeEventListener("submit", this.submitBubbled, false); - this.eventTarget.addEventListener("submit", this.submitBubbled, false); - }); - __publicField(this, "submitBubbled", (event) => { - if (!event.defaultPrevented) { - const form = event.target instanceof HTMLFormElement ? event.target : void 0; - const submitter2 = event.submitter || void 0; - if (form && submissionDoesNotDismissDialog(form, submitter2) && submissionDoesNotTargetIFrame(form, submitter2) && this.delegate.willSubmitForm(form, submitter2)) { - event.preventDefault(); - event.stopImmediatePropagation(); - this.delegate.formSubmitted(form, submitter2); - } - } - }); - this.delegate = delegate; - this.eventTarget = eventTarget; - } - start() { - if (!this.started) { - this.eventTarget.addEventListener("submit", this.submitCaptured, true); - this.started = true; - } - } - stop() { - if (this.started) { - this.eventTarget.removeEventListener("submit", this.submitCaptured, true); - this.started = false; - } - } - }; - function submissionDoesNotDismissDialog(form, submitter2) { - const method = submitter2?.getAttribute("formmethod") || form.getAttribute("method"); - return method != "dialog"; - } - function submissionDoesNotTargetIFrame(form, submitter2) { - const target = submitter2?.getAttribute("formtarget") || form.getAttribute("target"); - return doesNotTargetIFrame(target); - } - var _resolveRenderPromise, _resolveInterceptionPromise; - var View2 = class { - constructor(delegate, element) { - __privateAdd(this, _resolveRenderPromise, (_value) => { - }); - __privateAdd(this, _resolveInterceptionPromise, (_value) => { - }); - this.delegate = delegate; - this.element = element; - } - // Scrolling - scrollToAnchor(anchor) { - const element = this.snapshot.getElementForAnchor(anchor); - if (element) { - this.scrollToElement(element); - this.focusElement(element); - } else { - this.scrollToPosition({ x: 0, y: 0 }); - } - } - scrollToAnchorFromLocation(location2) { - this.scrollToAnchor(getAnchor(location2)); - } - scrollToElement(element) { - element.scrollIntoView(); - } - focusElement(element) { - if (element instanceof HTMLElement) { - if (element.hasAttribute("tabindex")) { - element.focus(); - } else { - element.setAttribute("tabindex", "-1"); - element.focus(); - element.removeAttribute("tabindex"); - } - } - } - scrollToPosition({ x, y }) { - this.scrollRoot.scrollTo(x, y); - } - scrollToTop() { - this.scrollToPosition({ x: 0, y: 0 }); - } - get scrollRoot() { - return window; - } - // Rendering - async render(renderer) { - const { isPreview, shouldRender, willRender, newSnapshot: snapshot } = renderer; - const shouldInvalidate = willRender; - if (shouldRender) { - try { - this.renderPromise = new Promise((resolve) => __privateSet(this, _resolveRenderPromise, resolve)); - this.renderer = renderer; - await this.prepareToRenderSnapshot(renderer); - const renderInterception = new Promise((resolve) => __privateSet(this, _resolveInterceptionPromise, resolve)); - const options = { resume: __privateGet(this, _resolveInterceptionPromise), render: this.renderer.renderElement, renderMethod: this.renderer.renderMethod }; - const immediateRender = this.delegate.allowsImmediateRender(snapshot, options); - if (!immediateRender) - await renderInterception; - await this.renderSnapshot(renderer); - this.delegate.viewRenderedSnapshot(snapshot, isPreview, this.renderer.renderMethod); - this.delegate.preloadOnLoadLinksForView(this.element); - this.finishRenderingSnapshot(renderer); - } finally { - delete this.renderer; - __privateGet(this, _resolveRenderPromise).call(this, void 0); - delete this.renderPromise; - } - } else if (shouldInvalidate) { - this.invalidate(renderer.reloadReason); - } - } - invalidate(reason) { - this.delegate.viewInvalidated(reason); - } - async prepareToRenderSnapshot(renderer) { - this.markAsPreview(renderer.isPreview); - await renderer.prepareToRender(); - } - markAsPreview(isPreview) { - if (isPreview) { - this.element.setAttribute("data-turbo-preview", ""); - } else { - this.element.removeAttribute("data-turbo-preview"); - } - } - markVisitDirection(direction) { - this.element.setAttribute("data-turbo-visit-direction", direction); - } - unmarkVisitDirection() { - this.element.removeAttribute("data-turbo-visit-direction"); - } - async renderSnapshot(renderer) { - await renderer.render(); - } - finishRenderingSnapshot(renderer) { - renderer.finishRendering(); - } - }; - _resolveRenderPromise = new WeakMap(); - _resolveInterceptionPromise = new WeakMap(); - var FrameView = class extends View2 { - missing() { - this.element.innerHTML = `Content missing`; - } - get snapshot() { - return new Snapshot(this.element); - } - }; - var LinkInterceptor = class { - constructor(delegate, element) { - __publicField(this, "clickBubbled", (event) => { - if (this.clickEventIsSignificant(event)) { - this.clickEvent = event; - } else { - delete this.clickEvent; - } - }); - __publicField(this, "linkClicked", (event) => { - if (this.clickEvent && this.clickEventIsSignificant(event)) { - if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) { - this.clickEvent.preventDefault(); - event.preventDefault(); - this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent); - } - } - delete this.clickEvent; - }); - __publicField(this, "willVisit", (_event) => { - delete this.clickEvent; - }); - this.delegate = delegate; - this.element = element; - } - start() { - this.element.addEventListener("click", this.clickBubbled); - document.addEventListener("turbo:click", this.linkClicked); - document.addEventListener("turbo:before-visit", this.willVisit); - } - stop() { - this.element.removeEventListener("click", this.clickBubbled); - document.removeEventListener("turbo:click", this.linkClicked); - document.removeEventListener("turbo:before-visit", this.willVisit); - } - clickEventIsSignificant(event) { - const target = event.composed ? event.target?.parentElement : event.target; - const element = findLinkFromClickTarget(target) || target; - return element instanceof Element && element.closest("turbo-frame, html") == this.element; - } - }; - var LinkClickObserver = class { - constructor(delegate, eventTarget) { - __publicField(this, "started", false); - __publicField(this, "clickCaptured", () => { - this.eventTarget.removeEventListener("click", this.clickBubbled, false); - this.eventTarget.addEventListener("click", this.clickBubbled, false); - }); - __publicField(this, "clickBubbled", (event) => { - if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) { - const target = event.composedPath && event.composedPath()[0] || event.target; - const link = findLinkFromClickTarget(target); - if (link && doesNotTargetIFrame(link.target)) { - const location2 = getLocationForLink(link); - if (this.delegate.willFollowLinkToLocation(link, location2, event)) { - event.preventDefault(); - this.delegate.followedLinkToLocation(link, location2); - } - } - } - }); - this.delegate = delegate; - this.eventTarget = eventTarget; - } - start() { - if (!this.started) { - this.eventTarget.addEventListener("click", this.clickCaptured, true); - this.started = true; - } - } - stop() { - if (this.started) { - this.eventTarget.removeEventListener("click", this.clickCaptured, true); - this.started = false; - } - } - clickEventIsSignificant(event) { - return !(event.target && event.target.isContentEditable || event.defaultPrevented || event.which > 1 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey); - } - }; - var FormLinkClickObserver = class { - constructor(delegate, element) { - this.delegate = delegate; - this.linkInterceptor = new LinkClickObserver(this, element); - } - start() { - this.linkInterceptor.start(); - } - stop() { - this.linkInterceptor.stop(); - } - // Link hover observer delegate - canPrefetchRequestToLocation(link, location2) { - return false; - } - prefetchAndCacheRequestToLocation(link, location2) { - return; - } - // Link click observer delegate - willFollowLinkToLocation(link, location2, originalEvent) { - return this.delegate.willSubmitFormLinkToLocation(link, location2, originalEvent) && (link.hasAttribute("data-turbo-method") || link.hasAttribute("data-turbo-stream")); - } - followedLinkToLocation(link, location2) { - const form = document.createElement("form"); - const type = "hidden"; - for (const [name, value] of location2.searchParams) { - form.append(Object.assign(document.createElement("input"), { type, name, value })); - } - const action = Object.assign(location2, { search: "" }); - form.setAttribute("data-turbo", "true"); - form.setAttribute("action", action.href); - form.setAttribute("hidden", ""); - const method = link.getAttribute("data-turbo-method"); - if (method) - form.setAttribute("method", method); - const turboFrame = link.getAttribute("data-turbo-frame"); - if (turboFrame) - form.setAttribute("data-turbo-frame", turboFrame); - const turboAction = getVisitAction(link); - if (turboAction) - form.setAttribute("data-turbo-action", turboAction); - const turboConfirm = link.getAttribute("data-turbo-confirm"); - if (turboConfirm) - form.setAttribute("data-turbo-confirm", turboConfirm); - const turboStream = link.hasAttribute("data-turbo-stream"); - if (turboStream) - form.setAttribute("data-turbo-stream", ""); - this.delegate.submittedFormLinkToLocation(link, location2, form); - document.body.appendChild(form); - form.addEventListener("turbo:submit-end", () => form.remove(), { once: true }); - requestAnimationFrame(() => form.requestSubmit()); - } - }; - var Bardo = class { - static async preservingPermanentElements(delegate, permanentElementMap, callback) { - const bardo = new this(delegate, permanentElementMap); - bardo.enter(); - await callback(); - bardo.leave(); - } - constructor(delegate, permanentElementMap) { - this.delegate = delegate; - this.permanentElementMap = permanentElementMap; - } - enter() { - for (const id in this.permanentElementMap) { - const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id]; - this.delegate.enteringBardo(currentPermanentElement, newPermanentElement); - this.replaceNewPermanentElementWithPlaceholder(newPermanentElement); - } - } - leave() { - for (const id in this.permanentElementMap) { - const [currentPermanentElement] = this.permanentElementMap[id]; - this.replaceCurrentPermanentElementWithClone(currentPermanentElement); - this.replacePlaceholderWithPermanentElement(currentPermanentElement); - this.delegate.leavingBardo(currentPermanentElement); - } - } - replaceNewPermanentElementWithPlaceholder(permanentElement) { - const placeholder = createPlaceholderForPermanentElement(permanentElement); - permanentElement.replaceWith(placeholder); - } - replaceCurrentPermanentElementWithClone(permanentElement) { - const clone6 = permanentElement.cloneNode(true); - permanentElement.replaceWith(clone6); - } - replacePlaceholderWithPermanentElement(permanentElement) { - const placeholder = this.getPlaceholderById(permanentElement.id); - placeholder?.replaceWith(permanentElement); - } - getPlaceholderById(id) { - return this.placeholders.find((element) => element.content == id); - } - get placeholders() { - return [...document.querySelectorAll("meta[name=turbo-permanent-placeholder][content]")]; - } - }; - function createPlaceholderForPermanentElement(permanentElement) { - const element = document.createElement("meta"); - element.setAttribute("name", "turbo-permanent-placeholder"); - element.setAttribute("content", permanentElement.id); - return element; - } - var _activeElement; - var Renderer = class { - constructor(currentSnapshot, newSnapshot, isPreview, willRender = true) { - __privateAdd(this, _activeElement, null); - this.currentSnapshot = currentSnapshot; - this.newSnapshot = newSnapshot; - this.isPreview = isPreview; - this.willRender = willRender; - this.renderElement = this.constructor.renderElement; - this.promise = new Promise((resolve, reject) => this.resolvingFunctions = { resolve, reject }); - } - static renderElement(currentElement, newElement) { - } - get shouldRender() { - return true; - } - get shouldAutofocus() { - return true; - } - get reloadReason() { - return; - } - prepareToRender() { - return; - } - render() { - } - finishRendering() { - if (this.resolvingFunctions) { - this.resolvingFunctions.resolve(); - delete this.resolvingFunctions; - } - } - async preservingPermanentElements(callback) { - await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback); - } - focusFirstAutofocusableElement() { - if (this.shouldAutofocus) { - const element = this.connectedSnapshot.firstAutofocusableElement; - if (element) { - element.focus(); - } - } - } - // Bardo delegate - enteringBardo(currentPermanentElement) { - if (__privateGet(this, _activeElement)) - return; - if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) { - __privateSet(this, _activeElement, this.currentSnapshot.activeElement); - } - } - leavingBardo(currentPermanentElement) { - if (currentPermanentElement.contains(__privateGet(this, _activeElement)) && __privateGet(this, _activeElement) instanceof HTMLElement) { - __privateGet(this, _activeElement).focus(); - __privateSet(this, _activeElement, null); - } - } - get connectedSnapshot() { - return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot; - } - get currentElement() { - return this.currentSnapshot.element; - } - get newElement() { - return this.newSnapshot.element; - } - get permanentElementMap() { - return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot); - } - get renderMethod() { - return "replace"; - } - }; - _activeElement = new WeakMap(); - var FrameRenderer = class extends Renderer { - static renderElement(currentElement, newElement) { - const destinationRange = document.createRange(); - destinationRange.selectNodeContents(currentElement); - destinationRange.deleteContents(); - const frameElement = newElement; - const sourceRange = frameElement.ownerDocument?.createRange(); - if (sourceRange) { - sourceRange.selectNodeContents(frameElement); - currentElement.appendChild(sourceRange.extractContents()); - } - } - constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) { - super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender); - this.delegate = delegate; - } - get shouldRender() { - return true; - } - async render() { - await nextRepaint(); - this.preservingPermanentElements(() => { - this.loadFrameElement(); - }); - this.scrollFrameIntoView(); - await nextRepaint(); - this.focusFirstAutofocusableElement(); - await nextRepaint(); - this.activateScriptElements(); - } - loadFrameElement() { - this.delegate.willRenderFrame(this.currentElement, this.newElement); - this.renderElement(this.currentElement, this.newElement); - } - scrollFrameIntoView() { - if (this.currentElement.autoscroll || this.newElement.autoscroll) { - const element = this.currentElement.firstElementChild; - const block = readScrollLogicalPosition(this.currentElement.getAttribute("data-autoscroll-block"), "end"); - const behavior = readScrollBehavior(this.currentElement.getAttribute("data-autoscroll-behavior"), "auto"); - if (element) { - element.scrollIntoView({ block, behavior }); - return true; - } - } - return false; - } - activateScriptElements() { - for (const inertScriptElement of this.newScriptElements) { - const activatedScriptElement = activateScriptElement(inertScriptElement); - inertScriptElement.replaceWith(activatedScriptElement); - } - } - get newScriptElements() { - return this.currentElement.querySelectorAll("script"); - } - }; - function readScrollLogicalPosition(value, defaultValue) { - if (value == "end" || value == "start" || value == "center" || value == "nearest") { - return value; - } else { - return defaultValue; - } - } - function readScrollBehavior(value, defaultValue) { - if (value == "auto" || value == "smooth") { - return value; - } else { - return defaultValue; - } - } - var Idiomorph = function() { - const noOp = () => { - }; - const defaults2 = { - morphStyle: "outerHTML", - callbacks: { - beforeNodeAdded: noOp, - afterNodeAdded: noOp, - beforeNodeMorphed: noOp, - afterNodeMorphed: noOp, - beforeNodeRemoved: noOp, - afterNodeRemoved: noOp, - beforeAttributeUpdated: noOp - }, - head: { - style: "merge", - shouldPreserve: (elt) => elt.getAttribute("im-preserve") === "true", - shouldReAppend: (elt) => elt.getAttribute("im-re-append") === "true", - shouldRemove: noOp, - afterHeadMorphed: noOp - }, - restoreFocus: true - }; - function morph(oldNode, newContent, config2 = {}) { - oldNode = normalizeElement(oldNode); - const newNode = normalizeParent(newContent); - const ctx = createMorphContext(oldNode, newNode, config2); - const morphedNodes = saveAndRestoreFocus(ctx, () => { - return withHeadBlocking( - ctx, - oldNode, - newNode, - /** @param {MorphContext} ctx */ - (ctx2) => { - if (ctx2.morphStyle === "innerHTML") { - morphChildren2(ctx2, oldNode, newNode); - return Array.from(oldNode.childNodes); - } else { - return morphOuterHTML(ctx2, oldNode, newNode); - } - } - ); - }); - ctx.pantry.remove(); - return morphedNodes; - } - function morphOuterHTML(ctx, oldNode, newNode) { - const oldParent = normalizeParent(oldNode); - let childNodes = Array.from(oldParent.childNodes); - const index = childNodes.indexOf(oldNode); - const rightMargin = childNodes.length - (index + 1); - morphChildren2( - ctx, - oldParent, - newNode, - // these two optional params are the secret sauce - oldNode, - // start point for iteration - oldNode.nextSibling - // end point for iteration - ); - childNodes = Array.from(oldParent.childNodes); - return childNodes.slice(index, childNodes.length - rightMargin); - } - function saveAndRestoreFocus(ctx, fn) { - if (!ctx.config.restoreFocus) - return fn(); - let activeElement = ( - /** @type {HTMLInputElement|HTMLTextAreaElement|null} */ - document.activeElement - ); - if (!(activeElement instanceof HTMLInputElement || activeElement instanceof HTMLTextAreaElement)) { - return fn(); - } - const { id: activeElementId, selectionStart, selectionEnd } = activeElement; - const results = fn(); - if (activeElementId && activeElementId !== document.activeElement?.id) { - activeElement = ctx.target.querySelector(`#${activeElementId}`); - activeElement?.focus(); - } - if (activeElement && !activeElement.selectionEnd && selectionEnd) { - activeElement.setSelectionRange(selectionStart, selectionEnd); - } - return results; - } - const morphChildren2 = /* @__PURE__ */ function() { - function morphChildren3(ctx, oldParent, newParent, insertionPoint = null, endPoint = null) { - if (oldParent instanceof HTMLTemplateElement && newParent instanceof HTMLTemplateElement) { - oldParent = oldParent.content; - newParent = newParent.content; - } - insertionPoint || (insertionPoint = oldParent.firstChild); - for (const newChild of newParent.childNodes) { - if (insertionPoint && insertionPoint != endPoint) { - const bestMatch = findBestMatch( - ctx, - newChild, - insertionPoint, - endPoint - ); - if (bestMatch) { - if (bestMatch !== insertionPoint) { - removeNodesBetween(ctx, insertionPoint, bestMatch); - } - morphNode(bestMatch, newChild, ctx); - insertionPoint = bestMatch.nextSibling; - continue; - } - } - if (newChild instanceof Element && ctx.persistentIds.has(newChild.id)) { - const movedChild = moveBeforeById( - oldParent, - newChild.id, - insertionPoint, - ctx - ); - morphNode(movedChild, newChild, ctx); - insertionPoint = movedChild.nextSibling; - continue; - } - const insertedNode = createNode( - oldParent, - newChild, - insertionPoint, - ctx - ); - if (insertedNode) { - insertionPoint = insertedNode.nextSibling; - } - } - while (insertionPoint && insertionPoint != endPoint) { - const tempNode = insertionPoint; - insertionPoint = insertionPoint.nextSibling; - removeNode2(ctx, tempNode); - } - } - function createNode(oldParent, newChild, insertionPoint, ctx) { - if (ctx.callbacks.beforeNodeAdded(newChild) === false) - return null; - if (ctx.idMap.has(newChild)) { - const newEmptyChild = document.createElement( - /** @type {Element} */ - newChild.tagName - ); - oldParent.insertBefore(newEmptyChild, insertionPoint); - morphNode(newEmptyChild, newChild, ctx); - ctx.callbacks.afterNodeAdded(newEmptyChild); - return newEmptyChild; - } else { - const newClonedChild = document.importNode(newChild, true); - oldParent.insertBefore(newClonedChild, insertionPoint); - ctx.callbacks.afterNodeAdded(newClonedChild); - return newClonedChild; - } - } - const findBestMatch = /* @__PURE__ */ function() { - function findBestMatch2(ctx, node, startPoint, endPoint) { - let softMatch = null; - let nextSibling2 = node.nextSibling; - let siblingSoftMatchCount = 0; - let cursor = startPoint; - while (cursor && cursor != endPoint) { - if (isSoftMatch(cursor, node)) { - if (isIdSetMatch(ctx, cursor, node)) { - return cursor; - } - if (softMatch === null) { - if (!ctx.idMap.has(cursor)) { - softMatch = cursor; - } - } - } - if (softMatch === null && nextSibling2 && isSoftMatch(cursor, nextSibling2)) { - siblingSoftMatchCount++; - nextSibling2 = nextSibling2.nextSibling; - if (siblingSoftMatchCount >= 2) { - softMatch = void 0; - } - } - if (cursor.contains(document.activeElement)) - break; - cursor = cursor.nextSibling; - } - return softMatch || null; - } - function isIdSetMatch(ctx, oldNode, newNode) { - let oldSet = ctx.idMap.get(oldNode); - let newSet = ctx.idMap.get(newNode); - if (!newSet || !oldSet) - return false; - for (const id of oldSet) { - if (newSet.has(id)) { - return true; - } - } - return false; - } - function isSoftMatch(oldNode, newNode) { - const oldElt = ( - /** @type {Element} */ - oldNode - ); - const newElt = ( - /** @type {Element} */ - newNode - ); - return oldElt.nodeType === newElt.nodeType && oldElt.tagName === newElt.tagName && // If oldElt has an `id` with possible state and it doesn't match newElt.id then avoid morphing. - // We'll still match an anonymous node with an IDed newElt, though, because if it got this far, - // its not persistent, and new nodes can't have any hidden state. - (!oldElt.id || oldElt.id === newElt.id); - } - return findBestMatch2; - }(); - function removeNode2(ctx, node) { - if (ctx.idMap.has(node)) { - moveBefore(ctx.pantry, node, null); - } else { - if (ctx.callbacks.beforeNodeRemoved(node) === false) - return; - node.parentNode?.removeChild(node); - ctx.callbacks.afterNodeRemoved(node); - } - } - function removeNodesBetween(ctx, startInclusive, endExclusive) { - let cursor = startInclusive; - while (cursor && cursor !== endExclusive) { - let tempNode = ( - /** @type {Node} */ - cursor - ); - cursor = cursor.nextSibling; - removeNode2(ctx, tempNode); - } - return cursor; - } - function moveBeforeById(parentNode2, id, after, ctx) { - const target = ( - /** @type {Element} - will always be found */ - ctx.target.querySelector(`#${id}`) || ctx.pantry.querySelector(`#${id}`) - ); - removeElementFromAncestorsIdMaps(target, ctx); - moveBefore(parentNode2, target, after); - return target; - } - function removeElementFromAncestorsIdMaps(element, ctx) { - const id = element.id; - while (element = element.parentNode) { - let idSet = ctx.idMap.get(element); - if (idSet) { - idSet.delete(id); - if (!idSet.size) { - ctx.idMap.delete(element); - } - } - } - } - function moveBefore(parentNode2, element, after) { - if (parentNode2.moveBefore) { - try { - parentNode2.moveBefore(element, after); - } catch (e2) { - parentNode2.insertBefore(element, after); - } - } else { - parentNode2.insertBefore(element, after); - } - } - return morphChildren3; - }(); - const morphNode = /* @__PURE__ */ function() { - function morphNode2(oldNode, newContent, ctx) { - if (ctx.ignoreActive && oldNode === document.activeElement) { - return null; - } - if (ctx.callbacks.beforeNodeMorphed(oldNode, newContent) === false) { - return oldNode; - } - if (oldNode instanceof HTMLHeadElement && ctx.head.ignore) - ; - else if (oldNode instanceof HTMLHeadElement && ctx.head.style !== "morph") { - handleHeadElement( - oldNode, - /** @type {HTMLHeadElement} */ - newContent, - ctx - ); - } else { - morphAttributes(oldNode, newContent, ctx); - if (!ignoreValueOfActiveElement(oldNode, ctx)) { - morphChildren2(ctx, oldNode, newContent); - } - } - ctx.callbacks.afterNodeMorphed(oldNode, newContent); - return oldNode; - } - function morphAttributes(oldNode, newNode, ctx) { - let type = newNode.nodeType; - if (type === 1) { - const oldElt = ( - /** @type {Element} */ - oldNode - ); - const newElt = ( - /** @type {Element} */ - newNode - ); - const oldAttributes = oldElt.attributes; - const newAttributes = newElt.attributes; - for (const newAttribute of newAttributes) { - if (ignoreAttribute(newAttribute.name, oldElt, "update", ctx)) { - continue; - } - if (oldElt.getAttribute(newAttribute.name) !== newAttribute.value) { - oldElt.setAttribute(newAttribute.name, newAttribute.value); - } - } - for (let i = oldAttributes.length - 1; 0 <= i; i--) { - const oldAttribute = oldAttributes[i]; - if (!oldAttribute) - continue; - if (!newElt.hasAttribute(oldAttribute.name)) { - if (ignoreAttribute(oldAttribute.name, oldElt, "remove", ctx)) { - continue; - } - oldElt.removeAttribute(oldAttribute.name); - } - } - if (!ignoreValueOfActiveElement(oldElt, ctx)) { - syncInputValue(oldElt, newElt, ctx); - } - } - if (type === 8 || type === 3) { - if (oldNode.nodeValue !== newNode.nodeValue) { - oldNode.nodeValue = newNode.nodeValue; - } - } - } - function syncInputValue(oldElement, newElement, ctx) { - if (oldElement instanceof HTMLInputElement && newElement instanceof HTMLInputElement && newElement.type !== "file") { - let newValue = newElement.value; - let oldValue = oldElement.value; - syncBooleanAttribute(oldElement, newElement, "checked", ctx); - syncBooleanAttribute(oldElement, newElement, "disabled", ctx); - if (!newElement.hasAttribute("value")) { - if (!ignoreAttribute("value", oldElement, "remove", ctx)) { - oldElement.value = ""; - oldElement.removeAttribute("value"); - } - } else if (oldValue !== newValue) { - if (!ignoreAttribute("value", oldElement, "update", ctx)) { - oldElement.setAttribute("value", newValue); - oldElement.value = newValue; - } - } - } else if (oldElement instanceof HTMLOptionElement && newElement instanceof HTMLOptionElement) { - syncBooleanAttribute(oldElement, newElement, "selected", ctx); - } else if (oldElement instanceof HTMLTextAreaElement && newElement instanceof HTMLTextAreaElement) { - let newValue = newElement.value; - let oldValue = oldElement.value; - if (ignoreAttribute("value", oldElement, "update", ctx)) { - return; - } - if (newValue !== oldValue) { - oldElement.value = newValue; - } - if (oldElement.firstChild && oldElement.firstChild.nodeValue !== newValue) { - oldElement.firstChild.nodeValue = newValue; - } - } - } - function syncBooleanAttribute(oldElement, newElement, attributeName, ctx) { - const newLiveValue = newElement[attributeName], oldLiveValue = oldElement[attributeName]; - if (newLiveValue !== oldLiveValue) { - const ignoreUpdate = ignoreAttribute( - attributeName, - oldElement, - "update", - ctx - ); - if (!ignoreUpdate) { - oldElement[attributeName] = newElement[attributeName]; - } - if (newLiveValue) { - if (!ignoreUpdate) { - oldElement.setAttribute(attributeName, ""); - } - } else { - if (!ignoreAttribute(attributeName, oldElement, "remove", ctx)) { - oldElement.removeAttribute(attributeName); - } - } - } - } - function ignoreAttribute(attr, element, updateType, ctx) { - if (attr === "value" && ctx.ignoreActiveValue && element === document.activeElement) { - return true; - } - return ctx.callbacks.beforeAttributeUpdated(attr, element, updateType) === false; - } - function ignoreValueOfActiveElement(possibleActiveElement, ctx) { - return !!ctx.ignoreActiveValue && possibleActiveElement === document.activeElement && possibleActiveElement !== document.body; - } - return morphNode2; - }(); - function withHeadBlocking(ctx, oldNode, newNode, callback) { - if (ctx.head.block) { - const oldHead = oldNode.querySelector("head"); - const newHead = newNode.querySelector("head"); - if (oldHead && newHead) { - const promises = handleHeadElement(oldHead, newHead, ctx); - return Promise.all(promises).then(() => { - const newCtx = Object.assign(ctx, { - head: { - block: false, - ignore: true - } - }); - return callback(newCtx); - }); - } - } - return callback(ctx); - } - function handleHeadElement(oldHead, newHead, ctx) { - let added = []; - let removed = []; - let preserved = []; - let nodesToAppend = []; - let srcToNewHeadNodes = /* @__PURE__ */ new Map(); - for (const newHeadChild of newHead.children) { - srcToNewHeadNodes.set(newHeadChild.outerHTML, newHeadChild); - } - for (const currentHeadElt of oldHead.children) { - let inNewContent = srcToNewHeadNodes.has(currentHeadElt.outerHTML); - let isReAppended = ctx.head.shouldReAppend(currentHeadElt); - let isPreserved = ctx.head.shouldPreserve(currentHeadElt); - if (inNewContent || isPreserved) { - if (isReAppended) { - removed.push(currentHeadElt); - } else { - srcToNewHeadNodes.delete(currentHeadElt.outerHTML); - preserved.push(currentHeadElt); - } - } else { - if (ctx.head.style === "append") { - if (isReAppended) { - removed.push(currentHeadElt); - nodesToAppend.push(currentHeadElt); - } - } else { - if (ctx.head.shouldRemove(currentHeadElt) !== false) { - removed.push(currentHeadElt); - } - } - } - } - nodesToAppend.push(...srcToNewHeadNodes.values()); - let promises = []; - for (const newNode of nodesToAppend) { - let newElt = ( - /** @type {ChildNode} */ - document.createRange().createContextualFragment(newNode.outerHTML).firstChild - ); - if (ctx.callbacks.beforeNodeAdded(newElt) !== false) { - if ("href" in newElt && newElt.href || "src" in newElt && newElt.src) { - let resolve; - let promise = new Promise(function(_resolve) { - resolve = _resolve; - }); - newElt.addEventListener("load", function() { - resolve(); - }); - promises.push(promise); - } - oldHead.appendChild(newElt); - ctx.callbacks.afterNodeAdded(newElt); - added.push(newElt); - } - } - for (const removedElement of removed) { - if (ctx.callbacks.beforeNodeRemoved(removedElement) !== false) { - oldHead.removeChild(removedElement); - ctx.callbacks.afterNodeRemoved(removedElement); - } - } - ctx.head.afterHeadMorphed(oldHead, { - added, - kept: preserved, - removed - }); - return promises; - } - const createMorphContext = /* @__PURE__ */ function() { - function createMorphContext2(oldNode, newContent, config2) { - const { persistentIds, idMap } = createIdMaps(oldNode, newContent); - const mergedConfig = mergeDefaults(config2); - const morphStyle = mergedConfig.morphStyle || "outerHTML"; - if (!["innerHTML", "outerHTML"].includes(morphStyle)) { - throw `Do not understand how to morph style ${morphStyle}`; - } - return { - target: oldNode, - newContent, - config: mergedConfig, - morphStyle, - ignoreActive: mergedConfig.ignoreActive, - ignoreActiveValue: mergedConfig.ignoreActiveValue, - restoreFocus: mergedConfig.restoreFocus, - idMap, - persistentIds, - pantry: createPantry(), - callbacks: mergedConfig.callbacks, - head: mergedConfig.head - }; - } - function mergeDefaults(config2) { - let finalConfig = Object.assign({}, defaults2); - Object.assign(finalConfig, config2); - finalConfig.callbacks = Object.assign( - {}, - defaults2.callbacks, - config2.callbacks - ); - finalConfig.head = Object.assign({}, defaults2.head, config2.head); - return finalConfig; - } - function createPantry() { - const pantry = document.createElement("div"); - pantry.hidden = true; - document.body.insertAdjacentElement("afterend", pantry); - return pantry; - } - function findIdElements(root) { - let elements = Array.from(root.querySelectorAll("[id]")); - if (root.id) { - elements.push(root); - } - return elements; - } - function populateIdMapWithTree(idMap, persistentIds, root, elements) { - for (const elt of elements) { - if (persistentIds.has(elt.id)) { - let current = elt; - while (current) { - let idSet = idMap.get(current); - if (idSet == null) { - idSet = /* @__PURE__ */ new Set(); - idMap.set(current, idSet); - } - idSet.add(elt.id); - if (current === root) - break; - current = current.parentElement; - } - } - } - } - function createIdMaps(oldContent, newContent) { - const oldIdElements = findIdElements(oldContent); - const newIdElements = findIdElements(newContent); - const persistentIds = createPersistentIds(oldIdElements, newIdElements); - let idMap = /* @__PURE__ */ new Map(); - populateIdMapWithTree(idMap, persistentIds, oldContent, oldIdElements); - const newRoot = newContent.__idiomorphRoot || newContent; - populateIdMapWithTree(idMap, persistentIds, newRoot, newIdElements); - return { persistentIds, idMap }; - } - function createPersistentIds(oldIdElements, newIdElements) { - let duplicateIds = /* @__PURE__ */ new Set(); - let oldIdTagNameMap = /* @__PURE__ */ new Map(); - for (const { id, tagName } of oldIdElements) { - if (oldIdTagNameMap.has(id)) { - duplicateIds.add(id); - } else { - oldIdTagNameMap.set(id, tagName); - } - } - let persistentIds = /* @__PURE__ */ new Set(); - for (const { id, tagName } of newIdElements) { - if (persistentIds.has(id)) { - duplicateIds.add(id); - } else if (oldIdTagNameMap.get(id) === tagName) { - persistentIds.add(id); - } - } - for (const id of duplicateIds) { - persistentIds.delete(id); - } - return persistentIds; - } - return createMorphContext2; - }(); - const { normalizeElement, normalizeParent } = /* @__PURE__ */ function() { - const generatedByIdiomorph = /* @__PURE__ */ new WeakSet(); - function normalizeElement2(content) { - if (content instanceof Document) { - return content.documentElement; - } else { - return content; - } - } - function normalizeParent2(newContent) { - if (newContent == null) { - return document.createElement("div"); - } else if (typeof newContent === "string") { - return normalizeParent2(parseContent(newContent)); - } else if (generatedByIdiomorph.has( - /** @type {Element} */ - newContent - )) { - return ( - /** @type {Element} */ - newContent - ); - } else if (newContent instanceof Node) { - if (newContent.parentNode) { - return createDuckTypedParent(newContent); - } else { - const dummyParent = document.createElement("div"); - dummyParent.append(newContent); - return dummyParent; - } - } else { - const dummyParent = document.createElement("div"); - for (const elt of [...newContent]) { - dummyParent.append(elt); - } - return dummyParent; - } - } - function createDuckTypedParent(newContent) { - return ( - /** @type {Element} */ - /** @type {unknown} */ - { - childNodes: [newContent], - /** @ts-ignore - cover your eyes for a minute, tsc */ - querySelectorAll: (s) => { - const elements = newContent.querySelectorAll(s); - return newContent.matches(s) ? [newContent, ...elements] : elements; - }, - /** @ts-ignore */ - insertBefore: (n, r) => newContent.parentNode.insertBefore(n, r), - /** @ts-ignore */ - moveBefore: (n, r) => newContent.parentNode.moveBefore(n, r), - // for later use with populateIdMapWithTree to halt upwards iteration - get __idiomorphRoot() { - return newContent; - } - } - ); - } - function parseContent(newContent) { - let parser = new DOMParser(); - let contentWithSvgsRemoved = newContent.replace( - /]*>|>)([\s\S]*?)<\/svg>/gim, - "" - ); - if (contentWithSvgsRemoved.match(/<\/html>/) || contentWithSvgsRemoved.match(/<\/head>/) || contentWithSvgsRemoved.match(/<\/body>/)) { - let content = parser.parseFromString(newContent, "text/html"); - if (contentWithSvgsRemoved.match(/<\/html>/)) { - generatedByIdiomorph.add(content); - return content; - } else { - let htmlElement = content.firstChild; - if (htmlElement) { - generatedByIdiomorph.add(htmlElement); - } - return htmlElement; - } - } else { - let responseDoc = parser.parseFromString( - "", - "text/html" - ); - let content = ( - /** @type {HTMLTemplateElement} */ - responseDoc.body.querySelector("template").content - ); - generatedByIdiomorph.add(content); - return content; - } - } - return { normalizeElement: normalizeElement2, normalizeParent: normalizeParent2 }; - }(); - return { - morph, - defaults: defaults2 - }; - }(); - function morphElements(currentElement, newElement, { callbacks, ...options } = {}) { - Idiomorph.morph(currentElement, newElement, { - ...options, - callbacks: new DefaultIdiomorphCallbacks(callbacks) - }); - } - function morphChildren(currentElement, newElement) { - morphElements(currentElement, newElement.childNodes, { - morphStyle: "innerHTML" - }); - } - var _beforeNodeMorphed; - var DefaultIdiomorphCallbacks = class { - constructor({ beforeNodeMorphed } = {}) { - __privateAdd(this, _beforeNodeMorphed, void 0); - __publicField(this, "beforeNodeAdded", (node) => { - return !(node.id && node.hasAttribute("data-turbo-permanent") && document.getElementById(node.id)); - }); - __publicField(this, "beforeNodeMorphed", (currentElement, newElement) => { - if (currentElement instanceof Element) { - if (!currentElement.hasAttribute("data-turbo-permanent") && __privateGet(this, _beforeNodeMorphed).call(this, currentElement, newElement)) { - const event = dispatch("turbo:before-morph-element", { - cancelable: true, - target: currentElement, - detail: { currentElement, newElement } - }); - return !event.defaultPrevented; - } else { - return false; - } - } - }); - __publicField(this, "beforeAttributeUpdated", (attributeName, target, mutationType) => { - const event = dispatch("turbo:before-morph-attribute", { - cancelable: true, - target, - detail: { attributeName, mutationType } - }); - return !event.defaultPrevented; - }); - __publicField(this, "beforeNodeRemoved", (node) => { - return this.beforeNodeMorphed(node); - }); - __publicField(this, "afterNodeMorphed", (currentElement, newElement) => { - if (currentElement instanceof Element) { - dispatch("turbo:morph-element", { - target: currentElement, - detail: { currentElement, newElement } - }); - } - }); - __privateSet(this, _beforeNodeMorphed, beforeNodeMorphed || (() => true)); - } - }; - _beforeNodeMorphed = new WeakMap(); - var MorphingFrameRenderer = class extends FrameRenderer { - static renderElement(currentElement, newElement) { - dispatch("turbo:before-frame-morph", { - target: currentElement, - detail: { currentElement, newElement } - }); - morphChildren(currentElement, newElement); - } - async preservingPermanentElements(callback) { - return await callback(); - } - }; - var _ProgressBar = class _ProgressBar { - constructor() { - __publicField(this, "hiding", false); - __publicField(this, "value", 0); - __publicField(this, "visible", false); - __publicField(this, "trickle", () => { - this.setValue(this.value + Math.random() / 100); - }); - this.stylesheetElement = this.createStylesheetElement(); - this.progressElement = this.createProgressElement(); - this.installStylesheetElement(); - this.setValue(0); - } - /*ms*/ - static get defaultCSS() { - return unindent` - .turbo-progress-bar { - position: fixed; - display: block; - top: 0; - left: 0; - height: 3px; - background: #0076ff; - z-index: 2147483647; - transition: - width ${_ProgressBar.animationDuration}ms ease-out, - opacity ${_ProgressBar.animationDuration / 2}ms ${_ProgressBar.animationDuration / 2}ms ease-in; - transform: translate3d(0, 0, 0); - } - `; - } - show() { - if (!this.visible) { - this.visible = true; - this.installProgressElement(); - this.startTrickling(); - } - } - hide() { - if (this.visible && !this.hiding) { - this.hiding = true; - this.fadeProgressElement(() => { - this.uninstallProgressElement(); - this.stopTrickling(); - this.visible = false; - this.hiding = false; - }); - } - } - setValue(value) { - this.value = value; - this.refresh(); - } - // Private - installStylesheetElement() { - document.head.insertBefore(this.stylesheetElement, document.head.firstChild); - } - installProgressElement() { - this.progressElement.style.width = "0"; - this.progressElement.style.opacity = "1"; - document.documentElement.insertBefore(this.progressElement, document.body); - this.refresh(); - } - fadeProgressElement(callback) { - this.progressElement.style.opacity = "0"; - setTimeout(callback, _ProgressBar.animationDuration * 1.5); - } - uninstallProgressElement() { - if (this.progressElement.parentNode) { - document.documentElement.removeChild(this.progressElement); - } - } - startTrickling() { - if (!this.trickleInterval) { - this.trickleInterval = window.setInterval(this.trickle, _ProgressBar.animationDuration); - } - } - stopTrickling() { - window.clearInterval(this.trickleInterval); - delete this.trickleInterval; - } - refresh() { - requestAnimationFrame(() => { - this.progressElement.style.width = `${10 + this.value * 90}%`; - }); - } - createStylesheetElement() { - const element = document.createElement("style"); - element.type = "text/css"; - element.textContent = _ProgressBar.defaultCSS; - const cspNonce = getCspNonce(); - if (cspNonce) { - element.nonce = cspNonce; - } - return element; - } - createProgressElement() { - const element = document.createElement("div"); - element.className = "turbo-progress-bar"; - return element; - } - }; - __publicField(_ProgressBar, "animationDuration", 300); - var ProgressBar = _ProgressBar; - var HeadSnapshot = class extends Snapshot { - constructor() { - super(...arguments); - __publicField(this, "detailsByOuterHTML", this.children.filter((element) => !elementIsNoscript(element)).map((element) => elementWithoutNonce(element)).reduce((result, element) => { - const { outerHTML } = element; - const details = outerHTML in result ? result[outerHTML] : { - type: elementType(element), - tracked: elementIsTracked(element), - elements: [] - }; - return { - ...result, - [outerHTML]: { - ...details, - elements: [...details.elements, element] - } - }; - }, {})); - } - get trackedElementSignature() { - return Object.keys(this.detailsByOuterHTML).filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked).join(""); - } - getScriptElementsNotInSnapshot(snapshot) { - return this.getElementsMatchingTypeNotInSnapshot("script", snapshot); - } - getStylesheetElementsNotInSnapshot(snapshot) { - return this.getElementsMatchingTypeNotInSnapshot("stylesheet", snapshot); - } - getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) { - return Object.keys(this.detailsByOuterHTML).filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML)).map((outerHTML) => this.detailsByOuterHTML[outerHTML]).filter(({ type }) => type == matchedType).map(({ elements: [element] }) => element); - } - get provisionalElements() { - return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => { - const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML]; - if (type == null && !tracked) { - return [...result, ...elements]; - } else if (elements.length > 1) { - return [...result, ...elements.slice(1)]; - } else { - return result; - } - }, []); - } - getMetaValue(name) { - const element = this.findMetaElementByName(name); - return element ? element.getAttribute("content") : null; - } - findMetaElementByName(name) { - return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => { - const { - elements: [element] - } = this.detailsByOuterHTML[outerHTML]; - return elementIsMetaElementWithName(element, name) ? element : result; - }, void 0 | void 0); - } - }; - function elementType(element) { - if (elementIsScript(element)) { - return "script"; - } else if (elementIsStylesheet(element)) { - return "stylesheet"; - } - } - function elementIsTracked(element) { - return element.getAttribute("data-turbo-track") == "reload"; - } - function elementIsScript(element) { - const tagName = element.localName; - return tagName == "script"; - } - function elementIsNoscript(element) { - const tagName = element.localName; - return tagName == "noscript"; - } - function elementIsStylesheet(element) { - const tagName = element.localName; - return tagName == "style" || tagName == "link" && element.getAttribute("rel") == "stylesheet"; - } - function elementIsMetaElementWithName(element, name) { - const tagName = element.localName; - return tagName == "meta" && element.getAttribute("name") == name; - } - function elementWithoutNonce(element) { - if (element.hasAttribute("nonce")) { - element.setAttribute("nonce", ""); - } - return element; - } - var PageSnapshot = class _PageSnapshot extends Snapshot { - static fromHTMLString(html = "") { - return this.fromDocument(parseHTMLDocument(html)); - } - static fromElement(element) { - return this.fromDocument(element.ownerDocument); - } - static fromDocument({ documentElement, body, head }) { - return new this(documentElement, body, new HeadSnapshot(head)); - } - constructor(documentElement, body, headSnapshot) { - super(body); - this.documentElement = documentElement; - this.headSnapshot = headSnapshot; - } - clone() { - const clonedElement = this.element.cloneNode(true); - const selectElements = this.element.querySelectorAll("select"); - const clonedSelectElements = clonedElement.querySelectorAll("select"); - for (const [index, source] of selectElements.entries()) { - const clone6 = clonedSelectElements[index]; - for (const option of clone6.selectedOptions) - option.selected = false; - for (const option of source.selectedOptions) - clone6.options[option.index].selected = true; - } - for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type="password"]')) { - clonedPasswordInput.value = ""; - } - return new _PageSnapshot(this.documentElement, clonedElement, this.headSnapshot); - } - get lang() { - return this.documentElement.getAttribute("lang"); - } - get headElement() { - return this.headSnapshot.element; - } - get rootLocation() { - const root = this.getSetting("root") ?? "/"; - return expandURL(root); - } - get cacheControlValue() { - return this.getSetting("cache-control"); - } - get isPreviewable() { - return this.cacheControlValue != "no-preview"; - } - get isCacheable() { - return this.cacheControlValue != "no-cache"; - } - get isVisitable() { - return this.getSetting("visit-control") != "reload"; - } - get prefersViewTransitions() { - return this.headSnapshot.getMetaValue("view-transition") === "same-origin"; - } - get shouldMorphPage() { - return this.getSetting("refresh-method") === "morph"; - } - get shouldPreserveScrollPosition() { - return this.getSetting("refresh-scroll") === "preserve"; - } - // Private - getSetting(name) { - return this.headSnapshot.getMetaValue(`turbo-${name}`); - } - }; - var _viewTransitionStarted, _lastOperation; - var ViewTransitioner = class { - constructor() { - __privateAdd(this, _viewTransitionStarted, false); - __privateAdd(this, _lastOperation, Promise.resolve()); - } - renderChange(useViewTransition, render2) { - if (useViewTransition && this.viewTransitionsAvailable && !__privateGet(this, _viewTransitionStarted)) { - __privateSet(this, _viewTransitionStarted, true); - __privateSet(this, _lastOperation, __privateGet(this, _lastOperation).then(async () => { - await document.startViewTransition(render2).finished; - })); - } else { - __privateSet(this, _lastOperation, __privateGet(this, _lastOperation).then(render2)); - } - return __privateGet(this, _lastOperation); - } - get viewTransitionsAvailable() { - return document.startViewTransition; - } - }; - _viewTransitionStarted = new WeakMap(); - _lastOperation = new WeakMap(); - var defaultOptions = { - action: "advance", - historyChanged: false, - visitCachedSnapshot: () => { - }, - willRender: true, - updateHistory: true, - shouldCacheSnapshot: true, - acceptsStreamResponse: false - }; - var TimingMetric = { - visitStart: "visitStart", - requestStart: "requestStart", - requestEnd: "requestEnd", - visitEnd: "visitEnd" - }; - var VisitState = { - initialized: "initialized", - started: "started", - canceled: "canceled", - failed: "failed", - completed: "completed" - }; - var SystemStatusCode = { - networkFailure: 0, - timeoutFailure: -1, - contentTypeMismatch: -2 - }; - var Direction = { - advance: "forward", - restore: "back", - replace: "none" - }; - var Visit = class { - constructor(delegate, location2, restorationIdentifier, options = {}) { - __publicField(this, "identifier", uuid()); - // Required by turbo-ios - __publicField(this, "timingMetrics", {}); - __publicField(this, "followedRedirect", false); - __publicField(this, "historyChanged", false); - __publicField(this, "scrolled", false); - __publicField(this, "shouldCacheSnapshot", true); - __publicField(this, "acceptsStreamResponse", false); - __publicField(this, "snapshotCached", false); - __publicField(this, "state", VisitState.initialized); - __publicField(this, "viewTransitioner", new ViewTransitioner()); - this.delegate = delegate; - this.location = location2; - this.restorationIdentifier = restorationIdentifier || uuid(); - const { - action, - historyChanged, - referrer, - snapshot, - snapshotHTML, - response, - visitCachedSnapshot, - willRender, - updateHistory, - shouldCacheSnapshot, - acceptsStreamResponse, - direction - } = { - ...defaultOptions, - ...options - }; - this.action = action; - this.historyChanged = historyChanged; - this.referrer = referrer; - this.snapshot = snapshot; - this.snapshotHTML = snapshotHTML; - this.response = response; - this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action); - this.isPageRefresh = this.view.isPageRefresh(this); - this.visitCachedSnapshot = visitCachedSnapshot; - this.willRender = willRender; - this.updateHistory = updateHistory; - this.scrolled = !willRender; - this.shouldCacheSnapshot = shouldCacheSnapshot; - this.acceptsStreamResponse = acceptsStreamResponse; - this.direction = direction || Direction[action]; - } - get adapter() { - return this.delegate.adapter; - } - get view() { - return this.delegate.view; - } - get history() { - return this.delegate.history; - } - get restorationData() { - return this.history.getRestorationDataForIdentifier(this.restorationIdentifier); - } - get silent() { - return this.isSamePage; - } - start() { - if (this.state == VisitState.initialized) { - this.recordTimingMetric(TimingMetric.visitStart); - this.state = VisitState.started; - this.adapter.visitStarted(this); - this.delegate.visitStarted(this); - } - } - cancel() { - if (this.state == VisitState.started) { - if (this.request) { - this.request.cancel(); - } - this.cancelRender(); - this.state = VisitState.canceled; - } - } - complete() { - if (this.state == VisitState.started) { - this.recordTimingMetric(TimingMetric.visitEnd); - this.adapter.visitCompleted(this); - this.state = VisitState.completed; - this.followRedirect(); - if (!this.followedRedirect) { - this.delegate.visitCompleted(this); - } - } - } - fail() { - if (this.state == VisitState.started) { - this.state = VisitState.failed; - this.adapter.visitFailed(this); - this.delegate.visitCompleted(this); - } - } - changeHistory() { - if (!this.historyChanged && this.updateHistory) { - const actionForHistory = this.location.href === this.referrer?.href ? "replace" : this.action; - const method = getHistoryMethodForAction(actionForHistory); - this.history.update(method, this.location, this.restorationIdentifier); - this.historyChanged = true; - } - } - issueRequest() { - if (this.hasPreloadedResponse()) { - this.simulateRequest(); - } else if (this.shouldIssueRequest() && !this.request) { - this.request = new FetchRequest(this, FetchMethod.get, this.location); - this.request.perform(); - } - } - simulateRequest() { - if (this.response) { - this.startRequest(); - this.recordResponse(); - this.finishRequest(); - } - } - startRequest() { - this.recordTimingMetric(TimingMetric.requestStart); - this.adapter.visitRequestStarted(this); - } - recordResponse(response = this.response) { - this.response = response; - if (response) { - const { statusCode } = response; - if (isSuccessful(statusCode)) { - this.adapter.visitRequestCompleted(this); - } else { - this.adapter.visitRequestFailedWithStatusCode(this, statusCode); - } - } - } - finishRequest() { - this.recordTimingMetric(TimingMetric.requestEnd); - this.adapter.visitRequestFinished(this); - } - loadResponse() { - if (this.response) { - const { statusCode, responseHTML } = this.response; - this.render(async () => { - if (this.shouldCacheSnapshot) - this.cacheSnapshot(); - if (this.view.renderPromise) - await this.view.renderPromise; - if (isSuccessful(statusCode) && responseHTML != null) { - const snapshot = PageSnapshot.fromHTMLString(responseHTML); - await this.renderPageSnapshot(snapshot, false); - this.adapter.visitRendered(this); - this.complete(); - } else { - await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this); - this.adapter.visitRendered(this); - this.fail(); - } - }); - } - } - getCachedSnapshot() { - const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot(); - if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) { - if (this.action == "restore" || snapshot.isPreviewable) { - return snapshot; - } - } - } - getPreloadedSnapshot() { - if (this.snapshotHTML) { - return PageSnapshot.fromHTMLString(this.snapshotHTML); - } - } - hasCachedSnapshot() { - return this.getCachedSnapshot() != null; - } - loadCachedSnapshot() { - const snapshot = this.getCachedSnapshot(); - if (snapshot) { - const isPreview = this.shouldIssueRequest(); - this.render(async () => { - this.cacheSnapshot(); - if (this.isSamePage || this.isPageRefresh) { - this.adapter.visitRendered(this); - } else { - if (this.view.renderPromise) - await this.view.renderPromise; - await this.renderPageSnapshot(snapshot, isPreview); - this.adapter.visitRendered(this); - if (!isPreview) { - this.complete(); - } - } - }); - } - } - followRedirect() { - if (this.redirectedToLocation && !this.followedRedirect && this.response?.redirected) { - this.adapter.visitProposedToLocation(this.redirectedToLocation, { - action: "replace", - response: this.response, - shouldCacheSnapshot: false, - willRender: false - }); - this.followedRedirect = true; - } - } - goToSamePageAnchor() { - if (this.isSamePage) { - this.render(async () => { - this.cacheSnapshot(); - this.performScroll(); - this.changeHistory(); - this.adapter.visitRendered(this); - }); - } - } - // Fetch request delegate - prepareRequest(request) { - if (this.acceptsStreamResponse) { - request.acceptResponseType(StreamMessage.contentType); - } - } - requestStarted() { - this.startRequest(); - } - requestPreventedHandlingResponse(_request, _response) { - } - async requestSucceededWithResponse(request, response) { - const responseHTML = await response.responseHTML; - const { redirected, statusCode } = response; - if (responseHTML == void 0) { - this.recordResponse({ - statusCode: SystemStatusCode.contentTypeMismatch, - redirected - }); - } else { - this.redirectedToLocation = response.redirected ? response.location : void 0; - this.recordResponse({ statusCode, responseHTML, redirected }); - } - } - async requestFailedWithResponse(request, response) { - const responseHTML = await response.responseHTML; - const { redirected, statusCode } = response; - if (responseHTML == void 0) { - this.recordResponse({ - statusCode: SystemStatusCode.contentTypeMismatch, - redirected - }); - } else { - this.recordResponse({ statusCode, responseHTML, redirected }); - } - } - requestErrored(_request, _error) { - this.recordResponse({ - statusCode: SystemStatusCode.networkFailure, - redirected: false - }); - } - requestFinished() { - this.finishRequest(); - } - // Scrolling - performScroll() { - if (!this.scrolled && !this.view.forceReloaded && !this.view.shouldPreserveScrollPosition(this)) { - if (this.action == "restore") { - this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop(); - } else { - this.scrollToAnchor() || this.view.scrollToTop(); - } - if (this.isSamePage) { - this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location); - } - this.scrolled = true; - } - } - scrollToRestoredPosition() { - const { scrollPosition } = this.restorationData; - if (scrollPosition) { - this.view.scrollToPosition(scrollPosition); - return true; - } - } - scrollToAnchor() { - const anchor = getAnchor(this.location); - if (anchor != null) { - this.view.scrollToAnchor(anchor); - return true; - } - } - // Instrumentation - recordTimingMetric(metric) { - this.timingMetrics[metric] = (/* @__PURE__ */ new Date()).getTime(); - } - getTimingMetrics() { - return { ...this.timingMetrics }; - } - // Private - hasPreloadedResponse() { - return typeof this.response == "object"; - } - shouldIssueRequest() { - if (this.isSamePage) { - return false; - } else if (this.action == "restore") { - return !this.hasCachedSnapshot(); - } else { - return this.willRender; - } - } - cacheSnapshot() { - if (!this.snapshotCached) { - this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot)); - this.snapshotCached = true; - } - } - async render(callback) { - this.cancelRender(); - await new Promise((resolve) => { - this.frame = document.visibilityState === "hidden" ? setTimeout(() => resolve(), 0) : requestAnimationFrame(() => resolve()); - }); - await callback(); - delete this.frame; - } - async renderPageSnapshot(snapshot, isPreview) { - await this.viewTransitioner.renderChange(this.view.shouldTransitionTo(snapshot), async () => { - await this.view.renderPage(snapshot, isPreview, this.willRender, this); - this.performScroll(); - }); - } - cancelRender() { - if (this.frame) { - cancelAnimationFrame(this.frame); - delete this.frame; - } - } - }; - function isSuccessful(statusCode) { - return statusCode >= 200 && statusCode < 300; - } - var BrowserAdapter = class { - constructor(session2) { - __publicField(this, "progressBar", new ProgressBar()); - __publicField(this, "showProgressBar", () => { - this.progressBar.show(); - }); - this.session = session2; - } - visitProposedToLocation(location2, options) { - if (locationIsVisitable(location2, this.navigator.rootLocation)) { - this.navigator.startVisit(location2, options?.restorationIdentifier || uuid(), options); - } else { - window.location.href = location2.toString(); - } - } - visitStarted(visit2) { - this.location = visit2.location; - visit2.loadCachedSnapshot(); - visit2.issueRequest(); - visit2.goToSamePageAnchor(); - } - visitRequestStarted(visit2) { - this.progressBar.setValue(0); - if (visit2.hasCachedSnapshot() || visit2.action != "restore") { - this.showVisitProgressBarAfterDelay(); - } else { - this.showProgressBar(); - } - } - visitRequestCompleted(visit2) { - visit2.loadResponse(); - } - visitRequestFailedWithStatusCode(visit2, statusCode) { - switch (statusCode) { - case SystemStatusCode.networkFailure: - case SystemStatusCode.timeoutFailure: - case SystemStatusCode.contentTypeMismatch: - return this.reload({ - reason: "request_failed", - context: { - statusCode - } - }); - default: - return visit2.loadResponse(); - } - } - visitRequestFinished(_visit2) { - } - visitCompleted(_visit2) { - this.progressBar.setValue(1); - this.hideVisitProgressBar(); - } - pageInvalidated(reason) { - this.reload(reason); - } - visitFailed(_visit2) { - this.progressBar.setValue(1); - this.hideVisitProgressBar(); - } - visitRendered(_visit2) { - } - // Link prefetching - linkPrefetchingIsEnabledForLocation(location2) { - return true; - } - // Form Submission Delegate - formSubmissionStarted(_formSubmission) { - this.progressBar.setValue(0); - this.showFormProgressBarAfterDelay(); - } - formSubmissionFinished(_formSubmission) { - this.progressBar.setValue(1); - this.hideFormProgressBar(); - } - // Private - showVisitProgressBarAfterDelay() { - this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay); - } - hideVisitProgressBar() { - this.progressBar.hide(); - if (this.visitProgressBarTimeout != null) { - window.clearTimeout(this.visitProgressBarTimeout); - delete this.visitProgressBarTimeout; - } - } - showFormProgressBarAfterDelay() { - if (this.formProgressBarTimeout == null) { - this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay); - } - } - hideFormProgressBar() { - this.progressBar.hide(); - if (this.formProgressBarTimeout != null) { - window.clearTimeout(this.formProgressBarTimeout); - delete this.formProgressBarTimeout; - } - } - reload(reason) { - dispatch("turbo:reload", { detail: reason }); - window.location.href = this.location?.toString() || window.location.href; - } - get navigator() { - return this.session.navigator; - } - }; - var CacheObserver = class { - constructor() { - __publicField(this, "selector", "[data-turbo-temporary]"); - __publicField(this, "deprecatedSelector", "[data-turbo-cache=false]"); - __publicField(this, "started", false); - __publicField(this, "removeTemporaryElements", (_event) => { - for (const element of this.temporaryElements) { - element.remove(); - } - }); - } - start() { - if (!this.started) { - this.started = true; - addEventListener("turbo:before-cache", this.removeTemporaryElements, false); - } - } - stop() { - if (this.started) { - this.started = false; - removeEventListener("turbo:before-cache", this.removeTemporaryElements, false); - } - } - get temporaryElements() { - return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation]; - } - get temporaryElementsWithDeprecation() { - const elements = document.querySelectorAll(this.deprecatedSelector); - if (elements.length) { - console.warn( - `The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.` - ); - } - return [...elements]; - } - }; - var _shouldSubmit, shouldSubmit_fn, _shouldRedirect, shouldRedirect_fn, _findFrameElement, findFrameElement_fn; - var FrameRedirector = class { - constructor(session2, element) { - __privateAdd(this, _shouldSubmit); - __privateAdd(this, _shouldRedirect); - __privateAdd(this, _findFrameElement); - this.session = session2; - this.element = element; - this.linkInterceptor = new LinkInterceptor(this, element); - this.formSubmitObserver = new FormSubmitObserver(this, element); - } - start() { - this.linkInterceptor.start(); - this.formSubmitObserver.start(); - } - stop() { - this.linkInterceptor.stop(); - this.formSubmitObserver.stop(); - } - // Link interceptor delegate - shouldInterceptLinkClick(element, _location, _event) { - return __privateMethod(this, _shouldRedirect, shouldRedirect_fn).call(this, element); - } - linkClickIntercepted(element, url, event) { - const frame = __privateMethod(this, _findFrameElement, findFrameElement_fn).call(this, element); - if (frame) { - frame.delegate.linkClickIntercepted(element, url, event); - } - } - // Form submit observer delegate - willSubmitForm(element, submitter2) { - return element.closest("turbo-frame") == null && __privateMethod(this, _shouldSubmit, shouldSubmit_fn).call(this, element, submitter2) && __privateMethod(this, _shouldRedirect, shouldRedirect_fn).call(this, element, submitter2); - } - formSubmitted(element, submitter2) { - const frame = __privateMethod(this, _findFrameElement, findFrameElement_fn).call(this, element, submitter2); - if (frame) { - frame.delegate.formSubmitted(element, submitter2); - } - } - }; - _shouldSubmit = new WeakSet(); - shouldSubmit_fn = function(form, submitter2) { - const action = getAction$1(form, submitter2); - const meta = this.element.ownerDocument.querySelector(`meta[name="turbo-root"]`); - const rootLocation = expandURL(meta?.content ?? "/"); - return __privateMethod(this, _shouldRedirect, shouldRedirect_fn).call(this, form, submitter2) && locationIsVisitable(action, rootLocation); - }; - _shouldRedirect = new WeakSet(); - shouldRedirect_fn = function(element, submitter2) { - const isNavigatable = element instanceof HTMLFormElement ? this.session.submissionIsNavigatable(element, submitter2) : this.session.elementIsNavigatable(element); - if (isNavigatable) { - const frame = __privateMethod(this, _findFrameElement, findFrameElement_fn).call(this, element, submitter2); - return frame ? frame != element.closest("turbo-frame") : false; - } else { - return false; - } - }; - _findFrameElement = new WeakSet(); - findFrameElement_fn = function(element, submitter2) { - const id = submitter2?.getAttribute("data-turbo-frame") || element.getAttribute("data-turbo-frame"); - if (id && id != "_top") { - const frame = this.element.querySelector(`#${id}:not([disabled])`); - if (frame instanceof FrameElement) { - return frame; - } - } - }; - var History = class { - constructor(delegate) { - __publicField(this, "location"); - __publicField(this, "restorationIdentifier", uuid()); - __publicField(this, "restorationData", {}); - __publicField(this, "started", false); - __publicField(this, "pageLoaded", false); - __publicField(this, "currentIndex", 0); - // Event handlers - __publicField(this, "onPopState", (event) => { - if (this.shouldHandlePopState()) { - const { turbo } = event.state || {}; - if (turbo) { - this.location = new URL(window.location.href); - const { restorationIdentifier, restorationIndex } = turbo; - this.restorationIdentifier = restorationIdentifier; - const direction = restorationIndex > this.currentIndex ? "forward" : "back"; - this.delegate.historyPoppedToLocationWithRestorationIdentifierAndDirection(this.location, restorationIdentifier, direction); - this.currentIndex = restorationIndex; - } - } - }); - __publicField(this, "onPageLoad", async (_event) => { - await nextMicrotask(); - this.pageLoaded = true; - }); - this.delegate = delegate; - } - start() { - if (!this.started) { - addEventListener("popstate", this.onPopState, false); - addEventListener("load", this.onPageLoad, false); - this.currentIndex = history.state?.turbo?.restorationIndex || 0; - this.started = true; - this.replace(new URL(window.location.href)); - } - } - stop() { - if (this.started) { - removeEventListener("popstate", this.onPopState, false); - removeEventListener("load", this.onPageLoad, false); - this.started = false; - } - } - push(location2, restorationIdentifier) { - this.update(history.pushState, location2, restorationIdentifier); - } - replace(location2, restorationIdentifier) { - this.update(history.replaceState, location2, restorationIdentifier); - } - update(method, location2, restorationIdentifier = uuid()) { - if (method === history.pushState) - ++this.currentIndex; - const state = { turbo: { restorationIdentifier, restorationIndex: this.currentIndex } }; - method.call(history, state, "", location2.href); - this.location = location2; - this.restorationIdentifier = restorationIdentifier; - } - // Restoration data - getRestorationDataForIdentifier(restorationIdentifier) { - return this.restorationData[restorationIdentifier] || {}; - } - updateRestorationData(additionalData) { - const { restorationIdentifier } = this; - const restorationData = this.restorationData[restorationIdentifier]; - this.restorationData[restorationIdentifier] = { - ...restorationData, - ...additionalData - }; - } - // Scroll restoration - assumeControlOfScrollRestoration() { - if (!this.previousScrollRestoration) { - this.previousScrollRestoration = history.scrollRestoration ?? "auto"; - history.scrollRestoration = "manual"; - } - } - relinquishControlOfScrollRestoration() { - if (this.previousScrollRestoration) { - history.scrollRestoration = this.previousScrollRestoration; - delete this.previousScrollRestoration; - } - } - // Private - shouldHandlePopState() { - return this.pageIsLoaded(); - } - pageIsLoaded() { - return this.pageLoaded || document.readyState == "complete"; - } - }; - var _prefetchedLink, _enable, _tryToPrefetchRequest, _cancelRequestIfObsolete, _cancelPrefetchRequest, _tryToUsePrefetchedRequest, _cacheTtl, cacheTtl_get, _isPrefetchable, isPrefetchable_fn; - var LinkPrefetchObserver = class { - constructor(delegate, eventTarget) { - __privateAdd(this, _cacheTtl); - __privateAdd(this, _isPrefetchable); - __publicField(this, "started", false); - __privateAdd(this, _prefetchedLink, null); - __privateAdd(this, _enable, () => { - this.eventTarget.addEventListener("mouseenter", __privateGet(this, _tryToPrefetchRequest), { - capture: true, - passive: true - }); - this.eventTarget.addEventListener("mouseleave", __privateGet(this, _cancelRequestIfObsolete), { - capture: true, - passive: true - }); - this.eventTarget.addEventListener("turbo:before-fetch-request", __privateGet(this, _tryToUsePrefetchedRequest), true); - this.started = true; - }); - __privateAdd(this, _tryToPrefetchRequest, (event) => { - if (getMetaContent("turbo-prefetch") === "false") - return; - const target = event.target; - const isLink = target.matches && target.matches("a[href]:not([target^=_]):not([download])"); - if (isLink && __privateMethod(this, _isPrefetchable, isPrefetchable_fn).call(this, target)) { - const link = target; - const location2 = getLocationForLink(link); - if (this.delegate.canPrefetchRequestToLocation(link, location2)) { - __privateSet(this, _prefetchedLink, link); - const fetchRequest = new FetchRequest( - this, - FetchMethod.get, - location2, - new URLSearchParams(), - target - ); - prefetchCache.setLater(location2.toString(), fetchRequest, __privateGet(this, _cacheTtl, cacheTtl_get)); - } - } - }); - __privateAdd(this, _cancelRequestIfObsolete, (event) => { - if (event.target === __privateGet(this, _prefetchedLink)) - __privateGet(this, _cancelPrefetchRequest).call(this); - }); - __privateAdd(this, _cancelPrefetchRequest, () => { - prefetchCache.clear(); - __privateSet(this, _prefetchedLink, null); - }); - __privateAdd(this, _tryToUsePrefetchedRequest, (event) => { - if (event.target.tagName !== "FORM" && event.detail.fetchOptions.method === "GET") { - const cached = prefetchCache.get(event.detail.url.toString()); - if (cached) { - event.detail.fetchRequest = cached; - } - prefetchCache.clear(); - } - }); - this.delegate = delegate; - this.eventTarget = eventTarget; - } - start() { - if (this.started) - return; - if (this.eventTarget.readyState === "loading") { - this.eventTarget.addEventListener("DOMContentLoaded", __privateGet(this, _enable), { once: true }); - } else { - __privateGet(this, _enable).call(this); - } - } - stop() { - if (!this.started) - return; - this.eventTarget.removeEventListener("mouseenter", __privateGet(this, _tryToPrefetchRequest), { - capture: true, - passive: true - }); - this.eventTarget.removeEventListener("mouseleave", __privateGet(this, _cancelRequestIfObsolete), { - capture: true, - passive: true - }); - this.eventTarget.removeEventListener("turbo:before-fetch-request", __privateGet(this, _tryToUsePrefetchedRequest), true); - this.started = false; - } - prepareRequest(request) { - const link = request.target; - request.headers["X-Sec-Purpose"] = "prefetch"; - const turboFrame = link.closest("turbo-frame"); - const turboFrameTarget = link.getAttribute("data-turbo-frame") || turboFrame?.getAttribute("target") || turboFrame?.id; - if (turboFrameTarget && turboFrameTarget !== "_top") { - request.headers["Turbo-Frame"] = turboFrameTarget; - } - } - // Fetch request interface - requestSucceededWithResponse() { - } - requestStarted(fetchRequest) { - } - requestErrored(fetchRequest) { - } - requestFinished(fetchRequest) { - } - requestPreventedHandlingResponse(fetchRequest, fetchResponse) { - } - requestFailedWithResponse(fetchRequest, fetchResponse) { - } - }; - _prefetchedLink = new WeakMap(); - _enable = new WeakMap(); - _tryToPrefetchRequest = new WeakMap(); - _cancelRequestIfObsolete = new WeakMap(); - _cancelPrefetchRequest = new WeakMap(); - _tryToUsePrefetchedRequest = new WeakMap(); - _cacheTtl = new WeakSet(); - cacheTtl_get = function() { - return Number(getMetaContent("turbo-prefetch-cache-time")) || cacheTtl; - }; - _isPrefetchable = new WeakSet(); - isPrefetchable_fn = function(link) { - const href = link.getAttribute("href"); - if (!href) - return false; - if (unfetchableLink(link)) - return false; - if (linkToTheSamePage(link)) - return false; - if (linkOptsOut(link)) - return false; - if (nonSafeLink(link)) - return false; - if (eventPrevented(link)) - return false; - return true; - }; - var unfetchableLink = (link) => { - return link.origin !== document.location.origin || !["http:", "https:"].includes(link.protocol) || link.hasAttribute("target"); - }; - var linkToTheSamePage = (link) => { - return link.pathname + link.search === document.location.pathname + document.location.search || link.href.startsWith("#"); - }; - var linkOptsOut = (link) => { - if (link.getAttribute("data-turbo-prefetch") === "false") - return true; - if (link.getAttribute("data-turbo") === "false") - return true; - const turboPrefetchParent = findClosestRecursively(link, "[data-turbo-prefetch]"); - if (turboPrefetchParent && turboPrefetchParent.getAttribute("data-turbo-prefetch") === "false") - return true; - return false; - }; - var nonSafeLink = (link) => { - const turboMethod = link.getAttribute("data-turbo-method"); - if (turboMethod && turboMethod.toLowerCase() !== "get") - return true; - if (isUJS(link)) - return true; - if (link.hasAttribute("data-turbo-confirm")) - return true; - if (link.hasAttribute("data-turbo-stream")) - return true; - return false; - }; - var isUJS = (link) => { - return link.hasAttribute("data-remote") || link.hasAttribute("data-behavior") || link.hasAttribute("data-confirm") || link.hasAttribute("data-method"); - }; - var eventPrevented = (link) => { - const event = dispatch("turbo:before-prefetch", { target: link, cancelable: true }); - return event.defaultPrevented; - }; - var _getActionForFormSubmission, getActionForFormSubmission_fn, _getDefaultAction, getDefaultAction_fn; - var Navigator = class { - constructor(delegate) { - __privateAdd(this, _getActionForFormSubmission); - __privateAdd(this, _getDefaultAction); - this.delegate = delegate; - } - proposeVisit(location2, options = {}) { - if (this.delegate.allowsVisitingLocationWithAction(location2, options.action)) { - this.delegate.visitProposedToLocation(location2, options); - } - } - startVisit(locatable, restorationIdentifier, options = {}) { - this.stop(); - this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, { - referrer: this.location, - ...options - }); - this.currentVisit.start(); - } - submitForm(form, submitter2) { - this.stop(); - this.formSubmission = new FormSubmission(this, form, submitter2, true); - this.formSubmission.start(); - } - stop() { - if (this.formSubmission) { - this.formSubmission.stop(); - delete this.formSubmission; - } - if (this.currentVisit) { - this.currentVisit.cancel(); - delete this.currentVisit; - } - } - get adapter() { - return this.delegate.adapter; - } - get view() { - return this.delegate.view; - } - get rootLocation() { - return this.view.snapshot.rootLocation; - } - get history() { - return this.delegate.history; - } - // Form submission delegate - formSubmissionStarted(formSubmission) { - if (typeof this.adapter.formSubmissionStarted === "function") { - this.adapter.formSubmissionStarted(formSubmission); - } - } - async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) { - if (formSubmission == this.formSubmission) { - const responseHTML = await fetchResponse.responseHTML; - if (responseHTML) { - const shouldCacheSnapshot = formSubmission.isSafe; - if (!shouldCacheSnapshot) { - this.view.clearSnapshotCache(); - } - const { statusCode, redirected } = fetchResponse; - const action = __privateMethod(this, _getActionForFormSubmission, getActionForFormSubmission_fn).call(this, formSubmission, fetchResponse); - const visitOptions = { - action, - shouldCacheSnapshot, - response: { statusCode, responseHTML, redirected } - }; - this.proposeVisit(fetchResponse.location, visitOptions); - } - } - } - async formSubmissionFailedWithResponse(formSubmission, fetchResponse) { - const responseHTML = await fetchResponse.responseHTML; - if (responseHTML) { - const snapshot = PageSnapshot.fromHTMLString(responseHTML); - if (fetchResponse.serverError) { - await this.view.renderError(snapshot, this.currentVisit); - } else { - await this.view.renderPage(snapshot, false, true, this.currentVisit); - } - if (!snapshot.shouldPreserveScrollPosition) { - this.view.scrollToTop(); - } - this.view.clearSnapshotCache(); - } - } - formSubmissionErrored(formSubmission, error3) { - console.error(error3); - } - formSubmissionFinished(formSubmission) { - if (typeof this.adapter.formSubmissionFinished === "function") { - this.adapter.formSubmissionFinished(formSubmission); - } - } - // Link prefetching - linkPrefetchingIsEnabledForLocation(location2) { - if (typeof this.adapter.linkPrefetchingIsEnabledForLocation === "function") { - return this.adapter.linkPrefetchingIsEnabledForLocation(location2); - } - return true; - } - // Visit delegate - visitStarted(visit2) { - this.delegate.visitStarted(visit2); - } - visitCompleted(visit2) { - this.delegate.visitCompleted(visit2); - delete this.currentVisit; - } - locationWithActionIsSamePage(location2, action) { - const anchor = getAnchor(location2); - const currentAnchor = getAnchor(this.view.lastRenderedLocation); - const isRestorationToTop = action === "restore" && typeof anchor === "undefined"; - return action !== "replace" && getRequestURL(location2) === getRequestURL(this.view.lastRenderedLocation) && (isRestorationToTop || anchor != null && anchor !== currentAnchor); - } - visitScrolledToSamePageLocation(oldURL, newURL) { - this.delegate.visitScrolledToSamePageLocation(oldURL, newURL); - } - // Visits - get location() { - return this.history.location; - } - get restorationIdentifier() { - return this.history.restorationIdentifier; - } - }; - _getActionForFormSubmission = new WeakSet(); - getActionForFormSubmission_fn = function(formSubmission, fetchResponse) { - const { submitter: submitter2, formElement } = formSubmission; - return getVisitAction(submitter2, formElement) || __privateMethod(this, _getDefaultAction, getDefaultAction_fn).call(this, fetchResponse); - }; - _getDefaultAction = new WeakSet(); - getDefaultAction_fn = function(fetchResponse) { - const sameLocationRedirect = fetchResponse.redirected && fetchResponse.location.href === this.location?.href; - return sameLocationRedirect ? "replace" : "advance"; - }; - var PageStage = { - initial: 0, - loading: 1, - interactive: 2, - complete: 3 - }; - var PageObserver = class { - constructor(delegate) { - __publicField(this, "stage", PageStage.initial); - __publicField(this, "started", false); - __publicField(this, "interpretReadyState", () => { - const { readyState } = this; - if (readyState == "interactive") { - this.pageIsInteractive(); - } else if (readyState == "complete") { - this.pageIsComplete(); - } - }); - __publicField(this, "pageWillUnload", () => { - this.delegate.pageWillUnload(); - }); - this.delegate = delegate; - } - start() { - if (!this.started) { - if (this.stage == PageStage.initial) { - this.stage = PageStage.loading; - } - document.addEventListener("readystatechange", this.interpretReadyState, false); - addEventListener("pagehide", this.pageWillUnload, false); - this.started = true; - } - } - stop() { - if (this.started) { - document.removeEventListener("readystatechange", this.interpretReadyState, false); - removeEventListener("pagehide", this.pageWillUnload, false); - this.started = false; - } - } - pageIsInteractive() { - if (this.stage == PageStage.loading) { - this.stage = PageStage.interactive; - this.delegate.pageBecameInteractive(); - } - } - pageIsComplete() { - this.pageIsInteractive(); - if (this.stage == PageStage.interactive) { - this.stage = PageStage.complete; - this.delegate.pageLoaded(); - } - } - get readyState() { - return document.readyState; - } - }; - var ScrollObserver = class { - constructor(delegate) { - __publicField(this, "started", false); - __publicField(this, "onScroll", () => { - this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset }); - }); - this.delegate = delegate; - } - start() { - if (!this.started) { - addEventListener("scroll", this.onScroll, false); - this.onScroll(); - this.started = true; - } - } - stop() { - if (this.started) { - removeEventListener("scroll", this.onScroll, false); - this.started = false; - } - } - // Private - updatePosition(position2) { - this.delegate.scrollPositionChanged(position2); - } - }; - var StreamMessageRenderer = class { - render({ fragment }) { - Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => { - withAutofocusFromFragment(fragment, () => { - withPreservedFocus(() => { - document.documentElement.appendChild(fragment); - }); - }); - }); - } - // Bardo delegate - enteringBardo(currentPermanentElement, newPermanentElement) { - newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true)); - } - leavingBardo() { - } - }; - function getPermanentElementMapForFragment(fragment) { - const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement); - const permanentElementMap = {}; - for (const permanentElementInDocument of permanentElementsInDocument) { - const { id } = permanentElementInDocument; - for (const streamElement of fragment.querySelectorAll("turbo-stream")) { - const elementInStream = getPermanentElementById(streamElement.templateElement.content, id); - if (elementInStream) { - permanentElementMap[id] = [permanentElementInDocument, elementInStream]; - } - } - } - return permanentElementMap; - } - async function withAutofocusFromFragment(fragment, callback) { - const generatedID = `turbo-stream-autofocus-${uuid()}`; - const turboStreams = fragment.querySelectorAll("turbo-stream"); - const elementWithAutofocus = firstAutofocusableElementInStreams(turboStreams); - let willAutofocusId = null; - if (elementWithAutofocus) { - if (elementWithAutofocus.id) { - willAutofocusId = elementWithAutofocus.id; - } else { - willAutofocusId = generatedID; - } - elementWithAutofocus.id = willAutofocusId; - } - callback(); - await nextRepaint(); - const hasNoActiveElement = document.activeElement == null || document.activeElement == document.body; - if (hasNoActiveElement && willAutofocusId) { - const elementToAutofocus = document.getElementById(willAutofocusId); - if (elementIsFocusable(elementToAutofocus)) { - elementToAutofocus.focus(); - } - if (elementToAutofocus && elementToAutofocus.id == generatedID) { - elementToAutofocus.removeAttribute("id"); - } - } - } - async function withPreservedFocus(callback) { - const [activeElementBeforeRender, activeElementAfterRender] = await around(callback, () => document.activeElement); - const restoreFocusTo = activeElementBeforeRender && activeElementBeforeRender.id; - if (restoreFocusTo) { - const elementToFocus = document.getElementById(restoreFocusTo); - if (elementIsFocusable(elementToFocus) && elementToFocus != activeElementAfterRender) { - elementToFocus.focus(); - } - } - } - function firstAutofocusableElementInStreams(nodeListOfStreamElements) { - for (const streamElement of nodeListOfStreamElements) { - const elementWithAutofocus = queryAutofocusableElement(streamElement.templateElement.content); - if (elementWithAutofocus) - return elementWithAutofocus; - } - return null; - } - var _started; - var StreamObserver = class { - constructor(delegate) { - __publicField(this, "sources", /* @__PURE__ */ new Set()); - __privateAdd(this, _started, false); - __publicField(this, "inspectFetchResponse", (event) => { - const response = fetchResponseFromEvent(event); - if (response && fetchResponseIsStream(response)) { - event.preventDefault(); - this.receiveMessageResponse(response); - } - }); - __publicField(this, "receiveMessageEvent", (event) => { - if (__privateGet(this, _started) && typeof event.data == "string") { - this.receiveMessageHTML(event.data); - } - }); - this.delegate = delegate; - } - start() { - if (!__privateGet(this, _started)) { - __privateSet(this, _started, true); - addEventListener("turbo:before-fetch-response", this.inspectFetchResponse, false); - } - } - stop() { - if (__privateGet(this, _started)) { - __privateSet(this, _started, false); - removeEventListener("turbo:before-fetch-response", this.inspectFetchResponse, false); - } - } - connectStreamSource(source) { - if (!this.streamSourceIsConnected(source)) { - this.sources.add(source); - source.addEventListener("message", this.receiveMessageEvent, false); - } - } - disconnectStreamSource(source) { - if (this.streamSourceIsConnected(source)) { - this.sources.delete(source); - source.removeEventListener("message", this.receiveMessageEvent, false); - } - } - streamSourceIsConnected(source) { - return this.sources.has(source); - } - async receiveMessageResponse(response) { - const html = await response.responseHTML; - if (html) { - this.receiveMessageHTML(html); - } - } - receiveMessageHTML(html) { - this.delegate.receivedMessageFromStream(StreamMessage.wrap(html)); - } - }; - _started = new WeakMap(); - function fetchResponseFromEvent(event) { - const fetchResponse = event.detail?.fetchResponse; - if (fetchResponse instanceof FetchResponse) { - return fetchResponse; - } - } - function fetchResponseIsStream(response) { - const contentType = response.contentType ?? ""; - return contentType.startsWith(StreamMessage.contentType); - } - var ErrorRenderer = class extends Renderer { - static renderElement(currentElement, newElement) { - const { documentElement, body } = document; - documentElement.replaceChild(newElement, body); - } - async render() { - this.replaceHeadAndBody(); - this.activateScriptElements(); - } - replaceHeadAndBody() { - const { documentElement, head } = document; - documentElement.replaceChild(this.newHead, head); - this.renderElement(this.currentElement, this.newElement); - } - activateScriptElements() { - for (const replaceableElement of this.scriptElements) { - const parentNode2 = replaceableElement.parentNode; - if (parentNode2) { - const element = activateScriptElement(replaceableElement); - parentNode2.replaceChild(element, replaceableElement); - } - } - } - get newHead() { - return this.newSnapshot.headSnapshot.element; - } - get scriptElements() { - return document.documentElement.querySelectorAll("script"); - } - }; - var _setLanguage, setLanguage_fn; - var PageRenderer = class extends Renderer { - constructor() { - super(...arguments); - __privateAdd(this, _setLanguage); - } - static renderElement(currentElement, newElement) { - if (document.body && newElement instanceof HTMLBodyElement) { - document.body.replaceWith(newElement); - } else { - document.documentElement.appendChild(newElement); - } - } - get shouldRender() { - return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical; - } - get reloadReason() { - if (!this.newSnapshot.isVisitable) { - return { - reason: "turbo_visit_control_is_reload" - }; - } - if (!this.trackedElementsAreIdentical) { - return { - reason: "tracked_element_mismatch" - }; - } - } - async prepareToRender() { - __privateMethod(this, _setLanguage, setLanguage_fn).call(this); - await this.mergeHead(); - } - async render() { - if (this.willRender) { - await this.replaceBody(); - } - } - finishRendering() { - super.finishRendering(); - if (!this.isPreview) { - this.focusFirstAutofocusableElement(); - } - } - get currentHeadSnapshot() { - return this.currentSnapshot.headSnapshot; - } - get newHeadSnapshot() { - return this.newSnapshot.headSnapshot; - } - get newElement() { - return this.newSnapshot.element; - } - async mergeHead() { - const mergedHeadElements = this.mergeProvisionalElements(); - const newStylesheetElements = this.copyNewHeadStylesheetElements(); - this.copyNewHeadScriptElements(); - await mergedHeadElements; - await newStylesheetElements; - if (this.willRender) { - this.removeUnusedDynamicStylesheetElements(); - } - } - async replaceBody() { - await this.preservingPermanentElements(async () => { - this.activateNewBody(); - await this.assignNewBody(); - }); - } - get trackedElementsAreIdentical() { - return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature; - } - async copyNewHeadStylesheetElements() { - const loadingElements = []; - for (const element of this.newHeadStylesheetElements) { - loadingElements.push(waitForLoad(element)); - document.head.appendChild(element); - } - await Promise.all(loadingElements); - } - copyNewHeadScriptElements() { - for (const element of this.newHeadScriptElements) { - document.head.appendChild(activateScriptElement(element)); - } - } - removeUnusedDynamicStylesheetElements() { - for (const element of this.unusedDynamicStylesheetElements) { - document.head.removeChild(element); - } - } - async mergeProvisionalElements() { - const newHeadElements = [...this.newHeadProvisionalElements]; - for (const element of this.currentHeadProvisionalElements) { - if (!this.isCurrentElementInElementList(element, newHeadElements)) { - document.head.removeChild(element); - } - } - for (const element of newHeadElements) { - document.head.appendChild(element); - } - } - isCurrentElementInElementList(element, elementList3) { - for (const [index, newElement] of elementList3.entries()) { - if (element.tagName == "TITLE") { - if (newElement.tagName != "TITLE") { - continue; - } - if (element.innerHTML == newElement.innerHTML) { - elementList3.splice(index, 1); - return true; - } - } - if (newElement.isEqualNode(element)) { - elementList3.splice(index, 1); - return true; - } - } - return false; - } - removeCurrentHeadProvisionalElements() { - for (const element of this.currentHeadProvisionalElements) { - document.head.removeChild(element); - } - } - copyNewHeadProvisionalElements() { - for (const element of this.newHeadProvisionalElements) { - document.head.appendChild(element); - } - } - activateNewBody() { - document.adoptNode(this.newElement); - this.activateNewBodyScriptElements(); - } - activateNewBodyScriptElements() { - for (const inertScriptElement of this.newBodyScriptElements) { - const activatedScriptElement = activateScriptElement(inertScriptElement); - inertScriptElement.replaceWith(activatedScriptElement); - } - } - async assignNewBody() { - await this.renderElement(this.currentElement, this.newElement); - } - get unusedDynamicStylesheetElements() { - return this.oldHeadStylesheetElements.filter((element) => { - return element.getAttribute("data-turbo-track") === "dynamic"; - }); - } - get oldHeadStylesheetElements() { - return this.currentHeadSnapshot.getStylesheetElementsNotInSnapshot(this.newHeadSnapshot); - } - get newHeadStylesheetElements() { - return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot); - } - get newHeadScriptElements() { - return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot); - } - get currentHeadProvisionalElements() { - return this.currentHeadSnapshot.provisionalElements; - } - get newHeadProvisionalElements() { - return this.newHeadSnapshot.provisionalElements; - } - get newBodyScriptElements() { - return this.newElement.querySelectorAll("script"); - } - }; - _setLanguage = new WeakSet(); - setLanguage_fn = function() { - const { documentElement } = this.currentSnapshot; - const { lang } = this.newSnapshot; - if (lang) { - documentElement.setAttribute("lang", lang); - } else { - documentElement.removeAttribute("lang"); - } - }; - var MorphingPageRenderer = class extends PageRenderer { - static renderElement(currentElement, newElement) { - morphElements(currentElement, newElement, { - callbacks: { - beforeNodeMorphed: (element) => !canRefreshFrame(element) - } - }); - for (const frame of currentElement.querySelectorAll("turbo-frame")) { - if (canRefreshFrame(frame)) - frame.reload(); - } - dispatch("turbo:morph", { detail: { currentElement, newElement } }); - } - async preservingPermanentElements(callback) { - return await callback(); - } - get renderMethod() { - return "morph"; - } - get shouldAutofocus() { - return false; - } - }; - function canRefreshFrame(frame) { - return frame instanceof FrameElement && frame.src && frame.refresh === "morph" && !frame.closest("[data-turbo-permanent]"); - } - var SnapshotCache = class { - constructor(size2) { - __publicField(this, "keys", []); - __publicField(this, "snapshots", {}); - this.size = size2; - } - has(location2) { - return toCacheKey(location2) in this.snapshots; - } - get(location2) { - if (this.has(location2)) { - const snapshot = this.read(location2); - this.touch(location2); - return snapshot; - } - } - put(location2, snapshot) { - this.write(location2, snapshot); - this.touch(location2); - return snapshot; - } - clear() { - this.snapshots = {}; - } - // Private - read(location2) { - return this.snapshots[toCacheKey(location2)]; - } - write(location2, snapshot) { - this.snapshots[toCacheKey(location2)] = snapshot; - } - touch(location2) { - const key = toCacheKey(location2); - const index = this.keys.indexOf(key); - if (index > -1) - this.keys.splice(index, 1); - this.keys.unshift(key); - this.trim(); - } - trim() { - for (const key of this.keys.splice(this.size)) { - delete this.snapshots[key]; - } - } - }; - var PageView = class extends View2 { - constructor() { - super(...arguments); - __publicField(this, "snapshotCache", new SnapshotCache(10)); - __publicField(this, "lastRenderedLocation", new URL(location.href)); - __publicField(this, "forceReloaded", false); - } - shouldTransitionTo(newSnapshot) { - return this.snapshot.prefersViewTransitions && newSnapshot.prefersViewTransitions; - } - renderPage(snapshot, isPreview = false, willRender = true, visit2) { - const shouldMorphPage = this.isPageRefresh(visit2) && this.snapshot.shouldMorphPage; - const rendererClass = shouldMorphPage ? MorphingPageRenderer : PageRenderer; - const renderer = new rendererClass(this.snapshot, snapshot, isPreview, willRender); - if (!renderer.shouldRender) { - this.forceReloaded = true; - } else { - visit2?.changeHistory(); - } - return this.render(renderer); - } - renderError(snapshot, visit2) { - visit2?.changeHistory(); - const renderer = new ErrorRenderer(this.snapshot, snapshot, false); - return this.render(renderer); - } - clearSnapshotCache() { - this.snapshotCache.clear(); - } - async cacheSnapshot(snapshot = this.snapshot) { - if (snapshot.isCacheable) { - this.delegate.viewWillCacheSnapshot(); - const { lastRenderedLocation: location2 } = this; - await nextEventLoopTick(); - const cachedSnapshot = snapshot.clone(); - this.snapshotCache.put(location2, cachedSnapshot); - return cachedSnapshot; - } - } - getCachedSnapshotForLocation(location2) { - return this.snapshotCache.get(location2); - } - isPageRefresh(visit2) { - return !visit2 || this.lastRenderedLocation.pathname === visit2.location.pathname && visit2.action === "replace"; - } - shouldPreserveScrollPosition(visit2) { - return this.isPageRefresh(visit2) && this.snapshot.shouldPreserveScrollPosition; - } - get snapshot() { - return PageSnapshot.fromElement(this.element); - } - }; - var _preloadAll; - var Preloader = class { - constructor(delegate, snapshotCache) { - __publicField(this, "selector", "a[data-turbo-preload]"); - __privateAdd(this, _preloadAll, () => { - this.preloadOnLoadLinksForView(document.body); - }); - this.delegate = delegate; - this.snapshotCache = snapshotCache; - } - start() { - if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", __privateGet(this, _preloadAll)); - } else { - this.preloadOnLoadLinksForView(document.body); - } - } - stop() { - document.removeEventListener("DOMContentLoaded", __privateGet(this, _preloadAll)); - } - preloadOnLoadLinksForView(element) { - for (const link of element.querySelectorAll(this.selector)) { - if (this.delegate.shouldPreloadLink(link)) { - this.preloadURL(link); - } - } - } - async preloadURL(link) { - const location2 = new URL(link.href); - if (this.snapshotCache.has(location2)) { - return; - } - const fetchRequest = new FetchRequest(this, FetchMethod.get, location2, new URLSearchParams(), link); - await fetchRequest.perform(); - } - // Fetch request delegate - prepareRequest(fetchRequest) { - fetchRequest.headers["X-Sec-Purpose"] = "prefetch"; - } - async requestSucceededWithResponse(fetchRequest, fetchResponse) { - try { - const responseHTML = await fetchResponse.responseHTML; - const snapshot = PageSnapshot.fromHTMLString(responseHTML); - this.snapshotCache.put(fetchRequest.url, snapshot); - } catch (_) { - } - } - requestStarted(fetchRequest) { - } - requestErrored(fetchRequest) { - } - requestFinished(fetchRequest) { - } - requestPreventedHandlingResponse(fetchRequest, fetchResponse) { - } - requestFailedWithResponse(fetchRequest, fetchResponse) { - } - }; - _preloadAll = new WeakMap(); - var _setCacheControl, setCacheControl_fn; - var Cache = class { - constructor(session2) { - __privateAdd(this, _setCacheControl); - this.session = session2; - } - clear() { - this.session.clearCache(); - } - resetCacheControl() { - __privateMethod(this, _setCacheControl, setCacheControl_fn).call(this, ""); - } - exemptPageFromCache() { - __privateMethod(this, _setCacheControl, setCacheControl_fn).call(this, "no-cache"); - } - exemptPageFromPreview() { - __privateMethod(this, _setCacheControl, setCacheControl_fn).call(this, "no-preview"); - } - }; - _setCacheControl = new WeakSet(); - setCacheControl_fn = function(value) { - setMetaContent("turbo-cache-control", value); - }; - var _pageRefreshDebouncePeriod; - var Session = class { - constructor(recentRequests2) { - __publicField(this, "navigator", new Navigator(this)); - __publicField(this, "history", new History(this)); - __publicField(this, "view", new PageView(this, document.documentElement)); - __publicField(this, "adapter", new BrowserAdapter(this)); - __publicField(this, "pageObserver", new PageObserver(this)); - __publicField(this, "cacheObserver", new CacheObserver()); - __publicField(this, "linkPrefetchObserver", new LinkPrefetchObserver(this, document)); - __publicField(this, "linkClickObserver", new LinkClickObserver(this, window)); - __publicField(this, "formSubmitObserver", new FormSubmitObserver(this, document)); - __publicField(this, "scrollObserver", new ScrollObserver(this)); - __publicField(this, "streamObserver", new StreamObserver(this)); - __publicField(this, "formLinkClickObserver", new FormLinkClickObserver(this, document.documentElement)); - __publicField(this, "frameRedirector", new FrameRedirector(this, document.documentElement)); - __publicField(this, "streamMessageRenderer", new StreamMessageRenderer()); - __publicField(this, "cache", new Cache(this)); - __publicField(this, "enabled", true); - __publicField(this, "started", false); - __privateAdd(this, _pageRefreshDebouncePeriod, 150); - this.recentRequests = recentRequests2; - this.preloader = new Preloader(this, this.view.snapshotCache); - this.debouncedRefresh = this.refresh; - this.pageRefreshDebouncePeriod = this.pageRefreshDebouncePeriod; - } - start() { - if (!this.started) { - this.pageObserver.start(); - this.cacheObserver.start(); - this.linkPrefetchObserver.start(); - this.formLinkClickObserver.start(); - this.linkClickObserver.start(); - this.formSubmitObserver.start(); - this.scrollObserver.start(); - this.streamObserver.start(); - this.frameRedirector.start(); - this.history.start(); - this.preloader.start(); - this.started = true; - this.enabled = true; - } - } - disable() { - this.enabled = false; - } - stop() { - if (this.started) { - this.pageObserver.stop(); - this.cacheObserver.stop(); - this.linkPrefetchObserver.stop(); - this.formLinkClickObserver.stop(); - this.linkClickObserver.stop(); - this.formSubmitObserver.stop(); - this.scrollObserver.stop(); - this.streamObserver.stop(); - this.frameRedirector.stop(); - this.history.stop(); - this.preloader.stop(); - this.started = false; - } - } - registerAdapter(adapter) { - this.adapter = adapter; - } - visit(location2, options = {}) { - const frameElement = options.frame ? document.getElementById(options.frame) : null; - if (frameElement instanceof FrameElement) { - const action = options.action || getVisitAction(frameElement); - frameElement.delegate.proposeVisitIfNavigatedWithAction(frameElement, action); - frameElement.src = location2.toString(); - } else { - this.navigator.proposeVisit(expandURL(location2), options); - } - } - refresh(url, requestId) { - const isRecentRequest = requestId && this.recentRequests.has(requestId); - const isCurrentUrl = url === document.baseURI; - if (!isRecentRequest && !this.navigator.currentVisit && isCurrentUrl) { - this.visit(url, { action: "replace", shouldCacheSnapshot: false }); - } - } - connectStreamSource(source) { - this.streamObserver.connectStreamSource(source); - } - disconnectStreamSource(source) { - this.streamObserver.disconnectStreamSource(source); - } - renderStreamMessage(message) { - this.streamMessageRenderer.render(StreamMessage.wrap(message)); - } - clearCache() { - this.view.clearSnapshotCache(); - } - setProgressBarDelay(delay) { - console.warn( - "Please replace `session.setProgressBarDelay(delay)` with `session.progressBarDelay = delay`. The function is deprecated and will be removed in a future version of Turbo.`" - ); - this.progressBarDelay = delay; - } - set progressBarDelay(delay) { - config.drive.progressBarDelay = delay; - } - get progressBarDelay() { - return config.drive.progressBarDelay; - } - set drive(value) { - config.drive.enabled = value; - } - get drive() { - return config.drive.enabled; - } - set formMode(value) { - config.forms.mode = value; - } - get formMode() { - return config.forms.mode; - } - get location() { - return this.history.location; - } - get restorationIdentifier() { - return this.history.restorationIdentifier; - } - get pageRefreshDebouncePeriod() { - return __privateGet(this, _pageRefreshDebouncePeriod); - } - set pageRefreshDebouncePeriod(value) { - this.refresh = debounce(this.debouncedRefresh.bind(this), value); - __privateSet(this, _pageRefreshDebouncePeriod, value); - } - // Preloader delegate - shouldPreloadLink(element) { - const isUnsafe = element.hasAttribute("data-turbo-method"); - const isStream = element.hasAttribute("data-turbo-stream"); - const frameTarget = element.getAttribute("data-turbo-frame"); - const frame = frameTarget == "_top" ? null : document.getElementById(frameTarget) || findClosestRecursively(element, "turbo-frame:not([disabled])"); - if (isUnsafe || isStream || frame instanceof FrameElement) { - return false; - } else { - const location2 = new URL(element.href); - return this.elementIsNavigatable(element) && locationIsVisitable(location2, this.snapshot.rootLocation); - } - } - // History delegate - historyPoppedToLocationWithRestorationIdentifierAndDirection(location2, restorationIdentifier, direction) { - if (this.enabled) { - this.navigator.startVisit(location2, restorationIdentifier, { - action: "restore", - historyChanged: true, - direction - }); - } else { - this.adapter.pageInvalidated({ - reason: "turbo_disabled" - }); - } - } - // Scroll observer delegate - scrollPositionChanged(position2) { - this.history.updateRestorationData({ scrollPosition: position2 }); - } - // Form click observer delegate - willSubmitFormLinkToLocation(link, location2) { - return this.elementIsNavigatable(link) && locationIsVisitable(location2, this.snapshot.rootLocation); - } - submittedFormLinkToLocation() { - } - // Link hover observer delegate - canPrefetchRequestToLocation(link, location2) { - return this.elementIsNavigatable(link) && locationIsVisitable(location2, this.snapshot.rootLocation) && this.navigator.linkPrefetchingIsEnabledForLocation(location2); - } - // Link click observer delegate - willFollowLinkToLocation(link, location2, event) { - return this.elementIsNavigatable(link) && locationIsVisitable(location2, this.snapshot.rootLocation) && this.applicationAllowsFollowingLinkToLocation(link, location2, event); - } - followedLinkToLocation(link, location2) { - const action = this.getActionForLink(link); - const acceptsStreamResponse = link.hasAttribute("data-turbo-stream"); - this.visit(location2.href, { action, acceptsStreamResponse }); - } - // Navigator delegate - allowsVisitingLocationWithAction(location2, action) { - return this.locationWithActionIsSamePage(location2, action) || this.applicationAllowsVisitingLocation(location2); - } - visitProposedToLocation(location2, options) { - extendURLWithDeprecatedProperties(location2); - this.adapter.visitProposedToLocation(location2, options); - } - // Visit delegate - visitStarted(visit2) { - if (!visit2.acceptsStreamResponse) { - markAsBusy(document.documentElement); - this.view.markVisitDirection(visit2.direction); - } - extendURLWithDeprecatedProperties(visit2.location); - if (!visit2.silent) { - this.notifyApplicationAfterVisitingLocation(visit2.location, visit2.action); - } - } - visitCompleted(visit2) { - this.view.unmarkVisitDirection(); - clearBusyState(document.documentElement); - this.notifyApplicationAfterPageLoad(visit2.getTimingMetrics()); - } - locationWithActionIsSamePage(location2, action) { - return this.navigator.locationWithActionIsSamePage(location2, action); - } - visitScrolledToSamePageLocation(oldURL, newURL) { - this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL); - } - // Form submit observer delegate - willSubmitForm(form, submitter2) { - const action = getAction$1(form, submitter2); - return this.submissionIsNavigatable(form, submitter2) && locationIsVisitable(expandURL(action), this.snapshot.rootLocation); - } - formSubmitted(form, submitter2) { - this.navigator.submitForm(form, submitter2); - } - // Page observer delegate - pageBecameInteractive() { - this.view.lastRenderedLocation = this.location; - this.notifyApplicationAfterPageLoad(); - } - pageLoaded() { - this.history.assumeControlOfScrollRestoration(); - } - pageWillUnload() { - this.history.relinquishControlOfScrollRestoration(); - } - // Stream observer delegate - receivedMessageFromStream(message) { - this.renderStreamMessage(message); - } - // Page view delegate - viewWillCacheSnapshot() { - if (!this.navigator.currentVisit?.silent) { - this.notifyApplicationBeforeCachingSnapshot(); - } - } - allowsImmediateRender({ element }, options) { - const event = this.notifyApplicationBeforeRender(element, options); - const { - defaultPrevented, - detail: { render: render2 } - } = event; - if (this.view.renderer && render2) { - this.view.renderer.renderElement = render2; - } - return !defaultPrevented; - } - viewRenderedSnapshot(_snapshot, _isPreview, renderMethod) { - this.view.lastRenderedLocation = this.history.location; - this.notifyApplicationAfterRender(renderMethod); - } - preloadOnLoadLinksForView(element) { - this.preloader.preloadOnLoadLinksForView(element); - } - viewInvalidated(reason) { - this.adapter.pageInvalidated(reason); - } - // Frame element - frameLoaded(frame) { - this.notifyApplicationAfterFrameLoad(frame); - } - frameRendered(fetchResponse, frame) { - this.notifyApplicationAfterFrameRender(fetchResponse, frame); - } - // Application events - applicationAllowsFollowingLinkToLocation(link, location2, ev) { - const event = this.notifyApplicationAfterClickingLinkToLocation(link, location2, ev); - return !event.defaultPrevented; - } - applicationAllowsVisitingLocation(location2) { - const event = this.notifyApplicationBeforeVisitingLocation(location2); - return !event.defaultPrevented; - } - notifyApplicationAfterClickingLinkToLocation(link, location2, event) { - return dispatch("turbo:click", { - target: link, - detail: { url: location2.href, originalEvent: event }, - cancelable: true - }); - } - notifyApplicationBeforeVisitingLocation(location2) { - return dispatch("turbo:before-visit", { - detail: { url: location2.href }, - cancelable: true - }); - } - notifyApplicationAfterVisitingLocation(location2, action) { - return dispatch("turbo:visit", { detail: { url: location2.href, action } }); - } - notifyApplicationBeforeCachingSnapshot() { - return dispatch("turbo:before-cache"); - } - notifyApplicationBeforeRender(newBody, options) { - return dispatch("turbo:before-render", { - detail: { newBody, ...options }, - cancelable: true - }); - } - notifyApplicationAfterRender(renderMethod) { - return dispatch("turbo:render", { detail: { renderMethod } }); - } - notifyApplicationAfterPageLoad(timing = {}) { - return dispatch("turbo:load", { - detail: { url: this.location.href, timing } - }); - } - notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) { - dispatchEvent( - new HashChangeEvent("hashchange", { - oldURL: oldURL.toString(), - newURL: newURL.toString() - }) - ); - } - notifyApplicationAfterFrameLoad(frame) { - return dispatch("turbo:frame-load", { target: frame }); - } - notifyApplicationAfterFrameRender(fetchResponse, frame) { - return dispatch("turbo:frame-render", { - detail: { fetchResponse }, - target: frame, - cancelable: true - }); - } - // Helpers - submissionIsNavigatable(form, submitter2) { - if (config.forms.mode == "off") { - return false; - } else { - const submitterIsNavigatable = submitter2 ? this.elementIsNavigatable(submitter2) : true; - if (config.forms.mode == "optin") { - return submitterIsNavigatable && form.closest('[data-turbo="true"]') != null; - } else { - return submitterIsNavigatable && this.elementIsNavigatable(form); - } - } - } - elementIsNavigatable(element) { - const container = findClosestRecursively(element, "[data-turbo]"); - const withinFrame = findClosestRecursively(element, "turbo-frame"); - if (config.drive.enabled || withinFrame) { - if (container) { - return container.getAttribute("data-turbo") != "false"; - } else { - return true; - } - } else { - if (container) { - return container.getAttribute("data-turbo") == "true"; - } else { - return false; - } - } - } - // Private - getActionForLink(link) { - return getVisitAction(link) || "advance"; - } - get snapshot() { - return this.view.snapshot; - } - }; - _pageRefreshDebouncePeriod = new WeakMap(); - function extendURLWithDeprecatedProperties(url) { - Object.defineProperties(url, deprecatedLocationPropertyDescriptors); - } - var deprecatedLocationPropertyDescriptors = { - absoluteURL: { - get() { - return this.toString(); - } - } - }; - var session = new Session(recentRequests); - var { cache, navigator: navigator$1 } = session; - function start2() { - session.start(); - } - function registerAdapter(adapter) { - session.registerAdapter(adapter); - } - function visit(location2, options) { - session.visit(location2, options); - } - function connectStreamSource(source) { - session.connectStreamSource(source); - } - function disconnectStreamSource(source) { - session.disconnectStreamSource(source); - } - function renderStreamMessage(message) { - session.renderStreamMessage(message); - } - function clearCache() { - console.warn( - "Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`" - ); - session.clearCache(); - } - function setProgressBarDelay(delay) { - console.warn( - "Please replace `Turbo.setProgressBarDelay(delay)` with `Turbo.config.drive.progressBarDelay = delay`. The top-level function is deprecated and will be removed in a future version of Turbo.`" - ); - config.drive.progressBarDelay = delay; - } - function setConfirmMethod(confirmMethod) { - console.warn( - "Please replace `Turbo.setConfirmMethod(confirmMethod)` with `Turbo.config.forms.confirm = confirmMethod`. The top-level function is deprecated and will be removed in a future version of Turbo.`" - ); - config.forms.confirm = confirmMethod; - } - function setFormMode(mode) { - console.warn( - "Please replace `Turbo.setFormMode(mode)` with `Turbo.config.forms.mode = mode`. The top-level function is deprecated and will be removed in a future version of Turbo.`" - ); - config.forms.mode = mode; - } - var Turbo = /* @__PURE__ */ Object.freeze({ - __proto__: null, - navigator: navigator$1, - session, - cache, - PageRenderer, - PageSnapshot, - FrameRenderer, - fetch: fetchWithTurboHeaders, - config, - start: start2, - registerAdapter, - visit, - connectStreamSource, - disconnectStreamSource, - renderStreamMessage, - clearCache, - setProgressBarDelay, - setConfirmMethod, - setFormMode - }); - var TurboFrameMissingError = class extends Error { - }; - var _currentFetchRequest, _resolveVisitPromise, _connected, _hasBeenLoaded, _ignoredAttributes, _shouldMorphFrame, _loadSourceURL, loadSourceURL_fn, _loadFrameResponse, loadFrameResponse_fn, _visit, visit_fn, _navigateFrame, navigateFrame_fn, _handleUnvisitableFrameResponse, handleUnvisitableFrameResponse_fn, _willHandleFrameMissingFromResponse, willHandleFrameMissingFromResponse_fn, _handleFrameMissingFromResponse, handleFrameMissingFromResponse_fn, _throwFrameMissingError, throwFrameMissingError_fn, _visitResponse, visitResponse_fn, _findFrameElement2, findFrameElement_fn2, _formActionIsVisitable, formActionIsVisitable_fn, _shouldInterceptNavigation, shouldInterceptNavigation_fn, _isIgnoringChangesTo, isIgnoringChangesTo_fn, _ignoringChangesToAttribute, ignoringChangesToAttribute_fn, _withCurrentNavigationElement, withCurrentNavigationElement_fn; - var FrameController = class { - constructor(element) { - __privateAdd(this, _loadSourceURL); - // Private - __privateAdd(this, _loadFrameResponse); - __privateAdd(this, _visit); - __privateAdd(this, _navigateFrame); - __privateAdd(this, _handleUnvisitableFrameResponse); - __privateAdd(this, _willHandleFrameMissingFromResponse); - __privateAdd(this, _handleFrameMissingFromResponse); - __privateAdd(this, _throwFrameMissingError); - __privateAdd(this, _visitResponse); - __privateAdd(this, _findFrameElement2); - __privateAdd(this, _formActionIsVisitable); - __privateAdd(this, _shouldInterceptNavigation); - __privateAdd(this, _isIgnoringChangesTo); - __privateAdd(this, _ignoringChangesToAttribute); - __privateAdd(this, _withCurrentNavigationElement); - __publicField(this, "fetchResponseLoaded", (_fetchResponse) => Promise.resolve()); - __privateAdd(this, _currentFetchRequest, null); - __privateAdd(this, _resolveVisitPromise, () => { - }); - __privateAdd(this, _connected, false); - __privateAdd(this, _hasBeenLoaded, false); - __privateAdd(this, _ignoredAttributes, /* @__PURE__ */ new Set()); - __privateAdd(this, _shouldMorphFrame, false); - __publicField(this, "action", null); - __publicField(this, "visitCachedSnapshot", ({ element }) => { - const frame = element.querySelector("#" + this.element.id); - if (frame && this.previousFrameElement) { - frame.replaceChildren(...this.previousFrameElement.children); - } - delete this.previousFrameElement; - }); - this.element = element; - this.view = new FrameView(this, this.element); - this.appearanceObserver = new AppearanceObserver(this, this.element); - this.formLinkClickObserver = new FormLinkClickObserver(this, this.element); - this.linkInterceptor = new LinkInterceptor(this, this.element); - this.restorationIdentifier = uuid(); - this.formSubmitObserver = new FormSubmitObserver(this, this.element); - } - // Frame delegate - connect() { - if (!__privateGet(this, _connected)) { - __privateSet(this, _connected, true); - if (this.loadingStyle == FrameLoadingStyle.lazy) { - this.appearanceObserver.start(); - } else { - __privateMethod(this, _loadSourceURL, loadSourceURL_fn).call(this); - } - this.formLinkClickObserver.start(); - this.linkInterceptor.start(); - this.formSubmitObserver.start(); - } - } - disconnect() { - if (__privateGet(this, _connected)) { - __privateSet(this, _connected, false); - this.appearanceObserver.stop(); - this.formLinkClickObserver.stop(); - this.linkInterceptor.stop(); - this.formSubmitObserver.stop(); - } - } - disabledChanged() { - if (this.loadingStyle == FrameLoadingStyle.eager) { - __privateMethod(this, _loadSourceURL, loadSourceURL_fn).call(this); - } - } - sourceURLChanged() { - if (__privateMethod(this, _isIgnoringChangesTo, isIgnoringChangesTo_fn).call(this, "src")) - return; - if (this.element.isConnected) { - this.complete = false; - } - if (this.loadingStyle == FrameLoadingStyle.eager || __privateGet(this, _hasBeenLoaded)) { - __privateMethod(this, _loadSourceURL, loadSourceURL_fn).call(this); - } - } - sourceURLReloaded() { - const { refresh, src } = this.element; - __privateSet(this, _shouldMorphFrame, src && refresh === "morph"); - this.element.removeAttribute("complete"); - this.element.src = null; - this.element.src = src; - return this.element.loaded; - } - loadingStyleChanged() { - if (this.loadingStyle == FrameLoadingStyle.lazy) { - this.appearanceObserver.start(); - } else { - this.appearanceObserver.stop(); - __privateMethod(this, _loadSourceURL, loadSourceURL_fn).call(this); - } - } - async loadResponse(fetchResponse) { - if (fetchResponse.redirected || fetchResponse.succeeded && fetchResponse.isHTML) { - this.sourceURL = fetchResponse.response.url; - } - try { - const html = await fetchResponse.responseHTML; - if (html) { - const document2 = parseHTMLDocument(html); - const pageSnapshot = PageSnapshot.fromDocument(document2); - if (pageSnapshot.isVisitable) { - await __privateMethod(this, _loadFrameResponse, loadFrameResponse_fn).call(this, fetchResponse, document2); - } else { - await __privateMethod(this, _handleUnvisitableFrameResponse, handleUnvisitableFrameResponse_fn).call(this, fetchResponse); - } - } - } finally { - __privateSet(this, _shouldMorphFrame, false); - this.fetchResponseLoaded = () => Promise.resolve(); - } - } - // Appearance observer delegate - elementAppearedInViewport(element) { - this.proposeVisitIfNavigatedWithAction(element, getVisitAction(element)); - __privateMethod(this, _loadSourceURL, loadSourceURL_fn).call(this); - } - // Form link click observer delegate - willSubmitFormLinkToLocation(link) { - return __privateMethod(this, _shouldInterceptNavigation, shouldInterceptNavigation_fn).call(this, link); - } - submittedFormLinkToLocation(link, _location, form) { - const frame = __privateMethod(this, _findFrameElement2, findFrameElement_fn2).call(this, link); - if (frame) - form.setAttribute("data-turbo-frame", frame.id); - } - // Link interceptor delegate - shouldInterceptLinkClick(element, _location, _event) { - return __privateMethod(this, _shouldInterceptNavigation, shouldInterceptNavigation_fn).call(this, element); - } - linkClickIntercepted(element, location2) { - __privateMethod(this, _navigateFrame, navigateFrame_fn).call(this, element, location2); - } - // Form submit observer delegate - willSubmitForm(element, submitter2) { - return element.closest("turbo-frame") == this.element && __privateMethod(this, _shouldInterceptNavigation, shouldInterceptNavigation_fn).call(this, element, submitter2); - } - formSubmitted(element, submitter2) { - if (this.formSubmission) { - this.formSubmission.stop(); - } - this.formSubmission = new FormSubmission(this, element, submitter2); - const { fetchRequest } = this.formSubmission; - this.prepareRequest(fetchRequest); - this.formSubmission.start(); - } - // Fetch request delegate - prepareRequest(request) { - request.headers["Turbo-Frame"] = this.id; - if (this.currentNavigationElement?.hasAttribute("data-turbo-stream")) { - request.acceptResponseType(StreamMessage.contentType); - } - } - requestStarted(_request) { - markAsBusy(this.element); - } - requestPreventedHandlingResponse(_request, _response) { - __privateGet(this, _resolveVisitPromise).call(this); - } - async requestSucceededWithResponse(request, response) { - await this.loadResponse(response); - __privateGet(this, _resolveVisitPromise).call(this); - } - async requestFailedWithResponse(request, response) { - await this.loadResponse(response); - __privateGet(this, _resolveVisitPromise).call(this); - } - requestErrored(request, error3) { - console.error(error3); - __privateGet(this, _resolveVisitPromise).call(this); - } - requestFinished(_request) { - clearBusyState(this.element); - } - // Form submission delegate - formSubmissionStarted({ formElement }) { - markAsBusy(formElement, __privateMethod(this, _findFrameElement2, findFrameElement_fn2).call(this, formElement)); - } - formSubmissionSucceededWithResponse(formSubmission, response) { - const frame = __privateMethod(this, _findFrameElement2, findFrameElement_fn2).call(this, formSubmission.formElement, formSubmission.submitter); - frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(formSubmission.submitter, formSubmission.formElement, frame)); - frame.delegate.loadResponse(response); - if (!formSubmission.isSafe) { - session.clearCache(); - } - } - formSubmissionFailedWithResponse(formSubmission, fetchResponse) { - this.element.delegate.loadResponse(fetchResponse); - session.clearCache(); - } - formSubmissionErrored(formSubmission, error3) { - console.error(error3); - } - formSubmissionFinished({ formElement }) { - clearBusyState(formElement, __privateMethod(this, _findFrameElement2, findFrameElement_fn2).call(this, formElement)); - } - // View delegate - allowsImmediateRender({ element: newFrame }, options) { - const event = dispatch("turbo:before-frame-render", { - target: this.element, - detail: { newFrame, ...options }, - cancelable: true - }); - const { - defaultPrevented, - detail: { render: render2 } - } = event; - if (this.view.renderer && render2) { - this.view.renderer.renderElement = render2; - } - return !defaultPrevented; - } - viewRenderedSnapshot(_snapshot, _isPreview, _renderMethod) { - } - preloadOnLoadLinksForView(element) { - session.preloadOnLoadLinksForView(element); - } - viewInvalidated() { - } - // Frame renderer delegate - willRenderFrame(currentElement, _newElement) { - this.previousFrameElement = currentElement.cloneNode(true); - } - proposeVisitIfNavigatedWithAction(frame, action = null) { - this.action = action; - if (this.action) { - const pageSnapshot = PageSnapshot.fromElement(frame).clone(); - const { visitCachedSnapshot } = frame.delegate; - frame.delegate.fetchResponseLoaded = async (fetchResponse) => { - if (frame.src) { - const { statusCode, redirected } = fetchResponse; - const responseHTML = await fetchResponse.responseHTML; - const response = { statusCode, redirected, responseHTML }; - const options = { - response, - visitCachedSnapshot, - willRender: false, - updateHistory: false, - restorationIdentifier: this.restorationIdentifier, - snapshot: pageSnapshot - }; - if (this.action) - options.action = this.action; - session.visit(frame.src, options); - } - }; - } - } - changeHistory() { - if (this.action) { - const method = getHistoryMethodForAction(this.action); - session.history.update(method, expandURL(this.element.src || ""), this.restorationIdentifier); - } - } - async extractForeignFrameElement(container) { - let element; - const id = CSS.escape(this.id); - try { - element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL); - if (element) { - return element; - } - element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL); - if (element) { - await element.loaded; - return await this.extractForeignFrameElement(element); - } - } catch (error3) { - console.error(error3); - return new FrameElement(); - } - return null; - } - // Computed properties - get id() { - return this.element.id; - } - get enabled() { - return !this.element.disabled; - } - get sourceURL() { - if (this.element.src) { - return this.element.src; - } - } - set sourceURL(sourceURL) { - __privateMethod(this, _ignoringChangesToAttribute, ignoringChangesToAttribute_fn).call(this, "src", () => { - this.element.src = sourceURL ?? null; - }); - } - get loadingStyle() { - return this.element.loading; - } - get isLoading() { - return this.formSubmission !== void 0 || __privateGet(this, _resolveVisitPromise).call(this) !== void 0; - } - get complete() { - return this.element.hasAttribute("complete"); - } - set complete(value) { - if (value) { - this.element.setAttribute("complete", ""); - } else { - this.element.removeAttribute("complete"); - } - } - get isActive() { - return this.element.isActive && __privateGet(this, _connected); - } - get rootLocation() { - const meta = this.element.ownerDocument.querySelector(`meta[name="turbo-root"]`); - const root = meta?.content ?? "/"; - return expandURL(root); - } - }; - _currentFetchRequest = new WeakMap(); - _resolveVisitPromise = new WeakMap(); - _connected = new WeakMap(); - _hasBeenLoaded = new WeakMap(); - _ignoredAttributes = new WeakMap(); - _shouldMorphFrame = new WeakMap(); - _loadSourceURL = new WeakSet(); - loadSourceURL_fn = async function() { - if (this.enabled && this.isActive && !this.complete && this.sourceURL) { - this.element.loaded = __privateMethod(this, _visit, visit_fn).call(this, expandURL(this.sourceURL)); - this.appearanceObserver.stop(); - await this.element.loaded; - __privateSet(this, _hasBeenLoaded, true); - } - }; - _loadFrameResponse = new WeakSet(); - loadFrameResponse_fn = async function(fetchResponse, document2) { - const newFrameElement = await this.extractForeignFrameElement(document2.body); - const rendererClass = __privateGet(this, _shouldMorphFrame) ? MorphingFrameRenderer : FrameRenderer; - if (newFrameElement) { - const snapshot = new Snapshot(newFrameElement); - const renderer = new rendererClass(this, this.view.snapshot, snapshot, false, false); - if (this.view.renderPromise) - await this.view.renderPromise; - this.changeHistory(); - await this.view.render(renderer); - this.complete = true; - session.frameRendered(fetchResponse, this.element); - session.frameLoaded(this.element); - await this.fetchResponseLoaded(fetchResponse); - } else if (__privateMethod(this, _willHandleFrameMissingFromResponse, willHandleFrameMissingFromResponse_fn).call(this, fetchResponse)) { - __privateMethod(this, _handleFrameMissingFromResponse, handleFrameMissingFromResponse_fn).call(this, fetchResponse); - } - }; - _visit = new WeakSet(); - visit_fn = async function(url) { - const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element); - __privateGet(this, _currentFetchRequest)?.cancel(); - __privateSet(this, _currentFetchRequest, request); - return new Promise((resolve) => { - __privateSet(this, _resolveVisitPromise, () => { - __privateSet(this, _resolveVisitPromise, () => { - }); - __privateSet(this, _currentFetchRequest, null); - resolve(); - }); - request.perform(); - }); - }; - _navigateFrame = new WeakSet(); - navigateFrame_fn = function(element, url, submitter2) { - const frame = __privateMethod(this, _findFrameElement2, findFrameElement_fn2).call(this, element, submitter2); - frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(submitter2, element, frame)); - __privateMethod(this, _withCurrentNavigationElement, withCurrentNavigationElement_fn).call(this, element, () => { - frame.src = url; - }); - }; - _handleUnvisitableFrameResponse = new WeakSet(); - handleUnvisitableFrameResponse_fn = async function(fetchResponse) { - console.warn( - `The response (${fetchResponse.statusCode}) from is performing a full page visit due to turbo-visit-control.` - ); - await __privateMethod(this, _visitResponse, visitResponse_fn).call(this, fetchResponse.response); - }; - _willHandleFrameMissingFromResponse = new WeakSet(); - willHandleFrameMissingFromResponse_fn = function(fetchResponse) { - this.element.setAttribute("complete", ""); - const response = fetchResponse.response; - const visit2 = async (url, options) => { - if (url instanceof Response) { - __privateMethod(this, _visitResponse, visitResponse_fn).call(this, url); - } else { - session.visit(url, options); - } - }; - const event = dispatch("turbo:frame-missing", { - target: this.element, - detail: { response, visit: visit2 }, - cancelable: true - }); - return !event.defaultPrevented; - }; - _handleFrameMissingFromResponse = new WeakSet(); - handleFrameMissingFromResponse_fn = function(fetchResponse) { - this.view.missing(); - __privateMethod(this, _throwFrameMissingError, throwFrameMissingError_fn).call(this, fetchResponse); - }; - _throwFrameMissingError = new WeakSet(); - throwFrameMissingError_fn = function(fetchResponse) { - const message = `The response (${fetchResponse.statusCode}) did not contain the expected and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`; - throw new TurboFrameMissingError(message); - }; - _visitResponse = new WeakSet(); - visitResponse_fn = async function(response) { - const wrapped = new FetchResponse(response); - const responseHTML = await wrapped.responseHTML; - const { location: location2, redirected, statusCode } = wrapped; - return session.visit(location2, { response: { redirected, statusCode, responseHTML } }); - }; - _findFrameElement2 = new WeakSet(); - findFrameElement_fn2 = function(element, submitter2) { - const id = getAttribute2("data-turbo-frame", submitter2, element) || this.element.getAttribute("target"); - return getFrameElementById(id) ?? this.element; - }; - _formActionIsVisitable = new WeakSet(); - formActionIsVisitable_fn = function(form, submitter2) { - const action = getAction$1(form, submitter2); - return locationIsVisitable(expandURL(action), this.rootLocation); - }; - _shouldInterceptNavigation = new WeakSet(); - shouldInterceptNavigation_fn = function(element, submitter2) { - const id = getAttribute2("data-turbo-frame", submitter2, element) || this.element.getAttribute("target"); - if (element instanceof HTMLFormElement && !__privateMethod(this, _formActionIsVisitable, formActionIsVisitable_fn).call(this, element, submitter2)) { - return false; - } - if (!this.enabled || id == "_top") { - return false; - } - if (id) { - const frameElement = getFrameElementById(id); - if (frameElement) { - return !frameElement.disabled; - } - } - if (!session.elementIsNavigatable(element)) { - return false; - } - if (submitter2 && !session.elementIsNavigatable(submitter2)) { - return false; - } - return true; - }; - _isIgnoringChangesTo = new WeakSet(); - isIgnoringChangesTo_fn = function(attributeName) { - return __privateGet(this, _ignoredAttributes).has(attributeName); - }; - _ignoringChangesToAttribute = new WeakSet(); - ignoringChangesToAttribute_fn = function(attributeName, callback) { - __privateGet(this, _ignoredAttributes).add(attributeName); - callback(); - __privateGet(this, _ignoredAttributes).delete(attributeName); - }; - _withCurrentNavigationElement = new WeakSet(); - withCurrentNavigationElement_fn = function(element, callback) { - this.currentNavigationElement = element; - callback(); - delete this.currentNavigationElement; - }; - function getFrameElementById(id) { - if (id != null) { - const element = document.getElementById(id); - if (element instanceof FrameElement) { - return element; - } - } - } - function activateElement(element, currentURL) { - if (element) { - const src = element.getAttribute("src"); - if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) { - throw new Error(`Matching element has a source URL which references itself`); - } - if (element.ownerDocument !== document) { - element = document.importNode(element, true); - } - if (element instanceof FrameElement) { - element.connectedCallback(); - element.disconnectedCallback(); - return element; - } - } - } - var StreamActions = { - after() { - this.targetElements.forEach((e2) => e2.parentElement?.insertBefore(this.templateContent, e2.nextSibling)); - }, - append() { - this.removeDuplicateTargetChildren(); - this.targetElements.forEach((e2) => e2.append(this.templateContent)); - }, - before() { - this.targetElements.forEach((e2) => e2.parentElement?.insertBefore(this.templateContent, e2)); - }, - prepend() { - this.removeDuplicateTargetChildren(); - this.targetElements.forEach((e2) => e2.prepend(this.templateContent)); - }, - remove() { - this.targetElements.forEach((e2) => e2.remove()); - }, - replace() { - const method = this.getAttribute("method"); - this.targetElements.forEach((targetElement) => { - if (method === "morph") { - morphElements(targetElement, this.templateContent); - } else { - targetElement.replaceWith(this.templateContent); - } - }); - }, - update() { - const method = this.getAttribute("method"); - this.targetElements.forEach((targetElement) => { - if (method === "morph") { - morphChildren(targetElement, this.templateContent); - } else { - targetElement.innerHTML = ""; - targetElement.append(this.templateContent); - } - }); - }, - refresh() { - session.refresh(this.baseURI, this.requestId); - } - }; - var _raise, raise_fn; - var _StreamElement = class _StreamElement extends HTMLElement { - constructor() { - super(...arguments); - __privateAdd(this, _raise); - } - static async renderElement(newElement) { - await newElement.performAction(); - } - async connectedCallback() { - try { - await this.render(); - } catch (error3) { - console.error(error3); - } finally { - this.disconnect(); - } - } - async render() { - return this.renderPromise ?? (this.renderPromise = (async () => { - const event = this.beforeRenderEvent; - if (this.dispatchEvent(event)) { - await nextRepaint(); - await event.detail.render(this); - } - })()); - } - disconnect() { - try { - this.remove(); - } catch { - } - } - /** - * Removes duplicate children (by ID) - */ - removeDuplicateTargetChildren() { - this.duplicateChildren.forEach((c) => c.remove()); - } - /** - * Gets the list of duplicate children (i.e. those with the same ID) - */ - get duplicateChildren() { - const existingChildren = this.targetElements.flatMap((e2) => [...e2.children]).filter((c) => !!c.getAttribute("id")); - const newChildrenIds = [...this.templateContent?.children || []].filter((c) => !!c.getAttribute("id")).map((c) => c.getAttribute("id")); - return existingChildren.filter((c) => newChildrenIds.includes(c.getAttribute("id"))); - } - /** - * Gets the action function to be performed. - */ - get performAction() { - if (this.action) { - const actionFunction = StreamActions[this.action]; - if (actionFunction) { - return actionFunction; - } - __privateMethod(this, _raise, raise_fn).call(this, "unknown action"); - } - __privateMethod(this, _raise, raise_fn).call(this, "action attribute is missing"); - } - /** - * Gets the target elements which the template will be rendered to. - */ - get targetElements() { - if (this.target) { - return this.targetElementsById; - } else if (this.targets) { - return this.targetElementsByQuery; - } else { - __privateMethod(this, _raise, raise_fn).call(this, "target or targets attribute is missing"); - } - } - /** - * Gets the contents of the main `