@grafana/plugin-ui 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -0
- package/dist/cjs/index.cjs +16178 -5188
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +387 -1
- package/dist/esm/_virtual/index.js +3 -5
- package/dist/esm/_virtual/index.js.map +1 -1
- package/dist/esm/async-query-data/DatasourceWithAsyncBackend.js +1 -1
- package/dist/esm/async-query-data/RunQueryButtons.js +5 -5
- package/dist/esm/async-query-data/RunQueryButtons.js.map +1 -1
- package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js +1 -1
- package/dist/esm/components/ConfigEditor/Auth/Auth.js +1 -1
- package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js +4 -4
- package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js +1 -1
- package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js +1 -1
- package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js +3 -3
- package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js +1 -1
- package/dist/esm/components/ConfigEditor/Auth/types.js +1 -1
- package/dist/esm/components/ConfigEditor/Auth/utils.js +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js +2 -2
- package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js +1 -1
- package/dist/esm/components/ConfigEditor/DataSourceDescription.js +1 -1
- package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js +1 -1
- package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js +2 -2
- package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js.map +1 -1
- package/dist/esm/components/DataLinks/DataLink.js +3 -3
- package/dist/esm/components/DataLinks/DataLink.js.map +1 -1
- package/dist/esm/components/DataLinks/DataLinks.js +1 -1
- package/dist/esm/components/DataSourcePicker/DataSourcePicker.js +2 -2
- package/dist/esm/components/DataSourcePicker/DataSourcePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +3 -3
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js +2 -2
- package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js.map +1 -1
- package/dist/esm/components/DebounceInput/DebounceInput.js +4 -4
- package/dist/esm/components/DebounceInput/DebounceInput.js.map +1 -1
- package/dist/esm/components/Plugins/PluginSignatureBadge.js +1 -1
- package/dist/esm/components/QueryEditor/AccessoryButton.js +1 -1
- package/dist/esm/components/QueryEditor/CatalogSelector.js +5 -5
- package/dist/esm/components/QueryEditor/CatalogSelector.js.map +1 -1
- package/dist/esm/components/QueryEditor/ConfirmModal.js +3 -3
- package/dist/esm/components/QueryEditor/ConfirmModal.js.map +1 -1
- package/dist/esm/components/QueryEditor/DatasetSelector.js +2 -2
- package/dist/esm/components/QueryEditor/DatasetSelector.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorField.js +1 -1
- package/dist/esm/components/QueryEditor/EditorFieldGroup.js +1 -1
- package/dist/esm/components/QueryEditor/EditorHeader.js +1 -1
- package/dist/esm/components/QueryEditor/EditorList.js +2 -2
- package/dist/esm/components/QueryEditor/EditorList.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorRow.js +1 -1
- package/dist/esm/components/QueryEditor/EditorRows.js +1 -1
- package/dist/esm/components/QueryEditor/EditorStack.js +1 -1
- package/dist/esm/components/QueryEditor/EditorSwitch.js +1 -1
- package/dist/esm/components/QueryEditor/FlexItem.js +1 -1
- package/dist/esm/components/QueryEditor/InlineSelect.js +2 -2
- package/dist/esm/components/QueryEditor/InlineSelect.js.map +1 -1
- package/dist/esm/components/QueryEditor/InputGroup.js +4 -4
- package/dist/esm/components/QueryEditor/InputGroup.js.map +1 -1
- package/dist/esm/components/QueryEditor/QueryEditor.js +6 -6
- package/dist/esm/components/QueryEditor/QueryEditor.js.map +1 -1
- package/dist/esm/components/QueryEditor/QueryHeader.js +4 -4
- package/dist/esm/components/QueryEditor/QueryHeader.js.map +1 -1
- package/dist/esm/components/QueryEditor/RunQueryButton.js +1 -1
- package/dist/esm/components/QueryEditor/Space.js +1 -1
- package/dist/esm/components/QueryEditor/TableSelector.js +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js +4 -4
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js.map +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js +3 -3
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js.map +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js +5 -5
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js.map +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js +3 -3
- package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js.map +1 -1
- package/dist/esm/components/QueryEditor/types.js +1 -1
- package/dist/esm/components/QueryEditor/utils/useSqlChange.js +2 -2
- package/dist/esm/components/QueryEditor/utils/useSqlChange.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js +2 -2
- package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js +5 -5
- package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js +5 -5
- package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js +6 -6
- package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js.map +1 -1
- package/dist/esm/components/QueryEditorRow/QueryEditorRow.js +1 -1
- package/dist/esm/components/SQLEditor/components/SQLEditor.js +6 -6
- package/dist/esm/components/SQLEditor/components/SQLEditor.js.map +1 -1
- package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js +4 -4
- package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js.map +1 -1
- package/dist/esm/components/Segment/Segment.js +4 -4
- package/dist/esm/components/Segment/Segment.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js +5 -5
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js +3 -3
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js +4 -4
- package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js +3 -3
- package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js +3 -3
- package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationList.js +2 -2
- package/dist/esm/components/VisualQueryBuilder/components/OperationList.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js +2 -2
- package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js +2 -2
- package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js +1 -1
- package/dist/esm/components/VisualQueryBuilder/types.js +1 -1
- package/dist/esm/hooks/useDebounce.js +3 -3
- package/dist/esm/hooks/useDebounce.js.map +1 -1
- package/dist/esm/index.d.ts +387 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/schema/registry/alertmanager.schema.json.js +77 -0
- package/dist/esm/schema/registry/alertmanager.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/cloudwatch.schema.json.js +384 -0
- package/dist/esm/schema/registry/cloudwatch.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/elasticsearch.schema.json.js +287 -0
- package/dist/esm/schema/registry/elasticsearch.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-amazonprometheus-datasource.schema.json.js +166 -0
- package/dist/esm/schema/registry/grafana-amazonprometheus-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-appdynamics-datasource.schema.json.js +145 -0
- package/dist/esm/schema/registry/grafana-appdynamics-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-astradb-datasource.schema.json.js +123 -0
- package/dist/esm/schema/registry/grafana-astradb-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-athena-datasource.schema.json.js +158 -0
- package/dist/esm/schema/registry/grafana-athena-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-azure-data-explorer-datasource.schema.json.js +204 -0
- package/dist/esm/schema/registry/grafana-azure-data-explorer-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-azure-monitor-datasource.schema.json.js +294 -0
- package/dist/esm/schema/registry/grafana-azure-monitor-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-azuredevops-datasource.schema.json.js +101 -0
- package/dist/esm/schema/registry/grafana-azuredevops-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-azureprometheus-datasource.schema.json.js +125 -0
- package/dist/esm/schema/registry/grafana-azureprometheus-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-bigquery-datasource.schema.json.js +508 -0
- package/dist/esm/schema/registry/grafana-bigquery-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-clickhouse-datasource.schema.json.js +1400 -0
- package/dist/esm/schema/registry/grafana-clickhouse-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-cockroachdb-datasource.schema.json.js +302 -0
- package/dist/esm/schema/registry/grafana-cockroachdb-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-databricks-datasource.schema.json.js +291 -0
- package/dist/esm/schema/registry/grafana-databricks-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-datadog-datasource.schema.json.js +155 -0
- package/dist/esm/schema/registry/grafana-datadog-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-dynatrace-datasource.schema.json.js +179 -0
- package/dist/esm/schema/registry/grafana-dynatrace-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-falconlogscale-datasource.schema.json.js +134 -0
- package/dist/esm/schema/registry/grafana-falconlogscale-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-github-datasource.schema.json.js +156 -0
- package/dist/esm/schema/registry/grafana-github-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-gitlab-datasource.schema.json.js +84 -0
- package/dist/esm/schema/registry/grafana-gitlab-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-googlesheets-datasource.schema.json.js +231 -0
- package/dist/esm/schema/registry/grafana-googlesheets-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-honeycomb-datasource.schema.json.js +87 -0
- package/dist/esm/schema/registry/grafana-honeycomb-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-iot-sitewise-datasource.schema.json.js +159 -0
- package/dist/esm/schema/registry/grafana-iot-sitewise-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-jira-datasource.schema.json.js +188 -0
- package/dist/esm/schema/registry/grafana-jira-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-looker-datasource.schema.json.js +82 -0
- package/dist/esm/schema/registry/grafana-looker-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-mongodb-datasource.schema.json.js +278 -0
- package/dist/esm/schema/registry/grafana-mongodb-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-mqtt-datasource.schema.json.js +168 -0
- package/dist/esm/schema/registry/grafana-mqtt-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-newrelic-datasource.schema.json.js +129 -0
- package/dist/esm/schema/registry/grafana-newrelic-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-odbc-datasource.schema.json.js +56 -0
- package/dist/esm/schema/registry/grafana-odbc-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-opensearch-datasource.schema.json.js +212 -0
- package/dist/esm/schema/registry/grafana-opensearch-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-oracle-datasource.schema.json.js +186 -0
- package/dist/esm/schema/registry/grafana-oracle-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-pagerduty-datasource.schema.json.js +85 -0
- package/dist/esm/schema/registry/grafana-pagerduty-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-postgresql-datasource.schema.json.js +411 -0
- package/dist/esm/schema/registry/grafana-postgresql-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-pyroscope-datasource.schema.json.js +41 -0
- package/dist/esm/schema/registry/grafana-pyroscope-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-redshift-datasource.schema.json.js +201 -0
- package/dist/esm/schema/registry/grafana-redshift-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-salesforce-datasource.schema.json.js +201 -0
- package/dist/esm/schema/registry/grafana-salesforce-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-saphana-datasource.schema.json.js +208 -0
- package/dist/esm/schema/registry/grafana-saphana-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-sentry-datasource.schema.json.js +94 -0
- package/dist/esm/schema/registry/grafana-sentry-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-servicenow-datasource.schema.json.js +179 -0
- package/dist/esm/schema/registry/grafana-servicenow-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-snowflake-datasource.schema.json.js +304 -0
- package/dist/esm/schema/registry/grafana-snowflake-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-splunk-datasource.schema.json.js +319 -0
- package/dist/esm/schema/registry/grafana-splunk-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-splunkobservability-datasource.schema.json.js +90 -0
- package/dist/esm/schema/registry/grafana-splunkobservability-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-strava-datasource.schema.json.js +74 -0
- package/dist/esm/schema/registry/grafana-strava-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-sumologic-datasource.schema.json.js +102 -0
- package/dist/esm/schema/registry/grafana-sumologic-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-surrealdb-datasource.schema.json.js +92 -0
- package/dist/esm/schema/registry/grafana-surrealdb-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-timestream-datasource.schema.json.js +145 -0
- package/dist/esm/schema/registry/grafana-timestream-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-wavefront-datasource.schema.json.js +80 -0
- package/dist/esm/schema/registry/grafana-wavefront-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-x-ray-datasource.schema.json.js +112 -0
- package/dist/esm/schema/registry/grafana-x-ray-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/grafana-yugabyte-datasource.schema.json.js +114 -0
- package/dist/esm/schema/registry/grafana-yugabyte-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/graphite.schema.json.js +104 -0
- package/dist/esm/schema/registry/graphite.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/index.js +27 -0
- package/dist/esm/schema/registry/index.js.map +1 -0
- package/dist/esm/schema/registry/influxdb.schema.json.js +717 -0
- package/dist/esm/schema/registry/influxdb.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/jaeger.schema.json.js +59 -0
- package/dist/esm/schema/registry/jaeger.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/loki.schema.json.js +545 -0
- package/dist/esm/schema/registry/loki.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/marcusolsson-csv-datasource.schema.json.js +45 -0
- package/dist/esm/schema/registry/marcusolsson-csv-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/marcusolsson-json-datasource.schema.json.js +36 -0
- package/dist/esm/schema/registry/marcusolsson-json-datasource.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/mssql.schema.json.js +292 -0
- package/dist/esm/schema/registry/mssql.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/mysql.schema.json.js +304 -0
- package/dist/esm/schema/registry/mysql.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/opentsdb.schema.json.js +113 -0
- package/dist/esm/schema/registry/opentsdb.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/prometheus.schema.json.js +783 -0
- package/dist/esm/schema/registry/prometheus.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/stackdriver.schema.json.js +224 -0
- package/dist/esm/schema/registry/stackdriver.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/staticRegistry.js +135 -0
- package/dist/esm/schema/registry/staticRegistry.js.map +1 -0
- package/dist/esm/schema/registry/tempo.schema.json.js +664 -0
- package/dist/esm/schema/registry/tempo.schema.json.js.map +1 -0
- package/dist/esm/schema/registry/zipkin.schema.json.js +40 -0
- package/dist/esm/schema/registry/zipkin.schema.json.js.map +1 -0
- package/package.json +12 -8
- package/dist/esm/_virtual/_commonjsHelpers.js +0 -6
- package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/esm/_virtual/index2.js +0 -6
- package/dist/esm/_virtual/index2.js.map +0 -1
- package/dist/esm/_virtual/index3.js +0 -4
- package/dist/esm/_virtual/index3.js.map +0 -1
- package/dist/esm/_virtual/react.development.js +0 -4
- package/dist/esm/_virtual/react.development.js.map +0 -1
- package/dist/esm/_virtual/react.production.min.js +0 -4
- package/dist/esm/_virtual/react.production.min.js.map +0 -1
- package/dist/esm/node_modules/react/cjs/react.development.js +0 -2752
- package/dist/esm/node_modules/react/cjs/react.development.js.map +0 -1
- package/dist/esm/node_modules/react/cjs/react.production.min.js +0 -39
- package/dist/esm/node_modules/react/cjs/react.production.min.js.map +0 -1
- package/dist/esm/node_modules/react/index.js +0 -20
- package/dist/esm/node_modules/react/index.js.map +0 -1
package/dist/cjs/index.d.cts
CHANGED
|
@@ -1295,4 +1295,390 @@ interface RequestLoopOptions<TQuery extends DataQuery$1 = DataQuery$1> {
|
|
|
1295
1295
|
*/
|
|
1296
1296
|
declare function getRequestLooper<T extends DataQuery$1 = DataQuery$1>(req: DataQueryRequest<T>, options: RequestLoopOptions<T>): Observable<DataQueryResponse>;
|
|
1297
1297
|
|
|
1298
|
-
|
|
1298
|
+
interface DatasourceConfigSchema {
|
|
1299
|
+
/**
|
|
1300
|
+
* Schema version (required)
|
|
1301
|
+
* Used for compatibility and migrations
|
|
1302
|
+
*
|
|
1303
|
+
* Example: "v2"
|
|
1304
|
+
*/
|
|
1305
|
+
schemaVersion: string;
|
|
1306
|
+
/**
|
|
1307
|
+
* Unique datasource plugin identifier
|
|
1308
|
+
* Example: "prometheus"
|
|
1309
|
+
*/
|
|
1310
|
+
pluginType: string;
|
|
1311
|
+
/**
|
|
1312
|
+
* Human-readable name
|
|
1313
|
+
*/
|
|
1314
|
+
pluginName: string;
|
|
1315
|
+
/**
|
|
1316
|
+
* Optional documentation URL
|
|
1317
|
+
*/
|
|
1318
|
+
docURL?: string;
|
|
1319
|
+
/**
|
|
1320
|
+
* Source of truth for configuration
|
|
1321
|
+
*/
|
|
1322
|
+
fields: ConfigField[];
|
|
1323
|
+
/**
|
|
1324
|
+
* Optional UI grouping
|
|
1325
|
+
*/
|
|
1326
|
+
groups?: ConfigGroup[];
|
|
1327
|
+
/**
|
|
1328
|
+
* Relationships between fields
|
|
1329
|
+
*/
|
|
1330
|
+
relationships?: FieldRelationship[];
|
|
1331
|
+
}
|
|
1332
|
+
interface ConfigField {
|
|
1333
|
+
/**
|
|
1334
|
+
* Globally unique identifier
|
|
1335
|
+
* Recommended format: dot-separated path
|
|
1336
|
+
* Example: "auth.method", "httpHeaders.item.key"
|
|
1337
|
+
*/
|
|
1338
|
+
id: string;
|
|
1339
|
+
/**
|
|
1340
|
+
* Local key used in storage or object
|
|
1341
|
+
*/
|
|
1342
|
+
key: string;
|
|
1343
|
+
/**
|
|
1344
|
+
* UI metadata
|
|
1345
|
+
*/
|
|
1346
|
+
label?: string;
|
|
1347
|
+
description?: string;
|
|
1348
|
+
docURL?: string;
|
|
1349
|
+
/**
|
|
1350
|
+
* Core type of the field
|
|
1351
|
+
*/
|
|
1352
|
+
valueType: ValueType;
|
|
1353
|
+
/**
|
|
1354
|
+
* Storage location (required for storage fields)
|
|
1355
|
+
*/
|
|
1356
|
+
target?: TargetLocation;
|
|
1357
|
+
/**
|
|
1358
|
+
* Dotted path prefix within the target for nested objects.
|
|
1359
|
+
* Example: for jsonData.tracesToLogs.datasourceUid,
|
|
1360
|
+
* target="jsonData", section="tracesToLogs", key="datasourceUid".
|
|
1361
|
+
*/
|
|
1362
|
+
section?: string;
|
|
1363
|
+
/**
|
|
1364
|
+
* Field kind.
|
|
1365
|
+
* @default "storage"
|
|
1366
|
+
*/
|
|
1367
|
+
kind?: FieldKind;
|
|
1368
|
+
/**
|
|
1369
|
+
* True if field belongs to array item schema
|
|
1370
|
+
*/
|
|
1371
|
+
isItemField?: boolean;
|
|
1372
|
+
/**
|
|
1373
|
+
* UI rendering hints
|
|
1374
|
+
*/
|
|
1375
|
+
ui?: FieldUI;
|
|
1376
|
+
/**
|
|
1377
|
+
* Validations rules
|
|
1378
|
+
*/
|
|
1379
|
+
validations?: FieldValidationRule[];
|
|
1380
|
+
/**
|
|
1381
|
+
* Visibility condition (CEL expression)
|
|
1382
|
+
*/
|
|
1383
|
+
dependsOn?: Expression;
|
|
1384
|
+
/**
|
|
1385
|
+
* Always required
|
|
1386
|
+
*/
|
|
1387
|
+
required?: boolean;
|
|
1388
|
+
/**
|
|
1389
|
+
* Conditionally required
|
|
1390
|
+
*/
|
|
1391
|
+
requiredWhen?: Expression;
|
|
1392
|
+
/**
|
|
1393
|
+
* Disabled condition
|
|
1394
|
+
*/
|
|
1395
|
+
disabledWhen?: Expression;
|
|
1396
|
+
/**
|
|
1397
|
+
* Dynamic overrides
|
|
1398
|
+
*/
|
|
1399
|
+
overrides?: FieldOverride[];
|
|
1400
|
+
/**
|
|
1401
|
+
* Declarative multi-field write side-effects.
|
|
1402
|
+
* When this field's value matches a condition, the listed target
|
|
1403
|
+
* fields are set to specified values. Typically used on virtual
|
|
1404
|
+
* selector fields (e.g. auth method dropdown).
|
|
1405
|
+
*/
|
|
1406
|
+
effects?: FieldEffect[];
|
|
1407
|
+
/**
|
|
1408
|
+
* Item schema for array elements or map values.
|
|
1409
|
+
* Required if valueType === "array" or "map".
|
|
1410
|
+
*/
|
|
1411
|
+
item?: FieldItemSchema;
|
|
1412
|
+
/**
|
|
1413
|
+
* Legacy indexed fields (deprecated)
|
|
1414
|
+
*/
|
|
1415
|
+
repeatable?: boolean;
|
|
1416
|
+
pattern?: string;
|
|
1417
|
+
/**
|
|
1418
|
+
* Storage mapping
|
|
1419
|
+
*/
|
|
1420
|
+
storage?: StorageMapping;
|
|
1421
|
+
/**
|
|
1422
|
+
* Metadata
|
|
1423
|
+
*/
|
|
1424
|
+
tags?: string[];
|
|
1425
|
+
examples?: unknown[];
|
|
1426
|
+
defaultValue?: unknown;
|
|
1427
|
+
}
|
|
1428
|
+
interface FieldItemSchema {
|
|
1429
|
+
/**
|
|
1430
|
+
* Type of array items or map values.
|
|
1431
|
+
* For arrays, describes each element.
|
|
1432
|
+
* For maps, describes each value (keys are always strings).
|
|
1433
|
+
*/
|
|
1434
|
+
valueType: ValueType;
|
|
1435
|
+
/**
|
|
1436
|
+
* Sub-fields for object items. Optional even when valueType = "object"
|
|
1437
|
+
* (omitting allows an unconstrained object).
|
|
1438
|
+
*/
|
|
1439
|
+
fields?: ConfigField[];
|
|
1440
|
+
}
|
|
1441
|
+
/**
|
|
1442
|
+
* CEL expression string
|
|
1443
|
+
*/
|
|
1444
|
+
type Expression = string;
|
|
1445
|
+
type ValueType = 'string' | 'number' | 'boolean' | 'array' | 'object' | 'map' | 'any';
|
|
1446
|
+
type FieldKind = 'storage' | 'virtual';
|
|
1447
|
+
type TargetLocation = 'root' | 'jsonData' | 'secureJsonData';
|
|
1448
|
+
type UIComponent = 'input' | 'textarea' | 'select' | 'multiselect' | 'radio' | 'checkbox' | 'switch' | 'code' | 'keyvalue' | 'list' | 'fileUpload';
|
|
1449
|
+
type UIWidth = 'full' | 'half';
|
|
1450
|
+
/**
|
|
1451
|
+
* UI configuration
|
|
1452
|
+
*/
|
|
1453
|
+
interface FieldUI {
|
|
1454
|
+
component: UIComponent;
|
|
1455
|
+
multiline?: boolean;
|
|
1456
|
+
rows?: number;
|
|
1457
|
+
options?: FieldOption[];
|
|
1458
|
+
allowCustom?: boolean;
|
|
1459
|
+
width?: UIWidth;
|
|
1460
|
+
placeholder?: string;
|
|
1461
|
+
/**
|
|
1462
|
+
* Language hint for code editor components.
|
|
1463
|
+
* Example: "promql", "logql", "traceql", "sql", "json"
|
|
1464
|
+
*/
|
|
1465
|
+
language?: string;
|
|
1466
|
+
/**
|
|
1467
|
+
* Layout row index for item fields inside object arrays.
|
|
1468
|
+
* Fields with the same row number are rendered horizontally.
|
|
1469
|
+
* Fields without a row number use auto-layout:
|
|
1470
|
+
* - ≤3 fields: all on one row
|
|
1471
|
+
* - >3 fields: each on its own row
|
|
1472
|
+
*/
|
|
1473
|
+
row?: number;
|
|
1474
|
+
/**
|
|
1475
|
+
* Accepted file types for fileUpload component.
|
|
1476
|
+
* Uses HTML accept attribute format with leading dot.
|
|
1477
|
+
* Example: [".json"]
|
|
1478
|
+
*/
|
|
1479
|
+
accept?: string[];
|
|
1480
|
+
/**
|
|
1481
|
+
* Maps keys in an uploaded JSON file to target field IDs.
|
|
1482
|
+
* Used by fileUpload to distribute parsed values to other form fields.
|
|
1483
|
+
* Example: { "private_key": "secureJsonData.privateKey", "client_email": "jsonData.clientEmail" }
|
|
1484
|
+
*/
|
|
1485
|
+
fileMapping?: Record<string, string>;
|
|
1486
|
+
}
|
|
1487
|
+
type FieldValidationRule = PatternValidationRule | RangeValidationRule | LengthValidationRule | ItemCountValidationRule | AllowedValuesValidationRule | CustomValidationRule;
|
|
1488
|
+
interface BaseValidationRule {
|
|
1489
|
+
/**
|
|
1490
|
+
* Optional stable ID for the validation rule.
|
|
1491
|
+
* Useful for docs, localization, and test snapshots.
|
|
1492
|
+
*/
|
|
1493
|
+
id?: string;
|
|
1494
|
+
/**
|
|
1495
|
+
* Human-readable validation error message.
|
|
1496
|
+
*/
|
|
1497
|
+
message?: string;
|
|
1498
|
+
}
|
|
1499
|
+
interface PatternValidationRule extends BaseValidationRule {
|
|
1500
|
+
type: 'pattern';
|
|
1501
|
+
pattern: string;
|
|
1502
|
+
}
|
|
1503
|
+
interface RangeValidationRule extends BaseValidationRule {
|
|
1504
|
+
type: 'range';
|
|
1505
|
+
min?: number;
|
|
1506
|
+
max?: number;
|
|
1507
|
+
}
|
|
1508
|
+
interface LengthValidationRule extends BaseValidationRule {
|
|
1509
|
+
type: 'length';
|
|
1510
|
+
min?: number;
|
|
1511
|
+
max?: number;
|
|
1512
|
+
}
|
|
1513
|
+
interface ItemCountValidationRule extends BaseValidationRule {
|
|
1514
|
+
type: 'itemCount';
|
|
1515
|
+
min?: number;
|
|
1516
|
+
max?: number;
|
|
1517
|
+
}
|
|
1518
|
+
interface AllowedValuesValidationRule extends BaseValidationRule {
|
|
1519
|
+
type: 'allowedValues';
|
|
1520
|
+
values: unknown[];
|
|
1521
|
+
}
|
|
1522
|
+
interface CustomValidationRule extends BaseValidationRule {
|
|
1523
|
+
type: 'custom';
|
|
1524
|
+
/**
|
|
1525
|
+
* CEL expression.
|
|
1526
|
+
*
|
|
1527
|
+
* Should evaluate to true when the field value is valid.
|
|
1528
|
+
*/
|
|
1529
|
+
expression: Expression;
|
|
1530
|
+
}
|
|
1531
|
+
interface FieldOverride {
|
|
1532
|
+
/**
|
|
1533
|
+
* CEL condition
|
|
1534
|
+
*/
|
|
1535
|
+
when: Expression;
|
|
1536
|
+
defaultValue?: unknown;
|
|
1537
|
+
/**
|
|
1538
|
+
* When true, the field is disabled/read-only while this override is active.
|
|
1539
|
+
*/
|
|
1540
|
+
readOnly?: boolean;
|
|
1541
|
+
description?: string;
|
|
1542
|
+
placeholder?: string;
|
|
1543
|
+
tooltip?: string;
|
|
1544
|
+
validations?: FieldValidationRule[];
|
|
1545
|
+
options?: FieldOption[];
|
|
1546
|
+
/**
|
|
1547
|
+
* When present on an `isItemField` field, the value is routed to
|
|
1548
|
+
* `secureJsonData` under the resolved key instead of being stored
|
|
1549
|
+
* inline in the parent array.
|
|
1550
|
+
*
|
|
1551
|
+
* The template string supports placeholders:
|
|
1552
|
+
* - `{index}` — 0-based array position
|
|
1553
|
+
* - `{index1}` — 1-based array position
|
|
1554
|
+
* - `{item.KEY}` — value of sibling item field `KEY`
|
|
1555
|
+
*
|
|
1556
|
+
* Examples:
|
|
1557
|
+
* - `"secureHttpHeaders.{item.name}"` (ClickHouse)
|
|
1558
|
+
* - `"httpHeaderValue{index1}"` (Grafana core headers)
|
|
1559
|
+
*/
|
|
1560
|
+
secureKey?: string;
|
|
1561
|
+
}
|
|
1562
|
+
/**
|
|
1563
|
+
* Declares that when a field's value matches a condition,
|
|
1564
|
+
* listed target fields should be set to specified values.
|
|
1565
|
+
*
|
|
1566
|
+
* Use "value" in the `when` expression to refer to the field's value.
|
|
1567
|
+
*/
|
|
1568
|
+
interface FieldEffect {
|
|
1569
|
+
/**
|
|
1570
|
+
* CEL expression. Example: "value == 'basic-auth'"
|
|
1571
|
+
*/
|
|
1572
|
+
when: Expression;
|
|
1573
|
+
/**
|
|
1574
|
+
* Maps field IDs to the values they should be set to.
|
|
1575
|
+
* Must contain at least one entry.
|
|
1576
|
+
*/
|
|
1577
|
+
set: Record<string, unknown> & {
|
|
1578
|
+
[k: string]: unknown;
|
|
1579
|
+
};
|
|
1580
|
+
}
|
|
1581
|
+
type StorageMapping = DirectMapping | IndexedPairMapping | ComputedMapping;
|
|
1582
|
+
/**
|
|
1583
|
+
* Direct mapping
|
|
1584
|
+
*/
|
|
1585
|
+
interface DirectMapping {
|
|
1586
|
+
type: 'direct';
|
|
1587
|
+
}
|
|
1588
|
+
/**
|
|
1589
|
+
* Indexed pair mapping (headers)
|
|
1590
|
+
*/
|
|
1591
|
+
interface IndexedPairMapping {
|
|
1592
|
+
type: 'indexedPair';
|
|
1593
|
+
key: MappingField;
|
|
1594
|
+
value: MappingField;
|
|
1595
|
+
startIndex?: number;
|
|
1596
|
+
}
|
|
1597
|
+
/**
|
|
1598
|
+
* Computed mapping (virtual fields).
|
|
1599
|
+
* At least one of `read` or `write` must be provided.
|
|
1600
|
+
*/
|
|
1601
|
+
type ComputedMapping = {
|
|
1602
|
+
type: 'computed';
|
|
1603
|
+
read: Expression;
|
|
1604
|
+
write?: Expression;
|
|
1605
|
+
} | {
|
|
1606
|
+
type: 'computed';
|
|
1607
|
+
read?: Expression;
|
|
1608
|
+
write: Expression;
|
|
1609
|
+
};
|
|
1610
|
+
/**
|
|
1611
|
+
* Mapping field
|
|
1612
|
+
*/
|
|
1613
|
+
interface MappingField {
|
|
1614
|
+
target: TargetLocation;
|
|
1615
|
+
pattern: string;
|
|
1616
|
+
}
|
|
1617
|
+
interface FieldOption {
|
|
1618
|
+
label: string;
|
|
1619
|
+
/**
|
|
1620
|
+
* Must match parent field valueType.
|
|
1621
|
+
* Must not be null.
|
|
1622
|
+
*/
|
|
1623
|
+
value: NonNullable<unknown>;
|
|
1624
|
+
/**
|
|
1625
|
+
* Optional human-readable description of the option.
|
|
1626
|
+
*/
|
|
1627
|
+
description?: string;
|
|
1628
|
+
}
|
|
1629
|
+
interface ConfigGroup {
|
|
1630
|
+
id: string;
|
|
1631
|
+
title: string;
|
|
1632
|
+
description?: string;
|
|
1633
|
+
order?: number;
|
|
1634
|
+
/**
|
|
1635
|
+
* When true, the group is optional and can be collapsed/hidden by default.
|
|
1636
|
+
*/
|
|
1637
|
+
optional?: boolean;
|
|
1638
|
+
/**
|
|
1639
|
+
* References field IDs (not keys)
|
|
1640
|
+
*/
|
|
1641
|
+
fieldRefs: string[];
|
|
1642
|
+
}
|
|
1643
|
+
type RelationshipType = 'pair' | 'group' | 'datasourceReference';
|
|
1644
|
+
interface FieldRelationship {
|
|
1645
|
+
type: RelationshipType;
|
|
1646
|
+
/**
|
|
1647
|
+
* References field IDs
|
|
1648
|
+
*/
|
|
1649
|
+
fields: string[];
|
|
1650
|
+
description?: string;
|
|
1651
|
+
/**
|
|
1652
|
+
* Constrains the datasource UID to a specific plugin type.
|
|
1653
|
+
* Only applicable when type is "datasourceReference".
|
|
1654
|
+
*/
|
|
1655
|
+
targetPluginType?: string;
|
|
1656
|
+
}
|
|
1657
|
+
type SecureFieldState = {
|
|
1658
|
+
type: 'unset';
|
|
1659
|
+
} | {
|
|
1660
|
+
type: 'configured';
|
|
1661
|
+
} | {
|
|
1662
|
+
type: 'updated';
|
|
1663
|
+
value: string;
|
|
1664
|
+
};
|
|
1665
|
+
interface FormState {
|
|
1666
|
+
values: Record<string, unknown>;
|
|
1667
|
+
secure: Record<string, SecureFieldState>;
|
|
1668
|
+
}
|
|
1669
|
+
|
|
1670
|
+
/**
|
|
1671
|
+
* Bundled datasource config schemas, used as a fallback when a schema cannot be
|
|
1672
|
+
* fetched from the Grafana plugins CDN (for example, when the CDN returns 404).
|
|
1673
|
+
*/
|
|
1674
|
+
declare const staticSchemaRegistry: Map<string, DatasourceConfigSchema>;
|
|
1675
|
+
/**
|
|
1676
|
+
* Returns the bundled fallback schema for a plugin type, or `null` if none is
|
|
1677
|
+
* bundled.
|
|
1678
|
+
*/
|
|
1679
|
+
declare function getStaticConfigSchema(pluginType: string): DatasourceConfigSchema | null;
|
|
1680
|
+
|
|
1681
|
+
declare function getConfigSchemaUrl(pluginType: string): string;
|
|
1682
|
+
declare function getConfigSchema(pluginType: string): Promise<DatasourceConfigSchema | null>;
|
|
1683
|
+
|
|
1684
|
+
export { AccessoryButton, AdvancedHttpSettings, type Aggregate, type AllowedValuesValidationRule, Auth, AuthMethod, type Props$c as AuthProps, BINARY_OPERATIONS_KEY, type BaseValidationRule, CatalogSelector, type ColumnDefinition, CompletionItemInsertTextRule, CompletionItemKind, CompletionItemPriority, type ComputedMapping, ConfigDescriptionLink, type ConfigField, type ConfigGroup, ConfigSection, ConfigSubSection, ConnectionSettings, CustomHeadersSettings, type CustomMeta, type CustomValidationRule, type DB, DataLink, type DataLinkConfig, DataLinks, DataSourceDescription, DataSourcePicker, DatasetSelector, type DatasourceConfigSchema, DatasourceWithAsyncBackend, DatePicker, type DatePickerProps, DatePickerWithInput, type DatePickerWithInputProps, DebounceInput, type DebounceInputProps, type DirectMapping, EditorField, EditorFieldGroup, EditorHeader, EditorList, EditorMode, EditorRow, EditorRows, EditorStack, EditorSwitch, type Expression, type FieldEffect, type FieldItemSchema, type FieldKind, type FieldOption, type FieldOverride, type FieldRelationship, type FieldUI, type FieldValidationRule, FlexItem, type FormState, GroupByRow, type IndexedPairMapping, InlineSelect, InputGroup, type ItemCountValidationRule, LabelFilters, type LanguageCompletionProvider, type LanguageDefinition, type LengthValidationRule, LinkedToken, MacroType, type MappingField, type MetaDefinition, type NameValue, OperationExplainedBox, OperationList, OperationListExplained, OperationsEditorRow, OperatorType, type PatternValidationRule, type PositionContext, type Props$s as Props, QUERY_FORMAT_OPTIONS, QueryBuilderHints, type QueryBuilderLabelFilter, type QueryBuilderOperation, type QueryBuilderOperationDefinition, type QueryBuilderOperationParamDef, type QueryBuilderOperationParamEditorProps, type QueryBuilderOperationParamValue, QueryEditorMode, QueryEditorModeToggle, type QueryEditorProps, QueryEditorRow, QueryFormat, QueryHeaderSwitch, QueryModellerBase, QueryOptionGroup, type QueryRowFilter, type QueryStats, type QueryWithDefaults, type RAQBFieldTypes, type RangeValidationRule, RawQuery, type RelationshipType, type RequestLoopOptions, type ResourceSelectorProps, type ResponseParser, RunQueryButton, RunQueryButtons, type RunQueryButtonsProps, type RunningQueryInfo, type SQLConnectionLimits, SQLEditor, SQLEditorMode, SQLEditorTestUtils, type SQLExpression, type SQLFilters, type SQLMonarchLanguage, type SQLOptions, type SQLQuery, type SQLSelectableValue, type SchemaDefinition, type SecureFieldState, SecureSocksProxyToggle, Segment, type SegmentProps, Space, SqlDatasource, SqlQueryEditor, type SqlQueryForInterpolation, type SqlQueryModel, type State$1 as State, type StatementPlacementProvider, StatementPosition, type StorageMapping, SuggestionKind, type SuggestionKindProvider, TLSSettings, type Props$f as TLSSettingsProps, type TableDefinition, type TableFieldSchema, type TableIdentifier, type TableSchema, TableSelector, type TargetLocation, type TestQueryModel, TokenType, type UIComponent, type UIWidth, type ValidationResults, type ValueType, type VisualQuery, type VisualQueryBinary, type VisualQueryModeller, convertLegacyAuthProps, formatDate, getConfigSchema, getConfigSchemaUrl, getRequestLooper, getStandardSQLCompletionProvider, getStaticConfigSchema, language as grafanaStandardSQLLanguage, conf as grafanaStandardSQLLanguageConf, staticSchemaRegistry, toOption };
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { __require as requireReact } from '../node_modules/react/index.js';
|
|
1
|
+
import { __require as requireSemver } from '../node_modules/semver/index.js';
|
|
3
2
|
|
|
4
|
-
var
|
|
5
|
-
var React = /*@__PURE__*/getDefaultExportFromCjs(reactExports);
|
|
3
|
+
var semverExports = requireSemver();
|
|
6
4
|
|
|
7
|
-
export {
|
|
5
|
+
export { semverExports as s };
|
|
8
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DataSourceWithBackend, config, getBackendSrv, toDataQueryResponse } from '@grafana/runtime';
|
|
2
|
-
import { s as semverExports } from '../_virtual/
|
|
2
|
+
import { s as semverExports } from '../_virtual/index.js';
|
|
3
3
|
import { getRequestLooper } from './requestLooper.js';
|
|
4
4
|
import { of } from '../node_modules/rxjs/dist/esm5/internal/observable/of.js';
|
|
5
5
|
import { merge } from '../node_modules/rxjs/dist/esm5/internal/observable/merge.js';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
2
|
import { Button } from '@grafana/ui';
|
|
3
3
|
import { LoadingState } from '@grafana/data';
|
|
4
4
|
|
|
5
5
|
const RunQueryButtons = (props) => {
|
|
6
6
|
const { state } = props;
|
|
7
|
-
const [running, setRunning] =
|
|
8
|
-
const [stopping, setStopping] =
|
|
9
|
-
const [prevState, setPrevState] =
|
|
10
|
-
const [lastQuery, setLastQuery] =
|
|
7
|
+
const [running, setRunning] = useState(false);
|
|
8
|
+
const [stopping, setStopping] = useState(false);
|
|
9
|
+
const [prevState, setPrevState] = useState(state);
|
|
10
|
+
const [lastQuery, setLastQuery] = useState(props.query);
|
|
11
11
|
if (state !== prevState) {
|
|
12
12
|
setPrevState(state);
|
|
13
13
|
if (state && state !== LoadingState.Loading) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunQueryButtons.js","sources":["../../../src/async-query-data/RunQueryButtons.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Button } from '@grafana/ui';\nimport { type DataQuery, LoadingState } from '@grafana/data';\n\nexport interface RunQueryButtonsProps<TQuery extends DataQuery> {\n enableRun?: boolean;\n onRunQuery: () => void;\n onCancelQuery: (query: TQuery) => void;\n query: TQuery;\n state?: LoadingState;\n}\n\nexport const RunQueryButtons = <TQuery extends DataQuery>(props: RunQueryButtonsProps<TQuery>) => {\n const { state } = props;\n const [running, setRunning] = useState(false);\n const [stopping, setStopping] = useState(false);\n const [prevState, setPrevState] = useState(state);\n const [lastQuery, setLastQuery] = useState(props.query);\n\n if (state !== prevState) {\n setPrevState(state);\n if (state && state !== LoadingState.Loading) {\n setRunning(false);\n setStopping(false);\n }\n }\n\n const onRunQuery = () => {\n setRunning(true);\n setLastQuery(props.query);\n props.onRunQuery();\n };\n\n const onCancelQuery = props.onCancelQuery\n ? () => {\n props.onCancelQuery?.(lastQuery);\n setStopping(true);\n }\n : undefined;\n\n return (\n <>\n <Button\n variant={props.enableRun ? 'primary' : 'secondary'}\n size=\"sm\"\n onClick={onRunQuery}\n icon={running && !stopping ? 'fa fa-spinner' : undefined}\n disabled={state === LoadingState.Loading || !props.enableRun}\n >\n Run query\n </Button>\n <Button\n variant={running && !stopping ? 'primary' : 'secondary'}\n size=\"sm\"\n disabled={!running || stopping}\n icon={stopping ? 'fa fa-spinner' : undefined}\n onClick={onCancelQuery}\n >\n Stop query\n </Button>\n </>\n );\n};\n"],"names":[
|
|
1
|
+
{"version":3,"file":"RunQueryButtons.js","sources":["../../../src/async-query-data/RunQueryButtons.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Button } from '@grafana/ui';\nimport { type DataQuery, LoadingState } from '@grafana/data';\n\nexport interface RunQueryButtonsProps<TQuery extends DataQuery> {\n enableRun?: boolean;\n onRunQuery: () => void;\n onCancelQuery: (query: TQuery) => void;\n query: TQuery;\n state?: LoadingState;\n}\n\nexport const RunQueryButtons = <TQuery extends DataQuery>(props: RunQueryButtonsProps<TQuery>) => {\n const { state } = props;\n const [running, setRunning] = useState(false);\n const [stopping, setStopping] = useState(false);\n const [prevState, setPrevState] = useState(state);\n const [lastQuery, setLastQuery] = useState(props.query);\n\n if (state !== prevState) {\n setPrevState(state);\n if (state && state !== LoadingState.Loading) {\n setRunning(false);\n setStopping(false);\n }\n }\n\n const onRunQuery = () => {\n setRunning(true);\n setLastQuery(props.query);\n props.onRunQuery();\n };\n\n const onCancelQuery = props.onCancelQuery\n ? () => {\n props.onCancelQuery?.(lastQuery);\n setStopping(true);\n }\n : undefined;\n\n return (\n <>\n <Button\n variant={props.enableRun ? 'primary' : 'secondary'}\n size=\"sm\"\n onClick={onRunQuery}\n icon={running && !stopping ? 'fa fa-spinner' : undefined}\n disabled={state === LoadingState.Loading || !props.enableRun}\n >\n Run query\n </Button>\n <Button\n variant={running && !stopping ? 'primary' : 'secondary'}\n size=\"sm\"\n disabled={!running || stopping}\n icon={stopping ? 'fa fa-spinner' : undefined}\n onClick={onCancelQuery}\n >\n Stop query\n </Button>\n </>\n );\n};\n"],"names":[],"mappings":";;;;AAYa,MAAA,eAAA,GAAkB,CAA2B,KAAwC,KAAA;AAChG,EAAM,MAAA,EAAE,OAAU,GAAA,KAAA;AAClB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,SAAW,EAAA,YAAY,CAAI,GAAA,QAAA,CAAS,MAAM,KAAK,CAAA;AAEtD,EAAA,IAAI,UAAU,SAAW,EAAA;AACvB,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAI,IAAA,KAAA,IAAS,KAAU,KAAA,YAAA,CAAa,OAAS,EAAA;AAC3C,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,WAAA,CAAY,KAAK,CAAA;AAAA;AACnB;AAGF,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,YAAA,CAAa,MAAM,KAAK,CAAA;AACxB,IAAA,KAAA,CAAM,UAAW,EAAA;AAAA,GACnB;AAEA,EAAM,MAAA,aAAA,GAAgB,KAAM,CAAA,aAAA,GACxB,MAAM;AAlCZ,IAAA,IAAA,EAAA;AAmCQ,IAAA,CAAA,EAAA,GAAA,KAAA,CAAM,kBAAN,IAAsB,GAAA,SAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAA,SAAA,CAAA;AACtB,IAAA,WAAA,CAAY,IAAI,CAAA;AAAA,GAElB,GAAA,SAAA;AAEJ,EAAA,uBAEI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,KAAM,CAAA,SAAA,GAAY,SAAY,GAAA,WAAA;AAAA,MACvC,IAAK,EAAA,IAAA;AAAA,MACL,OAAS,EAAA,UAAA;AAAA,MACT,IAAM,EAAA,OAAA,IAAW,CAAC,QAAA,GAAW,eAAkB,GAAA,SAAA;AAAA,MAC/C,QAAU,EAAA,KAAA,KAAU,YAAa,CAAA,OAAA,IAAW,CAAC,KAAM,CAAA;AAAA,KAAA;AAAA,IACpD;AAAA,GAGD,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA,OAAA,IAAW,CAAC,QAAA,GAAW,SAAY,GAAA,WAAA;AAAA,MAC5C,IAAK,EAAA,IAAA;AAAA,MACL,QAAA,EAAU,CAAC,OAAW,IAAA,QAAA;AAAA,MACtB,IAAA,EAAM,WAAW,eAAkB,GAAA,SAAA;AAAA,MACnC,OAAS,EAAA;AAAA,KAAA;AAAA,IACV;AAAA,GAGH,CAAA;AAEJ;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { useState, useMemo } from 'react';
|
|
2
2
|
import { css } from '@emotion/css';
|
|
3
3
|
import { useTheme2, Field, Select } from '@grafana/ui';
|
|
4
4
|
import '@grafana/data';
|
|
@@ -39,9 +39,9 @@ const AuthMethodSettings = ({
|
|
|
39
39
|
readOnly
|
|
40
40
|
}) => {
|
|
41
41
|
var _a, _b, _c, _d;
|
|
42
|
-
const [authMethodChanged, setAuthMethodChanged] =
|
|
42
|
+
const [authMethodChanged, setAuthMethodChanged] = useState(false);
|
|
43
43
|
const { colors, spacing } = useTheme2();
|
|
44
|
-
const visibleMethods =
|
|
44
|
+
const visibleMethods = useMemo(
|
|
45
45
|
() => {
|
|
46
46
|
var _a2;
|
|
47
47
|
return visibleMethodsFromProps != null ? visibleMethodsFromProps : [
|
|
@@ -54,7 +54,7 @@ const AuthMethodSettings = ({
|
|
|
54
54
|
[customMethods, visibleMethodsFromProps]
|
|
55
55
|
);
|
|
56
56
|
const hasSelect = visibleMethods.length > 1;
|
|
57
|
-
const preparedOptions =
|
|
57
|
+
const preparedOptions = useMemo(() => {
|
|
58
58
|
var _a2;
|
|
59
59
|
const customOptions = (_a2 = customMethods == null ? undefined : customMethods.reduce((acc, method) => {
|
|
60
60
|
acc[method.id] = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthMethodSettings.js","sources":["../../../../../../src/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.tsx"],"sourcesContent":["import React, { type ReactElement, useMemo, useState } from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2, Select, Field } from '@grafana/ui';\nimport { type SelectableValue } from '@grafana/data';\nimport { BasicAuth, type Props as BasicAuthProps } from './BasicAuth';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport { AuthMethod, type CustomMethod, type CustomMethodId, type AuthMethodSelectOption } from '../types';\n\nconst defaultOptions: Record<AuthMethod, SelectableValue<AuthMethod>> = {\n [AuthMethod.BasicAuth]: {\n label: 'Basic authentication',\n value: AuthMethod.BasicAuth,\n description: 'Authenticate with your data source username and password',\n },\n [AuthMethod.CrossSiteCredentials]: {\n label: 'Enable cross-site access control requests',\n value: AuthMethod.CrossSiteCredentials,\n description:\n 'Allow cross-site Access-Control requests with your existing credentials and cookies. This enables the server to authenticate the user and perform authorized requests on their behalf on other domains.',\n },\n [AuthMethod.OAuthForward]: {\n label: 'Forward OAuth Identity',\n value: AuthMethod.OAuthForward,\n description:\n 'Forward the OAuth access token (and if available: the OIDC ID token) of the user querying to the data source',\n },\n [AuthMethod.NoAuth]: {\n label: 'No Authentication',\n value: AuthMethod.NoAuth,\n description: 'Data source is available without authentication',\n },\n};\n\nexport type Props = {\n selectedMethod: AuthMethod | CustomMethodId;\n mostCommonMethod?: AuthMethod | CustomMethodId;\n visibleMethods?: Array<AuthMethod | CustomMethodId>;\n defaultOptionsOverrides?: Partial<Record<AuthMethod, AuthMethodSelectOption>>;\n customMethods?: CustomMethod[];\n onAuthMethodSelect: (authType: AuthMethod | CustomMethodId) => void;\n basicAuth?: Omit<BasicAuthProps, 'readOnly'>;\n readOnly: boolean;\n};\n\nexport const AuthMethodSettings = ({\n selectedMethod,\n mostCommonMethod,\n visibleMethods: visibleMethodsFromProps,\n defaultOptionsOverrides,\n customMethods,\n onAuthMethodSelect,\n basicAuth,\n readOnly,\n}: Props) => {\n const [authMethodChanged, setAuthMethodChanged] = useState(false);\n const { colors, spacing } = useTheme2();\n const visibleMethods: Array<AuthMethod | CustomMethodId> = useMemo(\n () =>\n visibleMethodsFromProps ?? [\n AuthMethod.BasicAuth,\n AuthMethod.OAuthForward,\n AuthMethod.NoAuth,\n ...(customMethods?.map((m) => m.id) ?? []),\n ],\n [customMethods, visibleMethodsFromProps]\n );\n const hasSelect = visibleMethods.length > 1;\n\n const preparedOptions = useMemo(() => {\n const customOptions =\n customMethods?.reduce<Record<CustomMethodId, SelectableValue<CustomMethodId>>>((acc, method) => {\n acc[method.id] = {\n label: method.label,\n value: method.id,\n description: method.description,\n };\n return acc;\n }, {}) ?? {};\n\n const preparedDefaultOptions = {} as Record<AuthMethod, SelectableValue<AuthMethod>>;\n let k: keyof typeof AuthMethod;\n for (k in defaultOptions) {\n preparedDefaultOptions[k] = {\n ...defaultOptions[k],\n ...defaultOptionsOverrides?.[k],\n };\n }\n\n const allOptions: Record<AuthMethod | CustomMethodId, SelectableValue<AuthMethod | CustomMethodId>> = {\n ...customOptions,\n ...preparedDefaultOptions,\n };\n\n return visibleMethods\n .filter((method) => Boolean(allOptions[method]))\n .map((method) => {\n const option = allOptions[method];\n if (method === mostCommonMethod && hasSelect) {\n return {\n ...option,\n label: `${option.label} (most common)`,\n };\n }\n return option;\n });\n }, [visibleMethods, customMethods, defaultOptionsOverrides, mostCommonMethod, hasSelect]);\n\n let selected = selectedMethod;\n if (!hasSelect) {\n selected = visibleMethods[0];\n } else if (selectedMethod === AuthMethod.NoAuth && mostCommonMethod && !authMethodChanged) {\n selected = mostCommonMethod;\n }\n\n let AuthFieldsComponent: ReactElement | null = null;\n if (selected === AuthMethod.BasicAuth && basicAuth) {\n AuthFieldsComponent = <BasicAuth {...basicAuth} readOnly={readOnly} />;\n } else if (selected.startsWith('custom-')) {\n AuthFieldsComponent = customMethods?.find((m) => m.id === selected)?.component ?? null;\n }\n\n const title = hasSelect ? 'Authentication methods' : (preparedOptions[0].label ?? '');\n\n const description = hasSelect\n ? 'Choose an authentication method to access the data source'\n : (preparedOptions[0].description ?? '');\n\n const styles = {\n authMethods: css({\n marginTop: spacing(2.5),\n ...(hasSelect && {\n padding: spacing(2),\n border: `1px solid ${colors.border.weak}`,\n }),\n }),\n selectedMethodFields: css({\n marginTop: spacing(1.5),\n }),\n };\n\n return (\n <ConfigSubSection title={title} description={description}>\n <div className={styles.authMethods}>\n {hasSelect && (\n <Field label=\"Authentication method\">\n <Select\n inputId=\"auth-method-select\"\n options={preparedOptions}\n value={selected}\n onChange={(option) => {\n setAuthMethodChanged(true);\n onAuthMethodSelect(option.value!);\n }}\n disabled={readOnly}\n />\n </Field>\n )}\n {AuthFieldsComponent && <div className={styles.selectedMethodFields}>{AuthFieldsComponent}</div>}\n </div>\n </ConfigSubSection>\n );\n};\n"],"names":["useState","useMemo","_a"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AuthMethodSettings.js","sources":["../../../../../../src/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.tsx"],"sourcesContent":["import React, { type ReactElement, useMemo, useState } from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2, Select, Field } from '@grafana/ui';\nimport { type SelectableValue } from '@grafana/data';\nimport { BasicAuth, type Props as BasicAuthProps } from './BasicAuth';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport { AuthMethod, type CustomMethod, type CustomMethodId, type AuthMethodSelectOption } from '../types';\n\nconst defaultOptions: Record<AuthMethod, SelectableValue<AuthMethod>> = {\n [AuthMethod.BasicAuth]: {\n label: 'Basic authentication',\n value: AuthMethod.BasicAuth,\n description: 'Authenticate with your data source username and password',\n },\n [AuthMethod.CrossSiteCredentials]: {\n label: 'Enable cross-site access control requests',\n value: AuthMethod.CrossSiteCredentials,\n description:\n 'Allow cross-site Access-Control requests with your existing credentials and cookies. This enables the server to authenticate the user and perform authorized requests on their behalf on other domains.',\n },\n [AuthMethod.OAuthForward]: {\n label: 'Forward OAuth Identity',\n value: AuthMethod.OAuthForward,\n description:\n 'Forward the OAuth access token (and if available: the OIDC ID token) of the user querying to the data source',\n },\n [AuthMethod.NoAuth]: {\n label: 'No Authentication',\n value: AuthMethod.NoAuth,\n description: 'Data source is available without authentication',\n },\n};\n\nexport type Props = {\n selectedMethod: AuthMethod | CustomMethodId;\n mostCommonMethod?: AuthMethod | CustomMethodId;\n visibleMethods?: Array<AuthMethod | CustomMethodId>;\n defaultOptionsOverrides?: Partial<Record<AuthMethod, AuthMethodSelectOption>>;\n customMethods?: CustomMethod[];\n onAuthMethodSelect: (authType: AuthMethod | CustomMethodId) => void;\n basicAuth?: Omit<BasicAuthProps, 'readOnly'>;\n readOnly: boolean;\n};\n\nexport const AuthMethodSettings = ({\n selectedMethod,\n mostCommonMethod,\n visibleMethods: visibleMethodsFromProps,\n defaultOptionsOverrides,\n customMethods,\n onAuthMethodSelect,\n basicAuth,\n readOnly,\n}: Props) => {\n const [authMethodChanged, setAuthMethodChanged] = useState(false);\n const { colors, spacing } = useTheme2();\n const visibleMethods: Array<AuthMethod | CustomMethodId> = useMemo(\n () =>\n visibleMethodsFromProps ?? [\n AuthMethod.BasicAuth,\n AuthMethod.OAuthForward,\n AuthMethod.NoAuth,\n ...(customMethods?.map((m) => m.id) ?? []),\n ],\n [customMethods, visibleMethodsFromProps]\n );\n const hasSelect = visibleMethods.length > 1;\n\n const preparedOptions = useMemo(() => {\n const customOptions =\n customMethods?.reduce<Record<CustomMethodId, SelectableValue<CustomMethodId>>>((acc, method) => {\n acc[method.id] = {\n label: method.label,\n value: method.id,\n description: method.description,\n };\n return acc;\n }, {}) ?? {};\n\n const preparedDefaultOptions = {} as Record<AuthMethod, SelectableValue<AuthMethod>>;\n let k: keyof typeof AuthMethod;\n for (k in defaultOptions) {\n preparedDefaultOptions[k] = {\n ...defaultOptions[k],\n ...defaultOptionsOverrides?.[k],\n };\n }\n\n const allOptions: Record<AuthMethod | CustomMethodId, SelectableValue<AuthMethod | CustomMethodId>> = {\n ...customOptions,\n ...preparedDefaultOptions,\n };\n\n return visibleMethods\n .filter((method) => Boolean(allOptions[method]))\n .map((method) => {\n const option = allOptions[method];\n if (method === mostCommonMethod && hasSelect) {\n return {\n ...option,\n label: `${option.label} (most common)`,\n };\n }\n return option;\n });\n }, [visibleMethods, customMethods, defaultOptionsOverrides, mostCommonMethod, hasSelect]);\n\n let selected = selectedMethod;\n if (!hasSelect) {\n selected = visibleMethods[0];\n } else if (selectedMethod === AuthMethod.NoAuth && mostCommonMethod && !authMethodChanged) {\n selected = mostCommonMethod;\n }\n\n let AuthFieldsComponent: ReactElement | null = null;\n if (selected === AuthMethod.BasicAuth && basicAuth) {\n AuthFieldsComponent = <BasicAuth {...basicAuth} readOnly={readOnly} />;\n } else if (selected.startsWith('custom-')) {\n AuthFieldsComponent = customMethods?.find((m) => m.id === selected)?.component ?? null;\n }\n\n const title = hasSelect ? 'Authentication methods' : (preparedOptions[0].label ?? '');\n\n const description = hasSelect\n ? 'Choose an authentication method to access the data source'\n : (preparedOptions[0].description ?? '');\n\n const styles = {\n authMethods: css({\n marginTop: spacing(2.5),\n ...(hasSelect && {\n padding: spacing(2),\n border: `1px solid ${colors.border.weak}`,\n }),\n }),\n selectedMethodFields: css({\n marginTop: spacing(1.5),\n }),\n };\n\n return (\n <ConfigSubSection title={title} description={description}>\n <div className={styles.authMethods}>\n {hasSelect && (\n <Field label=\"Authentication method\">\n <Select\n inputId=\"auth-method-select\"\n options={preparedOptions}\n value={selected}\n onChange={(option) => {\n setAuthMethodChanged(true);\n onAuthMethodSelect(option.value!);\n }}\n disabled={readOnly}\n />\n </Field>\n )}\n {AuthFieldsComponent && <div className={styles.selectedMethodFields}>{AuthFieldsComponent}</div>}\n </div>\n </ConfigSubSection>\n );\n};\n"],"names":["_a"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from '
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { css, cx } from '@emotion/css';
|
|
3
3
|
import { useTheme2, InlineFieldRow, InlineField, Input, SecretInput, IconButton } from '@grafana/ui';
|
|
4
4
|
import { useCommonStyles } from '../styles.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
2
|
import { css } from '@emotion/css';
|
|
3
3
|
import { useTheme2, Button } from '@grafana/ui';
|
|
4
4
|
import { CustomHeader } from './CustomHeader.js';
|
|
@@ -7,14 +7,14 @@ import '@grafana/data';
|
|
|
7
7
|
|
|
8
8
|
const CustomHeaders = ({ headers: headersFromProps, onChange, readOnly }) => {
|
|
9
9
|
const { spacing } = useTheme2();
|
|
10
|
-
const [headers, setHeaders] =
|
|
10
|
+
const [headers, setHeaders] = useState(
|
|
11
11
|
headersFromProps.map((header) => ({
|
|
12
12
|
...header,
|
|
13
13
|
id: uniqueId(),
|
|
14
14
|
value: ""
|
|
15
15
|
}))
|
|
16
16
|
);
|
|
17
|
-
|
|
17
|
+
useEffect(() => {
|
|
18
18
|
setHeaders((headers2) => {
|
|
19
19
|
let changed = false;
|
|
20
20
|
const newHeaders = headers2.map((header) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomHeaders.js","sources":["../../../../../../src/components/ConfigEditor/Auth/custom-headers/CustomHeaders.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { css } from '@emotion/css';\nimport { Button, useTheme2 } from '@grafana/ui';\nimport { CustomHeader } from './CustomHeader';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport type { Header, HeaderWithValue, LocalHeader } from '../types';\n\nexport type Props = {\n headers: Header[];\n onChange: (headers: HeaderWithValue[]) => void;\n readOnly: boolean;\n};\n\nexport const CustomHeaders = ({ headers: headersFromProps, onChange, readOnly }: Props) => {\n const { spacing } = useTheme2();\n\n const [headers, setHeaders] = useState<LocalHeader[]>(\n headersFromProps.map((header) => ({\n ...header,\n id: uniqueId(),\n value: '',\n }))\n );\n\n useEffect(() => {\n setHeaders((headers) => {\n let changed = false;\n const newHeaders = headers.map<LocalHeader>((header) => {\n const configured = headersFromProps.find((h) => h.name === header.name)?.configured;\n if (typeof configured !== 'undefined' && header.configured !== configured) {\n changed = true;\n return { ...header, configured };\n }\n return header;\n });\n\n if (changed) {\n return newHeaders;\n }\n\n return headers;\n });\n }, [headersFromProps]);\n\n const onHeaderAdd = () => {\n setHeaders([...headers, { id: uniqueId(), name: '', value: '', configured: false }]);\n };\n\n const onHeaderChange = (id: string, header: LocalHeader) => {\n setHeaders(headers.map((h) => (h.id === id ? { ...header } : h)));\n };\n\n const onHeaderDelete = (id: string) => {\n const index = headers.findIndex((h) => h.id === id);\n if (index === -1) {\n return;\n }\n const newHeaders = [...headers];\n newHeaders.splice(index, 1);\n setHeaders(newHeaders);\n onChange(\n newHeaders.map(({ name, value, configured }) => ({\n name,\n value,\n configured,\n }))\n );\n };\n\n const onBlur = () => {\n onChange(\n headers.map(({ name, value, configured }) => ({\n name,\n value,\n configured,\n }))\n );\n };\n\n const styles = {\n container: css({\n marginTop: spacing(3),\n }),\n addHeaderButton: css({\n marginTop: spacing(1.5),\n }),\n };\n\n return (\n <div className={styles.container}>\n <ConfigSubSection\n title=\"HTTP headers\"\n description=\"Pass along additional context and metadata about the request/response\"\n isCollapsible\n isInitiallyOpen={headers.length > 0}\n >\n <div>\n {headers.map((header) => (\n <CustomHeader\n key={header.id}\n header={header}\n onChange={(header) => onHeaderChange(header.id, header)}\n onDelete={() => onHeaderDelete(header.id)}\n onBlur={onBlur}\n readOnly={readOnly}\n />\n ))}\n </div>\n <div className={styles.addHeaderButton}>\n <Button icon=\"plus\" variant=\"secondary\" fill=\"outline\" onClick={onHeaderAdd} disabled={readOnly}>\n {headers.length === 0 ? 'Add header' : 'Add another header'}\n </Button>\n </div>\n </ConfigSubSection>\n </div>\n );\n};\n\nfunction uniqueId(): string {\n return Math.random().toString(16).slice(2);\n}\n"],"names":["
|
|
1
|
+
{"version":3,"file":"CustomHeaders.js","sources":["../../../../../../src/components/ConfigEditor/Auth/custom-headers/CustomHeaders.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { css } from '@emotion/css';\nimport { Button, useTheme2 } from '@grafana/ui';\nimport { CustomHeader } from './CustomHeader';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport type { Header, HeaderWithValue, LocalHeader } from '../types';\n\nexport type Props = {\n headers: Header[];\n onChange: (headers: HeaderWithValue[]) => void;\n readOnly: boolean;\n};\n\nexport const CustomHeaders = ({ headers: headersFromProps, onChange, readOnly }: Props) => {\n const { spacing } = useTheme2();\n\n const [headers, setHeaders] = useState<LocalHeader[]>(\n headersFromProps.map((header) => ({\n ...header,\n id: uniqueId(),\n value: '',\n }))\n );\n\n useEffect(() => {\n setHeaders((headers) => {\n let changed = false;\n const newHeaders = headers.map<LocalHeader>((header) => {\n const configured = headersFromProps.find((h) => h.name === header.name)?.configured;\n if (typeof configured !== 'undefined' && header.configured !== configured) {\n changed = true;\n return { ...header, configured };\n }\n return header;\n });\n\n if (changed) {\n return newHeaders;\n }\n\n return headers;\n });\n }, [headersFromProps]);\n\n const onHeaderAdd = () => {\n setHeaders([...headers, { id: uniqueId(), name: '', value: '', configured: false }]);\n };\n\n const onHeaderChange = (id: string, header: LocalHeader) => {\n setHeaders(headers.map((h) => (h.id === id ? { ...header } : h)));\n };\n\n const onHeaderDelete = (id: string) => {\n const index = headers.findIndex((h) => h.id === id);\n if (index === -1) {\n return;\n }\n const newHeaders = [...headers];\n newHeaders.splice(index, 1);\n setHeaders(newHeaders);\n onChange(\n newHeaders.map(({ name, value, configured }) => ({\n name,\n value,\n configured,\n }))\n );\n };\n\n const onBlur = () => {\n onChange(\n headers.map(({ name, value, configured }) => ({\n name,\n value,\n configured,\n }))\n );\n };\n\n const styles = {\n container: css({\n marginTop: spacing(3),\n }),\n addHeaderButton: css({\n marginTop: spacing(1.5),\n }),\n };\n\n return (\n <div className={styles.container}>\n <ConfigSubSection\n title=\"HTTP headers\"\n description=\"Pass along additional context and metadata about the request/response\"\n isCollapsible\n isInitiallyOpen={headers.length > 0}\n >\n <div>\n {headers.map((header) => (\n <CustomHeader\n key={header.id}\n header={header}\n onChange={(header) => onHeaderChange(header.id, header)}\n onDelete={() => onHeaderDelete(header.id)}\n onBlur={onBlur}\n readOnly={readOnly}\n />\n ))}\n </div>\n <div className={styles.addHeaderButton}>\n <Button icon=\"plus\" variant=\"secondary\" fill=\"outline\" onClick={onHeaderAdd} disabled={readOnly}>\n {headers.length === 0 ? 'Add header' : 'Add another header'}\n </Button>\n </div>\n </ConfigSubSection>\n </div>\n );\n};\n\nfunction uniqueId(): string {\n return Math.random().toString(16).slice(2);\n}\n"],"names":["headers","header"],"mappings":"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"}
|