(function (global) {
  'use strict';
  function SearchVisibilityRunForm(props) {
    var onSubmit = props.onSubmit;
    var busy = props.busy;
    var stateHook = React.useState({
      targetDomain: '',
      businessName: '',
      location: '',
      services: '',
      queries: '',
      competitors: '',
      provider: 'manual',
      manualResults: ''
    });
    var form = stateHook[0];
    var setForm = stateHook[1];

    function update(field, value) {
      setForm(Object.assign({}, form, Object.fromEntries([[field, value]])));
    }

    function splitLines(value) {
      return String(value || '').split(/\n|,/).map(function (item) { return item.trim(); }).filter(Boolean);
    }

    function submit(event) {
      event.preventDefault();
      onSubmit({
        targetDomain: form.targetDomain,
        businessName: form.businessName,
        location: form.location,
        services: splitLines(form.services),
        queries: splitLines(form.queries),
        competitors: splitLines(form.competitors),
        provider: form.provider,
        manualResults: form.manualResults,
        options: { includeGeneratedQueries: true }
      });
    }

    return React.createElement('form', { className: 'free-seo-card', onSubmit: submit },
      React.createElement('h3', null, 'Create visibility sample'),
      React.createElement('label', null, 'Target domain', React.createElement('input', { required: true, value: form.targetDomain, onChange: function (e) { update('targetDomain', e.target.value); }, placeholder: 'example.com' })),
      React.createElement('label', null, 'Business name', React.createElement('input', { value: form.businessName, onChange: function (e) { update('businessName', e.target.value); }, placeholder: 'Example Dental Clinic' })),
      React.createElement('label', null, 'Location', React.createElement('input', { value: form.location, onChange: function (e) { update('location', e.target.value); }, placeholder: 'Rome, Italy' })),
      React.createElement('label', null, 'Services', React.createElement('textarea', { value: form.services, onChange: function (e) { update('services', e.target.value); }, placeholder: 'One service per line' })),
      React.createElement('label', null, 'Manual queries', React.createElement('textarea', { value: form.queries, onChange: function (e) { update('queries', e.target.value); }, placeholder: 'Optional. One query per line.' })),
      React.createElement('label', null, 'Competitor domains', React.createElement('textarea', { value: form.competitors, onChange: function (e) { update('competitors', e.target.value); }, placeholder: 'competitor.com' })),
      React.createElement('label', null, 'Provider', React.createElement('select', { value: form.provider, onChange: function (e) { update('provider', e.target.value); } },
        React.createElement('option', { value: 'manual' }, 'Manual / pasted results'),
        React.createElement('option', { value: 'offline' }, 'Offline baseline'),
        React.createElement('option', { value: 'searxng' }, 'Configured SearXNG')
      )),
      React.createElement('label', null, 'Pasted result evidence', React.createElement('textarea', { rows: 8, value: form.manualResults, onChange: function (e) { update('manualResults', e.target.value); }, placeholder: 'Query: best dentist in Rome\n1. Example https://example.com snippet...' })),
      React.createElement('button', { type: 'submit', disabled: busy }, busy ? 'Sampling...' : 'Run sampler')
    );
  }
  global.SearchVisibilityRunForm = SearchVisibilityRunForm;
}(window));
