function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF 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 { sharedControls } from '@superset-ui/chart-controls';
import { t, validateNonEmpty } from '@superset-ui/core';
import React from 'react';
import { CodeEditor } from '../../components/CodeEditor/CodeEditor';
import { ControlHeader } from '../../components/ControlHeader/controlHeader';
import { debounceFunc } from '../../consts';
var HandlebarsTemplateControl = props => {
  var val = String(props != null && props.value ? props == null ? void 0 : props.value : props != null && props.default ? props == null ? void 0 : props.default : '');
  return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(ControlHeader, null, props.label), /*#__PURE__*/React.createElement(CodeEditor, {
    theme: "dark",
    value: val,
    onChange: source => {
      debounceFunc(props.onChange, source || '');
    }
  }));
};
export var handlebarsTemplateControlSetItem = {
  name: 'handlebarsTemplate',
  config: _extends({}, sharedControls.entity, {
    type: HandlebarsTemplateControl,
    label: t('Handlebars Template'),
    description: t('A handlebars template that is applied to the data'),
    default: "<ul class=\"data-list\">\n  {{#each data}}\n    <li>{{stringify this}}</li>\n  {{/each}}\n</ul>",
    isInt: false,
    renderTrigger: true,
    validators: [validateNonEmpty],
    mapStateToProps: _ref => {
      var _controls$handlebars_;
      var {
        controls
      } = _ref;
      return {
        value: controls == null || (_controls$handlebars_ = controls.handlebars_template) == null ? void 0 : _controls$handlebars_.value
      };
    }
  })
};