From d9d6c235eda80bf94ef00cc5e41ad9a879bd4c75 Mon Sep 17 00:00:00 2001 From: David Moreno Date: Sun, 31 Jan 2021 14:40:30 +0100 Subject: [PATCH] Support Kibana 7.10.0 version Signed-off-by: David Moreno --- public/agg_table/_agg_table.scss | 4 +- public/agg_table/agg_table.html | 4 +- public/agg_table/agg_table.js | 2 +- public/agg_table/agg_table_group.html | 16 +- public/agg_table/agg_table_group.js | 2 +- public/components/kbn_network_vis_options.tsx | 377 --------------- public/components/kbn_radar_vis_options.tsx | 428 ++++++++++++++++++ ...azy.tsx => kbn_radar_vis_options_lazy.tsx} | 8 +- ...andler.js => kbn-radar-request-handler.js} | 2 +- ...ndler.js => kbn-radar-response-handler.js} | 2 +- public/get_inner_angular.ts | 2 +- public/index.scss | 2 +- public/index.ts | 2 +- public/kbn-network-vis.html | 3 - ...troller.js => kbn-radar-vis-controller.js} | 29 +- public/kbn-radar-vis.html | 3 + .../{kbn-network-vis.js => kbn-radar-vis.js} | 47 +- public/{kbn_network.scss => kbn_radar.scss} | 0 public/paginated_table/paginated_table.html | 16 +- public/paginated_table/paginated_table.js | 6 +- public/paginated_table/rows.js | 8 +- public/plugin.ts | 6 +- public/table_vis_legacy_module.ts | 20 +- public/vis_controller.ts | 6 +- target/public/.kbn-optimizer-cache | 66 ++- target/public/kbnRadar.chunk.0.js | 393 ++++++++-------- target/public/kbnRadar.chunk.0.js.map | 2 +- target/public/kbnRadar.plugin.js | 225 ++++----- target/public/kbnRadar.plugin.js.map | 2 +- 29 files changed, 885 insertions(+), 798 deletions(-) delete mode 100755 public/components/kbn_network_vis_options.tsx create mode 100755 public/components/kbn_radar_vis_options.tsx rename public/components/{kbn_network_vis_options_lazy.tsx => kbn_radar_vis_options_lazy.tsx} (78%) rename public/data_load/{kbn-network-request-handler.js => kbn-radar-request-handler.js} (98%) rename public/data_load/{kbn-network-response-handler.js => kbn-radar-response-handler.js} (98%) delete mode 100755 public/kbn-network-vis.html rename public/{kbn-network-vis-controller.js => kbn-radar-vis-controller.js} (91%) create mode 100755 public/kbn-radar-vis.html rename public/{kbn-network-vis.js => kbn-radar-vis.js} (61%) rename public/{kbn_network.scss => kbn_radar.scss} (100%) diff --git a/public/agg_table/_agg_table.scss b/public/agg_table/_agg_table.scss index 0413553..4cbc903 100755 --- a/public/agg_table/_agg_table.scss +++ b/public/agg_table/_agg_table.scss @@ -1,5 +1,5 @@ -kbn-network-agg-table, -kbn-network-agg-table-group { +kbn-radar-agg-table, +kbn-radar-agg-table-group { display: block; } diff --git a/public/agg_table/agg_table.html b/public/agg_table/agg_table.html index 4125b99..ef2afc4 100755 --- a/public/agg_table/agg_table.html +++ b/public/agg_table/agg_table.html @@ -1,4 +1,4 @@ - - + diff --git a/public/agg_table/agg_table.js b/public/agg_table/agg_table.js index e3bbf71..b522cf5 100755 --- a/public/agg_table/agg_table.js +++ b/public/agg_table/agg_table.js @@ -23,7 +23,7 @@ import aggTableTemplate from './agg_table.html'; import { getFormatService } from '../services'; import { fieldFormatter } from '../field_formatter'; -export function KbnNetworkAggTable(config, RecursionHelper) { +export function KbnRadarAggTable(config, RecursionHelper) { const fieldFormats = getFormatService(); const numberFormatter = fieldFormats.getDefaultInstance('number').getConverterFor('text'); diff --git a/public/agg_table/agg_table_group.html b/public/agg_table/agg_table_group.html index 35129bd..07f5f66 100755 --- a/public/agg_table/agg_table_group.html +++ b/public/agg_table/agg_table_group.html @@ -9,15 +9,15 @@ - - + - + @@ -43,15 +43,15 @@ - - + - + diff --git a/public/agg_table/agg_table_group.js b/public/agg_table/agg_table_group.js index 3514d0f..407da4e 100755 --- a/public/agg_table/agg_table_group.js +++ b/public/agg_table/agg_table_group.js @@ -19,7 +19,7 @@ import aggTableGroupTemplate from './agg_table_group.html'; -export function KbnNetworkAggTableGroup(RecursionHelper) { +export function KbnRadarAggTableGroup(RecursionHelper) { return { restrict: 'E', template: aggTableGroupTemplate, diff --git a/public/components/kbn_network_vis_options.tsx b/public/components/kbn_network_vis_options.tsx deleted file mode 100755 index e120bc6..0000000 --- a/public/components/kbn_network_vis_options.tsx +++ /dev/null @@ -1,377 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { some } from 'lodash'; -import React, { useEffect } from 'react'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiButtonEmpty, EuiDragDropContext, euiDragDropReorder, EuiDroppable, EuiFlexGroup, EuiFlexItem, EuiFormErrorText, EuiIconTip, EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui'; - -import { IAggConfigs } from '../../../../src/plugins/data/public'; -import { VisOptionsProps } from '../../../../src/plugins/vis_default_editor/public'; -import { NumberInputOption, SelectOption } from '../../../../src/plugins/charts/public'; -import { SwitchOption } from './switch'; -import { TextInputOption } from './text_input'; -import { totalAggregations, AggTypes } from './utils'; - - -export interface KbnNetworkVisParams { - type: 'table'; - showLabels: boolean; - showPopup: boolean; - showColorLegend: boolean; - nodePhysics: boolean; - firstNodeColor: string; - secondNodeColor: string; - shapeFirstNode: string; - shapeSecondNode: string; - displayArrow: boolean; - posArrow: string; - shapeArrow: string; - smoothType: string; - scaleArrow: number | ''; - minCutMetricSizeNode: number | ''; - maxNodeSize: number | ''; - minNodeSize: number | ''; - maxEdgeSize: number | ''; - minEdgeSize: number | ''; - springConstant: number | ''; - gravitationalConstant: number | ''; - labelColor: string; -} - -function KbnNetworkOptions({ - stateParams, - setValue, -}: VisOptionsProps) { - - return ( -
- - - -

- -

-
- - - - - - - - - - - - - - -   - - } - placeholder="#000000" - paramName="firstNodeColor" - value={stateParams.firstNodeColor} - setValue={setValue} - /> - - - -   - - } - placeholder="#000000" - paramName="secondNodeColor" - value={stateParams.secondNodeColor} - setValue={setValue} - /> - - - -   - - } - placeholder="dot" - paramName="shapeFirstNode" - value={stateParams.shapeFirstNode} - setValue={setValue} - /> - - - -   - - } - placeholder="dot" - paramName="shapeSecondNode" - value={stateParams.shapeSecondNode} - setValue={setValue} - /> - - - -   - - } - placeholder="to" - paramName="posArrow" - value={stateParams.posArrow} - setValue={setValue} - /> - - - -   - - } - placeholder="arrow" - paramName="shapeArrow" - value={stateParams.shapeArrow} - setValue={setValue} - /> - - - -   - - } - placeholder="continous" - paramName="smoothType" - value={stateParams.smoothType} - setValue={setValue} - /> - - - -   - - } - placeholder="#000000" - paramName="labelColor" - value={stateParams.labelColor} - setValue={setValue} - /> - - - {' '} - - } - paramName="scaleArrow" - value={stateParams.scaleArrow} - setValue={setValue} - /> - - - {' '} - - } - paramName="minCutMetricSizeNode" - value={stateParams.minCutMetricSizeNode} - setValue={setValue} - /> - - - {' '} - - } - paramName="maxNodeSize" - value={stateParams.maxNodeSize} - setValue={setValue} - /> - - - {' '} - - } - paramName="minNodeSize" - value={stateParams.minNodeSize} - setValue={setValue} - /> - - - {' '} - - } - paramName="maxEdgeSize" - value={stateParams.maxEdgeSize} - setValue={setValue} - /> - - - {' '} - - } - paramName="minEdgeSize" - value={stateParams.minEdgeSize} - setValue={setValue} - /> - - - {' '} - - } - paramName="springConstant" - value={stateParams.springConstant} - setValue={setValue} - /> - - - {' '} - - } - paramName="gravitationalConstant" - value={stateParams.gravitationalConstant} - setValue={setValue} - /> - - - - -
- {/* /NETOWRK SETTINGS SECTION */} - - - -
- ); -} - -// default export required for React.Lazy -// eslint-disable-next-line import/no-default-export -export { KbnNetworkOptions as default }; diff --git a/public/components/kbn_radar_vis_options.tsx b/public/components/kbn_radar_vis_options.tsx new file mode 100755 index 0000000..d6d3170 --- /dev/null +++ b/public/components/kbn_radar_vis_options.tsx @@ -0,0 +1,428 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { some } from 'lodash'; +import React, { useEffect } from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { EuiButtonEmpty, EuiDragDropContext, euiDragDropReorder, EuiDroppable, EuiFlexGroup, EuiFlexItem, EuiFormErrorText, EuiIconTip, EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui'; + +import { IAggConfigs } from '../../../../src/plugins/data/public'; +import { VisOptionsProps } from '../../../../src/plugins/vis_default_editor/public'; +import { NumberInputOption, SelectOption } from '../../../../src/plugins/charts/public'; +import { SwitchOption } from './switch'; +import { TextInputOption } from './text_input'; +import { totalAggregations, AggTypes } from './utils'; +import { array } from 'fp-ts'; + + +export interface KbnRadarVisParams { + type: 'radar'; + normalize: boolean; + vertexScaleTo: number | ''; + rangesMetrics_0_from: number | '', + rangesMetrics_0_to: number | '', + rangesMetrics_1_from: number | '', + rangesMetrics_1_to: number | '', + rangesMetrics_2_from: number | '', + rangesMetrics_2_to: number | '', + rangesMetrics_3_from: number | '', + rangesMetrics_3_to: number | '', + rangesMetrics_4_from: number | '', + rangesMetrics_4_to: number | '', + rangesMetrics_5_from: number | '', + rangesMetrics_5_to: number | '', + rangesMetrics_6_from: number | '', + rangesMetrics_6_to: number | '', + rangesMetrics_7_from: number | '', + rangesMetrics_7_to: number | '', + rangesMetrics_8_from: number | '', + rangesMetrics_8_to: number | '', + rangesMetrics_9_from: number | '', + rangesMetrics_9_to: number | '', +} + +function KbnRadarOptions({ + stateParams, + setValue, +}: VisOptionsProps) { + + return ( +
+ + + +

+ +

+
+ + + + + + {stateParams.normalize && +
+ + {' '} + + } + paramName="vertexScaleTo" + value={stateParams.vertexScaleTo} + setValue={setValue} + /> + + +

+ +

+ + + + {' '} + + } + paramName="rangesMetrics_0_from" + value={stateParams.rangesMetrics_0_from} + setValue={setValue} + /> + + {' '} + + } + paramName="rangesMetrics_0_to" + value={stateParams.rangesMetrics_0_to} + setValue={setValue} + /> + + + + + + {' '} + + } + paramName="rangesMetrics_1_from" + value={stateParams.rangesMetrics_1_from} + setValue={setValue} + /> + + {' '} + + } + paramName="rangesMetrics_1_to" + value={stateParams.rangesMetrics_1_to} + setValue={setValue} + /> + + + + + + {' '} + + } + paramName="rangesMetrics_2_from" + value={stateParams.rangesMetrics_2_from} + setValue={setValue} + /> + + {' '} + + } + paramName="rangesMetrics_2_to" + value={stateParams.rangesMetrics_2_to} + setValue={setValue} + /> + + + + + + {' '} + + } + paramName="rangesMetrics_3_from" + value={stateParams.rangesMetrics_3_from} + setValue={setValue} + /> + + {' '} + + } + paramName="rangesMetrics_3_to" + value={stateParams.rangesMetrics_3_to} + setValue={setValue} + /> + + + + + + {' '} + + } + paramName="rangesMetrics_4_from" + value={stateParams.rangesMetrics_4_from} + setValue={setValue} + /> + + {' '} + + } + paramName="rangesMetrics_4_to" + value={stateParams.rangesMetrics_4_to} + setValue={setValue} + /> + + + + + + {' '} + + } + paramName="rangesMetrics_5_from" + value={stateParams.rangesMetrics_5_from} + setValue={setValue} + /> + + {' '} + + } + paramName="rangesMetrics_5_to" + value={stateParams.rangesMetrics_5_to} + setValue={setValue} + /> + + + + + + {' '} + + } + paramName="rangesMetrics_6_from" + value={stateParams.rangesMetrics_6_from} + setValue={setValue} + /> + + {' '} + + } + paramName="rangesMetrics_6_to" + value={stateParams.rangesMetrics_6_to} + setValue={setValue} + /> + + + + + + {' '} + + } + paramName="rangesMetrics_7_from" + value={stateParams.rangesMetrics_7_from} + setValue={setValue} + /> + + {' '} + + } + paramName="rangesMetrics_7_to" + value={stateParams.rangesMetrics_7_to} + setValue={setValue} + /> + + + + + + {' '} + + } + paramName="rangesMetrics_8_from" + value={stateParams.rangesMetrics_8_from} + setValue={setValue} + /> + + {' '} + + } + paramName="rangesMetrics_8_to" + value={stateParams.rangesMetrics_8_to} + setValue={setValue} + /> + + + + + + {' '} + + } + paramName="rangesMetrics_9_from" + value={stateParams.rangesMetrics_9_from} + setValue={setValue} + /> + + {' '} + + } + paramName="rangesMetrics_9_to" + value={stateParams.rangesMetrics_9_to} + setValue={setValue} + /> + +
+ } + + + +
+ {/* /NETOWRK SETTINGS SECTION */} + + + +
+ ); +} + +// default export required for React.Lazy +// eslint-disable-next-line import/no-default-export +export { KbnRadarOptions as default }; diff --git a/public/components/kbn_network_vis_options_lazy.tsx b/public/components/kbn_radar_vis_options_lazy.tsx similarity index 78% rename from public/components/kbn_network_vis_options_lazy.tsx rename to public/components/kbn_radar_vis_options_lazy.tsx index 2b40d6a..39745eb 100755 --- a/public/components/kbn_network_vis_options_lazy.tsx +++ b/public/components/kbn_radar_vis_options_lazy.tsx @@ -19,12 +19,12 @@ import React, { lazy, Suspense } from 'react'; import { EuiLoadingSpinner } from '@elastic/eui'; import { VisOptionsProps } from '../../../../src/plugins/vis_default_editor/public'; -import { KbnNetworkVisParams } from './kbn_network_vis_options'; +import { KbnRadarVisParams } from './kbn_radar_vis_options'; -const KbnNetworkOptionsComponent = lazy(() => import('./kbn_network_vis_options')); +const KbnRadarOptionsComponent = lazy(() => import('./kbn_radar_vis_options')); -export const KbnNetworkOptions = (props: VisOptionsProps) => ( +export const KbnRadarOptions = (props: VisOptionsProps) => ( }> - + ); diff --git a/public/data_load/kbn-network-request-handler.js b/public/data_load/kbn-radar-request-handler.js similarity index 98% rename from public/data_load/kbn-network-request-handler.js rename to public/data_load/kbn-radar-request-handler.js index fe107bd..87e53ff 100755 --- a/public/data_load/kbn-network-request-handler.js +++ b/public/data_load/kbn-radar-request-handler.js @@ -23,7 +23,7 @@ import { getSearchService, getQueryService } from '../services'; import { handleCourierRequest } from './kibana_cloned_code/courier'; import { serializeAggConfig } from './kibana_cloned_code/utils'; -export async function kbnNetworkRequestHandler ({ +export async function kbnRadarRequestHandler ({ partialRows, metricsAtAllLevels, visParams, diff --git a/public/data_load/kbn-network-response-handler.js b/public/data_load/kbn-radar-response-handler.js similarity index 98% rename from public/data_load/kbn-network-response-handler.js rename to public/data_load/kbn-radar-response-handler.js index f9338ca..eb46cea 100755 --- a/public/data_load/kbn-network-response-handler.js +++ b/public/data_load/kbn-radar-response-handler.js @@ -103,6 +103,6 @@ function splitTable(columns, rows, $parent) { }); } -export function kbnNetworkResponseHandler(response) { +export function kbnRadarResponseHandler(response) { return { tables: splitTable(response.columns, response.rows, null), totalHits: response.totalHits, aggs: response.aggs, newResponse: true }; } diff --git a/public/get_inner_angular.ts b/public/get_inner_angular.ts index f85239c..eddf24e 100755 --- a/public/get_inner_angular.ts +++ b/public/get_inner_angular.ts @@ -46,7 +46,7 @@ export function getAngularModule(name: string, core: CoreStart, context: PluginI let initialized = false; -export function getInnerAngular(name = 'kibana/kbn_network_vis', core: CoreStart) { +export function getInnerAngular(name = 'kibana/kbn_radar_vis', core: CoreStart) { if (!initialized) { createLocalPrivateModule(); createLocalI18nModule(); diff --git a/public/index.scss b/public/index.scss index 8f3c6c9..f5b1178 100755 --- a/public/index.scss +++ b/public/index.scss @@ -1 +1 @@ -@import 'kbn_network'; +@import 'kbn_radar'; diff --git a/public/index.ts b/public/index.ts index 39236c8..3f5944c 100755 --- a/public/index.ts +++ b/public/index.ts @@ -18,7 +18,7 @@ */ import './index.scss'; import { PluginInitializerContext } from 'kibana/public'; -import { KbnNetworkPlugin as Plugin } from './plugin'; +import { KbnRadarPlugin as Plugin } from './plugin'; export function plugin(initializerContext: PluginInitializerContext) { return new Plugin(initializerContext); diff --git a/public/kbn-network-vis.html b/public/kbn-network-vis.html deleted file mode 100755 index 7a45977..0000000 --- a/public/kbn-network-vis.html +++ /dev/null @@ -1,3 +0,0 @@ -
- -
\ No newline at end of file diff --git a/public/kbn-network-vis-controller.js b/public/kbn-radar-vis-controller.js similarity index 91% rename from public/kbn-network-vis-controller.js rename to public/kbn-radar-vis-controller.js index b3c4ed0..fab1bbf 100755 --- a/public/kbn-network-vis-controller.js +++ b/public/kbn-radar-vis-controller.js @@ -25,8 +25,8 @@ import Chartjs from 'chart.js' import AggConfigResult from './data_load/agg_config_result'; import { getNotifications, getFormatService } from './services'; -// KbnNetworkVis AngularJS controller -function KbnNetworkVisController($scope, config, $timeout) { +// KbnRadarVis AngularJS controller +function KbnRadarVisController($scope, config, $timeout) { function normalize(val, max, min, scale) { return (scale * (val - min) / (max - min)); } function revertNormalize(final, max, min, scale) { return ((final / scale) * (max - min) + min); } @@ -34,8 +34,8 @@ function KbnNetworkVisController($scope, config, $timeout) { $scope.$watchMulti(['esResponse'], function ([resp]) { // options - const normalizeData = $scope.vis.params.normalize; - const vertexMaxScale = $scope.vis.params.vertexScale.to; + const normalizeData = $scope.visParams.normalize; + const vertexMaxScale = $scope.visParams.vertexScaleTo; @@ -91,7 +91,10 @@ function KbnNetworkVisController($scope, config, $timeout) { valuesMetrics[i + 1] = [] } let k = i + 1 - valuesMetrics[i + 1].push(bucket['col-' + k + '-' + metricIds[i]]) + //Pick metric if exist + if (bucket['col-' + k + '-' + metricIds[i]]) { + valuesMetrics[i + 1].push(bucket['col-' + k + '-' + metricIds[i]]) + } } } /////// @@ -103,17 +106,15 @@ function KbnNetworkVisController($scope, config, $timeout) { var originWithoutNormalize = [] var label = bucket['col-0-' + resp.aggs.bySchemaName('field')[0].id] for (let index = 1; index < Object.keys(bucket).length; index++) { - if (normalizeData) { + if (normalizeData && valuesMetrics[index]) { var normMin = 1; var normMax = Math.max(...valuesMetrics[index]); - if ($scope.vis.params.rangesMetrics) { - if ($scope.vis.params.rangesMetrics[index - 1].from) { - normMin = $scope.vis.params.rangesMetrics[index - 1].from; - } - if ($scope.vis.params.rangesMetrics[index - 1].to) { - normMax = $scope.vis.params.rangesMetrics[index - 1].to; - } + if ($scope.visParams['rangesMetrics_' + (index - 1) + '_from']) { + normMin = $scope.visParams['rangesMetrics_' + (index - 1) + '_from']; + } + if ($scope.visParams['rangesMetrics_' + (index - 1) + '_to']) { + normMax = $scope.visParams['rangesMetrics_' + (index - 1) + '_to']; } // Just pick the metric if exist if (bucket['col-' + index + '-' + metricIds[index - 1]]) { @@ -286,4 +287,4 @@ function KbnNetworkVisController($scope, config, $timeout) { } -export { KbnNetworkVisController }; \ No newline at end of file +export { KbnRadarVisController }; \ No newline at end of file diff --git a/public/kbn-radar-vis.html b/public/kbn-radar-vis.html new file mode 100755 index 0000000..94f1fb2 --- /dev/null +++ b/public/kbn-radar-vis.html @@ -0,0 +1,3 @@ +
+ +
\ No newline at end of file diff --git a/public/kbn-network-vis.js b/public/kbn-radar-vis.js similarity index 61% rename from public/kbn-network-vis.js rename to public/kbn-radar-vis.js index e4e09e8..769509e 100755 --- a/public/kbn-network-vis.js +++ b/public/kbn-radar-vis.js @@ -21,41 +21,61 @@ import { i18n } from '@kbn/i18n'; import { AggGroupNames } from '../../../src/plugins/data/public'; import { Schemas } from '../../../src/plugins/vis_default_editor/public'; -import tableVisTemplate from './kbn-network-vis.html'; -import { getKbnNetworkVisualizationController } from './vis_controller'; -import { kbnNetworkRequestHandler } from './data_load/kbn-network-request-handler'; -import { kbnNetworkResponseHandler } from './data_load/kbn-network-response-handler'; -import { KbnNetworkOptions } from './components/kbn_network_vis_options_lazy'; +import tableVisTemplate from './kbn-radar-vis.html'; +import { getKbnRadarVisualizationController } from './vis_controller'; +import { kbnRadarRequestHandler } from './data_load/kbn-radar-request-handler'; +import { kbnRadarResponseHandler } from './data_load/kbn-radar-response-handler'; +import { KbnRadarOptions } from './components/kbn_radar_vis_options_lazy'; import { VIS_EVENT_TO_TRIGGER } from '../../../src/plugins/visualizations/public'; import './index.scss' import image from './images/icon-radar.svg'; // define the visType object, which kibana will use to display and configure new Vis object of this type. -export function kbnNetworkVisTypeDefinition(core, context) { +export function kbnRadarVisTypeDefinition(core, context) { return { type: 'radar', name: 'kbn_radar', - title: i18n.translate('visTypeKbnNetwork.visTitle', { + title: i18n.translate('visTypeKbnRadar.visTitle', { defaultMessage: 'Radar' }), icon: image, - description: i18n.translate('visTypeKbnNetwork.visDescription', { + description: i18n.translate('visTypeKbnRadar.visDescription', { defaultMessage: 'Spyder nets with the radar visualization' }), - visualization: getKbnNetworkVisualizationController(core, context), + visualization: getKbnRadarVisualizationController(core, context), getSupportedTriggers: () => { return [VIS_EVENT_TO_TRIGGER.filter]; }, visConfig: { defaults: { normalize: false, - vertexScale: {from: 0, to: 5}, + vertexScaleTo: 5, + rangesMetrics_0_from: 0, + rangesMetrics_0_to: 100, + rangesMetrics_1_from: 0, + rangesMetrics_1_to: 100, + rangesMetrics_2_from: 0, + rangesMetrics_2_to: 100, + rangesMetrics_3_from: 0, + rangesMetrics_3_to: 100, + rangesMetrics_4_from: 0, + rangesMetrics_4_to: 100, + rangesMetrics_5_from: 0, + rangesMetrics_5_to: 100, + rangesMetrics_6_from: 0, + rangesMetrics_6_to: 100, + rangesMetrics_7_from: 0, + rangesMetrics_7_to: 100, + rangesMetrics_8_from: 0, + rangesMetrics_8_to: 100, + rangesMetrics_9_from: 0, + rangesMetrics_9_to: 100, }, template: tableVisTemplate }, editorConfig: { - optionsTemplate: KbnNetworkOptions, + optionsTemplate: KbnRadarOptions, schemas: new Schemas([ { group: AggGroupNames.Metrics, @@ -68,6 +88,7 @@ export function kbnNetworkVisTypeDefinition(core, context) { } }, min: 1, + max: 10, defaults: [{ type: 'count', schema: 'vertex' }] }, { @@ -81,8 +102,8 @@ export function kbnNetworkVisTypeDefinition(core, context) { ]) }, implementsRenderComplete: true, - requestHandler: kbnNetworkRequestHandler, - responseHandler: kbnNetworkResponseHandler, + requestHandler: kbnRadarRequestHandler, + responseHandler: kbnRadarResponseHandler, hierarchicalData: (vis) => { return true; } diff --git a/public/kbn_network.scss b/public/kbn_radar.scss similarity index 100% rename from public/kbn_network.scss rename to public/kbn_radar.scss diff --git a/public/paginated_table/paginated_table.html b/public/paginated_table/paginated_table.html index 08ebd7a..c8a4738 100755 --- a/public/paginated_table/paginated_table.html +++ b/public/paginated_table/paginated_table.html @@ -5,12 +5,12 @@ class="kbnAggTable">
- + diff --git a/public/paginated_table/paginated_table.js b/public/paginated_table/paginated_table.js index 1723b9d..9408dd0 100755 --- a/public/paginated_table/paginated_table.js +++ b/public/paginated_table/paginated_table.js @@ -22,7 +22,7 @@ import _ from 'lodash'; import AggConfigResult from '../data_load/agg_config_result'; import paginatedTableTemplate from './paginated_table.html'; -export function NetworkPaginatedTable($filter) { +export function RadarPaginatedTable($filter) { const orderBy = $filter('orderBy'); return { @@ -43,7 +43,7 @@ export function NetworkPaginatedTable($filter) { totalFunc: '=', filter: '=' }, - controllerAs: 'networkPaginatedTable', + controllerAs: 'radarPaginatedTable', controller: function ($scope) { const self = this; self.sort = { @@ -118,7 +118,7 @@ export function NetworkPaginatedTable($filter) { 'rows', 'columns', '[]sort', - '[]networkPaginatedTable.sort' + '[]radarPaginatedTable.sort' ], resortRows); } }; diff --git a/public/paginated_table/rows.js b/public/paginated_table/rows.js index 08491d3..0f8abcd 100755 --- a/public/paginated_table/rows.js +++ b/public/paginated_table/rows.js @@ -22,7 +22,7 @@ import _ from 'lodash'; import AggConfigResult from '../data_load/agg_config_result'; import tableCellFilterHtml from './table_cell_filter.html'; -export function KbnNetworkRows($compile) { +export function KbnRadarRows($compile) { return { restrict: 'A', link: function ($scope, $el, attr) { @@ -33,7 +33,7 @@ export function KbnNetworkRows($compile) { function createFilterableCell(aggConfigResult) { const $template = $(tableCellFilterHtml); - $template.addClass('kbnKbnNetworkCellFilter__hover'); + $template.addClass('kbnKbnRadarCellFilter__hover'); const scope = $scope.$new(); @@ -119,8 +119,8 @@ export function KbnNetworkRows($compile) { } $scope.$watchMulti([ - attr.kbnNetworkRows, - attr.kbnNetworkRowsMin + attr.kbnRadarRows, + attr.kbnRadarRowsMin ], function (vals) { let rows = vals[0]; const min = vals[1]; diff --git a/public/plugin.ts b/public/plugin.ts index 984933f..8bde29d 100755 --- a/public/plugin.ts +++ b/public/plugin.ts @@ -19,7 +19,7 @@ import { PluginInitializerContext, CoreSetup, CoreStart, Plugin } from '../../../src/core/public'; import { VisualizationsSetup } from '../../../src/plugins/visualizations/public'; -import { kbnNetworkVisTypeDefinition } from './kbn-network-vis'; +import { kbnRadarVisTypeDefinition } from './kbn-radar-vis'; import { DataPublicPluginStart } from '../../../src/plugins/data/public'; import { setFormatService, setKibanaLegacy, setNotifications, setQueryService, setSearchService } from './services'; @@ -38,7 +38,7 @@ export interface TablePluginStartDependencies { } /** @internal */ -export class KbnNetworkPlugin implements Plugin, void> { +export class KbnRadarPlugin implements Plugin, void> { initializerContext: PluginInitializerContext; createBaseVisualization: any; @@ -51,7 +51,7 @@ export class KbnNetworkPlugin implements Plugin, void> { { visualizations }: TablePluginSetupDependencies ) { visualizations.createBaseVisualization( - kbnNetworkVisTypeDefinition(core, this.initializerContext) + kbnRadarVisTypeDefinition(core, this.initializerContext) ); } diff --git a/public/table_vis_legacy_module.ts b/public/table_vis_legacy_module.ts index 95d441b..849633a 100755 --- a/public/table_vis_legacy_module.ts +++ b/public/table_vis_legacy_module.ts @@ -20,22 +20,22 @@ import { IModule } from 'angular'; // @ts-ignore -import { KbnNetworkVisController } from './kbn-network-vis-controller.js'; +import { KbnRadarVisController } from './kbn-radar-vis-controller.js'; // @ts-ignore -import { KbnNetworkAggTable } from './agg_table/agg_table'; +import { KbnRadarAggTable } from './agg_table/agg_table'; // @ts-ignore -import { KbnNetworkAggTableGroup } from './agg_table/agg_table_group'; +import { KbnRadarAggTableGroup } from './agg_table/agg_table_group'; // @ts-ignore -import { KbnNetworkRows } from './paginated_table/rows'; +import { KbnRadarRows } from './paginated_table/rows'; // @ts-ignore -import { NetworkPaginatedTable } from './paginated_table/paginated_table'; +import { RadarPaginatedTable } from './paginated_table/paginated_table'; /** @internal */ export const initTableVisLegacyModule = (angularIns: IModule): void => { angularIns - .controller('KbnNetworkVisController', KbnNetworkVisController) - .directive('kbnNetworkAggTable', KbnNetworkAggTable) - .directive('kbnNetworkAggTableGroup', KbnNetworkAggTableGroup) - .directive('kbnNetworkRows', KbnNetworkRows) - .directive('networkPaginatedTable', NetworkPaginatedTable); + .controller('KbnRadarVisController', KbnRadarVisController) + .directive('kbnRadarAggTable', KbnRadarAggTable) + .directive('kbnRadarAggTableGroup', KbnRadarAggTableGroup) + .directive('kbnRadarRows', KbnRadarRows) + .directive('radarPaginatedTable', RadarPaginatedTable); }; diff --git a/public/vis_controller.ts b/public/vis_controller.ts index c63e2e6..f1ee56d 100755 --- a/public/vis_controller.ts +++ b/public/vis_controller.ts @@ -25,13 +25,13 @@ import { getAngularModule } from './get_inner_angular'; import { getKibanaLegacy } from './services'; import { initTableVisLegacyModule } from './table_vis_legacy_module'; -const innerAngularName = 'kibana/kbn_network_vis'; +const innerAngularName = 'kibana/kbn_radar_vis'; -export function getKbnNetworkVisualizationController( +export function getKbnRadarVisualizationController( core: CoreSetup, context: PluginInitializerContext ) { - return class KbnNetworkVisualizationController { + return class KbnRadarVisualizationController { private tableVisModule: IModule | undefined; private injector: auto.IInjectorService | undefined; el: JQuery; diff --git a/target/public/.kbn-optimizer-cache b/target/public/.kbn-optimizer-cache index 507b2db..2df4593 100644 --- a/target/public/.kbn-optimizer-cache +++ b/target/public/.kbn-optimizer-cache @@ -91,52 +91,51 @@ "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/packages/kbn-optimizer/postcss.config.js": 1608569291536.7827, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/packages/kbn-optimizer/target/worker/entry_point_creator.js": 1608569944255.3154, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/packages/kbn-ui-shared-deps/public_path_module_creator.js": 1606388316189.8308, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/kibana.json": 1612092377244.7856, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/kibana.json": 1612098387658.1008, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/node_modules/chart.js/package.json": 1612092598922, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/node_modules/chartjs-color-string/package.json": 1612092598923, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/node_modules/chartjs-color/package.json": 1612092598914, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/node_modules/color-convert/package.json": 1608569689366, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/node_modules/color-name/package.json": 1606729795899, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/node_modules/randomcolor/package.json": 1612092598927, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/agg_table/agg_table_group.html": 1612092367324.8838, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/agg_table/agg_table_group.js": 1612092367332.8835, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/agg_table/agg_table.html": 1612092367320.8838, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/agg_table/agg_table.js": 1612092367324.8838, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/components/kbn_network_vis_options_lazy.tsx": 1612092367336.8835, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/components/kbn_network_vis_options.tsx": 1612092367336.8835, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/agg_table/agg_table_group.html": 1612095859477.5544, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/agg_table/agg_table_group.js": 1612095892744.7373, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/agg_table/agg_table.html": 1612095945351.4497, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/agg_table/agg_table.js": 1612095892744.7373, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/components/kbn_radar_vis_options_lazy.tsx": 1612095990032, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/components/kbn_radar_vis_options.tsx": 1612099937784.9539, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/components/switch.tsx": 1612092367336.8835, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/components/text_input.tsx": 1612092367336.8835, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/agg_config_result.js": 1612092367336.8835, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/kbn-network-request-handler.js": 1612092367340.8835, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/kbn-network-response-handler.js": 1612092367340.8835, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/kbn-radar-request-handler.js": 1612096006512, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/kbn-radar-response-handler.js": 1612096011038, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/kibana_cloned_code/build_tabular_inspector_data.ts": 1612092367340.8835, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/kibana_cloned_code/courier.ts": 1612092367340.8835, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/kibana_cloned_code/create_filter.ts": 1612092367340.8835, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/kibana_cloned_code/utils.ts": 1612092367344.8835, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/field_formatter.ts": 1612092367344.8835, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/get_inner_angular.ts": 1612092367344.8835, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/get_inner_angular.ts": 1612095866197.3892, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/images/icon-radar.svg": 1612093309006.6726, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/index.scss": 1612092367348.8835, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/index.ts": 1612092367348.8835, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn_network.scss": 1612095148480.828, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn-network-vis-controller.js": 1612095756692.0957, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn-network-vis.html": 1612095053859.9192, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn-network-vis.js": 1612094097520.6716, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/paginated_table/paginated_table.html": 1612092367352.8833, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/paginated_table/paginated_table.js": 1612092367352.8833, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/paginated_table/rows.js": 1612092367352.8833, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/index.scss": 1612095866193.3894, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/index.ts": 1612095892744.7373, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn_radar.scss": 1612095975472, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn-radar-vis-controller.js": 1612100251356.6382, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn-radar-vis.html": 1612095966362, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn-radar-vis.js": 1612099262333.9143, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/paginated_table/paginated_table.html": 1612095945351.4497, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/paginated_table/paginated_table.js": 1612095952863.2664, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/paginated_table/rows.js": 1612095892744.7373, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/paginated_table/table_cell_filter.html": 1612092367352.8833, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/plugin.ts": 1612092367356.8833, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/plugin.ts": 1612095892740.7375, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/services.ts": 1612092367356.8833, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/table_vis_legacy_module.ts": 1612092367356.8833, - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/vis_controller.ts": 1612092367356.8833, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/table_vis_legacy_module.ts": 1612095952863.2664, + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/vis_controller.ts": 1612095892740.7375, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/src/core/public/core_app/styles/_globals_v7dark.scss": 1608569291588.7822, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/src/core/public/core_app/styles/_globals_v7light.scss": 1608569291588.7822, "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/src/core/public/core_app/styles/_mixins.scss": 1608569291588.7822 } }, - "moduleCount": 162, - "workUnits": 702, + "moduleCount": 161, + "workUnits": 701, "files": [ "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/node_modules/@elastic/eui/src/global_styling/functions/_colors.scss", "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/node_modules/@elastic/eui/src/global_styling/functions/_index.scss", @@ -201,13 +200,12 @@ "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/agg_table/agg_table_group.js", "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/agg_table/agg_table.html", "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/agg_table/agg_table.js", - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/components/kbn_network_vis_options_lazy.tsx", - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/components/kbn_network_vis_options.tsx", + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/components/kbn_radar_vis_options_lazy.tsx", + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/components/kbn_radar_vis_options.tsx", "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/components/switch.tsx", - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/components/text_input.tsx", "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/agg_config_result.js", - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/kbn-network-request-handler.js", - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/kbn-network-response-handler.js", + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/kbn-radar-request-handler.js", + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/kbn-radar-response-handler.js", "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/kibana_cloned_code/build_tabular_inspector_data.ts", "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/kibana_cloned_code/courier.ts", "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/data_load/kibana_cloned_code/create_filter.ts", @@ -217,10 +215,10 @@ "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/images/icon-radar.svg", "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/index.scss", "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/index.ts", - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn_network.scss", - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn-network-vis-controller.js", - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn-network-vis.html", - "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn-network-vis.js", + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn_radar.scss", + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn-radar-vis-controller.js", + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn-radar-vis.html", + "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/kbn-radar-vis.js", "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/paginated_table/paginated_table.html", "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/paginated_table/paginated_table.js", "/home/dlumbrer/devel/kibanaworkspace/kibana-elastic/plugins/kbn_radar/public/paginated_table/rows.js", diff --git a/target/public/kbnRadar.chunk.0.js b/target/public/kbnRadar.chunk.0.js index c15c0e7..2fb61b3 100644 --- a/target/public/kbnRadar.chunk.0.js +++ b/target/public/kbnRadar.chunk.0.js @@ -1,15 +1,15 @@ (window["kbnRadar_bundle_jsonpfunction"] = window["kbnRadar_bundle_jsonpfunction"] || []).push([[0],{ -/***/ "./public/components/kbn_network_vis_options.tsx": -/*!*******************************************************!*\ - !*** ./public/components/kbn_network_vis_options.tsx ***! - \*******************************************************/ +/***/ "./public/components/kbn_radar_vis_options.tsx": +/*!*****************************************************!*\ + !*** ./public/components/kbn_radar_vis_options.tsx ***! + \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return KbnNetworkOptions; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return KbnRadarOptions; }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _kbn_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @kbn/i18n */ "@kbn/i18n"); @@ -21,7 +21,6 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../../src/plugins/charts/public */ "plugin/charts/public"); /* harmony import */ var _src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _switch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./switch */ "./public/components/switch.tsx"); -/* harmony import */ var _text_input__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./text_input */ "./public/components/text_input.tsx"); /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -47,194 +46,262 @@ __webpack_require__.r(__webpack_exports__); - -function KbnNetworkOptions({ +function KbnRadarOptions({ stateParams, setValue }) { return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { - className: "kbn-network-vis-params" + className: "kbn-radar-vis-params" }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiPanel"], { paddingSize: "s" }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiTitle"], { size: "xs" }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("h3", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeKbnNetwork.params.networkSettingsSection", - defaultMessage: "Network Settings" + id: "visTypeKbnRadar.params.radarSettingsSection", + defaultMessage: "Radar Settings" }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { size: "m" }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_switch__WEBPACK_IMPORTED_MODULE_5__["SwitchOption"], { - label: _kbn_i18n__WEBPACK_IMPORTED_MODULE_1__["i18n"].translate('visTypeKbnNetwork.params.showLabels', { - defaultMessage: 'Show labels' + label: _kbn_i18n__WEBPACK_IMPORTED_MODULE_1__["i18n"].translate('visTypeKbnRadar.params.normalize', { + defaultMessage: 'Normalize data' }), - paramName: "showLabels", - value: stateParams.showLabels, + paramName: "normalize", + value: stateParams.normalize, setValue: setValue - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_switch__WEBPACK_IMPORTED_MODULE_5__["SwitchOption"], { - label: _kbn_i18n__WEBPACK_IMPORTED_MODULE_1__["i18n"].translate('visTypeKbnNetwork.params.showPopup', { - defaultMessage: 'Show Popup' - }), - paramName: "showPopup", - value: stateParams.showPopup, + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), stateParams.normalize && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { + label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { + id: "visTypeTable.params.vertexScaleTo", + defaultMessage: "Vertex max scale (if normalized)" + }), ' '), + paramName: "vertexScaleTo", + value: stateParams.vertexScaleTo, setValue: setValue - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_switch__WEBPACK_IMPORTED_MODULE_5__["SwitchOption"], { - label: _kbn_i18n__WEBPACK_IMPORTED_MODULE_1__["i18n"].translate('visTypeKbnNetwork.params.showColorLegend', { - defaultMessage: 'Show Color Legend' - }), - paramName: "showColorLegend", - value: stateParams.showColorLegend, + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("h3", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { + id: "visTypeKbnRadar.params.radarVertexSettingsSection", + defaultMessage: "Vertex normalized values, starting on the top one and moving clockwise" + })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { + label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { + id: "visTypeTable.params.rangesMetrics_0_from", + defaultMessage: "Range 'from' of vertex 0" + }), ' '), + paramName: "rangesMetrics_0_from", + value: stateParams.rangesMetrics_0_from, setValue: setValue - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_switch__WEBPACK_IMPORTED_MODULE_5__["SwitchOption"], { - label: _kbn_i18n__WEBPACK_IMPORTED_MODULE_1__["i18n"].translate('visTypeKbnNetwork.params.nodePhysics', { - defaultMessage: 'Node Physics' - }), - paramName: "nodePhysics", - value: stateParams.nodePhysics, + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { + label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { + id: "visTypeTable.params.rangesMetrics_0_to", + defaultMessage: "Range 'to' of vertex 0" + }), ' '), + paramName: "rangesMetrics_0_to", + value: stateParams.rangesMetrics_0_to, setValue: setValue - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_switch__WEBPACK_IMPORTED_MODULE_5__["SwitchOption"], { - label: _kbn_i18n__WEBPACK_IMPORTED_MODULE_1__["i18n"].translate('visTypeKbnNetwork.params.displayArrow', { - defaultMessage: 'Display arrows' - }), - paramName: "displayArrow", - value: stateParams.displayArrow, + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { + label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { + id: "visTypeTable.params.rangesMetrics_1_from", + defaultMessage: "Range 'from' of vertex 1" + }), ' '), + paramName: "rangesMetrics_1_from", + value: stateParams.rangesMetrics_1_from, + setValue: setValue + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { + label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { + id: "visTypeTable.params.rangesMetrics_1_to", + defaultMessage: "Range 'to' of vertex 1" + }), ' '), + paramName: "rangesMetrics_1_to", + value: stateParams.rangesMetrics_1_to, setValue: setValue - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_text_input__WEBPACK_IMPORTED_MODULE_6__["TextInputOption"], { + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeKbnNetwork.params.firstNodeColor", - defaultMessage: "First node color" - }), "\xA0"), - placeholder: "#000000", - paramName: "firstNodeColor", - value: stateParams.firstNodeColor, + id: "visTypeTable.params.rangesMetrics_2_from", + defaultMessage: "Range 'from' of vertex 2" + }), ' '), + paramName: "rangesMetrics_2_from", + value: stateParams.rangesMetrics_2_from, setValue: setValue - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_text_input__WEBPACK_IMPORTED_MODULE_6__["TextInputOption"], { + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeKbnNetwork.params.secondNodeColor", - defaultMessage: "Second node color" - }), "\xA0"), - placeholder: "#000000", - paramName: "secondNodeColor", - value: stateParams.secondNodeColor, + id: "visTypeTable.params.rangesMetrics_2_to", + defaultMessage: "Range 'to' of vertex 2" + }), ' '), + paramName: "rangesMetrics_2_to", + value: stateParams.rangesMetrics_2_to, setValue: setValue - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_text_input__WEBPACK_IMPORTED_MODULE_6__["TextInputOption"], { + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeKbnNetwork.params.shapeFirstNode", - defaultMessage: "Shape of first node" - }), "\xA0"), - placeholder: "dot", - paramName: "shapeFirstNode", - value: stateParams.shapeFirstNode, + id: "visTypeTable.params.rangesMetrics_3_from", + defaultMessage: "Range 'from' of vertex 3" + }), ' '), + paramName: "rangesMetrics_3_from", + value: stateParams.rangesMetrics_3_from, setValue: setValue - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_text_input__WEBPACK_IMPORTED_MODULE_6__["TextInputOption"], { + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeKbnNetwork.params.shapeSecondNode", - defaultMessage: "Shape of second node" - }), "\xA0"), - placeholder: "dot", - paramName: "shapeSecondNode", - value: stateParams.shapeSecondNode, + id: "visTypeTable.params.rangesMetrics_3_to", + defaultMessage: "Range 'to' of vertex 3" + }), ' '), + paramName: "rangesMetrics_3_to", + value: stateParams.rangesMetrics_3_to, setValue: setValue - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_text_input__WEBPACK_IMPORTED_MODULE_6__["TextInputOption"], { + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeKbnNetwork.params.posArrow", - defaultMessage: "Arrow position" - }), "\xA0"), - placeholder: "to", - paramName: "posArrow", - value: stateParams.posArrow, + id: "visTypeTable.params.rangesMetrics_4_from", + defaultMessage: "Range 'from' of vertex 4" + }), ' '), + paramName: "rangesMetrics_4_from", + value: stateParams.rangesMetrics_4_from, setValue: setValue - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_text_input__WEBPACK_IMPORTED_MODULE_6__["TextInputOption"], { + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeKbnNetwork.params.shapeArrow", - defaultMessage: "Shape of the arrow" - }), "\xA0"), - placeholder: "arrow", - paramName: "shapeArrow", - value: stateParams.shapeArrow, + id: "visTypeTable.params.rangesMetrics_4_to", + defaultMessage: "Range 'to' of vertex 4" + }), ' '), + paramName: "rangesMetrics_4_to", + value: stateParams.rangesMetrics_4_to, setValue: setValue - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_text_input__WEBPACK_IMPORTED_MODULE_6__["TextInputOption"], { + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeKbnNetwork.params.smoothType", - defaultMessage: "Smooth Type" - }), "\xA0"), - placeholder: "continous", - paramName: "smoothType", - value: stateParams.smoothType, + id: "visTypeTable.params.rangesMetrics_5_from", + defaultMessage: "Range 'from' of vertex 5" + }), ' '), + paramName: "rangesMetrics_5_from", + value: stateParams.rangesMetrics_5_from, setValue: setValue - }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_text_input__WEBPACK_IMPORTED_MODULE_6__["TextInputOption"], { + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeKbnNetwork.params.labelColor", - defaultMessage: "Label color" - }), "\xA0"), - placeholder: "#000000", - paramName: "labelColor", - value: stateParams.labelColor, + id: "visTypeTable.params.rangesMetrics_5_to", + defaultMessage: "Range 'to' of vertex 5" + }), ' '), + paramName: "rangesMetrics_5_to", + value: stateParams.rangesMetrics_5_to, setValue: setValue + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeTable.params.scaleArrow", - defaultMessage: "Arrow scale" + id: "visTypeTable.params.rangesMetrics_6_from", + defaultMessage: "Range 'from' of vertex 6" }), ' '), - paramName: "scaleArrow", - value: stateParams.scaleArrow, + paramName: "rangesMetrics_6_from", + value: stateParams.rangesMetrics_6_from, setValue: setValue }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeTable.params.minCutMetricSizeNode", - defaultMessage: "Don't show nodes below this value:" + id: "visTypeTable.params.rangesMetrics_6_to", + defaultMessage: "Range 'to' of vertex 6" }), ' '), - paramName: "minCutMetricSizeNode", - value: stateParams.minCutMetricSizeNode, + paramName: "rangesMetrics_6_to", + value: stateParams.rangesMetrics_6_to, setValue: setValue + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeTable.params.maxNodeSize", - defaultMessage: "Max node size" + id: "visTypeTable.params.rangesMetrics_7_from", + defaultMessage: "Range 'from' of vertex 7" }), ' '), - paramName: "maxNodeSize", - value: stateParams.maxNodeSize, + paramName: "rangesMetrics_7_from", + value: stateParams.rangesMetrics_7_from, setValue: setValue }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeTable.params.minNodeSize", - defaultMessage: "Min node size" + id: "visTypeTable.params.rangesMetrics_7_to", + defaultMessage: "Range 'to' of vertex 7" }), ' '), - paramName: "minNodeSize", - value: stateParams.minNodeSize, + paramName: "rangesMetrics_7_to", + value: stateParams.rangesMetrics_7_to, setValue: setValue + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeTable.params.maxEdgeSize", - defaultMessage: "Max edge size" + id: "visTypeTable.params.rangesMetrics_8_from", + defaultMessage: "Range 'from' of vertex 8" }), ' '), - paramName: "maxEdgeSize", - value: stateParams.maxEdgeSize, + paramName: "rangesMetrics_8_from", + value: stateParams.rangesMetrics_8_from, setValue: setValue }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeTable.params.minEdgeSize", - defaultMessage: "Min edge size" + id: "visTypeTable.params.rangesMetrics_8_to", + defaultMessage: "Range 'to' of vertex 8" }), ' '), - paramName: "minEdgeSize", - value: stateParams.minEdgeSize, + paramName: "rangesMetrics_8_to", + value: stateParams.rangesMetrics_8_to, setValue: setValue + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + size: "m" }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeTable.params.springConstant", - defaultMessage: "Spring Force" + id: "visTypeTable.params.rangesMetrics_9_from", + defaultMessage: "Range 'from' of vertex 9" }), ' '), - paramName: "springConstant", - value: stateParams.springConstant, + paramName: "rangesMetrics_9_from", + value: stateParams.rangesMetrics_9_from, setValue: setValue }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_src_plugins_charts_public__WEBPACK_IMPORTED_MODULE_4__["NumberInputOption"], { label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_kbn_i18n_react__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], { - id: "visTypeTable.params.gravitationalConstant", - defaultMessage: "Attraction Force" + id: "visTypeTable.params.rangesMetrics_9_to", + defaultMessage: "Range 'to' of vertex 9" }), ' '), - paramName: "gravitationalConstant", - value: stateParams.gravitationalConstant, + paramName: "rangesMetrics_9_to", + value: stateParams.rangesMetrics_9_to, setValue: setValue - })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { + }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_3__["EuiSpacer"], { size: "m" })); } // default export required for React.Lazy @@ -307,76 +374,6 @@ function SwitchOption({ -/***/ }), - -/***/ "./public/components/text_input.tsx": -/*!******************************************!*\ - !*** ./public/components/text_input.tsx ***! - \******************************************/ -/*! exports provided: TextInputOption */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextInputOption", function() { return TextInputOption; }); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _elastic_eui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elastic/eui */ "@elastic/eui"); -/* harmony import */ var _elastic_eui__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elastic_eui__WEBPACK_IMPORTED_MODULE_1__); -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - - - -function TextInputOption({ - 'data-test-subj': dataTestSubj, - disabled, - helpText, - error, - isInvalid, - label, - placeholder, - paramName, - value = '', - setValue -}) { - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_1__["EuiFormRow"], { - helpText: helpText, - label: label, - error: error, - isInvalid: isInvalid, - fullWidth: true, - compressed: true - }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_1__["EuiFieldText"], { - compressed: true, - fullWidth: true, - isInvalid: isInvalid, - placeholder: placeholder, - "data-test-subj": dataTestSubj, - disabled: disabled, - value: value, - onChange: ev => setValue(paramName, ev.target.value) - })); -} - - - /***/ }) }]); diff --git a/target/public/kbnRadar.chunk.0.js.map b/target/public/kbnRadar.chunk.0.js.map index 0bb53ec..e9502aa 100644 --- a/target/public/kbnRadar.chunk.0.js.map +++ b/target/public/kbnRadar.chunk.0.js.map @@ -1 +1 @@ -{"version":3,"file":"kbnRadar.chunk.0.js","sources":["/plugin:kbnRadar/plugins/kbn_radar/public/components/kbn_network_vis_options.tsx","/plugin:kbnRadar/plugins/kbn_radar/public/components/switch.tsx","/plugin:kbnRadar/plugins/kbn_radar/public/components/text_input.tsx"],"sourcesContent":["/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\nimport React from 'react';\nimport { i18n } from '@kbn/i18n';\nimport { FormattedMessage } from '@kbn/i18n/react';\nimport { EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui';\nimport { NumberInputOption } from '../../../../src/plugins/charts/public';\nimport { SwitchOption } from './switch';\nimport { TextInputOption } from './text_input';\n\nfunction KbnNetworkOptions({\n stateParams,\n setValue\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"kbn-network-vis-params\"\n }, /*#__PURE__*/React.createElement(EuiPanel, {\n paddingSize: \"s\"\n }, /*#__PURE__*/React.createElement(EuiTitle, {\n size: \"xs\"\n }, /*#__PURE__*/React.createElement(\"h3\", null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeKbnNetwork.params.networkSettingsSection\",\n defaultMessage: \"Network Settings\"\n }))), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(SwitchOption, {\n label: i18n.translate('visTypeKbnNetwork.params.showLabels', {\n defaultMessage: 'Show labels'\n }),\n paramName: \"showLabels\",\n value: stateParams.showLabels,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(SwitchOption, {\n label: i18n.translate('visTypeKbnNetwork.params.showPopup', {\n defaultMessage: 'Show Popup'\n }),\n paramName: \"showPopup\",\n value: stateParams.showPopup,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(SwitchOption, {\n label: i18n.translate('visTypeKbnNetwork.params.showColorLegend', {\n defaultMessage: 'Show Color Legend'\n }),\n paramName: \"showColorLegend\",\n value: stateParams.showColorLegend,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(SwitchOption, {\n label: i18n.translate('visTypeKbnNetwork.params.nodePhysics', {\n defaultMessage: 'Node Physics'\n }),\n paramName: \"nodePhysics\",\n value: stateParams.nodePhysics,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(SwitchOption, {\n label: i18n.translate('visTypeKbnNetwork.params.displayArrow', {\n defaultMessage: 'Display arrows'\n }),\n paramName: \"displayArrow\",\n value: stateParams.displayArrow,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(TextInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeKbnNetwork.params.firstNodeColor\",\n defaultMessage: \"First node color\"\n }), \"\\xA0\"),\n placeholder: \"#000000\",\n paramName: \"firstNodeColor\",\n value: stateParams.firstNodeColor,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(TextInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeKbnNetwork.params.secondNodeColor\",\n defaultMessage: \"Second node color\"\n }), \"\\xA0\"),\n placeholder: \"#000000\",\n paramName: \"secondNodeColor\",\n value: stateParams.secondNodeColor,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(TextInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeKbnNetwork.params.shapeFirstNode\",\n defaultMessage: \"Shape of first node\"\n }), \"\\xA0\"),\n placeholder: \"dot\",\n paramName: \"shapeFirstNode\",\n value: stateParams.shapeFirstNode,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(TextInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeKbnNetwork.params.shapeSecondNode\",\n defaultMessage: \"Shape of second node\"\n }), \"\\xA0\"),\n placeholder: \"dot\",\n paramName: \"shapeSecondNode\",\n value: stateParams.shapeSecondNode,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(TextInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeKbnNetwork.params.posArrow\",\n defaultMessage: \"Arrow position\"\n }), \"\\xA0\"),\n placeholder: \"to\",\n paramName: \"posArrow\",\n value: stateParams.posArrow,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(TextInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeKbnNetwork.params.shapeArrow\",\n defaultMessage: \"Shape of the arrow\"\n }), \"\\xA0\"),\n placeholder: \"arrow\",\n paramName: \"shapeArrow\",\n value: stateParams.shapeArrow,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(TextInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeKbnNetwork.params.smoothType\",\n defaultMessage: \"Smooth Type\"\n }), \"\\xA0\"),\n placeholder: \"continous\",\n paramName: \"smoothType\",\n value: stateParams.smoothType,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(TextInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeKbnNetwork.params.labelColor\",\n defaultMessage: \"Label color\"\n }), \"\\xA0\"),\n placeholder: \"#000000\",\n paramName: \"labelColor\",\n value: stateParams.labelColor,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.scaleArrow\",\n defaultMessage: \"Arrow scale\"\n }), ' '),\n paramName: \"scaleArrow\",\n value: stateParams.scaleArrow,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.minCutMetricSizeNode\",\n defaultMessage: \"Don't show nodes below this value:\"\n }), ' '),\n paramName: \"minCutMetricSizeNode\",\n value: stateParams.minCutMetricSizeNode,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.maxNodeSize\",\n defaultMessage: \"Max node size\"\n }), ' '),\n paramName: \"maxNodeSize\",\n value: stateParams.maxNodeSize,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.minNodeSize\",\n defaultMessage: \"Min node size\"\n }), ' '),\n paramName: \"minNodeSize\",\n value: stateParams.minNodeSize,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.maxEdgeSize\",\n defaultMessage: \"Max edge size\"\n }), ' '),\n paramName: \"maxEdgeSize\",\n value: stateParams.maxEdgeSize,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.minEdgeSize\",\n defaultMessage: \"Min edge size\"\n }), ' '),\n paramName: \"minEdgeSize\",\n value: stateParams.minEdgeSize,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.springConstant\",\n defaultMessage: \"Spring Force\"\n }), ' '),\n paramName: \"springConstant\",\n value: stateParams.springConstant,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.gravitationalConstant\",\n defaultMessage: \"Attraction Force\"\n }), ' '),\n paramName: \"gravitationalConstant\",\n value: stateParams.gravitationalConstant,\n setValue: setValue\n })), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }));\n} // default export required for React.Lazy\n// eslint-disable-next-line import/no-default-export\n\n\nexport { KbnNetworkOptions as default };","/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\nimport React from 'react';\nimport { EuiFormRow, EuiSwitch, EuiIconTip } from '@elastic/eui';\n\nfunction SwitchOption({\n 'data-test-subj': dataTestSubj,\n icontip,\n label,\n disabled,\n paramName,\n value = false,\n setValue\n}) {\n return /*#__PURE__*/React.createElement(EuiFormRow, {\n fullWidth: true,\n compressed: true\n }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(EuiSwitch, {\n compressed: true,\n label: label,\n checked: value,\n disabled: disabled,\n \"data-test-subj\": dataTestSubj,\n onChange: ev => setValue(paramName, ev.target.checked)\n }), icontip && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", null, \"\\xA0\"), /*#__PURE__*/React.createElement(EuiIconTip, {\n content: icontip,\n position: \"right\"\n }))));\n}\n\nexport { SwitchOption };","/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\nimport React from 'react';\nimport { EuiFormRow, EuiFieldText } from '@elastic/eui';\n\nfunction TextInputOption({\n 'data-test-subj': dataTestSubj,\n disabled,\n helpText,\n error,\n isInvalid,\n label,\n placeholder,\n paramName,\n value = '',\n setValue\n}) {\n return /*#__PURE__*/React.createElement(EuiFormRow, {\n helpText: helpText,\n label: label,\n error: error,\n isInvalid: isInvalid,\n fullWidth: true,\n compressed: true\n }, /*#__PURE__*/React.createElement(EuiFieldText, {\n compressed: true,\n fullWidth: true,\n isInvalid: isInvalid,\n placeholder: placeholder,\n \"data-test-subj\": dataTestSubj,\n disabled: disabled,\n value: value,\n onChange: ev => setValue(paramName, ev.target.value)\n }));\n}\n\nexport { TextInputOption };"],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1NA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;A","sourceRoot":""} \ No newline at end of file +{"version":3,"file":"kbnRadar.chunk.0.js","sources":["/plugin:kbnRadar/plugins/kbn_radar/public/components/kbn_radar_vis_options.tsx","/plugin:kbnRadar/plugins/kbn_radar/public/components/switch.tsx"],"sourcesContent":["/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\nimport React from 'react';\nimport { i18n } from '@kbn/i18n';\nimport { FormattedMessage } from '@kbn/i18n/react';\nimport { EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui';\nimport { NumberInputOption } from '../../../../src/plugins/charts/public';\nimport { SwitchOption } from './switch';\n\nfunction KbnRadarOptions({\n stateParams,\n setValue\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"kbn-radar-vis-params\"\n }, /*#__PURE__*/React.createElement(EuiPanel, {\n paddingSize: \"s\"\n }, /*#__PURE__*/React.createElement(EuiTitle, {\n size: \"xs\"\n }, /*#__PURE__*/React.createElement(\"h3\", null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeKbnRadar.params.radarSettingsSection\",\n defaultMessage: \"Radar Settings\"\n }))), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(SwitchOption, {\n label: i18n.translate('visTypeKbnRadar.params.normalize', {\n defaultMessage: 'Normalize data'\n }),\n paramName: \"normalize\",\n value: stateParams.normalize,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), stateParams.normalize && /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.vertexScaleTo\",\n defaultMessage: \"Vertex max scale (if normalized)\"\n }), ' '),\n paramName: \"vertexScaleTo\",\n value: stateParams.vertexScaleTo,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(\"h3\", null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeKbnRadar.params.radarVertexSettingsSection\",\n defaultMessage: \"Vertex normalized values, starting on the top one and moving clockwise\"\n })), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_0_from\",\n defaultMessage: \"Range 'from' of vertex 0\"\n }), ' '),\n paramName: \"rangesMetrics_0_from\",\n value: stateParams.rangesMetrics_0_from,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_0_to\",\n defaultMessage: \"Range 'to' of vertex 0\"\n }), ' '),\n paramName: \"rangesMetrics_0_to\",\n value: stateParams.rangesMetrics_0_to,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_1_from\",\n defaultMessage: \"Range 'from' of vertex 1\"\n }), ' '),\n paramName: \"rangesMetrics_1_from\",\n value: stateParams.rangesMetrics_1_from,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_1_to\",\n defaultMessage: \"Range 'to' of vertex 1\"\n }), ' '),\n paramName: \"rangesMetrics_1_to\",\n value: stateParams.rangesMetrics_1_to,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_2_from\",\n defaultMessage: \"Range 'from' of vertex 2\"\n }), ' '),\n paramName: \"rangesMetrics_2_from\",\n value: stateParams.rangesMetrics_2_from,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_2_to\",\n defaultMessage: \"Range 'to' of vertex 2\"\n }), ' '),\n paramName: \"rangesMetrics_2_to\",\n value: stateParams.rangesMetrics_2_to,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_3_from\",\n defaultMessage: \"Range 'from' of vertex 3\"\n }), ' '),\n paramName: \"rangesMetrics_3_from\",\n value: stateParams.rangesMetrics_3_from,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_3_to\",\n defaultMessage: \"Range 'to' of vertex 3\"\n }), ' '),\n paramName: \"rangesMetrics_3_to\",\n value: stateParams.rangesMetrics_3_to,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_4_from\",\n defaultMessage: \"Range 'from' of vertex 4\"\n }), ' '),\n paramName: \"rangesMetrics_4_from\",\n value: stateParams.rangesMetrics_4_from,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_4_to\",\n defaultMessage: \"Range 'to' of vertex 4\"\n }), ' '),\n paramName: \"rangesMetrics_4_to\",\n value: stateParams.rangesMetrics_4_to,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_5_from\",\n defaultMessage: \"Range 'from' of vertex 5\"\n }), ' '),\n paramName: \"rangesMetrics_5_from\",\n value: stateParams.rangesMetrics_5_from,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_5_to\",\n defaultMessage: \"Range 'to' of vertex 5\"\n }), ' '),\n paramName: \"rangesMetrics_5_to\",\n value: stateParams.rangesMetrics_5_to,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_6_from\",\n defaultMessage: \"Range 'from' of vertex 6\"\n }), ' '),\n paramName: \"rangesMetrics_6_from\",\n value: stateParams.rangesMetrics_6_from,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_6_to\",\n defaultMessage: \"Range 'to' of vertex 6\"\n }), ' '),\n paramName: \"rangesMetrics_6_to\",\n value: stateParams.rangesMetrics_6_to,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_7_from\",\n defaultMessage: \"Range 'from' of vertex 7\"\n }), ' '),\n paramName: \"rangesMetrics_7_from\",\n value: stateParams.rangesMetrics_7_from,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_7_to\",\n defaultMessage: \"Range 'to' of vertex 7\"\n }), ' '),\n paramName: \"rangesMetrics_7_to\",\n value: stateParams.rangesMetrics_7_to,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_8_from\",\n defaultMessage: \"Range 'from' of vertex 8\"\n }), ' '),\n paramName: \"rangesMetrics_8_from\",\n value: stateParams.rangesMetrics_8_from,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_8_to\",\n defaultMessage: \"Range 'to' of vertex 8\"\n }), ' '),\n paramName: \"rangesMetrics_8_to\",\n value: stateParams.rangesMetrics_8_to,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_9_from\",\n defaultMessage: \"Range 'from' of vertex 9\"\n }), ' '),\n paramName: \"rangesMetrics_9_from\",\n value: stateParams.rangesMetrics_9_from,\n setValue: setValue\n }), /*#__PURE__*/React.createElement(NumberInputOption, {\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {\n id: \"visTypeTable.params.rangesMetrics_9_to\",\n defaultMessage: \"Range 'to' of vertex 9\"\n }), ' '),\n paramName: \"rangesMetrics_9_to\",\n value: stateParams.rangesMetrics_9_to,\n setValue: setValue\n }))), /*#__PURE__*/React.createElement(EuiSpacer, {\n size: \"m\"\n }));\n} // default export required for React.Lazy\n// eslint-disable-next-line import/no-default-export\n\n\nexport { KbnRadarOptions as default };","/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\nimport React from 'react';\nimport { EuiFormRow, EuiSwitch, EuiIconTip } from '@elastic/eui';\n\nfunction SwitchOption({\n 'data-test-subj': dataTestSubj,\n icontip,\n label,\n disabled,\n paramName,\n value = false,\n setValue\n}) {\n return /*#__PURE__*/React.createElement(EuiFormRow, {\n fullWidth: true,\n compressed: true\n }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(EuiSwitch, {\n compressed: true,\n label: label,\n checked: value,\n disabled: disabled,\n \"data-test-subj\": dataTestSubj,\n onChange: ev => setValue(paramName, ev.target.checked)\n }), icontip && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", null, \"\\xA0\"), /*#__PURE__*/React.createElement(EuiIconTip, {\n content: icontip,\n position: \"right\"\n }))));\n}\n\nexport { SwitchOption };"],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9RA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;A","sourceRoot":""} \ No newline at end of file diff --git a/target/public/kbnRadar.plugin.js b/target/public/kbnRadar.plugin.js index 57b47b8..311bce7 100644 --- a/target/public/kbnRadar.plugin.js +++ b/target/public/kbnRadar.plugin.js @@ -19223,7 +19223,7 @@ module.exports = { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\n\n
\n   \n \n \n \n    \n \n \n \n \n \n
\n\n"); +/* harmony default export */ __webpack_exports__["default"] = ("\n\n
\n   \n \n \n \n    \n \n \n \n \n \n
\n\n"); /***/ }), @@ -19231,12 +19231,12 @@ __webpack_require__.r(__webpack_exports__); /*!***************************************!*\ !*** ./public/agg_table/agg_table.js ***! \***************************************/ -/*! exports provided: KbnNetworkAggTable */ +/*! exports provided: KbnRadarAggTable */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KbnNetworkAggTable", function() { return KbnNetworkAggTable; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KbnRadarAggTable", function() { return KbnRadarAggTable; }); /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash */ "lodash"); /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _src_plugins_share_public__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../src/plugins/share/public */ "plugin/share/public"); @@ -19267,7 +19267,7 @@ __webpack_require__.r(__webpack_exports__); -function KbnNetworkAggTable(config, RecursionHelper) { +function KbnRadarAggTable(config, RecursionHelper) { const fieldFormats = Object(_services__WEBPACK_IMPORTED_MODULE_3__["getFormatService"])(); const numberFormatter = fieldFormats.getDefaultInstance('number').getConverterFor('text'); return { @@ -19457,7 +19457,7 @@ function KbnNetworkAggTable(config, RecursionHelper) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("
@@ -25,18 +25,18 @@ ng-if="col.sortable !== false" class="fa" ng-class="{ - 'fa-sort-asc': networkPaginatedTable.sort.columnIndex === $index && networkPaginatedTable.sort.direction === 'asc', - 'fa-sort-desc': networkPaginatedTable.sort.columnIndex === $index && networkPaginatedTable.sort.direction === 'desc', - 'fa-sort': networkPaginatedTable.sort.columnIndex !== $index || networkPaginatedTable.sort.direction === null + 'fa-sort-asc': radarPaginatedTable.sort.columnIndex === $index && radarPaginatedTable.sort.direction === 'asc', + 'fa-sort-desc': radarPaginatedTable.sort.columnIndex === $index && radarPaginatedTable.sort.direction === 'desc', + 'fa-sort': radarPaginatedTable.sort.columnIndex !== $index || radarPaginatedTable.sort.direction === null }">
\n \n \n \n \n \n \n \n \n \n \n
\n {{ table.title }}\n
\n \n \n \n
\n\n\n \n \n \n \n \n \n \n \n \n \n
\n {{ table.title }}\n
\n \n \n \n
\n"); +/* harmony default export */ __webpack_exports__["default"] = ("\n \n \n \n \n \n \n \n \n \n \n
\n {{ table.title }}\n
\n \n \n \n
\n\n\n \n \n \n \n \n \n \n \n \n \n
\n {{ table.title }}\n
\n \n \n \n
\n"); /***/ }), @@ -19465,12 +19465,12 @@ __webpack_require__.r(__webpack_exports__); /*!*********************************************!*\ !*** ./public/agg_table/agg_table_group.js ***! \*********************************************/ -/*! exports provided: KbnNetworkAggTableGroup */ +/*! exports provided: KbnRadarAggTableGroup */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KbnNetworkAggTableGroup", function() { return KbnNetworkAggTableGroup; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KbnRadarAggTableGroup", function() { return KbnRadarAggTableGroup; }); /* harmony import */ var _agg_table_group_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./agg_table_group.html */ "./public/agg_table/agg_table_group.html"); /* * Licensed to Elasticsearch B.V. under one or more contributor @@ -19491,7 +19491,7 @@ __webpack_require__.r(__webpack_exports__); * under the License. */ -function KbnNetworkAggTableGroup(RecursionHelper) { +function KbnRadarAggTableGroup(RecursionHelper) { return { restrict: 'E', template: _agg_table_group_html__WEBPACK_IMPORTED_MODULE_0__["default"], @@ -19527,16 +19527,16 @@ function KbnNetworkAggTableGroup(RecursionHelper) { /***/ }), -/***/ "./public/components/kbn_network_vis_options_lazy.tsx": -/*!************************************************************!*\ - !*** ./public/components/kbn_network_vis_options_lazy.tsx ***! - \************************************************************/ -/*! exports provided: KbnNetworkOptions */ +/***/ "./public/components/kbn_radar_vis_options_lazy.tsx": +/*!**********************************************************!*\ + !*** ./public/components/kbn_radar_vis_options_lazy.tsx ***! + \**********************************************************/ +/*! exports provided: KbnRadarOptions */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KbnNetworkOptions", function() { return KbnNetworkOptions; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KbnRadarOptions", function() { return KbnRadarOptions; }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _elastic_eui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elastic/eui */ "@elastic/eui"); @@ -19561,10 +19561,10 @@ __webpack_require__.r(__webpack_exports__); */ -const KbnNetworkOptionsComponent = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_0__["lazy"])(() => __webpack_require__.e(/*! import() */ 0).then(__webpack_require__.bind(null, /*! ./kbn_network_vis_options */ "./public/components/kbn_network_vis_options.tsx"))); -const KbnNetworkOptions = props => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0__["Suspense"], { +const KbnRadarOptionsComponent = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_0__["lazy"])(() => __webpack_require__.e(/*! import() */ 0).then(__webpack_require__.bind(null, /*! ./kbn_radar_vis_options */ "./public/components/kbn_radar_vis_options.tsx"))); +const KbnRadarOptions = props => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0__["Suspense"], { fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_elastic_eui__WEBPACK_IMPORTED_MODULE_1__["EuiLoadingSpinner"], null) -}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(KbnNetworkOptionsComponent, props)); +}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(KbnRadarOptionsComponent, props)); /***/ }), @@ -19659,16 +19659,16 @@ AggConfigResult.prototype.valueOf = function () { /***/ }), -/***/ "./public/data_load/kbn-network-request-handler.js": -/*!*********************************************************!*\ - !*** ./public/data_load/kbn-network-request-handler.js ***! - \*********************************************************/ -/*! exports provided: kbnNetworkRequestHandler */ +/***/ "./public/data_load/kbn-radar-request-handler.js": +/*!*******************************************************!*\ + !*** ./public/data_load/kbn-radar-request-handler.js ***! + \*******************************************************/ +/*! exports provided: kbnRadarRequestHandler */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "kbnNetworkRequestHandler", function() { return kbnNetworkRequestHandler; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "kbnRadarRequestHandler", function() { return kbnRadarRequestHandler; }); /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash */ "lodash"); /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _src_plugins_inspector_public__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../src/plugins/inspector/public */ "plugin/inspector/public"); @@ -19699,7 +19699,7 @@ __webpack_require__.r(__webpack_exports__); -async function kbnNetworkRequestHandler({ +async function kbnRadarRequestHandler({ partialRows, metricsAtAllLevels, visParams, @@ -19797,16 +19797,16 @@ async function kbnNetworkRequestHandler({ /***/ }), -/***/ "./public/data_load/kbn-network-response-handler.js": -/*!**********************************************************!*\ - !*** ./public/data_load/kbn-network-response-handler.js ***! - \**********************************************************/ -/*! exports provided: kbnNetworkResponseHandler */ +/***/ "./public/data_load/kbn-radar-response-handler.js": +/*!********************************************************!*\ + !*** ./public/data_load/kbn-radar-response-handler.js ***! + \********************************************************/ +/*! exports provided: kbnRadarResponseHandler */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "kbnNetworkResponseHandler", function() { return kbnNetworkResponseHandler; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "kbnRadarResponseHandler", function() { return kbnRadarResponseHandler; }); /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash */ "lodash"); /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _agg_config_result__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./agg_config_result */ "./public/data_load/agg_config_result.js"); @@ -19922,7 +19922,7 @@ function splitTable(columns, rows, $parent) { }); } -function kbnNetworkResponseHandler(response) { +function kbnRadarResponseHandler(response) { return { tables: splitTable(response.columns, response.rows, null), totalHits: response.totalHits, @@ -20390,7 +20390,7 @@ function getAngularModule(name, core, context) { return uiModule; } let initialized = false; -function getInnerAngular(name = 'kibana/kbn_network_vis', core) { +function getInnerAngular(name = 'kibana/kbn_radar_vis', core) { if (!initialized) { createLocalPrivateModule(); createLocalI18nModule(); @@ -20565,21 +20565,21 @@ __webpack_require__.r(__webpack_exports__); function plugin(initializerContext) { - return new _plugin__WEBPACK_IMPORTED_MODULE_1__["KbnNetworkPlugin"](initializerContext); + return new _plugin__WEBPACK_IMPORTED_MODULE_1__["KbnRadarPlugin"](initializerContext); } /***/ }), -/***/ "./public/kbn-network-vis-controller.js": -/*!**********************************************!*\ - !*** ./public/kbn-network-vis-controller.js ***! - \**********************************************/ -/*! exports provided: KbnNetworkVisController */ +/***/ "./public/kbn-radar-vis-controller.js": +/*!********************************************!*\ + !*** ./public/kbn-radar-vis-controller.js ***! + \********************************************/ +/*! exports provided: KbnRadarVisController */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KbnNetworkVisController", function() { return KbnNetworkVisController; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KbnRadarVisController", function() { return KbnRadarVisController; }); /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash */ "lodash"); /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var randomcolor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! randomcolor */ "./node_modules/randomcolor/randomColor.js"); @@ -20610,9 +20610,9 @@ __webpack_require__.r(__webpack_exports__); - // KbnNetworkVis AngularJS controller + // KbnRadarVis AngularJS controller -function KbnNetworkVisController($scope, config, $timeout) { +function KbnRadarVisController($scope, config, $timeout) { function normalize(val, max, min, scale) { return scale * (val - min) / (max - min); } @@ -20623,8 +20623,8 @@ function KbnNetworkVisController($scope, config, $timeout) { $scope.$watchMulti(['esResponse'], function ([resp]) { // options - const normalizeData = $scope.vis.params.normalize; - const vertexMaxScale = $scope.vis.params.vertexScale.to; + const normalizeData = $scope.visParams.normalize; + const vertexMaxScale = $scope.visParams.vertexScaleTo; if ($scope.radarchart) { $scope.radarchart.destroy(); @@ -20679,8 +20679,11 @@ function KbnNetworkVisController($scope, config, $timeout) { valuesMetrics[i + 1] = []; } - let k = i + 1; - valuesMetrics[i + 1].push(bucket['col-' + k + '-' + metricIds[i]]); + let k = i + 1; //Pick metric if exist + + if (bucket['col-' + k + '-' + metricIds[i]]) { + valuesMetrics[i + 1].push(bucket['col-' + k + '-' + metricIds[i]]); + } } } /////// @@ -20694,18 +20697,16 @@ function KbnNetworkVisController($scope, config, $timeout) { var label = bucket['col-0-' + resp.aggs.bySchemaName('field')[0].id]; for (let index = 1; index < Object.keys(bucket).length; index++) { - if (normalizeData) { + if (normalizeData && valuesMetrics[index]) { var normMin = 1; var normMax = Math.max(...valuesMetrics[index]); - if ($scope.vis.params.rangesMetrics) { - if ($scope.vis.params.rangesMetrics[index - 1].from) { - normMin = $scope.vis.params.rangesMetrics[index - 1].from; - } + if ($scope.visParams['rangesMetrics_' + (index - 1) + '_from']) { + normMin = $scope.visParams['rangesMetrics_' + (index - 1) + '_from']; + } - if ($scope.vis.params.rangesMetrics[index - 1].to) { - normMax = $scope.vis.params.rangesMetrics[index - 1].to; - } + if ($scope.visParams['rangesMetrics_' + (index - 1) + '_to']) { + normMax = $scope.visParams['rangesMetrics_' + (index - 1) + '_to']; } // Just pick the metric if exist @@ -20892,40 +20893,40 @@ function KbnNetworkVisController($scope, config, $timeout) { /***/ }), -/***/ "./public/kbn-network-vis.html": -/*!*************************************!*\ - !*** ./public/kbn-network-vis.html ***! - \*************************************/ +/***/ "./public/kbn-radar-vis.html": +/*!***********************************!*\ + !*** ./public/kbn-radar-vis.html ***! + \***********************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("
\n \n
"); +/* harmony default export */ __webpack_exports__["default"] = ("
\n \n
"); /***/ }), -/***/ "./public/kbn-network-vis.js": -/*!***********************************!*\ - !*** ./public/kbn-network-vis.js ***! - \***********************************/ -/*! exports provided: kbnNetworkVisTypeDefinition */ +/***/ "./public/kbn-radar-vis.js": +/*!*********************************!*\ + !*** ./public/kbn-radar-vis.js ***! + \*********************************/ +/*! exports provided: kbnRadarVisTypeDefinition */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "kbnNetworkVisTypeDefinition", function() { return kbnNetworkVisTypeDefinition; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "kbnRadarVisTypeDefinition", function() { return kbnRadarVisTypeDefinition; }); /* harmony import */ var _kbn_i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @kbn/i18n */ "@kbn/i18n"); /* harmony import */ var _kbn_i18n__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_kbn_i18n__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _src_plugins_data_public__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../src/plugins/data/public */ "plugin/data/public"); /* harmony import */ var _src_plugins_data_public__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_src_plugins_data_public__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _src_plugins_vis_default_editor_public__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../src/plugins/vis_default_editor/public */ "plugin/visDefaultEditor/public"); /* harmony import */ var _src_plugins_vis_default_editor_public__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_src_plugins_vis_default_editor_public__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _kbn_network_vis_html__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./kbn-network-vis.html */ "./public/kbn-network-vis.html"); +/* harmony import */ var _kbn_radar_vis_html__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./kbn-radar-vis.html */ "./public/kbn-radar-vis.html"); /* harmony import */ var _vis_controller__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./vis_controller */ "./public/vis_controller.ts"); -/* harmony import */ var _data_load_kbn_network_request_handler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./data_load/kbn-network-request-handler */ "./public/data_load/kbn-network-request-handler.js"); -/* harmony import */ var _data_load_kbn_network_response_handler__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./data_load/kbn-network-response-handler */ "./public/data_load/kbn-network-response-handler.js"); -/* harmony import */ var _components_kbn_network_vis_options_lazy__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/kbn_network_vis_options_lazy */ "./public/components/kbn_network_vis_options_lazy.tsx"); +/* harmony import */ var _data_load_kbn_radar_request_handler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./data_load/kbn-radar-request-handler */ "./public/data_load/kbn-radar-request-handler.js"); +/* harmony import */ var _data_load_kbn_radar_response_handler__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./data_load/kbn-radar-response-handler */ "./public/data_load/kbn-radar-response-handler.js"); +/* harmony import */ var _components_kbn_radar_vis_options_lazy__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/kbn_radar_vis_options_lazy */ "./public/components/kbn_radar_vis_options_lazy.tsx"); /* harmony import */ var _src_plugins_visualizations_public__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../src/plugins/visualizations/public */ "plugin/visualizations/public"); /* harmony import */ var _src_plugins_visualizations_public__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_src_plugins_visualizations_public__WEBPACK_IMPORTED_MODULE_8__); /* harmony import */ var _index_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./index.scss */ "./public/index.scss"); @@ -20962,33 +20963,50 @@ __webpack_require__.r(__webpack_exports__); // define the visType object, which kibana will use to display and configure new Vis object of this type. -function kbnNetworkVisTypeDefinition(core, context) { +function kbnRadarVisTypeDefinition(core, context) { return { type: 'radar', name: 'kbn_radar', - title: _kbn_i18n__WEBPACK_IMPORTED_MODULE_0__["i18n"].translate('visTypeKbnNetwork.visTitle', { + title: _kbn_i18n__WEBPACK_IMPORTED_MODULE_0__["i18n"].translate('visTypeKbnRadar.visTitle', { defaultMessage: 'Radar' }), icon: _images_icon_radar_svg__WEBPACK_IMPORTED_MODULE_10___default.a, - description: _kbn_i18n__WEBPACK_IMPORTED_MODULE_0__["i18n"].translate('visTypeKbnNetwork.visDescription', { + description: _kbn_i18n__WEBPACK_IMPORTED_MODULE_0__["i18n"].translate('visTypeKbnRadar.visDescription', { defaultMessage: 'Spyder nets with the radar visualization' }), - visualization: Object(_vis_controller__WEBPACK_IMPORTED_MODULE_4__["getKbnNetworkVisualizationController"])(core, context), + visualization: Object(_vis_controller__WEBPACK_IMPORTED_MODULE_4__["getKbnRadarVisualizationController"])(core, context), getSupportedTriggers: () => { return [_src_plugins_visualizations_public__WEBPACK_IMPORTED_MODULE_8__["VIS_EVENT_TO_TRIGGER"].filter]; }, visConfig: { defaults: { normalize: false, - vertexScale: { - from: 0, - to: 5 - } + vertexScaleTo: 5, + rangesMetrics_0_from: 0, + rangesMetrics_0_to: 100, + rangesMetrics_1_from: 0, + rangesMetrics_1_to: 100, + rangesMetrics_2_from: 0, + rangesMetrics_2_to: 100, + rangesMetrics_3_from: 0, + rangesMetrics_3_to: 100, + rangesMetrics_4_from: 0, + rangesMetrics_4_to: 100, + rangesMetrics_5_from: 0, + rangesMetrics_5_to: 100, + rangesMetrics_6_from: 0, + rangesMetrics_6_to: 100, + rangesMetrics_7_from: 0, + rangesMetrics_7_to: 100, + rangesMetrics_8_from: 0, + rangesMetrics_8_to: 100, + rangesMetrics_9_from: 0, + rangesMetrics_9_to: 100 }, - template: _kbn_network_vis_html__WEBPACK_IMPORTED_MODULE_3__["default"] + template: _kbn_radar_vis_html__WEBPACK_IMPORTED_MODULE_3__["default"] }, editorConfig: { - optionsTemplate: _components_kbn_network_vis_options_lazy__WEBPACK_IMPORTED_MODULE_7__["KbnNetworkOptions"], + optionsTemplate: _components_kbn_radar_vis_options_lazy__WEBPACK_IMPORTED_MODULE_7__["KbnRadarOptions"], schemas: new _src_plugins_vis_default_editor_public__WEBPACK_IMPORTED_MODULE_2__["Schemas"]([{ group: _src_plugins_data_public__WEBPACK_IMPORTED_MODULE_1__["AggGroupNames"].Metrics, name: 'vertex', @@ -21000,6 +21018,7 @@ function kbnNetworkVisTypeDefinition(core, context) { } }, min: 1, + max: 10, defaults: [{ type: 'count', schema: 'vertex' @@ -21014,8 +21033,8 @@ function kbnNetworkVisTypeDefinition(core, context) { }]) }, implementsRenderComplete: true, - requestHandler: _data_load_kbn_network_request_handler__WEBPACK_IMPORTED_MODULE_5__["kbnNetworkRequestHandler"], - responseHandler: _data_load_kbn_network_response_handler__WEBPACK_IMPORTED_MODULE_6__["kbnNetworkResponseHandler"], + requestHandler: _data_load_kbn_radar_request_handler__WEBPACK_IMPORTED_MODULE_5__["kbnRadarRequestHandler"], + responseHandler: _data_load_kbn_radar_response_handler__WEBPACK_IMPORTED_MODULE_6__["kbnRadarResponseHandler"], hierarchicalData: vis => { return true; } @@ -21033,7 +21052,7 @@ function kbnNetworkVisTypeDefinition(core, context) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\n
\n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n
{{col.total}}
\n
\n\n \n \n
\n\n"); +/* harmony default export */ __webpack_exports__["default"] = ("\n
\n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n
{{col.total}}
\n
\n\n \n \n
\n\n"); /***/ }), @@ -21041,12 +21060,12 @@ __webpack_require__.r(__webpack_exports__); /*!***************************************************!*\ !*** ./public/paginated_table/paginated_table.js ***! \***************************************************/ -/*! exports provided: NetworkPaginatedTable */ +/*! exports provided: RadarPaginatedTable */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NetworkPaginatedTable", function() { return NetworkPaginatedTable; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RadarPaginatedTable", function() { return RadarPaginatedTable; }); /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash */ "lodash"); /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _data_load_agg_config_result__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../data_load/agg_config_result */ "./public/data_load/agg_config_result.js"); @@ -21072,7 +21091,7 @@ __webpack_require__.r(__webpack_exports__); -function NetworkPaginatedTable($filter) { +function RadarPaginatedTable($filter) { const orderBy = $filter('orderBy'); return { restrict: 'E', @@ -21092,7 +21111,7 @@ function NetworkPaginatedTable($filter) { totalFunc: '=', filter: '=' }, - controllerAs: 'networkPaginatedTable', + controllerAs: 'radarPaginatedTable', controller: function ($scope) { const self = this; self.sort = { @@ -21165,7 +21184,7 @@ function NetworkPaginatedTable($filter) { } // update the sortedRows result - $scope.$watchMulti(['rows', 'columns', '[]sort', '[]networkPaginatedTable.sort'], resortRows); + $scope.$watchMulti(['rows', 'columns', '[]sort', '[]radarPaginatedTable.sort'], resortRows); } }; } @@ -21176,12 +21195,12 @@ function NetworkPaginatedTable($filter) { /*!****************************************!*\ !*** ./public/paginated_table/rows.js ***! \****************************************/ -/*! exports provided: KbnNetworkRows */ +/*! exports provided: KbnRadarRows */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KbnNetworkRows", function() { return KbnNetworkRows; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KbnRadarRows", function() { return KbnRadarRows; }); /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash */ "lodash"); @@ -21210,7 +21229,7 @@ __webpack_require__.r(__webpack_exports__); -function KbnNetworkRows($compile) { +function KbnRadarRows($compile) { return { restrict: 'A', link: function ($scope, $el, attr) { @@ -21221,7 +21240,7 @@ function KbnNetworkRows($compile) { function createFilterableCell(aggConfigResult) { const $template = jquery__WEBPACK_IMPORTED_MODULE_0___default()(_table_cell_filter_html__WEBPACK_IMPORTED_MODULE_3__["default"]); - $template.addClass('kbnKbnNetworkCellFilter__hover'); + $template.addClass('kbnKbnRadarCellFilter__hover'); const scope = $scope.$new(); scope.onFilterClick = (event, negate) => { @@ -21308,7 +21327,7 @@ function KbnNetworkRows($compile) { return Math.max(max, row.length); } - $scope.$watchMulti([attr.kbnNetworkRows, attr.kbnNetworkRowsMin], function (vals) { + $scope.$watchMulti([attr.kbnRadarRows, attr.kbnRadarRowsMin], function (vals) { let rows = vals[0]; const min = vals[1]; $el.empty(); @@ -21362,13 +21381,13 @@ __webpack_require__.r(__webpack_exports__); /*!**************************!*\ !*** ./public/plugin.ts ***! \**************************/ -/*! exports provided: KbnNetworkPlugin */ +/*! exports provided: KbnRadarPlugin */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KbnNetworkPlugin", function() { return KbnNetworkPlugin; }); -/* harmony import */ var _kbn_network_vis__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kbn-network-vis */ "./public/kbn-network-vis.js"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KbnRadarPlugin", function() { return KbnRadarPlugin; }); +/* harmony import */ var _kbn_radar_vis__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kbn-radar-vis */ "./public/kbn-radar-vis.js"); /* harmony import */ var _services__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./services */ "./public/services.ts"); function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } @@ -21394,7 +21413,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope /** @internal */ -class KbnNetworkPlugin { +class KbnRadarPlugin { constructor(initializerContext) { _defineProperty(this, "initializerContext", void 0); @@ -21406,7 +21425,7 @@ class KbnNetworkPlugin { async setup(core, { visualizations }) { - visualizations.createBaseVisualization(Object(_kbn_network_vis__WEBPACK_IMPORTED_MODULE_0__["kbnNetworkVisTypeDefinition"])(core, this.initializerContext)); + visualizations.createBaseVisualization(Object(_kbn_radar_vis__WEBPACK_IMPORTED_MODULE_0__["kbnRadarVisTypeDefinition"])(core, this.initializerContext)); } start(core, { @@ -21482,7 +21501,7 @@ const [getSearchService, setSearchService] = Object(_src_plugins_kibana_utils_pu "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initTableVisLegacyModule", function() { return initTableVisLegacyModule; }); -/* harmony import */ var _kbn_network_vis_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kbn-network-vis-controller.js */ "./public/kbn-network-vis-controller.js"); +/* harmony import */ var _kbn_radar_vis_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kbn-radar-vis-controller.js */ "./public/kbn-radar-vis-controller.js"); /* harmony import */ var _agg_table_agg_table__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./agg_table/agg_table */ "./public/agg_table/agg_table.js"); /* harmony import */ var _agg_table_agg_table_group__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./agg_table/agg_table_group */ "./public/agg_table/agg_table_group.js"); /* harmony import */ var _paginated_table_rows__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./paginated_table/rows */ "./public/paginated_table/rows.js"); @@ -21518,7 +21537,7 @@ __webpack_require__.r(__webpack_exports__); /** @internal */ const initTableVisLegacyModule = angularIns => { - angularIns.controller('KbnNetworkVisController', _kbn_network_vis_controller_js__WEBPACK_IMPORTED_MODULE_0__["KbnNetworkVisController"]).directive('kbnNetworkAggTable', _agg_table_agg_table__WEBPACK_IMPORTED_MODULE_1__["KbnNetworkAggTable"]).directive('kbnNetworkAggTableGroup', _agg_table_agg_table_group__WEBPACK_IMPORTED_MODULE_2__["KbnNetworkAggTableGroup"]).directive('kbnNetworkRows', _paginated_table_rows__WEBPACK_IMPORTED_MODULE_3__["KbnNetworkRows"]).directive('networkPaginatedTable', _paginated_table_paginated_table__WEBPACK_IMPORTED_MODULE_4__["NetworkPaginatedTable"]); + angularIns.controller('KbnRadarVisController', _kbn_radar_vis_controller_js__WEBPACK_IMPORTED_MODULE_0__["KbnRadarVisController"]).directive('kbnRadarAggTable', _agg_table_agg_table__WEBPACK_IMPORTED_MODULE_1__["KbnRadarAggTable"]).directive('kbnRadarAggTableGroup', _agg_table_agg_table_group__WEBPACK_IMPORTED_MODULE_2__["KbnRadarAggTableGroup"]).directive('kbnRadarRows', _paginated_table_rows__WEBPACK_IMPORTED_MODULE_3__["KbnRadarRows"]).directive('radarPaginatedTable', _paginated_table_paginated_table__WEBPACK_IMPORTED_MODULE_4__["RadarPaginatedTable"]); }; /***/ }), @@ -21527,12 +21546,12 @@ const initTableVisLegacyModule = angularIns => { /*!**********************************!*\ !*** ./public/vis_controller.ts ***! \**********************************/ -/*! exports provided: getKbnNetworkVisualizationController */ +/*! exports provided: getKbnRadarVisualizationController */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getKbnNetworkVisualizationController", function() { return getKbnNetworkVisualizationController; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getKbnRadarVisualizationController", function() { return getKbnRadarVisualizationController; }); /* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! angular */ "angular"); /* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ "jquery"); @@ -21565,11 +21584,11 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope -const innerAngularName = 'kibana/kbn_network_vis'; -function getKbnNetworkVisualizationController(core, context) { +const innerAngularName = 'kibana/kbn_radar_vis'; +function getKbnRadarVisualizationController(core, context) { var _temp; - return _temp = class KbnNetworkVisualizationController { + return _temp = class KbnRadarVisualizationController { constructor(domeElement, vis) { _defineProperty(this, "tableVisModule", void 0); diff --git a/target/public/kbnRadar.plugin.js.map b/target/public/kbnRadar.plugin.js.map index 52d4ba5..6e6025b 100644 --- a/target/public/kbnRadar.plugin.js.map +++ b/target/public/kbnRadar.plugin.js.map @@ -1 +1 @@ -{"version":3,"file":"kbnRadar.plugin.js","sources":["/plugin:kbnRadar/webpack/bootstrap","/plugin:kbnRadar/node_modules/@elastic/filesaver/file-saver.js","/plugin:kbnRadar/node_modules/angular-recursion/angular-recursion.js","/plugin:kbnRadar/node_modules/angular-sanitize/angular-sanitize.js","/plugin:kbnRadar/node_modules/angular-sanitize/index.js","/plugin:kbnRadar/plugins/kbn_radar/public/index.scss?v7dark?v7dark","/plugin:kbnRadar/plugins/kbn_radar/public/index.scss?v7light?v7light","/plugin:kbnRadar/node_modules/css-loader/dist/runtime/api.js","/plugin:kbnRadar/node_modules/lodash/_Hash.js","/plugin:kbnRadar/node_modules/lodash/_ListCache.js","/plugin:kbnRadar/node_modules/lodash/_Map.js","/plugin:kbnRadar/node_modules/lodash/_MapCache.js","/plugin:kbnRadar/node_modules/lodash/_Symbol.js","/plugin:kbnRadar/node_modules/lodash/_arrayMap.js","/plugin:kbnRadar/node_modules/lodash/_assignValue.js","/plugin:kbnRadar/node_modules/lodash/_assocIndexOf.js","/plugin:kbnRadar/node_modules/lodash/_baseAssignValue.js","/plugin:kbnRadar/node_modules/lodash/_baseGetTag.js","/plugin:kbnRadar/node_modules/lodash/_baseIsNative.js","/plugin:kbnRadar/node_modules/lodash/_baseToString.js","/plugin:kbnRadar/node_modules/lodash/_castPath.js","/plugin:kbnRadar/node_modules/lodash/_coreJsData.js","/plugin:kbnRadar/node_modules/lodash/_defineProperty.js","/plugin:kbnRadar/node_modules/lodash/_freeGlobal.js","/plugin:kbnRadar/node_modules/lodash/_getMapData.js","/plugin:kbnRadar/node_modules/lodash/_getNative.js","/plugin:kbnRadar/node_modules/lodash/_getRawTag.js","/plugin:kbnRadar/node_modules/lodash/_getValue.js","/plugin:kbnRadar/node_modules/lodash/_hashClear.js","/plugin:kbnRadar/node_modules/lodash/_hashDelete.js","/plugin:kbnRadar/node_modules/lodash/_hashGet.js","/plugin:kbnRadar/node_modules/lodash/_hashHas.js","/plugin:kbnRadar/node_modules/lodash/_hashSet.js","/plugin:kbnRadar/node_modules/lodash/_isIndex.js","/plugin:kbnRadar/node_modules/lodash/_isKey.js","/plugin:kbnRadar/node_modules/lodash/_isKeyable.js","/plugin:kbnRadar/node_modules/lodash/_isMasked.js","/plugin:kbnRadar/node_modules/lodash/_listCacheClear.js","/plugin:kbnRadar/node_modules/lodash/_listCacheDelete.js","/plugin:kbnRadar/node_modules/lodash/_listCacheGet.js","/plugin:kbnRadar/node_modules/lodash/_listCacheHas.js","/plugin:kbnRadar/node_modules/lodash/_listCacheSet.js","/plugin:kbnRadar/node_modules/lodash/_mapCacheClear.js","/plugin:kbnRadar/node_modules/lodash/_mapCacheDelete.js","/plugin:kbnRadar/node_modules/lodash/_mapCacheGet.js","/plugin:kbnRadar/node_modules/lodash/_mapCacheHas.js","/plugin:kbnRadar/node_modules/lodash/_mapCacheSet.js","/plugin:kbnRadar/node_modules/lodash/_memoizeCapped.js","/plugin:kbnRadar/node_modules/lodash/_nativeCreate.js","/plugin:kbnRadar/node_modules/lodash/_objectToString.js","/plugin:kbnRadar/node_modules/lodash/_root.js","/plugin:kbnRadar/node_modules/lodash/_stringToPath.js","/plugin:kbnRadar/node_modules/lodash/_toKey.js","/plugin:kbnRadar/node_modules/lodash/_toSource.js","/plugin:kbnRadar/node_modules/lodash/eq.js","/plugin:kbnRadar/node_modules/lodash/isArray.js","/plugin:kbnRadar/node_modules/lodash/isFunction.js","/plugin:kbnRadar/node_modules/lodash/isObject.js","/plugin:kbnRadar/node_modules/lodash/isObjectLike.js","/plugin:kbnRadar/node_modules/lodash/isSymbol.js","/plugin:kbnRadar/node_modules/lodash/memoize.js","/plugin:kbnRadar/node_modules/lodash/toString.js","/plugin:kbnRadar/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","/plugin:kbnRadar/packages/kbn-ui-shared-deps/public_path_module_creator.js","/plugin:kbnRadar/node_modules/webpack/buildin/amd-define.js","/plugin:kbnRadar/node_modules/webpack/buildin/amd-options.js","/plugin:kbnRadar/node_modules/webpack/buildin/global.js","/plugin:kbnRadar/node_modules/webpack/buildin/module.js","/plugin:kbnRadar/packages/elastic-safer-lodash-set/index.js","/plugin:kbnRadar/packages/elastic-safer-lodash-set/lodash/_baseSet.js","/plugin:kbnRadar/packages/elastic-safer-lodash-set/lodash/set.js","/plugin:kbnRadar/packages/elastic-safer-lodash-set/lodash/setWith.js","/plugin:kbnRadar/packages/kbn-optimizer/target/worker/entry_point_creator.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/chart.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/charts/Chart.Bar.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/charts/Chart.Bubble.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/charts/Chart.Doughnut.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/charts/Chart.Line.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/charts/Chart.PolarArea.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/charts/Chart.Radar.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/charts/Chart.Scatter.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/controllers/controller.bar.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/controllers/controller.bubble.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/controllers/controller.doughnut.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/controllers/controller.line.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/controllers/controller.polarArea.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/controllers/controller.radar.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/controllers/controller.scatter.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/core/core.animation.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/core/core.controller.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/core/core.datasetController.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/core/core.defaults.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/core/core.element.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/core/core.helpers.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/core/core.interaction.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/core/core.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/core/core.layoutService.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/core/core.plugin.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/core/core.scale.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/core/core.scaleService.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/core/core.ticks.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/core/core.tooltip.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/elements/element.arc.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/elements/element.line.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/elements/element.point.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/elements/element.rectangle.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/elements/index.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/helpers/helpers.canvas.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/helpers/helpers.core.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/helpers/helpers.easing.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/helpers/helpers.options.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/helpers/index.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/platforms/platform.basic.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/platforms/platform.dom.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/platforms/platform.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/plugins/plugin.filler.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/plugins/plugin.legend.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/plugins/plugin.title.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/scales/scale.category.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/scales/scale.linear.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/scales/scale.linearbase.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/scales/scale.logarithmic.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/scales/scale.radialLinear.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chart.js/src/scales/scale.time.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chartjs-color-string/color-string.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/chartjs-color/index.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/color-convert/conversions.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/color-convert/index.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/color-name/index.js","/plugin:kbnRadar/plugins/kbn_radar/node_modules/randomcolor/randomColor.js","/plugin:kbnRadar/plugins/kbn_radar/public/agg_table/agg_table.html","/plugin:kbnRadar/plugins/kbn_radar/public/agg_table/agg_table.js","/plugin:kbnRadar/plugins/kbn_radar/public/agg_table/agg_table_group.html","/plugin:kbnRadar/plugins/kbn_radar/public/agg_table/agg_table_group.js","/plugin:kbnRadar/plugins/kbn_radar/public/components/kbn_network_vis_options_lazy.tsx","/plugin:kbnRadar/plugins/kbn_radar/public/data_load/agg_config_result.js","/plugin:kbnRadar/plugins/kbn_radar/public/data_load/kbn-network-request-handler.js","/plugin:kbnRadar/plugins/kbn_radar/public/data_load/kbn-network-response-handler.js","/plugin:kbnRadar/plugins/kbn_radar/public/data_load/kibana_cloned_code/build_tabular_inspector_data.ts","/plugin:kbnRadar/plugins/kbn_radar/public/data_load/kibana_cloned_code/courier.ts","/plugin:kbnRadar/plugins/kbn_radar/public/data_load/kibana_cloned_code/create_filter.ts","/plugin:kbnRadar/plugins/kbn_radar/public/data_load/kibana_cloned_code/utils.ts","/plugin:kbnRadar/plugins/kbn_radar/public/field_formatter.ts","/plugin:kbnRadar/plugins/kbn_radar/public/get_inner_angular.ts","/plugin:kbnRadar/plugins/kbn_radar/public/images/icon-radar.svg","/plugin:kbnRadar/plugins/kbn_radar/public/index.scss","webpack:///./public/index.scss?707b","webpack:///./public/index.scss?a91a","/plugin:kbnRadar/plugins/kbn_radar/public/index.ts","/plugin:kbnRadar/plugins/kbn_radar/public/kbn-network-vis-controller.js","/plugin:kbnRadar/plugins/kbn_radar/public/kbn-network-vis.html","/plugin:kbnRadar/plugins/kbn_radar/public/kbn-network-vis.js","/plugin:kbnRadar/plugins/kbn_radar/public/paginated_table/paginated_table.html","/plugin:kbnRadar/plugins/kbn_radar/public/paginated_table/paginated_table.js","/plugin:kbnRadar/plugins/kbn_radar/public/paginated_table/rows.js","/plugin:kbnRadar/plugins/kbn_radar/public/paginated_table/table_cell_filter.html","/plugin:kbnRadar/plugins/kbn_radar/public/plugin.ts","/plugin:kbnRadar/plugins/kbn_radar/public/services.ts","/plugin:kbnRadar/plugins/kbn_radar/public/table_vis_legacy_module.ts","/plugin:kbnRadar/plugins/kbn_radar/public/vis_controller.ts"],"sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"kbnRadar\": 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"kbnRadar.chunk.\" + chunkId + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"kbnRadar_bundle_jsonpfunction\"] = window[\"kbnRadar_bundle_jsonpfunction\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"../../packages/kbn-optimizer/target/worker/entry_point_creator.js\");\n","/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 1.1.20150716\n *\n * By Eli Grey, http://eligrey.com\n * License: X11/MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, webkit_req_fs = view.webkitRequestFileSystem\n\t\t, req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t, fs_min_size = 0\n\t\t// See https://code.google.com/p/chromium/issues/detail?id=375297#c7 and\n\t\t// https://github.com/eligrey/FileSaver.js/commit/485930a#commitcomment-8768047\n\t\t// for the reasoning behind the timeout and revocation flow\n\t\t, arbitrary_revoke_timeout = 500 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (view.chrome) {\n\t\t\t\trevoker();\n\t\t\t} else {\n\t\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t\t}\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([\"\\ufeff\", blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name, no_auto_bom) {\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, blob_changed = false\n\t\t\t\t, object_url\n\t\t\t\t, target_view\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (blob_changed || !object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (target_view) {\n\t\t\t\t\t\ttarget_view.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar new_tab = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (new_tab == undefined && typeof safari !== \"undefined\") {\n\t\t\t\t\t\t\t//Apple do not allow window.open, see http://bit.ly/1kZffRI\n\t\t\t\t\t\t\tview.location.href = object_url\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t\t, abortable = function(func) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif (filesaver.readyState !== filesaver.DONE) {\n\t\t\t\t\t\t\treturn func.apply(this, arguments);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t, create_if_not_found = {create: true, exclusive: false}\n\t\t\t\t, slice\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\tif (!name) {\n\t\t\t\tname = \"download\";\n\t\t\t}\n\t\t\tif (can_use_save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\tsave_link.href = object_url;\n\t\t\t\tsave_link.download = name;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Object and web filesystem URLs have a problem saving in Google Chrome when\n\t\t\t// viewed in a tab, so I force save with application/octet-stream\n\t\t\t// http://code.google.com/p/chromium/issues/detail?id=91158\n\t\t\t// Update: Google errantly closed 91158, I submitted it again:\n\t\t\t// https://code.google.com/p/chromium/issues/detail?id=389642\n\t\t\tif (view.chrome && type && type !== force_saveable_type) {\n\t\t\t\tslice = blob.slice || blob.webkitSlice;\n\t\t\t\tblob = slice.call(blob, 0, blob.size, force_saveable_type);\n\t\t\t\tblob_changed = true;\n\t\t\t}\n\t\t\t// Since I can't be sure that the guessed media type will trigger a download\n\t\t\t// in WebKit, I append .download to the filename.\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=65440\n\t\t\tif (webkit_req_fs && name !== \"download\") {\n\t\t\t\tname += \".download\";\n\t\t\t}\n\t\t\tif (type === force_saveable_type || webkit_req_fs) {\n\t\t\t\ttarget_view = view;\n\t\t\t}\n\t\t\tif (!req_fs) {\n\t\t\t\tfs_error();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfs_min_size += blob.size;\n\t\t\treq_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) {\n\t\t\t\tfs.root.getDirectory(\"saved\", create_if_not_found, abortable(function(dir) {\n\t\t\t\t\tvar save = function() {\n\t\t\t\t\t\tdir.getFile(name, create_if_not_found, abortable(function(file) {\n\t\t\t\t\t\t\tfile.createWriter(abortable(function(writer) {\n\t\t\t\t\t\t\t\twriter.onwriteend = function(event) {\n\t\t\t\t\t\t\t\t\ttarget_view.location.href = file.toURL();\n\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t\tdispatch(filesaver, \"writeend\", event);\n\t\t\t\t\t\t\t\t\trevoke(file);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\twriter.onerror = function() {\n\t\t\t\t\t\t\t\t\tvar error = writer.error;\n\t\t\t\t\t\t\t\t\tif (error.code !== error.ABORT_ERR) {\n\t\t\t\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\"writestart progress write abort\".split(\" \").forEach(function(event) {\n\t\t\t\t\t\t\t\t\twriter[\"on\" + event] = filesaver[\"on\" + event];\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\twriter.write(blob);\n\t\t\t\t\t\t\t\tfilesaver.abort = function() {\n\t\t\t\t\t\t\t\t\twriter.abort();\n\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.WRITING;\n\t\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t};\n\t\t\t\t\tdir.getFile(name, {create: false}, abortable(function(file) {\n\t\t\t\t\t\t// delete file if it already exists\n\t\t\t\t\t\tfile.remove();\n\t\t\t\t\t\tsave();\n\t\t\t\t\t}), abortable(function(ex) {\n\t\t\t\t\t\tif (ex.code === ex.NOT_FOUND_ERR) {\n\t\t\t\t\t\t\tsave();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}), fs_error);\n\t\t\t}), fs_error);\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name, no_auto_bom) {\n\t\t\treturn new FileSaver(blob, name, no_auto_bom);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name, no_auto_bom) {\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\treturn navigator.msSaveOrOpenBlob(blob, name || \"download\");\n\t\t};\n\t}\n\n\tFS_proto.abort = function() {\n\t\tvar filesaver = this;\n\t\tfilesaver.readyState = filesaver.DONE;\n\t\tdispatch(filesaver, \"abort\");\n\t};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd != null)) {\n define([], function() {\n return saveAs;\n });\n}\n","/* \r\n * An Angular service which helps with creating recursive directives.\r\n * @author Mark Lagendijk\r\n * @license MIT\r\n */\r\nangular.module('RecursionHelper', []).factory('RecursionHelper', ['$compile', function($compile){\r\n\treturn {\r\n\t\t/**\r\n\t\t * Manually compiles the element, fixing the recursion loop.\r\n\t\t * @param element\r\n\t\t * @param [link] A post-link function, or an object with function(s) registered via pre and post properties.\r\n\t\t * @returns An object containing the linking functions.\r\n\t\t */\r\n\t\tcompile: function(element, link){\r\n\t\t\t// Normalize the link parameter\r\n\t\t\tif(angular.isFunction(link)){\r\n\t\t\t\tlink = { post: link };\r\n\t\t\t}\r\n\r\n\t\t\t// Break the recursion loop by removing the contents\r\n\t\t\tvar contents = element.contents().remove();\r\n\t\t\tvar compiledContents;\r\n\t\t\treturn {\r\n\t\t\t\tpre: (link && link.pre) ? link.pre : null,\r\n\t\t\t\t/**\r\n\t\t\t\t * Compiles and re-adds the contents\r\n\t\t\t\t */\r\n\t\t\t\tpost: function(scope, element){\r\n\t\t\t\t\t// Compile the contents\r\n\t\t\t\t\tif(!compiledContents){\r\n\t\t\t\t\t\tcompiledContents = $compile(contents);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Re-add the compiled contents to the element\r\n\t\t\t\t\tcompiledContents(scope, function(clone){\r\n\t\t\t\t\t\telement.append(clone);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// Call the post-linking function, if any\r\n\t\t\t\t\tif(link && link.post){\r\n\t\t\t\t\t\tlink.post.apply(null, arguments);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t};\r\n}]);","/**\n * @license AngularJS v1.8.0\n * (c) 2010-2020 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(window, angular) {'use strict';\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Any commits to this file should be reviewed with security in mind. *\n * Changes to this file can potentially create security vulnerabilities. *\n * An approval from 2 Core members with history of modifying *\n * this file is required. *\n * *\n * Does the change somehow allow for arbitrary javascript to be executed? *\n * Or allows for someone to change the prototype of built-in objects? *\n * Or gives undesired access to variables likes document or window? *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\nvar $sanitizeMinErr = angular.$$minErr('$sanitize');\nvar bind;\nvar extend;\nvar forEach;\nvar isArray;\nvar isDefined;\nvar lowercase;\nvar noop;\nvar nodeContains;\nvar htmlParser;\nvar htmlSanitizeWriter;\n\n/**\n * @ngdoc module\n * @name ngSanitize\n * @description\n *\n * The `ngSanitize` module provides functionality to sanitize HTML.\n *\n * See {@link ngSanitize.$sanitize `$sanitize`} for usage.\n */\n\n/**\n * @ngdoc service\n * @name $sanitize\n * @kind function\n *\n * @description\n * Sanitizes an html string by stripping all potentially dangerous tokens.\n *\n * The input is sanitized by parsing the HTML into tokens. All safe tokens (from a whitelist) are\n * then serialized back to a properly escaped HTML string. This means that no unsafe input can make\n * it into the returned string.\n *\n * The whitelist for URL sanitization of attribute values is configured using the functions\n * `aHrefSanitizationWhitelist` and `imgSrcSanitizationWhitelist` of {@link $compileProvider}.\n *\n * The input may also contain SVG markup if this is enabled via {@link $sanitizeProvider}.\n *\n * @param {string} html HTML input.\n * @returns {string} Sanitized HTML.\n *\n * @example\n \n \n \n
\n Snippet: \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
DirectiveHowSourceRendered
ng-bind-htmlAutomatically uses $sanitize
<div ng-bind-html=\"snippet\">
</div>
ng-bind-htmlBypass $sanitize by explicitly trusting the dangerous value\n
<div ng-bind-html=\"deliberatelyTrustDangerousSnippet()\">\n</div>
\n
ng-bindAutomatically escapes
<div ng-bind=\"snippet\">
</div>
\n
\n
\n \n it('should sanitize the html snippet by default', function() {\n expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).\n toBe('

an html\\nclick here\\nsnippet

');\n });\n\n it('should inline raw snippet if bound to a trusted value', function() {\n expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).\n toBe(\"

an html\\n\" +\n \"click here\\n\" +\n \"snippet

\");\n });\n\n it('should escape snippet without any filter', function() {\n expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).\n toBe(\"<p style=\\\"color:blue\\\">an html\\n\" +\n \"<em onmouseover=\\\"this.textContent='PWN3D!'\\\">click here</em>\\n\" +\n \"snippet</p>\");\n });\n\n it('should update', function() {\n element(by.model('snippet')).clear();\n element(by.model('snippet')).sendKeys('new text');\n expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).\n toBe('new text');\n expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).toBe(\n 'new text');\n expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).toBe(\n \"new <b onclick=\\\"alert(1)\\\">text</b>\");\n });\n
\n
\n */\n\n\n/**\n * @ngdoc provider\n * @name $sanitizeProvider\n * @this\n *\n * @description\n * Creates and configures {@link $sanitize} instance.\n */\nfunction $SanitizeProvider() {\n var hasBeenInstantiated = false;\n var svgEnabled = false;\n\n this.$get = ['$$sanitizeUri', function($$sanitizeUri) {\n hasBeenInstantiated = true;\n if (svgEnabled) {\n extend(validElements, svgElements);\n }\n return function(html) {\n var buf = [];\n htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) {\n return !/^unsafe:/.test($$sanitizeUri(uri, isImage));\n }));\n return buf.join('');\n };\n }];\n\n\n /**\n * @ngdoc method\n * @name $sanitizeProvider#enableSvg\n * @kind function\n *\n * @description\n * Enables a subset of svg to be supported by the sanitizer.\n *\n *
\n *

By enabling this setting without taking other precautions, you might expose your\n * application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned\n * outside of the containing element and be rendered over other elements on the page (e.g. a login\n * link). Such behavior can then result in phishing incidents.

\n *\n *

To protect against these, explicitly setup `overflow: hidden` css rule for all potential svg\n * tags within the sanitized content:

\n *\n *
\n *\n *
\n   *   .rootOfTheIncludedContent svg {\n   *     overflow: hidden !important;\n   *   }\n   *   
\n *
\n *\n * @param {boolean=} flag Enable or disable SVG support in the sanitizer.\n * @returns {boolean|$sanitizeProvider} Returns the currently configured value if called\n * without an argument or self for chaining otherwise.\n */\n this.enableSvg = function(enableSvg) {\n if (isDefined(enableSvg)) {\n svgEnabled = enableSvg;\n return this;\n } else {\n return svgEnabled;\n }\n };\n\n\n /**\n * @ngdoc method\n * @name $sanitizeProvider#addValidElements\n * @kind function\n *\n * @description\n * Extends the built-in lists of valid HTML/SVG elements, i.e. elements that are considered safe\n * and are not stripped off during sanitization. You can extend the following lists of elements:\n *\n * - `htmlElements`: A list of elements (tag names) to extend the current list of safe HTML\n * elements. HTML elements considered safe will not be removed during sanitization. All other\n * elements will be stripped off.\n *\n * - `htmlVoidElements`: This is similar to `htmlElements`, but marks the elements as\n * \"void elements\" (similar to HTML\n * [void elements](https://rawgit.com/w3c/html/html5.1-2/single-page.html#void-elements)). These\n * elements have no end tag and cannot have content.\n *\n * - `svgElements`: This is similar to `htmlElements`, but for SVG elements. This list is only\n * taken into account if SVG is {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for\n * `$sanitize`.\n *\n *
\n * This method must be called during the {@link angular.Module#config config} phase. Once the\n * `$sanitize` service has been instantiated, this method has no effect.\n *
\n *\n *
\n * Keep in mind that extending the built-in lists of elements may expose your app to XSS or\n * other vulnerabilities. Be very mindful of the elements you add.\n *
\n *\n * @param {Array|Object} elements - A list of valid HTML elements or an object with one or\n * more of the following properties:\n * - **htmlElements** - `{Array}` - A list of elements to extend the current list of\n * HTML elements.\n * - **htmlVoidElements** - `{Array}` - A list of elements to extend the current list of\n * void HTML elements; i.e. elements that do not have an end tag.\n * - **svgElements** - `{Array}` - A list of elements to extend the current list of SVG\n * elements. The list of SVG elements is only taken into account if SVG is\n * {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for `$sanitize`.\n *\n * Passing an array (`[...]`) is equivalent to passing `{htmlElements: [...]}`.\n *\n * @return {$sanitizeProvider} Returns self for chaining.\n */\n this.addValidElements = function(elements) {\n if (!hasBeenInstantiated) {\n if (isArray(elements)) {\n elements = {htmlElements: elements};\n }\n\n addElementsTo(svgElements, elements.svgElements);\n addElementsTo(voidElements, elements.htmlVoidElements);\n addElementsTo(validElements, elements.htmlVoidElements);\n addElementsTo(validElements, elements.htmlElements);\n }\n\n return this;\n };\n\n\n /**\n * @ngdoc method\n * @name $sanitizeProvider#addValidAttrs\n * @kind function\n *\n * @description\n * Extends the built-in list of valid attributes, i.e. attributes that are considered safe and are\n * not stripped off during sanitization.\n *\n * **Note**:\n * The new attributes will not be treated as URI attributes, which means their values will not be\n * sanitized as URIs using `$compileProvider`'s\n * {@link ng.$compileProvider#aHrefSanitizationWhitelist aHrefSanitizationWhitelist} and\n * {@link ng.$compileProvider#imgSrcSanitizationWhitelist imgSrcSanitizationWhitelist}.\n *\n *
\n * This method must be called during the {@link angular.Module#config config} phase. Once the\n * `$sanitize` service has been instantiated, this method has no effect.\n *
\n *\n *
\n * Keep in mind that extending the built-in list of attributes may expose your app to XSS or\n * other vulnerabilities. Be very mindful of the attributes you add.\n *
\n *\n * @param {Array} attrs - A list of valid attributes.\n *\n * @returns {$sanitizeProvider} Returns self for chaining.\n */\n this.addValidAttrs = function(attrs) {\n if (!hasBeenInstantiated) {\n extend(validAttrs, arrayToMap(attrs, true));\n }\n return this;\n };\n\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // Private stuff\n //////////////////////////////////////////////////////////////////////////////////////////////////\n\n bind = angular.bind;\n extend = angular.extend;\n forEach = angular.forEach;\n isArray = angular.isArray;\n isDefined = angular.isDefined;\n lowercase = angular.$$lowercase;\n noop = angular.noop;\n\n htmlParser = htmlParserImpl;\n htmlSanitizeWriter = htmlSanitizeWriterImpl;\n\n nodeContains = window.Node.prototype.contains || /** @this */ function(arg) {\n // eslint-disable-next-line no-bitwise\n return !!(this.compareDocumentPosition(arg) & 16);\n };\n\n // Regular Expressions for parsing tags and attributes\n var SURROGATE_PAIR_REGEXP = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,\n // Match everything outside of normal chars and \" (quote character)\n NON_ALPHANUMERIC_REGEXP = /([^#-~ |!])/g;\n\n\n // Good source of info about elements and attributes\n // http://dev.w3.org/html5/spec/Overview.html#semantics\n // http://simon.html5.org/html-elements\n\n // Safe Void Elements - HTML5\n // http://dev.w3.org/html5/spec/Overview.html#void-elements\n var voidElements = stringToMap('area,br,col,hr,img,wbr');\n\n // Elements that you can, intentionally, leave open (and which close themselves)\n // http://dev.w3.org/html5/spec/Overview.html#optional-tags\n var optionalEndTagBlockElements = stringToMap('colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr'),\n optionalEndTagInlineElements = stringToMap('rp,rt'),\n optionalEndTagElements = extend({},\n optionalEndTagInlineElements,\n optionalEndTagBlockElements);\n\n // Safe Block Elements - HTML5\n var blockElements = extend({}, optionalEndTagBlockElements, stringToMap('address,article,' +\n 'aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,' +\n 'h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul'));\n\n // Inline Elements - HTML5\n var inlineElements = extend({}, optionalEndTagInlineElements, stringToMap('a,abbr,acronym,b,' +\n 'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,' +\n 'samp,small,span,strike,strong,sub,sup,time,tt,u,var'));\n\n // SVG Elements\n // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements\n // Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted.\n // They can potentially allow for arbitrary javascript to be executed. See #11290\n var svgElements = stringToMap('circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,' +\n 'hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,' +\n 'radialGradient,rect,stop,svg,switch,text,title,tspan');\n\n // Blocked Elements (will be stripped)\n var blockedElements = stringToMap('script,style');\n\n var validElements = extend({},\n voidElements,\n blockElements,\n inlineElements,\n optionalEndTagElements);\n\n //Attributes that have href and hence need to be sanitized\n var uriAttrs = stringToMap('background,cite,href,longdesc,src,xlink:href,xml:base');\n\n var htmlAttrs = stringToMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +\n 'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +\n 'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +\n 'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +\n 'valign,value,vspace,width');\n\n // SVG attributes (without \"id\" and \"name\" attributes)\n // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes\n var svgAttrs = stringToMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' +\n 'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' +\n 'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' +\n 'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' +\n 'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' +\n 'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' +\n 'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' +\n 'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' +\n 'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' +\n 'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' +\n 'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' +\n 'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' +\n 'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' +\n 'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' +\n 'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true);\n\n var validAttrs = extend({},\n uriAttrs,\n svgAttrs,\n htmlAttrs);\n\n function stringToMap(str, lowercaseKeys) {\n return arrayToMap(str.split(','), lowercaseKeys);\n }\n\n function arrayToMap(items, lowercaseKeys) {\n var obj = {}, i;\n for (i = 0; i < items.length; i++) {\n obj[lowercaseKeys ? lowercase(items[i]) : items[i]] = true;\n }\n return obj;\n }\n\n function addElementsTo(elementsMap, newElements) {\n if (newElements && newElements.length) {\n extend(elementsMap, arrayToMap(newElements));\n }\n }\n\n /**\n * Create an inert document that contains the dirty HTML that needs sanitizing\n * Depending upon browser support we use one of three strategies for doing this.\n * Support: Safari 10.x -> XHR strategy\n * Support: Firefox -> DomParser strategy\n */\n var getInertBodyElement /* function(html: string): HTMLBodyElement */ = (function(window, document) {\n var inertDocument;\n if (document && document.implementation) {\n inertDocument = document.implementation.createHTMLDocument('inert');\n } else {\n throw $sanitizeMinErr('noinert', 'Can\\'t create an inert html document');\n }\n var inertBodyElement = (inertDocument.documentElement || inertDocument.getDocumentElement()).querySelector('body');\n\n // Check for the Safari 10.1 bug - which allows JS to run inside the SVG G element\n inertBodyElement.innerHTML = '';\n if (!inertBodyElement.querySelector('svg')) {\n return getInertBodyElement_XHR;\n } else {\n // Check for the Firefox bug - which prevents the inner img JS from being sanitized\n inertBodyElement.innerHTML = '

';\n if (inertBodyElement.querySelector('svg img')) {\n return getInertBodyElement_DOMParser;\n } else {\n return getInertBodyElement_InertDocument;\n }\n }\n\n function getInertBodyElement_XHR(html) {\n // We add this dummy element to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `` do not get hoisted to the `` tag.\n html = '' + html;\n try {\n html = encodeURI(html);\n } catch (e) {\n return undefined;\n }\n var xhr = new window.XMLHttpRequest();\n xhr.responseType = 'document';\n xhr.open('GET', 'data:text/html;charset=utf-8,' + html, false);\n xhr.send(null);\n var body = xhr.response.body;\n body.firstChild.remove();\n return body;\n }\n\n function getInertBodyElement_DOMParser(html) {\n // We add this dummy element to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `` do not get hoisted to the `` tag.\n html = '' + html;\n try {\n var body = new window.DOMParser().parseFromString(html, 'text/html').body;\n body.firstChild.remove();\n return body;\n } catch (e) {\n return undefined;\n }\n }\n\n function getInertBodyElement_InertDocument(html) {\n inertBodyElement.innerHTML = html;\n\n // Support: IE 9-11 only\n // strip custom-namespaced attributes on IE<=11\n if (document.documentMode) {\n stripCustomNsAttrs(inertBodyElement);\n }\n\n return inertBodyElement;\n }\n })(window, window.document);\n\n /**\n * @example\n * htmlParser(htmlString, {\n * start: function(tag, attrs) {},\n * end: function(tag) {},\n * chars: function(text) {},\n * comment: function(text) {}\n * });\n *\n * @param {string} html string\n * @param {object} handler\n */\n function htmlParserImpl(html, handler) {\n if (html === null || html === undefined) {\n html = '';\n } else if (typeof html !== 'string') {\n html = '' + html;\n }\n\n var inertBodyElement = getInertBodyElement(html);\n if (!inertBodyElement) return '';\n\n //mXSS protection\n var mXSSAttempts = 5;\n do {\n if (mXSSAttempts === 0) {\n throw $sanitizeMinErr('uinput', 'Failed to sanitize html because the input is unstable');\n }\n mXSSAttempts--;\n\n // trigger mXSS if it is going to happen by reading and writing the innerHTML\n html = inertBodyElement.innerHTML;\n inertBodyElement = getInertBodyElement(html);\n } while (html !== inertBodyElement.innerHTML);\n\n var node = inertBodyElement.firstChild;\n while (node) {\n switch (node.nodeType) {\n case 1: // ELEMENT_NODE\n handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes));\n break;\n case 3: // TEXT NODE\n handler.chars(node.textContent);\n break;\n }\n\n var nextNode;\n if (!(nextNode = node.firstChild)) {\n if (node.nodeType === 1) {\n handler.end(node.nodeName.toLowerCase());\n }\n nextNode = getNonDescendant('nextSibling', node);\n if (!nextNode) {\n while (nextNode == null) {\n node = getNonDescendant('parentNode', node);\n if (node === inertBodyElement) break;\n nextNode = getNonDescendant('nextSibling', node);\n if (node.nodeType === 1) {\n handler.end(node.nodeName.toLowerCase());\n }\n }\n }\n }\n node = nextNode;\n }\n\n while ((node = inertBodyElement.firstChild)) {\n inertBodyElement.removeChild(node);\n }\n }\n\n function attrToMap(attrs) {\n var map = {};\n for (var i = 0, ii = attrs.length; i < ii; i++) {\n var attr = attrs[i];\n map[attr.name] = attr.value;\n }\n return map;\n }\n\n\n /**\n * Escapes all potentially dangerous characters, so that the\n * resulting string can be safely inserted into attribute or\n * element text.\n * @param value\n * @returns {string} escaped text\n */\n function encodeEntities(value) {\n return value.\n replace(/&/g, '&').\n replace(SURROGATE_PAIR_REGEXP, function(value) {\n var hi = value.charCodeAt(0);\n var low = value.charCodeAt(1);\n return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';\n }).\n replace(NON_ALPHANUMERIC_REGEXP, function(value) {\n return '&#' + value.charCodeAt(0) + ';';\n }).\n replace(//g, '>');\n }\n\n /**\n * create an HTML/XML writer which writes to buffer\n * @param {Array} buf use buf.join('') to get out sanitized html string\n * @returns {object} in the form of {\n * start: function(tag, attrs) {},\n * end: function(tag) {},\n * chars: function(text) {},\n * comment: function(text) {}\n * }\n */\n function htmlSanitizeWriterImpl(buf, uriValidator) {\n var ignoreCurrentElement = false;\n var out = bind(buf, buf.push);\n return {\n start: function(tag, attrs) {\n tag = lowercase(tag);\n if (!ignoreCurrentElement && blockedElements[tag]) {\n ignoreCurrentElement = tag;\n }\n if (!ignoreCurrentElement && validElements[tag] === true) {\n out('<');\n out(tag);\n forEach(attrs, function(value, key) {\n var lkey = lowercase(key);\n var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');\n if (validAttrs[lkey] === true &&\n (uriAttrs[lkey] !== true || uriValidator(value, isImage))) {\n out(' ');\n out(key);\n out('=\"');\n out(encodeEntities(value));\n out('\"');\n }\n });\n out('>');\n }\n },\n end: function(tag) {\n tag = lowercase(tag);\n if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) {\n out('');\n }\n // eslint-disable-next-line eqeqeq\n if (tag == ignoreCurrentElement) {\n ignoreCurrentElement = false;\n }\n },\n chars: function(chars) {\n if (!ignoreCurrentElement) {\n out(encodeEntities(chars));\n }\n }\n };\n }\n\n\n /**\n * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare\n * ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want\n * to allow any of these custom attributes. This method strips them all.\n *\n * @param node Root element to process\n */\n function stripCustomNsAttrs(node) {\n while (node) {\n if (node.nodeType === window.Node.ELEMENT_NODE) {\n var attrs = node.attributes;\n for (var i = 0, l = attrs.length; i < l; i++) {\n var attrNode = attrs[i];\n var attrName = attrNode.name.toLowerCase();\n if (attrName === 'xmlns:ns1' || attrName.lastIndexOf('ns1:', 0) === 0) {\n node.removeAttributeNode(attrNode);\n i--;\n l--;\n }\n }\n }\n\n var nextNode = node.firstChild;\n if (nextNode) {\n stripCustomNsAttrs(nextNode);\n }\n\n node = getNonDescendant('nextSibling', node);\n }\n }\n\n function getNonDescendant(propName, node) {\n // An element is clobbered if its `propName` property points to one of its descendants\n var nextNode = node[propName];\n if (nextNode && nodeContains.call(node, nextNode)) {\n throw $sanitizeMinErr('elclob', 'Failed to sanitize html because the element is clobbered: {0}', node.outerHTML || node.outerText);\n }\n return nextNode;\n }\n}\n\nfunction sanitizeText(chars) {\n var buf = [];\n var writer = htmlSanitizeWriter(buf, noop);\n writer.chars(chars);\n return buf.join('');\n}\n\n\n// define ngSanitize module and register $sanitize service\nangular.module('ngSanitize', [])\n .provider('$sanitize', $SanitizeProvider)\n .info({ angularVersion: '1.8.0' });\n\n/**\n * @ngdoc filter\n * @name linky\n * @kind function\n *\n * @description\n * Finds links in text input and turns them into html links. Supports `http/https/ftp/sftp/mailto` and\n * plain email address links.\n *\n * Requires the {@link ngSanitize `ngSanitize`} module to be installed.\n *\n * @param {string} text Input text.\n * @param {string} [target] Window (`_blank|_self|_parent|_top`) or named frame to open links in.\n * @param {object|function(url)} [attributes] Add custom attributes to the link element.\n *\n * Can be one of:\n *\n * - `object`: A map of attributes\n * - `function`: Takes the url as a parameter and returns a map of attributes\n *\n * If the map of attributes contains a value for `target`, it overrides the value of\n * the target parameter.\n *\n *\n * @returns {string} Html-linkified and {@link $sanitize sanitized} text.\n *\n * @usage\n \n *\n * @example\n \n \n

\n Snippet: \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FilterSourceRendered
linky filter\n
<div ng-bind-html=\"snippet | linky\">
</div>
\n
\n
\n
linky target\n
<div ng-bind-html=\"snippetWithSingleURL | linky:'_blank'\">
</div>
\n
\n
\n
linky custom attributes\n
<div ng-bind-html=\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\">
</div>
\n
\n
\n
no filter
<div ng-bind=\"snippet\">
</div>
\n \n \n angular.module('linkyExample', ['ngSanitize'])\n .controller('ExampleController', ['$scope', function($scope) {\n $scope.snippet =\n 'Pretty text with some links:\\n' +\n 'http://angularjs.org/,\\n' +\n 'mailto:us@somewhere.org,\\n' +\n 'another@somewhere.org,\\n' +\n 'and one more: ftp://127.0.0.1/.';\n $scope.snippetWithSingleURL = 'http://angularjs.org/';\n }]);\n \n \n it('should linkify the snippet with urls', function() {\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\n toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);\n });\n\n it('should not linkify snippet without the linky filter', function() {\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).\n toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\n expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);\n });\n\n it('should update', function() {\n element(by.model('snippet')).clear();\n element(by.model('snippet')).sendKeys('new http://link.');\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\n toBe('new http://link.');\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())\n .toBe('new http://link.');\n });\n\n it('should work with the target property', function() {\n expect(element(by.id('linky-target')).\n element(by.binding(\"snippetWithSingleURL | linky:'_blank'\")).getText()).\n toBe('http://angularjs.org/');\n expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');\n });\n\n it('should optionally add custom attributes', function() {\n expect(element(by.id('linky-custom-attributes')).\n element(by.binding(\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\")).getText()).\n toBe('http://angularjs.org/');\n expect(element(by.css('#linky-custom-attributes a')).getAttribute('rel')).toEqual('nofollow');\n });\n \n \n */\nangular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {\n var LINKY_URL_REGEXP =\n /((s?ftp|https?):\\/\\/|(www\\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\\S*[^\\s.;,(){}<>\"\\u201d\\u2019]/i,\n MAILTO_REGEXP = /^mailto:/i;\n\n var linkyMinErr = angular.$$minErr('linky');\n var isDefined = angular.isDefined;\n var isFunction = angular.isFunction;\n var isObject = angular.isObject;\n var isString = angular.isString;\n\n return function(text, target, attributes) {\n if (text == null || text === '') return text;\n if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', text);\n\n var attributesFn =\n isFunction(attributes) ? attributes :\n isObject(attributes) ? function getAttributesObject() {return attributes;} :\n function getEmptyAttributesObject() {return {};};\n\n var match;\n var raw = text;\n var html = [];\n var url;\n var i;\n while ((match = raw.match(LINKY_URL_REGEXP))) {\n // We can not end in these as they are sometimes found at the end of the sentence\n url = match[0];\n // if we did not match ftp/http/www/mailto then assume mailto\n if (!match[2] && !match[4]) {\n url = (match[3] ? 'http://' : 'mailto:') + url;\n }\n i = match.index;\n addText(raw.substr(0, i));\n addLink(url, match[0].replace(MAILTO_REGEXP, ''));\n raw = raw.substring(i + match[0].length);\n }\n addText(raw);\n return $sanitize(html.join(''));\n\n function addText(text) {\n if (!text) {\n return;\n }\n html.push(sanitizeText(text));\n }\n\n function addLink(url, text) {\n var key, linkAttributes = attributesFn(url);\n html.push('');\n addText(text);\n html.push('');\n }\n };\n}]);\n\n\n})(window, window.angular);\n","require('./angular-sanitize');\nmodule.exports = 'ngSanitize';\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(true);\n// Module\nexports.push([module.id, \".embPanel__content[data-error], .embPanel__content[data-loading] {\\n pointer-events: all !important;\\n filter: none !important; }\\n\\n.kbn-radar {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n justify-content: space-around;\\n align-items: center;\\n overflow-x: hidden;\\n overflow-y: hidden; }\\n\", \"\",{\"version\":3,\"sources\":[\"index.scss\"],\"names\":[],\"mappings\":\"AAAA;EACE,8BAA8B;EAC9B,uBAAuB,EAAE;;AAE3B;EACE,WAAW;EACX,YAAY;EACZ,aAAa;EACb,mBAAmB;EACnB,eAAe;EACf,6BAA6B;EAC7B,mBAAmB;EACnB,kBAAkB;EAClB,kBAAkB,EAAE\",\"file\":\"index.scss\",\"sourcesContent\":[\".embPanel__content[data-error], .embPanel__content[data-loading] {\\n pointer-events: all !important;\\n filter: none !important; }\\n\\n.kbn-radar {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n justify-content: space-around;\\n align-items: center;\\n overflow-x: hidden;\\n overflow-y: hidden; }\\n\"]}]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(true);\n// Module\nexports.push([module.id, \".embPanel__content[data-error], .embPanel__content[data-loading] {\\n pointer-events: all !important;\\n filter: none !important; }\\n\\n.kbn-radar {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n justify-content: space-around;\\n align-items: center;\\n overflow-x: hidden;\\n overflow-y: hidden; }\\n\", \"\",{\"version\":3,\"sources\":[\"index.scss\"],\"names\":[],\"mappings\":\"AAAA;EACE,8BAA8B;EAC9B,uBAAuB,EAAE;;AAE3B;EACE,WAAW;EACX,YAAY;EACZ,aAAa;EACb,mBAAmB;EACnB,eAAe;EACf,6BAA6B;EAC7B,mBAAmB;EACnB,kBAAkB;EAClB,kBAAkB,EAAE\",\"file\":\"index.scss\",\"sourcesContent\":[\".embPanel__content[data-error], .embPanel__content[data-loading] {\\n pointer-events: all !important;\\n filter: none !important; }\\n\\n.kbn-radar {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n justify-content: space-around;\\n align-items: center;\\n overflow-x: hidden;\\n overflow-y: hidden; }\\n\"]}]);\n// Exports\nmodule.exports = exports;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && btoa) {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of ';\n if (inertBodyElement.querySelector('svg img')) {\n return getInertBodyElement_DOMParser;\n } else {\n return getInertBodyElement_InertDocument;\n }\n }\n\n function getInertBodyElement_XHR(html) {\n // We add this dummy element to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `` do not get hoisted to the `` tag.\n html = '' + html;\n try {\n html = encodeURI(html);\n } catch (e) {\n return undefined;\n }\n var xhr = new window.XMLHttpRequest();\n xhr.responseType = 'document';\n xhr.open('GET', 'data:text/html;charset=utf-8,' + html, false);\n xhr.send(null);\n var body = xhr.response.body;\n body.firstChild.remove();\n return body;\n }\n\n function getInertBodyElement_DOMParser(html) {\n // We add this dummy element to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `` do not get hoisted to the `` tag.\n html = '' + html;\n try {\n var body = new window.DOMParser().parseFromString(html, 'text/html').body;\n body.firstChild.remove();\n return body;\n } catch (e) {\n return undefined;\n }\n }\n\n function getInertBodyElement_InertDocument(html) {\n inertBodyElement.innerHTML = html;\n\n // Support: IE 9-11 only\n // strip custom-namespaced attributes on IE<=11\n if (document.documentMode) {\n stripCustomNsAttrs(inertBodyElement);\n }\n\n return inertBodyElement;\n }\n })(window, window.document);\n\n /**\n * @example\n * htmlParser(htmlString, {\n * start: function(tag, attrs) {},\n * end: function(tag) {},\n * chars: function(text) {},\n * comment: function(text) {}\n * });\n *\n * @param {string} html string\n * @param {object} handler\n */\n function htmlParserImpl(html, handler) {\n if (html === null || html === undefined) {\n html = '';\n } else if (typeof html !== 'string') {\n html = '' + html;\n }\n\n var inertBodyElement = getInertBodyElement(html);\n if (!inertBodyElement) return '';\n\n //mXSS protection\n var mXSSAttempts = 5;\n do {\n if (mXSSAttempts === 0) {\n throw $sanitizeMinErr('uinput', 'Failed to sanitize html because the input is unstable');\n }\n mXSSAttempts--;\n\n // trigger mXSS if it is going to happen by reading and writing the innerHTML\n html = inertBodyElement.innerHTML;\n inertBodyElement = getInertBodyElement(html);\n } while (html !== inertBodyElement.innerHTML);\n\n var node = inertBodyElement.firstChild;\n while (node) {\n switch (node.nodeType) {\n case 1: // ELEMENT_NODE\n handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes));\n break;\n case 3: // TEXT NODE\n handler.chars(node.textContent);\n break;\n }\n\n var nextNode;\n if (!(nextNode = node.firstChild)) {\n if (node.nodeType === 1) {\n handler.end(node.nodeName.toLowerCase());\n }\n nextNode = getNonDescendant('nextSibling', node);\n if (!nextNode) {\n while (nextNode == null) {\n node = getNonDescendant('parentNode', node);\n if (node === inertBodyElement) break;\n nextNode = getNonDescendant('nextSibling', node);\n if (node.nodeType === 1) {\n handler.end(node.nodeName.toLowerCase());\n }\n }\n }\n }\n node = nextNode;\n }\n\n while ((node = inertBodyElement.firstChild)) {\n inertBodyElement.removeChild(node);\n }\n }\n\n function attrToMap(attrs) {\n var map = {};\n for (var i = 0, ii = attrs.length; i < ii; i++) {\n var attr = attrs[i];\n map[attr.name] = attr.value;\n }\n return map;\n }\n\n\n /**\n * Escapes all potentially dangerous characters, so that the\n * resulting string can be safely inserted into attribute or\n * element text.\n * @param value\n * @returns {string} escaped text\n */\n function encodeEntities(value) {\n return value.\n replace(/&/g, '&').\n replace(SURROGATE_PAIR_REGEXP, function(value) {\n var hi = value.charCodeAt(0);\n var low = value.charCodeAt(1);\n return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';\n }).\n replace(NON_ALPHANUMERIC_REGEXP, function(value) {\n return '&#' + value.charCodeAt(0) + ';';\n }).\n replace(//g, '>');\n }\n\n /**\n * create an HTML/XML writer which writes to buffer\n * @param {Array} buf use buf.join('') to get out sanitized html string\n * @returns {object} in the form of {\n * start: function(tag, attrs) {},\n * end: function(tag) {},\n * chars: function(text) {},\n * comment: function(text) {}\n * }\n */\n function htmlSanitizeWriterImpl(buf, uriValidator) {\n var ignoreCurrentElement = false;\n var out = bind(buf, buf.push);\n return {\n start: function(tag, attrs) {\n tag = lowercase(tag);\n if (!ignoreCurrentElement && blockedElements[tag]) {\n ignoreCurrentElement = tag;\n }\n if (!ignoreCurrentElement && validElements[tag] === true) {\n out('<');\n out(tag);\n forEach(attrs, function(value, key) {\n var lkey = lowercase(key);\n var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');\n if (validAttrs[lkey] === true &&\n (uriAttrs[lkey] !== true || uriValidator(value, isImage))) {\n out(' ');\n out(key);\n out('=\"');\n out(encodeEntities(value));\n out('\"');\n }\n });\n out('>');\n }\n },\n end: function(tag) {\n tag = lowercase(tag);\n if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) {\n out('');\n }\n // eslint-disable-next-line eqeqeq\n if (tag == ignoreCurrentElement) {\n ignoreCurrentElement = false;\n }\n },\n chars: function(chars) {\n if (!ignoreCurrentElement) {\n out(encodeEntities(chars));\n }\n }\n };\n }\n\n\n /**\n * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare\n * ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want\n * to allow any of these custom attributes. This method strips them all.\n *\n * @param node Root element to process\n */\n function stripCustomNsAttrs(node) {\n while (node) {\n if (node.nodeType === window.Node.ELEMENT_NODE) {\n var attrs = node.attributes;\n for (var i = 0, l = attrs.length; i < l; i++) {\n var attrNode = attrs[i];\n var attrName = attrNode.name.toLowerCase();\n if (attrName === 'xmlns:ns1' || attrName.lastIndexOf('ns1:', 0) === 0) {\n node.removeAttributeNode(attrNode);\n i--;\n l--;\n }\n }\n }\n\n var nextNode = node.firstChild;\n if (nextNode) {\n stripCustomNsAttrs(nextNode);\n }\n\n node = getNonDescendant('nextSibling', node);\n }\n }\n\n function getNonDescendant(propName, node) {\n // An element is clobbered if its `propName` property points to one of its descendants\n var nextNode = node[propName];\n if (nextNode && nodeContains.call(node, nextNode)) {\n throw $sanitizeMinErr('elclob', 'Failed to sanitize html because the element is clobbered: {0}', node.outerHTML || node.outerText);\n }\n return nextNode;\n }\n}\n\nfunction sanitizeText(chars) {\n var buf = [];\n var writer = htmlSanitizeWriter(buf, noop);\n writer.chars(chars);\n return buf.join('');\n}\n\n\n// define ngSanitize module and register $sanitize service\nangular.module('ngSanitize', [])\n .provider('$sanitize', $SanitizeProvider)\n .info({ angularVersion: '1.8.0' });\n\n/**\n * @ngdoc filter\n * @name linky\n * @kind function\n *\n * @description\n * Finds links in text input and turns them into html links. Supports `http/https/ftp/sftp/mailto` and\n * plain email address links.\n *\n * Requires the {@link ngSanitize `ngSanitize`} module to be installed.\n *\n * @param {string} text Input text.\n * @param {string} [target] Window (`_blank|_self|_parent|_top`) or named frame to open links in.\n * @param {object|function(url)} [attributes] Add custom attributes to the link element.\n *\n * Can be one of:\n *\n * - `object`: A map of attributes\n * - `function`: Takes the url as a parameter and returns a map of attributes\n *\n * If the map of attributes contains a value for `target`, it overrides the value of\n * the target parameter.\n *\n *\n * @returns {string} Html-linkified and {@link $sanitize sanitized} text.\n *\n * @usage\n \n *\n * @example\n \n \n
\n Snippet: \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FilterSourceRendered
linky filter\n
<div ng-bind-html=\"snippet | linky\">
</div>
\n
\n
\n
linky target\n
<div ng-bind-html=\"snippetWithSingleURL | linky:'_blank'\">
</div>
\n
\n
\n
linky custom attributes\n
<div ng-bind-html=\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\">
</div>
\n
\n
\n
no filter
<div ng-bind=\"snippet\">
</div>
\n \n \n angular.module('linkyExample', ['ngSanitize'])\n .controller('ExampleController', ['$scope', function($scope) {\n $scope.snippet =\n 'Pretty text with some links:\\n' +\n 'http://angularjs.org/,\\n' +\n 'mailto:us@somewhere.org,\\n' +\n 'another@somewhere.org,\\n' +\n 'and one more: ftp://127.0.0.1/.';\n $scope.snippetWithSingleURL = 'http://angularjs.org/';\n }]);\n \n \n it('should linkify the snippet with urls', function() {\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\n toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);\n });\n\n it('should not linkify snippet without the linky filter', function() {\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).\n toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\n expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);\n });\n\n it('should update', function() {\n element(by.model('snippet')).clear();\n element(by.model('snippet')).sendKeys('new http://link.');\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\n toBe('new http://link.');\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())\n .toBe('new http://link.');\n });\n\n it('should work with the target property', function() {\n expect(element(by.id('linky-target')).\n element(by.binding(\"snippetWithSingleURL | linky:'_blank'\")).getText()).\n toBe('http://angularjs.org/');\n expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');\n });\n\n it('should optionally add custom attributes', function() {\n expect(element(by.id('linky-custom-attributes')).\n element(by.binding(\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\")).getText()).\n toBe('http://angularjs.org/');\n expect(element(by.css('#linky-custom-attributes a')).getAttribute('rel')).toEqual('nofollow');\n });\n \n \n */\nangular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {\n var LINKY_URL_REGEXP =\n /((s?ftp|https?):\\/\\/|(www\\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\\S*[^\\s.;,(){}<>\"\\u201d\\u2019]/i,\n MAILTO_REGEXP = /^mailto:/i;\n\n var linkyMinErr = angular.$$minErr('linky');\n var isDefined = angular.isDefined;\n var isFunction = angular.isFunction;\n var isObject = angular.isObject;\n var isString = angular.isString;\n\n return function(text, target, attributes) {\n if (text == null || text === '') return text;\n if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', text);\n\n var attributesFn =\n isFunction(attributes) ? attributes :\n isObject(attributes) ? function getAttributesObject() {return attributes;} :\n function getEmptyAttributesObject() {return {};};\n\n var match;\n var raw = text;\n var html = [];\n var url;\n var i;\n while ((match = raw.match(LINKY_URL_REGEXP))) {\n // We can not end in these as they are sometimes found at the end of the sentence\n url = match[0];\n // if we did not match ftp/http/www/mailto then assume mailto\n if (!match[2] && !match[4]) {\n url = (match[3] ? 'http://' : 'mailto:') + url;\n }\n i = match.index;\n addText(raw.substr(0, i));\n addLink(url, match[0].replace(MAILTO_REGEXP, ''));\n raw = raw.substring(i + match[0].length);\n }\n addText(raw);\n return $sanitize(html.join(''));\n\n function addText(text) {\n if (!text) {\n return;\n }\n html.push(sanitizeText(text));\n }\n\n function addLink(url, text) {\n var key, linkAttributes = attributesFn(url);\n html.push('');\n addText(text);\n html.push('');\n }\n };\n}]);\n\n\n})(window, window.angular);\n","require('./angular-sanitize');\nmodule.exports = 'ngSanitize';\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(true);\n// Module\nexports.push([module.id, \".embPanel__content[data-error], .embPanel__content[data-loading] {\\n pointer-events: all !important;\\n filter: none !important; }\\n\\n.kbn-radar {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n justify-content: space-around;\\n align-items: center;\\n overflow-x: hidden;\\n overflow-y: hidden; }\\n\", \"\",{\"version\":3,\"sources\":[\"index.scss\"],\"names\":[],\"mappings\":\"AAAA;EACE,8BAA8B;EAC9B,uBAAuB,EAAE;;AAE3B;EACE,WAAW;EACX,YAAY;EACZ,aAAa;EACb,mBAAmB;EACnB,eAAe;EACf,6BAA6B;EAC7B,mBAAmB;EACnB,kBAAkB;EAClB,kBAAkB,EAAE\",\"file\":\"index.scss\",\"sourcesContent\":[\".embPanel__content[data-error], .embPanel__content[data-loading] {\\n pointer-events: all !important;\\n filter: none !important; }\\n\\n.kbn-radar {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n justify-content: space-around;\\n align-items: center;\\n overflow-x: hidden;\\n overflow-y: hidden; }\\n\"]}]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(true);\n// Module\nexports.push([module.id, \".embPanel__content[data-error], .embPanel__content[data-loading] {\\n pointer-events: all !important;\\n filter: none !important; }\\n\\n.kbn-radar {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n justify-content: space-around;\\n align-items: center;\\n overflow-x: hidden;\\n overflow-y: hidden; }\\n\", \"\",{\"version\":3,\"sources\":[\"index.scss\"],\"names\":[],\"mappings\":\"AAAA;EACE,8BAA8B;EAC9B,uBAAuB,EAAE;;AAE3B;EACE,WAAW;EACX,YAAY;EACZ,aAAa;EACb,mBAAmB;EACnB,eAAe;EACf,6BAA6B;EAC7B,mBAAmB;EACnB,kBAAkB;EAClB,kBAAkB,EAAE\",\"file\":\"index.scss\",\"sourcesContent\":[\".embPanel__content[data-error], .embPanel__content[data-loading] {\\n pointer-events: all !important;\\n filter: none !important; }\\n\\n.kbn-radar {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n justify-content: space-around;\\n align-items: center;\\n overflow-x: hidden;\\n overflow-y: hidden; }\\n\"]}]);\n// Exports\nmodule.exports = exports;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && btoa) {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of