Plugin Directory

Changeset 3406692


Ignore:
Timestamp:
12/01/2025 10:27:41 AM (13 days ago)
Author:
RogierLankhorst
Message:

remove obsolete files

Location:
burst-statistics/trunk
Files:
1 deleted
56 edited

Legend:

Unmodified
Added
Removed
  • burst-statistics/trunk/assets/js/build/burst-cookieless.js

    r3392751 r3406692  
    374374    time_on_page: time,
    375375    completed_goals: burst.goals.completed,
    376     should_load_ecommerce: burst.should_load_ecommerce,
     376    should_load_ecommerce: burst.should_load_ecommerce,
    377377  };
    378378
  • burst-statistics/trunk/assets/js/build/burst.js

    r3392751 r3406692  
    371371    time_on_page: time,
    372372    completed_goals: burst.goals.completed,
    373     should_load_ecommerce: burst.should_load_ecommerce,
     373    should_load_ecommerce: burst.should_load_ecommerce,
    374374  };
    375375
  • burst-statistics/trunk/burst.php

    r3402379 r3406692  
    44 * Plugin URI: https://www.wordpress.org/plugins/burst-statistics
    55 * Description: Get detailed insights into visitors’ behavior with Burst Statistics, the privacy-friendly analytics dashboard.
    6  * Version: 3.0.2
     6 * Version: 3.1.0.3
    77 * Requires at least: 6.4
    88 * Requires PHP: 8.0
     
    1111 * Author: Burst Statistics - Stats & Analytics for WordPress
    1212 * Author URI: https://burst-statistics.com
     13 * License: GPL v2 or later
     14 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
    1315 */
    1416
  • burst-statistics/trunk/endpoint.php

    r3392751 r3406692  
    6161
    6262require_once __DIR__ . '/includes/autoload.php';
    63 require_once __DIR__ . '/helpers/php-user-agent/UserAgentParser.php';
    6463if ( file_exists( __DIR__ . '/includes/Pro/Frontend/Tracking/tracking.php' ) ) {
    6564    require_once __DIR__ . '/includes/Pro/Frontend/Tracking/tracking.php';
  • burst-statistics/trunk/includes/Admin/App/Fields/class-fields.php

    r3377993 r3406692  
    3434        }
    3535        $fields = $this->fields;
    36 
    37         // If the plugin is considered high traffic, summary tables kick in. This can be disabled with this option.
    38         if ( $this->get_option_bool( 'disable_summary' ) ) {
    39             $fields[] = [
    40                 'id'       => 'disable_summary',
    41                 'menu_id'  => 'advanced',
    42                 'group_id' => 'tracking',
    43                 'type'     => 'checkbox',
    44                 'label'    => __( 'Disable the usage of summary tables', 'burst-statistics' ),
    45                 'context'  => __( 'Using summary tables speeds up the dashboard on higher traffic environments, but can show small differences from the actual data.', 'burst-statistics' ),
    46                 'disabled' => false,
    47                 'default'  => false,
    48             ];
    49         }
    5036
    5137        if ( is_multisite() && self::is_networkwide_active() && is_main_site() ) {
  • burst-statistics/trunk/includes/Admin/App/Menu/class-menu.php

    r3377993 r3406692  
    4343            if ( ! current_user_can( $menu_item['capabilities'] ) ) {
    4444                unset( $menu_items[ $key ] );
     45                continue;
    4546            }
    4647
  • burst-statistics/trunk/includes/Admin/App/class-app.php

    r3392751 r3406692  
    1515use Burst\Traits\Sanitize;
    1616use Burst\Traits\Save;
     17use Burst\UserAgentParser\UserAgentParser;
    1718use function Burst\burst_loader;
    1819
     
    4546        add_action( 'rest_api_init', [ $this, 'settings_rest_route' ], 8 );
    4647        add_filter( 'burst_localize_script', [ $this, 'extend_localized_settings_for_dashboard' ], 10, 1 );
    47         add_action( 'burst_weekly', [ $this, 'weekly_clear_referrers_table' ] );
     48        add_action( 'burst_weekly', [ $this, 'init_cleanup' ] );
     49        add_action( 'burst_weekly_clear_referrers_cron', [ $this, 'weekly_clear_referrers_table' ] );
     50        add_action( 'burst_weekly_clear_spam_browsers_cron', [ $this, 'weekly_clear_spam_browsers' ] );
    4851        add_action( 'burst_daily', [ $this, 'maybe_update_plugin_path' ] );
    4952        $this->menu   = new Menu();
     
    11811184
    11821185    /**
     1186     * Initialize weekly cleanup cron jobs
     1187     * Schedules both referrer and browser cleanup if not already scheduled
     1188     */
     1189    public function init_cleanup(): void {
     1190        if ( ! wp_next_scheduled( 'burst_weekly_clear_referrers_cron' ) ) {
     1191            wp_schedule_single_event( time() + 60, 'burst_weekly_clear_referrers_cron' );
     1192        }
     1193
     1194        if ( ! wp_next_scheduled( 'burst_weekly_clear_spam_browsers_cron' ) ) {
     1195            wp_schedule_single_event( time() + 120, 'burst_weekly_clear_spam_browsers_cron' );
     1196        }
     1197    }
     1198    /**
    11831199     * On a weekly basis, clear the referrers table.
    11841200     *
     
    11911207        global $wpdb;
    11921208        $wpdb->query( "TRUNCATE TABLE {$wpdb->prefix}burst_referrers" );
     1209    }
     1210
     1211    /**
     1212     * Weekly cleanup of one spam/invalid browser from the database
     1213     * Only removes browsers with limited statistics to keep queries fast
     1214     */
     1215    public function weekly_clear_spam_browsers(): void {
     1216        if ( ! $this->user_can_manage() ) {
     1217            return;
     1218        }
     1219
     1220        global $wpdb;
     1221
     1222        $browsers = $wpdb->get_results(
     1223            "SELECT ID, name FROM {$wpdb->prefix}burst_browsers",
     1224            ARRAY_A
     1225        );
     1226
     1227        if ( empty( $browsers ) ) {
     1228            return;
     1229        }
     1230
     1231        $parser = new UserAgentParser();
     1232        // Find the first invalid browser with limited statistics.
     1233        foreach ( $browsers as $browser ) {
     1234            $browser_name = $browser['name'];
     1235            $browser_id   = (int) $browser['ID'];
     1236
     1237            // Skip if browser name is valid.
     1238            if ( ! $parser->is_invalid_browser_name( $browser_name ) ) {
     1239                continue;
     1240            }
     1241
     1242            // Check how many statistics use this browser.
     1243            $count = $wpdb->get_var(
     1244                $wpdb->prepare(
     1245                    "SELECT COUNT(*) FROM {$wpdb->prefix}burst_statistics WHERE browser_id = %d",
     1246                    $browser_id
     1247                )
     1248            );
     1249
     1250            // Only clean up browsers with max 50 statistics to keep it fast.
     1251            if ( $count > 50 ) {
     1252                continue;
     1253            }
     1254
     1255            // Delete statistics for this browser.
     1256            $deleted_stats = $wpdb->query(
     1257                $wpdb->prepare(
     1258                    "DELETE FROM {$wpdb->prefix}burst_statistics WHERE browser_id = %d",
     1259                    $browser_id
     1260                )
     1261            );
     1262
     1263            // Delete the browser entry.
     1264            $wpdb->query(
     1265                $wpdb->prepare(
     1266                    "DELETE FROM {$wpdb->prefix}burst_browsers WHERE ID = %d",
     1267                    $browser_id
     1268                )
     1269            );
     1270
     1271            self::error_log(
     1272                sprintf(
     1273                    'Burst: Weekly cleanup removed spam browser "%s" (ID: %d) and %d related statistics.',
     1274                    $browser_name,
     1275                    $browser_id,
     1276                    $deleted_stats
     1277                )
     1278            );
     1279
     1280            return;
     1281        }
     1282
     1283        self::error_log( 'Burst: No spam browsers found with limited statistics during weekly cleanup.' );
    11931284    }
    11941285
     
    14761567                    [
    14771568                        'success' => false,
    1478                         'message' => 'Invalid noce.',
     1569                        'message' => 'Invalid nonce.',
    14791570                    ]
    14801571                );
  • burst-statistics/trunk/includes/Admin/App/src/api/getDataTableData.js

    r3392751 r3406692  
    122122      formatFunctionCache.set( cacheKey, ( row ) => {
    123123        const value = row[column.id];
    124         console.log(column, row);
    125 
    126124        switch ( format ) {
    127125          case 'percentage':
  • burst-statistics/trunk/includes/Admin/App/src/components/Common/ExplanationAndStatsItem.js

    r3392751 r3406692  
    77 * @param {Object} props Component props.
    88 * @param {string} props.title Title of the item.
    9  * @param {string} props.subtitle Subtitle of the item.
     9 * @param {string|null} props.subtitle Subtitle of the item.
    1010 * @param {string|number} props.value Display value of the item.
    11  * @param {number} props.exactValue Exact numeric value for tooltip (if > 1000).
    12  * @param {string} props.change Change value to display.
    13  * @param {string} props.changeStatus Status of the change ('positive' or 'negative').
     11 * @param {number|null} props.exactValue Exact numeric value for tooltip (if > 1000).
     12 * @param {string|null} props.change Change value to display.
     13 * @param {string|null} props.changeStatus Status of the change ('positive' or 'negative').
    1414 * @param {string|null} [props.iconKey] Optional key for icon display. Default is null.
     15 * @param {string} [props.className] Optional additional class names. Default is ''.
    1516 *
    1617 * @returns {JSX.Element} The rendered component.
     
    2425    changeStatus,
    2526    iconKey = null,
     27    className = '',
    2628} ) => {
    27     const tooltipValue = 1000 < exactValue ? exactValue : false;
     29    let tooltipValue;
     30    if ( ! exactValue || exactValue < 1000 ) {
     31        tooltipValue = false;
     32    } else {
     33        tooltipValue = exactValue;
     34    }
    2835    return (
    29       <div className="flex items-start gap-3 py-2">
     36        <div className={`flex items-start gap-3 py-2 ${ className }`}>
    3037            {
    3138              iconKey && ( <Icon name={ iconKey } className="mt-1" /> )
    3239            }
    3340
    34           <div className="flex-1">
     41            <div className="flex-1 label">
    3542                <h3 className="text-base font-semibold text-black">{ title }</h3>
    3643
    37                 <p className="text-sm text-gray">{ subtitle }</p>
     44                {
     45                  subtitle && <p className="text-sm text-gray">{ subtitle }</p>
     46                }
    3847            </div>
    3948
     
    4150                {
    4251                    tooltipValue ?
    43                       (
    44                         <HelpTooltip content={ tooltipValue } delayDuration={ 1000 }>
    45                                 <span className="text-xl font-bold text-black">{ value }</span>
     52                        (
     53                            <HelpTooltip content={ tooltipValue } delayDuration={ 1000 }>
     54                                <span className="text-xl font-bold text-black value">{ value }</span>
    4655                            </HelpTooltip>
    47                       ) :
    48                       <span className="text-xl font-bold text-black">{ value }</span>
     56                        ) :
     57
     58                        <span className="text-xl font-bold text-black value">{ value }</span>
    4959                }
    5060
  • burst-statistics/trunk/includes/Admin/App/src/components/Common/Header.jsx

    r3392751 r3406692  
    4343 */
    4444const Header = () => {
    45     const menu = burst_settings.menu;
     45    const menu = Array.isArray( burst_settings.menu ) ? burst_settings.menu : Object.values(burst_settings.menu);
     46
    4647    const {
    4748        isPro,
  • burst-statistics/trunk/includes/Admin/App/src/components/Fields/Field.jsx

    r3392751 r3406692  
    142142  };
    143143
    144 
    145144  const validationRules = {
    146145    ...(setting.required && {
     
    162161    }),
    163162    ...getCustomValidation(),
    164     ...(setting.min && { min: setting.min }),
    165     ...(setting.max && { max: setting.max }),
     163    ...(setting.type === 'number' && setting.min !== undefined && {
     164        min: {
     165            value: setting.min,
     166            message: sprintf(
     167              __('Value must be at least %s', 'burst-statistics'),
     168              setting.min
     169            )
     170        }
     171    }),
     172    ...(setting.type === 'number' && setting.max !== undefined && {
     173        max: {
     174            value: setting.max,
     175            message: sprintf(
     176              __('Value must be at most %s', 'burst-statistics'),
     177              setting.max
     178            )
     179        }
     180    }),
    166181    ...(setting.minLength && { minLength: setting.minLength }),
    167182    ...(setting.maxLength && { maxLength: setting.maxLength })
  • burst-statistics/trunk/includes/Admin/App/src/components/Fields/FieldWrapper.tsx

    r3392751 r3406692  
    127127
    128128    return (
    129       <div className={wrapperClasses}>
     129      <div className={wrapperClasses+' burst_field_'+inputId}>
    130130        <div className={containerClasses}>
    131131          <div className={clsx(labelOrderClass)}>{labelBlock}</div>
  • burst-statistics/trunk/includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx

    r3377993 r3406692  
    11import { useState, useEffect, forwardRef } from 'react';
    2 import { __ } from '@wordpress/i18n';
     2import { __, _n, sprintf } from '@wordpress/i18n';
    33import Icon from '../../utils/Icon';
    44import useArchiveStore from '@/store/useArchivesStore';
    55import useSettingsData from '@/hooks/useSettingsData';
    66import DataTable from 'react-data-table-component';
    7 
    8 const RestoreArchivesField = forwardRef(
    9     ({ ...props }, ref) => {
    10   const [ searchValue, setSearchValue ] = useState( '' );
    11   const [ selectedArchives, setSelectedArchives ] = useState([]);
    12   const [ downloading, setDownloading ] = useState( false );
    13   const [ pagination, setPagination ] = useState({});
    14   const [ indeterminate, setIndeterminate ] = useState( false );
    15   const [ entirePageSelected, setEntirePageSelected ] = useState( false );
    16   const [ sortBy, setSortBy ] = useState( 'title' );
    17   const [ sortDirection, setSortDirection ] = useState( 'asc' );
    18 
    19 
    20   const archives = useArchiveStore( state => state.archives );
    21   const archivesLoaded = useArchiveStore( state => state.archivesLoaded );
    22   const fetching = useArchiveStore( state => state.fetching );
    23   const fetchData = useArchiveStore( state => state.fetchData );
    24   const deleteArchives = useArchiveStore( state => state.deleteArchives );
    25   const downloadUrl = useArchiveStore( state => state.downloadUrl );
    26   const startRestoreArchives = useArchiveStore( state => state.startRestoreArchives );
    27   const fetchRestoreArchivesProgress = useArchiveStore( state => state.fetchRestoreArchivesProgress );
    28   const restoring = useArchiveStore( state => state.restoring );
    29   const progress = useArchiveStore( state => state.progress );
    30   const {addNotice} = useSettingsData();
    31 
    32   useEffect( () => {
    33     fetchRestoreArchivesProgress();
    34   }, []);
    35 
    36   useEffect( () => {
    37     if ( ! archivesLoaded ) {
    38       fetchData();
    39     }
    40   }, [ archivesLoaded ]);
    41 
    42   const handlePageChange = ( page ) => {
    43     setPagination({ ...pagination, currentPage: page });
    44   };
    45 
    46   const updateSelectedArchives = ( ids ) => {
    47     if ( 0 === ids.length ) {
    48       setEntirePageSelected( false );
    49       setIndeterminate( false );
    50     }
    51     setSelectedArchives( ids );
    52   }
    53 
    54   const onDeleteArchives = async( e, ids ) => {
    55     e.preventDefault();
    56     updateSelectedArchives([]);
    57     await deleteArchives( ids );
    58   };
    59 
    60   const onRestoreArchives = async( e, ids ) => {
    61     e.preventDefault();
    62     updateSelectedArchives([]);
    63     await startRestoreArchives( ids );
    64     addNotice(
    65       'archive_data',
    66       'warning',
    67       __( 'Because restoring files can conflict with the archiving functionality, archiving has been disabled.', 'burst-statistics' ),
    68       __( 'Archiving disabled', 'burst-statistics' )
    69     );
    70   };
    71 
    72   const downloadArchives = async(e) => {
    73     e.preventDefault();
    74     let selectedArchivesCopy = archives.filter( ( archive ) =>
    75       selectedArchives.includes( archive.id )
    76     );
    77     setDownloading( true );
    78     const downloadNext = async() => {
    79       if ( 0 < selectedArchivesCopy.length ) {
    80         const archive = selectedArchivesCopy.shift();
    81         const url = downloadUrl + archive.id;
    82 
    83         try {
    84           let request = new XMLHttpRequest();
    85           request.responseType = 'blob';
    86           request.open( 'get', url, true );
    87           request.send();
    88           request.onreadystatechange = function() {
    89             if ( 4 === this.readyState && 200 === this.status ) {
    90               let obj = window.URL.createObjectURL( this.response );
    91               let element = window.document.createElement( 'a' );
    92               element.href = obj;
    93               element.download = archive.title;
    94               element.style.display = 'none';
    95               document.body.appendChild(element);
    96               element.click();
    97               document.body.removeChild(element); // prevents redirect
    98 
    99               updateSelectedArchives( selectedArchivesCopy );
    100 
    101               setDownloading( false );
    102 
    103               setTimeout( function() {
    104                 window.URL.revokeObjectURL( obj );
    105               }, 60 * 1000 );
    106             }
    107           };
    108 
    109           await downloadNext();
    110         } catch ( error ) {
    111           console.error( error );
    112           setDownloading( false );
    113         }
    114       } else {
    115         setDownloading( false );
    116       }
    117     };
    118 
    119     await downloadNext();
    120   };
    121 
    122   const handleSelectEntirePage = ( selected ) => {
    123     if ( selected ) {
    124       setEntirePageSelected( true );
    125       let currentPage = pagination.currentPage ? pagination.currentPage : 1;
    126       let filtered = handleFiltering( archives );
    127       let archivesOnPage = filtered.slice(
    128         ( currentPage - 1 ) * 10,
    129         currentPage * 10
    130       );
    131       setSelectedArchives( archivesOnPage.map( ( archive ) => archive.id ) );
    132     } else {
    133       setEntirePageSelected( false );
    134       setSelectedArchives([]);
    135     }
    136     setIndeterminate( false );
    137   };
    138 
    139   const onSelectArchive = ( selected, id ) => {
    140     let docs = [ ...selectedArchives ];
    141     if ( selected ) {
    142       if ( ! docs.includes( id ) ) {
    143         docs.push( id );
    144         setSelectedArchives( docs );
    145       }
    146     } else {
    147       docs = [ ...selectedArchives.filter( ( archiveId ) => archiveId !== id ) ];
    148       setSelectedArchives( docs );
    149     }
    150 
    151     let currentPage = pagination.currentPage ? pagination.currentPage : 1;
    152     let filtered = handleFiltering( archives );
    153     let archivesOnPage = filtered.slice(
    154       ( currentPage - 1 ) * 10,
    155       currentPage * 10
    156     );
    157     let allSelected = true;
    158     let hasOneSelected = false;
    159     archivesOnPage.forEach( ( record ) => {
    160       if ( ! docs.includes( record.id ) ) {
    161         allSelected = false;
    162       } else {
    163         hasOneSelected = true;
    164       }
    165     });
    166 
    167     if ( allSelected ) {
    168       setEntirePageSelected( true );
    169       setIndeterminate( false );
    170     } else if ( ! hasOneSelected ) {
    171       setIndeterminate( false );
    172     } else {
    173       setEntirePageSelected( false );
    174       setIndeterminate( true );
    175     }
    176   };
    177 
    178   const handleFiltering = ( archives ) => {
    179     let newArchives = [ ...archives ];
    180     newArchives = handleSort( newArchives, sortBy, sortDirection );
    181     newArchives = newArchives.filter( ( archive ) => {
    182       return archive.title.toLowerCase().includes( searchValue.toLowerCase() );
    183     });
    184     return newArchives;
    185   };
    186 
    187   const handleSort = ( rows, selector, direction ) => {
    188     if ( 0 === rows.length ) {
    189       return rows;
    190     }
    191     const multiplier = 'asc' === direction ? 1 : -1;
    192     if ( direction !== sortDirection ) {
    193       setSortDirection( direction );
    194     }
    195     const convertToBytes = ( size ) => {
    196       const units = {
    197         B: 1,
    198         KB: 1024,
    199         MB: 1024 * 1024
    200       };
    201 
    202       const [ value, unit ] = size.split( ' ' );
    203 
    204       return parseFloat( value ) * units[unit];
    205     };
    206     if ( -1 !== selector.toString().indexOf( 'title' ) && 'title' !== sortBy ) {
    207       setSortBy( 'title' );
    208     } else if ( -1 !== selector.toString().indexOf( 'size' ) && 'size' !== sortBy ) {
    209       setSortBy( 'size' );
    210     }
    211     if ( 'title' === sortBy ) {
    212       rows.sort( ( a, b ) => {
    213         const [ yearA, monthA ] = a.id.replace( '.zip', '' ).split( '-' ).map( Number );
    214         const [ yearB, monthB ] = b.id.replace( '.zip', '' ).split( '-' ).map( Number );
    215 
    216         if ( yearA !== yearB ) {
    217           return multiplier * ( yearA - yearB );
    218         }
    219         return multiplier * ( monthA - monthB );
    220       });
    221     } else if ( 'size' === sortBy ) {
    222       rows.sort( ( a, b ) => {
    223         const sizeA = convertToBytes( a.size );
    224         const sizeB = convertToBytes( b.size );
    225 
    226         return multiplier * ( sizeA - sizeB );
    227       });
    228     }
    229     return rows;
    230   };
    231 
    232   const columns = [
    233     {
    234       name: (
    235         <input
    236           type="checkbox"
    237           className={indeterminate ? 'burst-indeterminate' : ''}
    238           checked={entirePageSelected}
    239           onChange={( e ) => handleSelectEntirePage( e.target.checked )}
    240         />
    241       ),
    242       selector: ( row ) => row.selectControl,
    243       grow: 1
    244     },
    245     {
    246       name: __( 'Archive', 'burst-statistics' ),
    247       selector: ( row ) => row.title,
    248       sortable: true,
    249       grow: 6
    250     },
    251     {
    252       name: __( 'Size', 'burst-statistics' ),
    253       selector: ( row ) => row.size,
    254       sortable: true,
    255       grow: 2,
    256       right: 1
    257     }
    258   ];
    259 
    260   let filteredArchives = handleFiltering( archives );
    261   let data = [];
    262   filteredArchives.forEach( ( archive ) => {
    263     let archiveCopy = { ...archive };
    264     archiveCopy.selectControl = (
    265       <input
    266         type="checkbox"
    267         className="m-0"
    268         disabled={archiveCopy.restoring || restoring}
    269         checked={selectedArchives.includes( archiveCopy.id )}
    270         onChange={( e ) => onSelectArchive( e.target.checked, archiveCopy.id )}
    271       />
    272     );
    273     data.push( archiveCopy );
    274   });
    275 
    276   let showDownloadButton = 1 < selectedArchives.length;
    277   if ( ! showDownloadButton && 1 === selectedArchives.length ) {
    278     let currentSelected = archives.filter( ( archive ) =>
    279       selectedArchives.includes( archive.id )
    280     );
    281     showDownloadButton =
    282       currentSelected.hasOwnProperty( 0 ) &&
    283       '' !== currentSelected[0].download_url;
    284   }
    285 
    286   return (
    287     <div className="w-full p-6">
    288       <div className="py-2.5 px-6">
    289         <div>
    290           <input
    291             type="text"
    292             placeholder={__( 'Search', 'burst-statistics' )}
    293             value={searchValue}
    294             onChange={( e ) => setSearchValue( e.target.value )}
    295           />
    296         </div>
    297       </div>
    298 
    299       {0 < selectedArchives.length && (
    300           <div className="mt-[10px] mb-[10px] items-center bg-blue-light py-2.5 px-6 flex space-y-2">
    301             <div className="ml-auto flex gap-2.5 mb-4 mt-4 items-center">
    302               {showDownloadButton && (
    303                   <>
    304                     <button
    305                         disabled={downloading || (progress && 100 > progress)}
    306                         className="burst-button burst-button--secondary"
    307                         onClick={(e) => downloadArchives(e)}
    308                     >
    309                       {__('Download', 'burst-statistics')}
    310                       {downloading && <Icon name="loading" color="gray"/>}
    311                     </button>
    312                   </>
    313               )}
    314               <button
    315                   disabled={progress && 100 > progress}
    316                   className="burst-button burst-button--primary"
    317                   onClick={(e) => onRestoreArchives(e, selectedArchives)}
    318               >
    319                 {__('Restore', 'burst-statistics')}
    320                 {100 > progress && <Icon name="loading" color="gray"/>}
    321               </button>
    322               <button
    323                   disabled={progress && 100 > progress}
    324                   className="burst-button burst-button--tertiary"
    325                   onClick={(e) => onDeleteArchives(e, selectedArchives)}
    326               >
    327                 {__('Delete', 'burst-statistics')}
    328               </button>
    329               <div>
    330                 {1 < selectedArchives.length &&
    331                     __('%s items selected', 'burst-statistics').replace(
    332                         '%s',
    333                         selectedArchives.length
    334                     )}
    335                 {1 === selectedArchives.length &&
    336                     __('1 item selected', 'burst-statistics')}
    337               </div>
    338             </div>
    339 
    340           </div>
    341       )}
    342       {0 < progress && 100 > progress && (
    343           <div className="my-2.5 items-center bg-blue-light py-2.5 px-l flex space-y-2">
    344             {__('Restore in progress, %s complete', 'burst-statistics').replace(
    345                 '%s',
    346                 progress + '%'
    347             )}
    348           </div>
    349       )}
    350 
    351       {DataTable && (
    352           <DataTable
    353               columns={columns}
    354           data={data}
    355           dense
    356           paginationPerPage={10}
    357           onChangePage={handlePageChange}
    358           paginationState={pagination}
    359           persistTableHead
    360           defaultSortFieldId={2}
    361           pagination
    362           paginationRowsPerPageOptions={[ 10, 25, 50 ]}
    363           paginationComponentOptions={{
    364             rowsPerPageText: '',
    365             rangeSeparatorText: __( 'of', 'burst-statistics' ),
    366             noRowsPerPage: false,
    367             selectAllRowsItem: true,
    368             selectAllRowsItemText: __( 'All', 'burst-statistics' )
    369           }}
    370           noDataComponent={
    371             <div className="p-8">
    372               {__( 'No archives', 'burst-statistics' )}
    373             </div>
    374           }
    375           sortFunction={handleSort}
    376         />
    377       )}
    378     </div>
    379   );
     7import useLicenseData from '@/hooks/useLicenseData'
     8import { useQuery } from '@tanstack/react-query'
     9
     10const RestoreArchivesField = forwardRef( ( { ...props }, ref ) => {
     11    const [ searchValue, setSearchValue ] = useState( '' );
     12    const [ selectedArchives, setSelectedArchives ] = useState([]);
     13    const [ downloading, setDownloading ] = useState( false );
     14    const [ pagination, setPagination ] = useState({});
     15    const [ indeterminate, setIndeterminate ] = useState( false );
     16    const [ entirePageSelected, setEntirePageSelected ] = useState( false );
     17    const [ sortBy, setSortBy ] = useState( 'title' );
     18    const [ sortDirection, setSortDirection ] = useState( 'asc' );
     19
     20
     21    const archives = useArchiveStore( state => state.archives );
     22    const fetching = useArchiveStore( state => state.fetching );
     23    const fetchData = useArchiveStore( state => state.fetchData );
     24    const deleteArchives = useArchiveStore( state => state.deleteArchives );
     25    const downloadUrl = useArchiveStore( state => state.downloadUrl );
     26    const startRestoreArchives = useArchiveStore( state => state.startRestoreArchives );
     27    const fetchRestoreArchivesProgress = useArchiveStore( state => state.fetchRestoreArchivesProgress );
     28    const restoring = useArchiveStore( state => state.restoring );
     29    const progress = useArchiveStore( state => state.progress );
     30    const { addNotice } = useSettingsData();
     31    const { isPro } = useLicenseData();
     32
     33    useQuery(
     34      {
     35          queryFn: () => fetchRestoreArchivesProgress(),
     36          queryKey: [ 'restore-archives-progress' ],
     37          refetchInterval: restoring ? 5000 : false,
     38      }
     39    );
     40
     41    useEffect( () => {
     42        let mounted = true;
     43
     44        const loadData = async () => {
     45            if (mounted) {
     46                await fetchData( isPro );
     47            }
     48        };
     49
     50        loadData();
     51
     52        return () => {
     53            mounted = false;
     54        };
     55    }, [isPro, fetchData] );
     56
     57    const handlePageChange = ( page ) => {
     58        setPagination( { ...pagination, currentPage: page } );
     59    };
     60
     61    const updateSelectedArchives = ( ids ) => {
     62        try {
     63            if ( 0 === ids.length ) {
     64                setEntirePageSelected( false );
     65                setIndeterminate( false );
     66            }
     67            setSelectedArchives( ids );
     68        } catch (error) {
     69            // Component was unmounted, ignore the error
     70            console.log('Component unmounted, ignoring state update');
     71        }
     72    }
     73
     74    const onDeleteArchives = async( e, ids ) => {
     75        e.preventDefault();
     76        updateSelectedArchives( [] );
     77        await deleteArchives( ids );
     78    };
     79
     80    const onRestoreArchives = async( e, ids ) => {
     81        e.preventDefault();
     82        updateSelectedArchives([]);
     83        await startRestoreArchives( ids );
     84        addNotice(
     85          'archive_data',
     86          'warning',
     87          __( 'Because restoring files can conflict with the archiving functionality, archiving has been disabled.', 'burst-statistics' ),
     88          __( 'Archiving disabled', 'burst-statistics' )
     89        );
     90    };
     91
     92    const downloadArchives = async( e ) => {
     93        e.preventDefault();
     94        let selectedArchivesCopy = archives.filter( ( archive ) =>
     95          selectedArchives.includes( archive.id )
     96        );
     97        setDownloading( true );
     98        const downloadNext = async() => {
     99            if ( 0 < selectedArchivesCopy.length ) {
     100                const archive = selectedArchivesCopy.shift();
     101                const url = downloadUrl + archive.id;
     102
     103                try {
     104                    let request = new XMLHttpRequest();
     105                    request.responseType = 'blob';
     106                    request.open( 'get', url, true );
     107                    request.send();
     108                    request.onreadystatechange = function() {
     109                        if ( 4 === this.readyState && 200 === this.status ) {
     110                            let obj = window.URL.createObjectURL( this.response );
     111                            let element = window.document.createElement( 'a' );
     112                            element.href = obj;
     113                            element.download = archive.title;
     114                            element.style.display = 'none';
     115                            document.body.appendChild(element);
     116                            element.click();
     117                            document.body.removeChild(element); // prevents redirect
     118
     119                            updateSelectedArchives( selectedArchivesCopy.map( archive => archive.id ) );
     120
     121                            setDownloading( false );
     122
     123                            setTimeout( function() {
     124                                window.URL.revokeObjectURL( obj );
     125                            }, 60 * 1000 );
     126                        }
     127                    };
     128
     129                    await downloadNext();
     130                } catch ( error ) {
     131                    console.error( error );
     132                    setDownloading( false );
     133                }
     134            } else {
     135                setDownloading( false );
     136            }
     137        };
     138
     139        await downloadNext();
     140    };
     141
     142    const handleSelectEntirePage = ( selected ) => {
     143        if ( selected ) {
     144            setEntirePageSelected( true );
     145            let currentPage = pagination.currentPage ? pagination.currentPage : 1;
     146            let filtered = handleFiltering( archives );
     147            let archivesOnPage = filtered.slice(
     148              ( currentPage - 1 ) * 10,
     149              currentPage * 10
     150            );
     151            setSelectedArchives( archivesOnPage.map( ( archive ) => archive.id ) );
     152        } else {
     153            setEntirePageSelected( false );
     154            setSelectedArchives([]);
     155        }
     156        setIndeterminate( false );
     157    };
     158
     159    const onSelectArchive = ( selected, id ) => {
     160        let docs = [ ...selectedArchives ];
     161        if ( selected ) {
     162            if ( ! docs.includes( id ) ) {
     163                docs.push( id );
     164                setSelectedArchives( docs );
     165            }
     166        } else {
     167            docs = [ ...selectedArchives.filter( ( archiveId ) => archiveId !== id ) ];
     168            setSelectedArchives( docs );
     169        }
     170
     171        let currentPage = pagination.currentPage ? pagination.currentPage : 1;
     172        let filtered = handleFiltering( archives );
     173        let archivesOnPage = filtered.slice(
     174          ( currentPage - 1 ) * 10,
     175          currentPage * 10
     176        );
     177        let allSelected = true;
     178        let hasOneSelected = false;
     179        archivesOnPage.forEach( ( record ) => {
     180            if ( ! docs.includes( record.id ) ) {
     181                allSelected = false;
     182            } else {
     183                hasOneSelected = true;
     184            }
     185        });
     186
     187        if ( allSelected ) {
     188            setEntirePageSelected( true );
     189            setIndeterminate( false );
     190        } else if ( ! hasOneSelected ) {
     191            setIndeterminate( false );
     192        } else {
     193            setEntirePageSelected( false );
     194            setIndeterminate( true );
     195        }
     196    };
     197
     198    const handleFiltering = ( archives ) => {
     199        let newArchives = [ ...archives ];
     200        newArchives = handleSort( newArchives, sortBy, sortDirection );
     201        newArchives = newArchives.filter( ( archive ) => {
     202            return archive.title.toLowerCase().includes( searchValue.toLowerCase() );
     203        });
     204        return newArchives;
     205    };
     206
     207    const handleSort = ( rows, selector, direction ) => {
     208        if ( 0 === rows.length ) {
     209            return rows;
     210        }
     211        const multiplier = 'asc' === direction ? 1 : -1;
     212        if ( direction !== sortDirection ) {
     213            setSortDirection( direction );
     214        }
     215        const convertToBytes = ( size ) => {
     216            const units = {
     217                B: 1,
     218                KB: 1024,
     219                MB: 1024 * 1024
     220            };
     221
     222            const [ value, unit ] = size.split( ' ' );
     223
     224            return parseFloat( value ) * units[unit];
     225        };
     226        if ( -1 !== selector.toString().indexOf( 'title' ) && 'title' !== sortBy ) {
     227            setSortBy( 'title' );
     228        } else if ( -1 !== selector.toString().indexOf( 'size' ) && 'size' !== sortBy ) {
     229            setSortBy( 'size' );
     230        }
     231        if ( 'title' === sortBy ) {
     232            rows.sort( ( a, b ) => {
     233                const [ yearA, monthA ] = a.id.replace( '.zip', '' ).split( '-' ).map( Number );
     234                const [ yearB, monthB ] = b.id.replace( '.zip', '' ).split( '-' ).map( Number );
     235
     236                if ( yearA !== yearB ) {
     237                    return multiplier * ( yearA - yearB );
     238                }
     239                return multiplier * ( monthA - monthB );
     240            });
     241        } else if ( 'size' === sortBy ) {
     242            rows.sort( ( a, b ) => {
     243                const sizeA = convertToBytes( a.size );
     244                const sizeB = convertToBytes( b.size );
     245
     246                return multiplier * ( sizeA - sizeB );
     247            });
     248        }
     249        return rows;
     250    };
     251
     252    const columns = [
     253        {
     254            name: (
     255              <input
     256                type="checkbox"
     257                className={indeterminate ? 'burst-indeterminate' : ''}
     258                checked={entirePageSelected}
     259                disabled={fetching || 0 === archives.length || restoring}
     260                onChange={( e ) => handleSelectEntirePage( e.target.checked )}
     261              />
     262            ),
     263            selector: ( row ) => row.selectControl,
     264            width: '60px',
     265        },
     266        {
     267            name: __( 'Archive', 'burst-statistics' ),
     268            selector: ( row ) => row.title,
     269            sortable: true,
     270        },
     271        {
     272            name: __( 'Size', 'burst-statistics' ),
     273            selector: ( row ) => row.size,
     274            sortable: true,
     275            width: '120px',
     276            style: {
     277                justifyContent: 'flex-end', // replaces right:true
     278            },
     279        }
     280    ];
     281
     282    let filteredArchives = handleFiltering( archives );
     283    let data = [];
     284    filteredArchives.forEach( ( archive ) => {
     285        let archiveCopy = { ...archive };
     286        archiveCopy.selectControl = (
     287          <input
     288            type="checkbox"
     289            className="m-0"
     290            disabled={archiveCopy.restoring || restoring}
     291            checked={selectedArchives.includes( archiveCopy.id )}
     292            onChange={( e ) => onSelectArchive( e.target.checked, archiveCopy.id )}
     293          />
     294        );
     295        data.push( archiveCopy );
     296    });
     297
     298    let showDownloadButton = 1 < selectedArchives.length;
     299    if ( ! showDownloadButton && 1 === selectedArchives.length ) {
     300        let currentSelected = archives.filter( ( archive ) =>
     301          selectedArchives.includes( archive.id )
     302        );
     303        showDownloadButton =
     304          currentSelected.hasOwnProperty( 0 ) &&
     305          '' !== currentSelected[0].download_url;
     306    }
     307    //with just one month to restore, progress will always be zero. So we show 50% by default until it's finished.
     308    console.log("selected arhcives count ", selectedArchives.length)
     309    const defaultProgresss = selectedArchives.length >= 1 ? 5 : 50;
     310    return (
     311      <div className="w-full p-6">
     312          <div className="flex py-2.5 px-6 justify-between">
     313              <input
     314                type="text"
     315                placeholder={__( 'Search', 'burst-statistics' )}
     316                value={searchValue}
     317                onChange={( e ) => setSearchValue( e.target.value )}
     318              />
     319
     320              {
     321                restoring && <div className="flex items-center justify-end text-gray-400 w-full gap-1">{progress === 0 ? defaultProgresss : progress } %<Icon name="loading" color="gray"/></div>
     322              }
     323          </div>
     324
     325          {
     326            0 < selectedArchives.length && (
     327              <div className="mt-[10px] mb-[10px] items-center bg-blue-light py-2.5 px-6 flex space-y-2">
     328                  <div className="flex mb-4 mt-4 justify-between items-center w-full">
     329                      <div>
     330                          {
     331                              selectedArchives.length > 0 && sprintf( _n( '%s item selected', '%s items selected', selectedArchives.length, 'burst-statistics' ), selectedArchives.length )
     332                          }
     333                      </div>
     334
     335                      <div className="flex gap-2.5">
     336                          {
     337                              showDownloadButton && (
     338                                <button
     339                                  disabled={ downloading || ( progress && 100 > progress ) }
     340                                  className="burst-button burst-button--secondary"
     341                                  onClick={ ( e ) => downloadArchives( e ) }
     342                                >
     343                                    { __( 'Download', 'burst-statistics' ) }
     344
     345                                    { downloading && <Icon name="loading" color="gray"/> }
     346                                </button>
     347                             )
     348                          }
     349
     350                          <button
     351                            disabled={ progress && 100 > progress }
     352                            className="burst-button burst-button--primary"
     353                            onClick={ ( e ) => onRestoreArchives( e, selectedArchives ) }
     354                          >
     355                              { __( 'Restore', 'burst-statistics' ) }
     356                              { 100 > progress && <Icon name="loading" color="gray"/> }
     357                          </button>
     358
     359                          <button
     360                            disabled={ progress && 100 > progress }
     361                            className="burst-button burst-button--tertiary"
     362                            onClick={ ( e ) => onDeleteArchives( e, selectedArchives ) }
     363                          >
     364                              { __( 'Delete', 'burst-statistics' ) }
     365                          </button>
     366                      </div>
     367                  </div>
     368              </div>
     369            )
     370          }
     371
     372          {
     373            DataTable && (
     374              <DataTable
     375                columns={columns}
     376                data={data}
     377                dense
     378                paginationPerPage={10}
     379                onChangePage={handlePageChange}
     380                paginationState={pagination}
     381                persistTableHead
     382                defaultSortFieldId={2}
     383                pagination
     384                paginationRowsPerPageOptions={[ 10, 25, 50 ]}
     385                paginationComponentOptions={
     386                    {
     387                        rowsPerPageText: '',
     388                        rangeSeparatorText: __( 'of', 'burst-statistics' ),
     389                        noRowsPerPage: false,
     390                        selectAllRowsItem: true,
     391                        selectAllRowsItemText: __( 'All', 'burst-statistics' )
     392                    }
     393                }
     394                noDataComponent={
     395                    <div className="p-8">
     396                                { __( 'No archives', 'burst-statistics' ) }
     397                            </div>
     398                }
     399                sortFunction={handleSort}
     400              />
     401            )
     402          }
     403        </div>
     404    );
    380405});
    381406
  • burst-statistics/trunk/includes/Admin/App/src/components/Fields/TextField.jsx

    r3377993 r3406692  
    1717  ({ field, fieldState, label, help, context, className, ...props }, ref ) => {
    1818    const inputId = props.id || field.name;
    19       if (inputId==='archive_after_months'){
    20           console.log(field)
    21       }
    2219    return (
    2320      <FieldWrapper
  • burst-statistics/trunk/includes/Admin/App/src/components/Filters/Modal/Setup/StringFilterSetup.tsx

    r3392751 r3406692  
     1// typescript
    12import React, {useState, useRef, useEffect, useCallback} from 'react';
    23import { __ } from '@wordpress/i18n';
     
    4243    const textInputRef = useRef<HTMLInputElement>(null);
    4344    const [availableOptions, setAvailableOptions] = useState<SelectOption[]>([]);
     45    const [filteredOptions, setFilteredOptions] = useState<SelectOption[]>([]);
    4446    const [searchTerm, setSearchTerm] = useState<string>('');
    4547    const [hasFullDataset, setHasFullDataset] = useState<boolean>(false);
     
    6264
    6365            setAvailableOptions(transformedOptions);
     66            // ensure dropdown shows all options by default
     67            setFilteredOptions(transformedOptions);
    6468            // If we got less than 1000 options, we have the full dataset
    6569            setHasFullDataset(transformedOptions.length < 1000);
     
    8084
    8185            setAvailableOptions(transformedOptions);
     86            // if search is empty, mirror into filteredOptions so dropdown shows items
     87            if (!search) {
     88                setFilteredOptions(transformedOptions);
     89            }
    8290        }, 300),
    8391        [config.options, getFilterOptions]
     
    119127
    120128    // Load options function for AsyncSelectInput
    121     const loadOptions = (inputValue: string, callback: (options: SelectOption[]) => void) => {
     129    const loadOptions = async(inputValue?: string, callback?: (options: SelectOption[]) => void) => {
     130        const input = String(inputValue ?? '').toLowerCase();
     131
    122132        // Update search term for reloadOnSearch functionality
    123         setSearchTerm(inputValue);
    124 
    125         // If still loading, return empty array
    126         if (isLoading) {
    127             callback([]);
     133        setSearchTerm(input);
     134
     135        // If still loading or error, return empty array via callback
     136        if (isLoading || isError) {
     137            callback?.([]);
    128138            return;
    129139        }
    130140
    131         // If error, return empty array
    132         if (isError) {
    133             callback([]);
     141        // If no available options yet, return empty array
     142        if (!availableOptions.length) {
     143            callback?.([]);
    134144            return;
    135145        }
    136146
    137         if (!availableOptions.length) {
    138             callback([]);
     147        // If input is empty, return all available options
     148        if (input.length === 0) {
     149            callback?.(availableOptions);
     150            setFilteredOptions(availableOptions);
    139151            return;
    140152        }
    141153
    142         // If reloadOnSearch is enabled, we have the full dataset, or search < 3 chars
    143         // do client-side filtering
    144         if (hasFullDataset || !config.reloadOnSearch || inputValue.length < 3) {
    145             const filteredOptions = availableOptions.filter(function (option) {
    146                 const label = (option.label ?? '').toLowerCase();
    147                 const value = (option.value ?? '').toLowerCase();
    148                 const input = inputValue.toLowerCase();
    149 
    150                 return label.includes(input) || value.includes(input);
    151             });
    152             callback(filteredOptions);
    153             return;
    154         }
    155 
    156         // For server-side filtering (reloadOnSearch enabled, 3+ chars, large dataset)
    157         // the options are already being fetched via useEffect
    158         callback(availableOptions);
     154        // Always do client-side filtering on the available options
     155        const filtered = availableOptions.filter(function (option) {
     156            const label = String(option.label ?? '').toLowerCase();
     157            const value = String(option.value ?? '').toLowerCase();
     158            return label.includes(input) || value.includes(input);
     159        });
     160
     161        callback?.(filtered);
     162        setFilteredOptions(filtered);
    159163    };
    160164
     
    191195        }
    192196
    193         // Custom placeholders based on filter type
    194197        switch (filterKey) {
    195198            case 'page_url':
     
    222225                </label>
    223226
    224                 {/* Always render the same input type based on config.options */}
    225227                {config.options ? (
    226228                    <AsyncSelectInput
     
    229231                        onChange={handleSelectChange}
    230232                        loadOptions={loadOptions}
    231                         defaultOptions={availableOptions}
     233                        defaultOptions={filteredOptions}
    232234                        placeholder={getPlaceholder()}
    233235                        isSearchable={true}
     
    235237                        disabled={false}
    236238                        insideModal={true}
     239                        allowCustomValue={filteredOptions.length===0}
    237240                    />
    238241                ) : (
  • burst-statistics/trunk/includes/Admin/App/src/components/Goals/GoalsSettings.js

    r3392751 r3406692  
    9696                  className={
    9797                    predefinedGoalsButtonClass +
    98                     ' burst-button burst-button--secondary'
     98                    ' burst-button burst-button--secondary burst-add-predefined-goal'
    9999                  }
    100100                  onClick={() => {
     
    114114                  sideOffset={5}
    115115                  align={'end'}
    116                   className="z-50 flex flex-col gap-2 rounded-lg border border-gray-400 bg-white p-2"
     116                  className="burst-predefined-goals-list z-50 flex flex-col gap-2 rounded-lg border border-gray-400 bg-white p-2"
    117117                >
    118118                  {predefinedGoals.map( ( goal, index ) => {
  • burst-statistics/trunk/includes/Admin/App/src/components/Sales/Funnel/FunnelStepStatistics.tsx

    r3392754 r3406692  
    3030                                step.isHighestDropOff ? 'bg-red-light' : 'bg-gray-200'
    3131                            }`}>
    32                                 <tspan className={`text-xl font-bold text-center ${
     32                                <span className={`text-xl font-bold text-center ${
    3333                                    step.isHighestDropOff ? 'text-red' : 'text-gray-700'
    3434                                }`}>
    3535                                    {step.dropOffPercentage.toFixed(step.dropOffPercentage > 0 && step.dropOffPercentage < 10 ? 1 : 0)}%
    36                                 </tspan>
    37                                 <tspan className="text-xxs uppercase tracking-wide text-gray-600">
     36                                </span>
     37                                <span className="text-xxs uppercase tracking-wide text-gray-600">
    3838                                    drop-off
    39                                 </tspan>
     39                                </span>
    4040                            </div>
    4141                           
    4242                            {/* Secondary Metric: Lost sessions (smaller font) */}
    43                             {step.dropOff !== null && step.dropOff > 0 && (
     43                            {step.dropOff !== null && step.dropOff >= 0 && (
    4444                                <span className="text-xs text-center text-gray mt-1">
    4545                                    {sprintf(__("%d lost visitors", "burst-statistics"), step.dropOff)}
  • burst-statistics/trunk/includes/Admin/App/src/components/Sales/QuickWins.tsx

    r3392754 r3406692  
    1212import Icon from "@/utils/Icon";
    1313import { Root, Trigger, Content, Close } from '@radix-ui/react-popover';
    14 import { useEffect, useState } from "react";
     14import { useMemo } from "react";
    1515import { doAction } from "@/utils/api";
    1616import { toast } from 'react-toastify';
    1717import { motion, AnimatePresence } from "framer-motion";
     18import { formatUnixToDate } from "@/utils/formatting";
     19import Tooltip from "@/components/Common/Tooltip";
    1820
    1921
     
    2931}
    3032
     33interface DateRange {
     34    date_start: number;
     35    date_end: number;
     36}
     37
    3138interface QuickWinsData {
    3239    quickWins: QuickWinItem[];
    33 }
    34 
    35 const blockHeadingProps = {
    36     title: __( 'Opportunities', 'burst-statistics' ),
    37 }
     40    dateRange: DateRange | null;
     41}
     42
    3843
    3944const blockContentProps = {
     
    6469    const { startDate, endDate, range } = useDate( ( state ) => state );
    6570    const filters = useFiltersStore( ( state ) => state.filters );
    66     const [ quickWins, setQuickWins ] = useState< QuickWinItem[] | null >(null);
    6771    const queryClient = useQueryClient();
    6872
    6973    const quickWinsQuery = useQuery<QuickWinsData | null>(
    7074        {
    71             queryKey: [ 'quickWins', startDate, endDate, range, filters ],
     75            queryKey: [ 'quickWins' ],
    7276            queryFn: () => getQuickWins( { startDate, endDate, range, filters } ),
    7377            placeholderData: null,
     
    8589        },
    8690        onMutate: async (key: string) => {
    87             await queryClient.cancelQueries({ queryKey: ['quickWins', startDate, endDate, range, filters] });
    88 
    89             const previousData = queryClient.getQueryData<QuickWinsData | null>(['quickWins', startDate, endDate, range, filters]);
     91            await queryClient.cancelQueries({ queryKey: ['quickWins'] });
     92
     93            const previousData = queryClient.getQueryData<QuickWinsData | null>(['quickWins']);
    9094
    9195            if (previousData?.quickWins) {
     
    9498                    quickWins: previousData.quickWins.filter(item => item.key !== key),
    9599                };
    96                 queryClient.setQueryData(['quickWins', startDate, endDate, range, filters], newData);
     100                queryClient.setQueryData(['quickWins'], newData);
    97101            }
    98102
     
    102106            // Rollback if mutation fails or backend returned success=false
    103107            if (context?.previousData) {
    104                 queryClient.setQueryData(['quickWins', startDate, endDate, range, filters], context.previousData);
     108                queryClient.setQueryData(['quickWins'], context.previousData);
    105109            }
    106110
     
    119123        },
    120124        onMutate: async (key: string) => {
    121             await queryClient.cancelQueries({ queryKey: ['quickWins', startDate, endDate, range, filters] });
    122 
    123             const previousData = queryClient.getQueryData<QuickWinsData | null>(['quickWins', startDate, endDate, range, filters]);
     125            await queryClient.cancelQueries({ queryKey: ['quickWins'] });
     126
     127            const previousData = queryClient.getQueryData<QuickWinsData | null>(['quickWins']);
    124128
    125129            if (previousData?.quickWins) {
     
    128132                    quickWins: previousData.quickWins.filter(item => item.key !== key),
    129133                };
    130                 queryClient.setQueryData(['quickWins', startDate, endDate, range, filters], newData);
     134                queryClient.setQueryData(['quickWins'], newData);
    131135            }
    132136
     
    136140            // Rollback if mutation fails or backend returned success=false
    137141            if (context?.previousData) {
    138                 queryClient.setQueryData(['quickWins', startDate, endDate, range, filters], context.previousData);
     142                queryClient.setQueryData(['quickWins'], context.previousData);
    139143            }
    140144
     
    144148    });
    145149
    146     const quickWinsData = quickWinsQuery.data || { quickWins: [] };
    147 
    148     useEffect( () => {
    149         if ( quickWinsData.quickWins ) {
    150             setQuickWins( quickWinsData.quickWins );
     150    const quickWinsData = quickWinsQuery.data || { quickWins: [], dateRange: null };
     151
     152    // Format date range for display.
     153    const dateControl = useMemo( () => {
     154        if ( ! quickWinsData.dateRange ) {
     155            return null;
    151156        }
    152     }, [ quickWinsData.quickWins ] );
     157
     158        const { date_start, date_end } = quickWinsData.dateRange;
     159        const formattedDateStart = formatUnixToDate( date_start );
     160        const formattedDateEnd = formatUnixToDate( date_end );
     161
     162        return (
     163            <Tooltip content={__("Identifying meaningful trends is a demanding process. To ensure your WordPress dashboard remains fast and responsive, we calculate these opportunities periodically. This gives you valuable insights from the past 30 days without slowing down your website.")}>
     164            <span className="cursor-help text-sm text-gray-900 flex items-center gap-2 bg-gray-100 p-2 rounded-md border border-gray-200">
     165                <Icon name='calendar' color='black' size={16} />
     166                { formattedDateStart } - { formattedDateEnd }
     167            </span>
     168            </Tooltip>
     169        );
     170    }, [ quickWinsData.dateRange ] );
     171
     172    const blockHeadingProps = {
     173        title: __( 'Opportunities', 'burst-statistics' ),
     174        controls: dateControl,
     175    };
    153176
    154177    const quickWinVariants = {
    155         hidden: { opacity: 0, y: -10 },
     178        hidden: { opacity: 0, y: 0 },
    156179        visible: { opacity: 1, y: 0 },
    157         exit: { opacity: 0, y: -10 },
     180        exit: { opacity: 0, x: 400 },
    158181    };
    159182
     
    167190                        <p className="p-6 text-sm text-gray-500">{ __( 'Loading...', 'burst-statistics' ) }</p>
    168191                    ) : (
    169                         quickWins && quickWins.length > 0 && quickWins ? (
    170                             <div className="flex h-full flex-col overflow-y-auto max-h-96">
     192                        quickWinsData.quickWins && quickWinsData.quickWins.length > 0 ? (
     193                            <div className="flex h-full flex-col overflow-y-auto overflow-x-hidden max-h-96">
    171194                                <AnimatePresence>
    172195                                    {
    173                                         quickWins.map(( quickWin ) => {
     196                                        quickWinsData.quickWins.map(( quickWin ) => {
    174197                                        if ( ! quickWin.type ) {
    175198                                            return null;
     
    185208                                                animate="visible"
    186209                                                exit="exit"
    187                                                 transition={{ duration: 0.5, ease: "easeOut" }}
     210                                                transition={{ duration: 0.3, ease: "easeInOut" }}
    188211                                                className="border-t border-gray-200 p-6 group"
    189212                                            >
     
    205228                                                    <Root>
    206229                                                        <Trigger asChild>
    207                                                             <button className='hidden group-hover:inline-block burst-button burst-button--secondary rounded-full bg-gray-300 p-2'>
     230                                                            <motion.button
     231                                                                whileHover={{ scale: 1.05 }}
     232                                                                className='opacity-0 scale-90 group-hover:opacity-100 group-hover:scale-100 burst-button burst-button--secondary rounded-full bg-gray-200 border border-gray-300 p-1 transition-all duration-200 ease-out'
     233                                                            >
    208234                                                                <Icon size={24} name='ellipsis' />
    209                                                             </button>
     235                                                            </motion.button>
    210236                                                        </Trigger>
    211237
     
    233259
    234260                                                {
    235                                                     url && (
    236                                                     <a
    237                                                         href={url}
    238                                                         target="_blank"
    239                                                         rel="noopener noreferrer"
    240                                                         className="items-center bg-blue-lightest pt-2 pb-2 pl-3 pr-3 rounded flex gap-3"
    241                                                     >
    242                                                         <Icon name='graph' color='blue' size={24} />
    243 
    244                                                         <p className='flex-1 text-sm font-semibold text-black'>{recommendation}</p>
    245 
    246                                                         <span className='shrink-0 text-xxs font-semibold text-black-light flex gap-1 items-center'>
    247                                                             { __( 'Read our guide', 'burst-statistics' ) }
    248                                                             <Icon name='right-arrow' color='black-light' size={24} className='inline-block' />
    249                                                         </span>
    250                                                     </a>
    251                                                 )}
     261                                                    recommendation && (
     262                                                        <div className="items-center bg-blue-lightest pt-2 pb-2 pl-3 pr-3 rounded flex gap-3">
     263                                                            <Icon name='graph' color='blue' size={24} />
     264
     265                                                            <p className='flex-1 text-sm font-semibold text-black'>{recommendation}</p>
     266
     267                                                            {
     268                                                                url && (
     269                                                                    <a
     270                                                                        href={url}
     271                                                                        target="_blank"
     272                                                                        rel="noopener noreferrer"
     273                                                                        className='shrink-0 text-base font-semibold text-black-light flex gap-1 items-center'
     274                                                                    >
     275                                                                        { __( 'Read our guide', 'burst-statistics' ) }
     276                                                                        <Icon name='right-arrow' color='black-light' size={24} className='inline-block' />
     277                                                                    </a>
     278                                                                )
     279                                                            }
     280                                                        </div>
     281                                                    )
     282                                                }
    252283                                            </motion.div>
    253284                                        );
  • burst-statistics/trunk/includes/Admin/App/src/components/Sales/Sales.tsx

    r3392754 r3406692  
    2020    [key: string]: {
    2121        title: string;
    22         subtitle: string;
     22        subtitle: string | null;
    2323        value: string;
    24         exactValue: number;
    25         change: string;
    26         changeStatus: string;
     24        exactValue: number | null;
     25        change: string | null;
     26        changeStatus: string | null;
    2727        icon?: string | null;
    2828    }
     
    3737    const { startDate, endDate, range } = useDate( ( state ) => state );
    3838    const filters = useFiltersStore( ( state ) => state.filters );
     39    const placeholderData: SalesData = {
     40        "conversion-rate": {
     41            title: __( "Conversion Rate", 'burst-statistics' ),
     42            value: "-",
     43            exactValue: null,
     44            subtitle: null,
     45            changeStatus: null,
     46            change: null,
     47            icon: "eye"
     48        },
     49        "abandonment-rate": {
     50            title: __( "Abandoned Carts", 'burst-statistics' ),
     51            value: "-",
     52            exactValue: null,
     53            subtitle: null,
     54            changeStatus: null,
     55            change: null,
     56            icon: "sessions"
     57        },
     58        "average-order": {
     59            title: __( "Average Order Value", 'burst-statistics' ),
     60            value: "-",
     61            exactValue: null,
     62            subtitle: null,
     63            changeStatus: null,
     64            change: null,
     65            icon: "visitors"
     66        },
     67        "revenue": {
     68            title: __( "Revenue", 'burst-statistics' ),
     69            value: "-",
     70            exactValue: null,
     71            subtitle: null,
     72            changeStatus: null,
     73            change: null,
     74            icon: "log-out"
     75        }
     76    };
    3977
    4078    const salesQuery = useQuery< SalesData | null >(
     
    4280            queryKey: [ 'sales', startDate, endDate, range, filters ],
    4381            queryFn: () => getSales( { startDate, endDate, range, filters } ),
    44             placeholderData: null,
     82            placeholderData: placeholderData,
    4583            gcTime: 10000
    4684        }
     
    5492
    5593    return (
    56         <Block className="row-span-2 lg:col-span-6 xl:col-span-3">
     94        <Block className="row-span-2 lg:col-span-6 xl:col-span-3 block-sales">
    5795            <BlockHeading { ...blockHeadingProps } />
    5896
     
    70108                                change={ value.change }
    71109                                changeStatus={ value.changeStatus }
     110                                className={ key }
    72111                            />
    73112                        );
  • burst-statistics/trunk/includes/Admin/App/src/components/Sales/TopPerformers.tsx

    r3392754 r3406692  
    5050    const [ selectedOption, setSelectedOption ] = useState( options[0].value );
    5151
     52    const placeholderData = {
     53        "top-product": {
     54            title: __( "Top product", 'burst-statistics' ),
     55            value: "-",
     56            exactValue: "-",
     57            change: null,
     58            changeStatus: "-"
     59        },
     60        "top-campaign": {
     61            title: __( "Top campaign", 'burst-statistics' ),
     62            value: "-",
     63            exactValue: "-",
     64            change: null,
     65            changeStatus: "-"
     66        },
     67        "top-country": {
     68            title: __( "Top country", 'burst-statistics' ),
     69            value: "-",
     70            exactValue: "-",
     71            change: null,
     72            changeStatus: "-"
     73        },
     74        "top-device": {
     75            title: __( "Top device", 'burst-statistics' ),
     76            value: "-",
     77            exactValue: "-",
     78            change: null,
     79            changeStatus: "-"
     80        }
     81    }
     82
    5283    const { data: rawData } = useQuery(
    5384        {
    5485            queryKey: [ 'top-performers', startDate, endDate, range, filters ],
    5586            queryFn: () => getTopPerformers( { startDate, endDate, range, filters } ),
    56             placeholderData: null,
     87            placeholderData: placeholderData,
    5788            gcTime: 10000,
    5889        }
     
    74105
    75106    return (
    76         <Block className="row-span-2 lg:col-span-6 xl:col-span-3">
     107        <Block className="row-span-2 lg:col-span-6 xl:col-span-3 block-top-performers">
    77108            <BlockHeading { ...blockHeadingProps } />
    78109
     
    88119                            change={ value.change }
    89120                            changeStatus={ value.changeStatus }
     121                            className={ key }
    90122                        />
    91123                    ) )
  • burst-statistics/trunk/includes/Admin/App/src/components/Sales/TopPerformersStats.tsx

    r3392754 r3406692  
    33interface TopPerformersProps {
    44    title: string;
    5     subtitle: string;
     5    subtitle: string | null;
    66    value: string | number;
    7     exactValue: number;
    8     change: string;
    9     changeStatus: string;
     7    exactValue: number | null;
     8    change: string | null;
     9    changeStatus: string | null;
     10    className?: string;
    1011}
    1112
     
    1516 * @param {Object} props Component props.
    1617 * @param {string} props.title Title of the item.
    17  * @param {string} props.subtitle Subtitle of the item.
     18 * @param {string|null} props.subtitle Subtitle of the item.
    1819 * @param {string|number} props.value Display value of the item.
    19  * @param {number} props.exactValue Exact numeric value for tooltip (if > 1000).
    20  * @param {string} props.change Change value to display.
    21  * @param {string} props.changeStatus Status of the change ('positive' or 'negative').
     20 * @param {number|null} props.exactValue Exact numeric value for tooltip (if > 1000).
     21 * @param {string|null} props.change Change value to display.
     22 * @param {string|null} props.changeStatus Status of the change ('positive' or 'negative').
     23 * @param {string} [props.className] Optional additional class names.
    2224 *
    2325 * @returns {JSX.Element} The rendered component.
     
    3032    change,
    3133    changeStatus,
     34    className = '',
    3235}: TopPerformersProps ): JSX.Element => {
    33     const tooltipValue = 1000 < exactValue ? exactValue : false;
     36    let tooltipValue;
     37    if ( ! exactValue || exactValue < 1000 ) {
     38        tooltipValue = false;
     39    } else {
     40        tooltipValue = exactValue;
     41    }
     42
    3443    return (
    35         <div className="flex items-center gap-3 py-2">
    36             <div className="flex-1 flex flex-col justify-center">
     44        <div className={`flex items-center gap-3 py-2 ${ className }`}>
     45            <div className="flex-1 flex flex-col justify-center label">
    3746                <h3 className="text-sm font-normal text-gray">{ title }</h3>
    3847
     
    4756                        (
    4857                            <HelpTooltip content={ tooltipValue } delayDuration={ 1000 }>
    49                                 <span className="text-xl font-bold text-black">{ value }</span>
     58                                <span className="text-xl font-bold text-black value">{ value }</span>
    5059                            </HelpTooltip>
    5160                        ) :
    52                         <span className="text-xl font-bold text-black">{ value }</span>
     61                        <span className="text-xl font-bold text-black value">{ value }</span>
    5362                }
    5463
  • burst-statistics/trunk/includes/Admin/App/src/components/Settings/Settings.js

    r3377993 r3406692  
    1616  const { saveGoals } = useGoalsData();
    1717  const settingsId = currentSettingPage.id;
    18   const currentFormDefaultValues = useMemo(
    19     () => extractFormValuesPerMenuId( settings, settingsId ),
    20     [ settings ]
     18
     19  const initialDefaultValues = useMemo(
     20      () => extractFormValuesPerMenuId(settings, settingsId),
     21      []
    2122  );
    2223
     
    2829      reset
    2930  } = useForm({
    30     defaultValues: currentFormDefaultValues,
     31    defaultValues: initialDefaultValues,
    3132  });
    32 
    33 // reset form state to match defaultValues exactly
    34   useEffect(() => {
    35     reset(currentFormDefaultValues);
    36   }, [currentFormDefaultValues, reset]);
    3733
    3834  const watchedValues = useWatch({ control });
     
    4339          .filter((setting) => setting.menu_id === settingsId && setting.group_id === group.id)
    4440          .filter((setting) => {
    45             if (!setting.react_conditions) return true;
     41            if ( !setting.react_conditions ) {
     42                return true;
     43            }
    4644            return Object.entries(setting.react_conditions).every(([field, allowedValues]) => {
    4745              const value = watchedValues?.[field];
     46              if (!Array.isArray(allowedValues)) {
     47                return value === allowedValues;
     48              }
     49              if (Array.isArray(value)) {
     50                return allowedValues.some(allowedValue =>
     51                    Array.isArray(allowedValue) &&
     52                    value.length === allowedValue.length &&
     53                    value.every((val, index) => val === allowedValue[index])
     54                );
     55              }
    4856              return allowedValues.includes(value);
    4957            });
     
    8290                      return acc;
    8391                    }, {});
    84                     saveSettings(changedData);
     92                    saveSettings(changedData).then(() => {
     93                      reset(formData, {
     94                        keepValues: true,
     95                        keepDefaultValues: false  // <- Belangrijk! Update de defaultValues
     96                      });
     97                    });
    8598                    saveGoals();
    8699                  })}
     
    97110  const formValues = {};
    98111  settings.forEach(setting => {
    99     //if (setting.menu_id === menuId) {
     112    if (setting.menu_id === menuId) {
    100113      const hasValue = setting.value !== undefined && setting.value !== '';
    101114      formValues[setting.id] = hasValue ? setting.value : setting.default;
    102     //}
     115    }
    103116  });
    104117  return { ...formValues }; // <- force new object reference
  • burst-statistics/trunk/includes/Admin/App/src/components/Settings/SettingsGroupBlock.jsx

    r3392751 r3406692  
    4444          <div className="flex flex-wrap">
    4545            {fields.map( ( field, i ) => (
    46               <ErrorBoundary key={i} fallback={'Could not load field'}>
     46              <ErrorBoundary key={field.id} fallback={'Could not load field'}>
    4747                <Field
    48                   key={i}
    49                   index={i}
    5048                  setting={field}
    5149                  control={control}
  • burst-statistics/trunk/includes/Admin/App/src/components/Upsell/UpsellOverlay.tsx

    r3377993 r3406692  
    1919}) => {
    2020  return (
    21     <div className={`absolute inset-0 z-50 ${className}`}>
     21    <div className={`burst-upsell-overlay absolute inset-0 z-50 ${className}`}>
    2222      {/* Backdrop with blur effect and lttle darker */}
    2323      <div className="absolute inset-0 backdrop-blur-sm" />
  • burst-statistics/trunk/includes/Admin/App/src/hooks/useGoalsData.js

    r3392751 r3406692  
    1515const useGoalsData = () => {
    1616    const queryClient = useQueryClient();
    17 
     17    const { isPro } = useLicenseData();
    1818    // Main query to fetch goals, predefined goals, and goal fields
    1919    const goalsQuery = useQuery({
     
    186186    const addPredefinedGoalMutation = useMutation({
    187187        mutationFn: async ({predefinedGoalId}) => {
    188             const {
    189                 isPro,
    190             } = useLicenseData();
    191 
    192188            if (!isPro) {
    193189                throw new Error(__('Predefined goals are a premium feature.', 'burst-statistics'));
  • burst-statistics/trunk/includes/Admin/App/src/hooks/useLiveVisitorsData.js

    r3377993 r3406692  
    1 import { useQuery } from '@tanstack/react-query';
    2 import { useRef } from 'react';
     1import { useQuery } from '@tanstack/react-query'
     2import { useRef } from 'react'
    33import getLiveVisitors from '../api/getLiveVisitors';
    44
     
    1010export const useLiveVisitorsData = () => {
    1111    const intervalRef = useRef( 5000 );
    12 
    1312    return useQuery(
    1413        {
     
    1817            placeholderData: '-',
    1918            onError: () => {
    20                 intervalRef.current = 0; // stop refreshing if error
     19                intervalRef.current = 0; // Stop refreshing if error.
    2120            },
    2221            gcTime: 10000,
  • burst-statistics/trunk/includes/Admin/App/src/hooks/useSettingsData.ts

    r3392751 r3406692  
    3535        queryFn: async () => {
    3636            const fields = await getFields();
    37             console.log(fields);
    3837            return fields.fields as SettingField[];
    3938        },
  • burst-statistics/trunk/includes/Admin/App/src/index.tsx

    r3377993 r3406692  
    2121  interface Window {
    2222    burst_settings?: {
    23       isPro?: boolean;
     23      is_pro?: string;
     24      view_sales_burst_statistics?: string;
    2425      [key: string]: any;
    2526    };
     
    6364
    6465const queryClient = new QueryClient(config);
    65 const isPro = window.burst_settings?.isPro;
     66const isPro = window.burst_settings?.is_pro;
     67const canViewSales = window.burst_settings?.view_sales_burst_statistics;
    6668
    6769// Create the router with improved loading state
     
    7173    queryClient,
    7274    isPro,
     75    canViewSales,
    7376  },
    7477  defaultPendingComponent: () => <PendingComponent />,
  • burst-statistics/trunk/includes/Admin/App/src/routes/__root.jsx

    r3377993 r3406692  
    66
    77export const Route = createRootRoute({
    8   component: () => {
    9     return (
    10       <ErrorBoundary>
    11         <Header />
    12         <Suspense fallback={<div className="p-4">Loading...</div>}>
    13           <div className="mx-auto flex max-w-screen-2xl">
    14             <div
    15                 className="grid-rows-auto p-3 grid min-h-full w-full grid-cols-12 gap-3 lg:p-5 lg:gap-5 relative">
    16               <Outlet/>
    17             </div>
    18           </div>
    19         </Suspense>
    20         {'development' === process.env.NODE_ENV && (
    21             <Suspense>
    22               <TanStackRouterDevtools/>
    23             </Suspense>
    24         )}
    25       </ErrorBoundary>
    26     );
    27   }
     8    component: () => {
     9        return (
     10            <ErrorBoundary>
     11                <Header />
     12
     13                <Suspense fallback={<div className="p-4">Loading...</div>}>
     14                    <div className="mx-auto flex max-w-screen-2xl">
     15                        <div className="grid-rows-auto p-3 grid min-h-full w-full grid-cols-12 gap-3 lg:p-5 lg:gap-5 relative">
     16                            <Outlet/>
     17                        </div>
     18                    </div>
     19
     20                </Suspense>
     21
     22                {'development' === process.env.NODE_ENV && (
     23                    <Suspense>
     24                        <TanStackRouterDevtools/>
     25                    </Suspense>
     26                )}
     27            </ErrorBoundary>
     28        );
     29    },
     30    errorComponent: ({ error }) => {
     31        console.log('Root Route Error:', error);
     32    }
    2833});
  • burst-statistics/trunk/includes/Admin/App/src/routes/sales.jsx

    r3392754 r3406692  
    1818import { EcommerceNotices } from '@/components/Upsell/Sales/EcommerceNotices';
    1919import UpsellCopy from '@/components/Upsell/UpsellCopy';
     20import UnauthorizedModal from '@/components/Common/UnauthorizedModal'
    2021
    2122export const Route = createFileRoute( '/sales' )({
     23    beforeLoad: ( { context } ) => {
     24        let canAccessSales = false;
     25
     26        if ( context?.canViewSales === '1' ) {
     27            canAccessSales = true;
     28        }
     29
     30        if ( ! canAccessSales ) {
     31            throw {
     32                type: 'UNAUTHORIZED',
     33                message: __( 'You do not have permission to view sales data.', 'burst-statistics' ),
     34            };
     35        }
     36    },
    2237    component: SalesComponent,
    23     errorComponent: ( { error } ) => (
    24       <div className="text-red-500 p-4">
    25           { error.message || __( 'An error occurred loading statistics', 'burst-statistics' ) }
    26       </div>
    27     )
     38    errorComponent: ( { error } ) => {
     39        if ( 'UNAUTHORIZED' === error.type ) {
     40            return (
     41                <UnauthorizedModal
     42                    header={ __( "Unauthorized Access", "burst-statistics" ) }
     43                    message={ error.message }
     44                    actionLabel={ __( "Go Back", "burst-statistics" ) }
     45                />
     46            );
     47        }
     48
     49        return (
     50            <div className = "text-red-500 p-4">
     51                { error.message || __('An error occurred loading statistics', 'burst-statistics') }
     52            </div>
     53        );
     54    },
     55
    2856});
    2957
  • burst-statistics/trunk/includes/Admin/App/src/routes/statistics.jsx

    r3392751 r3406692  
    2121
    2222function Statistics() {
    23     const {
    24         isPro,
    25     } = useLicenseData();
    26   const blockOneItems = ['pages'];
    27   const blockTwoItems = isPro ? ['parameters'] : ['referrers'];
    28   return (
    29       <>
    30         <div className="col-span-12 flex justify-between items-center">
    31           <ErrorBoundary>
    32             <PageFilter/>
    33           </ErrorBoundary>
    34           <ErrorBoundary>
    35             <DateRange/>
    36           </ErrorBoundary>
    37         </div>
    38         <ErrorBoundary>
    39           <InsightsBlock/>
    40         </ErrorBoundary>
    41         <ErrorBoundary>
    42           <CompareBlock/>
    43         </ErrorBoundary>
    44         <ErrorBoundary>
    45           <DevicesBlock/>
    46         </ErrorBoundary>
    47         <ErrorBoundary>
    48           <DataTableBlock
    49               allowedConfigs={blockOneItems}
    50               id={1}
    51           />
    52         </ErrorBoundary>
    53         <ErrorBoundary>
    54           <DataTableBlock
    55               allowedConfigs={blockTwoItems}
    56               id={2}
    57           />
    58         </ErrorBoundary>
    59       </>
    60   );
     23    const { isPro } = useLicenseData();
     24    const blockOneItems = ['pages'];
     25    const blockTwoItems = isPro ? ['parameters'] : ['referrers'];
     26    return (
     27        <>
     28            <div className="col-span-12 flex justify-between items-center">
     29                <ErrorBoundary>
     30                    <PageFilter/>
     31                </ErrorBoundary>
     32
     33                <ErrorBoundary>
     34                    <DateRange/>
     35                </ErrorBoundary>
     36            </div>
     37
     38            <ErrorBoundary>
     39                <InsightsBlock/>
     40            </ErrorBoundary>
     41
     42            <ErrorBoundary>
     43                <CompareBlock/>
     44            </ErrorBoundary>
     45
     46            <ErrorBoundary>
     47                <DevicesBlock/>
     48            </ErrorBoundary>
     49
     50            <ErrorBoundary>
     51                <DataTableBlock allowedConfigs={blockOneItems} id={1} />
     52            </ErrorBoundary>
     53
     54            <ErrorBoundary>
     55                <DataTableBlock allowedConfigs={blockTwoItems} id={2} />
     56            </ErrorBoundary>
     57        </>
     58    );
    6159}
  • burst-statistics/trunk/includes/Admin/App/src/store/useArchivesStore.js

    r3392751 r3406692  
    33import {toast} from 'react-toastify';
    44import {__} from '@wordpress/i18n';
    5 import useLicenseData from "@/hooks/useLicenseData";
    65const useArchiveStore = create( ( set, get ) => ({
    7     archivesLoaded: false,
    86    fetching: false,
    97    restoring: false,
     
    3028        });
    3129    },
    32     fetchData: async( ) => {
    33         const {
    34             isPro,
    35         } = useLicenseData();
    36         if ( !isPro ) {
     30    fetchData: async( isPro ) => {
     31        if ( ! isPro ) {
    3732            return;
    3833        }
     34
    3935        if ( get().fetching ) {
    4036            return;
    4137        }
    42         set({fetching: true});
     38
     39        set( { fetching: true } );
     40
    4341        let data = {};
    44         const { archives, downloadUrl} = await doAction( 'get_archives', data ).then( ( response ) => {
     42
     43        const { archives, downloadUrl } = await doAction( 'get_archives', data ).then( ( response ) => {
    4544            return response;
    4645        }).catch( ( error ) => {
    4746            console.error( error );
    4847        });
     48
    4949        set( () => ({
    50             archivesLoaded: true,
    5150            archives: archives,
    5251            downloadUrl: downloadUrl,
    53             fetching: false
     52            fetching: false,
     53            restoring: archives.some( ( archive ) => archive.restoring === true )
    5454        }) );
    5555    },
     
    6060        });
    6161
    62         //set 'selectedArchives' to 'restoring' status
     62        // set 'selectedArchives' to 'restoring' status.
    6363        set( ( state ) => ({
    6464            archives: state.archives.map( ( archive ) => {
     
    7676        });
    7777    },
    78 
    7978    fetchRestoreArchivesProgress: async() => {
    80         set({ restoring: true });
    81         const {progress, noData} = await doAction( 'get_restore_progress', {}).then( ( response ) => {
     79        set( { restoring: true } );
     80        const { progress, noData } = await doAction( 'get_restore_progress', {}).then( ( response ) => {
    8281            return response;
    8382        }).catch( ( error ) => {
    8483            console.error( error );
    8584        });
     85
    8686        let restoring = false;
     87
    8788        if ( 100 > progress ) {
    8889            restoring = true;
    8990        }
    90         set({progress: progress, restoring: restoring, noData: noData});
     91
     92        set( { progress: progress, restoring: restoring, noData: noData } );
     93
    9194        if ( 100 === progress ) {
    92 
    93             //exclude all archives where restoring = true
     95            // exclude all archives where restoring = true.
    9496            let archives = get().archives.filter( ( archive ) => {
    9597                return ! archive.restoring;
    96             });
    97             set({archives: archives});
     98            } );
     99            set( { archives: archives } );
    98100        }
     101
     102        return { progress, noData, restoring };
    99103    }
    100104}) );
  • burst-statistics/trunk/includes/Admin/App/src/store/useTasksStore.js

    r3377993 r3406692  
    4242            .map(key => tasks[key]);
    4343      } else {
    44         console.log("tasks array has unexpected format: ", tasks );
    4544        tasksArray = [];
    4645      }
  • burst-statistics/trunk/includes/Admin/App/src/tailwind.generated.css

    r3392751 r3406692  
    10191019}
    10201020
    1021 #burst-statistics .my-2\.5 {
    1022   margin-top: 0.625rem;
    1023   margin-bottom: 0.625rem;
    1024 }
    1025 
    10261021#burst-statistics .my-auto {
    10271022  margin-top: auto;
     
    10611056}
    10621057
     1058#burst-statistics .mb-8 {
     1059  margin-bottom: 2rem;
     1060}
     1061
    10631062#burst-statistics .mb-\[10px\] {
    10641063  margin-bottom: 10px;
     
    12011200}
    12021201
     1202#burst-statistics .h-14 {
     1203  height: 3.5rem;
     1204}
     1205
    12031206#burst-statistics .h-2 {
    12041207  height: 0.5rem;
     
    13431346#burst-statistics .w-12 {
    13441347  width: 3rem;
     1348}
     1349
     1350#burst-statistics .w-14 {
     1351  width: 3.5rem;
    13451352}
    13461353
     
    15131520}
    15141521
     1522#burst-statistics .max-w-lg {
     1523  max-width: 32rem;
     1524}
     1525
    15151526#burst-statistics .max-w-md {
    15161527  max-width: 28rem;
     
    15881599#burst-statistics .rotate-45 {
    15891600  --tw-rotate: 45deg;
     1601  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
     1602}
     1603
     1604#burst-statistics .scale-90 {
     1605  --tw-scale-x: .9;
     1606  --tw-scale-y: .9;
    15901607  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
    15911608}
     
    23982415}
    23992416
     2417#burst-statistics .whitespace-pre-line {
     2418  white-space: pre-line;
     2419}
     2420
    24002421#burst-statistics .break-words {
    24012422  overflow-wrap: break-word;
     
    30193040  --tw-bg-opacity: 1;
    30203041  background-color: rgb(198 39 59 / var(--tw-bg-opacity, 1));
     3042}
     3043
     3044#burst-statistics .bg-red-100 {
     3045  --tw-bg-opacity: 1;
     3046  background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1));
    30213047}
    30223048
     
    73527378}
    73537379
    7354 #burst-statistics :is(.group:hover .group-hover\:inline-block) {
    7355   display: inline-block;
    7356 }
    7357 
    73587380#burst-statistics :is(.group:hover .group-hover\:max-h-32) {
    73597381  max-height: 8rem;
     7382}
     7383
     7384#burst-statistics :is(.group:hover .group-hover\:scale-100) {
     7385  --tw-scale-x: 1;
     7386  --tw-scale-y: 1;
     7387  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
    73607388}
    73617389
  • burst-statistics/trunk/includes/Admin/App/src/utils/api.js

    r3392751 r3406692  
    7676};
    7777
    78 const makeRequest = async (path, method = 'GET', data = {}) => {
    79   let args = { path, method };
    80 
    81   if (method === 'POST') {
    82     data.nonce = burst_settings.burst_nonce;
    83     args.data = data;
    84   }
    85 
    86   try {
    87     const response = await apiFetch(args);
    88 
    89     if (!response.request_success) {
    90       if (Object.prototype.hasOwnProperty.call(response, 'message')) {
    91         throw new Error(response.message);
    92       } else {
    93         throw new Error('Received unexpected response from server. Please check if the Rest API is enabled.');
    94       }
    95     }
    96 
    97     if (response.code && response.code !== 200) {
    98       throw new Error(response.message);
    99     }
    100 
    101     delete response.request_success;
    102     return response;
    103 
    104   } catch (error) {
    105     try {
    106       // Wait for ajaxRequest to resolve before continuing
    107       return await ajaxRequest(method, path, data);
    108     } catch {
    109       generateError(error.message, args.path);
    110       throw error;
    111     }
    112   }
    113 };
     78const makeRequest = async ( path, method = 'GET', data = {} ) => {
     79    const controller = new AbortController();
     80    const signal = controller.signal;
     81    let args = { path, method, signal };
     82
     83    if ( method === 'POST' ) {
     84        data.nonce = burst_settings.burst_nonce;
     85        args.data = data;
     86    }
     87
     88    try {
     89        const response = await apiFetch( args );
     90        if ( ! response.request_success ) {
     91            if ( Object.prototype.hasOwnProperty.call( response, 'message' ) ) {
     92                throw new Error( response.message );
     93            } else {
     94                throw new Error( 'Received unexpected response from server. Please check if the Rest API is enabled.' );
     95            }
     96        }
     97
     98        if ( response.code && response.code !== 200 ) {
     99            throw new Error( response.message );
     100        }
     101
     102        delete response.request_success;
     103        return response;
     104    } catch ( error ) {
     105        try {
     106            // Wait for ajaxRequest to resolve before continuing.
     107            return await ajaxRequest( method, path, data );
     108        } catch {
     109            generateError( error.message, args.path );
     110            throw error;
     111        }
     112    }
     113};
     114
    114115const ajaxRequest = async( method, path, requestData = null ) => {
    115   const url =
    116     'GET' === method ?
    117       `${siteUrl( 'ajax' )}&rest_action=${path.replace( '?', '&' )}` :
    118       siteUrl( 'ajax' );
    119 
    120   const options = {
    121     method,
    122     headers: { 'Content-Type': 'application/json; charset=UTF-8' }
    123   };
    124 
    125   if ( 'POST' === method ) {
    126     options.body = JSON.stringify({ path, data: requestData }, stripControls );
    127   }
    128 
    129   try {
    130     const response = await fetch( url, options );
    131     if ( ! response.ok ) {
    132       generateError( false, response.statusText );
    133       throw new Error( response.statusText );
    134     }
    135 
    136     const responseData = await response.json();
    137 
    138     if (
    139       ! responseData.data ||
    140       ! Object.prototype.hasOwnProperty.call( responseData.data, 'request_success' )
    141     ) {
    142       //log for automted fallback test. Do not remove.
    143       console.log("Ajax fallback request failed.");
    144       throw new Error( 'Invalid data error' );
    145     }
    146 
    147     delete responseData.data.request_success;
    148 
    149     // return promise with the data object
    150     return Promise.resolve( responseData.data );
    151   } catch ( error ) {
    152     return Promise.reject( new Error( 'AJAX request failed' ) );
    153   }
     116    const url = 'GET' === method ? `${siteUrl( 'ajax' )}&rest_action=${path.replace( '?', '&' )}` : siteUrl( 'ajax' );
     117
     118    const controller = new AbortController();
     119    const signal = controller.signal;
     120
     121    const options = {
     122        method,
     123        headers: { 'Content-Type': 'application/json; charset=UTF-8' },
     124        signal
     125    };
     126
     127    if ( 'POST' === method ) {
     128        options.body = JSON.stringify( { path, data: requestData }, stripControls );
     129    }
     130
     131    try {
     132        const response = await fetch( url, options );
     133        if ( ! response.ok ) {
     134            generateError( false, response.statusText );
     135            throw new Error( response.statusText );
     136        }
     137
     138        const responseData = await response.json();
     139
     140        if (
     141          ! responseData.data ||
     142          ! Object.prototype.hasOwnProperty.call( responseData.data, 'request_success' )
     143        ) {
     144            //log for automated fallback test. Do not remove.
     145            console.log( "Ajax fallback request failed." );
     146            throw new Error( 'Invalid data error' );
     147        }
     148
     149        delete responseData.data.request_success;
     150
     151        // return promise with the data object
     152        return Promise.resolve( responseData.data );
     153    } catch ( error ) {
     154        return Promise.reject( new Error( 'AJAX request failed' ) );
     155    }
    154156};
    155157
     
    280282 * @returns {Promise}
    281283 */
    282 export const getData = async( type, startDate, endDate, range, args = {}) => {
    283 
    284   // Extract filters and metrics from args if they exist
    285   const { filters, metrics, group_by, currentView, selectedPages } = args;
    286 
    287   // Combine all query parameters
    288   const queryParams = {
    289     date_start: startDate,
    290     date_end: endDate,
    291     date_range: range,
    292     nonce: burst_settings.burst_nonce,
    293     should_load_ecommerce: burst_settings.shouldLoadEcommerce || false,
    294     goal_id: args.goal_id,
    295     token: Math.random()// nosemgrep
    296       .toString( 36 )
    297       .replace( /[^a-z]+/g, '' )
    298       .substr( 0, 5 ),
    299     ...( selectedPages && { selected_pages: selectedPages } ), // type is string
    300     ...( filters && { filters }), // type is object
    301     ...( metrics && { metrics }), // type is array
    302     ...( group_by && { group_by }), // type is array
    303     ...( currentView && { currentView }) // type is object
    304   };
    305 
    306   const queryString = buildQueryString( queryParams );
    307   const path = `burst/v1/data/${type}${glue()}${queryString}`;
    308 
    309   return await makeRequest( path, 'GET' );
     284export const getData = async( type, startDate, endDate, range, args = {} ) => {
     285
     286    // Extract filters and metrics from args if they exist.
     287    const { filters, metrics, group_by, currentView, selectedPages } = args;
     288
     289    // Combine all query parameters.
     290    const queryParams = {
     291        date_start: startDate,
     292        date_end: endDate,
     293        date_range: range,
     294        nonce: burst_settings.burst_nonce,
     295        should_load_ecommerce: burst_settings.shouldLoadEcommerce || false,
     296        goal_id: args.goal_id,
     297        token: Math.random() // nosemgrep
     298          .toString( 36 )
     299          .replace( /[^a-z]+/g, '' )
     300          .substr( 0, 5 ),
     301        ...( selectedPages && { selected_pages: selectedPages } ), // type is string
     302        ...( filters && { filters }), // type is object
     303        ...( metrics && { metrics }), // type is array
     304        ...( group_by && { group_by }), // type is array
     305        ...( currentView && { currentView }) // type is object
     306    };
     307
     308    const queryString = buildQueryString( queryParams );
     309    const path = `burst/v1/data/${type}${glue()}${queryString}`;
     310
     311    return await makeRequest( path, 'GET' );
    310312};
    311313
  • burst-statistics/trunk/includes/Admin/Capability/class-capability.php

    r3377993 r3406692  
    1515
    1616    /**
     17     * Get possible capability types.
     18     *
     19     * @return array List of possible capability types.
     20     */
     21    private function get_possible_capabilities(): array {
     22        return apply_filters( 'burst_possible_capability_types', [ 'view', 'manage' ] );
     23    }
     24
     25    /**
    1726     * Add capability to a user
    1827     */
    1928    public static function add_capability( string $type = 'view', array $roles = [ 'administrator' ], bool $handle_subsites = true ): void {
    20         $possible_capabilities = [ 'view', 'manage' ];
     29        $possible_capabilities = ( new self() )->get_possible_capabilities();
    2130        if ( ! in_array( $type, $possible_capabilities, true ) ) {
    2231            return;
  • burst-statistics/trunk/includes/Admin/Cron/class-cron.php

    r3392751 r3406692  
    1212        add_action( 'init', [ $this, 'schedule_cron' ], 10, 2 );
    1313        add_action( 'cron_schedules', [ $this, 'filter_cron_schedules' ], 10, 2 );
     14        add_action( 'burst_every_ten_minutes', [ $this, 'test_hourly_cron' ] );
    1415        add_action( 'burst_every_hour', [ $this, 'test_hourly_cron' ] );
    1516    }
     
    1920     */
    2021    public function test_hourly_cron(): void {
    21         // This is just a test function to check if the hourly cron is working.
    22         // You can remove this function once you have verified that the cron is working.
    2322        update_option( 'burst_last_cron_hit', time(), false );
    2423    }
     
    3029     */
    3130    public function schedule_cron(): void {
     31        if ( ! wp_next_scheduled( 'burst_every_ten_minutes' ) ) {
     32            wp_schedule_event( time(), 'burst_every_ten_minutes', 'burst_every_ten_minutes' );
     33        }
     34
    3235        if ( ! wp_next_scheduled( 'burst_every_hour' ) ) {
    3336            wp_schedule_event( time(), 'burst_every_hour', 'burst_every_hour' );
     
    6366     */
    6467    public function filter_cron_schedules( array $schedules ): array {
    65         $schedules['burst_daily']      = [
     68        $schedules['burst_daily']             = [
    6669            'interval' => DAY_IN_SECONDS,
    6770            'display'  => 'Once every day',
    6871        ];
    69         $schedules['burst_every_hour'] = [
     72        $schedules['burst_every_ten_minutes'] = [
     73            'interval' => 10 * MINUTE_IN_SECONDS,
     74            'display'  => 'Once every 10 minutes',
     75        ];
     76        $schedules['burst_every_hour']        = [
    7077            'interval' => HOUR_IN_SECONDS,
    7178            'display'  => 'Once every hour',
    7279        ];
    73         $schedules['burst_weekly']     = [
     80        $schedules['burst_weekly']            = [
    7481            'interval' => WEEK_IN_SECONDS,
    7582            'display'  => 'Once every week',
  • burst-statistics/trunk/includes/Admin/DB_Upgrade/class-db-upgrade.php

    r3379991 r3406692  
    66use Burst\Traits\Helper;
    77use Burst\Traits\Sanitize;
    8 use Burst\Admin\Statistics\Summary;
    98
    109defined( 'ABSPATH' ) || die();
     
    180179            $this->upgrade_strip_domain_names_from_entire_page_url();
    181180        }
    182         if ( 'summary_table' === $do_upgrade ) {
    183             ( new Summary() )->upgrade_summary_table_alltime();
    184         }
     181
    185182        if ( 'create_lookup_tables' === $do_upgrade ) {
    186183            $this->create_lookup_tables();
     
    258255                ],
    259256                '1.7.0'   => [
    260                     'summary_table',
    261257                    'create_lookup_tables',
    262258                    'init_lookup_ids',
     
    790786
    791787        global $wpdb;
    792 
     788        $post_types   = array_values( $post_types );
    793789        $placeholders = implode( ',', array_fill( 0, count( $post_types ), '%s' ) );
    794790        $sql          = "SELECT COUNT(*) FROM {$wpdb->posts}
  • burst-statistics/trunk/includes/Admin/Dashboard_Widget/build/index.asset.php

    r3392751 r3406692  
    1 <?php return array('dependencies' => array('react', 'react-dom', 'wp-api-fetch', 'wp-date', 'wp-element', 'wp-i18n'), 'version' => 'e831432208968ee6bad8');
     1<?php return array('dependencies' => array('react', 'react-dom', 'wp-api-fetch', 'wp-date', 'wp-element', 'wp-i18n'), 'version' => '35e955c7eb567ff2e15d');
  • burst-statistics/trunk/includes/Admin/Dashboard_Widget/build/index.js

    r3392751 r3406692  
    1 (()=>{"use strict";var e,t,n={96:(e,t,n)=>{var r=n(609),i=Symbol.for("react.element"),o=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,o={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)a.call(t,r)&&!l.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:i,type:e,key:c,ref:u,props:o,_owner:s.current}}t.Fragment=o,t.jsx=c,t.jsxs=c},338:(e,t,n)=>{var r=n(795);t.H=r.createRoot,r.hydrateRoot},428:(e,t,n)=>{e.exports=n(96)},493:(e,t,n)=>{var r=n(609),i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,a=r.useEffect,s=r.useLayoutEffect,l=r.useDebugValue;function c(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch(e){return!0}}var u="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),i=r[0].inst,u=r[1];return s((function(){i.value=n,i.getSnapshot=t,c(i)&&u({inst:i})}),[e,n,t]),a((function(){return c(i)&&u({inst:i}),e((function(){c(i)&&u({inst:i})}))}),[e]),l(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:u},609:e=>{e.exports=window.React},795:e=>{e.exports=window.ReactDOM},888:(e,t,n)=>{e.exports=n(493)}},r={};function i(e){var t=r[e];if(void 0!==t)return t.exports;var o=r[e]={exports:{}};return n[e](o,o.exports,i),o.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var o=Object.create(null);i.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,i.d(o,a),o},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o=i(609),a=i.t(o,2);const s=window.wp.element,l=window.wp.i18n;function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function u(e,t){if(t.length<e)throw new TypeError(e+" argument"+(e>1?"s":"")+" required, but only "+t.length+" present")}function d(e){u(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"===c(e)&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn((new Error).stack)),new Date(NaN))}function h(e){u(1,arguments);var t=d(e);return t.setHours(0,0,0,0),t}function f(e){u(1,arguments);var t=d(e);return t.setHours(23,59,59,999),t}function p(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function y(e,t){u(2,arguments);var n=d(e),r=p(t);return isNaN(r)?new Date(NaN):r?(n.setDate(n.getDate()+r),n):n}function m(e){u(1,arguments);var t=d(e);return t.setDate(1),t.setHours(0,0,0,0),t}function g(e,t){u(2,arguments);var n=d(e),r=p(t);if(isNaN(r))return new Date(NaN);if(!r)return n;var i=n.getDate(),o=new Date(n.getTime());return o.setMonth(n.getMonth()+r+1,0),i>=o.getDate()?o:(n.setFullYear(o.getFullYear(),o.getMonth(),i),n)}function v(e){u(1,arguments);var t=d(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(23,59,59,999),t}function b(e){u(1,arguments);var t=d(e),n=new Date(0);return n.setFullYear(t.getFullYear(),0,1),n.setHours(0,0,0,0),n}function w(e,t){return u(2,arguments),g(e,12*p(t))}function x(e){u(1,arguments);var t=d(e),n=t.getFullYear();return t.setFullYear(n+1,0,0),t.setHours(23,59,59,999),t}function k(e=0){let t=Number(e);isNaN(t)&&(t=0);const n=Math.floor(t/1e3),r=Math.floor(n/3600),i=Math.floor((n-3600*r)/60),o=n-3600*r-60*i,a=e=>isNaN(e)?"00":String(e).padStart(2,"0");return 0===r?[i,o].map(a).join(":"):[r,i,o].map(a).join(":")}function E(e,t=1){return e=Number(e),isNaN(e)&&(e=0),e<1e3&&(t=0),new Intl.NumberFormat(void 0,{style:"decimal",notation:"compact",compactDisplay:"short",maximumFractionDigits:t}).format(e)}window.wp.date;const C=function(e=new Date){const t=-60*e.getTimezoneOffset(),n=Math.floor(e.getTime()/1e3)+3600*burst_settings.gmt_offset-t;return new Date(1e3*n)}(),M={today:{label:(0,l.__)("Today","burst-statistics"),range:()=>({startDate:h(C),endDate:f(C)})},yesterday:{label:(0,l.__)("Yesterday","burst-statistics"),range:()=>({startDate:h(y(C,-1)),endDate:f(y(C,-1))})},"last-7-days":{label:(0,l.__)("Last 7 days","burst-statistics"),range:()=>({startDate:h(y(C,-7)),endDate:f(y(C,-1))})},"last-30-days":{label:(0,l.__)("Last 30 days","burst-statistics"),range:()=>({startDate:h(y(C,-30)),endDate:f(y(C,-1))})},"last-90-days":{label:(0,l.__)("Last 90 days","burst-statistics"),range:()=>({startDate:h(y(C,-90)),endDate:f(y(C,-1))})},"last-month":{label:(0,l.__)("Last month","burst-statistics"),range:()=>({startDate:m(g(C,-1)),endDate:v(g(C,-1))})},"week-to-date":{label:(0,l.__)("Week to date","burst-statistics"),range:()=>({startDate:h(y(C,-C.getDay())),endDate:f(C)})},"month-to-date":{label:(0,l.__)("Month to date","burst-statistics"),range:()=>({startDate:m(C),endDate:f(C)})},"year-to-date":{label:(0,l.__)("Year to date","burst-statistics"),range:()=>({startDate:b(C),endDate:f(C)})},"last-year":{label:(0,l.__)("Last year","burst-statistics"),range:()=>({startDate:b(w(C,-1)),endDate:x(w(C,-1))})}},T=e=>{let t={};return Object.keys(M).filter((t=>e.includes(t))).forEach((e=>{t[e]={...M[e]}})),t},O=window.wp.apiFetch;var S=i.n(O);function R(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=R(e[t]))&&(r&&(r+=" "),r+=n);else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}const D=function(){for(var e,t,n=0,r="";n<arguments.length;)(e=arguments[n++])&&(t=R(e))&&(r&&(r+=" "),r+=t);return r},P=e=>"number"==typeof e&&!isNaN(e),q=e=>"string"==typeof e,_=e=>"function"==typeof e,N=e=>q(e)||_(e)?e:null,A=e=>(0,o.isValidElement)(e)||q(e)||_(e)||P(e);function L(e){let{enter:t,exit:n,appendPosition:r=!1,collapse:i=!0,collapseDuration:a=300}=e;return function(e){let{children:s,position:l,preventExitTransition:c,done:u,nodeRef:d,isIn:h}=e;const f=r?`${t}--${l}`:t,p=r?`${n}--${l}`:n,y=(0,o.useRef)(0);return(0,o.useLayoutEffect)((()=>{const e=d.current,t=f.split(" "),n=r=>{r.target===d.current&&(e.dispatchEvent(new Event("d")),e.removeEventListener("animationend",n),e.removeEventListener("animationcancel",n),0===y.current&&"animationcancel"!==r.type&&e.classList.remove(...t))};e.classList.add(...t),e.addEventListener("animationend",n),e.addEventListener("animationcancel",n)}),[]),(0,o.useEffect)((()=>{const e=d.current,t=()=>{e.removeEventListener("animationend",t),i?function(e,t,n){void 0===n&&(n=300);const{scrollHeight:r,style:i}=e;requestAnimationFrame((()=>{i.minHeight="initial",i.height=r+"px",i.transition=`all ${n}ms`,requestAnimationFrame((()=>{i.height="0",i.padding="0",i.margin="0",setTimeout(t,n)}))}))}(e,u,a):u()};h||(c?t():(y.current=1,e.className+=` ${p}`,e.addEventListener("animationend",t)))}),[h]),o.createElement(o.Fragment,null,s)}}function j(e,t){return null!=e?{content:e.content,containerId:e.props.containerId,id:e.props.toastId,theme:e.props.theme,type:e.props.type,data:e.props.data||{},isLoading:e.props.isLoading,icon:e.props.icon,status:t}:{}}const F={list:new Map,emitQueue:new Map,on(e,t){return this.list.has(e)||this.list.set(e,[]),this.list.get(e).push(t),this},off(e,t){if(t){const n=this.list.get(e).filter((e=>e!==t));return this.list.set(e,n),this}return this.list.delete(e),this},cancelEmit(e){const t=this.emitQueue.get(e);return t&&(t.forEach(clearTimeout),this.emitQueue.delete(e)),this},emit(e){this.list.has(e)&&this.list.get(e).forEach((t=>{const n=setTimeout((()=>{t(...[].slice.call(arguments,1))}),0);this.emitQueue.has(e)||this.emitQueue.set(e,[]),this.emitQueue.get(e).push(n)}))}},I=e=>{let{theme:t,type:n,...r}=e;return o.createElement("svg",{viewBox:"0 0 24 24",width:"100%",height:"100%",fill:"colored"===t?"currentColor":`var(--toastify-icon-color-${n})`,...r})},U={info:function(e){return o.createElement(I,{...e},o.createElement("path",{d:"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z"}))},warning:function(e){return o.createElement(I,{...e},o.createElement("path",{d:"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z"}))},success:function(e){return o.createElement(I,{...e},o.createElement("path",{d:"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z"}))},error:function(e){return o.createElement(I,{...e},o.createElement("path",{d:"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"}))},spinner:function(){return o.createElement("div",{className:"Toastify__spinner"})}};function z(e){const[,t]=(0,o.useReducer)((e=>e+1),0),[n,r]=(0,o.useState)([]),i=(0,o.useRef)(null),a=(0,o.useRef)(new Map).current,s=e=>-1!==n.indexOf(e),l=(0,o.useRef)({toastKey:1,displayedToast:0,count:0,queue:[],props:e,containerId:null,isToastActive:s,getToast:e=>a.get(e)}).current;function c(e){let{containerId:t}=e;const{limit:n}=l.props;!n||t&&l.containerId!==t||(l.count-=l.queue.length,l.queue=[])}function u(e){r((t=>null==e?[]:t.filter((t=>t!==e))))}function d(){const{toastContent:e,toastProps:t,staleId:n}=l.queue.shift();f(e,t,n)}function h(e,n){let{delay:r,staleId:s,...c}=n;if(!A(e)||function(e){return!i.current||l.props.enableMultiContainer&&e.containerId!==l.props.containerId||a.has(e.toastId)&&null==e.updateId}(c))return;const{toastId:h,updateId:p,data:y}=c,{props:m}=l,g=()=>u(h),v=null==p;v&&l.count++;const b={...m,style:m.toastStyle,key:l.toastKey++,...Object.fromEntries(Object.entries(c).filter((e=>{let[t,n]=e;return null!=n}))),toastId:h,updateId:p,data:y,closeToast:g,isIn:!1,className:N(c.className||m.toastClassName),bodyClassName:N(c.bodyClassName||m.bodyClassName),progressClassName:N(c.progressClassName||m.progressClassName),autoClose:!c.isLoading&&(w=c.autoClose,x=m.autoClose,!1===w||P(w)&&w>0?w:x),deleteToast(){const e=j(a.get(h),"removed");a.delete(h),F.emit(4,e);const n=l.queue.length;if(l.count=null==h?l.count-l.displayedToast:l.count-1,l.count<0&&(l.count=0),n>0){const e=null==h?l.props.limit:1;if(1===n||1===e)l.displayedToast++,d();else{const t=e>n?n:e;l.displayedToast=t;for(let e=0;e<t;e++)d()}}else t()}};var w,x;b.iconOut=function(e){let{theme:t,type:n,isLoading:r,icon:i}=e,a=null;const s={theme:t,type:n};return!1===i||(_(i)?a=i(s):(0,o.isValidElement)(i)?a=(0,o.cloneElement)(i,s):q(i)||P(i)?a=i:r?a=U.spinner():(e=>e in U)(n)&&(a=U[n](s))),a}(b),_(c.onOpen)&&(b.onOpen=c.onOpen),_(c.onClose)&&(b.onClose=c.onClose),b.closeButton=m.closeButton,!1===c.closeButton||A(c.closeButton)?b.closeButton=c.closeButton:!0===c.closeButton&&(b.closeButton=!A(m.closeButton)||m.closeButton);let k=e;(0,o.isValidElement)(e)&&!q(e.type)?k=(0,o.cloneElement)(e,{closeToast:g,toastProps:b,data:y}):_(e)&&(k=e({closeToast:g,toastProps:b,data:y})),m.limit&&m.limit>0&&l.count>m.limit&&v?l.queue.push({toastContent:k,toastProps:b,staleId:s}):P(r)?setTimeout((()=>{f(k,b,s)}),r):f(k,b,s)}function f(e,t,n){const{toastId:i}=t;n&&a.delete(n);const o={content:e,props:t};a.set(i,o),r((e=>[...e,i].filter((e=>e!==n)))),F.emit(4,j(o,null==o.props.updateId?"added":"updated"))}return(0,o.useEffect)((()=>(l.containerId=e.containerId,F.cancelEmit(3).on(0,h).on(1,(e=>i.current&&u(e))).on(5,c).emit(2,l),()=>{a.clear(),F.emit(3,l)})),[]),(0,o.useEffect)((()=>{l.props=e,l.isToastActive=s,l.displayedToast=n.length})),{getToastToRender:function(t){const n=new Map,r=Array.from(a.values());return e.newestOnTop&&r.reverse(),r.forEach((e=>{const{position:t}=e.props;n.has(t)||n.set(t,[]),n.get(t).push(e)})),Array.from(n,(e=>t(e[0],e[1])))},containerRef:i,isToastActive:s}}function H(e){return e.targetTouches&&e.targetTouches.length>=1?e.targetTouches[0].clientX:e.clientX}function Q(e){return e.targetTouches&&e.targetTouches.length>=1?e.targetTouches[0].clientY:e.clientY}function W(e){const[t,n]=(0,o.useState)(!1),[r,i]=(0,o.useState)(!1),a=(0,o.useRef)(null),s=(0,o.useRef)({start:0,x:0,y:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,boundingRect:null,didMove:!1}).current,l=(0,o.useRef)(e),{autoClose:c,pauseOnHover:u,closeToast:d,onClick:h,closeOnClick:f}=e;function p(t){if(e.draggable){"touchstart"===t.nativeEvent.type&&t.nativeEvent.preventDefault(),s.didMove=!1,document.addEventListener("mousemove",v),document.addEventListener("mouseup",b),document.addEventListener("touchmove",v),document.addEventListener("touchend",b);const n=a.current;s.canCloseOnClick=!0,s.canDrag=!0,s.boundingRect=n.getBoundingClientRect(),n.style.transition="",s.x=H(t.nativeEvent),s.y=Q(t.nativeEvent),"x"===e.draggableDirection?(s.start=s.x,s.removalDistance=n.offsetWidth*(e.draggablePercent/100)):(s.start=s.y,s.removalDistance=n.offsetHeight*(80===e.draggablePercent?1.5*e.draggablePercent:e.draggablePercent/100))}}function y(t){if(s.boundingRect){const{top:n,bottom:r,left:i,right:o}=s.boundingRect;"touchend"!==t.nativeEvent.type&&e.pauseOnHover&&s.x>=i&&s.x<=o&&s.y>=n&&s.y<=r?g():m()}}function m(){n(!0)}function g(){n(!1)}function v(n){const r=a.current;s.canDrag&&r&&(s.didMove=!0,t&&g(),s.x=H(n),s.y=Q(n),s.delta="x"===e.draggableDirection?s.x-s.start:s.y-s.start,s.start!==s.x&&(s.canCloseOnClick=!1),r.style.transform=`translate${e.draggableDirection}(${s.delta}px)`,r.style.opacity=""+(1-Math.abs(s.delta/s.removalDistance)))}function b(){document.removeEventListener("mousemove",v),document.removeEventListener("mouseup",b),document.removeEventListener("touchmove",v),document.removeEventListener("touchend",b);const t=a.current;if(s.canDrag&&s.didMove&&t){if(s.canDrag=!1,Math.abs(s.delta)>s.removalDistance)return i(!0),void e.closeToast();t.style.transition="transform 0.2s, opacity 0.2s",t.style.transform=`translate${e.draggableDirection}(0)`,t.style.opacity="1"}}(0,o.useEffect)((()=>{l.current=e})),(0,o.useEffect)((()=>(a.current&&a.current.addEventListener("d",m,{once:!0}),_(e.onOpen)&&e.onOpen((0,o.isValidElement)(e.children)&&e.children.props),()=>{const e=l.current;_(e.onClose)&&e.onClose((0,o.isValidElement)(e.children)&&e.children.props)})),[]),(0,o.useEffect)((()=>(e.pauseOnFocusLoss&&(document.hasFocus()||g(),window.addEventListener("focus",m),window.addEventListener("blur",g)),()=>{e.pauseOnFocusLoss&&(window.removeEventListener("focus",m),window.removeEventListener("blur",g))})),[e.pauseOnFocusLoss]);const w={onMouseDown:p,onTouchStart:p,onMouseUp:y,onTouchEnd:y};return c&&u&&(w.onMouseEnter=g,w.onMouseLeave=m),f&&(w.onClick=e=>{h&&h(e),s.canCloseOnClick&&d()}),{playToast:m,pauseToast:g,isRunning:t,preventExitTransition:r,toastRef:a,eventHandlers:w}}function B(e){let{closeToast:t,theme:n,ariaLabel:r="close"}=e;return o.createElement("button",{className:`Toastify__close-button Toastify__close-button--${n}`,type:"button",onClick:e=>{e.stopPropagation(),t(e)},"aria-label":r},o.createElement("svg",{"aria-hidden":"true",viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"})))}function $(e){let{delay:t,isRunning:n,closeToast:r,type:i="default",hide:a,className:s,style:l,controlledProgress:c,progress:u,rtl:d,isIn:h,theme:f}=e;const p=a||c&&0===u,y={...l,animationDuration:`${t}ms`,animationPlayState:n?"running":"paused",opacity:p?0:1};c&&(y.transform=`scaleX(${u})`);const m=D("Toastify__progress-bar",c?"Toastify__progress-bar--controlled":"Toastify__progress-bar--animated",`Toastify__progress-bar-theme--${f}`,`Toastify__progress-bar--${i}`,{"Toastify__progress-bar--rtl":d}),g=_(s)?s({rtl:d,type:i,defaultClassName:m}):D(m,s);return o.createElement("div",{role:"progressbar","aria-hidden":p?"true":"false","aria-label":"notification timer",className:g,style:y,[c&&u>=1?"onTransitionEnd":"onAnimationEnd"]:c&&u<1?null:()=>{h&&r()}})}const Y=e=>{const{isRunning:t,preventExitTransition:n,toastRef:r,eventHandlers:i}=W(e),{closeButton:a,children:s,autoClose:l,onClick:c,type:u,hideProgressBar:d,closeToast:h,transition:f,position:p,className:y,style:m,bodyClassName:g,bodyStyle:v,progressClassName:b,progressStyle:w,updateId:x,role:k,progress:E,rtl:C,toastId:M,deleteToast:T,isIn:O,isLoading:S,iconOut:R,closeOnClick:P,theme:q}=e,N=D("Toastify__toast",`Toastify__toast-theme--${q}`,`Toastify__toast--${u}`,{"Toastify__toast--rtl":C},{"Toastify__toast--close-on-click":P}),A=_(y)?y({rtl:C,position:p,type:u,defaultClassName:N}):D(N,y),L=!!E||!l,j={closeToast:h,type:u,theme:q};let F=null;return!1===a||(F=_(a)?a(j):(0,o.isValidElement)(a)?(0,o.cloneElement)(a,j):B(j)),o.createElement(f,{isIn:O,done:T,position:p,preventExitTransition:n,nodeRef:r},o.createElement("div",{id:M,onClick:c,className:A,...i,style:m,ref:r},o.createElement("div",{...O&&{role:k},className:_(g)?g({type:u}):D("Toastify__toast-body",g),style:v},null!=R&&o.createElement("div",{className:D("Toastify__toast-icon",{"Toastify--animate-icon Toastify__zoom-enter":!S})},R),o.createElement("div",null,s)),F,o.createElement($,{...x&&!L?{key:`pb-${x}`}:{},rtl:C,theme:q,delay:l,isRunning:t,isIn:O,closeToast:h,hide:d,type:u,style:w,className:b,controlledProgress:L,progress:E||0})))},V=function(e,t){return void 0===t&&(t=!1),{enter:`Toastify--animate Toastify__${e}-enter`,exit:`Toastify--animate Toastify__${e}-exit`,appendPosition:t}},K=L(V("bounce",!0)),G=(L(V("slide",!0)),L(V("zoom")),L(V("flip")),(0,o.forwardRef)(((e,t)=>{const{getToastToRender:n,containerRef:r,isToastActive:i}=z(e),{className:a,style:s,rtl:l,containerId:c}=e;function u(e){const t=D("Toastify__toast-container",`Toastify__toast-container--${e}`,{"Toastify__toast-container--rtl":l});return _(a)?a({position:e,rtl:l,defaultClassName:t}):D(t,N(a))}return(0,o.useEffect)((()=>{t&&(t.current=r.current)}),[]),o.createElement("div",{ref:r,className:"Toastify",id:c},n(((e,t)=>{const n=t.length?{...s}:{...s,pointerEvents:"none"};return o.createElement("div",{className:u(e),style:n,key:`container-${e}`},t.map(((e,n)=>{let{content:r,props:a}=e;return o.createElement(Y,{...a,isIn:i(a.toastId),style:{...a.style,"--nth":n+1,"--len":t.length},key:`toast-${a.key}`},r)})))})))})));G.displayName="ToastContainer",G.defaultProps={position:"top-right",transition:K,autoClose:5e3,closeButton:B,pauseOnHover:!0,pauseOnFocusLoss:!0,closeOnClick:!0,draggable:!0,draggablePercent:80,draggableDirection:"x",role:"alert",theme:"light"};let X,J=new Map,Z=[],ee=1;function te(){return""+ee++}function ne(e){return e&&(q(e.toastId)||P(e.toastId))?e.toastId:te()}function re(e,t){return J.size>0?F.emit(0,e,t):Z.push({content:e,options:t}),t.toastId}function ie(e,t){return{...t,type:t&&t.type||e,toastId:ne(t)}}function oe(e){return(t,n)=>re(t,ie(e,n))}function ae(e,t){return re(e,ie("default",t))}ae.loading=(e,t)=>re(e,ie("default",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...t})),ae.promise=function(e,t,n){let r,{pending:i,error:o,success:a}=t;i&&(r=q(i)?ae.loading(i,n):ae.loading(i.render,{...n,...i}));const s={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},l=(e,t,i)=>{if(null==t)return void ae.dismiss(r);const o={type:e,...s,...n,data:i},a=q(t)?{render:t}:t;return r?ae.update(r,{...o,...a}):ae(a.render,{...o,...a}),i},c=_(e)?e():e;return c.then((e=>l("success",a,e))).catch((e=>l("error",o,e))),c},ae.success=oe("success"),ae.info=oe("info"),ae.error=oe("error"),ae.warning=oe("warning"),ae.warn=ae.warning,ae.dark=(e,t)=>re(e,ie("default",{theme:"dark",...t})),ae.dismiss=e=>{J.size>0?F.emit(1,e):Z=Z.filter((t=>null!=e&&t.options.toastId!==e))},ae.clearWaitingQueue=function(e){return void 0===e&&(e={}),F.emit(5,e)},ae.isActive=e=>{let t=!1;return J.forEach((n=>{n.isToastActive&&n.isToastActive(e)&&(t=!0)})),t},ae.update=function(e,t){void 0===t&&(t={}),setTimeout((()=>{const n=function(e,t){let{containerId:n}=t;const r=J.get(n||X);return r&&r.getToast(e)}(e,t);if(n){const{props:r,content:i}=n,o={delay:100,...r,...t,toastId:t.toastId||e,updateId:te()};o.toastId!==e&&(o.staleId=e);const a=o.render||i;delete o.render,re(a,o)}}),0)},ae.done=e=>{ae.update(e,{progress:1})},ae.onChange=e=>(F.on(4,e),()=>{F.off(4,e)}),ae.POSITION={TOP_LEFT:"top-left",TOP_RIGHT:"top-right",TOP_CENTER:"top-center",BOTTOM_LEFT:"bottom-left",BOTTOM_RIGHT:"bottom-right",BOTTOM_CENTER:"bottom-center"},ae.TYPE={INFO:"info",SUCCESS:"success",WARNING:"warning",ERROR:"error",DEFAULT:"default"},F.on(2,(e=>{X=e.containerId||e,J.set(X,e),Z.forEach((e=>{F.emit(0,e.content,e.options)})),Z=[]})).on(3,(e=>{J.delete(e.containerId||e),0===J.size&&F.off(0).off(1).off(5)}));let se="",le=0;const ce=(e,t=!1)=>{let n=(0,l.__)("Server error","burst-statistics");if(e=e.replace(/(<([^>]+)>)/gi,""),t){const e=t.split("?")[0].split("/"),r=e.indexOf("v1")+1;n=(0,l.__)("Server error in","burst-statistics")+" "+e[r]+"/"+e[r+1]}n+=": "+e;const r=Date.now();if(n===se&&r-le<3e3)return;se=n,le=r;const i=(0,o.createElement)("div",{title:(0,l.__)("Click to copy","burst-statistics"),onClick:()=>{navigator.clipboard.writeText(n),ae.success((0,l.__)("Error copied to clipboard","burst-statistics"))}},n);ae.error(i,{autoClose:15e3})},ue=async(e,t,n=null)=>{const r="GET"===e?`${he("ajax")}&rest_action=${t.replace("?","&")}`:he("ajax"),i={method:e,headers:{"Content-Type":"application/json; charset=UTF-8"}};"POST"===e&&(i.body=JSON.stringify({path:t,data:n},de));try{const e=await fetch(r,i);if(!e.ok)throw ce(!1,e.statusText),new Error(e.statusText);const t=await e.json();if(!t.data||!Object.prototype.hasOwnProperty.call(t.data,"request_success"))throw console.log("Ajax fallback request failed."),new Error("Invalid data error");return delete t.data.request_success,Promise.resolve(t.data)}catch(e){return Promise.reject(new Error("AJAX request failed"))}},de=(e,t)=>e?e&&e.includes("Control")?void 0:"object"==typeof t?JSON.parse(JSON.stringify(t,de)):t:t,he=e=>{let t;return t=void 0===e?burst_settings.site_url:burst_settings.admin_ajax_url,"https:"===window.location.protocol&&-1===t.indexOf("https://")?t.replace("http://","https://"):t},fe=async(e,t,n,r,i={})=>{const{filters:o,metrics:a,group_by:s,currentView:l,selectedPages:c}=i,u={date_start:t,date_end:n,date_range:r,nonce:burst_settings.burst_nonce,should_load_ecommerce:burst_settings.shouldLoadEcommerce||!1,goal_id:i.goal_id,token:Math.random().toString(36).replace(/[^a-z]+/g,"").substr(0,5),...c&&{selected_pages:c},...o&&{filters:o},...a&&{metrics:a},...s&&{group_by:s},...l&&{currentView:l}},d=(f=u,Object.keys(f).filter((e=>void 0!==f[e]&&null!==f[e])).map((e=>{const t=(e=>Array.isArray(e)?e:"object"==typeof e&&null!==e?JSON.stringify(e):e)(f[e]);return Array.isArray(t)?t.map((t=>`${encodeURIComponent(e)}[]=${encodeURIComponent(t)}`)).join("&"):`${encodeURIComponent(e)}=${encodeURIComponent(t)}`})).join("&")),h=`burst/v1/data/${e}${-1!==burst_settings.site_url.indexOf("?")?"&":"?"}${d}`;var f;return await(async(e,t="GET",n={})=>{let r={path:e,method:t};"POST"===t&&(n.nonce=burst_settings.burst_nonce,r.data=n);try{const e=await S()(r);if(!e.request_success)throw Object.prototype.hasOwnProperty.call(e,"message")?new Error(e.message):new Error("Received unexpected response from server. Please check if the Rest API is enabled.");if(e.code&&200!==e.code)throw new Error(e.message);return delete e.request_success,e}catch(i){try{return await ue(t,e,n)}catch{throw ce(i.message,r.path),i}}})(h,"GET")},pe=async e=>{const{startDate:t,endDate:n,range:r,filters:i}=e,{data:o}=await fe("live-visitors",t,n,r,{filters:i});return E(o?.visitors)};function ye(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),!1===n||!r.defaultPrevented)return t?.(r)}}function me(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function ge(...e){return t=>{let n=!1;const r=e.map((e=>{const r=me(e,t);return n||"function"!=typeof r||(n=!0),r}));if(n)return()=>{for(let t=0;t<r.length;t++){const n=r[t];"function"==typeof n?n():me(e[t],null)}}}}function ve(...e){return o.useCallback(ge(...e),e)}"undefined"==typeof window||!window.document||window.document.createElement;var be=i(428);function we(e,t=[]){let n=[];const r=()=>{const t=n.map((e=>o.createContext(e)));return function(n){const r=n?.[e]||t;return o.useMemo((()=>({[`__scope${e}`]:{...n,[e]:r}})),[n,r])}};return r.scopeName=e,[function(t,r){const i=o.createContext(r),a=n.length;n=[...n,r];const s=t=>{const{scope:n,children:r,...s}=t,l=n?.[e]?.[a]||i,c=o.useMemo((()=>s),Object.values(s));return(0,be.jsx)(l.Provider,{value:c,children:r})};return s.displayName=t+"Provider",[s,function(n,s){const l=s?.[e]?.[a]||i,c=o.useContext(l);if(c)return c;if(void 0!==r)return r;throw new Error(`\`${n}\` must be used within \`${t}\``)}]},xe(r,...t)]}function xe(...e){const t=e[0];if(1===e.length)return t;const n=()=>{const n=e.map((e=>({useScope:e(),scopeName:e.scopeName})));return function(e){const r=n.reduce(((t,{useScope:n,scopeName:r})=>({...t,...n(e)[`__scope${r}`]})),{});return o.useMemo((()=>({[`__scope${t.scopeName}`]:r})),[r])}};return n.scopeName=t.scopeName,n}var ke=i(795);function Ee(e){const t=o.forwardRef(((e,t)=>{const{children:n,...r}=e;if(o.isValidElement(n)){const e=function(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}(n),i=function(e,t){const n={...t};for(const r in t){const i=e[r],o=t[r];/^on[A-Z]/.test(r)?i&&o?n[r]=(...e)=>{const t=o(...e);return i(...e),t}:i&&(n[r]=i):"style"===r?n[r]={...i,...o}:"className"===r&&(n[r]=[i,o].filter(Boolean).join(" "))}return{...e,...n}}(r,n.props);return n.type!==o.Fragment&&(i.ref=t?ge(t,e):e),o.cloneElement(n,i)}return o.Children.count(n)>1?o.Children.only(null):null}));return t.displayName=`${e}.SlotClone`,t}var Ce=Symbol("radix.slottable");function Me(e){return o.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===Ce}var Te=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce(((e,t)=>{const n=function(e){const t=Ee(e),n=o.forwardRef(((e,n)=>{const{children:r,...i}=e,a=o.Children.toArray(r),s=a.find(Me);if(s){const e=s.props.children,r=a.map((t=>t===s?o.Children.count(e)>1?o.Children.only(null):o.isValidElement(e)?e.props.children:null:t));return(0,be.jsx)(t,{...i,ref:n,children:o.isValidElement(e)?o.cloneElement(e,void 0,r):null})}return(0,be.jsx)(t,{...i,ref:n,children:r})}));return n.displayName=`${e}.Slot`,n}(`Primitive.${t}`),r=o.forwardRef(((e,r)=>{const{asChild:i,...o}=e,a=i?n:t;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,be.jsx)(a,{...o,ref:r})}));return r.displayName=`Primitive.${t}`,{...e,[t]:r}}),{});function Oe(e){const t=o.useRef(e);return o.useEffect((()=>{t.current=e})),o.useMemo((()=>(...e)=>t.current?.(...e)),[])}var Se,Re="dismissableLayer.update",De=o.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Pe=o.forwardRef(((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:s,onDismiss:l,...c}=e,u=o.useContext(De),[d,h]=o.useState(null),f=d?.ownerDocument??globalThis?.document,[,p]=o.useState({}),y=ve(t,(e=>h(e))),m=Array.from(u.layers),[g]=[...u.layersWithOutsidePointerEventsDisabled].slice(-1),v=m.indexOf(g),b=d?m.indexOf(d):-1,w=u.layersWithOutsidePointerEventsDisabled.size>0,x=b>=v,k=function(e,t=globalThis?.document){const n=Oe(e),r=o.useRef(!1),i=o.useRef((()=>{}));return o.useEffect((()=>{const e=e=>{if(e.target&&!r.current){let r=function(){_e("dismissableLayer.pointerDownOutside",n,o,{discrete:!0})};const o={originalEvent:e};"touch"===e.pointerType?(t.removeEventListener("click",i.current),i.current=r,t.addEventListener("click",i.current,{once:!0})):r()}else t.removeEventListener("click",i.current);r.current=!1},o=window.setTimeout((()=>{t.addEventListener("pointerdown",e)}),0);return()=>{window.clearTimeout(o),t.removeEventListener("pointerdown",e),t.removeEventListener("click",i.current)}}),[t,n]),{onPointerDownCapture:()=>r.current=!0}}((e=>{const t=e.target,n=[...u.branches].some((e=>e.contains(t)));x&&!n&&(i?.(e),s?.(e),e.defaultPrevented||l?.())}),f),E=function(e,t=globalThis?.document){const n=Oe(e),r=o.useRef(!1);return o.useEffect((()=>{const e=e=>{e.target&&!r.current&&_e("dismissableLayer.focusOutside",n,{originalEvent:e},{discrete:!1})};return t.addEventListener("focusin",e),()=>t.removeEventListener("focusin",e)}),[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}((e=>{const t=e.target;[...u.branches].some((e=>e.contains(t)))||(a?.(e),s?.(e),e.defaultPrevented||l?.())}),f);return function(e,t=globalThis?.document){const n=Oe(e);o.useEffect((()=>{const e=e=>{"Escape"===e.key&&n(e)};return t.addEventListener("keydown",e,{capture:!0}),()=>t.removeEventListener("keydown",e,{capture:!0})}),[n,t])}((e=>{b===u.layers.size-1&&(r?.(e),!e.defaultPrevented&&l&&(e.preventDefault(),l()))}),f),o.useEffect((()=>{if(d)return n&&(0===u.layersWithOutsidePointerEventsDisabled.size&&(Se=f.body.style.pointerEvents,f.body.style.pointerEvents="none"),u.layersWithOutsidePointerEventsDisabled.add(d)),u.layers.add(d),qe(),()=>{n&&1===u.layersWithOutsidePointerEventsDisabled.size&&(f.body.style.pointerEvents=Se)}}),[d,f,n,u]),o.useEffect((()=>()=>{d&&(u.layers.delete(d),u.layersWithOutsidePointerEventsDisabled.delete(d),qe())}),[d,u]),o.useEffect((()=>{const e=()=>p({});return document.addEventListener(Re,e),()=>document.removeEventListener(Re,e)}),[]),(0,be.jsx)(Te.div,{...c,ref:y,style:{pointerEvents:w?x?"auto":"none":void 0,...e.style},onFocusCapture:ye(e.onFocusCapture,E.onFocusCapture),onBlurCapture:ye(e.onBlurCapture,E.onBlurCapture),onPointerDownCapture:ye(e.onPointerDownCapture,k.onPointerDownCapture)})}));function qe(){const e=new CustomEvent(Re);document.dispatchEvent(e)}function _e(e,t,n,{discrete:r}){const i=n.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?function(e,t){e&&ke.flushSync((()=>e.dispatchEvent(t)))}(i,o):i.dispatchEvent(o)}Pe.displayName="DismissableLayer",o.forwardRef(((e,t)=>{const n=o.useContext(De),r=o.useRef(null),i=ve(t,r);return o.useEffect((()=>{const e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}}),[n.branches]),(0,be.jsx)(Te.div,{...e,ref:i})})).displayName="DismissableLayerBranch";var Ne=globalThis?.document?o.useLayoutEffect:()=>{},Ae=a[" useId ".trim().toString()]||(()=>{}),Le=0;const je=["top","right","bottom","left"],Fe=Math.min,Ie=Math.max,Ue=Math.round,ze=Math.floor,He=e=>({x:e,y:e}),Qe={left:"right",right:"left",bottom:"top",top:"bottom"},We={start:"end",end:"start"};function Be(e,t,n){return Ie(e,Fe(t,n))}function $e(e,t){return"function"==typeof e?e(t):e}function Ye(e){return e.split("-")[0]}function Ve(e){return e.split("-")[1]}function Ke(e){return"x"===e?"y":"x"}function Ge(e){return"y"===e?"height":"width"}const Xe=new Set(["top","bottom"]);function Je(e){return Xe.has(Ye(e))?"y":"x"}function Ze(e){return Ke(Je(e))}function et(e){return e.replace(/start|end/g,(e=>We[e]))}const tt=["left","right"],nt=["right","left"],rt=["top","bottom"],it=["bottom","top"];function ot(e){return e.replace(/left|right|bottom|top/g,(e=>Qe[e]))}function at(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function st(e){const{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function lt(e,t,n){let{reference:r,floating:i}=e;const o=Je(t),a=Ze(t),s=Ge(a),l=Ye(t),c="y"===o,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,h=r[s]/2-i[s]/2;let f;switch(l){case"top":f={x:u,y:r.y-i.height};break;case"bottom":f={x:u,y:r.y+r.height};break;case"right":f={x:r.x+r.width,y:d};break;case"left":f={x:r.x-i.width,y:d};break;default:f={x:r.x,y:r.y}}switch(Ve(t)){case"start":f[a]-=h*(n&&c?-1:1);break;case"end":f[a]+=h*(n&&c?-1:1)}return f}async function ct(e,t){var n;void 0===t&&(t={});const{x:r,y:i,platform:o,rects:a,elements:s,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:h=!1,padding:f=0}=$e(t,e),p=at(f),y=s[h?"floating"===d?"reference":"floating":d],m=st(await o.getClippingRect({element:null==(n=await(null==o.isElement?void 0:o.isElement(y)))||n?y:y.contextElement||await(null==o.getDocumentElement?void 0:o.getDocumentElement(s.floating)),boundary:c,rootBoundary:u,strategy:l})),g="floating"===d?{x:r,y:i,width:a.floating.width,height:a.floating.height}:a.reference,v=await(null==o.getOffsetParent?void 0:o.getOffsetParent(s.floating)),b=await(null==o.isElement?void 0:o.isElement(v))&&await(null==o.getScale?void 0:o.getScale(v))||{x:1,y:1},w=st(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:g,offsetParent:v,strategy:l}):g);return{top:(m.top-w.top+p.top)/b.y,bottom:(w.bottom-m.bottom+p.bottom)/b.y,left:(m.left-w.left+p.left)/b.x,right:(w.right-m.right+p.right)/b.x}}function ut(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function dt(e){return je.some((t=>e[t]>=0))}const ht=new Set(["left","top"]);function ft(){return"undefined"!=typeof window}function pt(e){return gt(e)?(e.nodeName||"").toLowerCase():"#document"}function yt(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function mt(e){var t;return null==(t=(gt(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function gt(e){return!!ft()&&(e instanceof Node||e instanceof yt(e).Node)}function vt(e){return!!ft()&&(e instanceof Element||e instanceof yt(e).Element)}function bt(e){return!!ft()&&(e instanceof HTMLElement||e instanceof yt(e).HTMLElement)}function wt(e){return!(!ft()||"undefined"==typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof yt(e).ShadowRoot)}const xt=new Set(["inline","contents"]);function kt(e){const{overflow:t,overflowX:n,overflowY:r,display:i}=Nt(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!xt.has(i)}const Et=new Set(["table","td","th"]);function Ct(e){return Et.has(pt(e))}const Mt=[":popover-open",":modal"];function Tt(e){return Mt.some((t=>{try{return e.matches(t)}catch(e){return!1}}))}const Ot=["transform","translate","scale","rotate","perspective"],St=["transform","translate","scale","rotate","perspective","filter"],Rt=["paint","layout","strict","content"];function Dt(e){const t=Pt(),n=vt(e)?Nt(e):e;return Ot.some((e=>!!n[e]&&"none"!==n[e]))||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||St.some((e=>(n.willChange||"").includes(e)))||Rt.some((e=>(n.contain||"").includes(e)))}function Pt(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}const qt=new Set(["html","body","#document"]);function _t(e){return qt.has(pt(e))}function Nt(e){return yt(e).getComputedStyle(e)}function At(e){return vt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Lt(e){if("html"===pt(e))return e;const t=e.assignedSlot||e.parentNode||wt(e)&&e.host||mt(e);return wt(t)?t.host:t}function jt(e){const t=Lt(e);return _t(t)?e.ownerDocument?e.ownerDocument.body:e.body:bt(t)&&kt(t)?t:jt(t)}function Ft(e,t,n){var r;void 0===t&&(t=[]),void 0===n&&(n=!0);const i=jt(e),o=i===(null==(r=e.ownerDocument)?void 0:r.body),a=yt(i);if(o){const e=It(a);return t.concat(a,a.visualViewport||[],kt(i)?i:[],e&&n?Ft(e):[])}return t.concat(i,Ft(i,[],n))}function It(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Ut(e){const t=Nt(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const i=bt(e),o=i?e.offsetWidth:n,a=i?e.offsetHeight:r,s=Ue(n)!==o||Ue(r)!==a;return s&&(n=o,r=a),{width:n,height:r,$:s}}function zt(e){return vt(e)?e:e.contextElement}function Ht(e){const t=zt(e);if(!bt(t))return He(1);const n=t.getBoundingClientRect(),{width:r,height:i,$:o}=Ut(t);let a=(o?Ue(n.width):n.width)/r,s=(o?Ue(n.height):n.height)/i;return a&&Number.isFinite(a)||(a=1),s&&Number.isFinite(s)||(s=1),{x:a,y:s}}const Qt=He(0);function Wt(e){const t=yt(e);return Pt()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Qt}function Bt(e,t,n,r){void 0===t&&(t=!1),void 0===n&&(n=!1);const i=e.getBoundingClientRect(),o=zt(e);let a=He(1);t&&(r?vt(r)&&(a=Ht(r)):a=Ht(e));const s=function(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==yt(e))&&t}(o,n,r)?Wt(o):He(0);let l=(i.left+s.x)/a.x,c=(i.top+s.y)/a.y,u=i.width/a.x,d=i.height/a.y;if(o){const e=yt(o),t=r&&vt(r)?yt(r):r;let n=e,i=It(n);for(;i&&r&&t!==n;){const e=Ht(i),t=i.getBoundingClientRect(),r=Nt(i),o=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,a=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;l*=e.x,c*=e.y,u*=e.x,d*=e.y,l+=o,c+=a,n=yt(i),i=It(n)}}return st({width:u,height:d,x:l,y:c})}function $t(e,t){const n=At(e).scrollLeft;return t?t.left+n:Bt(mt(e)).left+n}function Yt(e,t){const n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-$t(e,n),y:n.top+t.scrollTop}}const Vt=new Set(["absolute","fixed"]);function Kt(e,t,n){let r;if("viewport"===t)r=function(e,t){const n=yt(e),r=mt(e),i=n.visualViewport;let o=r.clientWidth,a=r.clientHeight,s=0,l=0;if(i){o=i.width,a=i.height;const e=Pt();(!e||e&&"fixed"===t)&&(s=i.offsetLeft,l=i.offsetTop)}const c=$t(r);if(c<=0){const e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i="CSS1Compat"===e.compatMode&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,a=Math.abs(r.clientWidth-t.clientWidth-i);a<=25&&(o-=a)}else c<=25&&(o+=c);return{width:o,height:a,x:s,y:l}}(e,n);else if("document"===t)r=function(e){const t=mt(e),n=At(e),r=e.ownerDocument.body,i=Ie(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),o=Ie(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let a=-n.scrollLeft+$t(e);const s=-n.scrollTop;return"rtl"===Nt(r).direction&&(a+=Ie(t.clientWidth,r.clientWidth)-i),{width:i,height:o,x:a,y:s}}(mt(e));else if(vt(t))r=function(e,t){const n=Bt(e,!0,"fixed"===t),r=n.top+e.clientTop,i=n.left+e.clientLeft,o=bt(e)?Ht(e):He(1);return{width:e.clientWidth*o.x,height:e.clientHeight*o.y,x:i*o.x,y:r*o.y}}(t,n);else{const n=Wt(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return st(r)}function Gt(e,t){const n=Lt(e);return!(n===t||!vt(n)||_t(n))&&("fixed"===Nt(n).position||Gt(n,t))}function Xt(e,t,n){const r=bt(t),i=mt(t),o="fixed"===n,a=Bt(e,!0,o,t);let s={scrollLeft:0,scrollTop:0};const l=He(0);function c(){l.x=$t(i)}if(r||!r&&!o)if(("body"!==pt(t)||kt(i))&&(s=At(t)),r){const e=Bt(t,!0,o,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else i&&c();o&&!r&&i&&c();const u=!i||r||o?He(0):Yt(i,s);return{x:a.left+s.scrollLeft-l.x-u.x,y:a.top+s.scrollTop-l.y-u.y,width:a.width,height:a.height}}function Jt(e){return"static"===Nt(e).position}function Zt(e,t){if(!bt(e)||"fixed"===Nt(e).position)return null;if(t)return t(e);let n=e.offsetParent;return mt(e)===n&&(n=n.ownerDocument.body),n}function en(e,t){const n=yt(e);if(Tt(e))return n;if(!bt(e)){let t=Lt(e);for(;t&&!_t(t);){if(vt(t)&&!Jt(t))return t;t=Lt(t)}return n}let r=Zt(e,t);for(;r&&Ct(r)&&Jt(r);)r=Zt(r,t);return r&&_t(r)&&Jt(r)&&!Dt(r)?n:r||function(e){let t=Lt(e);for(;bt(t)&&!_t(t);){if(Dt(t))return t;if(Tt(t))return null;t=Lt(t)}return null}(e)||n}const tn={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e;const o="fixed"===i,a=mt(r),s=!!t&&Tt(t.floating);if(r===a||s&&o)return n;let l={scrollLeft:0,scrollTop:0},c=He(1);const u=He(0),d=bt(r);if((d||!d&&!o)&&(("body"!==pt(r)||kt(a))&&(l=At(r)),bt(r))){const e=Bt(r);c=Ht(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}const h=!a||d||o?He(0):Yt(a,l);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+u.x+h.x,y:n.y*c.y-l.scrollTop*c.y+u.y+h.y}},getDocumentElement:mt,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e;const o=[..."clippingAncestors"===n?Tt(t)?[]:function(e,t){const n=t.get(e);if(n)return n;let r=Ft(e,[],!1).filter((e=>vt(e)&&"body"!==pt(e))),i=null;const o="fixed"===Nt(e).position;let a=o?Lt(e):e;for(;vt(a)&&!_t(a);){const t=Nt(a),n=Dt(a);n||"fixed"!==t.position||(i=null),(o?!n&&!i:!n&&"static"===t.position&&i&&Vt.has(i.position)||kt(a)&&!n&&Gt(e,a))?r=r.filter((e=>e!==a)):i=t,a=Lt(a)}return t.set(e,r),r}(t,this._c):[].concat(n),r],a=o[0],s=o.reduce(((e,n)=>{const r=Kt(t,n,i);return e.top=Ie(r.top,e.top),e.right=Fe(r.right,e.right),e.bottom=Fe(r.bottom,e.bottom),e.left=Ie(r.left,e.left),e}),Kt(t,a,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},getOffsetParent:en,getElementRects:async function(e){const t=this.getOffsetParent||en,n=this.getDimensions,r=await n(e.floating);return{reference:Xt(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:n}=Ut(e);return{width:t,height:n}},getScale:Ht,isElement:vt,isRTL:function(e){return"rtl"===Nt(e).direction}};function nn(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}const rn=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:i,y:o,placement:a,middlewareData:s}=t,l=await async function(e,t){const{placement:n,platform:r,elements:i}=e,o=await(null==r.isRTL?void 0:r.isRTL(i.floating)),a=Ye(n),s=Ve(n),l="y"===Je(n),c=ht.has(a)?-1:1,u=o&&l?-1:1,d=$e(t,e);let{mainAxis:h,crossAxis:f,alignmentAxis:p}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&"number"==typeof p&&(f="end"===s?-1*p:p),l?{x:f*u,y:h*c}:{x:h*c,y:f*u}}(t,e);return a===(null==(n=s.offset)?void 0:n.placement)&&null!=(r=s.arrow)&&r.alignmentOffset?{}:{x:i+l.x,y:o+l.y,data:{...l,placement:a}}}}},on=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:i}=t,{mainAxis:o=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=$e(e,t),c={x:n,y:r},u=await ct(t,l),d=Je(Ye(i)),h=Ke(d);let f=c[h],p=c[d];if(o){const e="y"===h?"bottom":"right";f=Be(f+u["y"===h?"top":"left"],f,f-u[e])}if(a){const e="y"===d?"bottom":"right";p=Be(p+u["y"===d?"top":"left"],p,p-u[e])}const y=s.fn({...t,[h]:f,[d]:p});return{...y,data:{x:y.x-n,y:y.y-r,enabled:{[h]:o,[d]:a}}}}}},an=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,r;const{placement:i,middlewareData:o,rects:a,initialPlacement:s,platform:l,elements:c}=t,{mainAxis:u=!0,crossAxis:d=!0,fallbackPlacements:h,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:p="none",flipAlignment:y=!0,...m}=$e(e,t);if(null!=(n=o.arrow)&&n.alignmentOffset)return{};const g=Ye(i),v=Je(s),b=Ye(s)===s,w=await(null==l.isRTL?void 0:l.isRTL(c.floating)),x=h||(b||!y?[ot(s)]:function(e){const t=ot(e);return[et(e),t,et(t)]}(s)),k="none"!==p;!h&&k&&x.push(...function(e,t,n,r){const i=Ve(e);let o=function(e,t,n){switch(e){case"top":case"bottom":return n?t?nt:tt:t?tt:nt;case"left":case"right":return t?rt:it;default:return[]}}(Ye(e),"start"===n,r);return i&&(o=o.map((e=>e+"-"+i)),t&&(o=o.concat(o.map(et)))),o}(s,y,p,w));const E=[s,...x],C=await ct(t,m),M=[];let T=(null==(r=o.flip)?void 0:r.overflows)||[];if(u&&M.push(C[g]),d){const e=function(e,t,n){void 0===n&&(n=!1);const r=Ve(e),i=Ze(e),o=Ge(i);let a="x"===i?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[o]>t.floating[o]&&(a=ot(a)),[a,ot(a)]}(i,a,w);M.push(C[e[0]],C[e[1]])}if(T=[...T,{placement:i,overflows:M}],!M.every((e=>e<=0))){var O,S;const e=((null==(O=o.flip)?void 0:O.index)||0)+1,t=E[e];if(t&&("alignment"!==d||v===Je(t)||T.every((e=>Je(e.placement)!==v||e.overflows[0]>0))))return{data:{index:e,overflows:T},reset:{placement:t}};let n=null==(S=T.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:S.placement;if(!n)switch(f){case"bestFit":{var R;const e=null==(R=T.filter((e=>{if(k){const t=Je(e.placement);return t===v||"y"===t}return!0})).map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:R[0];e&&(n=e);break}case"initialPlacement":n=s}if(i!==n)return{reset:{placement:n}}}return{}}}},sn=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){var n,r;const{placement:i,rects:o,platform:a,elements:s}=t,{apply:l=()=>{},...c}=$e(e,t),u=await ct(t,c),d=Ye(i),h=Ve(i),f="y"===Je(i),{width:p,height:y}=o.floating;let m,g;"top"===d||"bottom"===d?(m=d,g=h===(await(null==a.isRTL?void 0:a.isRTL(s.floating))?"start":"end")?"left":"right"):(g=d,m="end"===h?"top":"bottom");const v=y-u.top-u.bottom,b=p-u.left-u.right,w=Fe(y-u[m],v),x=Fe(p-u[g],b),k=!t.middlewareData.shift;let E=w,C=x;if(null!=(n=t.middlewareData.shift)&&n.enabled.x&&(C=b),null!=(r=t.middlewareData.shift)&&r.enabled.y&&(E=v),k&&!h){const e=Ie(u.left,0),t=Ie(u.right,0),n=Ie(u.top,0),r=Ie(u.bottom,0);f?C=p-2*(0!==e||0!==t?e+t:Ie(u.left,u.right)):E=y-2*(0!==n||0!==r?n+r:Ie(u.top,u.bottom))}await l({...t,availableWidth:C,availableHeight:E});const M=await a.getDimensions(s.floating);return p!==M.width||y!==M.height?{reset:{rects:!0}}:{}}}},ln=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...i}=$e(e,t);switch(r){case"referenceHidden":{const e=ut(await ct(t,{...i,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:dt(e)}}}case"escaped":{const e=ut(await ct(t,{...i,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:dt(e)}}}default:return{}}}}},cn=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:i,rects:o,platform:a,elements:s,middlewareData:l}=t,{element:c,padding:u=0}=$e(e,t)||{};if(null==c)return{};const d=at(u),h={x:n,y:r},f=Ze(i),p=Ge(f),y=await a.getDimensions(c),m="y"===f,g=m?"top":"left",v=m?"bottom":"right",b=m?"clientHeight":"clientWidth",w=o.reference[p]+o.reference[f]-h[f]-o.floating[p],x=h[f]-o.reference[f],k=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let E=k?k[b]:0;E&&await(null==a.isElement?void 0:a.isElement(k))||(E=s.floating[b]||o.floating[p]);const C=w/2-x/2,M=E/2-y[p]/2-1,T=Fe(d[g],M),O=Fe(d[v],M),S=T,R=E-y[p]-O,D=E/2-y[p]/2+C,P=Be(S,D,R),q=!l.arrow&&null!=Ve(i)&&D!==P&&o.reference[p]/2-(D<S?T:O)-y[p]/2<0,_=q?D<S?D-S:D-R:0;return{[f]:h[f]+_,data:{[f]:P,centerOffset:D-P-_,...q&&{alignmentOffset:_}},reset:q}}}),un=function(e){return void 0===e&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:i,rects:o,middlewareData:a}=t,{offset:s=0,mainAxis:l=!0,crossAxis:c=!0}=$e(e,t),u={x:n,y:r},d=Je(i),h=Ke(d);let f=u[h],p=u[d];const y=$e(s,t),m="number"==typeof y?{mainAxis:y,crossAxis:0}:{mainAxis:0,crossAxis:0,...y};if(l){const e="y"===h?"height":"width",t=o.reference[h]-o.floating[e]+m.mainAxis,n=o.reference[h]+o.reference[e]-m.mainAxis;f<t?f=t:f>n&&(f=n)}if(c){var g,v;const e="y"===h?"width":"height",t=ht.has(Ye(i)),n=o.reference[d]-o.floating[e]+(t&&(null==(g=a.offset)?void 0:g[d])||0)+(t?0:m.crossAxis),r=o.reference[d]+o.reference[e]+(t?0:(null==(v=a.offset)?void 0:v[d])||0)-(t?m.crossAxis:0);p<n?p=n:p>r&&(p=r)}return{[h]:f,[d]:p}}}},dn=(e,t,n)=>{const r=new Map,i={platform:tn,...n},o={...i.platform,_c:r};return(async(e,t,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:a}=n,s=o.filter(Boolean),l=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=lt(c,r,l),h=r,f={},p=0;for(let n=0;n<s.length;n++){const{name:o,fn:y}=s[n],{x:m,y:g,data:v,reset:b}=await y({x:u,y:d,initialPlacement:r,placement:h,strategy:i,middlewareData:f,rects:c,platform:a,elements:{reference:e,floating:t}});u=null!=m?m:u,d=null!=g?g:d,f={...f,[o]:{...f[o],...v}},b&&p<=50&&(p++,"object"==typeof b&&(b.placement&&(h=b.placement),b.rects&&(c=!0===b.rects?await a.getElementRects({reference:e,floating:t,strategy:i}):b.rects),({x:u,y:d}=lt(c,h,l))),n=-1)}return{x:u,y:d,placement:h,strategy:i,middlewareData:f}})(e,t,{...i,platform:o})};var hn="undefined"!=typeof document?o.useLayoutEffect:function(){};function fn(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;0!==r--;)if(!fn(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;0!==r--;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;0!==r--;){const n=i[r];if(!("_owner"===n&&e.$$typeof||fn(e[n],t[n])))return!1}return!0}return e!=e&&t!=t}function pn(e){return"undefined"==typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function yn(e,t){const n=pn(e);return Math.round(t*n)/n}function mn(e){const t=o.useRef(e);return hn((()=>{t.current=e})),t}const gn=e=>({name:"arrow",options:e,fn(t){const{element:n,padding:r}="function"==typeof e?e(t):e;return n&&(i=n,{}.hasOwnProperty.call(i,"current"))?null!=n.current?cn({element:n.current,padding:r}).fn(t):{}:n?cn({element:n,padding:r}).fn(t):{};var i}}),vn=(e,t)=>({...on(e),options:[e,t]}),bn=(e,t)=>({...un(e),options:[e,t]}),wn=(e,t)=>({...an(e),options:[e,t]}),xn=(e,t)=>({...sn(e),options:[e,t]}),kn=(e,t)=>({...ln(e),options:[e,t]}),En=(e,t)=>({...gn(e),options:[e,t]});var Cn=o.forwardRef(((e,t)=>{const{children:n,width:r=10,height:i=5,...o}=e;return(0,be.jsx)(Te.svg,{...o,ref:t,width:r,height:i,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:(0,be.jsx)("polygon",{points:"0,0 30,0 15,10"})})}));Cn.displayName="Arrow";var Mn=Cn,Tn="Popper",[On,Sn]=we(Tn),[Rn,Dn]=On(Tn),Pn=e=>{const{__scopePopper:t,children:n}=e,[r,i]=o.useState(null);return(0,be.jsx)(Rn,{scope:t,anchor:r,onAnchorChange:i,children:n})};Pn.displayName=Tn;var qn="PopperAnchor",Nn=o.forwardRef(((e,t)=>{const{__scopePopper:n,virtualRef:r,...i}=e,a=Dn(qn,n),s=o.useRef(null),l=ve(t,s),c=o.useRef(null);return o.useEffect((()=>{const e=c.current;c.current=r?.current||s.current,e!==c.current&&a.onAnchorChange(c.current)})),r?null:(0,be.jsx)(Te.div,{...i,ref:l})}));Nn.displayName=qn;var An="PopperContent",[Ln,jn]=On(An),Fn=o.forwardRef(((e,t)=>{const{__scopePopper:n,side:r="bottom",sideOffset:i=0,align:a="center",alignOffset:s=0,arrowPadding:l=0,avoidCollisions:c=!0,collisionBoundary:u=[],collisionPadding:d=0,sticky:h="partial",hideWhenDetached:f=!1,updatePositionStrategy:p="optimized",onPlaced:y,...m}=e,g=Dn(An,n),[v,b]=o.useState(null),w=ve(t,(e=>b(e))),[x,k]=o.useState(null),E=function(e){const[t,n]=o.useState(void 0);return Ne((()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const t=new ResizeObserver((t=>{if(!Array.isArray(t))return;if(!t.length)return;const r=t[0];let i,o;if("borderBoxSize"in r){const e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,o=t.blockSize}else i=e.offsetWidth,o=e.offsetHeight;n({width:i,height:o})}));return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}n(void 0)}),[e]),t}(x),C=E?.width??0,M=E?.height??0,T=r+("center"!==a?"-"+a:""),O="number"==typeof d?d:{top:0,right:0,bottom:0,left:0,...d},S=Array.isArray(u)?u:[u],R=S.length>0,D={padding:O,boundary:S.filter(Hn),altBoundary:R},{refs:P,floatingStyles:q,placement:_,isPositioned:N,middlewareData:A}=function(e){void 0===e&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:i,elements:{reference:a,floating:s}={},transform:l=!0,whileElementsMounted:c,open:u}=e,[d,h]=o.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=o.useState(r);fn(f,r)||p(r);const[y,m]=o.useState(null),[g,v]=o.useState(null),b=o.useCallback((e=>{e!==E.current&&(E.current=e,m(e))}),[]),w=o.useCallback((e=>{e!==C.current&&(C.current=e,v(e))}),[]),x=a||y,k=s||g,E=o.useRef(null),C=o.useRef(null),M=o.useRef(d),T=null!=c,O=mn(c),S=mn(i),R=mn(u),D=o.useCallback((()=>{if(!E.current||!C.current)return;const e={placement:t,strategy:n,middleware:f};S.current&&(e.platform=S.current),dn(E.current,C.current,e).then((e=>{const t={...e,isPositioned:!1!==R.current};P.current&&!fn(M.current,t)&&(M.current=t,ke.flushSync((()=>{h(t)})))}))}),[f,t,n,S,R]);hn((()=>{!1===u&&M.current.isPositioned&&(M.current.isPositioned=!1,h((e=>({...e,isPositioned:!1}))))}),[u]);const P=o.useRef(!1);hn((()=>(P.current=!0,()=>{P.current=!1})),[]),hn((()=>{if(x&&(E.current=x),k&&(C.current=k),x&&k){if(O.current)return O.current(x,k,D);D()}}),[x,k,D,O,T]);const q=o.useMemo((()=>({reference:E,floating:C,setReference:b,setFloating:w})),[b,w]),_=o.useMemo((()=>({reference:x,floating:k})),[x,k]),N=o.useMemo((()=>{const e={position:n,left:0,top:0};if(!_.floating)return e;const t=yn(_.floating,d.x),r=yn(_.floating,d.y);return l?{...e,transform:"translate("+t+"px, "+r+"px)",...pn(_.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:t,top:r}}),[n,l,_.floating,d.x,d.y]);return o.useMemo((()=>({...d,update:D,refs:q,elements:_,floatingStyles:N})),[d,D,q,_,N])}({strategy:"fixed",placement:T,whileElementsMounted:(...e)=>function(e,t,n,r){void 0===r&&(r={});const{ancestorScroll:i=!0,ancestorResize:o=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:l=!1}=r,c=zt(e),u=i||o?[...c?Ft(c):[],...Ft(t)]:[];u.forEach((e=>{i&&e.addEventListener("scroll",n,{passive:!0}),o&&e.addEventListener("resize",n)}));const d=c&&s?function(e,t){let n,r=null;const i=mt(e);function o(){var e;clearTimeout(n),null==(e=r)||e.disconnect(),r=null}return function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),o();const c=e.getBoundingClientRect(),{left:u,top:d,width:h,height:f}=c;if(s||t(),!h||!f)return;const p={rootMargin:-ze(d)+"px "+-ze(i.clientWidth-(u+h))+"px "+-ze(i.clientHeight-(d+f))+"px "+-ze(u)+"px",threshold:Ie(0,Fe(1,l))||1};let y=!0;function m(t){const r=t[0].intersectionRatio;if(r!==l){if(!y)return a();r?a(!1,r):n=setTimeout((()=>{a(!1,1e-7)}),1e3)}1!==r||nn(c,e.getBoundingClientRect())||a(),y=!1}try{r=new IntersectionObserver(m,{...p,root:i.ownerDocument})}catch(e){r=new IntersectionObserver(m,p)}r.observe(e)}(!0),o}(c,n):null;let h,f=-1,p=null;a&&(p=new ResizeObserver((e=>{let[r]=e;r&&r.target===c&&p&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame((()=>{var e;null==(e=p)||e.observe(t)}))),n()})),c&&!l&&p.observe(c),p.observe(t));let y=l?Bt(e):null;return l&&function t(){const r=Bt(e);y&&!nn(y,r)&&n(),y=r,h=requestAnimationFrame(t)}(),n(),()=>{var e;u.forEach((e=>{i&&e.removeEventListener("scroll",n),o&&e.removeEventListener("resize",n)})),null==d||d(),null==(e=p)||e.disconnect(),p=null,l&&cancelAnimationFrame(h)}}(...e,{animationFrame:"always"===p}),elements:{reference:g.anchor},middleware:[(L={mainAxis:i+M,alignmentAxis:s},{...rn(L),options:[L,undefined]}),c&&vn({mainAxis:!0,crossAxis:!1,limiter:"partial"===h?bn():void 0,...D}),c&&wn({...D}),xn({...D,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{const{width:i,height:o}=t.reference,a=e.floating.style;a.setProperty("--radix-popper-available-width",`${n}px`),a.setProperty("--radix-popper-available-height",`${r}px`),a.setProperty("--radix-popper-anchor-width",`${i}px`),a.setProperty("--radix-popper-anchor-height",`${o}px`)}}),x&&En({element:x,padding:l}),Qn({arrowWidth:C,arrowHeight:M}),f&&kn({strategy:"referenceHidden",...D})]});var L;const[j,F]=Wn(_),I=Oe(y);Ne((()=>{N&&I?.()}),[N,I]);const U=A.arrow?.x,z=A.arrow?.y,H=0!==A.arrow?.centerOffset,[Q,W]=o.useState();return Ne((()=>{v&&W(window.getComputedStyle(v).zIndex)}),[v]),(0,be.jsx)("div",{ref:P.setFloating,"data-radix-popper-content-wrapper":"",style:{...q,transform:N?q.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Q,"--radix-popper-transform-origin":[A.transformOrigin?.x,A.transformOrigin?.y].join(" "),...A.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,be.jsx)(Ln,{scope:n,placedSide:j,onArrowChange:k,arrowX:U,arrowY:z,shouldHideArrow:H,children:(0,be.jsx)(Te.div,{"data-side":j,"data-align":F,...m,ref:w,style:{...m.style,animation:N?void 0:"none"}})})})}));Fn.displayName=An;var In="PopperArrow",Un={top:"bottom",right:"left",bottom:"top",left:"right"},zn=o.forwardRef((function(e,t){const{__scopePopper:n,...r}=e,i=jn(In,n),o=Un[i.placedSide];return(0,be.jsx)("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[o]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:(0,be.jsx)(Mn,{...r,ref:t,style:{...r.style,display:"block"}})})}));function Hn(e){return null!==e}zn.displayName=In;var Qn=e=>({name:"transformOrigin",options:e,fn(t){const{placement:n,rects:r,middlewareData:i}=t,o=0!==i.arrow?.centerOffset,a=o?0:e.arrowWidth,s=o?0:e.arrowHeight,[l,c]=Wn(n),u={start:"0%",center:"50%",end:"100%"}[c],d=(i.arrow?.x??0)+a/2,h=(i.arrow?.y??0)+s/2;let f="",p="";return"bottom"===l?(f=o?u:`${d}px`,p=-s+"px"):"top"===l?(f=o?u:`${d}px`,p=`${r.floating.height+s}px`):"right"===l?(f=-s+"px",p=o?u:`${h}px`):"left"===l&&(f=`${r.floating.width+s}px`,p=o?u:`${h}px`),{data:{x:f,y:p}}}});function Wn(e){const[t,n="center"]=e.split("-");return[t,n]}var Bn=Pn,$n=Nn,Yn=Fn,Vn=zn,Kn=o.forwardRef(((e,t)=>{const{container:n,...r}=e,[i,a]=o.useState(!1);Ne((()=>a(!0)),[]);const s=n||i&&globalThis?.document?.body;return s?ke.createPortal((0,be.jsx)(Te.div,{...r,ref:t}),s):null}));Kn.displayName="Portal";var Gn=e=>{const{present:t,children:n}=e,r=function(e){const[t,n]=o.useState(),r=o.useRef(null),i=o.useRef(e),a=o.useRef("none"),s=e?"mounted":"unmounted",[l,c]=function(e,t){return o.useReducer(((e,n)=>t[e][n]??e),e)}(s,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return o.useEffect((()=>{const e=Xn(r.current);a.current="mounted"===l?e:"none"}),[l]),Ne((()=>{const t=r.current,n=i.current;if(n!==e){const r=a.current,o=Xn(t);c(e?"MOUNT":"none"===o||"none"===t?.display?"UNMOUNT":n&&r!==o?"ANIMATION_OUT":"UNMOUNT"),i.current=e}}),[e,c]),Ne((()=>{if(t){let e;const n=t.ownerDocument.defaultView??window,o=o=>{const a=Xn(r.current).includes(CSS.escape(o.animationName));if(o.target===t&&a&&(c("ANIMATION_END"),!i.current)){const r=t.style.animationFillMode;t.style.animationFillMode="forwards",e=n.setTimeout((()=>{"forwards"===t.style.animationFillMode&&(t.style.animationFillMode=r)}))}},s=e=>{e.target===t&&(a.current=Xn(r.current))};return t.addEventListener("animationstart",s),t.addEventListener("animationcancel",o),t.addEventListener("animationend",o),()=>{n.clearTimeout(e),t.removeEventListener("animationstart",s),t.removeEventListener("animationcancel",o),t.removeEventListener("animationend",o)}}c("ANIMATION_END")}),[t,c]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:o.useCallback((e=>{r.current=e?getComputedStyle(e):null,n(e)}),[])}}(t),i="function"==typeof n?n({present:r.isPresent}):o.Children.only(n),a=ve(r.ref,function(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}(i));return"function"==typeof n||r.isPresent?o.cloneElement(i,{ref:a}):null};function Xn(e){return e?.animationName||"none"}Gn.displayName="Presence";var Jn=a[" useInsertionEffect ".trim().toString()]||Ne;Symbol("RADIX:SYNC_STATE");var Zn=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),er=o.forwardRef(((e,t)=>(0,be.jsx)(Te.span,{...e,ref:t,style:{...Zn,...e.style}})));er.displayName="VisuallyHidden";var tr=er,[nr,rr]=we("Tooltip",[Sn]),ir=Sn(),or="TooltipProvider",ar=700,sr="tooltip.open",[lr,cr]=nr(or),ur=e=>{const{__scopeTooltip:t,delayDuration:n=ar,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,s=o.useRef(!0),l=o.useRef(!1),c=o.useRef(0);return o.useEffect((()=>{const e=c.current;return()=>window.clearTimeout(e)}),[]),(0,be.jsx)(lr,{scope:t,isOpenDelayedRef:s,delayDuration:n,onOpen:o.useCallback((()=>{window.clearTimeout(c.current),s.current=!1}),[]),onClose:o.useCallback((()=>{window.clearTimeout(c.current),c.current=window.setTimeout((()=>s.current=!0),r)}),[r]),isPointerInTransitRef:l,onPointerInTransitChange:o.useCallback((e=>{l.current=e}),[]),disableHoverableContent:i,children:a})};ur.displayName=or;var dr="Tooltip",[hr,fr]=nr(dr),pr=e=>{const{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:s,delayDuration:l}=e,c=cr(dr,e.__scopeTooltip),u=ir(t),[d,h]=o.useState(null),f=function(e){const[t,n]=o.useState(Ae());return Ne((()=>{n((e=>e??String(Le++)))}),[e]),t?`radix-${t}`:""}(),p=o.useRef(0),y=s??c.disableHoverableContent,m=l??c.delayDuration,g=o.useRef(!1),[v,b]=function({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){const[i,a,s]=function({defaultProp:e,onChange:t}){const[n,r]=o.useState(e),i=o.useRef(n),a=o.useRef(t);return Jn((()=>{a.current=t}),[t]),o.useEffect((()=>{i.current!==n&&(a.current?.(n),i.current=n)}),[n,i]),[n,r,a]}({defaultProp:t,onChange:n}),l=void 0!==e,c=l?e:i;{const t=o.useRef(void 0!==e);o.useEffect((()=>{const e=t.current;if(e!==l){const t=e?"controlled":"uncontrolled",n=l?"controlled":"uncontrolled";console.warn(`${r} is changing from ${t} to ${n}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}t.current=l}),[l,r])}const u=o.useCallback((t=>{if(l){const n=function(e){return"function"==typeof e}(t)?t(e):t;n!==e&&s.current?.(n)}else a(t)}),[l,e,a,s]);return[c,u]}({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(sr))):c.onClose(),a?.(e)},caller:dr}),w=o.useMemo((()=>v?g.current?"delayed-open":"instant-open":"closed"),[v]),x=o.useCallback((()=>{window.clearTimeout(p.current),p.current=0,g.current=!1,b(!0)}),[b]),k=o.useCallback((()=>{window.clearTimeout(p.current),p.current=0,b(!1)}),[b]),E=o.useCallback((()=>{window.clearTimeout(p.current),p.current=window.setTimeout((()=>{g.current=!0,b(!0),p.current=0}),m)}),[m,b]);return o.useEffect((()=>()=>{p.current&&(window.clearTimeout(p.current),p.current=0)}),[]),(0,be.jsx)(Bn,{...u,children:(0,be.jsx)(hr,{scope:t,contentId:f,open:v,stateAttribute:w,trigger:d,onTriggerChange:h,onTriggerEnter:o.useCallback((()=>{c.isOpenDelayedRef.current?E():x()}),[c.isOpenDelayedRef,E,x]),onTriggerLeave:o.useCallback((()=>{y?k():(window.clearTimeout(p.current),p.current=0)}),[k,y]),onOpen:x,onClose:k,disableHoverableContent:y,children:n})})};pr.displayName=dr;var yr="TooltipTrigger",mr=o.forwardRef(((e,t)=>{const{__scopeTooltip:n,...r}=e,i=fr(yr,n),a=cr(yr,n),s=ir(n),l=ve(t,o.useRef(null),i.onTriggerChange),c=o.useRef(!1),u=o.useRef(!1),d=o.useCallback((()=>c.current=!1),[]);return o.useEffect((()=>()=>document.removeEventListener("pointerup",d)),[d]),(0,be.jsx)($n,{asChild:!0,...s,children:(0,be.jsx)(Te.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:l,onPointerMove:ye(e.onPointerMove,(e=>{"touch"!==e.pointerType&&(u.current||a.isPointerInTransitRef.current||(i.onTriggerEnter(),u.current=!0))})),onPointerLeave:ye(e.onPointerLeave,(()=>{i.onTriggerLeave(),u.current=!1})),onPointerDown:ye(e.onPointerDown,(()=>{i.open&&i.onClose(),c.current=!0,document.addEventListener("pointerup",d,{once:!0})})),onFocus:ye(e.onFocus,(()=>{c.current||i.onOpen()})),onBlur:ye(e.onBlur,i.onClose),onClick:ye(e.onClick,i.onClose)})})}));mr.displayName=yr;var gr="TooltipPortal",[vr,br]=nr(gr,{forceMount:void 0}),wr="TooltipContent",xr=o.forwardRef(((e,t)=>{const n=br(wr,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i="top",...o}=e,a=fr(wr,e.__scopeTooltip);return(0,be.jsx)(Gn,{present:r||a.open,children:a.disableHoverableContent?(0,be.jsx)(Tr,{side:i,...o,ref:t}):(0,be.jsx)(kr,{side:i,...o,ref:t})})})),kr=o.forwardRef(((e,t)=>{const n=fr(wr,e.__scopeTooltip),r=cr(wr,e.__scopeTooltip),i=o.useRef(null),a=ve(t,i),[s,l]=o.useState(null),{trigger:c,onClose:u}=n,d=i.current,{onPointerInTransitChange:h}=r,f=o.useCallback((()=>{l(null),h(!1)}),[h]),p=o.useCallback(((e,t)=>{const n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=function(e,t,n=5){const r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}(r,function(e,t){const n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),o=Math.abs(t.left-e.x);switch(Math.min(n,r,i,o)){case o:return"left";case i:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}(r,n.getBoundingClientRect())),o=function(e){const t=e.slice();return t.sort(((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:e.y>t.y?1:0)),function(e){if(e.length<=1)return e.slice();const t=[];for(let n=0;n<e.length;n++){const r=e[n];for(;t.length>=2;){const e=t[t.length-1],n=t[t.length-2];if(!((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x)))break;t.pop()}t.push(r)}t.pop();const n=[];for(let t=e.length-1;t>=0;t--){const r=e[t];for(;n.length>=2;){const e=n[n.length-1],t=n[n.length-2];if(!((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x)))break;n.pop()}n.push(r)}return n.pop(),1===t.length&&1===n.length&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}(t)}([...i,...function(e){const{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}(t.getBoundingClientRect())]);l(o),h(!0)}),[h]);return o.useEffect((()=>()=>f()),[f]),o.useEffect((()=>{if(c&&d){const e=e=>p(e,d),t=e=>p(e,c);return c.addEventListener("pointerleave",e),d.addEventListener("pointerleave",t),()=>{c.removeEventListener("pointerleave",e),d.removeEventListener("pointerleave",t)}}}),[c,d,p,f]),o.useEffect((()=>{if(s){const e=e=>{const t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||d?.contains(t),i=!function(e,t){const{x:n,y:r}=e;let i=!1;for(let e=0,o=t.length-1;e<t.length;o=e++){const a=t[e],s=t[o],l=a.x,c=a.y,u=s.x,d=s.y;c>r!=d>r&&n<(u-l)*(r-c)/(d-c)+l&&(i=!i)}return i}(n,s);r?f():i&&(f(),u())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}}),[c,d,s,u,f]),(0,be.jsx)(Tr,{...e,ref:a})})),[Er,Cr]=nr(dr,{isInside:!1}),Mr=function(e){const t=({children:e})=>(0,be.jsx)(be.Fragment,{children:e});return t.displayName=`${e}.Slottable`,t.__radixId=Ce,t}("TooltipContent"),Tr=o.forwardRef(((e,t)=>{const{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:s,...l}=e,c=fr(wr,n),u=ir(n),{onClose:d}=c;return o.useEffect((()=>(document.addEventListener(sr,d),()=>document.removeEventListener(sr,d))),[d]),o.useEffect((()=>{if(c.trigger){const e=e=>{const t=e.target;t?.contains(c.trigger)&&d()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}}),[c.trigger,d]),(0,be.jsx)(Pe,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:s,onFocusOutside:e=>e.preventDefault(),onDismiss:d,children:(0,be.jsxs)(Yn,{"data-state":c.stateAttribute,...u,...l,ref:t,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,be.jsx)(Mr,{children:r}),(0,be.jsx)(Er,{scope:n,isInside:!0,children:(0,be.jsx)(tr,{id:c.contentId,role:"tooltip",children:i||r})})]})})}));xr.displayName=wr;var Or="TooltipArrow",Sr=o.forwardRef(((e,t)=>{const{__scopeTooltip:n,...r}=e,i=ir(n);return Cr(Or,n).isInside?null:(0,be.jsx)(Vn,{...i,...r,ref:t})}));Sr.displayName=Or;var Rr=ur,Dr=pr,Pr=mr,qr=xr,_r=Sr;const Nr=({children:e,content:t,delayDuration:n=400})=>t?(0,o.createElement)(Rr,null,(0,o.createElement)(Dr,{delayDuration:n},(0,o.createElement)(Pr,{asChild:!0},e),(0,o.createElement)(qr,{className:"z-[99999] max-w-xs bg-gray-200 text-gray border border-gray-300 px-3 py-2 text-base rounded shadow-md animate-in fade-in-50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0  data-[state=delayed-open]:data-[side=top]:slide-in-from-bottom-2 data-[state=delayed-open]:data-[side=bottom]:slide-in-from-top-2 data-[state=delayed-open]:data-[side=left]:slide-in-from-right-2 data-[state=delayed-open]:data-[side=right]:slide-in-from-left-2",sideOffset:5},t,(0,o.createElement)(_r,{className:"fill-gray-300",width:10,height:5})))):(0,o.createElement)(o.Fragment,null,e),Ar=e=>{const t=(e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,((e,t,n)=>n?n.toUpperCase():t.toLowerCase())))(e);return t.charAt(0).toUpperCase()+t.slice(1)},Lr=(...e)=>e.filter(((e,t,n)=>Boolean(e)&&""!==e.trim()&&n.indexOf(e)===t)).join(" ").trim(),jr=e=>{for(const t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0};var Fr={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const Ir=(0,o.forwardRef)((({color:e="currentColor",size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i="",children:a,iconNode:s,...l},c)=>(0,o.createElement)("svg",{ref:c,...Fr,width:t,height:t,stroke:e,strokeWidth:r?24*Number(n)/Number(t):n,className:Lr("lucide",i),...!a&&!jr(l)&&{"aria-hidden":"true"},...l},[...s.map((([e,t])=>(0,o.createElement)(e,t))),...Array.isArray(a)?a:[a]]))),Ur=(e,t)=>{const n=(0,o.forwardRef)((({className:n,...r},i)=>{return(0,o.createElement)(Ir,{ref:i,iconNode:t,className:Lr(`lucide-${a=Ar(e),a.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,n),...r});var a}));return n.displayName=Ar(e),n},zr=Ur("user-round-check",[["path",{d:"M2 21a8 8 0 0 1 13.292-6",key:"bjp14o"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"m16 19 2 2 4-4",key:"1b14m6"}]]),Hr=Ur("user-round-plus",[["path",{d:"M2 21a8 8 0 0 1 13.292-6",key:"bjp14o"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"M19 16v6",key:"tddt3s"}],["path",{d:"M22 19h-6",key:"vcuq98"}]]),Qr=Ur("shopping-cart",[["circle",{cx:"8",cy:"21",r:"1",key:"jimo8o"}],["circle",{cx:"19",cy:"21",r:"1",key:"13723u"}],["path",{d:"M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12",key:"9zh506"}]]),Wr=Ur("octagon-alert",[["path",{d:"M12 16h.01",key:"1drbdi"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z",key:"1fd625"}]]),Br=Ur("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),$r=Ur("percent",[["line",{x1:"19",x2:"5",y1:"5",y2:"19",key:"1x9vlm"}],["circle",{cx:"6.5",cy:"6.5",r:"2.5",key:"4mh3h7"}],["circle",{cx:"17.5",cy:"17.5",r:"2.5",key:"1mdrzq"}]]),Yr=Ur("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),Vr=Ur("lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]),Kr=Ur("move-right",[["path",{d:"M18 8L22 12L18 16",key:"1r0oui"}],["path",{d:"M2 12H22",key:"1m8cig"}]]),Gr=Ur("ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]),Xr=Ur("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),Jr=Ur("circle-off",[["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M8.35 2.69A10 10 0 0 1 21.3 15.65",key:"1pfsoa"}],["path",{d:"M19.08 19.08A10 10 0 1 1 4.92 4.92",key:"1ablyi"}]]),Zr=Ur("circle-dot",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}]]),ei=Ur("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]),ti=Ur("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]),ni=Ur("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),ri=Ur("trophy",[["path",{d:"M10 14.66v1.626a2 2 0 0 1-.976 1.696A5 5 0 0 0 7 21.978",key:"1n3hpd"}],["path",{d:"M14 14.66v1.626a2 2 0 0 0 .976 1.696A5 5 0 0 1 17 21.978",key:"rfe1zi"}],["path",{d:"M18 9h1.5a1 1 0 0 0 0-5H18",key:"7xy6bh"}],["path",{d:"M4 22h16",key:"57wxv0"}],["path",{d:"M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z",key:"1mhfuq"}],["path",{d:"M6 9H4.5a1 1 0 0 1 0-5H6",key:"tex48p"}]]),ii=Ur("frown",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M16 16s-1.5-2-4-2-4 2-4 2",key:"epbg0q"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]]),oi=Ur("hourglass",[["path",{d:"M5 22h14",key:"ehvnwv"}],["path",{d:"M5 2h14",key:"pdyrp9"}],["path",{d:"M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22",key:"1d314k"}],["path",{d:"M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2",key:"1vvvr6"}]]),ai=Ur("scale",[["path",{d:"m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z",key:"7g6ntu"}],["path",{d:"m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z",key:"ijws7r"}],["path",{d:"M7 21h10",key:"1b0cd5"}],["path",{d:"M12 3v18",key:"108xh3"}],["path",{d:"M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2",key:"3gwbw2"}]]),si=Ur("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]),li=Ur("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]),ci=Ur("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]),ui=Ur("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]),di=Ur("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]),hi=Ur("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),fi=Ur("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]),pi=Ur("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]),yi=Ur("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]),mi=Ur("braces",[["path",{d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1",key:"ezmyqa"}],["path",{d:"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1",key:"e1hn23"}]]),gi=Ur("file-text",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]),vi=Ur("file-x",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"m14.5 12.5-5 5",key:"b62r18"}],["path",{d:"m9.5 12.5 5 5",key:"1rk7el"}]]),bi=Ur("file-down",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M12 18v-6",key:"17g6i2"}],["path",{d:"m9 15 3 3 3-3",key:"1npd3o"}]]),wi=Ur("calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]),xi=Ur("calendar-x",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"m14 14-4 4",key:"rymu2i"}],["path",{d:"m10 14 4 4",key:"3sz06r"}]]),ki=Ur("panel-top",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}]]),Ei=Ur("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),Ci=Ur("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]),Mi=Ur("trash",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}]]),Ti=Ur("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]),Oi=Ur("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]),Si=Ur("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]),Ri=Ur("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),Di=Ur("link",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]),Pi=Ur("circle-user",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]]),qi=Ur("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]),_i=Ur("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]),Ni=Ur("infinity",[["path",{d:"M6 16c5 0 7-8 12-8a4 4 0 0 1 0 8c-5 0-7-8-12-8a4 4 0 1 0 0 8",key:"18ogeb"}]]),Ai=Ur("chart-line",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"m19 9-5 5-4-4-3 3",key:"2osh9i"}]]),Li=Ur("chart-pie",[["path",{d:"M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z",key:"pzmjnu"}],["path",{d:"M21.21 15.89A10 10 0 1 1 8 2.83",key:"k2fpak"}]]),ji=Ur("goal",[["path",{d:"M12 13V2l8 4-8 4",key:"5wlwwj"}],["path",{d:"M20.561 10.222a9 9 0 1 1-12.55-5.29",key:"1c0wjv"}],["path",{d:"M8.002 9.997a5 5 0 1 0 8.9 2.02",key:"gb1g7m"}]]),Fi=Ur("sliders-horizontal",[["line",{x1:"21",x2:"14",y1:"4",y2:"4",key:"obuewd"}],["line",{x1:"10",x2:"3",y1:"4",y2:"4",key:"1q6298"}],["line",{x1:"21",x2:"12",y1:"12",y2:"12",key:"1iu8h1"}],["line",{x1:"8",x2:"3",y1:"12",y2:"12",key:"ntss68"}],["line",{x1:"21",x2:"16",y1:"20",y2:"20",key:"14d8ph"}],["line",{x1:"12",x2:"3",y1:"20",y2:"20",key:"m0wm8r"}],["line",{x1:"14",x2:"14",y1:"2",y2:"6",key:"14e1ph"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"16",x2:"16",y1:"18",y2:"22",key:"1lctlv"}]]),Ii=Ur("loader",[["path",{d:"M12 2v4",key:"3427ic"}],["path",{d:"m16.2 7.8 2.9-2.9",key:"r700ao"}],["path",{d:"M18 12h4",key:"wj9ykh"}],["path",{d:"m16.2 16.2 2.9 2.9",key:"1bxg5t"}],["path",{d:"M12 18v4",key:"jadmvz"}],["path",{d:"m4.9 19.1 2.9-2.9",key:"bwix9q"}],["path",{d:"M2 12h4",key:"j09sii"}],["path",{d:"m4.9 4.9 2.9 2.9",key:"giyufr"}]]),Ui=Ur("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]),zi=Ur("tablet",[["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",ry:"2",key:"76otgf"}],["line",{x1:"12",x2:"12.01",y1:"18",y2:"18",key:"1dp563"}]]),Hi=Ur("smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]),Qi=Ur("layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]),Wi=Ur("mouse",[["rect",{x:"5",y:"2",width:"14",height:"20",rx:"7",key:"11ol66"}],["path",{d:"M12 6v4",key:"16clxf"}]]),Bi=Ur("file",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}]]),$i=Ur("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]),Yi=Ur("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]),Vi=Ur("earth",[["path",{d:"M21.54 15H17a2 2 0 0 0-2 2v4.54",key:"1djwo0"}],["path",{d:"M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17",key:"1tzkfa"}],["path",{d:"M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05",key:"14pb5j"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),Ki=Ur("funnel",[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]]),Gi=Ur("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]),Xi=Ur("webhook",[["path",{d:"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2",key:"q3hayz"}],["path",{d:"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06",key:"1go1hn"}],["path",{d:"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8",key:"qlwsc0"}]]),Ji=Ur("log-in",[["path",{d:"m10 17 5-5-5-5",key:"1bsop3"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}]]),Zi=Ur("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]),eo=Ur("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]),to=Ur("settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),no=Ur("megaphone",[["path",{d:"m3 11 18-5v12L3 14v-3z",key:"n962bs"}],["path",{d:"M11.6 16.8a3 3 0 1 1-5.8-1.6",key:"1yl0tm"}]]),ro=Ur("milestone",[["path",{d:"M12 13v8",key:"1l5pq0"}],["path",{d:"M12 3v3",key:"1n5kay"}],["path",{d:"M4 6a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h13a2 2 0 0 0 1.152-.365l3.424-2.317a1 1 0 0 0 0-1.635l-3.424-2.318A2 2 0 0 0 17 6z",key:"1btarq"}]]),io=Ur("radio",[["path",{d:"M16.247 7.761a6 6 0 0 1 0 8.478",key:"1fwjs5"}],["path",{d:"M19.075 4.933a10 10 0 0 1 0 14.134",key:"ehdyv1"}],["path",{d:"M4.925 19.067a10 10 0 0 1 0-14.134",key:"1q22gi"}],["path",{d:"M7.753 16.239a6 6 0 0 1 0-8.478",key:"r2q7qm"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]),oo=Ur("tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]),ao=Ur("map-pin",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]),so=Ur("building",[["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",ry:"2",key:"76otgf"}],["path",{d:"M9 22v-4h6v4",key:"r93iot"}],["path",{d:"M8 6h.01",key:"1dz90k"}],["path",{d:"M16 6h.01",key:"1x0f13"}],["path",{d:"M12 6h.01",key:"1vi96p"}],["path",{d:"M12 10h.01",key:"1nrarc"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M16 10h.01",key:"1m94wz"}],["path",{d:"M16 14h.01",key:"1gbofw"}],["path",{d:"M8 10h.01",key:"19clt8"}],["path",{d:"M8 14h.01",key:"6423bh"}]]),lo=Ur("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]),co=Ur("car",[["path",{d:"M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2",key:"5owen"}],["circle",{cx:"7",cy:"17",r:"2",key:"u2ysq9"}],["path",{d:"M9 17h6",key:"r8uit2"}],["circle",{cx:"17",cy:"17",r:"2",key:"axvx0g"}]]),uo=Ur("brain",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z",key:"ep3f8r"}],["path",{d:"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4",key:"1p4c4q"}],["path",{d:"M17.599 6.5a3 3 0 0 0 .399-1.375",key:"tmeiqw"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M19.938 10.5a4 4 0 0 1 .585.396",key:"1qfode"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M19.967 17.484A4 4 0 0 1 18 18",key:"159ez6"}]]),ho=Ur("cpu",[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]]),fo=Ur("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]),po=Ur("map-pinned",[["path",{d:"M18 8c0 3.613-3.869 7.429-5.393 8.795a1 1 0 0 1-1.214 0C9.87 15.429 6 11.613 6 8a6 6 0 0 1 12 0",key:"11u0oz"}],["circle",{cx:"12",cy:"8",r:"2",key:"1822b1"}],["path",{d:"M8.714 14h-3.71a1 1 0 0 0-.948.683l-2.004 6A1 1 0 0 0 3 22h18a1 1 0 0 0 .948-1.316l-2-6a1 1 0 0 0-.949-.684h-3.712",key:"q8zwxj"}]]),yo=Ur("grid-3x3",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]]),mo=Ur("line-squiggle",[["path",{d:"M7 3.5c5-2 7 2.5 3 4C1.5 10 2 15 5 16c5 2 9-10 14-7s.5 13.5-4 12c-5-2.5.5-11 6-2",key:"1lrphd"}]]),go=Ur("party-popper",[["path",{d:"M5.8 11.3 2 22l10.7-3.79",key:"gwxi1d"}],["path",{d:"M4 3h.01",key:"1vcuye"}],["path",{d:"M22 8h.01",key:"1mrtc2"}],["path",{d:"M15 2h.01",key:"1cjtqr"}],["path",{d:"M22 20h.01",key:"1mrys2"}],["path",{d:"m22 2-2.24.75a2.9 2.9 0 0 0-1.96 3.12c.1.86-.57 1.63-1.45 1.63h-.38c-.86 0-1.6.6-1.76 1.44L14 10",key:"hbicv8"}],["path",{d:"m22 13-.82-.33c-.86-.34-1.82.2-1.98 1.11c-.11.7-.72 1.22-1.43 1.22H17",key:"1i94pl"}],["path",{d:"m11 2 .33.82c.34.86-.2 1.82-1.11 1.98C9.52 4.9 9 5.52 9 6.23V7",key:"1cofks"}],["path",{d:"M11 13c1.93 1.93 2.83 4.17 2 5-.83.83-3.07-.07-5-2-1.93-1.93-2.83-4.17-2-5 .83-.83 3.07.07 5 2Z",key:"4kbmks"}]]),vo=Ur("sprout",[["path",{d:"M7 20h10",key:"e6iznv"}],["path",{d:"M10 20c5.5-2.5.8-6.4 3-10",key:"161w41"}],["path",{d:"M9.5 9.4c1.1.8 1.8 2.2 2.3 3.7-2 .4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2 2.8-.5 4.4 0 5.5.8z",key:"9gtqwd"}],["path",{d:"M14.1 6a7 7 0 0 0-1.1 4c1.9-.1 3.3-.6 4.3-1.4 1-1 1.6-2.3 1.7-4.6-2.7.1-4 1-4.9 2z",key:"bkxnd2"}]]);function bo(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=bo(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function wo(){for(var e,t,n=0,r="",i=arguments.length;n<i;n++)(e=arguments[n])&&(t=bo(e))&&(r&&(r+=" "),r+=t);return r}const xo={"black-light":"black-light",black:"black",green:"green",yellow:"yellow",red:"red",blue:"blue",gray:"gray-500",lightgray:"gray-300",white:"white",gold:"gold"},ko={"circle-open":Xr,bullet:Xr,dot:Xr,circle:Jr,period:Zr,check:ei,warning:Br,error:ti,times:ni,trophy:ri,frown:ii,hourglass:oi,scale:ai,"circle-check":si,"circle-times":li,"chevron-up":ci,"chevron-down":ui,"chevron-right":di,"chevron-left":hi,plus:fi,minus:pi,sync:yi,"sync-error":Wr,shortcode:mi,file:gi,"file-disabled":vi,"file-download":bi,calendar:wi,"calendar-error":xi,website:ki,help:Ei,copy:Ci,trash:Mi,visitor:Ti,visitors:Oi,"visitors-crowd":Oi,time:Si,pageviews:Ri,referrer:Di,sessions:Pi,bounces:qi,bounced_sessions:qi,bounce_rate:qi,winner:ri,live:_i,total:Ni,graph:Ai,conversion_rate:Li,goals:ji,conversions:ji,"goals-empty":Zr,filter:Fi,loading:Ii,desktop:Ui,tablet:zi,mobile:Hi,other:Qi,mouse:Wi,eye:Ri,page:Bi,hashtag:$i,sun:Yi,world:Vi,filters:Ki,referrers:Gi,hook:Xi,"log-in":Ji,"log-out":qi,alert:ti,search:Zi,bounce:qi,user:Ti,conversion:eo,parameters:to,campaign:no,source:ro,medium:io,term:oo,content:gi,location:ao,city:so,"operating-system":Ui,browser:lo,traffic:co,behavior:uo,technology:ho,"star-filled":fo,"star-outline":fo,"map-pinned":po,empty:Jr,grid:yo,"user-check":zr,"user-plus":Hr,"line-squiggle":mo,"shopping-cart":Qr,"party-popper":go,"error-octagon":Wr,"warning-triangle":Br,percent:$r,sprout:vo,zap:Yr,bulb:Vr,"right-arrow":Kr,ellipsis:Gr},Eo=(0,o.memo)((({style:e={},name:t="bullet",color:n="black",size:r=18,strokeWidth:i=1.5,tooltip:a,onClick:s,className:l})=>{const c=xo[n]||n,u=ko[t]||Xr,d={size:r,color:"currentColor",strokeWidth:i,style:e},h=(0,o.createElement)("div",{onClick:()=>{s&&s()},className:"flex items-center justify-center"},"bullet"!==t&&"dot"!==t||u!==Xr?"star-filled"===t&&u===fo?(0,o.createElement)(fo,{...d,className:c&&`fill-${c}`}):"loading"===t&&u===Ii?(0,o.createElement)(Ii,{...d,className:wo(l,"animate-spin [animation-duration:2s]",c&&`text-${c}`)}):(0,o.createElement)(u,{className:wo(l,c&&`text-${c}`),...d}):(0,o.createElement)(Xr,{...d,className:c&&`fill-${c}`}));return a?(0,o.createElement)(Nr,{content:a},h):h}));function Co(e){return Co="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Co(e)}function Mo(e,t){if(t.length<e)throw new TypeError(e+" argument"+(e>1?"s":"")+" required, but only "+t.length+" present")}function To(e){Mo(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"===Co(e)&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn((new Error).stack)),new Date(NaN))}function Oo(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function So(e){Mo(1,arguments);var t=To(e),n=t.getUTCDay(),r=(n<1?7:0)+n-1;return t.setUTCDate(t.getUTCDate()-r),t.setUTCHours(0,0,0,0),t}function Ro(e){Mo(1,arguments);var t=To(e),n=t.getUTCFullYear(),r=new Date(0);r.setUTCFullYear(n+1,0,4),r.setUTCHours(0,0,0,0);var i=So(r),o=new Date(0);o.setUTCFullYear(n,0,4),o.setUTCHours(0,0,0,0);var a=So(o);return t.getTime()>=i.getTime()?n+1:t.getTime()>=a.getTime()?n:n-1}var Do={};function Po(){return Do}function qo(e,t){var n,r,i,o,a,s,l,c;Mo(1,arguments);var u=Po(),d=Oo(null!==(n=null!==(r=null!==(i=null!==(o=null==t?void 0:t.weekStartsOn)&&void 0!==o?o:null==t||null===(a=t.locale)||void 0===a||null===(s=a.options)||void 0===s?void 0:s.weekStartsOn)&&void 0!==i?i:u.weekStartsOn)&&void 0!==r?r:null===(l=u.locale)||void 0===l||null===(c=l.options)||void 0===c?void 0:c.weekStartsOn)&&void 0!==n?n:0);if(!(d>=0&&d<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var h=To(e),f=h.getUTCDay(),p=(f<d?7:0)+f-d;return h.setUTCDate(h.getUTCDate()-p),h.setUTCHours(0,0,0,0),h}function _o(e,t){var n,r,i,o,a,s,l,c;Mo(1,arguments);var u=To(e),d=u.getUTCFullYear(),h=Po(),f=Oo(null!==(n=null!==(r=null!==(i=null!==(o=null==t?void 0:t.firstWeekContainsDate)&&void 0!==o?o:null==t||null===(a=t.locale)||void 0===a||null===(s=a.options)||void 0===s?void 0:s.firstWeekContainsDate)&&void 0!==i?i:h.firstWeekContainsDate)&&void 0!==r?r:null===(l=h.locale)||void 0===l||null===(c=l.options)||void 0===c?void 0:c.firstWeekContainsDate)&&void 0!==n?n:1);if(!(f>=1&&f<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var p=new Date(0);p.setUTCFullYear(d+1,0,f),p.setUTCHours(0,0,0,0);var y=qo(p,t),m=new Date(0);m.setUTCFullYear(d,0,f),m.setUTCHours(0,0,0,0);var g=qo(m,t);return u.getTime()>=y.getTime()?d+1:u.getTime()>=g.getTime()?d:d-1}function No(e,t){for(var n=e<0?"-":"",r=Math.abs(e).toString();r.length<t;)r="0"+r;return n+r}const Ao=function(e,t){var n=e.getUTCFullYear(),r=n>0?n:1-n;return No("yy"===t?r%100:r,t.length)},Lo=function(e,t){var n=e.getUTCMonth();return"M"===t?String(n+1):No(n+1,2)},jo=function(e,t){return No(e.getUTCDate(),t.length)},Fo=function(e,t){return No(e.getUTCHours()%12||12,t.length)},Io=function(e,t){return No(e.getUTCHours(),t.length)},Uo=function(e,t){return No(e.getUTCMinutes(),t.length)},zo=function(e,t){return No(e.getUTCSeconds(),t.length)},Ho=function(e,t){var n=t.length,r=e.getUTCMilliseconds();return No(Math.floor(r*Math.pow(10,n-3)),t.length)};var Qo={G:function(e,t,n){var r=e.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});default:return n.era(r,{width:"wide"})}},y:function(e,t,n){if("yo"===t){var r=e.getUTCFullYear(),i=r>0?r:1-r;return n.ordinalNumber(i,{unit:"year"})}return Ao(e,t)},Y:function(e,t,n,r){var i=_o(e,r),o=i>0?i:1-i;return"YY"===t?No(o%100,2):"Yo"===t?n.ordinalNumber(o,{unit:"year"}):No(o,t.length)},R:function(e,t){return No(Ro(e),t.length)},u:function(e,t){return No(e.getUTCFullYear(),t.length)},Q:function(e,t,n){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(r);case"QQ":return No(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(e,t,n){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(r);case"qq":return No(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(e,t,n){var r=e.getUTCMonth();switch(t){case"M":case"MM":return Lo(e,t);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(e,t,n){var r=e.getUTCMonth();switch(t){case"L":return String(r+1);case"LL":return No(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(e,t,n,r){var i=function(e,t){Mo(1,arguments);var n=To(e),r=qo(n,t).getTime()-function(e,t){var n,r,i,o,a,s,l,c;Mo(1,arguments);var u=Po(),d=Oo(null!==(n=null!==(r=null!==(i=null!==(o=null==t?void 0:t.firstWeekContainsDate)&&void 0!==o?o:null==t||null===(a=t.locale)||void 0===a||null===(s=a.options)||void 0===s?void 0:s.firstWeekContainsDate)&&void 0!==i?i:u.firstWeekContainsDate)&&void 0!==r?r:null===(l=u.locale)||void 0===l||null===(c=l.options)||void 0===c?void 0:c.firstWeekContainsDate)&&void 0!==n?n:1),h=_o(e,t),f=new Date(0);return f.setUTCFullYear(h,0,d),f.setUTCHours(0,0,0,0),qo(f,t)}(n,t).getTime();return Math.round(r/6048e5)+1}(e,r);return"wo"===t?n.ordinalNumber(i,{unit:"week"}):No(i,t.length)},I:function(e,t,n){var r=function(e){Mo(1,arguments);var t=To(e),n=So(t).getTime()-function(e){Mo(1,arguments);var t=Ro(e),n=new Date(0);return n.setUTCFullYear(t,0,4),n.setUTCHours(0,0,0,0),So(n)}(t).getTime();return Math.round(n/6048e5)+1}(e);return"Io"===t?n.ordinalNumber(r,{unit:"week"}):No(r,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getUTCDate(),{unit:"date"}):jo(e,t)},D:function(e,t,n){var r=function(e){Mo(1,arguments);var t=To(e),n=t.getTime();t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0);var r=n-t.getTime();return Math.floor(r/864e5)+1}(e);return"Do"===t?n.ordinalNumber(r,{unit:"dayOfYear"}):No(r,t.length)},E:function(e,t,n){var r=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(e,t,n,r){var i=e.getUTCDay(),o=(i-r.weekStartsOn+8)%7||7;switch(t){case"e":return String(o);case"ee":return No(o,2);case"eo":return n.ordinalNumber(o,{unit:"day"});case"eee":return n.day(i,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(i,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(i,{width:"short",context:"formatting"});default:return n.day(i,{width:"wide",context:"formatting"})}},c:function(e,t,n,r){var i=e.getUTCDay(),o=(i-r.weekStartsOn+8)%7||7;switch(t){case"c":return String(o);case"cc":return No(o,t.length);case"co":return n.ordinalNumber(o,{unit:"day"});case"ccc":return n.day(i,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(i,{width:"narrow",context:"standalone"});case"cccccc":return n.day(i,{width:"short",context:"standalone"});default:return n.day(i,{width:"wide",context:"standalone"})}},i:function(e,t,n){var r=e.getUTCDay(),i=0===r?7:r;switch(t){case"i":return String(i);case"ii":return No(i,t.length);case"io":return n.ordinalNumber(i,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(e,t,n){var r=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(e,t,n){var r,i=e.getUTCHours();switch(r=12===i?"noon":0===i?"midnight":i/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(e,t,n){var r,i=e.getUTCHours();switch(r=i>=17?"evening":i>=12?"afternoon":i>=4?"morning":"night",t){case"B":case"BB":case"BBB":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){var r=e.getUTCHours()%12;return 0===r&&(r=12),n.ordinalNumber(r,{unit:"hour"})}return Fo(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getUTCHours(),{unit:"hour"}):Io(e,t)},K:function(e,t,n){var r=e.getUTCHours()%12;return"Ko"===t?n.ordinalNumber(r,{unit:"hour"}):No(r,t.length)},k:function(e,t,n){var r=e.getUTCHours();return 0===r&&(r=24),"ko"===t?n.ordinalNumber(r,{unit:"hour"}):No(r,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):Uo(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):zo(e,t)},S:function(e,t){return Ho(e,t)},X:function(e,t,n,r){var i=(r._originalDate||e).getTimezoneOffset();if(0===i)return"Z";switch(t){case"X":return Bo(i);case"XXXX":case"XX":return $o(i);default:return $o(i,":")}},x:function(e,t,n,r){var i=(r._originalDate||e).getTimezoneOffset();switch(t){case"x":return Bo(i);case"xxxx":case"xx":return $o(i);default:return $o(i,":")}},O:function(e,t,n,r){var i=(r._originalDate||e).getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+Wo(i,":");default:return"GMT"+$o(i,":")}},z:function(e,t,n,r){var i=(r._originalDate||e).getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+Wo(i,":");default:return"GMT"+$o(i,":")}},t:function(e,t,n,r){var i=r._originalDate||e;return No(Math.floor(i.getTime()/1e3),t.length)},T:function(e,t,n,r){return No((r._originalDate||e).getTime(),t.length)}};function Wo(e,t){var n=e>0?"-":"+",r=Math.abs(e),i=Math.floor(r/60),o=r%60;if(0===o)return n+String(i);var a=t||"";return n+String(i)+a+No(o,2)}function Bo(e,t){return e%60==0?(e>0?"-":"+")+No(Math.abs(e)/60,2):$o(e,t)}function $o(e,t){var n=t||"",r=e>0?"-":"+",i=Math.abs(e);return r+No(Math.floor(i/60),2)+n+No(i%60,2)}const Yo=Qo;var Vo=function(e,t){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},Ko=function(e,t){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}};const Go={p:Ko,P:function(e,t){var n,r=e.match(/(P+)(p+)?/)||[],i=r[1],o=r[2];if(!o)return Vo(e,t);switch(i){case"P":n=t.dateTime({width:"short"});break;case"PP":n=t.dateTime({width:"medium"});break;case"PPP":n=t.dateTime({width:"long"});break;default:n=t.dateTime({width:"full"})}return n.replace("{{date}}",Vo(i,t)).replace("{{time}}",Ko(o,t))}};var Xo=["D","DD"],Jo=["YY","YYYY"];function Zo(e,t,n){if("YYYY"===e)throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("YY"===e)throw new RangeError("Use `yy` instead of `YY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("D"===e)throw new RangeError("Use `d` instead of `D` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("DD"===e)throw new RangeError("Use `dd` instead of `DD` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var ea={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function ta(e){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}const na={date:ta({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:ta({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:ta({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})};var ra={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function ia(e){return function(t,n){var r;if("formatting"===(null!=n&&n.context?String(n.context):"standalone")&&e.formattingValues){var i=e.defaultFormattingWidth||e.defaultWidth,o=null!=n&&n.width?String(n.width):i;r=e.formattingValues[o]||e.formattingValues[i]}else{var a=e.defaultWidth,s=null!=n&&n.width?String(n.width):e.defaultWidth;r=e.values[s]||e.values[a]}return r[e.argumentCallback?e.argumentCallback(t):t]}}const oa={ordinalNumber:function(e,t){var n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:ia({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:ia({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:ia({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:ia({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:ia({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})};function aa(e){return function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],o=t.match(i);if(!o)return null;var a,s=o[0],l=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(l)?function(e){for(var t=0;t<e.length;t++)if(e[t].test(s))return t}(l):function(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t].test(s))return t}(l);return a=e.valueCallback?e.valueCallback(c):c,{value:a=n.valueCallback?n.valueCallback(a):a,rest:t.slice(s.length)}}}var sa,la={ordinalNumber:(sa={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}},function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.match(sa.matchPattern);if(!n)return null;var r=n[0],i=e.match(sa.parsePattern);if(!i)return null;var o=sa.valueCallback?sa.valueCallback(i[0]):i[0];return{value:o=t.valueCallback?t.valueCallback(o):o,rest:e.slice(r.length)}}),era:aa({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:aa({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:aa({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:aa({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:aa({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})};const ca={code:"en-US",formatDistance:function(e,t,n){var r,i=ea[e];return r="string"==typeof i?i:1===t?i.one:i.other.replace("{{count}}",t.toString()),null!=n&&n.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r},formatLong:na,formatRelative:function(e,t,n,r){return ra[e]},localize:oa,match:la,options:{weekStartsOn:0,firstWeekContainsDate:1}};var ua=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,da=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,ha=/^'([^]*?)'?$/,fa=/''/g,pa=/[a-zA-Z]/;function ya(e,t,n){var r,i,o,a,s,l,c,u,d,h,f,p,y,m,g,v,b,w;Mo(2,arguments);var x=String(t),k=Po(),E=null!==(r=null!==(i=null==n?void 0:n.locale)&&void 0!==i?i:k.locale)&&void 0!==r?r:ca,C=Oo(null!==(o=null!==(a=null!==(s=null!==(l=null==n?void 0:n.firstWeekContainsDate)&&void 0!==l?l:null==n||null===(c=n.locale)||void 0===c||null===(u=c.options)||void 0===u?void 0:u.firstWeekContainsDate)&&void 0!==s?s:k.firstWeekContainsDate)&&void 0!==a?a:null===(d=k.locale)||void 0===d||null===(h=d.options)||void 0===h?void 0:h.firstWeekContainsDate)&&void 0!==o?o:1);if(!(C>=1&&C<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var M=Oo(null!==(f=null!==(p=null!==(y=null!==(m=null==n?void 0:n.weekStartsOn)&&void 0!==m?m:null==n||null===(g=n.locale)||void 0===g||null===(v=g.options)||void 0===v?void 0:v.weekStartsOn)&&void 0!==y?y:k.weekStartsOn)&&void 0!==p?p:null===(b=k.locale)||void 0===b||null===(w=b.options)||void 0===w?void 0:w.weekStartsOn)&&void 0!==f?f:0);if(!(M>=0&&M<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!E.localize)throw new RangeError("locale must contain localize property");if(!E.formatLong)throw new RangeError("locale must contain formatLong property");var T=To(e);if(!function(e){if(Mo(1,arguments),!function(e){return Mo(1,arguments),e instanceof Date||"object"===Co(e)&&"[object Date]"===Object.prototype.toString.call(e)}(e)&&"number"!=typeof e)return!1;var t=To(e);return!isNaN(Number(t))}(T))throw new RangeError("Invalid time value");var O=function(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()}(T),S=function(e,t){return Mo(2,arguments),function(e,t){Mo(2,arguments);var n=To(e).getTime(),r=Oo(t);return new Date(n+r)}(e,-Oo(t))}(T,O),R={firstWeekContainsDate:C,weekStartsOn:M,locale:E,_originalDate:T};return x.match(da).map((function(e){var t=e[0];return"p"===t||"P"===t?(0,Go[t])(e,E.formatLong):e})).join("").match(ua).map((function(r){if("''"===r)return"'";var i,o,a=r[0];if("'"===a)return(o=(i=r).match(ha))?o[1].replace(fa,"'"):i;var s,l=Yo[a];if(l)return null!=n&&n.useAdditionalWeekYearTokens||(s=r,-1===Jo.indexOf(s))||Zo(r,t,String(e)),null!=n&&n.useAdditionalDayOfYearTokens||!function(e){return-1!==Xo.indexOf(e)}(r)||Zo(r,t,String(e)),l(S,r,E.localize,R);if(a.match(pa))throw new RangeError("Format string contains an unescaped latin alphabet character `"+a+"`");return r})).join("")}const ma="undefined"==typeof window||"Deno"in window;function ga(){}function va(e){return"number"==typeof e&&e>=0&&e!==1/0}function ba(e,t){return e.filter((e=>!t.includes(e)))}function wa(e,t){return Math.max(e+(t||0)-Date.now(),0)}function xa(e,t,n){return Na(e)?"function"==typeof t?{...n,queryKey:e,queryFn:t}:{...t,queryKey:e}:e}function ka(e,t,n){return Na(e)?[{...t,queryKey:e},n]:[e||{},t]}function Ea(e,t){const{type:n="all",exact:r,fetchStatus:i,predicate:o,queryKey:a,stale:s}=e;if(Na(a))if(r){if(t.queryHash!==Ma(a,t.options))return!1}else if(!Oa(t.queryKey,a))return!1;if("all"!==n){const e=t.isActive();if("active"===n&&!e)return!1;if("inactive"===n&&e)return!1}return!("boolean"==typeof s&&t.isStale()!==s||void 0!==i&&i!==t.state.fetchStatus||o&&!o(t))}function Ca(e,t){const{exact:n,fetching:r,predicate:i,mutationKey:o}=e;if(Na(o)){if(!t.options.mutationKey)return!1;if(n){if(Ta(t.options.mutationKey)!==Ta(o))return!1}else if(!Oa(t.options.mutationKey,o))return!1}return!("boolean"==typeof r&&"loading"===t.state.status!==r||i&&!i(t))}function Ma(e,t){return((null==t?void 0:t.queryKeyHashFn)||Ta)(e)}function Ta(e){return JSON.stringify(e,((e,t)=>qa(t)?Object.keys(t).sort().reduce(((e,n)=>(e[n]=t[n],e)),{}):t))}function Oa(e,t){return Sa(e,t)}function Sa(e,t){return e===t||typeof e==typeof t&&!(!e||!t||"object"!=typeof e||"object"!=typeof t)&&!Object.keys(t).some((n=>!Sa(e[n],t[n])))}function Ra(e,t){if(e===t)return e;const n=Pa(e)&&Pa(t);if(n||qa(e)&&qa(t)){const r=n?e.length:Object.keys(e).length,i=n?t:Object.keys(t),o=i.length,a=n?[]:{};let s=0;for(let r=0;r<o;r++){const o=n?r:i[r];a[o]=Ra(e[o],t[o]),a[o]===e[o]&&s++}return r===o&&s===r?e:a}return t}function Da(e,t){if(e&&!t||t&&!e)return!1;for(const n in e)if(e[n]!==t[n])return!1;return!0}function Pa(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function qa(e){if(!_a(e))return!1;const t=e.constructor;if(void 0===t)return!0;const n=t.prototype;return!!_a(n)&&!!n.hasOwnProperty("isPrototypeOf")}function _a(e){return"[object Object]"===Object.prototype.toString.call(e)}function Na(e){return Array.isArray(e)}function Aa(e){return new Promise((t=>{setTimeout(t,e)}))}function La(e){Aa(0).then(e)}function ja(e,t,n){return null!=n.isDataEqual&&n.isDataEqual(e,t)?e:"function"==typeof n.structuralSharing?n.structuralSharing(e,t):!1!==n.structuralSharing?Ra(e,t):t}const Fa=function(){let e=[],t=0,n=e=>{e()},r=e=>{e()};const i=r=>{t?e.push(r):La((()=>{n(r)}))};return{batch:i=>{let o;t++;try{o=i()}finally{t--,t||(()=>{const t=e;e=[],t.length&&La((()=>{r((()=>{t.forEach((e=>{n(e)}))}))}))})()}return o},batchCalls:e=>(...t)=>{i((()=>{e(...t)}))},schedule:i,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e}}}();class Ia{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){const t={listener:e};return this.listeners.add(t),this.onSubscribe(),()=>{this.listeners.delete(t),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}}const Ua=new class extends Ia{constructor(){super(),this.setup=e=>{if(!ma&&window.addEventListener){const t=()=>e();return window.addEventListener("visibilitychange",t,!1),window.addEventListener("focus",t,!1),()=>{window.removeEventListener("visibilitychange",t),window.removeEventListener("focus",t)}}}}onSubscribe(){this.cleanup||this.setEventListener(this.setup)}onUnsubscribe(){var e;this.hasListeners()||(null==(e=this.cleanup)||e.call(this),this.cleanup=void 0)}setEventListener(e){var t;this.setup=e,null==(t=this.cleanup)||t.call(this),this.cleanup=e((e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()}))}setFocused(e){this.focused!==e&&(this.focused=e,this.onFocus())}onFocus(){this.listeners.forEach((({listener:e})=>{e()}))}isFocused(){return"boolean"==typeof this.focused?this.focused:"undefined"==typeof document||[void 0,"visible","prerender"].includes(document.visibilityState)}},za=["online","offline"],Ha=new class extends Ia{constructor(){super(),this.setup=e=>{if(!ma&&window.addEventListener){const t=()=>e();return za.forEach((e=>{window.addEventListener(e,t,!1)})),()=>{za.forEach((e=>{window.removeEventListener(e,t)}))}}}}onSubscribe(){this.cleanup||this.setEventListener(this.setup)}onUnsubscribe(){var e;this.hasListeners()||(null==(e=this.cleanup)||e.call(this),this.cleanup=void 0)}setEventListener(e){var t;this.setup=e,null==(t=this.cleanup)||t.call(this),this.cleanup=e((e=>{"boolean"==typeof e?this.setOnline(e):this.onOnline()}))}setOnline(e){this.online!==e&&(this.online=e,this.onOnline())}onOnline(){this.listeners.forEach((({listener:e})=>{e()}))}isOnline(){return"boolean"==typeof this.online?this.online:"undefined"==typeof navigator||void 0===navigator.onLine||navigator.onLine}};function Qa(e){return Math.min(1e3*2**e,3e4)}function Wa(e){return"online"!==(null!=e?e:"online")||Ha.isOnline()}class Ba{constructor(e){this.revert=null==e?void 0:e.revert,this.silent=null==e?void 0:e.silent}}function $a(e){return e instanceof Ba}function Ya(e){let t,n,r,i=!1,o=0,a=!1;const s=new Promise(((e,t)=>{n=e,r=t})),l=()=>!Ua.isFocused()||"always"!==e.networkMode&&!Ha.isOnline(),c=r=>{a||(a=!0,null==e.onSuccess||e.onSuccess(r),null==t||t(),n(r))},u=n=>{a||(a=!0,null==e.onError||e.onError(n),null==t||t(),r(n))},d=()=>new Promise((n=>{t=e=>{const t=a||!l();return t&&n(e),t},null==e.onPause||e.onPause()})).then((()=>{t=void 0,a||null==e.onContinue||e.onContinue()})),h=()=>{if(a)return;let t;try{t=e.fn()}catch(e){t=Promise.reject(e)}Promise.resolve(t).then(c).catch((t=>{var n,r;if(a)return;const s=null!=(n=e.retry)?n:3,c=null!=(r=e.retryDelay)?r:Qa,f="function"==typeof c?c(o,t):c,p=!0===s||"number"==typeof s&&o<s||"function"==typeof s&&s(o,t);!i&&p?(o++,null==e.onFail||e.onFail(o,t),Aa(f).then((()=>{if(l())return d()})).then((()=>{i?u(t):h()}))):u(t)}))};return Wa(e.networkMode)?h():d().then(h),{promise:s,cancel:t=>{a||(u(new Ba(t)),null==e.abort||e.abort())},continue:()=>(null==t?void 0:t())?s:Promise.resolve(),cancelRetry:()=>{i=!0},continueRetry:()=>{i=!1}}}class Va extends Ia{constructor(e,t){super(),this.client=e,this.options=t,this.trackedProps=new Set,this.selectError=null,this.bindMethods(),this.setOptions(t)}bindMethods(){this.remove=this.remove.bind(this),this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.currentQuery.addObserver(this),Ka(this.currentQuery,this.options)&&this.executeFetch(),this.updateTimers())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return Ga(this.currentQuery,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return Ga(this.currentQuery,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.clearStaleTimeout(),this.clearRefetchInterval(),this.currentQuery.removeObserver(this)}setOptions(e,t){const n=this.options,r=this.currentQuery;if(this.options=this.client.defaultQueryOptions(e),Da(n,this.options)||this.client.getQueryCache().notify({type:"observerOptionsUpdated",query:this.currentQuery,observer:this}),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled)throw new Error("Expected enabled to be a boolean");this.options.queryKey||(this.options.queryKey=n.queryKey),this.updateQuery();const i=this.hasListeners();i&&Xa(this.currentQuery,r,this.options,n)&&this.executeFetch(),this.updateResult(t),!i||this.currentQuery===r&&this.options.enabled===n.enabled&&this.options.staleTime===n.staleTime||this.updateStaleTimeout();const o=this.computeRefetchInterval();!i||this.currentQuery===r&&this.options.enabled===n.enabled&&o===this.currentRefetchInterval||this.updateRefetchInterval(o)}getOptimisticResult(e){const t=this.client.getQueryCache().build(this.client,e),n=this.createResult(t,e);return function(e,t,n){return!n.keepPreviousData&&(void 0!==n.placeholderData?t.isPlaceholderData:!Da(e.getCurrentResult(),t))}(this,n,e)&&(this.currentResult=n,this.currentResultOptions=this.options,this.currentResultState=this.currentQuery.state),n}getCurrentResult(){return this.currentResult}trackResult(e){const t={};return Object.keys(e).forEach((n=>{Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:()=>(this.trackedProps.add(n),e[n])})})),t}getCurrentQuery(){return this.currentQuery}remove(){this.client.getQueryCache().remove(this.currentQuery)}refetch({refetchPage:e,...t}={}){return this.fetch({...t,meta:{refetchPage:e}})}fetchOptimistic(e){const t=this.client.defaultQueryOptions(e),n=this.client.getQueryCache().build(this.client,t);return n.isFetchingOptimistic=!0,n.fetch().then((()=>this.createResult(n,t)))}fetch(e){var t;return this.executeFetch({...e,cancelRefetch:null==(t=e.cancelRefetch)||t}).then((()=>(this.updateResult(),this.currentResult)))}executeFetch(e){this.updateQuery();let t=this.currentQuery.fetch(this.options,e);return null!=e&&e.throwOnError||(t=t.catch(ga)),t}updateStaleTimeout(){if(this.clearStaleTimeout(),ma||this.currentResult.isStale||!va(this.options.staleTime))return;const e=wa(this.currentResult.dataUpdatedAt,this.options.staleTime)+1;this.staleTimeoutId=setTimeout((()=>{this.currentResult.isStale||this.updateResult()}),e)}computeRefetchInterval(){var e;return"function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.currentResult.data,this.currentQuery):null!=(e=this.options.refetchInterval)&&e}updateRefetchInterval(e){this.clearRefetchInterval(),this.currentRefetchInterval=e,!ma&&!1!==this.options.enabled&&va(this.currentRefetchInterval)&&0!==this.currentRefetchInterval&&(this.refetchIntervalId=setInterval((()=>{(this.options.refetchIntervalInBackground||Ua.isFocused())&&this.executeFetch()}),this.currentRefetchInterval))}updateTimers(){this.updateStaleTimeout(),this.updateRefetchInterval(this.computeRefetchInterval())}clearStaleTimeout(){this.staleTimeoutId&&(clearTimeout(this.staleTimeoutId),this.staleTimeoutId=void 0)}clearRefetchInterval(){this.refetchIntervalId&&(clearInterval(this.refetchIntervalId),this.refetchIntervalId=void 0)}createResult(e,t){const n=this.currentQuery,r=this.options,i=this.currentResult,o=this.currentResultState,a=this.currentResultOptions,s=e!==n,l=s?e.state:this.currentQueryInitialState,c=s?this.currentResult:this.previousQueryResult,{state:u}=e;let d,{dataUpdatedAt:h,error:f,errorUpdatedAt:p,fetchStatus:y,status:m}=u,g=!1,v=!1;if(t._optimisticResults){const i=this.hasListeners(),o=!i&&Ka(e,t),a=i&&Xa(e,n,t,r);(o||a)&&(y=Wa(e.options.networkMode)?"fetching":"paused",h||(m="loading")),"isRestoring"===t._optimisticResults&&(y="idle")}if(t.keepPreviousData&&!u.dataUpdatedAt&&null!=c&&c.isSuccess&&"error"!==m)d=c.data,h=c.dataUpdatedAt,m=c.status,g=!0;else if(t.select&&void 0!==u.data)if(i&&u.data===(null==o?void 0:o.data)&&t.select===this.selectFn)d=this.selectResult;else try{this.selectFn=t.select,d=t.select(u.data),d=ja(null==i?void 0:i.data,d,t),this.selectResult=d,this.selectError=null}catch(e){this.selectError=e}else d=u.data;if(void 0!==t.placeholderData&&void 0===d&&"loading"===m){let e;if(null!=i&&i.isPlaceholderData&&t.placeholderData===(null==a?void 0:a.placeholderData))e=i.data;else if(e="function"==typeof t.placeholderData?t.placeholderData():t.placeholderData,t.select&&void 0!==e)try{e=t.select(e),this.selectError=null}catch(e){this.selectError=e}void 0!==e&&(m="success",d=ja(null==i?void 0:i.data,e,t),v=!0)}this.selectError&&(f=this.selectError,d=this.selectResult,p=Date.now(),m="error");const b="fetching"===y,w="loading"===m,x="error"===m;return{status:m,fetchStatus:y,isLoading:w,isSuccess:"success"===m,isError:x,isInitialLoading:w&&b,data:d,dataUpdatedAt:h,error:f,errorUpdatedAt:p,failureCount:u.fetchFailureCount,failureReason:u.fetchFailureReason,errorUpdateCount:u.errorUpdateCount,isFetched:u.dataUpdateCount>0||u.errorUpdateCount>0,isFetchedAfterMount:u.dataUpdateCount>l.dataUpdateCount||u.errorUpdateCount>l.errorUpdateCount,isFetching:b,isRefetching:b&&!w,isLoadingError:x&&0===u.dataUpdatedAt,isPaused:"paused"===y,isPlaceholderData:v,isPreviousData:g,isRefetchError:x&&0!==u.dataUpdatedAt,isStale:Ja(e,t),refetch:this.refetch,remove:this.remove}}updateResult(e){const t=this.currentResult,n=this.createResult(this.currentQuery,this.options);if(this.currentResultState=this.currentQuery.state,this.currentResultOptions=this.options,Da(n,t))return;this.currentResult=n;const r={cache:!0};!1!==(null==e?void 0:e.listeners)&&(()=>{if(!t)return!0;const{notifyOnChangeProps:e}=this.options,n="function"==typeof e?e():e;if("all"===n||!n&&!this.trackedProps.size)return!0;const r=new Set(null!=n?n:this.trackedProps);return this.options.useErrorBoundary&&r.add("error"),Object.keys(this.currentResult).some((e=>{const n=e;return this.currentResult[n]!==t[n]&&r.has(n)}))})()&&(r.listeners=!0),this.notify({...r,...e})}updateQuery(){const e=this.client.getQueryCache().build(this.client,this.options);if(e===this.currentQuery)return;const t=this.currentQuery;this.currentQuery=e,this.currentQueryInitialState=e.state,this.previousQueryResult=this.currentResult,this.hasListeners()&&(null==t||t.removeObserver(this),e.addObserver(this))}onQueryUpdate(e){const t={};"success"===e.type?t.onSuccess=!e.manual:"error"!==e.type||$a(e.error)||(t.onError=!0),this.updateResult(t),this.hasListeners()&&this.updateTimers()}notify(e){Fa.batch((()=>{var t,n,r,i;if(e.onSuccess)null==(t=(n=this.options).onSuccess)||t.call(n,this.currentResult.data),null==(r=(i=this.options).onSettled)||r.call(i,this.currentResult.data,null);else if(e.onError){var o,a,s,l;null==(o=(a=this.options).onError)||o.call(a,this.currentResult.error),null==(s=(l=this.options).onSettled)||s.call(l,void 0,this.currentResult.error)}e.listeners&&this.listeners.forEach((({listener:e})=>{e(this.currentResult)})),e.cache&&this.client.getQueryCache().notify({query:this.currentQuery,type:"observerResultsUpdated"})}))}}function Ka(e,t){return function(e,t){return!(!1===t.enabled||e.state.dataUpdatedAt||"error"===e.state.status&&!1===t.retryOnMount)}(e,t)||e.state.dataUpdatedAt>0&&Ga(e,t,t.refetchOnMount)}function Ga(e,t,n){if(!1!==t.enabled){const r="function"==typeof n?n(e):n;return"always"===r||!1!==r&&Ja(e,t)}return!1}function Xa(e,t,n,r){return!1!==n.enabled&&(e!==t||!1===r.enabled)&&(!n.suspense||"error"!==e.state.status)&&Ja(e,n)}function Ja(e,t){return e.isStaleByTime(t.staleTime)}class Za extends Ia{constructor(e,t){super(),this.client=e,this.queries=[],this.result=[],this.observers=[],this.observersMap={},t&&this.setQueries(t)}onSubscribe(){1===this.listeners.size&&this.observers.forEach((e=>{e.subscribe((t=>{this.onUpdate(e,t)}))}))}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.observers.forEach((e=>{e.destroy()}))}setQueries(e,t){this.queries=e,Fa.batch((()=>{const e=this.observers,n=this.findMatchingObservers(this.queries);n.forEach((e=>e.observer.setOptions(e.defaultedQueryOptions,t)));const r=n.map((e=>e.observer)),i=Object.fromEntries(r.map((e=>[e.options.queryHash,e]))),o=r.map((e=>e.getCurrentResult())),a=r.some(((t,n)=>t!==e[n]));(e.length!==r.length||a)&&(this.observers=r,this.observersMap=i,this.result=o,this.hasListeners()&&(ba(e,r).forEach((e=>{e.destroy()})),ba(r,e).forEach((e=>{e.subscribe((t=>{this.onUpdate(e,t)}))})),this.notify()))}))}getCurrentResult(){return this.result}getQueries(){return this.observers.map((e=>e.getCurrentQuery()))}getObservers(){return this.observers}getOptimisticResult(e){return this.findMatchingObservers(e).map((e=>e.observer.getOptimisticResult(e.defaultedQueryOptions)))}findMatchingObservers(e){const t=this.observers,n=new Map(t.map((e=>[e.options.queryHash,e]))),r=e.map((e=>this.client.defaultQueryOptions(e))),i=r.flatMap((e=>{const t=n.get(e.queryHash);return null!=t?[{defaultedQueryOptions:e,observer:t}]:[]})),o=new Set(i.map((e=>e.defaultedQueryOptions.queryHash))),a=r.filter((e=>!o.has(e.queryHash))),s=new Set(i.map((e=>e.observer))),l=t.filter((e=>!s.has(e))),c=e=>{const t=this.client.defaultQueryOptions(e),n=this.observersMap[t.queryHash];return null!=n?n:new Va(this.client,t)},u=a.map(((e,t)=>{if(e.keepPreviousData){const n=l[t];if(void 0!==n)return{defaultedQueryOptions:e,observer:n}}return{defaultedQueryOptions:e,observer:c(e)}}));return i.concat(u).sort(((e,t)=>r.indexOf(e.defaultedQueryOptions)-r.indexOf(t.defaultedQueryOptions)))}onUpdate(e,t){const n=this.observers.indexOf(e);-1!==n&&(this.result=function(e,t,n){const r=e.slice(0);return r[t]=n,r}(this.result,n,t),this.notify())}notify(){Fa.batch((()=>{this.listeners.forEach((({listener:e})=>{e(this.result)}))}))}}const es=i(888).useSyncExternalStore,ts=o.createContext(void 0),ns=o.createContext(!1);function rs(e,t){return e||(t&&"undefined"!=typeof window?(window.ReactQueryClientContext||(window.ReactQueryClientContext=ts),window.ReactQueryClientContext):ts)}const is=({client:e,children:t,context:n,contextSharing:r=!1})=>{o.useEffect((()=>(e.mount(),()=>{e.unmount()})),[e]);const i=rs(n,r);return o.createElement(ns.Provider,{value:!n&&r},o.createElement(i.Provider,{value:e},t))},os=o.createContext(!1);os.Provider;const as=o.createContext(function(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}()),ss=(e,t)=>e.isLoading&&e.isFetching&&!t,ls=(e,t,n)=>(null==e?void 0:e.suspense)&&ss(t,n),cs=(e,t,n)=>t.fetchOptimistic(e).then((({data:t})=>{null==e.onSuccess||e.onSuccess(t),null==e.onSettled||e.onSettled(t,null)})).catch((t=>{n.clearReset(),null==e.onError||e.onError(t),null==e.onSettled||e.onSettled(void 0,t)}));function us(e){return 100<(e=parseInt(e))?"visitors-crowd":10<e?"visitors":"visitor"}const ds=({className:e,title:t,controls:n,children:r,footer:i})=>(0,o.createElement)("div",{className:"burst-grid-item "+e},(0,o.createElement)("div",{className:"burst-grid-item-header"},(0,o.createElement)("h3",{className:"burst-grid-title burst-h4"},t),(0,o.createElement)("div",{className:"burst-grid-item-controls"},n)),(0,o.createElement)("div",{className:"burst-grid-item-content"},r),(0,o.createElement)("div",{className:"burst-grid-item-footer"},i)),hs=()=>{const[e,t]=(0,s.useState)((()=>{if("undefined"!=typeof Storage){const e=localStorage.getItem("burst_widget_date_range");if(e&&0<e.length)return JSON.parse(e)}return"last-7-days"})());(0,s.useEffect)((()=>{burst_settings.json_translations.forEach((e=>{let t=JSON.parse(e),n=t.locale_data["burst-statistics"]||t.locale_data.messages;n[""].domain="burst-statistics",(0,l.setLocaleData)(n,"burst-statistics")}))}),[]);const n=T(["today","yesterday","last-7-days","last-30-days","last-90-days"]),r=n[e]?n[e].range():n["last-7-days"].range(),i=ya(r.startDate,"yyyy-MM-dd"),a=ya(r.endDate,"yyyy-MM-dd"),[c,u]=(0,s.useState)(5e3),d={live:{title:(0,l.__)("Live","burst-statistics"),icon:"visitor"},today:{title:(0,l.__)("Total","burst-statistics"),value:"-",icon:"visitor"},mostViewed:{title:"-",value:"-"},pageviews:{title:"-",value:"-"},referrer:{title:"-",value:"-"},timeOnPage:{title:"-",value:"-"}},h=function({queries:e,context:t}){const n=(({context:e}={})=>{const t=o.useContext(rs(e,o.useContext(ns)));if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t})({context:t}),r=o.useContext(os),i=o.useContext(as),a=o.useMemo((()=>e.map((e=>{const t=n.defaultQueryOptions(e);return t._optimisticResults=r?"isRestoring":"optimistic",t}))),[e,n,r]);a.forEach((e=>{var t;(t=e).suspense&&"number"!=typeof t.staleTime&&(t.staleTime=1e3),((e,t)=>{(e.suspense||e.useErrorBoundary)&&(t.isReset()||(e.retryOnMount=!1))})(e,i)})),(e=>{o.useEffect((()=>{e.clearReset()}),[e])})(i);const[s]=o.useState((()=>new Za(n,a))),l=s.getOptimisticResult(a);es(o.useCallback((e=>r?()=>{}:s.subscribe(Fa.batchCalls(e))),[s,r]),(()=>s.getCurrentResult()),(()=>s.getCurrentResult())),o.useEffect((()=>{s.setQueries(a,{listeners:!1})}),[a,s]);const c=l.some(((e,t)=>ls(a[t],e,r))),u=c?l.flatMap(((e,t)=>{const n=a[t],o=s.getObservers()[t];if(n&&o){if(ls(n,e,r))return cs(n,o,i);ss(e,r)&&cs(n,o,i)}return[]})):[];if(u.length>0)throw Promise.all(u);const d=s.getQueries(),h=l.find(((e,t)=>{var n,r;return(({result:e,errorResetBoundary:t,useErrorBoundary:n,query:r})=>{return e.isError&&!t.isReset()&&!e.isFetching&&(i=n,o=[e.error,r],"function"==typeof i?i(...o):!!i);var i,o})({result:e,errorResetBoundary:i,useErrorBoundary:null!=(n=null==(r=a[t])?void 0:r.useErrorBoundary)&&n,query:d[t]})}));if(null!=h&&h.error)throw h.error;return l}({queries:[{queryKey:["live-visitors"],queryFn:pe,refetchInterval:c,placeholderData:"-",onError:()=>{u(0)}},{queryKey:[e,i,a],queryFn:()=>(async e=>{const{startDate:t,endDate:n,range:r,filters:i}=e,{data:o}=await fe("today",t,n,r,{filters:i});return(e=>{for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(e[t].value="timeOnPage"===t?k(e[t].value):E(e[t].value));return e})(o)})({startDate:i,endDate:a}),refetchInterval:2*c,placeholderData:d,onError:()=>{u(0)}}]}),f=h[0].data;let p=h[1].data;h.some((e=>e.isError))&&(p=d);let y=us(f||0),m="loading";return p&&p.today&&(m=us(p.today.value?p.today.value:0)),(0,o.createElement)(ds,{className:"border-to-border burst-today",title:(0,l.__)("Today","burst-statistics"),controls:(0,o.createElement)(o.Fragment,null,h[0].isFetching?(0,o.createElement)(Eo,{name:"loading"}):null),footer:(0,o.createElement)(o.Fragment,null,(0,o.createElement)("a",{className:"burst-button burst-button--secondary",href:burst_settings.dashboard_url+"#/statistics"},(0,l.__)("View all statistics","burst-statistics")),(0,o.createElement)("select",{onChange:e=>{return n=e.target.value,r=n,"undefined"!=typeof Storage&&localStorage.setItem("burst_widget_date_range",JSON.stringify(r)),void t(n);var n,r},value:e},Object.keys(n).map((e=>(0,o.createElement)("option",{key:e,value:e},n[e].label)))))},(0,o.createElement)("div",{className:"burst-today"},(0,o.createElement)("div",{className:"burst-today-select"},(0,o.createElement)("div",{className:"burst-today-select-item"},(0,o.createElement)(Eo,{name:y,size:"23"}),(0,o.createElement)("h2",null,f),(0,o.createElement)("span",null,(0,o.createElement)(Eo,{name:"live",size:"12",color:"red"})," ",(0,l.__)("Live","burst-statistics"))),(0,o.createElement)("div",{className:"burst-today-select-item"},(0,o.createElement)(Eo,{name:m,size:"23"}),(0,o.createElement)("h2",null,p.today.value),(0,o.createElement)("span",null,(0,o.createElement)(Eo,{name:"total",size:"13",color:"green"})," ",(0,l.__)("Total","burst-statistics")))),(0,o.createElement)("div",{className:"burst-today-list"},(0,o.createElement)("div",{className:"burst-today-list-item"},(0,o.createElement)(Eo,{name:"winner"}),(0,o.createElement)("p",{className:"burst-today-list-item-text"},decodeURI(p.mostViewed.title)),(0,o.createElement)("p",{className:"burst-today-list-item-number"},p.mostViewed.value)),(0,o.createElement)("div",{className:"burst-today-list-item"},(0,o.createElement)(Eo,{name:"referrer"}),(0,o.createElement)("p",{className:"burst-today-list-item-text"},decodeURI(p.referrer.title)),(0,o.createElement)("p",{className:"burst-today-list-item-number"},p.referrer.value)),(0,o.createElement)("div",{className:"burst-today-list-item"},(0,o.createElement)(Eo,{name:"pageviews"}),(0,o.createElement)("p",{className:"burst-today-list-item-text"},p.pageviews.title),(0,o.createElement)("p",{className:"burst-today-list-item-number"},p.pageviews.value)),(0,o.createElement)("div",{className:"burst-today-list-item"},(0,o.createElement)(Eo,{name:"time"}),(0,o.createElement)("p",{className:"burst-today-list-item-text"},p.timeOnPage.title),(0,o.createElement)("p",{className:"burst-today-list-item-number"},p.timeOnPage.value)))))},fs=console;class ps{destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),va(this.cacheTime)&&(this.gcTimeout=setTimeout((()=>{this.optionalRemove()}),this.cacheTime))}updateCacheTime(e){this.cacheTime=Math.max(this.cacheTime||0,null!=e?e:ma?1/0:3e5)}clearGcTimeout(){this.gcTimeout&&(clearTimeout(this.gcTimeout),this.gcTimeout=void 0)}}class ys extends ps{constructor(e){super(),this.abortSignalConsumed=!1,this.defaultOptions=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.cache=e.cache,this.logger=e.logger||fs,this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.initialState=e.state||function(e){const t="function"==typeof e.initialData?e.initialData():e.initialData,n=void 0!==t,r=n?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?null!=r?r:Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"loading",fetchStatus:"idle"}}(this.options),this.state=this.initialState,this.scheduleGc()}get meta(){return this.options.meta}setOptions(e){this.options={...this.defaultOptions,...e},this.updateCacheTime(this.options.cacheTime)}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||this.cache.remove(this)}setData(e,t){const n=ja(this.state.data,e,this.options);return this.dispatch({data:n,type:"success",dataUpdatedAt:null==t?void 0:t.updatedAt,manual:null==t?void 0:t.manual}),n}setState(e,t){this.dispatch({type:"setState",state:e,setStateOptions:t})}cancel(e){var t;const n=this.promise;return null==(t=this.retryer)||t.cancel(e),n?n.then(ga).catch(ga):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.initialState)}isActive(){return this.observers.some((e=>!1!==e.options.enabled))}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return this.state.isInvalidated||!this.state.dataUpdatedAt||this.observers.some((e=>e.getCurrentResult().isStale))}isStaleByTime(e=0){return this.state.isInvalidated||!this.state.dataUpdatedAt||!wa(this.state.dataUpdatedAt,e)}onFocus(){var e;const t=this.observers.find((e=>e.shouldFetchOnWindowFocus()));t&&t.refetch({cancelRefetch:!1}),null==(e=this.retryer)||e.continue()}onOnline(){var e;const t=this.observers.find((e=>e.shouldFetchOnReconnect()));t&&t.refetch({cancelRefetch:!1}),null==(e=this.retryer)||e.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.cache.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter((t=>t!==e)),this.observers.length||(this.retryer&&(this.abortSignalConsumed?this.retryer.cancel({revert:!0}):this.retryer.cancelRetry()),this.scheduleGc()),this.cache.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.dispatch({type:"invalidate"})}fetch(e,t){var n,r;if("idle"!==this.state.fetchStatus)if(this.state.dataUpdatedAt&&null!=t&&t.cancelRefetch)this.cancel({silent:!0});else if(this.promise){var i;return null==(i=this.retryer)||i.continueRetry(),this.promise}if(e&&this.setOptions(e),!this.options.queryFn){const e=this.observers.find((e=>e.options.queryFn));e&&this.setOptions(e.options)}const o=function(){if("function"==typeof AbortController)return new AbortController}(),a={queryKey:this.queryKey,pageParam:void 0,meta:this.meta},s=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>{if(o)return this.abortSignalConsumed=!0,o.signal}})};s(a);const l={fetchOptions:t,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:()=>this.options.queryFn?(this.abortSignalConsumed=!1,this.options.queryFn(a)):Promise.reject("Missing queryFn for queryKey '"+this.options.queryHash+"'")};var c;s(l),null==(n=this.options.behavior)||n.onFetch(l),this.revertState=this.state,("idle"===this.state.fetchStatus||this.state.fetchMeta!==(null==(r=l.fetchOptions)?void 0:r.meta))&&this.dispatch({type:"fetch",meta:null==(c=l.fetchOptions)?void 0:c.meta});const u=e=>{var t,n,r,i;$a(e)&&e.silent||this.dispatch({type:"error",error:e}),$a(e)||(null==(t=(n=this.cache.config).onError)||t.call(n,e,this),null==(r=(i=this.cache.config).onSettled)||r.call(i,this.state.data,e,this)),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return this.retryer=Ya({fn:l.fetchFn,abort:null==o?void 0:o.abort.bind(o),onSuccess:e=>{var t,n,r,i;void 0!==e?(this.setData(e),null==(t=(n=this.cache.config).onSuccess)||t.call(n,e,this),null==(r=(i=this.cache.config).onSettled)||r.call(i,e,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1):u(new Error(this.queryHash+" data is undefined"))},onError:u,onFail:(e,t)=>{this.dispatch({type:"failed",failureCount:e,error:t})},onPause:()=>{this.dispatch({type:"pause"})},onContinue:()=>{this.dispatch({type:"continue"})},retry:l.options.retry,retryDelay:l.options.retryDelay,networkMode:l.options.networkMode}),this.promise=this.retryer.promise,this.promise}dispatch(e){this.state=(t=>{var n,r;switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null!=(n=e.meta)?n:null,fetchStatus:Wa(this.options.networkMode)?"fetching":"paused",...!t.dataUpdatedAt&&{error:null,status:"loading"}};case"success":return{...t,data:e.data,dataUpdateCount:t.dataUpdateCount+1,dataUpdatedAt:null!=(r=e.dataUpdatedAt)?r:Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const i=e.error;return $a(i)&&i.revert&&this.revertState?{...this.revertState,fetchStatus:"idle"}:{...t,error:i,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:i,fetchStatus:"idle",status:"error"};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}})(this.state),Fa.batch((()=>{this.observers.forEach((t=>{t.onQueryUpdate(e)})),this.cache.notify({query:this,type:"updated",action:e})}))}}class ms extends Ia{constructor(e){super(),this.config=e||{},this.queries=[],this.queriesMap={}}build(e,t,n){var r;const i=t.queryKey,o=null!=(r=t.queryHash)?r:Ma(i,t);let a=this.get(o);return a||(a=new ys({cache:this,logger:e.getLogger(),queryKey:i,queryHash:o,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(i)}),this.add(a)),a}add(e){this.queriesMap[e.queryHash]||(this.queriesMap[e.queryHash]=e,this.queries.push(e),this.notify({type:"added",query:e}))}remove(e){const t=this.queriesMap[e.queryHash];t&&(e.destroy(),this.queries=this.queries.filter((t=>t!==e)),t===e&&delete this.queriesMap[e.queryHash],this.notify({type:"removed",query:e}))}clear(){Fa.batch((()=>{this.queries.forEach((e=>{this.remove(e)}))}))}get(e){return this.queriesMap[e]}getAll(){return this.queries}find(e,t){const[n]=ka(e,t);return void 0===n.exact&&(n.exact=!0),this.queries.find((e=>Ea(n,e)))}findAll(e,t){const[n]=ka(e,t);return Object.keys(n).length>0?this.queries.filter((e=>Ea(n,e))):this.queries}notify(e){Fa.batch((()=>{this.listeners.forEach((({listener:t})=>{t(e)}))}))}onFocus(){Fa.batch((()=>{this.queries.forEach((e=>{e.onFocus()}))}))}onOnline(){Fa.batch((()=>{this.queries.forEach((e=>{e.onOnline()}))}))}}class gs extends ps{constructor(e){super(),this.defaultOptions=e.defaultOptions,this.mutationId=e.mutationId,this.mutationCache=e.mutationCache,this.logger=e.logger||fs,this.observers=[],this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0},this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options={...this.defaultOptions,...e},this.updateCacheTime(this.options.cacheTime)}get meta(){return this.options.meta}setState(e){this.dispatch({type:"setState",state:e})}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.mutationCache.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.observers=this.observers.filter((t=>t!==e)),this.scheduleGc(),this.mutationCache.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.observers.length||("loading"===this.state.status?this.scheduleGc():this.mutationCache.remove(this))}continue(){var e,t;return null!=(e=null==(t=this.retryer)?void 0:t.continue())?e:this.execute()}async execute(){const e=()=>{var e;return this.retryer=Ya({fn:()=>this.options.mutationFn?this.options.mutationFn(this.state.variables):Promise.reject("No mutationFn found"),onFail:(e,t)=>{this.dispatch({type:"failed",failureCount:e,error:t})},onPause:()=>{this.dispatch({type:"pause"})},onContinue:()=>{this.dispatch({type:"continue"})},retry:null!=(e=this.options.retry)?e:0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode}),this.retryer.promise},t="loading"===this.state.status;try{var n,r,i,o,a,s,l,c;if(!t){var u,d,h,f;this.dispatch({type:"loading",variables:this.options.variables}),await(null==(u=(d=this.mutationCache.config).onMutate)?void 0:u.call(d,this.state.variables,this));const e=await(null==(h=(f=this.options).onMutate)?void 0:h.call(f,this.state.variables));e!==this.state.context&&this.dispatch({type:"loading",context:e,variables:this.state.variables})}const p=await e();return await(null==(n=(r=this.mutationCache.config).onSuccess)?void 0:n.call(r,p,this.state.variables,this.state.context,this)),await(null==(i=(o=this.options).onSuccess)?void 0:i.call(o,p,this.state.variables,this.state.context)),await(null==(a=(s=this.mutationCache.config).onSettled)?void 0:a.call(s,p,null,this.state.variables,this.state.context,this)),await(null==(l=(c=this.options).onSettled)?void 0:l.call(c,p,null,this.state.variables,this.state.context)),this.dispatch({type:"success",data:p}),p}catch(e){try{var p,y,m,g,v,b,w,x;throw await(null==(p=(y=this.mutationCache.config).onError)?void 0:p.call(y,e,this.state.variables,this.state.context,this)),await(null==(m=(g=this.options).onError)?void 0:m.call(g,e,this.state.variables,this.state.context)),await(null==(v=(b=this.mutationCache.config).onSettled)?void 0:v.call(b,void 0,e,this.state.variables,this.state.context,this)),await(null==(w=(x=this.options).onSettled)?void 0:w.call(x,void 0,e,this.state.variables,this.state.context)),e}finally{this.dispatch({type:"error",error:e})}}}dispatch(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"loading":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:!Wa(this.options.networkMode),status:"loading",variables:e.variables};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"};case"setState":return{...t,...e.state}}})(this.state),Fa.batch((()=>{this.observers.forEach((t=>{t.onMutationUpdate(e)})),this.mutationCache.notify({mutation:this,type:"updated",action:e})}))}}class vs extends Ia{constructor(e){super(),this.config=e||{},this.mutations=[],this.mutationId=0}build(e,t,n){const r=new gs({mutationCache:this,logger:e.getLogger(),mutationId:++this.mutationId,options:e.defaultMutationOptions(t),state:n,defaultOptions:t.mutationKey?e.getMutationDefaults(t.mutationKey):void 0});return this.add(r),r}add(e){this.mutations.push(e),this.notify({type:"added",mutation:e})}remove(e){this.mutations=this.mutations.filter((t=>t!==e)),this.notify({type:"removed",mutation:e})}clear(){Fa.batch((()=>{this.mutations.forEach((e=>{this.remove(e)}))}))}getAll(){return this.mutations}find(e){return void 0===e.exact&&(e.exact=!0),this.mutations.find((t=>Ca(e,t)))}findAll(e){return this.mutations.filter((t=>Ca(e,t)))}notify(e){Fa.batch((()=>{this.listeners.forEach((({listener:t})=>{t(e)}))}))}resumePausedMutations(){var e;return this.resuming=(null!=(e=this.resuming)?e:Promise.resolve()).then((()=>{const e=this.mutations.filter((e=>e.state.isPaused));return Fa.batch((()=>e.reduce(((e,t)=>e.then((()=>t.continue().catch(ga)))),Promise.resolve())))})).then((()=>{this.resuming=void 0})),this.resuming}}function bs(e,t){return null==e.getNextPageParam?void 0:e.getNextPageParam(t[t.length-1],t)}var ws=i(338);const xs=new ms({onError:e=>{}});let ks={defaultOptions:{queries:{staleTime:36e5,refetchOnWindowFocus:!1,retry:!1}}};ks={...ks,queryCache:xs};const Es=new class{constructor(e={}){this.queryCache=e.queryCache||new ms,this.mutationCache=e.mutationCache||new vs,this.logger=e.logger||fs,this.defaultOptions=e.defaultOptions||{},this.queryDefaults=[],this.mutationDefaults=[],this.mountCount=0}mount(){this.mountCount++,1===this.mountCount&&(this.unsubscribeFocus=Ua.subscribe((()=>{Ua.isFocused()&&(this.resumePausedMutations(),this.queryCache.onFocus())})),this.unsubscribeOnline=Ha.subscribe((()=>{Ha.isOnline()&&(this.resumePausedMutations(),this.queryCache.onOnline())})))}unmount(){var e,t;this.mountCount--,0===this.mountCount&&(null==(e=this.unsubscribeFocus)||e.call(this),this.unsubscribeFocus=void 0,null==(t=this.unsubscribeOnline)||t.call(this),this.unsubscribeOnline=void 0)}isFetching(e,t){const[n]=ka(e,t);return n.fetchStatus="fetching",this.queryCache.findAll(n).length}isMutating(e){return this.mutationCache.findAll({...e,fetching:!0}).length}getQueryData(e,t){var n;return null==(n=this.queryCache.find(e,t))?void 0:n.state.data}ensureQueryData(e,t,n){const r=xa(e,t,n),i=this.getQueryData(r.queryKey);return i?Promise.resolve(i):this.fetchQuery(r)}getQueriesData(e){return this.getQueryCache().findAll(e).map((({queryKey:e,state:t})=>[e,t.data]))}setQueryData(e,t,n){const r=this.queryCache.find(e),i=function(e,t){return"function"==typeof e?e(t):e}(t,null==r?void 0:r.state.data);if(void 0===i)return;const o=xa(e),a=this.defaultQueryOptions(o);return this.queryCache.build(this,a).setData(i,{...n,manual:!0})}setQueriesData(e,t,n){return Fa.batch((()=>this.getQueryCache().findAll(e).map((({queryKey:e})=>[e,this.setQueryData(e,t,n)]))))}getQueryState(e,t){var n;return null==(n=this.queryCache.find(e,t))?void 0:n.state}removeQueries(e,t){const[n]=ka(e,t),r=this.queryCache;Fa.batch((()=>{r.findAll(n).forEach((e=>{r.remove(e)}))}))}resetQueries(e,t,n){const[r,i]=ka(e,t,n),o=this.queryCache,a={type:"active",...r};return Fa.batch((()=>(o.findAll(r).forEach((e=>{e.reset()})),this.refetchQueries(a,i))))}cancelQueries(e,t,n){const[r,i={}]=ka(e,t,n);void 0===i.revert&&(i.revert=!0);const o=Fa.batch((()=>this.queryCache.findAll(r).map((e=>e.cancel(i)))));return Promise.all(o).then(ga).catch(ga)}invalidateQueries(e,t,n){const[r,i]=ka(e,t,n);return Fa.batch((()=>{var e,t;if(this.queryCache.findAll(r).forEach((e=>{e.invalidate()})),"none"===r.refetchType)return Promise.resolve();const n={...r,type:null!=(e=null!=(t=r.refetchType)?t:r.type)?e:"active"};return this.refetchQueries(n,i)}))}refetchQueries(e,t,n){const[r,i]=ka(e,t,n),o=Fa.batch((()=>this.queryCache.findAll(r).filter((e=>!e.isDisabled())).map((e=>{var t;return e.fetch(void 0,{...i,cancelRefetch:null==(t=null==i?void 0:i.cancelRefetch)||t,meta:{refetchPage:r.refetchPage}})}))));let a=Promise.all(o).then(ga);return null!=i&&i.throwOnError||(a=a.catch(ga)),a}fetchQuery(e,t,n){const r=xa(e,t,n),i=this.defaultQueryOptions(r);void 0===i.retry&&(i.retry=!1);const o=this.queryCache.build(this,i);return o.isStaleByTime(i.staleTime)?o.fetch(i):Promise.resolve(o.state.data)}prefetchQuery(e,t,n){return this.fetchQuery(e,t,n).then(ga).catch(ga)}fetchInfiniteQuery(e,t,n){const r=xa(e,t,n);return r.behavior={onFetch:e=>{e.fetchFn=()=>{var t,n,r,i,o,a;const s=null==(t=e.fetchOptions)||null==(n=t.meta)?void 0:n.refetchPage,l=null==(r=e.fetchOptions)||null==(i=r.meta)?void 0:i.fetchMore,c=null==l?void 0:l.pageParam,u="forward"===(null==l?void 0:l.direction),d="backward"===(null==l?void 0:l.direction),h=(null==(o=e.state.data)?void 0:o.pages)||[],f=(null==(a=e.state.data)?void 0:a.pageParams)||[];let p=f,y=!1;const m=e.options.queryFn||(()=>Promise.reject("Missing queryFn for queryKey '"+e.options.queryHash+"'")),g=(e,t,n,r)=>(p=r?[t,...p]:[...p,t],r?[n,...e]:[...e,n]),v=(t,n,r,i)=>{if(y)return Promise.reject("Cancelled");if(void 0===r&&!n&&t.length)return Promise.resolve(t);const o={queryKey:e.queryKey,pageParam:r,meta:e.options.meta};var a;a=o,Object.defineProperty(a,"signal",{enumerable:!0,get:()=>{var t,n;return null!=(t=e.signal)&&t.aborted?y=!0:null==(n=e.signal)||n.addEventListener("abort",(()=>{y=!0})),e.signal}});const s=m(o);return Promise.resolve(s).then((e=>g(t,r,e,i)))};let b;if(h.length)if(u){const t=void 0!==c,n=t?c:bs(e.options,h);b=v(h,t,n)}else if(d){const t=void 0!==c,n=t?c:(w=e.options,x=h,null==w.getPreviousPageParam?void 0:w.getPreviousPageParam(x[0],x));b=v(h,t,n,!0)}else{p=[];const t=void 0===e.options.getNextPageParam;b=s&&h[0]&&!s(h[0],0,h)?Promise.resolve(g([],f[0],h[0])):v([],t,f[0]);for(let n=1;n<h.length;n++)b=b.then((r=>{if(!s||!h[n]||s(h[n],n,h)){const i=t?f[n]:bs(e.options,r);return v(r,t,i)}return Promise.resolve(g(r,f[n],h[n]))}))}else b=v([]);var w,x;return b.then((e=>({pages:e,pageParams:p})))}}},this.fetchQuery(r)}prefetchInfiniteQuery(e,t,n){return this.fetchInfiniteQuery(e,t,n).then(ga).catch(ga)}resumePausedMutations(){return this.mutationCache.resumePausedMutations()}getQueryCache(){return this.queryCache}getMutationCache(){return this.mutationCache}getLogger(){return this.logger}getDefaultOptions(){return this.defaultOptions}setDefaultOptions(e){this.defaultOptions=e}setQueryDefaults(e,t){const n=this.queryDefaults.find((t=>Ta(e)===Ta(t.queryKey)));n?n.defaultOptions=t:this.queryDefaults.push({queryKey:e,defaultOptions:t})}getQueryDefaults(e){if(!e)return;const t=this.queryDefaults.find((t=>Oa(e,t.queryKey)));return null==t?void 0:t.defaultOptions}setMutationDefaults(e,t){const n=this.mutationDefaults.find((t=>Ta(e)===Ta(t.mutationKey)));n?n.defaultOptions=t:this.mutationDefaults.push({mutationKey:e,defaultOptions:t})}getMutationDefaults(e){if(!e)return;const t=this.mutationDefaults.find((t=>Oa(e,t.mutationKey)));return null==t?void 0:t.defaultOptions}defaultQueryOptions(e){if(null!=e&&e._defaulted)return e;const t={...this.defaultOptions.queries,...this.getQueryDefaults(null==e?void 0:e.queryKey),...e,_defaulted:!0};return!t.queryHash&&t.queryKey&&(t.queryHash=Ma(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.useErrorBoundary&&(t.useErrorBoundary=!!t.suspense),t}defaultMutationOptions(e){return null!=e&&e._defaulted?e:{...this.defaultOptions.mutations,...this.getMutationDefaults(null==e?void 0:e.mutationKey),...e,_defaulted:!0}}clear(){this.queryCache.clear(),this.mutationCache.clear()}}(ks);document.addEventListener("DOMContentLoaded",(()=>{const e=document.getElementById("burst-widget-root");e&&(0,ws.H)(e).render((0,o.createElement)(is,{client:Es},(0,o.createElement)(hs,null)))}))})();
     1(()=>{"use strict";var e,t,n={96:(e,t,n)=>{var r=n(609),i=Symbol.for("react.element"),o=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,o={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)a.call(t,r)&&!l.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:i,type:e,key:c,ref:u,props:o,_owner:s.current}}t.Fragment=o,t.jsx=c,t.jsxs=c},338:(e,t,n)=>{var r=n(795);t.H=r.createRoot,r.hydrateRoot},428:(e,t,n)=>{e.exports=n(96)},493:(e,t,n)=>{var r=n(609),i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,a=r.useEffect,s=r.useLayoutEffect,l=r.useDebugValue;function c(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch(e){return!0}}var u="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),i=r[0].inst,u=r[1];return s((function(){i.value=n,i.getSnapshot=t,c(i)&&u({inst:i})}),[e,n,t]),a((function(){return c(i)&&u({inst:i}),e((function(){c(i)&&u({inst:i})}))}),[e]),l(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:u},609:e=>{e.exports=window.React},795:e=>{e.exports=window.ReactDOM},888:(e,t,n)=>{e.exports=n(493)}},r={};function i(e){var t=r[e];if(void 0!==t)return t.exports;var o=r[e]={exports:{}};return n[e](o,o.exports,i),o.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var o=Object.create(null);i.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,i.d(o,a),o},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o=i(609),a=i.t(o,2);const s=window.wp.element,l=window.wp.i18n;function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function u(e,t){if(t.length<e)throw new TypeError(e+" argument"+(e>1?"s":"")+" required, but only "+t.length+" present")}function d(e){u(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"===c(e)&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn((new Error).stack)),new Date(NaN))}function h(e){u(1,arguments);var t=d(e);return t.setHours(0,0,0,0),t}function f(e){u(1,arguments);var t=d(e);return t.setHours(23,59,59,999),t}function p(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function y(e,t){u(2,arguments);var n=d(e),r=p(t);return isNaN(r)?new Date(NaN):r?(n.setDate(n.getDate()+r),n):n}function m(e){u(1,arguments);var t=d(e);return t.setDate(1),t.setHours(0,0,0,0),t}function g(e,t){u(2,arguments);var n=d(e),r=p(t);if(isNaN(r))return new Date(NaN);if(!r)return n;var i=n.getDate(),o=new Date(n.getTime());return o.setMonth(n.getMonth()+r+1,0),i>=o.getDate()?o:(n.setFullYear(o.getFullYear(),o.getMonth(),i),n)}function v(e){u(1,arguments);var t=d(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(23,59,59,999),t}function b(e){u(1,arguments);var t=d(e),n=new Date(0);return n.setFullYear(t.getFullYear(),0,1),n.setHours(0,0,0,0),n}function w(e,t){return u(2,arguments),g(e,12*p(t))}function x(e){u(1,arguments);var t=d(e),n=t.getFullYear();return t.setFullYear(n+1,0,0),t.setHours(23,59,59,999),t}function k(e=0){let t=Number(e);isNaN(t)&&(t=0);const n=Math.floor(t/1e3),r=Math.floor(n/3600),i=Math.floor((n-3600*r)/60),o=n-3600*r-60*i,a=e=>isNaN(e)?"00":String(e).padStart(2,"0");return 0===r?[i,o].map(a).join(":"):[r,i,o].map(a).join(":")}function E(e,t=1){return e=Number(e),isNaN(e)&&(e=0),e<1e3&&(t=0),new Intl.NumberFormat(void 0,{style:"decimal",notation:"compact",compactDisplay:"short",maximumFractionDigits:t}).format(e)}window.wp.date;const C=function(e=new Date){const t=-60*e.getTimezoneOffset(),n=Math.floor(e.getTime()/1e3)+3600*burst_settings.gmt_offset-t;return new Date(1e3*n)}(),M={today:{label:(0,l.__)("Today","burst-statistics"),range:()=>({startDate:h(C),endDate:f(C)})},yesterday:{label:(0,l.__)("Yesterday","burst-statistics"),range:()=>({startDate:h(y(C,-1)),endDate:f(y(C,-1))})},"last-7-days":{label:(0,l.__)("Last 7 days","burst-statistics"),range:()=>({startDate:h(y(C,-7)),endDate:f(y(C,-1))})},"last-30-days":{label:(0,l.__)("Last 30 days","burst-statistics"),range:()=>({startDate:h(y(C,-30)),endDate:f(y(C,-1))})},"last-90-days":{label:(0,l.__)("Last 90 days","burst-statistics"),range:()=>({startDate:h(y(C,-90)),endDate:f(y(C,-1))})},"last-month":{label:(0,l.__)("Last month","burst-statistics"),range:()=>({startDate:m(g(C,-1)),endDate:v(g(C,-1))})},"week-to-date":{label:(0,l.__)("Week to date","burst-statistics"),range:()=>({startDate:h(y(C,-C.getDay())),endDate:f(C)})},"month-to-date":{label:(0,l.__)("Month to date","burst-statistics"),range:()=>({startDate:m(C),endDate:f(C)})},"year-to-date":{label:(0,l.__)("Year to date","burst-statistics"),range:()=>({startDate:b(C),endDate:f(C)})},"last-year":{label:(0,l.__)("Last year","burst-statistics"),range:()=>({startDate:b(w(C,-1)),endDate:x(w(C,-1))})}},T=e=>{let t={};return Object.keys(M).filter((t=>e.includes(t))).forEach((e=>{t[e]={...M[e]}})),t},O=window.wp.apiFetch;var S=i.n(O);function R(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=R(e[t]))&&(r&&(r+=" "),r+=n);else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}const D=function(){for(var e,t,n=0,r="";n<arguments.length;)(e=arguments[n++])&&(t=R(e))&&(r&&(r+=" "),r+=t);return r},P=e=>"number"==typeof e&&!isNaN(e),q=e=>"string"==typeof e,_=e=>"function"==typeof e,N=e=>q(e)||_(e)?e:null,A=e=>(0,o.isValidElement)(e)||q(e)||_(e)||P(e);function L(e){let{enter:t,exit:n,appendPosition:r=!1,collapse:i=!0,collapseDuration:a=300}=e;return function(e){let{children:s,position:l,preventExitTransition:c,done:u,nodeRef:d,isIn:h}=e;const f=r?`${t}--${l}`:t,p=r?`${n}--${l}`:n,y=(0,o.useRef)(0);return(0,o.useLayoutEffect)((()=>{const e=d.current,t=f.split(" "),n=r=>{r.target===d.current&&(e.dispatchEvent(new Event("d")),e.removeEventListener("animationend",n),e.removeEventListener("animationcancel",n),0===y.current&&"animationcancel"!==r.type&&e.classList.remove(...t))};e.classList.add(...t),e.addEventListener("animationend",n),e.addEventListener("animationcancel",n)}),[]),(0,o.useEffect)((()=>{const e=d.current,t=()=>{e.removeEventListener("animationend",t),i?function(e,t,n){void 0===n&&(n=300);const{scrollHeight:r,style:i}=e;requestAnimationFrame((()=>{i.minHeight="initial",i.height=r+"px",i.transition=`all ${n}ms`,requestAnimationFrame((()=>{i.height="0",i.padding="0",i.margin="0",setTimeout(t,n)}))}))}(e,u,a):u()};h||(c?t():(y.current=1,e.className+=` ${p}`,e.addEventListener("animationend",t)))}),[h]),o.createElement(o.Fragment,null,s)}}function j(e,t){return null!=e?{content:e.content,containerId:e.props.containerId,id:e.props.toastId,theme:e.props.theme,type:e.props.type,data:e.props.data||{},isLoading:e.props.isLoading,icon:e.props.icon,status:t}:{}}const F={list:new Map,emitQueue:new Map,on(e,t){return this.list.has(e)||this.list.set(e,[]),this.list.get(e).push(t),this},off(e,t){if(t){const n=this.list.get(e).filter((e=>e!==t));return this.list.set(e,n),this}return this.list.delete(e),this},cancelEmit(e){const t=this.emitQueue.get(e);return t&&(t.forEach(clearTimeout),this.emitQueue.delete(e)),this},emit(e){this.list.has(e)&&this.list.get(e).forEach((t=>{const n=setTimeout((()=>{t(...[].slice.call(arguments,1))}),0);this.emitQueue.has(e)||this.emitQueue.set(e,[]),this.emitQueue.get(e).push(n)}))}},I=e=>{let{theme:t,type:n,...r}=e;return o.createElement("svg",{viewBox:"0 0 24 24",width:"100%",height:"100%",fill:"colored"===t?"currentColor":`var(--toastify-icon-color-${n})`,...r})},U={info:function(e){return o.createElement(I,{...e},o.createElement("path",{d:"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z"}))},warning:function(e){return o.createElement(I,{...e},o.createElement("path",{d:"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z"}))},success:function(e){return o.createElement(I,{...e},o.createElement("path",{d:"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z"}))},error:function(e){return o.createElement(I,{...e},o.createElement("path",{d:"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"}))},spinner:function(){return o.createElement("div",{className:"Toastify__spinner"})}};function z(e){const[,t]=(0,o.useReducer)((e=>e+1),0),[n,r]=(0,o.useState)([]),i=(0,o.useRef)(null),a=(0,o.useRef)(new Map).current,s=e=>-1!==n.indexOf(e),l=(0,o.useRef)({toastKey:1,displayedToast:0,count:0,queue:[],props:e,containerId:null,isToastActive:s,getToast:e=>a.get(e)}).current;function c(e){let{containerId:t}=e;const{limit:n}=l.props;!n||t&&l.containerId!==t||(l.count-=l.queue.length,l.queue=[])}function u(e){r((t=>null==e?[]:t.filter((t=>t!==e))))}function d(){const{toastContent:e,toastProps:t,staleId:n}=l.queue.shift();f(e,t,n)}function h(e,n){let{delay:r,staleId:s,...c}=n;if(!A(e)||function(e){return!i.current||l.props.enableMultiContainer&&e.containerId!==l.props.containerId||a.has(e.toastId)&&null==e.updateId}(c))return;const{toastId:h,updateId:p,data:y}=c,{props:m}=l,g=()=>u(h),v=null==p;v&&l.count++;const b={...m,style:m.toastStyle,key:l.toastKey++,...Object.fromEntries(Object.entries(c).filter((e=>{let[t,n]=e;return null!=n}))),toastId:h,updateId:p,data:y,closeToast:g,isIn:!1,className:N(c.className||m.toastClassName),bodyClassName:N(c.bodyClassName||m.bodyClassName),progressClassName:N(c.progressClassName||m.progressClassName),autoClose:!c.isLoading&&(w=c.autoClose,x=m.autoClose,!1===w||P(w)&&w>0?w:x),deleteToast(){const e=j(a.get(h),"removed");a.delete(h),F.emit(4,e);const n=l.queue.length;if(l.count=null==h?l.count-l.displayedToast:l.count-1,l.count<0&&(l.count=0),n>0){const e=null==h?l.props.limit:1;if(1===n||1===e)l.displayedToast++,d();else{const t=e>n?n:e;l.displayedToast=t;for(let e=0;e<t;e++)d()}}else t()}};var w,x;b.iconOut=function(e){let{theme:t,type:n,isLoading:r,icon:i}=e,a=null;const s={theme:t,type:n};return!1===i||(_(i)?a=i(s):(0,o.isValidElement)(i)?a=(0,o.cloneElement)(i,s):q(i)||P(i)?a=i:r?a=U.spinner():(e=>e in U)(n)&&(a=U[n](s))),a}(b),_(c.onOpen)&&(b.onOpen=c.onOpen),_(c.onClose)&&(b.onClose=c.onClose),b.closeButton=m.closeButton,!1===c.closeButton||A(c.closeButton)?b.closeButton=c.closeButton:!0===c.closeButton&&(b.closeButton=!A(m.closeButton)||m.closeButton);let k=e;(0,o.isValidElement)(e)&&!q(e.type)?k=(0,o.cloneElement)(e,{closeToast:g,toastProps:b,data:y}):_(e)&&(k=e({closeToast:g,toastProps:b,data:y})),m.limit&&m.limit>0&&l.count>m.limit&&v?l.queue.push({toastContent:k,toastProps:b,staleId:s}):P(r)?setTimeout((()=>{f(k,b,s)}),r):f(k,b,s)}function f(e,t,n){const{toastId:i}=t;n&&a.delete(n);const o={content:e,props:t};a.set(i,o),r((e=>[...e,i].filter((e=>e!==n)))),F.emit(4,j(o,null==o.props.updateId?"added":"updated"))}return(0,o.useEffect)((()=>(l.containerId=e.containerId,F.cancelEmit(3).on(0,h).on(1,(e=>i.current&&u(e))).on(5,c).emit(2,l),()=>{a.clear(),F.emit(3,l)})),[]),(0,o.useEffect)((()=>{l.props=e,l.isToastActive=s,l.displayedToast=n.length})),{getToastToRender:function(t){const n=new Map,r=Array.from(a.values());return e.newestOnTop&&r.reverse(),r.forEach((e=>{const{position:t}=e.props;n.has(t)||n.set(t,[]),n.get(t).push(e)})),Array.from(n,(e=>t(e[0],e[1])))},containerRef:i,isToastActive:s}}function H(e){return e.targetTouches&&e.targetTouches.length>=1?e.targetTouches[0].clientX:e.clientX}function Q(e){return e.targetTouches&&e.targetTouches.length>=1?e.targetTouches[0].clientY:e.clientY}function W(e){const[t,n]=(0,o.useState)(!1),[r,i]=(0,o.useState)(!1),a=(0,o.useRef)(null),s=(0,o.useRef)({start:0,x:0,y:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,boundingRect:null,didMove:!1}).current,l=(0,o.useRef)(e),{autoClose:c,pauseOnHover:u,closeToast:d,onClick:h,closeOnClick:f}=e;function p(t){if(e.draggable){"touchstart"===t.nativeEvent.type&&t.nativeEvent.preventDefault(),s.didMove=!1,document.addEventListener("mousemove",v),document.addEventListener("mouseup",b),document.addEventListener("touchmove",v),document.addEventListener("touchend",b);const n=a.current;s.canCloseOnClick=!0,s.canDrag=!0,s.boundingRect=n.getBoundingClientRect(),n.style.transition="",s.x=H(t.nativeEvent),s.y=Q(t.nativeEvent),"x"===e.draggableDirection?(s.start=s.x,s.removalDistance=n.offsetWidth*(e.draggablePercent/100)):(s.start=s.y,s.removalDistance=n.offsetHeight*(80===e.draggablePercent?1.5*e.draggablePercent:e.draggablePercent/100))}}function y(t){if(s.boundingRect){const{top:n,bottom:r,left:i,right:o}=s.boundingRect;"touchend"!==t.nativeEvent.type&&e.pauseOnHover&&s.x>=i&&s.x<=o&&s.y>=n&&s.y<=r?g():m()}}function m(){n(!0)}function g(){n(!1)}function v(n){const r=a.current;s.canDrag&&r&&(s.didMove=!0,t&&g(),s.x=H(n),s.y=Q(n),s.delta="x"===e.draggableDirection?s.x-s.start:s.y-s.start,s.start!==s.x&&(s.canCloseOnClick=!1),r.style.transform=`translate${e.draggableDirection}(${s.delta}px)`,r.style.opacity=""+(1-Math.abs(s.delta/s.removalDistance)))}function b(){document.removeEventListener("mousemove",v),document.removeEventListener("mouseup",b),document.removeEventListener("touchmove",v),document.removeEventListener("touchend",b);const t=a.current;if(s.canDrag&&s.didMove&&t){if(s.canDrag=!1,Math.abs(s.delta)>s.removalDistance)return i(!0),void e.closeToast();t.style.transition="transform 0.2s, opacity 0.2s",t.style.transform=`translate${e.draggableDirection}(0)`,t.style.opacity="1"}}(0,o.useEffect)((()=>{l.current=e})),(0,o.useEffect)((()=>(a.current&&a.current.addEventListener("d",m,{once:!0}),_(e.onOpen)&&e.onOpen((0,o.isValidElement)(e.children)&&e.children.props),()=>{const e=l.current;_(e.onClose)&&e.onClose((0,o.isValidElement)(e.children)&&e.children.props)})),[]),(0,o.useEffect)((()=>(e.pauseOnFocusLoss&&(document.hasFocus()||g(),window.addEventListener("focus",m),window.addEventListener("blur",g)),()=>{e.pauseOnFocusLoss&&(window.removeEventListener("focus",m),window.removeEventListener("blur",g))})),[e.pauseOnFocusLoss]);const w={onMouseDown:p,onTouchStart:p,onMouseUp:y,onTouchEnd:y};return c&&u&&(w.onMouseEnter=g,w.onMouseLeave=m),f&&(w.onClick=e=>{h&&h(e),s.canCloseOnClick&&d()}),{playToast:m,pauseToast:g,isRunning:t,preventExitTransition:r,toastRef:a,eventHandlers:w}}function B(e){let{closeToast:t,theme:n,ariaLabel:r="close"}=e;return o.createElement("button",{className:`Toastify__close-button Toastify__close-button--${n}`,type:"button",onClick:e=>{e.stopPropagation(),t(e)},"aria-label":r},o.createElement("svg",{"aria-hidden":"true",viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"})))}function $(e){let{delay:t,isRunning:n,closeToast:r,type:i="default",hide:a,className:s,style:l,controlledProgress:c,progress:u,rtl:d,isIn:h,theme:f}=e;const p=a||c&&0===u,y={...l,animationDuration:`${t}ms`,animationPlayState:n?"running":"paused",opacity:p?0:1};c&&(y.transform=`scaleX(${u})`);const m=D("Toastify__progress-bar",c?"Toastify__progress-bar--controlled":"Toastify__progress-bar--animated",`Toastify__progress-bar-theme--${f}`,`Toastify__progress-bar--${i}`,{"Toastify__progress-bar--rtl":d}),g=_(s)?s({rtl:d,type:i,defaultClassName:m}):D(m,s);return o.createElement("div",{role:"progressbar","aria-hidden":p?"true":"false","aria-label":"notification timer",className:g,style:y,[c&&u>=1?"onTransitionEnd":"onAnimationEnd"]:c&&u<1?null:()=>{h&&r()}})}const Y=e=>{const{isRunning:t,preventExitTransition:n,toastRef:r,eventHandlers:i}=W(e),{closeButton:a,children:s,autoClose:l,onClick:c,type:u,hideProgressBar:d,closeToast:h,transition:f,position:p,className:y,style:m,bodyClassName:g,bodyStyle:v,progressClassName:b,progressStyle:w,updateId:x,role:k,progress:E,rtl:C,toastId:M,deleteToast:T,isIn:O,isLoading:S,iconOut:R,closeOnClick:P,theme:q}=e,N=D("Toastify__toast",`Toastify__toast-theme--${q}`,`Toastify__toast--${u}`,{"Toastify__toast--rtl":C},{"Toastify__toast--close-on-click":P}),A=_(y)?y({rtl:C,position:p,type:u,defaultClassName:N}):D(N,y),L=!!E||!l,j={closeToast:h,type:u,theme:q};let F=null;return!1===a||(F=_(a)?a(j):(0,o.isValidElement)(a)?(0,o.cloneElement)(a,j):B(j)),o.createElement(f,{isIn:O,done:T,position:p,preventExitTransition:n,nodeRef:r},o.createElement("div",{id:M,onClick:c,className:A,...i,style:m,ref:r},o.createElement("div",{...O&&{role:k},className:_(g)?g({type:u}):D("Toastify__toast-body",g),style:v},null!=R&&o.createElement("div",{className:D("Toastify__toast-icon",{"Toastify--animate-icon Toastify__zoom-enter":!S})},R),o.createElement("div",null,s)),F,o.createElement($,{...x&&!L?{key:`pb-${x}`}:{},rtl:C,theme:q,delay:l,isRunning:t,isIn:O,closeToast:h,hide:d,type:u,style:w,className:b,controlledProgress:L,progress:E||0})))},V=function(e,t){return void 0===t&&(t=!1),{enter:`Toastify--animate Toastify__${e}-enter`,exit:`Toastify--animate Toastify__${e}-exit`,appendPosition:t}},K=L(V("bounce",!0)),G=(L(V("slide",!0)),L(V("zoom")),L(V("flip")),(0,o.forwardRef)(((e,t)=>{const{getToastToRender:n,containerRef:r,isToastActive:i}=z(e),{className:a,style:s,rtl:l,containerId:c}=e;function u(e){const t=D("Toastify__toast-container",`Toastify__toast-container--${e}`,{"Toastify__toast-container--rtl":l});return _(a)?a({position:e,rtl:l,defaultClassName:t}):D(t,N(a))}return(0,o.useEffect)((()=>{t&&(t.current=r.current)}),[]),o.createElement("div",{ref:r,className:"Toastify",id:c},n(((e,t)=>{const n=t.length?{...s}:{...s,pointerEvents:"none"};return o.createElement("div",{className:u(e),style:n,key:`container-${e}`},t.map(((e,n)=>{let{content:r,props:a}=e;return o.createElement(Y,{...a,isIn:i(a.toastId),style:{...a.style,"--nth":n+1,"--len":t.length},key:`toast-${a.key}`},r)})))})))})));G.displayName="ToastContainer",G.defaultProps={position:"top-right",transition:K,autoClose:5e3,closeButton:B,pauseOnHover:!0,pauseOnFocusLoss:!0,closeOnClick:!0,draggable:!0,draggablePercent:80,draggableDirection:"x",role:"alert",theme:"light"};let X,J=new Map,Z=[],ee=1;function te(){return""+ee++}function ne(e){return e&&(q(e.toastId)||P(e.toastId))?e.toastId:te()}function re(e,t){return J.size>0?F.emit(0,e,t):Z.push({content:e,options:t}),t.toastId}function ie(e,t){return{...t,type:t&&t.type||e,toastId:ne(t)}}function oe(e){return(t,n)=>re(t,ie(e,n))}function ae(e,t){return re(e,ie("default",t))}ae.loading=(e,t)=>re(e,ie("default",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...t})),ae.promise=function(e,t,n){let r,{pending:i,error:o,success:a}=t;i&&(r=q(i)?ae.loading(i,n):ae.loading(i.render,{...n,...i}));const s={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},l=(e,t,i)=>{if(null==t)return void ae.dismiss(r);const o={type:e,...s,...n,data:i},a=q(t)?{render:t}:t;return r?ae.update(r,{...o,...a}):ae(a.render,{...o,...a}),i},c=_(e)?e():e;return c.then((e=>l("success",a,e))).catch((e=>l("error",o,e))),c},ae.success=oe("success"),ae.info=oe("info"),ae.error=oe("error"),ae.warning=oe("warning"),ae.warn=ae.warning,ae.dark=(e,t)=>re(e,ie("default",{theme:"dark",...t})),ae.dismiss=e=>{J.size>0?F.emit(1,e):Z=Z.filter((t=>null!=e&&t.options.toastId!==e))},ae.clearWaitingQueue=function(e){return void 0===e&&(e={}),F.emit(5,e)},ae.isActive=e=>{let t=!1;return J.forEach((n=>{n.isToastActive&&n.isToastActive(e)&&(t=!0)})),t},ae.update=function(e,t){void 0===t&&(t={}),setTimeout((()=>{const n=function(e,t){let{containerId:n}=t;const r=J.get(n||X);return r&&r.getToast(e)}(e,t);if(n){const{props:r,content:i}=n,o={delay:100,...r,...t,toastId:t.toastId||e,updateId:te()};o.toastId!==e&&(o.staleId=e);const a=o.render||i;delete o.render,re(a,o)}}),0)},ae.done=e=>{ae.update(e,{progress:1})},ae.onChange=e=>(F.on(4,e),()=>{F.off(4,e)}),ae.POSITION={TOP_LEFT:"top-left",TOP_RIGHT:"top-right",TOP_CENTER:"top-center",BOTTOM_LEFT:"bottom-left",BOTTOM_RIGHT:"bottom-right",BOTTOM_CENTER:"bottom-center"},ae.TYPE={INFO:"info",SUCCESS:"success",WARNING:"warning",ERROR:"error",DEFAULT:"default"},F.on(2,(e=>{X=e.containerId||e,J.set(X,e),Z.forEach((e=>{F.emit(0,e.content,e.options)})),Z=[]})).on(3,(e=>{J.delete(e.containerId||e),0===J.size&&F.off(0).off(1).off(5)}));let se="",le=0;const ce=(e,t=!1)=>{let n=(0,l.__)("Server error","burst-statistics");if(e=e.replace(/(<([^>]+)>)/gi,""),t){const e=t.split("?")[0].split("/"),r=e.indexOf("v1")+1;n=(0,l.__)("Server error in","burst-statistics")+" "+e[r]+"/"+e[r+1]}n+=": "+e;const r=Date.now();if(n===se&&r-le<3e3)return;se=n,le=r;const i=(0,o.createElement)("div",{title:(0,l.__)("Click to copy","burst-statistics"),onClick:()=>{navigator.clipboard.writeText(n),ae.success((0,l.__)("Error copied to clipboard","burst-statistics"))}},n);ae.error(i,{autoClose:15e3})},ue=async(e,t,n=null)=>{const r="GET"===e?`${he("ajax")}&rest_action=${t.replace("?","&")}`:he("ajax"),i={method:e,headers:{"Content-Type":"application/json; charset=UTF-8"},signal:(new AbortController).signal};"POST"===e&&(i.body=JSON.stringify({path:t,data:n},de));try{const e=await fetch(r,i);if(!e.ok)throw ce(!1,e.statusText),new Error(e.statusText);const t=await e.json();if(!t.data||!Object.prototype.hasOwnProperty.call(t.data,"request_success"))throw console.log("Ajax fallback request failed."),new Error("Invalid data error");return delete t.data.request_success,Promise.resolve(t.data)}catch(e){return Promise.reject(new Error("AJAX request failed"))}},de=(e,t)=>e?e&&e.includes("Control")?void 0:"object"==typeof t?JSON.parse(JSON.stringify(t,de)):t:t,he=e=>{let t;return t=void 0===e?burst_settings.site_url:burst_settings.admin_ajax_url,"https:"===window.location.protocol&&-1===t.indexOf("https://")?t.replace("http://","https://"):t},fe=async(e,t,n,r,i={})=>{const{filters:o,metrics:a,group_by:s,currentView:l,selectedPages:c}=i,u={date_start:t,date_end:n,date_range:r,nonce:burst_settings.burst_nonce,should_load_ecommerce:burst_settings.shouldLoadEcommerce||!1,goal_id:i.goal_id,token:Math.random().toString(36).replace(/[^a-z]+/g,"").substr(0,5),...c&&{selected_pages:c},...o&&{filters:o},...a&&{metrics:a},...s&&{group_by:s},...l&&{currentView:l}},d=(f=u,Object.keys(f).filter((e=>void 0!==f[e]&&null!==f[e])).map((e=>{const t=(e=>Array.isArray(e)?e:"object"==typeof e&&null!==e?JSON.stringify(e):e)(f[e]);return Array.isArray(t)?t.map((t=>`${encodeURIComponent(e)}[]=${encodeURIComponent(t)}`)).join("&"):`${encodeURIComponent(e)}=${encodeURIComponent(t)}`})).join("&")),h=`burst/v1/data/${e}${-1!==burst_settings.site_url.indexOf("?")?"&":"?"}${d}`;var f;return await(async(e,t="GET",n={})=>{let r={path:e,method:t,signal:(new AbortController).signal};"POST"===t&&(n.nonce=burst_settings.burst_nonce,r.data=n);try{const e=await S()(r);if(!e.request_success)throw Object.prototype.hasOwnProperty.call(e,"message")?new Error(e.message):new Error("Received unexpected response from server. Please check if the Rest API is enabled.");if(e.code&&200!==e.code)throw new Error(e.message);return delete e.request_success,e}catch(i){try{return await ue(t,e,n)}catch{throw ce(i.message,r.path),i}}})(h,"GET")},pe=async e=>{const{startDate:t,endDate:n,range:r,filters:i}=e,{data:o}=await fe("live-visitors",t,n,r,{filters:i});return E(o?.visitors)};function ye(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),!1===n||!r.defaultPrevented)return t?.(r)}}function me(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function ge(...e){return t=>{let n=!1;const r=e.map((e=>{const r=me(e,t);return n||"function"!=typeof r||(n=!0),r}));if(n)return()=>{for(let t=0;t<r.length;t++){const n=r[t];"function"==typeof n?n():me(e[t],null)}}}}function ve(...e){return o.useCallback(ge(...e),e)}"undefined"==typeof window||!window.document||window.document.createElement;var be=i(428);function we(e,t=[]){let n=[];const r=()=>{const t=n.map((e=>o.createContext(e)));return function(n){const r=n?.[e]||t;return o.useMemo((()=>({[`__scope${e}`]:{...n,[e]:r}})),[n,r])}};return r.scopeName=e,[function(t,r){const i=o.createContext(r),a=n.length;n=[...n,r];const s=t=>{const{scope:n,children:r,...s}=t,l=n?.[e]?.[a]||i,c=o.useMemo((()=>s),Object.values(s));return(0,be.jsx)(l.Provider,{value:c,children:r})};return s.displayName=t+"Provider",[s,function(n,s){const l=s?.[e]?.[a]||i,c=o.useContext(l);if(c)return c;if(void 0!==r)return r;throw new Error(`\`${n}\` must be used within \`${t}\``)}]},xe(r,...t)]}function xe(...e){const t=e[0];if(1===e.length)return t;const n=()=>{const n=e.map((e=>({useScope:e(),scopeName:e.scopeName})));return function(e){const r=n.reduce(((t,{useScope:n,scopeName:r})=>({...t,...n(e)[`__scope${r}`]})),{});return o.useMemo((()=>({[`__scope${t.scopeName}`]:r})),[r])}};return n.scopeName=t.scopeName,n}var ke=i(795);function Ee(e){const t=o.forwardRef(((e,t)=>{const{children:n,...r}=e;if(o.isValidElement(n)){const e=function(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}(n),i=function(e,t){const n={...t};for(const r in t){const i=e[r],o=t[r];/^on[A-Z]/.test(r)?i&&o?n[r]=(...e)=>{const t=o(...e);return i(...e),t}:i&&(n[r]=i):"style"===r?n[r]={...i,...o}:"className"===r&&(n[r]=[i,o].filter(Boolean).join(" "))}return{...e,...n}}(r,n.props);return n.type!==o.Fragment&&(i.ref=t?ge(t,e):e),o.cloneElement(n,i)}return o.Children.count(n)>1?o.Children.only(null):null}));return t.displayName=`${e}.SlotClone`,t}var Ce=Symbol("radix.slottable");function Me(e){return o.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===Ce}var Te=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce(((e,t)=>{const n=function(e){const t=Ee(e),n=o.forwardRef(((e,n)=>{const{children:r,...i}=e,a=o.Children.toArray(r),s=a.find(Me);if(s){const e=s.props.children,r=a.map((t=>t===s?o.Children.count(e)>1?o.Children.only(null):o.isValidElement(e)?e.props.children:null:t));return(0,be.jsx)(t,{...i,ref:n,children:o.isValidElement(e)?o.cloneElement(e,void 0,r):null})}return(0,be.jsx)(t,{...i,ref:n,children:r})}));return n.displayName=`${e}.Slot`,n}(`Primitive.${t}`),r=o.forwardRef(((e,r)=>{const{asChild:i,...o}=e,a=i?n:t;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,be.jsx)(a,{...o,ref:r})}));return r.displayName=`Primitive.${t}`,{...e,[t]:r}}),{});function Oe(e){const t=o.useRef(e);return o.useEffect((()=>{t.current=e})),o.useMemo((()=>(...e)=>t.current?.(...e)),[])}var Se,Re="dismissableLayer.update",De=o.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Pe=o.forwardRef(((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:s,onDismiss:l,...c}=e,u=o.useContext(De),[d,h]=o.useState(null),f=d?.ownerDocument??globalThis?.document,[,p]=o.useState({}),y=ve(t,(e=>h(e))),m=Array.from(u.layers),[g]=[...u.layersWithOutsidePointerEventsDisabled].slice(-1),v=m.indexOf(g),b=d?m.indexOf(d):-1,w=u.layersWithOutsidePointerEventsDisabled.size>0,x=b>=v,k=function(e,t=globalThis?.document){const n=Oe(e),r=o.useRef(!1),i=o.useRef((()=>{}));return o.useEffect((()=>{const e=e=>{if(e.target&&!r.current){let r=function(){_e("dismissableLayer.pointerDownOutside",n,o,{discrete:!0})};const o={originalEvent:e};"touch"===e.pointerType?(t.removeEventListener("click",i.current),i.current=r,t.addEventListener("click",i.current,{once:!0})):r()}else t.removeEventListener("click",i.current);r.current=!1},o=window.setTimeout((()=>{t.addEventListener("pointerdown",e)}),0);return()=>{window.clearTimeout(o),t.removeEventListener("pointerdown",e),t.removeEventListener("click",i.current)}}),[t,n]),{onPointerDownCapture:()=>r.current=!0}}((e=>{const t=e.target,n=[...u.branches].some((e=>e.contains(t)));x&&!n&&(i?.(e),s?.(e),e.defaultPrevented||l?.())}),f),E=function(e,t=globalThis?.document){const n=Oe(e),r=o.useRef(!1);return o.useEffect((()=>{const e=e=>{e.target&&!r.current&&_e("dismissableLayer.focusOutside",n,{originalEvent:e},{discrete:!1})};return t.addEventListener("focusin",e),()=>t.removeEventListener("focusin",e)}),[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}((e=>{const t=e.target;[...u.branches].some((e=>e.contains(t)))||(a?.(e),s?.(e),e.defaultPrevented||l?.())}),f);return function(e,t=globalThis?.document){const n=Oe(e);o.useEffect((()=>{const e=e=>{"Escape"===e.key&&n(e)};return t.addEventListener("keydown",e,{capture:!0}),()=>t.removeEventListener("keydown",e,{capture:!0})}),[n,t])}((e=>{b===u.layers.size-1&&(r?.(e),!e.defaultPrevented&&l&&(e.preventDefault(),l()))}),f),o.useEffect((()=>{if(d)return n&&(0===u.layersWithOutsidePointerEventsDisabled.size&&(Se=f.body.style.pointerEvents,f.body.style.pointerEvents="none"),u.layersWithOutsidePointerEventsDisabled.add(d)),u.layers.add(d),qe(),()=>{n&&1===u.layersWithOutsidePointerEventsDisabled.size&&(f.body.style.pointerEvents=Se)}}),[d,f,n,u]),o.useEffect((()=>()=>{d&&(u.layers.delete(d),u.layersWithOutsidePointerEventsDisabled.delete(d),qe())}),[d,u]),o.useEffect((()=>{const e=()=>p({});return document.addEventListener(Re,e),()=>document.removeEventListener(Re,e)}),[]),(0,be.jsx)(Te.div,{...c,ref:y,style:{pointerEvents:w?x?"auto":"none":void 0,...e.style},onFocusCapture:ye(e.onFocusCapture,E.onFocusCapture),onBlurCapture:ye(e.onBlurCapture,E.onBlurCapture),onPointerDownCapture:ye(e.onPointerDownCapture,k.onPointerDownCapture)})}));function qe(){const e=new CustomEvent(Re);document.dispatchEvent(e)}function _e(e,t,n,{discrete:r}){const i=n.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?function(e,t){e&&ke.flushSync((()=>e.dispatchEvent(t)))}(i,o):i.dispatchEvent(o)}Pe.displayName="DismissableLayer",o.forwardRef(((e,t)=>{const n=o.useContext(De),r=o.useRef(null),i=ve(t,r);return o.useEffect((()=>{const e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}}),[n.branches]),(0,be.jsx)(Te.div,{...e,ref:i})})).displayName="DismissableLayerBranch";var Ne=globalThis?.document?o.useLayoutEffect:()=>{},Ae=a[" useId ".trim().toString()]||(()=>{}),Le=0;const je=["top","right","bottom","left"],Fe=Math.min,Ie=Math.max,Ue=Math.round,ze=Math.floor,He=e=>({x:e,y:e}),Qe={left:"right",right:"left",bottom:"top",top:"bottom"},We={start:"end",end:"start"};function Be(e,t,n){return Ie(e,Fe(t,n))}function $e(e,t){return"function"==typeof e?e(t):e}function Ye(e){return e.split("-")[0]}function Ve(e){return e.split("-")[1]}function Ke(e){return"x"===e?"y":"x"}function Ge(e){return"y"===e?"height":"width"}const Xe=new Set(["top","bottom"]);function Je(e){return Xe.has(Ye(e))?"y":"x"}function Ze(e){return Ke(Je(e))}function et(e){return e.replace(/start|end/g,(e=>We[e]))}const tt=["left","right"],nt=["right","left"],rt=["top","bottom"],it=["bottom","top"];function ot(e){return e.replace(/left|right|bottom|top/g,(e=>Qe[e]))}function at(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function st(e){const{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function lt(e,t,n){let{reference:r,floating:i}=e;const o=Je(t),a=Ze(t),s=Ge(a),l=Ye(t),c="y"===o,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,h=r[s]/2-i[s]/2;let f;switch(l){case"top":f={x:u,y:r.y-i.height};break;case"bottom":f={x:u,y:r.y+r.height};break;case"right":f={x:r.x+r.width,y:d};break;case"left":f={x:r.x-i.width,y:d};break;default:f={x:r.x,y:r.y}}switch(Ve(t)){case"start":f[a]-=h*(n&&c?-1:1);break;case"end":f[a]+=h*(n&&c?-1:1)}return f}async function ct(e,t){var n;void 0===t&&(t={});const{x:r,y:i,platform:o,rects:a,elements:s,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:h=!1,padding:f=0}=$e(t,e),p=at(f),y=s[h?"floating"===d?"reference":"floating":d],m=st(await o.getClippingRect({element:null==(n=await(null==o.isElement?void 0:o.isElement(y)))||n?y:y.contextElement||await(null==o.getDocumentElement?void 0:o.getDocumentElement(s.floating)),boundary:c,rootBoundary:u,strategy:l})),g="floating"===d?{x:r,y:i,width:a.floating.width,height:a.floating.height}:a.reference,v=await(null==o.getOffsetParent?void 0:o.getOffsetParent(s.floating)),b=await(null==o.isElement?void 0:o.isElement(v))&&await(null==o.getScale?void 0:o.getScale(v))||{x:1,y:1},w=st(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:g,offsetParent:v,strategy:l}):g);return{top:(m.top-w.top+p.top)/b.y,bottom:(w.bottom-m.bottom+p.bottom)/b.y,left:(m.left-w.left+p.left)/b.x,right:(w.right-m.right+p.right)/b.x}}function ut(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function dt(e){return je.some((t=>e[t]>=0))}const ht=new Set(["left","top"]);function ft(){return"undefined"!=typeof window}function pt(e){return gt(e)?(e.nodeName||"").toLowerCase():"#document"}function yt(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function mt(e){var t;return null==(t=(gt(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function gt(e){return!!ft()&&(e instanceof Node||e instanceof yt(e).Node)}function vt(e){return!!ft()&&(e instanceof Element||e instanceof yt(e).Element)}function bt(e){return!!ft()&&(e instanceof HTMLElement||e instanceof yt(e).HTMLElement)}function wt(e){return!(!ft()||"undefined"==typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof yt(e).ShadowRoot)}const xt=new Set(["inline","contents"]);function kt(e){const{overflow:t,overflowX:n,overflowY:r,display:i}=Nt(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!xt.has(i)}const Et=new Set(["table","td","th"]);function Ct(e){return Et.has(pt(e))}const Mt=[":popover-open",":modal"];function Tt(e){return Mt.some((t=>{try{return e.matches(t)}catch(e){return!1}}))}const Ot=["transform","translate","scale","rotate","perspective"],St=["transform","translate","scale","rotate","perspective","filter"],Rt=["paint","layout","strict","content"];function Dt(e){const t=Pt(),n=vt(e)?Nt(e):e;return Ot.some((e=>!!n[e]&&"none"!==n[e]))||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||St.some((e=>(n.willChange||"").includes(e)))||Rt.some((e=>(n.contain||"").includes(e)))}function Pt(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}const qt=new Set(["html","body","#document"]);function _t(e){return qt.has(pt(e))}function Nt(e){return yt(e).getComputedStyle(e)}function At(e){return vt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Lt(e){if("html"===pt(e))return e;const t=e.assignedSlot||e.parentNode||wt(e)&&e.host||mt(e);return wt(t)?t.host:t}function jt(e){const t=Lt(e);return _t(t)?e.ownerDocument?e.ownerDocument.body:e.body:bt(t)&&kt(t)?t:jt(t)}function Ft(e,t,n){var r;void 0===t&&(t=[]),void 0===n&&(n=!0);const i=jt(e),o=i===(null==(r=e.ownerDocument)?void 0:r.body),a=yt(i);if(o){const e=It(a);return t.concat(a,a.visualViewport||[],kt(i)?i:[],e&&n?Ft(e):[])}return t.concat(i,Ft(i,[],n))}function It(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Ut(e){const t=Nt(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const i=bt(e),o=i?e.offsetWidth:n,a=i?e.offsetHeight:r,s=Ue(n)!==o||Ue(r)!==a;return s&&(n=o,r=a),{width:n,height:r,$:s}}function zt(e){return vt(e)?e:e.contextElement}function Ht(e){const t=zt(e);if(!bt(t))return He(1);const n=t.getBoundingClientRect(),{width:r,height:i,$:o}=Ut(t);let a=(o?Ue(n.width):n.width)/r,s=(o?Ue(n.height):n.height)/i;return a&&Number.isFinite(a)||(a=1),s&&Number.isFinite(s)||(s=1),{x:a,y:s}}const Qt=He(0);function Wt(e){const t=yt(e);return Pt()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Qt}function Bt(e,t,n,r){void 0===t&&(t=!1),void 0===n&&(n=!1);const i=e.getBoundingClientRect(),o=zt(e);let a=He(1);t&&(r?vt(r)&&(a=Ht(r)):a=Ht(e));const s=function(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==yt(e))&&t}(o,n,r)?Wt(o):He(0);let l=(i.left+s.x)/a.x,c=(i.top+s.y)/a.y,u=i.width/a.x,d=i.height/a.y;if(o){const e=yt(o),t=r&&vt(r)?yt(r):r;let n=e,i=It(n);for(;i&&r&&t!==n;){const e=Ht(i),t=i.getBoundingClientRect(),r=Nt(i),o=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,a=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;l*=e.x,c*=e.y,u*=e.x,d*=e.y,l+=o,c+=a,n=yt(i),i=It(n)}}return st({width:u,height:d,x:l,y:c})}function $t(e,t){const n=At(e).scrollLeft;return t?t.left+n:Bt(mt(e)).left+n}function Yt(e,t){const n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-$t(e,n),y:n.top+t.scrollTop}}const Vt=new Set(["absolute","fixed"]);function Kt(e,t,n){let r;if("viewport"===t)r=function(e,t){const n=yt(e),r=mt(e),i=n.visualViewport;let o=r.clientWidth,a=r.clientHeight,s=0,l=0;if(i){o=i.width,a=i.height;const e=Pt();(!e||e&&"fixed"===t)&&(s=i.offsetLeft,l=i.offsetTop)}const c=$t(r);if(c<=0){const e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i="CSS1Compat"===e.compatMode&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,a=Math.abs(r.clientWidth-t.clientWidth-i);a<=25&&(o-=a)}else c<=25&&(o+=c);return{width:o,height:a,x:s,y:l}}(e,n);else if("document"===t)r=function(e){const t=mt(e),n=At(e),r=e.ownerDocument.body,i=Ie(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),o=Ie(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let a=-n.scrollLeft+$t(e);const s=-n.scrollTop;return"rtl"===Nt(r).direction&&(a+=Ie(t.clientWidth,r.clientWidth)-i),{width:i,height:o,x:a,y:s}}(mt(e));else if(vt(t))r=function(e,t){const n=Bt(e,!0,"fixed"===t),r=n.top+e.clientTop,i=n.left+e.clientLeft,o=bt(e)?Ht(e):He(1);return{width:e.clientWidth*o.x,height:e.clientHeight*o.y,x:i*o.x,y:r*o.y}}(t,n);else{const n=Wt(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return st(r)}function Gt(e,t){const n=Lt(e);return!(n===t||!vt(n)||_t(n))&&("fixed"===Nt(n).position||Gt(n,t))}function Xt(e,t,n){const r=bt(t),i=mt(t),o="fixed"===n,a=Bt(e,!0,o,t);let s={scrollLeft:0,scrollTop:0};const l=He(0);function c(){l.x=$t(i)}if(r||!r&&!o)if(("body"!==pt(t)||kt(i))&&(s=At(t)),r){const e=Bt(t,!0,o,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else i&&c();o&&!r&&i&&c();const u=!i||r||o?He(0):Yt(i,s);return{x:a.left+s.scrollLeft-l.x-u.x,y:a.top+s.scrollTop-l.y-u.y,width:a.width,height:a.height}}function Jt(e){return"static"===Nt(e).position}function Zt(e,t){if(!bt(e)||"fixed"===Nt(e).position)return null;if(t)return t(e);let n=e.offsetParent;return mt(e)===n&&(n=n.ownerDocument.body),n}function en(e,t){const n=yt(e);if(Tt(e))return n;if(!bt(e)){let t=Lt(e);for(;t&&!_t(t);){if(vt(t)&&!Jt(t))return t;t=Lt(t)}return n}let r=Zt(e,t);for(;r&&Ct(r)&&Jt(r);)r=Zt(r,t);return r&&_t(r)&&Jt(r)&&!Dt(r)?n:r||function(e){let t=Lt(e);for(;bt(t)&&!_t(t);){if(Dt(t))return t;if(Tt(t))return null;t=Lt(t)}return null}(e)||n}const tn={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e;const o="fixed"===i,a=mt(r),s=!!t&&Tt(t.floating);if(r===a||s&&o)return n;let l={scrollLeft:0,scrollTop:0},c=He(1);const u=He(0),d=bt(r);if((d||!d&&!o)&&(("body"!==pt(r)||kt(a))&&(l=At(r)),bt(r))){const e=Bt(r);c=Ht(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}const h=!a||d||o?He(0):Yt(a,l);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+u.x+h.x,y:n.y*c.y-l.scrollTop*c.y+u.y+h.y}},getDocumentElement:mt,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e;const o=[..."clippingAncestors"===n?Tt(t)?[]:function(e,t){const n=t.get(e);if(n)return n;let r=Ft(e,[],!1).filter((e=>vt(e)&&"body"!==pt(e))),i=null;const o="fixed"===Nt(e).position;let a=o?Lt(e):e;for(;vt(a)&&!_t(a);){const t=Nt(a),n=Dt(a);n||"fixed"!==t.position||(i=null),(o?!n&&!i:!n&&"static"===t.position&&i&&Vt.has(i.position)||kt(a)&&!n&&Gt(e,a))?r=r.filter((e=>e!==a)):i=t,a=Lt(a)}return t.set(e,r),r}(t,this._c):[].concat(n),r],a=o[0],s=o.reduce(((e,n)=>{const r=Kt(t,n,i);return e.top=Ie(r.top,e.top),e.right=Fe(r.right,e.right),e.bottom=Fe(r.bottom,e.bottom),e.left=Ie(r.left,e.left),e}),Kt(t,a,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},getOffsetParent:en,getElementRects:async function(e){const t=this.getOffsetParent||en,n=this.getDimensions,r=await n(e.floating);return{reference:Xt(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:n}=Ut(e);return{width:t,height:n}},getScale:Ht,isElement:vt,isRTL:function(e){return"rtl"===Nt(e).direction}};function nn(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}const rn=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:i,y:o,placement:a,middlewareData:s}=t,l=await async function(e,t){const{placement:n,platform:r,elements:i}=e,o=await(null==r.isRTL?void 0:r.isRTL(i.floating)),a=Ye(n),s=Ve(n),l="y"===Je(n),c=ht.has(a)?-1:1,u=o&&l?-1:1,d=$e(t,e);let{mainAxis:h,crossAxis:f,alignmentAxis:p}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&"number"==typeof p&&(f="end"===s?-1*p:p),l?{x:f*u,y:h*c}:{x:h*c,y:f*u}}(t,e);return a===(null==(n=s.offset)?void 0:n.placement)&&null!=(r=s.arrow)&&r.alignmentOffset?{}:{x:i+l.x,y:o+l.y,data:{...l,placement:a}}}}},on=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:i}=t,{mainAxis:o=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=$e(e,t),c={x:n,y:r},u=await ct(t,l),d=Je(Ye(i)),h=Ke(d);let f=c[h],p=c[d];if(o){const e="y"===h?"bottom":"right";f=Be(f+u["y"===h?"top":"left"],f,f-u[e])}if(a){const e="y"===d?"bottom":"right";p=Be(p+u["y"===d?"top":"left"],p,p-u[e])}const y=s.fn({...t,[h]:f,[d]:p});return{...y,data:{x:y.x-n,y:y.y-r,enabled:{[h]:o,[d]:a}}}}}},an=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,r;const{placement:i,middlewareData:o,rects:a,initialPlacement:s,platform:l,elements:c}=t,{mainAxis:u=!0,crossAxis:d=!0,fallbackPlacements:h,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:p="none",flipAlignment:y=!0,...m}=$e(e,t);if(null!=(n=o.arrow)&&n.alignmentOffset)return{};const g=Ye(i),v=Je(s),b=Ye(s)===s,w=await(null==l.isRTL?void 0:l.isRTL(c.floating)),x=h||(b||!y?[ot(s)]:function(e){const t=ot(e);return[et(e),t,et(t)]}(s)),k="none"!==p;!h&&k&&x.push(...function(e,t,n,r){const i=Ve(e);let o=function(e,t,n){switch(e){case"top":case"bottom":return n?t?nt:tt:t?tt:nt;case"left":case"right":return t?rt:it;default:return[]}}(Ye(e),"start"===n,r);return i&&(o=o.map((e=>e+"-"+i)),t&&(o=o.concat(o.map(et)))),o}(s,y,p,w));const E=[s,...x],C=await ct(t,m),M=[];let T=(null==(r=o.flip)?void 0:r.overflows)||[];if(u&&M.push(C[g]),d){const e=function(e,t,n){void 0===n&&(n=!1);const r=Ve(e),i=Ze(e),o=Ge(i);let a="x"===i?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[o]>t.floating[o]&&(a=ot(a)),[a,ot(a)]}(i,a,w);M.push(C[e[0]],C[e[1]])}if(T=[...T,{placement:i,overflows:M}],!M.every((e=>e<=0))){var O,S;const e=((null==(O=o.flip)?void 0:O.index)||0)+1,t=E[e];if(t&&("alignment"!==d||v===Je(t)||T.every((e=>Je(e.placement)!==v||e.overflows[0]>0))))return{data:{index:e,overflows:T},reset:{placement:t}};let n=null==(S=T.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:S.placement;if(!n)switch(f){case"bestFit":{var R;const e=null==(R=T.filter((e=>{if(k){const t=Je(e.placement);return t===v||"y"===t}return!0})).map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:R[0];e&&(n=e);break}case"initialPlacement":n=s}if(i!==n)return{reset:{placement:n}}}return{}}}},sn=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){var n,r;const{placement:i,rects:o,platform:a,elements:s}=t,{apply:l=()=>{},...c}=$e(e,t),u=await ct(t,c),d=Ye(i),h=Ve(i),f="y"===Je(i),{width:p,height:y}=o.floating;let m,g;"top"===d||"bottom"===d?(m=d,g=h===(await(null==a.isRTL?void 0:a.isRTL(s.floating))?"start":"end")?"left":"right"):(g=d,m="end"===h?"top":"bottom");const v=y-u.top-u.bottom,b=p-u.left-u.right,w=Fe(y-u[m],v),x=Fe(p-u[g],b),k=!t.middlewareData.shift;let E=w,C=x;if(null!=(n=t.middlewareData.shift)&&n.enabled.x&&(C=b),null!=(r=t.middlewareData.shift)&&r.enabled.y&&(E=v),k&&!h){const e=Ie(u.left,0),t=Ie(u.right,0),n=Ie(u.top,0),r=Ie(u.bottom,0);f?C=p-2*(0!==e||0!==t?e+t:Ie(u.left,u.right)):E=y-2*(0!==n||0!==r?n+r:Ie(u.top,u.bottom))}await l({...t,availableWidth:C,availableHeight:E});const M=await a.getDimensions(s.floating);return p!==M.width||y!==M.height?{reset:{rects:!0}}:{}}}},ln=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...i}=$e(e,t);switch(r){case"referenceHidden":{const e=ut(await ct(t,{...i,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:dt(e)}}}case"escaped":{const e=ut(await ct(t,{...i,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:dt(e)}}}default:return{}}}}},cn=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:i,rects:o,platform:a,elements:s,middlewareData:l}=t,{element:c,padding:u=0}=$e(e,t)||{};if(null==c)return{};const d=at(u),h={x:n,y:r},f=Ze(i),p=Ge(f),y=await a.getDimensions(c),m="y"===f,g=m?"top":"left",v=m?"bottom":"right",b=m?"clientHeight":"clientWidth",w=o.reference[p]+o.reference[f]-h[f]-o.floating[p],x=h[f]-o.reference[f],k=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let E=k?k[b]:0;E&&await(null==a.isElement?void 0:a.isElement(k))||(E=s.floating[b]||o.floating[p]);const C=w/2-x/2,M=E/2-y[p]/2-1,T=Fe(d[g],M),O=Fe(d[v],M),S=T,R=E-y[p]-O,D=E/2-y[p]/2+C,P=Be(S,D,R),q=!l.arrow&&null!=Ve(i)&&D!==P&&o.reference[p]/2-(D<S?T:O)-y[p]/2<0,_=q?D<S?D-S:D-R:0;return{[f]:h[f]+_,data:{[f]:P,centerOffset:D-P-_,...q&&{alignmentOffset:_}},reset:q}}}),un=function(e){return void 0===e&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:i,rects:o,middlewareData:a}=t,{offset:s=0,mainAxis:l=!0,crossAxis:c=!0}=$e(e,t),u={x:n,y:r},d=Je(i),h=Ke(d);let f=u[h],p=u[d];const y=$e(s,t),m="number"==typeof y?{mainAxis:y,crossAxis:0}:{mainAxis:0,crossAxis:0,...y};if(l){const e="y"===h?"height":"width",t=o.reference[h]-o.floating[e]+m.mainAxis,n=o.reference[h]+o.reference[e]-m.mainAxis;f<t?f=t:f>n&&(f=n)}if(c){var g,v;const e="y"===h?"width":"height",t=ht.has(Ye(i)),n=o.reference[d]-o.floating[e]+(t&&(null==(g=a.offset)?void 0:g[d])||0)+(t?0:m.crossAxis),r=o.reference[d]+o.reference[e]+(t?0:(null==(v=a.offset)?void 0:v[d])||0)-(t?m.crossAxis:0);p<n?p=n:p>r&&(p=r)}return{[h]:f,[d]:p}}}},dn=(e,t,n)=>{const r=new Map,i={platform:tn,...n},o={...i.platform,_c:r};return(async(e,t,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:a}=n,s=o.filter(Boolean),l=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=lt(c,r,l),h=r,f={},p=0;for(let n=0;n<s.length;n++){const{name:o,fn:y}=s[n],{x:m,y:g,data:v,reset:b}=await y({x:u,y:d,initialPlacement:r,placement:h,strategy:i,middlewareData:f,rects:c,platform:a,elements:{reference:e,floating:t}});u=null!=m?m:u,d=null!=g?g:d,f={...f,[o]:{...f[o],...v}},b&&p<=50&&(p++,"object"==typeof b&&(b.placement&&(h=b.placement),b.rects&&(c=!0===b.rects?await a.getElementRects({reference:e,floating:t,strategy:i}):b.rects),({x:u,y:d}=lt(c,h,l))),n=-1)}return{x:u,y:d,placement:h,strategy:i,middlewareData:f}})(e,t,{...i,platform:o})};var hn="undefined"!=typeof document?o.useLayoutEffect:function(){};function fn(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;0!==r--;)if(!fn(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;0!==r--;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;0!==r--;){const n=i[r];if(!("_owner"===n&&e.$$typeof||fn(e[n],t[n])))return!1}return!0}return e!=e&&t!=t}function pn(e){return"undefined"==typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function yn(e,t){const n=pn(e);return Math.round(t*n)/n}function mn(e){const t=o.useRef(e);return hn((()=>{t.current=e})),t}const gn=e=>({name:"arrow",options:e,fn(t){const{element:n,padding:r}="function"==typeof e?e(t):e;return n&&(i=n,{}.hasOwnProperty.call(i,"current"))?null!=n.current?cn({element:n.current,padding:r}).fn(t):{}:n?cn({element:n,padding:r}).fn(t):{};var i}}),vn=(e,t)=>({...on(e),options:[e,t]}),bn=(e,t)=>({...un(e),options:[e,t]}),wn=(e,t)=>({...an(e),options:[e,t]}),xn=(e,t)=>({...sn(e),options:[e,t]}),kn=(e,t)=>({...ln(e),options:[e,t]}),En=(e,t)=>({...gn(e),options:[e,t]});var Cn=o.forwardRef(((e,t)=>{const{children:n,width:r=10,height:i=5,...o}=e;return(0,be.jsx)(Te.svg,{...o,ref:t,width:r,height:i,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:(0,be.jsx)("polygon",{points:"0,0 30,0 15,10"})})}));Cn.displayName="Arrow";var Mn=Cn,Tn="Popper",[On,Sn]=we(Tn),[Rn,Dn]=On(Tn),Pn=e=>{const{__scopePopper:t,children:n}=e,[r,i]=o.useState(null);return(0,be.jsx)(Rn,{scope:t,anchor:r,onAnchorChange:i,children:n})};Pn.displayName=Tn;var qn="PopperAnchor",Nn=o.forwardRef(((e,t)=>{const{__scopePopper:n,virtualRef:r,...i}=e,a=Dn(qn,n),s=o.useRef(null),l=ve(t,s),c=o.useRef(null);return o.useEffect((()=>{const e=c.current;c.current=r?.current||s.current,e!==c.current&&a.onAnchorChange(c.current)})),r?null:(0,be.jsx)(Te.div,{...i,ref:l})}));Nn.displayName=qn;var An="PopperContent",[Ln,jn]=On(An),Fn=o.forwardRef(((e,t)=>{const{__scopePopper:n,side:r="bottom",sideOffset:i=0,align:a="center",alignOffset:s=0,arrowPadding:l=0,avoidCollisions:c=!0,collisionBoundary:u=[],collisionPadding:d=0,sticky:h="partial",hideWhenDetached:f=!1,updatePositionStrategy:p="optimized",onPlaced:y,...m}=e,g=Dn(An,n),[v,b]=o.useState(null),w=ve(t,(e=>b(e))),[x,k]=o.useState(null),E=function(e){const[t,n]=o.useState(void 0);return Ne((()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const t=new ResizeObserver((t=>{if(!Array.isArray(t))return;if(!t.length)return;const r=t[0];let i,o;if("borderBoxSize"in r){const e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,o=t.blockSize}else i=e.offsetWidth,o=e.offsetHeight;n({width:i,height:o})}));return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}n(void 0)}),[e]),t}(x),C=E?.width??0,M=E?.height??0,T=r+("center"!==a?"-"+a:""),O="number"==typeof d?d:{top:0,right:0,bottom:0,left:0,...d},S=Array.isArray(u)?u:[u],R=S.length>0,D={padding:O,boundary:S.filter(Hn),altBoundary:R},{refs:P,floatingStyles:q,placement:_,isPositioned:N,middlewareData:A}=function(e){void 0===e&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:i,elements:{reference:a,floating:s}={},transform:l=!0,whileElementsMounted:c,open:u}=e,[d,h]=o.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=o.useState(r);fn(f,r)||p(r);const[y,m]=o.useState(null),[g,v]=o.useState(null),b=o.useCallback((e=>{e!==E.current&&(E.current=e,m(e))}),[]),w=o.useCallback((e=>{e!==C.current&&(C.current=e,v(e))}),[]),x=a||y,k=s||g,E=o.useRef(null),C=o.useRef(null),M=o.useRef(d),T=null!=c,O=mn(c),S=mn(i),R=mn(u),D=o.useCallback((()=>{if(!E.current||!C.current)return;const e={placement:t,strategy:n,middleware:f};S.current&&(e.platform=S.current),dn(E.current,C.current,e).then((e=>{const t={...e,isPositioned:!1!==R.current};P.current&&!fn(M.current,t)&&(M.current=t,ke.flushSync((()=>{h(t)})))}))}),[f,t,n,S,R]);hn((()=>{!1===u&&M.current.isPositioned&&(M.current.isPositioned=!1,h((e=>({...e,isPositioned:!1}))))}),[u]);const P=o.useRef(!1);hn((()=>(P.current=!0,()=>{P.current=!1})),[]),hn((()=>{if(x&&(E.current=x),k&&(C.current=k),x&&k){if(O.current)return O.current(x,k,D);D()}}),[x,k,D,O,T]);const q=o.useMemo((()=>({reference:E,floating:C,setReference:b,setFloating:w})),[b,w]),_=o.useMemo((()=>({reference:x,floating:k})),[x,k]),N=o.useMemo((()=>{const e={position:n,left:0,top:0};if(!_.floating)return e;const t=yn(_.floating,d.x),r=yn(_.floating,d.y);return l?{...e,transform:"translate("+t+"px, "+r+"px)",...pn(_.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:t,top:r}}),[n,l,_.floating,d.x,d.y]);return o.useMemo((()=>({...d,update:D,refs:q,elements:_,floatingStyles:N})),[d,D,q,_,N])}({strategy:"fixed",placement:T,whileElementsMounted:(...e)=>function(e,t,n,r){void 0===r&&(r={});const{ancestorScroll:i=!0,ancestorResize:o=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:l=!1}=r,c=zt(e),u=i||o?[...c?Ft(c):[],...Ft(t)]:[];u.forEach((e=>{i&&e.addEventListener("scroll",n,{passive:!0}),o&&e.addEventListener("resize",n)}));const d=c&&s?function(e,t){let n,r=null;const i=mt(e);function o(){var e;clearTimeout(n),null==(e=r)||e.disconnect(),r=null}return function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),o();const c=e.getBoundingClientRect(),{left:u,top:d,width:h,height:f}=c;if(s||t(),!h||!f)return;const p={rootMargin:-ze(d)+"px "+-ze(i.clientWidth-(u+h))+"px "+-ze(i.clientHeight-(d+f))+"px "+-ze(u)+"px",threshold:Ie(0,Fe(1,l))||1};let y=!0;function m(t){const r=t[0].intersectionRatio;if(r!==l){if(!y)return a();r?a(!1,r):n=setTimeout((()=>{a(!1,1e-7)}),1e3)}1!==r||nn(c,e.getBoundingClientRect())||a(),y=!1}try{r=new IntersectionObserver(m,{...p,root:i.ownerDocument})}catch(e){r=new IntersectionObserver(m,p)}r.observe(e)}(!0),o}(c,n):null;let h,f=-1,p=null;a&&(p=new ResizeObserver((e=>{let[r]=e;r&&r.target===c&&p&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame((()=>{var e;null==(e=p)||e.observe(t)}))),n()})),c&&!l&&p.observe(c),p.observe(t));let y=l?Bt(e):null;return l&&function t(){const r=Bt(e);y&&!nn(y,r)&&n(),y=r,h=requestAnimationFrame(t)}(),n(),()=>{var e;u.forEach((e=>{i&&e.removeEventListener("scroll",n),o&&e.removeEventListener("resize",n)})),null==d||d(),null==(e=p)||e.disconnect(),p=null,l&&cancelAnimationFrame(h)}}(...e,{animationFrame:"always"===p}),elements:{reference:g.anchor},middleware:[(L={mainAxis:i+M,alignmentAxis:s},{...rn(L),options:[L,undefined]}),c&&vn({mainAxis:!0,crossAxis:!1,limiter:"partial"===h?bn():void 0,...D}),c&&wn({...D}),xn({...D,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{const{width:i,height:o}=t.reference,a=e.floating.style;a.setProperty("--radix-popper-available-width",`${n}px`),a.setProperty("--radix-popper-available-height",`${r}px`),a.setProperty("--radix-popper-anchor-width",`${i}px`),a.setProperty("--radix-popper-anchor-height",`${o}px`)}}),x&&En({element:x,padding:l}),Qn({arrowWidth:C,arrowHeight:M}),f&&kn({strategy:"referenceHidden",...D})]});var L;const[j,F]=Wn(_),I=Oe(y);Ne((()=>{N&&I?.()}),[N,I]);const U=A.arrow?.x,z=A.arrow?.y,H=0!==A.arrow?.centerOffset,[Q,W]=o.useState();return Ne((()=>{v&&W(window.getComputedStyle(v).zIndex)}),[v]),(0,be.jsx)("div",{ref:P.setFloating,"data-radix-popper-content-wrapper":"",style:{...q,transform:N?q.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Q,"--radix-popper-transform-origin":[A.transformOrigin?.x,A.transformOrigin?.y].join(" "),...A.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,be.jsx)(Ln,{scope:n,placedSide:j,onArrowChange:k,arrowX:U,arrowY:z,shouldHideArrow:H,children:(0,be.jsx)(Te.div,{"data-side":j,"data-align":F,...m,ref:w,style:{...m.style,animation:N?void 0:"none"}})})})}));Fn.displayName=An;var In="PopperArrow",Un={top:"bottom",right:"left",bottom:"top",left:"right"},zn=o.forwardRef((function(e,t){const{__scopePopper:n,...r}=e,i=jn(In,n),o=Un[i.placedSide];return(0,be.jsx)("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[o]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:(0,be.jsx)(Mn,{...r,ref:t,style:{...r.style,display:"block"}})})}));function Hn(e){return null!==e}zn.displayName=In;var Qn=e=>({name:"transformOrigin",options:e,fn(t){const{placement:n,rects:r,middlewareData:i}=t,o=0!==i.arrow?.centerOffset,a=o?0:e.arrowWidth,s=o?0:e.arrowHeight,[l,c]=Wn(n),u={start:"0%",center:"50%",end:"100%"}[c],d=(i.arrow?.x??0)+a/2,h=(i.arrow?.y??0)+s/2;let f="",p="";return"bottom"===l?(f=o?u:`${d}px`,p=-s+"px"):"top"===l?(f=o?u:`${d}px`,p=`${r.floating.height+s}px`):"right"===l?(f=-s+"px",p=o?u:`${h}px`):"left"===l&&(f=`${r.floating.width+s}px`,p=o?u:`${h}px`),{data:{x:f,y:p}}}});function Wn(e){const[t,n="center"]=e.split("-");return[t,n]}var Bn=Pn,$n=Nn,Yn=Fn,Vn=zn,Kn=o.forwardRef(((e,t)=>{const{container:n,...r}=e,[i,a]=o.useState(!1);Ne((()=>a(!0)),[]);const s=n||i&&globalThis?.document?.body;return s?ke.createPortal((0,be.jsx)(Te.div,{...r,ref:t}),s):null}));Kn.displayName="Portal";var Gn=e=>{const{present:t,children:n}=e,r=function(e){const[t,n]=o.useState(),r=o.useRef(null),i=o.useRef(e),a=o.useRef("none"),s=e?"mounted":"unmounted",[l,c]=function(e,t){return o.useReducer(((e,n)=>t[e][n]??e),e)}(s,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return o.useEffect((()=>{const e=Xn(r.current);a.current="mounted"===l?e:"none"}),[l]),Ne((()=>{const t=r.current,n=i.current;if(n!==e){const r=a.current,o=Xn(t);c(e?"MOUNT":"none"===o||"none"===t?.display?"UNMOUNT":n&&r!==o?"ANIMATION_OUT":"UNMOUNT"),i.current=e}}),[e,c]),Ne((()=>{if(t){let e;const n=t.ownerDocument.defaultView??window,o=o=>{const a=Xn(r.current).includes(CSS.escape(o.animationName));if(o.target===t&&a&&(c("ANIMATION_END"),!i.current)){const r=t.style.animationFillMode;t.style.animationFillMode="forwards",e=n.setTimeout((()=>{"forwards"===t.style.animationFillMode&&(t.style.animationFillMode=r)}))}},s=e=>{e.target===t&&(a.current=Xn(r.current))};return t.addEventListener("animationstart",s),t.addEventListener("animationcancel",o),t.addEventListener("animationend",o),()=>{n.clearTimeout(e),t.removeEventListener("animationstart",s),t.removeEventListener("animationcancel",o),t.removeEventListener("animationend",o)}}c("ANIMATION_END")}),[t,c]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:o.useCallback((e=>{r.current=e?getComputedStyle(e):null,n(e)}),[])}}(t),i="function"==typeof n?n({present:r.isPresent}):o.Children.only(n),a=ve(r.ref,function(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}(i));return"function"==typeof n||r.isPresent?o.cloneElement(i,{ref:a}):null};function Xn(e){return e?.animationName||"none"}Gn.displayName="Presence";var Jn=a[" useInsertionEffect ".trim().toString()]||Ne;Symbol("RADIX:SYNC_STATE");var Zn=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),er=o.forwardRef(((e,t)=>(0,be.jsx)(Te.span,{...e,ref:t,style:{...Zn,...e.style}})));er.displayName="VisuallyHidden";var tr=er,[nr,rr]=we("Tooltip",[Sn]),ir=Sn(),or="TooltipProvider",ar=700,sr="tooltip.open",[lr,cr]=nr(or),ur=e=>{const{__scopeTooltip:t,delayDuration:n=ar,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,s=o.useRef(!0),l=o.useRef(!1),c=o.useRef(0);return o.useEffect((()=>{const e=c.current;return()=>window.clearTimeout(e)}),[]),(0,be.jsx)(lr,{scope:t,isOpenDelayedRef:s,delayDuration:n,onOpen:o.useCallback((()=>{window.clearTimeout(c.current),s.current=!1}),[]),onClose:o.useCallback((()=>{window.clearTimeout(c.current),c.current=window.setTimeout((()=>s.current=!0),r)}),[r]),isPointerInTransitRef:l,onPointerInTransitChange:o.useCallback((e=>{l.current=e}),[]),disableHoverableContent:i,children:a})};ur.displayName=or;var dr="Tooltip",[hr,fr]=nr(dr),pr=e=>{const{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:s,delayDuration:l}=e,c=cr(dr,e.__scopeTooltip),u=ir(t),[d,h]=o.useState(null),f=function(e){const[t,n]=o.useState(Ae());return Ne((()=>{n((e=>e??String(Le++)))}),[e]),t?`radix-${t}`:""}(),p=o.useRef(0),y=s??c.disableHoverableContent,m=l??c.delayDuration,g=o.useRef(!1),[v,b]=function({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){const[i,a,s]=function({defaultProp:e,onChange:t}){const[n,r]=o.useState(e),i=o.useRef(n),a=o.useRef(t);return Jn((()=>{a.current=t}),[t]),o.useEffect((()=>{i.current!==n&&(a.current?.(n),i.current=n)}),[n,i]),[n,r,a]}({defaultProp:t,onChange:n}),l=void 0!==e,c=l?e:i;{const t=o.useRef(void 0!==e);o.useEffect((()=>{const e=t.current;if(e!==l){const t=e?"controlled":"uncontrolled",n=l?"controlled":"uncontrolled";console.warn(`${r} is changing from ${t} to ${n}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}t.current=l}),[l,r])}const u=o.useCallback((t=>{if(l){const n=function(e){return"function"==typeof e}(t)?t(e):t;n!==e&&s.current?.(n)}else a(t)}),[l,e,a,s]);return[c,u]}({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(sr))):c.onClose(),a?.(e)},caller:dr}),w=o.useMemo((()=>v?g.current?"delayed-open":"instant-open":"closed"),[v]),x=o.useCallback((()=>{window.clearTimeout(p.current),p.current=0,g.current=!1,b(!0)}),[b]),k=o.useCallback((()=>{window.clearTimeout(p.current),p.current=0,b(!1)}),[b]),E=o.useCallback((()=>{window.clearTimeout(p.current),p.current=window.setTimeout((()=>{g.current=!0,b(!0),p.current=0}),m)}),[m,b]);return o.useEffect((()=>()=>{p.current&&(window.clearTimeout(p.current),p.current=0)}),[]),(0,be.jsx)(Bn,{...u,children:(0,be.jsx)(hr,{scope:t,contentId:f,open:v,stateAttribute:w,trigger:d,onTriggerChange:h,onTriggerEnter:o.useCallback((()=>{c.isOpenDelayedRef.current?E():x()}),[c.isOpenDelayedRef,E,x]),onTriggerLeave:o.useCallback((()=>{y?k():(window.clearTimeout(p.current),p.current=0)}),[k,y]),onOpen:x,onClose:k,disableHoverableContent:y,children:n})})};pr.displayName=dr;var yr="TooltipTrigger",mr=o.forwardRef(((e,t)=>{const{__scopeTooltip:n,...r}=e,i=fr(yr,n),a=cr(yr,n),s=ir(n),l=ve(t,o.useRef(null),i.onTriggerChange),c=o.useRef(!1),u=o.useRef(!1),d=o.useCallback((()=>c.current=!1),[]);return o.useEffect((()=>()=>document.removeEventListener("pointerup",d)),[d]),(0,be.jsx)($n,{asChild:!0,...s,children:(0,be.jsx)(Te.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:l,onPointerMove:ye(e.onPointerMove,(e=>{"touch"!==e.pointerType&&(u.current||a.isPointerInTransitRef.current||(i.onTriggerEnter(),u.current=!0))})),onPointerLeave:ye(e.onPointerLeave,(()=>{i.onTriggerLeave(),u.current=!1})),onPointerDown:ye(e.onPointerDown,(()=>{i.open&&i.onClose(),c.current=!0,document.addEventListener("pointerup",d,{once:!0})})),onFocus:ye(e.onFocus,(()=>{c.current||i.onOpen()})),onBlur:ye(e.onBlur,i.onClose),onClick:ye(e.onClick,i.onClose)})})}));mr.displayName=yr;var gr="TooltipPortal",[vr,br]=nr(gr,{forceMount:void 0}),wr="TooltipContent",xr=o.forwardRef(((e,t)=>{const n=br(wr,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i="top",...o}=e,a=fr(wr,e.__scopeTooltip);return(0,be.jsx)(Gn,{present:r||a.open,children:a.disableHoverableContent?(0,be.jsx)(Tr,{side:i,...o,ref:t}):(0,be.jsx)(kr,{side:i,...o,ref:t})})})),kr=o.forwardRef(((e,t)=>{const n=fr(wr,e.__scopeTooltip),r=cr(wr,e.__scopeTooltip),i=o.useRef(null),a=ve(t,i),[s,l]=o.useState(null),{trigger:c,onClose:u}=n,d=i.current,{onPointerInTransitChange:h}=r,f=o.useCallback((()=>{l(null),h(!1)}),[h]),p=o.useCallback(((e,t)=>{const n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=function(e,t,n=5){const r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}(r,function(e,t){const n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),o=Math.abs(t.left-e.x);switch(Math.min(n,r,i,o)){case o:return"left";case i:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}(r,n.getBoundingClientRect())),o=function(e){const t=e.slice();return t.sort(((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:e.y>t.y?1:0)),function(e){if(e.length<=1)return e.slice();const t=[];for(let n=0;n<e.length;n++){const r=e[n];for(;t.length>=2;){const e=t[t.length-1],n=t[t.length-2];if(!((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x)))break;t.pop()}t.push(r)}t.pop();const n=[];for(let t=e.length-1;t>=0;t--){const r=e[t];for(;n.length>=2;){const e=n[n.length-1],t=n[n.length-2];if(!((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x)))break;n.pop()}n.push(r)}return n.pop(),1===t.length&&1===n.length&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}(t)}([...i,...function(e){const{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}(t.getBoundingClientRect())]);l(o),h(!0)}),[h]);return o.useEffect((()=>()=>f()),[f]),o.useEffect((()=>{if(c&&d){const e=e=>p(e,d),t=e=>p(e,c);return c.addEventListener("pointerleave",e),d.addEventListener("pointerleave",t),()=>{c.removeEventListener("pointerleave",e),d.removeEventListener("pointerleave",t)}}}),[c,d,p,f]),o.useEffect((()=>{if(s){const e=e=>{const t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||d?.contains(t),i=!function(e,t){const{x:n,y:r}=e;let i=!1;for(let e=0,o=t.length-1;e<t.length;o=e++){const a=t[e],s=t[o],l=a.x,c=a.y,u=s.x,d=s.y;c>r!=d>r&&n<(u-l)*(r-c)/(d-c)+l&&(i=!i)}return i}(n,s);r?f():i&&(f(),u())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}}),[c,d,s,u,f]),(0,be.jsx)(Tr,{...e,ref:a})})),[Er,Cr]=nr(dr,{isInside:!1}),Mr=function(e){const t=({children:e})=>(0,be.jsx)(be.Fragment,{children:e});return t.displayName=`${e}.Slottable`,t.__radixId=Ce,t}("TooltipContent"),Tr=o.forwardRef(((e,t)=>{const{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:s,...l}=e,c=fr(wr,n),u=ir(n),{onClose:d}=c;return o.useEffect((()=>(document.addEventListener(sr,d),()=>document.removeEventListener(sr,d))),[d]),o.useEffect((()=>{if(c.trigger){const e=e=>{const t=e.target;t?.contains(c.trigger)&&d()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}}),[c.trigger,d]),(0,be.jsx)(Pe,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:s,onFocusOutside:e=>e.preventDefault(),onDismiss:d,children:(0,be.jsxs)(Yn,{"data-state":c.stateAttribute,...u,...l,ref:t,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,be.jsx)(Mr,{children:r}),(0,be.jsx)(Er,{scope:n,isInside:!0,children:(0,be.jsx)(tr,{id:c.contentId,role:"tooltip",children:i||r})})]})})}));xr.displayName=wr;var Or="TooltipArrow",Sr=o.forwardRef(((e,t)=>{const{__scopeTooltip:n,...r}=e,i=ir(n);return Cr(Or,n).isInside?null:(0,be.jsx)(Vn,{...i,...r,ref:t})}));Sr.displayName=Or;var Rr=ur,Dr=pr,Pr=mr,qr=xr,_r=Sr;const Nr=({children:e,content:t,delayDuration:n=400})=>t?(0,o.createElement)(Rr,null,(0,o.createElement)(Dr,{delayDuration:n},(0,o.createElement)(Pr,{asChild:!0},e),(0,o.createElement)(qr,{className:"z-[99999] max-w-xs bg-gray-200 text-gray border border-gray-300 px-3 py-2 text-base rounded shadow-md animate-in fade-in-50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0  data-[state=delayed-open]:data-[side=top]:slide-in-from-bottom-2 data-[state=delayed-open]:data-[side=bottom]:slide-in-from-top-2 data-[state=delayed-open]:data-[side=left]:slide-in-from-right-2 data-[state=delayed-open]:data-[side=right]:slide-in-from-left-2",sideOffset:5},t,(0,o.createElement)(_r,{className:"fill-gray-300",width:10,height:5})))):(0,o.createElement)(o.Fragment,null,e),Ar=e=>{const t=(e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,((e,t,n)=>n?n.toUpperCase():t.toLowerCase())))(e);return t.charAt(0).toUpperCase()+t.slice(1)},Lr=(...e)=>e.filter(((e,t,n)=>Boolean(e)&&""!==e.trim()&&n.indexOf(e)===t)).join(" ").trim(),jr=e=>{for(const t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0};var Fr={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const Ir=(0,o.forwardRef)((({color:e="currentColor",size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i="",children:a,iconNode:s,...l},c)=>(0,o.createElement)("svg",{ref:c,...Fr,width:t,height:t,stroke:e,strokeWidth:r?24*Number(n)/Number(t):n,className:Lr("lucide",i),...!a&&!jr(l)&&{"aria-hidden":"true"},...l},[...s.map((([e,t])=>(0,o.createElement)(e,t))),...Array.isArray(a)?a:[a]]))),Ur=(e,t)=>{const n=(0,o.forwardRef)((({className:n,...r},i)=>{return(0,o.createElement)(Ir,{ref:i,iconNode:t,className:Lr(`lucide-${a=Ar(e),a.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,n),...r});var a}));return n.displayName=Ar(e),n},zr=Ur("user-round-check",[["path",{d:"M2 21a8 8 0 0 1 13.292-6",key:"bjp14o"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"m16 19 2 2 4-4",key:"1b14m6"}]]),Hr=Ur("user-round-plus",[["path",{d:"M2 21a8 8 0 0 1 13.292-6",key:"bjp14o"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"M19 16v6",key:"tddt3s"}],["path",{d:"M22 19h-6",key:"vcuq98"}]]),Qr=Ur("shopping-cart",[["circle",{cx:"8",cy:"21",r:"1",key:"jimo8o"}],["circle",{cx:"19",cy:"21",r:"1",key:"13723u"}],["path",{d:"M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12",key:"9zh506"}]]),Wr=Ur("octagon-alert",[["path",{d:"M12 16h.01",key:"1drbdi"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z",key:"1fd625"}]]),Br=Ur("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),$r=Ur("percent",[["line",{x1:"19",x2:"5",y1:"5",y2:"19",key:"1x9vlm"}],["circle",{cx:"6.5",cy:"6.5",r:"2.5",key:"4mh3h7"}],["circle",{cx:"17.5",cy:"17.5",r:"2.5",key:"1mdrzq"}]]),Yr=Ur("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),Vr=Ur("lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]),Kr=Ur("move-right",[["path",{d:"M18 8L22 12L18 16",key:"1r0oui"}],["path",{d:"M2 12H22",key:"1m8cig"}]]),Gr=Ur("ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]),Xr=Ur("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),Jr=Ur("circle-off",[["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M8.35 2.69A10 10 0 0 1 21.3 15.65",key:"1pfsoa"}],["path",{d:"M19.08 19.08A10 10 0 1 1 4.92 4.92",key:"1ablyi"}]]),Zr=Ur("circle-dot",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}]]),ei=Ur("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]),ti=Ur("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]),ni=Ur("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),ri=Ur("trophy",[["path",{d:"M10 14.66v1.626a2 2 0 0 1-.976 1.696A5 5 0 0 0 7 21.978",key:"1n3hpd"}],["path",{d:"M14 14.66v1.626a2 2 0 0 0 .976 1.696A5 5 0 0 1 17 21.978",key:"rfe1zi"}],["path",{d:"M18 9h1.5a1 1 0 0 0 0-5H18",key:"7xy6bh"}],["path",{d:"M4 22h16",key:"57wxv0"}],["path",{d:"M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z",key:"1mhfuq"}],["path",{d:"M6 9H4.5a1 1 0 0 1 0-5H6",key:"tex48p"}]]),ii=Ur("frown",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M16 16s-1.5-2-4-2-4 2-4 2",key:"epbg0q"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]]),oi=Ur("hourglass",[["path",{d:"M5 22h14",key:"ehvnwv"}],["path",{d:"M5 2h14",key:"pdyrp9"}],["path",{d:"M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22",key:"1d314k"}],["path",{d:"M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2",key:"1vvvr6"}]]),ai=Ur("scale",[["path",{d:"m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z",key:"7g6ntu"}],["path",{d:"m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z",key:"ijws7r"}],["path",{d:"M7 21h10",key:"1b0cd5"}],["path",{d:"M12 3v18",key:"108xh3"}],["path",{d:"M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2",key:"3gwbw2"}]]),si=Ur("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]),li=Ur("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]),ci=Ur("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]),ui=Ur("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]),di=Ur("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]),hi=Ur("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),fi=Ur("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]),pi=Ur("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]),yi=Ur("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]),mi=Ur("braces",[["path",{d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1",key:"ezmyqa"}],["path",{d:"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1",key:"e1hn23"}]]),gi=Ur("file-text",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]),vi=Ur("file-x",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"m14.5 12.5-5 5",key:"b62r18"}],["path",{d:"m9.5 12.5 5 5",key:"1rk7el"}]]),bi=Ur("file-down",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M12 18v-6",key:"17g6i2"}],["path",{d:"m9 15 3 3 3-3",key:"1npd3o"}]]),wi=Ur("calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]),xi=Ur("calendar-x",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"m14 14-4 4",key:"rymu2i"}],["path",{d:"m10 14 4 4",key:"3sz06r"}]]),ki=Ur("panel-top",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}]]),Ei=Ur("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),Ci=Ur("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]),Mi=Ur("trash",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}]]),Ti=Ur("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]),Oi=Ur("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]),Si=Ur("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]),Ri=Ur("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),Di=Ur("link",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]),Pi=Ur("circle-user",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]]),qi=Ur("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]),_i=Ur("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]),Ni=Ur("infinity",[["path",{d:"M6 16c5 0 7-8 12-8a4 4 0 0 1 0 8c-5 0-7-8-12-8a4 4 0 1 0 0 8",key:"18ogeb"}]]),Ai=Ur("chart-line",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"m19 9-5 5-4-4-3 3",key:"2osh9i"}]]),Li=Ur("chart-pie",[["path",{d:"M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z",key:"pzmjnu"}],["path",{d:"M21.21 15.89A10 10 0 1 1 8 2.83",key:"k2fpak"}]]),ji=Ur("goal",[["path",{d:"M12 13V2l8 4-8 4",key:"5wlwwj"}],["path",{d:"M20.561 10.222a9 9 0 1 1-12.55-5.29",key:"1c0wjv"}],["path",{d:"M8.002 9.997a5 5 0 1 0 8.9 2.02",key:"gb1g7m"}]]),Fi=Ur("sliders-horizontal",[["line",{x1:"21",x2:"14",y1:"4",y2:"4",key:"obuewd"}],["line",{x1:"10",x2:"3",y1:"4",y2:"4",key:"1q6298"}],["line",{x1:"21",x2:"12",y1:"12",y2:"12",key:"1iu8h1"}],["line",{x1:"8",x2:"3",y1:"12",y2:"12",key:"ntss68"}],["line",{x1:"21",x2:"16",y1:"20",y2:"20",key:"14d8ph"}],["line",{x1:"12",x2:"3",y1:"20",y2:"20",key:"m0wm8r"}],["line",{x1:"14",x2:"14",y1:"2",y2:"6",key:"14e1ph"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"16",x2:"16",y1:"18",y2:"22",key:"1lctlv"}]]),Ii=Ur("loader",[["path",{d:"M12 2v4",key:"3427ic"}],["path",{d:"m16.2 7.8 2.9-2.9",key:"r700ao"}],["path",{d:"M18 12h4",key:"wj9ykh"}],["path",{d:"m16.2 16.2 2.9 2.9",key:"1bxg5t"}],["path",{d:"M12 18v4",key:"jadmvz"}],["path",{d:"m4.9 19.1 2.9-2.9",key:"bwix9q"}],["path",{d:"M2 12h4",key:"j09sii"}],["path",{d:"m4.9 4.9 2.9 2.9",key:"giyufr"}]]),Ui=Ur("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]),zi=Ur("tablet",[["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",ry:"2",key:"76otgf"}],["line",{x1:"12",x2:"12.01",y1:"18",y2:"18",key:"1dp563"}]]),Hi=Ur("smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]),Qi=Ur("layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]),Wi=Ur("mouse",[["rect",{x:"5",y:"2",width:"14",height:"20",rx:"7",key:"11ol66"}],["path",{d:"M12 6v4",key:"16clxf"}]]),Bi=Ur("file",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}]]),$i=Ur("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]),Yi=Ur("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]),Vi=Ur("earth",[["path",{d:"M21.54 15H17a2 2 0 0 0-2 2v4.54",key:"1djwo0"}],["path",{d:"M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17",key:"1tzkfa"}],["path",{d:"M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05",key:"14pb5j"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),Ki=Ur("funnel",[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]]),Gi=Ur("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]),Xi=Ur("webhook",[["path",{d:"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2",key:"q3hayz"}],["path",{d:"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06",key:"1go1hn"}],["path",{d:"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8",key:"qlwsc0"}]]),Ji=Ur("log-in",[["path",{d:"m10 17 5-5-5-5",key:"1bsop3"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}]]),Zi=Ur("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]),eo=Ur("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]),to=Ur("settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),no=Ur("megaphone",[["path",{d:"m3 11 18-5v12L3 14v-3z",key:"n962bs"}],["path",{d:"M11.6 16.8a3 3 0 1 1-5.8-1.6",key:"1yl0tm"}]]),ro=Ur("milestone",[["path",{d:"M12 13v8",key:"1l5pq0"}],["path",{d:"M12 3v3",key:"1n5kay"}],["path",{d:"M4 6a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h13a2 2 0 0 0 1.152-.365l3.424-2.317a1 1 0 0 0 0-1.635l-3.424-2.318A2 2 0 0 0 17 6z",key:"1btarq"}]]),io=Ur("radio",[["path",{d:"M16.247 7.761a6 6 0 0 1 0 8.478",key:"1fwjs5"}],["path",{d:"M19.075 4.933a10 10 0 0 1 0 14.134",key:"ehdyv1"}],["path",{d:"M4.925 19.067a10 10 0 0 1 0-14.134",key:"1q22gi"}],["path",{d:"M7.753 16.239a6 6 0 0 1 0-8.478",key:"r2q7qm"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]),oo=Ur("tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]),ao=Ur("map-pin",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]),so=Ur("building",[["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",ry:"2",key:"76otgf"}],["path",{d:"M9 22v-4h6v4",key:"r93iot"}],["path",{d:"M8 6h.01",key:"1dz90k"}],["path",{d:"M16 6h.01",key:"1x0f13"}],["path",{d:"M12 6h.01",key:"1vi96p"}],["path",{d:"M12 10h.01",key:"1nrarc"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M16 10h.01",key:"1m94wz"}],["path",{d:"M16 14h.01",key:"1gbofw"}],["path",{d:"M8 10h.01",key:"19clt8"}],["path",{d:"M8 14h.01",key:"6423bh"}]]),lo=Ur("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]),co=Ur("car",[["path",{d:"M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2",key:"5owen"}],["circle",{cx:"7",cy:"17",r:"2",key:"u2ysq9"}],["path",{d:"M9 17h6",key:"r8uit2"}],["circle",{cx:"17",cy:"17",r:"2",key:"axvx0g"}]]),uo=Ur("brain",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z",key:"ep3f8r"}],["path",{d:"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4",key:"1p4c4q"}],["path",{d:"M17.599 6.5a3 3 0 0 0 .399-1.375",key:"tmeiqw"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M19.938 10.5a4 4 0 0 1 .585.396",key:"1qfode"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M19.967 17.484A4 4 0 0 1 18 18",key:"159ez6"}]]),ho=Ur("cpu",[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]]),fo=Ur("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]),po=Ur("map-pinned",[["path",{d:"M18 8c0 3.613-3.869 7.429-5.393 8.795a1 1 0 0 1-1.214 0C9.87 15.429 6 11.613 6 8a6 6 0 0 1 12 0",key:"11u0oz"}],["circle",{cx:"12",cy:"8",r:"2",key:"1822b1"}],["path",{d:"M8.714 14h-3.71a1 1 0 0 0-.948.683l-2.004 6A1 1 0 0 0 3 22h18a1 1 0 0 0 .948-1.316l-2-6a1 1 0 0 0-.949-.684h-3.712",key:"q8zwxj"}]]),yo=Ur("grid-3x3",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]]),mo=Ur("line-squiggle",[["path",{d:"M7 3.5c5-2 7 2.5 3 4C1.5 10 2 15 5 16c5 2 9-10 14-7s.5 13.5-4 12c-5-2.5.5-11 6-2",key:"1lrphd"}]]),go=Ur("party-popper",[["path",{d:"M5.8 11.3 2 22l10.7-3.79",key:"gwxi1d"}],["path",{d:"M4 3h.01",key:"1vcuye"}],["path",{d:"M22 8h.01",key:"1mrtc2"}],["path",{d:"M15 2h.01",key:"1cjtqr"}],["path",{d:"M22 20h.01",key:"1mrys2"}],["path",{d:"m22 2-2.24.75a2.9 2.9 0 0 0-1.96 3.12c.1.86-.57 1.63-1.45 1.63h-.38c-.86 0-1.6.6-1.76 1.44L14 10",key:"hbicv8"}],["path",{d:"m22 13-.82-.33c-.86-.34-1.82.2-1.98 1.11c-.11.7-.72 1.22-1.43 1.22H17",key:"1i94pl"}],["path",{d:"m11 2 .33.82c.34.86-.2 1.82-1.11 1.98C9.52 4.9 9 5.52 9 6.23V7",key:"1cofks"}],["path",{d:"M11 13c1.93 1.93 2.83 4.17 2 5-.83.83-3.07-.07-5-2-1.93-1.93-2.83-4.17-2-5 .83-.83 3.07.07 5 2Z",key:"4kbmks"}]]),vo=Ur("sprout",[["path",{d:"M7 20h10",key:"e6iznv"}],["path",{d:"M10 20c5.5-2.5.8-6.4 3-10",key:"161w41"}],["path",{d:"M9.5 9.4c1.1.8 1.8 2.2 2.3 3.7-2 .4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2 2.8-.5 4.4 0 5.5.8z",key:"9gtqwd"}],["path",{d:"M14.1 6a7 7 0 0 0-1.1 4c1.9-.1 3.3-.6 4.3-1.4 1-1 1.6-2.3 1.7-4.6-2.7.1-4 1-4.9 2z",key:"bkxnd2"}]]);function bo(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=bo(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function wo(){for(var e,t,n=0,r="",i=arguments.length;n<i;n++)(e=arguments[n])&&(t=bo(e))&&(r&&(r+=" "),r+=t);return r}const xo={"black-light":"black-light",black:"black",green:"green",yellow:"yellow",red:"red",blue:"blue",gray:"gray-500",lightgray:"gray-300",white:"white",gold:"gold"},ko={"circle-open":Xr,bullet:Xr,dot:Xr,circle:Jr,period:Zr,check:ei,warning:Br,error:ti,times:ni,trophy:ri,frown:ii,hourglass:oi,scale:ai,"circle-check":si,"circle-times":li,"chevron-up":ci,"chevron-down":ui,"chevron-right":di,"chevron-left":hi,plus:fi,minus:pi,sync:yi,"sync-error":Wr,shortcode:mi,file:gi,"file-disabled":vi,"file-download":bi,calendar:wi,"calendar-error":xi,website:ki,help:Ei,copy:Ci,trash:Mi,visitor:Ti,visitors:Oi,"visitors-crowd":Oi,time:Si,pageviews:Ri,referrer:Di,sessions:Pi,bounces:qi,bounced_sessions:qi,bounce_rate:qi,winner:ri,live:_i,total:Ni,graph:Ai,conversion_rate:Li,goals:ji,conversions:ji,"goals-empty":Zr,filter:Fi,loading:Ii,desktop:Ui,tablet:zi,mobile:Hi,other:Qi,mouse:Wi,eye:Ri,page:Bi,hashtag:$i,sun:Yi,world:Vi,filters:Ki,referrers:Gi,hook:Xi,"log-in":Ji,"log-out":qi,alert:ti,search:Zi,bounce:qi,user:Ti,conversion:eo,parameters:to,campaign:no,source:ro,medium:io,term:oo,content:gi,location:ao,city:so,"operating-system":Ui,browser:lo,traffic:co,behavior:uo,technology:ho,"star-filled":fo,"star-outline":fo,"map-pinned":po,empty:Jr,grid:yo,"user-check":zr,"user-plus":Hr,"line-squiggle":mo,"shopping-cart":Qr,"party-popper":go,"error-octagon":Wr,"warning-triangle":Br,percent:$r,sprout:vo,zap:Yr,bulb:Vr,"right-arrow":Kr,ellipsis:Gr},Eo=(0,o.memo)((({style:e={},name:t="bullet",color:n="black",size:r=18,strokeWidth:i=1.5,tooltip:a,onClick:s,className:l})=>{const c=xo[n]||n,u=ko[t]||Xr,d={size:r,color:"currentColor",strokeWidth:i,style:e},h=(0,o.createElement)("div",{onClick:()=>{s&&s()},className:"flex items-center justify-center"},"bullet"!==t&&"dot"!==t||u!==Xr?"star-filled"===t&&u===fo?(0,o.createElement)(fo,{...d,className:c&&`fill-${c}`}):"loading"===t&&u===Ii?(0,o.createElement)(Ii,{...d,className:wo(l,"animate-spin [animation-duration:2s]",c&&`text-${c}`)}):(0,o.createElement)(u,{className:wo(l,c&&`text-${c}`),...d}):(0,o.createElement)(Xr,{...d,className:c&&`fill-${c}`}));return a?(0,o.createElement)(Nr,{content:a},h):h}));function Co(e){return Co="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Co(e)}function Mo(e,t){if(t.length<e)throw new TypeError(e+" argument"+(e>1?"s":"")+" required, but only "+t.length+" present")}function To(e){Mo(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"===Co(e)&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn((new Error).stack)),new Date(NaN))}function Oo(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function So(e){Mo(1,arguments);var t=To(e),n=t.getUTCDay(),r=(n<1?7:0)+n-1;return t.setUTCDate(t.getUTCDate()-r),t.setUTCHours(0,0,0,0),t}function Ro(e){Mo(1,arguments);var t=To(e),n=t.getUTCFullYear(),r=new Date(0);r.setUTCFullYear(n+1,0,4),r.setUTCHours(0,0,0,0);var i=So(r),o=new Date(0);o.setUTCFullYear(n,0,4),o.setUTCHours(0,0,0,0);var a=So(o);return t.getTime()>=i.getTime()?n+1:t.getTime()>=a.getTime()?n:n-1}var Do={};function Po(){return Do}function qo(e,t){var n,r,i,o,a,s,l,c;Mo(1,arguments);var u=Po(),d=Oo(null!==(n=null!==(r=null!==(i=null!==(o=null==t?void 0:t.weekStartsOn)&&void 0!==o?o:null==t||null===(a=t.locale)||void 0===a||null===(s=a.options)||void 0===s?void 0:s.weekStartsOn)&&void 0!==i?i:u.weekStartsOn)&&void 0!==r?r:null===(l=u.locale)||void 0===l||null===(c=l.options)||void 0===c?void 0:c.weekStartsOn)&&void 0!==n?n:0);if(!(d>=0&&d<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var h=To(e),f=h.getUTCDay(),p=(f<d?7:0)+f-d;return h.setUTCDate(h.getUTCDate()-p),h.setUTCHours(0,0,0,0),h}function _o(e,t){var n,r,i,o,a,s,l,c;Mo(1,arguments);var u=To(e),d=u.getUTCFullYear(),h=Po(),f=Oo(null!==(n=null!==(r=null!==(i=null!==(o=null==t?void 0:t.firstWeekContainsDate)&&void 0!==o?o:null==t||null===(a=t.locale)||void 0===a||null===(s=a.options)||void 0===s?void 0:s.firstWeekContainsDate)&&void 0!==i?i:h.firstWeekContainsDate)&&void 0!==r?r:null===(l=h.locale)||void 0===l||null===(c=l.options)||void 0===c?void 0:c.firstWeekContainsDate)&&void 0!==n?n:1);if(!(f>=1&&f<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var p=new Date(0);p.setUTCFullYear(d+1,0,f),p.setUTCHours(0,0,0,0);var y=qo(p,t),m=new Date(0);m.setUTCFullYear(d,0,f),m.setUTCHours(0,0,0,0);var g=qo(m,t);return u.getTime()>=y.getTime()?d+1:u.getTime()>=g.getTime()?d:d-1}function No(e,t){for(var n=e<0?"-":"",r=Math.abs(e).toString();r.length<t;)r="0"+r;return n+r}const Ao=function(e,t){var n=e.getUTCFullYear(),r=n>0?n:1-n;return No("yy"===t?r%100:r,t.length)},Lo=function(e,t){var n=e.getUTCMonth();return"M"===t?String(n+1):No(n+1,2)},jo=function(e,t){return No(e.getUTCDate(),t.length)},Fo=function(e,t){return No(e.getUTCHours()%12||12,t.length)},Io=function(e,t){return No(e.getUTCHours(),t.length)},Uo=function(e,t){return No(e.getUTCMinutes(),t.length)},zo=function(e,t){return No(e.getUTCSeconds(),t.length)},Ho=function(e,t){var n=t.length,r=e.getUTCMilliseconds();return No(Math.floor(r*Math.pow(10,n-3)),t.length)};var Qo={G:function(e,t,n){var r=e.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});default:return n.era(r,{width:"wide"})}},y:function(e,t,n){if("yo"===t){var r=e.getUTCFullYear(),i=r>0?r:1-r;return n.ordinalNumber(i,{unit:"year"})}return Ao(e,t)},Y:function(e,t,n,r){var i=_o(e,r),o=i>0?i:1-i;return"YY"===t?No(o%100,2):"Yo"===t?n.ordinalNumber(o,{unit:"year"}):No(o,t.length)},R:function(e,t){return No(Ro(e),t.length)},u:function(e,t){return No(e.getUTCFullYear(),t.length)},Q:function(e,t,n){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(r);case"QQ":return No(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(e,t,n){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(r);case"qq":return No(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(e,t,n){var r=e.getUTCMonth();switch(t){case"M":case"MM":return Lo(e,t);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(e,t,n){var r=e.getUTCMonth();switch(t){case"L":return String(r+1);case"LL":return No(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(e,t,n,r){var i=function(e,t){Mo(1,arguments);var n=To(e),r=qo(n,t).getTime()-function(e,t){var n,r,i,o,a,s,l,c;Mo(1,arguments);var u=Po(),d=Oo(null!==(n=null!==(r=null!==(i=null!==(o=null==t?void 0:t.firstWeekContainsDate)&&void 0!==o?o:null==t||null===(a=t.locale)||void 0===a||null===(s=a.options)||void 0===s?void 0:s.firstWeekContainsDate)&&void 0!==i?i:u.firstWeekContainsDate)&&void 0!==r?r:null===(l=u.locale)||void 0===l||null===(c=l.options)||void 0===c?void 0:c.firstWeekContainsDate)&&void 0!==n?n:1),h=_o(e,t),f=new Date(0);return f.setUTCFullYear(h,0,d),f.setUTCHours(0,0,0,0),qo(f,t)}(n,t).getTime();return Math.round(r/6048e5)+1}(e,r);return"wo"===t?n.ordinalNumber(i,{unit:"week"}):No(i,t.length)},I:function(e,t,n){var r=function(e){Mo(1,arguments);var t=To(e),n=So(t).getTime()-function(e){Mo(1,arguments);var t=Ro(e),n=new Date(0);return n.setUTCFullYear(t,0,4),n.setUTCHours(0,0,0,0),So(n)}(t).getTime();return Math.round(n/6048e5)+1}(e);return"Io"===t?n.ordinalNumber(r,{unit:"week"}):No(r,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getUTCDate(),{unit:"date"}):jo(e,t)},D:function(e,t,n){var r=function(e){Mo(1,arguments);var t=To(e),n=t.getTime();t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0);var r=n-t.getTime();return Math.floor(r/864e5)+1}(e);return"Do"===t?n.ordinalNumber(r,{unit:"dayOfYear"}):No(r,t.length)},E:function(e,t,n){var r=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(e,t,n,r){var i=e.getUTCDay(),o=(i-r.weekStartsOn+8)%7||7;switch(t){case"e":return String(o);case"ee":return No(o,2);case"eo":return n.ordinalNumber(o,{unit:"day"});case"eee":return n.day(i,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(i,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(i,{width:"short",context:"formatting"});default:return n.day(i,{width:"wide",context:"formatting"})}},c:function(e,t,n,r){var i=e.getUTCDay(),o=(i-r.weekStartsOn+8)%7||7;switch(t){case"c":return String(o);case"cc":return No(o,t.length);case"co":return n.ordinalNumber(o,{unit:"day"});case"ccc":return n.day(i,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(i,{width:"narrow",context:"standalone"});case"cccccc":return n.day(i,{width:"short",context:"standalone"});default:return n.day(i,{width:"wide",context:"standalone"})}},i:function(e,t,n){var r=e.getUTCDay(),i=0===r?7:r;switch(t){case"i":return String(i);case"ii":return No(i,t.length);case"io":return n.ordinalNumber(i,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(e,t,n){var r=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(e,t,n){var r,i=e.getUTCHours();switch(r=12===i?"noon":0===i?"midnight":i/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(e,t,n){var r,i=e.getUTCHours();switch(r=i>=17?"evening":i>=12?"afternoon":i>=4?"morning":"night",t){case"B":case"BB":case"BBB":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){var r=e.getUTCHours()%12;return 0===r&&(r=12),n.ordinalNumber(r,{unit:"hour"})}return Fo(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getUTCHours(),{unit:"hour"}):Io(e,t)},K:function(e,t,n){var r=e.getUTCHours()%12;return"Ko"===t?n.ordinalNumber(r,{unit:"hour"}):No(r,t.length)},k:function(e,t,n){var r=e.getUTCHours();return 0===r&&(r=24),"ko"===t?n.ordinalNumber(r,{unit:"hour"}):No(r,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):Uo(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):zo(e,t)},S:function(e,t){return Ho(e,t)},X:function(e,t,n,r){var i=(r._originalDate||e).getTimezoneOffset();if(0===i)return"Z";switch(t){case"X":return Bo(i);case"XXXX":case"XX":return $o(i);default:return $o(i,":")}},x:function(e,t,n,r){var i=(r._originalDate||e).getTimezoneOffset();switch(t){case"x":return Bo(i);case"xxxx":case"xx":return $o(i);default:return $o(i,":")}},O:function(e,t,n,r){var i=(r._originalDate||e).getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+Wo(i,":");default:return"GMT"+$o(i,":")}},z:function(e,t,n,r){var i=(r._originalDate||e).getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+Wo(i,":");default:return"GMT"+$o(i,":")}},t:function(e,t,n,r){var i=r._originalDate||e;return No(Math.floor(i.getTime()/1e3),t.length)},T:function(e,t,n,r){return No((r._originalDate||e).getTime(),t.length)}};function Wo(e,t){var n=e>0?"-":"+",r=Math.abs(e),i=Math.floor(r/60),o=r%60;if(0===o)return n+String(i);var a=t||"";return n+String(i)+a+No(o,2)}function Bo(e,t){return e%60==0?(e>0?"-":"+")+No(Math.abs(e)/60,2):$o(e,t)}function $o(e,t){var n=t||"",r=e>0?"-":"+",i=Math.abs(e);return r+No(Math.floor(i/60),2)+n+No(i%60,2)}const Yo=Qo;var Vo=function(e,t){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},Ko=function(e,t){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}};const Go={p:Ko,P:function(e,t){var n,r=e.match(/(P+)(p+)?/)||[],i=r[1],o=r[2];if(!o)return Vo(e,t);switch(i){case"P":n=t.dateTime({width:"short"});break;case"PP":n=t.dateTime({width:"medium"});break;case"PPP":n=t.dateTime({width:"long"});break;default:n=t.dateTime({width:"full"})}return n.replace("{{date}}",Vo(i,t)).replace("{{time}}",Ko(o,t))}};var Xo=["D","DD"],Jo=["YY","YYYY"];function Zo(e,t,n){if("YYYY"===e)throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("YY"===e)throw new RangeError("Use `yy` instead of `YY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("D"===e)throw new RangeError("Use `d` instead of `D` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("DD"===e)throw new RangeError("Use `dd` instead of `DD` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var ea={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function ta(e){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}const na={date:ta({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:ta({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:ta({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})};var ra={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function ia(e){return function(t,n){var r;if("formatting"===(null!=n&&n.context?String(n.context):"standalone")&&e.formattingValues){var i=e.defaultFormattingWidth||e.defaultWidth,o=null!=n&&n.width?String(n.width):i;r=e.formattingValues[o]||e.formattingValues[i]}else{var a=e.defaultWidth,s=null!=n&&n.width?String(n.width):e.defaultWidth;r=e.values[s]||e.values[a]}return r[e.argumentCallback?e.argumentCallback(t):t]}}const oa={ordinalNumber:function(e,t){var n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:ia({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:ia({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:ia({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:ia({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:ia({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})};function aa(e){return function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],o=t.match(i);if(!o)return null;var a,s=o[0],l=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(l)?function(e){for(var t=0;t<e.length;t++)if(e[t].test(s))return t}(l):function(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t].test(s))return t}(l);return a=e.valueCallback?e.valueCallback(c):c,{value:a=n.valueCallback?n.valueCallback(a):a,rest:t.slice(s.length)}}}var sa,la={ordinalNumber:(sa={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}},function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.match(sa.matchPattern);if(!n)return null;var r=n[0],i=e.match(sa.parsePattern);if(!i)return null;var o=sa.valueCallback?sa.valueCallback(i[0]):i[0];return{value:o=t.valueCallback?t.valueCallback(o):o,rest:e.slice(r.length)}}),era:aa({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:aa({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:aa({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:aa({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:aa({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})};const ca={code:"en-US",formatDistance:function(e,t,n){var r,i=ea[e];return r="string"==typeof i?i:1===t?i.one:i.other.replace("{{count}}",t.toString()),null!=n&&n.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r},formatLong:na,formatRelative:function(e,t,n,r){return ra[e]},localize:oa,match:la,options:{weekStartsOn:0,firstWeekContainsDate:1}};var ua=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,da=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,ha=/^'([^]*?)'?$/,fa=/''/g,pa=/[a-zA-Z]/;function ya(e,t,n){var r,i,o,a,s,l,c,u,d,h,f,p,y,m,g,v,b,w;Mo(2,arguments);var x=String(t),k=Po(),E=null!==(r=null!==(i=null==n?void 0:n.locale)&&void 0!==i?i:k.locale)&&void 0!==r?r:ca,C=Oo(null!==(o=null!==(a=null!==(s=null!==(l=null==n?void 0:n.firstWeekContainsDate)&&void 0!==l?l:null==n||null===(c=n.locale)||void 0===c||null===(u=c.options)||void 0===u?void 0:u.firstWeekContainsDate)&&void 0!==s?s:k.firstWeekContainsDate)&&void 0!==a?a:null===(d=k.locale)||void 0===d||null===(h=d.options)||void 0===h?void 0:h.firstWeekContainsDate)&&void 0!==o?o:1);if(!(C>=1&&C<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var M=Oo(null!==(f=null!==(p=null!==(y=null!==(m=null==n?void 0:n.weekStartsOn)&&void 0!==m?m:null==n||null===(g=n.locale)||void 0===g||null===(v=g.options)||void 0===v?void 0:v.weekStartsOn)&&void 0!==y?y:k.weekStartsOn)&&void 0!==p?p:null===(b=k.locale)||void 0===b||null===(w=b.options)||void 0===w?void 0:w.weekStartsOn)&&void 0!==f?f:0);if(!(M>=0&&M<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!E.localize)throw new RangeError("locale must contain localize property");if(!E.formatLong)throw new RangeError("locale must contain formatLong property");var T=To(e);if(!function(e){if(Mo(1,arguments),!function(e){return Mo(1,arguments),e instanceof Date||"object"===Co(e)&&"[object Date]"===Object.prototype.toString.call(e)}(e)&&"number"!=typeof e)return!1;var t=To(e);return!isNaN(Number(t))}(T))throw new RangeError("Invalid time value");var O=function(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()}(T),S=function(e,t){return Mo(2,arguments),function(e,t){Mo(2,arguments);var n=To(e).getTime(),r=Oo(t);return new Date(n+r)}(e,-Oo(t))}(T,O),R={firstWeekContainsDate:C,weekStartsOn:M,locale:E,_originalDate:T};return x.match(da).map((function(e){var t=e[0];return"p"===t||"P"===t?(0,Go[t])(e,E.formatLong):e})).join("").match(ua).map((function(r){if("''"===r)return"'";var i,o,a=r[0];if("'"===a)return(o=(i=r).match(ha))?o[1].replace(fa,"'"):i;var s,l=Yo[a];if(l)return null!=n&&n.useAdditionalWeekYearTokens||(s=r,-1===Jo.indexOf(s))||Zo(r,t,String(e)),null!=n&&n.useAdditionalDayOfYearTokens||!function(e){return-1!==Xo.indexOf(e)}(r)||Zo(r,t,String(e)),l(S,r,E.localize,R);if(a.match(pa))throw new RangeError("Format string contains an unescaped latin alphabet character `"+a+"`");return r})).join("")}const ma="undefined"==typeof window||"Deno"in window;function ga(){}function va(e){return"number"==typeof e&&e>=0&&e!==1/0}function ba(e,t){return e.filter((e=>!t.includes(e)))}function wa(e,t){return Math.max(e+(t||0)-Date.now(),0)}function xa(e,t,n){return Na(e)?"function"==typeof t?{...n,queryKey:e,queryFn:t}:{...t,queryKey:e}:e}function ka(e,t,n){return Na(e)?[{...t,queryKey:e},n]:[e||{},t]}function Ea(e,t){const{type:n="all",exact:r,fetchStatus:i,predicate:o,queryKey:a,stale:s}=e;if(Na(a))if(r){if(t.queryHash!==Ma(a,t.options))return!1}else if(!Oa(t.queryKey,a))return!1;if("all"!==n){const e=t.isActive();if("active"===n&&!e)return!1;if("inactive"===n&&e)return!1}return!("boolean"==typeof s&&t.isStale()!==s||void 0!==i&&i!==t.state.fetchStatus||o&&!o(t))}function Ca(e,t){const{exact:n,fetching:r,predicate:i,mutationKey:o}=e;if(Na(o)){if(!t.options.mutationKey)return!1;if(n){if(Ta(t.options.mutationKey)!==Ta(o))return!1}else if(!Oa(t.options.mutationKey,o))return!1}return!("boolean"==typeof r&&"loading"===t.state.status!==r||i&&!i(t))}function Ma(e,t){return((null==t?void 0:t.queryKeyHashFn)||Ta)(e)}function Ta(e){return JSON.stringify(e,((e,t)=>qa(t)?Object.keys(t).sort().reduce(((e,n)=>(e[n]=t[n],e)),{}):t))}function Oa(e,t){return Sa(e,t)}function Sa(e,t){return e===t||typeof e==typeof t&&!(!e||!t||"object"!=typeof e||"object"!=typeof t)&&!Object.keys(t).some((n=>!Sa(e[n],t[n])))}function Ra(e,t){if(e===t)return e;const n=Pa(e)&&Pa(t);if(n||qa(e)&&qa(t)){const r=n?e.length:Object.keys(e).length,i=n?t:Object.keys(t),o=i.length,a=n?[]:{};let s=0;for(let r=0;r<o;r++){const o=n?r:i[r];a[o]=Ra(e[o],t[o]),a[o]===e[o]&&s++}return r===o&&s===r?e:a}return t}function Da(e,t){if(e&&!t||t&&!e)return!1;for(const n in e)if(e[n]!==t[n])return!1;return!0}function Pa(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function qa(e){if(!_a(e))return!1;const t=e.constructor;if(void 0===t)return!0;const n=t.prototype;return!!_a(n)&&!!n.hasOwnProperty("isPrototypeOf")}function _a(e){return"[object Object]"===Object.prototype.toString.call(e)}function Na(e){return Array.isArray(e)}function Aa(e){return new Promise((t=>{setTimeout(t,e)}))}function La(e){Aa(0).then(e)}function ja(e,t,n){return null!=n.isDataEqual&&n.isDataEqual(e,t)?e:"function"==typeof n.structuralSharing?n.structuralSharing(e,t):!1!==n.structuralSharing?Ra(e,t):t}const Fa=function(){let e=[],t=0,n=e=>{e()},r=e=>{e()};const i=r=>{t?e.push(r):La((()=>{n(r)}))};return{batch:i=>{let o;t++;try{o=i()}finally{t--,t||(()=>{const t=e;e=[],t.length&&La((()=>{r((()=>{t.forEach((e=>{n(e)}))}))}))})()}return o},batchCalls:e=>(...t)=>{i((()=>{e(...t)}))},schedule:i,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e}}}();class Ia{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){const t={listener:e};return this.listeners.add(t),this.onSubscribe(),()=>{this.listeners.delete(t),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}}const Ua=new class extends Ia{constructor(){super(),this.setup=e=>{if(!ma&&window.addEventListener){const t=()=>e();return window.addEventListener("visibilitychange",t,!1),window.addEventListener("focus",t,!1),()=>{window.removeEventListener("visibilitychange",t),window.removeEventListener("focus",t)}}}}onSubscribe(){this.cleanup||this.setEventListener(this.setup)}onUnsubscribe(){var e;this.hasListeners()||(null==(e=this.cleanup)||e.call(this),this.cleanup=void 0)}setEventListener(e){var t;this.setup=e,null==(t=this.cleanup)||t.call(this),this.cleanup=e((e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()}))}setFocused(e){this.focused!==e&&(this.focused=e,this.onFocus())}onFocus(){this.listeners.forEach((({listener:e})=>{e()}))}isFocused(){return"boolean"==typeof this.focused?this.focused:"undefined"==typeof document||[void 0,"visible","prerender"].includes(document.visibilityState)}},za=["online","offline"],Ha=new class extends Ia{constructor(){super(),this.setup=e=>{if(!ma&&window.addEventListener){const t=()=>e();return za.forEach((e=>{window.addEventListener(e,t,!1)})),()=>{za.forEach((e=>{window.removeEventListener(e,t)}))}}}}onSubscribe(){this.cleanup||this.setEventListener(this.setup)}onUnsubscribe(){var e;this.hasListeners()||(null==(e=this.cleanup)||e.call(this),this.cleanup=void 0)}setEventListener(e){var t;this.setup=e,null==(t=this.cleanup)||t.call(this),this.cleanup=e((e=>{"boolean"==typeof e?this.setOnline(e):this.onOnline()}))}setOnline(e){this.online!==e&&(this.online=e,this.onOnline())}onOnline(){this.listeners.forEach((({listener:e})=>{e()}))}isOnline(){return"boolean"==typeof this.online?this.online:"undefined"==typeof navigator||void 0===navigator.onLine||navigator.onLine}};function Qa(e){return Math.min(1e3*2**e,3e4)}function Wa(e){return"online"!==(null!=e?e:"online")||Ha.isOnline()}class Ba{constructor(e){this.revert=null==e?void 0:e.revert,this.silent=null==e?void 0:e.silent}}function $a(e){return e instanceof Ba}function Ya(e){let t,n,r,i=!1,o=0,a=!1;const s=new Promise(((e,t)=>{n=e,r=t})),l=()=>!Ua.isFocused()||"always"!==e.networkMode&&!Ha.isOnline(),c=r=>{a||(a=!0,null==e.onSuccess||e.onSuccess(r),null==t||t(),n(r))},u=n=>{a||(a=!0,null==e.onError||e.onError(n),null==t||t(),r(n))},d=()=>new Promise((n=>{t=e=>{const t=a||!l();return t&&n(e),t},null==e.onPause||e.onPause()})).then((()=>{t=void 0,a||null==e.onContinue||e.onContinue()})),h=()=>{if(a)return;let t;try{t=e.fn()}catch(e){t=Promise.reject(e)}Promise.resolve(t).then(c).catch((t=>{var n,r;if(a)return;const s=null!=(n=e.retry)?n:3,c=null!=(r=e.retryDelay)?r:Qa,f="function"==typeof c?c(o,t):c,p=!0===s||"number"==typeof s&&o<s||"function"==typeof s&&s(o,t);!i&&p?(o++,null==e.onFail||e.onFail(o,t),Aa(f).then((()=>{if(l())return d()})).then((()=>{i?u(t):h()}))):u(t)}))};return Wa(e.networkMode)?h():d().then(h),{promise:s,cancel:t=>{a||(u(new Ba(t)),null==e.abort||e.abort())},continue:()=>(null==t?void 0:t())?s:Promise.resolve(),cancelRetry:()=>{i=!0},continueRetry:()=>{i=!1}}}class Va extends Ia{constructor(e,t){super(),this.client=e,this.options=t,this.trackedProps=new Set,this.selectError=null,this.bindMethods(),this.setOptions(t)}bindMethods(){this.remove=this.remove.bind(this),this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.currentQuery.addObserver(this),Ka(this.currentQuery,this.options)&&this.executeFetch(),this.updateTimers())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return Ga(this.currentQuery,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return Ga(this.currentQuery,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.clearStaleTimeout(),this.clearRefetchInterval(),this.currentQuery.removeObserver(this)}setOptions(e,t){const n=this.options,r=this.currentQuery;if(this.options=this.client.defaultQueryOptions(e),Da(n,this.options)||this.client.getQueryCache().notify({type:"observerOptionsUpdated",query:this.currentQuery,observer:this}),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled)throw new Error("Expected enabled to be a boolean");this.options.queryKey||(this.options.queryKey=n.queryKey),this.updateQuery();const i=this.hasListeners();i&&Xa(this.currentQuery,r,this.options,n)&&this.executeFetch(),this.updateResult(t),!i||this.currentQuery===r&&this.options.enabled===n.enabled&&this.options.staleTime===n.staleTime||this.updateStaleTimeout();const o=this.computeRefetchInterval();!i||this.currentQuery===r&&this.options.enabled===n.enabled&&o===this.currentRefetchInterval||this.updateRefetchInterval(o)}getOptimisticResult(e){const t=this.client.getQueryCache().build(this.client,e),n=this.createResult(t,e);return function(e,t,n){return!n.keepPreviousData&&(void 0!==n.placeholderData?t.isPlaceholderData:!Da(e.getCurrentResult(),t))}(this,n,e)&&(this.currentResult=n,this.currentResultOptions=this.options,this.currentResultState=this.currentQuery.state),n}getCurrentResult(){return this.currentResult}trackResult(e){const t={};return Object.keys(e).forEach((n=>{Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:()=>(this.trackedProps.add(n),e[n])})})),t}getCurrentQuery(){return this.currentQuery}remove(){this.client.getQueryCache().remove(this.currentQuery)}refetch({refetchPage:e,...t}={}){return this.fetch({...t,meta:{refetchPage:e}})}fetchOptimistic(e){const t=this.client.defaultQueryOptions(e),n=this.client.getQueryCache().build(this.client,t);return n.isFetchingOptimistic=!0,n.fetch().then((()=>this.createResult(n,t)))}fetch(e){var t;return this.executeFetch({...e,cancelRefetch:null==(t=e.cancelRefetch)||t}).then((()=>(this.updateResult(),this.currentResult)))}executeFetch(e){this.updateQuery();let t=this.currentQuery.fetch(this.options,e);return null!=e&&e.throwOnError||(t=t.catch(ga)),t}updateStaleTimeout(){if(this.clearStaleTimeout(),ma||this.currentResult.isStale||!va(this.options.staleTime))return;const e=wa(this.currentResult.dataUpdatedAt,this.options.staleTime)+1;this.staleTimeoutId=setTimeout((()=>{this.currentResult.isStale||this.updateResult()}),e)}computeRefetchInterval(){var e;return"function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.currentResult.data,this.currentQuery):null!=(e=this.options.refetchInterval)&&e}updateRefetchInterval(e){this.clearRefetchInterval(),this.currentRefetchInterval=e,!ma&&!1!==this.options.enabled&&va(this.currentRefetchInterval)&&0!==this.currentRefetchInterval&&(this.refetchIntervalId=setInterval((()=>{(this.options.refetchIntervalInBackground||Ua.isFocused())&&this.executeFetch()}),this.currentRefetchInterval))}updateTimers(){this.updateStaleTimeout(),this.updateRefetchInterval(this.computeRefetchInterval())}clearStaleTimeout(){this.staleTimeoutId&&(clearTimeout(this.staleTimeoutId),this.staleTimeoutId=void 0)}clearRefetchInterval(){this.refetchIntervalId&&(clearInterval(this.refetchIntervalId),this.refetchIntervalId=void 0)}createResult(e,t){const n=this.currentQuery,r=this.options,i=this.currentResult,o=this.currentResultState,a=this.currentResultOptions,s=e!==n,l=s?e.state:this.currentQueryInitialState,c=s?this.currentResult:this.previousQueryResult,{state:u}=e;let d,{dataUpdatedAt:h,error:f,errorUpdatedAt:p,fetchStatus:y,status:m}=u,g=!1,v=!1;if(t._optimisticResults){const i=this.hasListeners(),o=!i&&Ka(e,t),a=i&&Xa(e,n,t,r);(o||a)&&(y=Wa(e.options.networkMode)?"fetching":"paused",h||(m="loading")),"isRestoring"===t._optimisticResults&&(y="idle")}if(t.keepPreviousData&&!u.dataUpdatedAt&&null!=c&&c.isSuccess&&"error"!==m)d=c.data,h=c.dataUpdatedAt,m=c.status,g=!0;else if(t.select&&void 0!==u.data)if(i&&u.data===(null==o?void 0:o.data)&&t.select===this.selectFn)d=this.selectResult;else try{this.selectFn=t.select,d=t.select(u.data),d=ja(null==i?void 0:i.data,d,t),this.selectResult=d,this.selectError=null}catch(e){this.selectError=e}else d=u.data;if(void 0!==t.placeholderData&&void 0===d&&"loading"===m){let e;if(null!=i&&i.isPlaceholderData&&t.placeholderData===(null==a?void 0:a.placeholderData))e=i.data;else if(e="function"==typeof t.placeholderData?t.placeholderData():t.placeholderData,t.select&&void 0!==e)try{e=t.select(e),this.selectError=null}catch(e){this.selectError=e}void 0!==e&&(m="success",d=ja(null==i?void 0:i.data,e,t),v=!0)}this.selectError&&(f=this.selectError,d=this.selectResult,p=Date.now(),m="error");const b="fetching"===y,w="loading"===m,x="error"===m;return{status:m,fetchStatus:y,isLoading:w,isSuccess:"success"===m,isError:x,isInitialLoading:w&&b,data:d,dataUpdatedAt:h,error:f,errorUpdatedAt:p,failureCount:u.fetchFailureCount,failureReason:u.fetchFailureReason,errorUpdateCount:u.errorUpdateCount,isFetched:u.dataUpdateCount>0||u.errorUpdateCount>0,isFetchedAfterMount:u.dataUpdateCount>l.dataUpdateCount||u.errorUpdateCount>l.errorUpdateCount,isFetching:b,isRefetching:b&&!w,isLoadingError:x&&0===u.dataUpdatedAt,isPaused:"paused"===y,isPlaceholderData:v,isPreviousData:g,isRefetchError:x&&0!==u.dataUpdatedAt,isStale:Ja(e,t),refetch:this.refetch,remove:this.remove}}updateResult(e){const t=this.currentResult,n=this.createResult(this.currentQuery,this.options);if(this.currentResultState=this.currentQuery.state,this.currentResultOptions=this.options,Da(n,t))return;this.currentResult=n;const r={cache:!0};!1!==(null==e?void 0:e.listeners)&&(()=>{if(!t)return!0;const{notifyOnChangeProps:e}=this.options,n="function"==typeof e?e():e;if("all"===n||!n&&!this.trackedProps.size)return!0;const r=new Set(null!=n?n:this.trackedProps);return this.options.useErrorBoundary&&r.add("error"),Object.keys(this.currentResult).some((e=>{const n=e;return this.currentResult[n]!==t[n]&&r.has(n)}))})()&&(r.listeners=!0),this.notify({...r,...e})}updateQuery(){const e=this.client.getQueryCache().build(this.client,this.options);if(e===this.currentQuery)return;const t=this.currentQuery;this.currentQuery=e,this.currentQueryInitialState=e.state,this.previousQueryResult=this.currentResult,this.hasListeners()&&(null==t||t.removeObserver(this),e.addObserver(this))}onQueryUpdate(e){const t={};"success"===e.type?t.onSuccess=!e.manual:"error"!==e.type||$a(e.error)||(t.onError=!0),this.updateResult(t),this.hasListeners()&&this.updateTimers()}notify(e){Fa.batch((()=>{var t,n,r,i;if(e.onSuccess)null==(t=(n=this.options).onSuccess)||t.call(n,this.currentResult.data),null==(r=(i=this.options).onSettled)||r.call(i,this.currentResult.data,null);else if(e.onError){var o,a,s,l;null==(o=(a=this.options).onError)||o.call(a,this.currentResult.error),null==(s=(l=this.options).onSettled)||s.call(l,void 0,this.currentResult.error)}e.listeners&&this.listeners.forEach((({listener:e})=>{e(this.currentResult)})),e.cache&&this.client.getQueryCache().notify({query:this.currentQuery,type:"observerResultsUpdated"})}))}}function Ka(e,t){return function(e,t){return!(!1===t.enabled||e.state.dataUpdatedAt||"error"===e.state.status&&!1===t.retryOnMount)}(e,t)||e.state.dataUpdatedAt>0&&Ga(e,t,t.refetchOnMount)}function Ga(e,t,n){if(!1!==t.enabled){const r="function"==typeof n?n(e):n;return"always"===r||!1!==r&&Ja(e,t)}return!1}function Xa(e,t,n,r){return!1!==n.enabled&&(e!==t||!1===r.enabled)&&(!n.suspense||"error"!==e.state.status)&&Ja(e,n)}function Ja(e,t){return e.isStaleByTime(t.staleTime)}class Za extends Ia{constructor(e,t){super(),this.client=e,this.queries=[],this.result=[],this.observers=[],this.observersMap={},t&&this.setQueries(t)}onSubscribe(){1===this.listeners.size&&this.observers.forEach((e=>{e.subscribe((t=>{this.onUpdate(e,t)}))}))}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.observers.forEach((e=>{e.destroy()}))}setQueries(e,t){this.queries=e,Fa.batch((()=>{const e=this.observers,n=this.findMatchingObservers(this.queries);n.forEach((e=>e.observer.setOptions(e.defaultedQueryOptions,t)));const r=n.map((e=>e.observer)),i=Object.fromEntries(r.map((e=>[e.options.queryHash,e]))),o=r.map((e=>e.getCurrentResult())),a=r.some(((t,n)=>t!==e[n]));(e.length!==r.length||a)&&(this.observers=r,this.observersMap=i,this.result=o,this.hasListeners()&&(ba(e,r).forEach((e=>{e.destroy()})),ba(r,e).forEach((e=>{e.subscribe((t=>{this.onUpdate(e,t)}))})),this.notify()))}))}getCurrentResult(){return this.result}getQueries(){return this.observers.map((e=>e.getCurrentQuery()))}getObservers(){return this.observers}getOptimisticResult(e){return this.findMatchingObservers(e).map((e=>e.observer.getOptimisticResult(e.defaultedQueryOptions)))}findMatchingObservers(e){const t=this.observers,n=new Map(t.map((e=>[e.options.queryHash,e]))),r=e.map((e=>this.client.defaultQueryOptions(e))),i=r.flatMap((e=>{const t=n.get(e.queryHash);return null!=t?[{defaultedQueryOptions:e,observer:t}]:[]})),o=new Set(i.map((e=>e.defaultedQueryOptions.queryHash))),a=r.filter((e=>!o.has(e.queryHash))),s=new Set(i.map((e=>e.observer))),l=t.filter((e=>!s.has(e))),c=e=>{const t=this.client.defaultQueryOptions(e),n=this.observersMap[t.queryHash];return null!=n?n:new Va(this.client,t)},u=a.map(((e,t)=>{if(e.keepPreviousData){const n=l[t];if(void 0!==n)return{defaultedQueryOptions:e,observer:n}}return{defaultedQueryOptions:e,observer:c(e)}}));return i.concat(u).sort(((e,t)=>r.indexOf(e.defaultedQueryOptions)-r.indexOf(t.defaultedQueryOptions)))}onUpdate(e,t){const n=this.observers.indexOf(e);-1!==n&&(this.result=function(e,t,n){const r=e.slice(0);return r[t]=n,r}(this.result,n,t),this.notify())}notify(){Fa.batch((()=>{this.listeners.forEach((({listener:e})=>{e(this.result)}))}))}}const es=i(888).useSyncExternalStore,ts=o.createContext(void 0),ns=o.createContext(!1);function rs(e,t){return e||(t&&"undefined"!=typeof window?(window.ReactQueryClientContext||(window.ReactQueryClientContext=ts),window.ReactQueryClientContext):ts)}const is=({client:e,children:t,context:n,contextSharing:r=!1})=>{o.useEffect((()=>(e.mount(),()=>{e.unmount()})),[e]);const i=rs(n,r);return o.createElement(ns.Provider,{value:!n&&r},o.createElement(i.Provider,{value:e},t))},os=o.createContext(!1);os.Provider;const as=o.createContext(function(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}()),ss=(e,t)=>e.isLoading&&e.isFetching&&!t,ls=(e,t,n)=>(null==e?void 0:e.suspense)&&ss(t,n),cs=(e,t,n)=>t.fetchOptimistic(e).then((({data:t})=>{null==e.onSuccess||e.onSuccess(t),null==e.onSettled||e.onSettled(t,null)})).catch((t=>{n.clearReset(),null==e.onError||e.onError(t),null==e.onSettled||e.onSettled(void 0,t)}));function us(e){return 100<(e=parseInt(e))?"visitors-crowd":10<e?"visitors":"visitor"}const ds=({className:e,title:t,controls:n,children:r,footer:i})=>(0,o.createElement)("div",{className:"burst-grid-item "+e},(0,o.createElement)("div",{className:"burst-grid-item-header"},(0,o.createElement)("h3",{className:"burst-grid-title burst-h4"},t),(0,o.createElement)("div",{className:"burst-grid-item-controls"},n)),(0,o.createElement)("div",{className:"burst-grid-item-content"},r),(0,o.createElement)("div",{className:"burst-grid-item-footer"},i)),hs=()=>{const[e,t]=(0,s.useState)((()=>{if("undefined"!=typeof Storage){const e=localStorage.getItem("burst_widget_date_range");if(e&&0<e.length)return JSON.parse(e)}return"last-7-days"})());(0,s.useEffect)((()=>{burst_settings.json_translations.forEach((e=>{let t=JSON.parse(e),n=t.locale_data["burst-statistics"]||t.locale_data.messages;n[""].domain="burst-statistics",(0,l.setLocaleData)(n,"burst-statistics")}))}),[]);const n=T(["today","yesterday","last-7-days","last-30-days","last-90-days"]),r=n[e]?n[e].range():n["last-7-days"].range(),i=ya(r.startDate,"yyyy-MM-dd"),a=ya(r.endDate,"yyyy-MM-dd"),[c,u]=(0,s.useState)(5e3),d={live:{title:(0,l.__)("Live","burst-statistics"),icon:"visitor"},today:{title:(0,l.__)("Total","burst-statistics"),value:"-",icon:"visitor"},mostViewed:{title:"-",value:"-"},pageviews:{title:"-",value:"-"},referrer:{title:"-",value:"-"},timeOnPage:{title:"-",value:"-"}},h=function({queries:e,context:t}){const n=(({context:e}={})=>{const t=o.useContext(rs(e,o.useContext(ns)));if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t})({context:t}),r=o.useContext(os),i=o.useContext(as),a=o.useMemo((()=>e.map((e=>{const t=n.defaultQueryOptions(e);return t._optimisticResults=r?"isRestoring":"optimistic",t}))),[e,n,r]);a.forEach((e=>{var t;(t=e).suspense&&"number"!=typeof t.staleTime&&(t.staleTime=1e3),((e,t)=>{(e.suspense||e.useErrorBoundary)&&(t.isReset()||(e.retryOnMount=!1))})(e,i)})),(e=>{o.useEffect((()=>{e.clearReset()}),[e])})(i);const[s]=o.useState((()=>new Za(n,a))),l=s.getOptimisticResult(a);es(o.useCallback((e=>r?()=>{}:s.subscribe(Fa.batchCalls(e))),[s,r]),(()=>s.getCurrentResult()),(()=>s.getCurrentResult())),o.useEffect((()=>{s.setQueries(a,{listeners:!1})}),[a,s]);const c=l.some(((e,t)=>ls(a[t],e,r))),u=c?l.flatMap(((e,t)=>{const n=a[t],o=s.getObservers()[t];if(n&&o){if(ls(n,e,r))return cs(n,o,i);ss(e,r)&&cs(n,o,i)}return[]})):[];if(u.length>0)throw Promise.all(u);const d=s.getQueries(),h=l.find(((e,t)=>{var n,r;return(({result:e,errorResetBoundary:t,useErrorBoundary:n,query:r})=>{return e.isError&&!t.isReset()&&!e.isFetching&&(i=n,o=[e.error,r],"function"==typeof i?i(...o):!!i);var i,o})({result:e,errorResetBoundary:i,useErrorBoundary:null!=(n=null==(r=a[t])?void 0:r.useErrorBoundary)&&n,query:d[t]})}));if(null!=h&&h.error)throw h.error;return l}({queries:[{queryKey:["live-visitors"],queryFn:pe,refetchInterval:c,placeholderData:"-",onError:()=>{u(0)}},{queryKey:[e,i,a],queryFn:()=>(async e=>{const{startDate:t,endDate:n,range:r,filters:i}=e,{data:o}=await fe("today",t,n,r,{filters:i});return(e=>{for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(e[t].value="timeOnPage"===t?k(e[t].value):E(e[t].value));return e})(o)})({startDate:i,endDate:a}),refetchInterval:2*c,placeholderData:d,onError:()=>{u(0)}}]}),f=h[0].data;let p=h[1].data;h.some((e=>e.isError))&&(p=d);let y=us(f||0),m="loading";return p&&p.today&&(m=us(p.today.value?p.today.value:0)),(0,o.createElement)(ds,{className:"border-to-border burst-today",title:(0,l.__)("Today","burst-statistics"),controls:(0,o.createElement)(o.Fragment,null,h[0].isFetching?(0,o.createElement)(Eo,{name:"loading"}):null),footer:(0,o.createElement)(o.Fragment,null,(0,o.createElement)("a",{className:"burst-button burst-button--secondary",href:burst_settings.dashboard_url+"#/statistics"},(0,l.__)("View all statistics","burst-statistics")),(0,o.createElement)("select",{onChange:e=>{return n=e.target.value,r=n,"undefined"!=typeof Storage&&localStorage.setItem("burst_widget_date_range",JSON.stringify(r)),void t(n);var n,r},value:e},Object.keys(n).map((e=>(0,o.createElement)("option",{key:e,value:e},n[e].label)))))},(0,o.createElement)("div",{className:"burst-today"},(0,o.createElement)("div",{className:"burst-today-select"},(0,o.createElement)("div",{className:"burst-today-select-item"},(0,o.createElement)(Eo,{name:y,size:"23"}),(0,o.createElement)("h2",null,f),(0,o.createElement)("span",null,(0,o.createElement)(Eo,{name:"live",size:"12",color:"red"})," ",(0,l.__)("Live","burst-statistics"))),(0,o.createElement)("div",{className:"burst-today-select-item"},(0,o.createElement)(Eo,{name:m,size:"23"}),(0,o.createElement)("h2",null,p.today.value),(0,o.createElement)("span",null,(0,o.createElement)(Eo,{name:"total",size:"13",color:"green"})," ",(0,l.__)("Total","burst-statistics")))),(0,o.createElement)("div",{className:"burst-today-list"},(0,o.createElement)("div",{className:"burst-today-list-item"},(0,o.createElement)(Eo,{name:"winner"}),(0,o.createElement)("p",{className:"burst-today-list-item-text"},decodeURI(p.mostViewed.title)),(0,o.createElement)("p",{className:"burst-today-list-item-number"},p.mostViewed.value)),(0,o.createElement)("div",{className:"burst-today-list-item"},(0,o.createElement)(Eo,{name:"referrer"}),(0,o.createElement)("p",{className:"burst-today-list-item-text"},decodeURI(p.referrer.title)),(0,o.createElement)("p",{className:"burst-today-list-item-number"},p.referrer.value)),(0,o.createElement)("div",{className:"burst-today-list-item"},(0,o.createElement)(Eo,{name:"pageviews"}),(0,o.createElement)("p",{className:"burst-today-list-item-text"},p.pageviews.title),(0,o.createElement)("p",{className:"burst-today-list-item-number"},p.pageviews.value)),(0,o.createElement)("div",{className:"burst-today-list-item"},(0,o.createElement)(Eo,{name:"time"}),(0,o.createElement)("p",{className:"burst-today-list-item-text"},p.timeOnPage.title),(0,o.createElement)("p",{className:"burst-today-list-item-number"},p.timeOnPage.value)))))},fs=console;class ps{destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),va(this.cacheTime)&&(this.gcTimeout=setTimeout((()=>{this.optionalRemove()}),this.cacheTime))}updateCacheTime(e){this.cacheTime=Math.max(this.cacheTime||0,null!=e?e:ma?1/0:3e5)}clearGcTimeout(){this.gcTimeout&&(clearTimeout(this.gcTimeout),this.gcTimeout=void 0)}}class ys extends ps{constructor(e){super(),this.abortSignalConsumed=!1,this.defaultOptions=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.cache=e.cache,this.logger=e.logger||fs,this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.initialState=e.state||function(e){const t="function"==typeof e.initialData?e.initialData():e.initialData,n=void 0!==t,r=n?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?null!=r?r:Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"loading",fetchStatus:"idle"}}(this.options),this.state=this.initialState,this.scheduleGc()}get meta(){return this.options.meta}setOptions(e){this.options={...this.defaultOptions,...e},this.updateCacheTime(this.options.cacheTime)}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||this.cache.remove(this)}setData(e,t){const n=ja(this.state.data,e,this.options);return this.dispatch({data:n,type:"success",dataUpdatedAt:null==t?void 0:t.updatedAt,manual:null==t?void 0:t.manual}),n}setState(e,t){this.dispatch({type:"setState",state:e,setStateOptions:t})}cancel(e){var t;const n=this.promise;return null==(t=this.retryer)||t.cancel(e),n?n.then(ga).catch(ga):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.initialState)}isActive(){return this.observers.some((e=>!1!==e.options.enabled))}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return this.state.isInvalidated||!this.state.dataUpdatedAt||this.observers.some((e=>e.getCurrentResult().isStale))}isStaleByTime(e=0){return this.state.isInvalidated||!this.state.dataUpdatedAt||!wa(this.state.dataUpdatedAt,e)}onFocus(){var e;const t=this.observers.find((e=>e.shouldFetchOnWindowFocus()));t&&t.refetch({cancelRefetch:!1}),null==(e=this.retryer)||e.continue()}onOnline(){var e;const t=this.observers.find((e=>e.shouldFetchOnReconnect()));t&&t.refetch({cancelRefetch:!1}),null==(e=this.retryer)||e.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.cache.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter((t=>t!==e)),this.observers.length||(this.retryer&&(this.abortSignalConsumed?this.retryer.cancel({revert:!0}):this.retryer.cancelRetry()),this.scheduleGc()),this.cache.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.dispatch({type:"invalidate"})}fetch(e,t){var n,r;if("idle"!==this.state.fetchStatus)if(this.state.dataUpdatedAt&&null!=t&&t.cancelRefetch)this.cancel({silent:!0});else if(this.promise){var i;return null==(i=this.retryer)||i.continueRetry(),this.promise}if(e&&this.setOptions(e),!this.options.queryFn){const e=this.observers.find((e=>e.options.queryFn));e&&this.setOptions(e.options)}const o=function(){if("function"==typeof AbortController)return new AbortController}(),a={queryKey:this.queryKey,pageParam:void 0,meta:this.meta},s=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>{if(o)return this.abortSignalConsumed=!0,o.signal}})};s(a);const l={fetchOptions:t,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:()=>this.options.queryFn?(this.abortSignalConsumed=!1,this.options.queryFn(a)):Promise.reject("Missing queryFn for queryKey '"+this.options.queryHash+"'")};var c;s(l),null==(n=this.options.behavior)||n.onFetch(l),this.revertState=this.state,("idle"===this.state.fetchStatus||this.state.fetchMeta!==(null==(r=l.fetchOptions)?void 0:r.meta))&&this.dispatch({type:"fetch",meta:null==(c=l.fetchOptions)?void 0:c.meta});const u=e=>{var t,n,r,i;$a(e)&&e.silent||this.dispatch({type:"error",error:e}),$a(e)||(null==(t=(n=this.cache.config).onError)||t.call(n,e,this),null==(r=(i=this.cache.config).onSettled)||r.call(i,this.state.data,e,this)),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return this.retryer=Ya({fn:l.fetchFn,abort:null==o?void 0:o.abort.bind(o),onSuccess:e=>{var t,n,r,i;void 0!==e?(this.setData(e),null==(t=(n=this.cache.config).onSuccess)||t.call(n,e,this),null==(r=(i=this.cache.config).onSettled)||r.call(i,e,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1):u(new Error(this.queryHash+" data is undefined"))},onError:u,onFail:(e,t)=>{this.dispatch({type:"failed",failureCount:e,error:t})},onPause:()=>{this.dispatch({type:"pause"})},onContinue:()=>{this.dispatch({type:"continue"})},retry:l.options.retry,retryDelay:l.options.retryDelay,networkMode:l.options.networkMode}),this.promise=this.retryer.promise,this.promise}dispatch(e){this.state=(t=>{var n,r;switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null!=(n=e.meta)?n:null,fetchStatus:Wa(this.options.networkMode)?"fetching":"paused",...!t.dataUpdatedAt&&{error:null,status:"loading"}};case"success":return{...t,data:e.data,dataUpdateCount:t.dataUpdateCount+1,dataUpdatedAt:null!=(r=e.dataUpdatedAt)?r:Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const i=e.error;return $a(i)&&i.revert&&this.revertState?{...this.revertState,fetchStatus:"idle"}:{...t,error:i,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:i,fetchStatus:"idle",status:"error"};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}})(this.state),Fa.batch((()=>{this.observers.forEach((t=>{t.onQueryUpdate(e)})),this.cache.notify({query:this,type:"updated",action:e})}))}}class ms extends Ia{constructor(e){super(),this.config=e||{},this.queries=[],this.queriesMap={}}build(e,t,n){var r;const i=t.queryKey,o=null!=(r=t.queryHash)?r:Ma(i,t);let a=this.get(o);return a||(a=new ys({cache:this,logger:e.getLogger(),queryKey:i,queryHash:o,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(i)}),this.add(a)),a}add(e){this.queriesMap[e.queryHash]||(this.queriesMap[e.queryHash]=e,this.queries.push(e),this.notify({type:"added",query:e}))}remove(e){const t=this.queriesMap[e.queryHash];t&&(e.destroy(),this.queries=this.queries.filter((t=>t!==e)),t===e&&delete this.queriesMap[e.queryHash],this.notify({type:"removed",query:e}))}clear(){Fa.batch((()=>{this.queries.forEach((e=>{this.remove(e)}))}))}get(e){return this.queriesMap[e]}getAll(){return this.queries}find(e,t){const[n]=ka(e,t);return void 0===n.exact&&(n.exact=!0),this.queries.find((e=>Ea(n,e)))}findAll(e,t){const[n]=ka(e,t);return Object.keys(n).length>0?this.queries.filter((e=>Ea(n,e))):this.queries}notify(e){Fa.batch((()=>{this.listeners.forEach((({listener:t})=>{t(e)}))}))}onFocus(){Fa.batch((()=>{this.queries.forEach((e=>{e.onFocus()}))}))}onOnline(){Fa.batch((()=>{this.queries.forEach((e=>{e.onOnline()}))}))}}class gs extends ps{constructor(e){super(),this.defaultOptions=e.defaultOptions,this.mutationId=e.mutationId,this.mutationCache=e.mutationCache,this.logger=e.logger||fs,this.observers=[],this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0},this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options={...this.defaultOptions,...e},this.updateCacheTime(this.options.cacheTime)}get meta(){return this.options.meta}setState(e){this.dispatch({type:"setState",state:e})}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.mutationCache.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.observers=this.observers.filter((t=>t!==e)),this.scheduleGc(),this.mutationCache.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.observers.length||("loading"===this.state.status?this.scheduleGc():this.mutationCache.remove(this))}continue(){var e,t;return null!=(e=null==(t=this.retryer)?void 0:t.continue())?e:this.execute()}async execute(){const e=()=>{var e;return this.retryer=Ya({fn:()=>this.options.mutationFn?this.options.mutationFn(this.state.variables):Promise.reject("No mutationFn found"),onFail:(e,t)=>{this.dispatch({type:"failed",failureCount:e,error:t})},onPause:()=>{this.dispatch({type:"pause"})},onContinue:()=>{this.dispatch({type:"continue"})},retry:null!=(e=this.options.retry)?e:0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode}),this.retryer.promise},t="loading"===this.state.status;try{var n,r,i,o,a,s,l,c;if(!t){var u,d,h,f;this.dispatch({type:"loading",variables:this.options.variables}),await(null==(u=(d=this.mutationCache.config).onMutate)?void 0:u.call(d,this.state.variables,this));const e=await(null==(h=(f=this.options).onMutate)?void 0:h.call(f,this.state.variables));e!==this.state.context&&this.dispatch({type:"loading",context:e,variables:this.state.variables})}const p=await e();return await(null==(n=(r=this.mutationCache.config).onSuccess)?void 0:n.call(r,p,this.state.variables,this.state.context,this)),await(null==(i=(o=this.options).onSuccess)?void 0:i.call(o,p,this.state.variables,this.state.context)),await(null==(a=(s=this.mutationCache.config).onSettled)?void 0:a.call(s,p,null,this.state.variables,this.state.context,this)),await(null==(l=(c=this.options).onSettled)?void 0:l.call(c,p,null,this.state.variables,this.state.context)),this.dispatch({type:"success",data:p}),p}catch(e){try{var p,y,m,g,v,b,w,x;throw await(null==(p=(y=this.mutationCache.config).onError)?void 0:p.call(y,e,this.state.variables,this.state.context,this)),await(null==(m=(g=this.options).onError)?void 0:m.call(g,e,this.state.variables,this.state.context)),await(null==(v=(b=this.mutationCache.config).onSettled)?void 0:v.call(b,void 0,e,this.state.variables,this.state.context,this)),await(null==(w=(x=this.options).onSettled)?void 0:w.call(x,void 0,e,this.state.variables,this.state.context)),e}finally{this.dispatch({type:"error",error:e})}}}dispatch(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"loading":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:!Wa(this.options.networkMode),status:"loading",variables:e.variables};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"};case"setState":return{...t,...e.state}}})(this.state),Fa.batch((()=>{this.observers.forEach((t=>{t.onMutationUpdate(e)})),this.mutationCache.notify({mutation:this,type:"updated",action:e})}))}}class vs extends Ia{constructor(e){super(),this.config=e||{},this.mutations=[],this.mutationId=0}build(e,t,n){const r=new gs({mutationCache:this,logger:e.getLogger(),mutationId:++this.mutationId,options:e.defaultMutationOptions(t),state:n,defaultOptions:t.mutationKey?e.getMutationDefaults(t.mutationKey):void 0});return this.add(r),r}add(e){this.mutations.push(e),this.notify({type:"added",mutation:e})}remove(e){this.mutations=this.mutations.filter((t=>t!==e)),this.notify({type:"removed",mutation:e})}clear(){Fa.batch((()=>{this.mutations.forEach((e=>{this.remove(e)}))}))}getAll(){return this.mutations}find(e){return void 0===e.exact&&(e.exact=!0),this.mutations.find((t=>Ca(e,t)))}findAll(e){return this.mutations.filter((t=>Ca(e,t)))}notify(e){Fa.batch((()=>{this.listeners.forEach((({listener:t})=>{t(e)}))}))}resumePausedMutations(){var e;return this.resuming=(null!=(e=this.resuming)?e:Promise.resolve()).then((()=>{const e=this.mutations.filter((e=>e.state.isPaused));return Fa.batch((()=>e.reduce(((e,t)=>e.then((()=>t.continue().catch(ga)))),Promise.resolve())))})).then((()=>{this.resuming=void 0})),this.resuming}}function bs(e,t){return null==e.getNextPageParam?void 0:e.getNextPageParam(t[t.length-1],t)}var ws=i(338);const xs=new ms({onError:e=>{}});let ks={defaultOptions:{queries:{staleTime:36e5,refetchOnWindowFocus:!1,retry:!1}}};ks={...ks,queryCache:xs};const Es=new class{constructor(e={}){this.queryCache=e.queryCache||new ms,this.mutationCache=e.mutationCache||new vs,this.logger=e.logger||fs,this.defaultOptions=e.defaultOptions||{},this.queryDefaults=[],this.mutationDefaults=[],this.mountCount=0}mount(){this.mountCount++,1===this.mountCount&&(this.unsubscribeFocus=Ua.subscribe((()=>{Ua.isFocused()&&(this.resumePausedMutations(),this.queryCache.onFocus())})),this.unsubscribeOnline=Ha.subscribe((()=>{Ha.isOnline()&&(this.resumePausedMutations(),this.queryCache.onOnline())})))}unmount(){var e,t;this.mountCount--,0===this.mountCount&&(null==(e=this.unsubscribeFocus)||e.call(this),this.unsubscribeFocus=void 0,null==(t=this.unsubscribeOnline)||t.call(this),this.unsubscribeOnline=void 0)}isFetching(e,t){const[n]=ka(e,t);return n.fetchStatus="fetching",this.queryCache.findAll(n).length}isMutating(e){return this.mutationCache.findAll({...e,fetching:!0}).length}getQueryData(e,t){var n;return null==(n=this.queryCache.find(e,t))?void 0:n.state.data}ensureQueryData(e,t,n){const r=xa(e,t,n),i=this.getQueryData(r.queryKey);return i?Promise.resolve(i):this.fetchQuery(r)}getQueriesData(e){return this.getQueryCache().findAll(e).map((({queryKey:e,state:t})=>[e,t.data]))}setQueryData(e,t,n){const r=this.queryCache.find(e),i=function(e,t){return"function"==typeof e?e(t):e}(t,null==r?void 0:r.state.data);if(void 0===i)return;const o=xa(e),a=this.defaultQueryOptions(o);return this.queryCache.build(this,a).setData(i,{...n,manual:!0})}setQueriesData(e,t,n){return Fa.batch((()=>this.getQueryCache().findAll(e).map((({queryKey:e})=>[e,this.setQueryData(e,t,n)]))))}getQueryState(e,t){var n;return null==(n=this.queryCache.find(e,t))?void 0:n.state}removeQueries(e,t){const[n]=ka(e,t),r=this.queryCache;Fa.batch((()=>{r.findAll(n).forEach((e=>{r.remove(e)}))}))}resetQueries(e,t,n){const[r,i]=ka(e,t,n),o=this.queryCache,a={type:"active",...r};return Fa.batch((()=>(o.findAll(r).forEach((e=>{e.reset()})),this.refetchQueries(a,i))))}cancelQueries(e,t,n){const[r,i={}]=ka(e,t,n);void 0===i.revert&&(i.revert=!0);const o=Fa.batch((()=>this.queryCache.findAll(r).map((e=>e.cancel(i)))));return Promise.all(o).then(ga).catch(ga)}invalidateQueries(e,t,n){const[r,i]=ka(e,t,n);return Fa.batch((()=>{var e,t;if(this.queryCache.findAll(r).forEach((e=>{e.invalidate()})),"none"===r.refetchType)return Promise.resolve();const n={...r,type:null!=(e=null!=(t=r.refetchType)?t:r.type)?e:"active"};return this.refetchQueries(n,i)}))}refetchQueries(e,t,n){const[r,i]=ka(e,t,n),o=Fa.batch((()=>this.queryCache.findAll(r).filter((e=>!e.isDisabled())).map((e=>{var t;return e.fetch(void 0,{...i,cancelRefetch:null==(t=null==i?void 0:i.cancelRefetch)||t,meta:{refetchPage:r.refetchPage}})}))));let a=Promise.all(o).then(ga);return null!=i&&i.throwOnError||(a=a.catch(ga)),a}fetchQuery(e,t,n){const r=xa(e,t,n),i=this.defaultQueryOptions(r);void 0===i.retry&&(i.retry=!1);const o=this.queryCache.build(this,i);return o.isStaleByTime(i.staleTime)?o.fetch(i):Promise.resolve(o.state.data)}prefetchQuery(e,t,n){return this.fetchQuery(e,t,n).then(ga).catch(ga)}fetchInfiniteQuery(e,t,n){const r=xa(e,t,n);return r.behavior={onFetch:e=>{e.fetchFn=()=>{var t,n,r,i,o,a;const s=null==(t=e.fetchOptions)||null==(n=t.meta)?void 0:n.refetchPage,l=null==(r=e.fetchOptions)||null==(i=r.meta)?void 0:i.fetchMore,c=null==l?void 0:l.pageParam,u="forward"===(null==l?void 0:l.direction),d="backward"===(null==l?void 0:l.direction),h=(null==(o=e.state.data)?void 0:o.pages)||[],f=(null==(a=e.state.data)?void 0:a.pageParams)||[];let p=f,y=!1;const m=e.options.queryFn||(()=>Promise.reject("Missing queryFn for queryKey '"+e.options.queryHash+"'")),g=(e,t,n,r)=>(p=r?[t,...p]:[...p,t],r?[n,...e]:[...e,n]),v=(t,n,r,i)=>{if(y)return Promise.reject("Cancelled");if(void 0===r&&!n&&t.length)return Promise.resolve(t);const o={queryKey:e.queryKey,pageParam:r,meta:e.options.meta};var a;a=o,Object.defineProperty(a,"signal",{enumerable:!0,get:()=>{var t,n;return null!=(t=e.signal)&&t.aborted?y=!0:null==(n=e.signal)||n.addEventListener("abort",(()=>{y=!0})),e.signal}});const s=m(o);return Promise.resolve(s).then((e=>g(t,r,e,i)))};let b;if(h.length)if(u){const t=void 0!==c,n=t?c:bs(e.options,h);b=v(h,t,n)}else if(d){const t=void 0!==c,n=t?c:(w=e.options,x=h,null==w.getPreviousPageParam?void 0:w.getPreviousPageParam(x[0],x));b=v(h,t,n,!0)}else{p=[];const t=void 0===e.options.getNextPageParam;b=s&&h[0]&&!s(h[0],0,h)?Promise.resolve(g([],f[0],h[0])):v([],t,f[0]);for(let n=1;n<h.length;n++)b=b.then((r=>{if(!s||!h[n]||s(h[n],n,h)){const i=t?f[n]:bs(e.options,r);return v(r,t,i)}return Promise.resolve(g(r,f[n],h[n]))}))}else b=v([]);var w,x;return b.then((e=>({pages:e,pageParams:p})))}}},this.fetchQuery(r)}prefetchInfiniteQuery(e,t,n){return this.fetchInfiniteQuery(e,t,n).then(ga).catch(ga)}resumePausedMutations(){return this.mutationCache.resumePausedMutations()}getQueryCache(){return this.queryCache}getMutationCache(){return this.mutationCache}getLogger(){return this.logger}getDefaultOptions(){return this.defaultOptions}setDefaultOptions(e){this.defaultOptions=e}setQueryDefaults(e,t){const n=this.queryDefaults.find((t=>Ta(e)===Ta(t.queryKey)));n?n.defaultOptions=t:this.queryDefaults.push({queryKey:e,defaultOptions:t})}getQueryDefaults(e){if(!e)return;const t=this.queryDefaults.find((t=>Oa(e,t.queryKey)));return null==t?void 0:t.defaultOptions}setMutationDefaults(e,t){const n=this.mutationDefaults.find((t=>Ta(e)===Ta(t.mutationKey)));n?n.defaultOptions=t:this.mutationDefaults.push({mutationKey:e,defaultOptions:t})}getMutationDefaults(e){if(!e)return;const t=this.mutationDefaults.find((t=>Oa(e,t.mutationKey)));return null==t?void 0:t.defaultOptions}defaultQueryOptions(e){if(null!=e&&e._defaulted)return e;const t={...this.defaultOptions.queries,...this.getQueryDefaults(null==e?void 0:e.queryKey),...e,_defaulted:!0};return!t.queryHash&&t.queryKey&&(t.queryHash=Ma(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.useErrorBoundary&&(t.useErrorBoundary=!!t.suspense),t}defaultMutationOptions(e){return null!=e&&e._defaulted?e:{...this.defaultOptions.mutations,...this.getMutationDefaults(null==e?void 0:e.mutationKey),...e,_defaulted:!0}}clear(){this.queryCache.clear(),this.mutationCache.clear()}}(ks);document.addEventListener("DOMContentLoaded",(()=>{const e=document.getElementById("burst-widget-root");e&&(0,ws.H)(e).render((0,o.createElement)(is,{client:Es},(0,o.createElement)(hs,null)))}))})();
  • burst-statistics/trunk/includes/Admin/Statistics/class-goal-statistics.php

    r3377993 r3406692  
    272272            require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    273273            global $wpdb;
     274
     275            $table_name = $wpdb->prefix . 'burst_goal_statistics';
     276
     277            // Remove duplicates before dbDelta adds UNIQUE constraint.
     278            // Keep only the row with the lowest ID for each (goal_id, statistic_id) pair.
     279            if ( $this->table_exists( 'burst_goal_statistics' ) ) {
     280                $wpdb->query(
     281                    "DELETE gs1 FROM {$table_name} gs1
     282                INNER JOIN {$table_name} gs2
     283                WHERE gs1.goal_id = gs2.goal_id
     284                AND gs1.statistic_id = gs2.statistic_id
     285                AND gs1.ID > gs2.ID"
     286                );
     287            }
     288
     289            global $wpdb;
    274290            $charset_collate = $wpdb->get_charset_collate();
    275             // Create table without indexes first.
    276             $table_name = $wpdb->prefix . 'burst_goal_statistics';
    277             $sql        = "CREATE TABLE $table_name (
    278         `ID` int NOT NULL AUTO_INCREMENT,
    279         `statistic_id` int NOT NULL,
    280         `goal_id` int NOT NULL,
    281         PRIMARY KEY (ID)
    282     ) $charset_collate;";
     291            $table_name      = $wpdb->prefix . 'burst_goal_statistics';
     292            $sql             = "CREATE TABLE $table_name (
     293                `ID` int NOT NULL AUTO_INCREMENT,
     294                `statistic_id` int NOT NULL,
     295                `goal_id` int NOT NULL,
     296                PRIMARY KEY (ID),
     297                UNIQUE KEY goal_statistic_unique (goal_id, statistic_id)
     298            ) $charset_collate;";
    283299
    284300            dbDelta( $sql );
  • burst-statistics/trunk/includes/Admin/Statistics/class-statistics.php

    r3392751 r3406692  
    12381238        foreach ( $filters as $filter_name => $filter_value ) {
    12391239            if ( in_array( $filter_name, $mappable, true ) ) {
    1240                 $filters[ $filter_name ] = \Burst\burst_loader()->frontend->tracking->get_lookup_table_id_cached( $filter_name, $filter_value );
     1240                $filters[ $filter_name ] = \Burst\burst_loader()->frontend->tracking->get_lookup_table_id( $filter_name, $filter_value );
    12411241            }
    12421242        }
     
    15901590        `page_type` varchar(191) NOT NULL,
    15911591        `time` int NOT NULL,
    1592         `uid` varchar(255) NOT NULL,
     1592        `uid` varchar(64) NOT NULL,
    15931593        `time_on_page` int,
    15941594        `parameters` TEXT NOT NULL,
     
    16291629        PRIMARY KEY (ID)
    16301630    ) $charset_collate;",
    1631             'burst_summary'          => "CREATE TABLE {$wpdb->prefix}burst_summary (
     1631            'burst_goals'            => "CREATE TABLE {$wpdb->prefix}burst_goals (
    16321632        `ID` int NOT NULL AUTO_INCREMENT,
    1633         `date` DATE NOT NULL,
    1634         `page_url` varchar(191) NOT NULL,
    1635         `sessions` int NOT NULL,
    1636         `visitors` int NOT NULL,
    1637         `first_time_visitors` int NOT NULL,
    1638         `pageviews` int NOT NULL,
    1639         `bounces` int NOT NULL,
    1640         `avg_time_on_page` int NOT NULL,
    1641         `completed` tinyint NOT NULL,
     1633        `title` varchar(255) NOT NULL,
     1634        `type` varchar(30) NOT NULL,
     1635        `status` varchar(30) NOT NULL,
     1636        `url` varchar(255) NOT NULL,
     1637        `conversion_metric` varchar(255) NOT NULL,
     1638        `date_created` int NOT NULL,
     1639        `server_side` int NOT NULL,
     1640        `date_start` int NOT NULL,
     1641        `date_end` int NOT NULL,
     1642        `selector` varchar(255) NOT NULL,
     1643        `hook` varchar(255) NOT NULL,
    16421644        PRIMARY KEY (ID)
     1645    ) $charset_collate;",
     1646            'burst_known_uids'       => "CREATE TABLE {$wpdb->prefix}burst_known_uids (
     1647            `uid` varchar(64) NOT NULL,
     1648        `first_seen` INT UNSIGNED NOT NULL,
     1649        `last_seen` INT UNSIGNED NOT NULL,
     1650        PRIMARY KEY (uid)
    16431651    ) $charset_collate;",
    16441652        ];
     
    16601668            [ 'uid', 'time' ],
    16611669            [ 'page_id', 'page_type' ],
     1670            [ 'first_time_visit', 'time', 'uid' ],
    16621671        ];
    16631672
     
    16681677
    16691678        $indexes = [
    1670             [ 'date', 'page_url' ],
    1671             [ 'page_url', 'date' ],
    1672             [ 'date' ],
     1679            [ 'last_seen' ],
     1680            [ 'uid', 'first_seen' ],
    16731681        ];
    16741682
    1675         $table_name = $wpdb->prefix . 'burst_summary';
     1683        $table_name = $wpdb->prefix . 'burst_known_uids';
     1684        foreach ( $indexes as $index ) {
     1685            $this->add_index( $table_name, $index );
     1686        }
     1687
     1688        // server_side property to be removed after 2.2 update.
     1689        $table_name = $wpdb->prefix . 'burst_goals';
     1690        $indexes    = [
     1691            [ 'status' ],
     1692        ];
     1693
    16761694        foreach ( $indexes as $index ) {
    16771695            $this->add_index( $table_name, $index );
     
    16861704     */
    16871705    public function get_sql_table( Query_Data $qd ): string {
    1688 
    1689         // Check if we can use summary tables.
    1690         $raw = ! empty( $qd->date_modifiers ) && strpos( $qd->date_modifiers['sql_date_format'] ?? '', '%H' ) !== false;
    1691         if ( ! $raw && $this->can_use_summary_tables( $qd ) ) {
    1692             return $this->get_summary_sql( $qd );
    1693         }
    1694 
    16951706        return $this->build_raw_sql( $qd );
    1696     }
    1697 
    1698     /**
    1699      * Check if we can use summary tables for this query.
    1700      */
    1701     private function can_use_summary_tables( Query_Data $data ): bool {
    1702         return ! empty( $data->custom_select ) === false &&
    1703                 empty( $data->subquery ) &&
    1704                 empty( $data->union ) &&
    1705                 empty( $data->window ) &&
    1706                 \Burst\burst_loader()->admin->summary->upgrade_completed() &&
    1707                 \Burst\burst_loader()->admin->summary->is_summary_data(
    1708                     $data->select,
    1709                     $data->filters,
    1710                     $data->date_start,
    1711                     $data->date_end
    1712                 );
    17131707    }
    17141708
     
    21502144
    21512145    /**
    2152      * Get summary SQL using the enhanced args format
    2153      */
    2154     private function get_summary_sql( Query_Data $data ): string {
    2155         return \Burst\burst_loader()->admin->summary->summary_sql(
    2156             $data->date_start,
    2157             $data->date_end,
    2158             $data->select,
    2159             $data->group_by,
    2160             $data->order_by,
    2161             $data->limit,
    2162             $data->date_modifiers
    2163         );
    2164     }
    2165 
    2166     /**
    21672146     * Base data retrieval method that handles common patterns.
    21682147     *
  • burst-statistics/trunk/includes/Admin/class-admin.php

    r3392751 r3406692  
    1616use Burst\Admin\Statistics\Goal_Statistics;
    1717use Burst\Admin\Statistics\Statistics;
    18 use Burst\Admin\Statistics\Summary;
    1918use Burst\Frontend\Goals\Goal;
    2019use Burst\Frontend\Goals\Goals;
     
    3332    public Tasks $tasks;
    3433    public Statistics $statistics;
    35     public Summary $summary;
    3634    public App $app;
    3735
     
    8078        add_action( 'burst_weekly', [ $this, 'cleanup_bf_dismissed_tasks' ] );
    8179        add_action( 'burst_daily', [ $this, 'cleanup_php_error_notices' ] );
     80        $recalculate_cron_interval = apply_filters( 'burst_recalculate_cron_interval', 'burst_every_ten_minutes' );
     81        add_action( $recalculate_cron_interval, [ $this, 'update_last_statistic_data' ] );
     82        add_action( 'recalculate_known_uids_cron', [ $this, 'update_known_uids_table' ] );
     83        add_action( 'recalculate_bounces_cron', [ $this, 'recalculate_bounces' ] );
     84        add_action( 'recalculate_first_time_visits_cron', [ $this, 'recalculate_first_time_visits' ] );
     85
    8286        add_filter( 'burst_menu', [ $this, 'add_ecommerce_menu_item' ] );
    8387
     
    9599        $reports = new Mail_Reports();
    96100        $reports->init();
    97         $this->summary = new Summary();
    98         $this->summary->init();
    99101        $this->app = new App();
    100102        $this->app->init();
     
    122124
    123125    /**
     126     * Cron to update the last 10 minutes of user data for bounces and first_time_visits.
     127     */
     128    public function update_last_statistic_data(): void {
     129        if ( ! wp_next_scheduled( 'recalculate_known_uids_cron' ) ) {
     130            wp_schedule_single_event( time() + 10, 'recalculate_known_uids_cron' );
     131        }
     132
     133        if ( ! wp_next_scheduled( 'recalculate_bounces_cron' ) ) {
     134            wp_schedule_single_event( time() + 60, 'recalculate_bounces_cron' );
     135        }
     136
     137        if ( ! wp_next_scheduled( 'recalculate_first_time_visits_cron' ) ) {
     138            wp_schedule_single_event( time() + 120, 'recalculate_first_time_visits_cron' );
     139        }
     140    }
     141
     142    /**
     143     * Recalculate first_time_visit flags
     144     *
     145     * Marks the earliest statistic for each UID as first_time_visit = 1
     146     * Runs daily to keep data accurate without impacting real-time performance
     147     *
     148     * @hooked recalculate_first_time_visits_cron
     149     */
     150    public function recalculate_first_time_visits(): void {
     151        global $wpdb;
     152
     153        $last_update    = get_option( 'burst_last_first_time_visit_update', time() - 15 * MINUTE_IN_SECONDS );
     154        $default_cutoff = time() - apply_filters( 'burst_cron_update_range_seconds', 15 * MINUTE_IN_SECONDS );
     155        $time_cutoff    = ( $last_update < $default_cutoff ) ? $last_update : $default_cutoff;
     156
     157        $stats_table = "{$wpdb->prefix}burst_statistics";
     158        $known_table = "{$wpdb->prefix}burst_known_uids";
     159
     160        // Mark as first-time visit if:
     161        // 1. UID is NOT in known_uids, OR.
     162        // 2. UID's first_seen timestamp is >= time_cutoff (meaning they're new in this batch).
     163        $sql = "
     164        UPDATE $stats_table bs
     165        INNER JOIN (
     166            SELECT curr.uid, MIN(curr.time) AS first_time
     167            FROM $stats_table curr
     168            LEFT JOIN $known_table known ON curr.uid = known.uid
     169            WHERE curr.time >= %d
     170              AND curr.first_time_visit = 0
     171              AND (known.uid IS NULL OR known.first_seen >= %d)
     172            GROUP BY curr.uid
     173        ) first_visits ON bs.uid = first_visits.uid
     174                       AND bs.time = first_visits.first_time
     175        SET bs.first_time_visit = 1
     176        WHERE bs.first_time_visit = 0
     177    ";
     178
     179        $wpdb->query( $wpdb->prepare( $sql, $time_cutoff, $time_cutoff ) );
     180
     181        update_option( 'burst_last_first_time_visit_update', time(), false );
     182    }
     183
     184    /**
     185     * Update incrementail UIDs table.
     186     */
     187    public function update_known_uids_table(): void {
     188        global $wpdb;
     189
     190        $stats_table = "{$wpdb->prefix}burst_statistics";
     191        $known_table = "{$wpdb->prefix}burst_known_uids";
     192
     193        // Get sync cutoff (default: last 10 minutes of new data to process).
     194        $last_sync      = get_option( 'burst_last_known_uids_sync', time() - 15 * MINUTE_IN_SECONDS );
     195        $default_cutoff = time() - apply_filters( 'burst_cron_update_range_seconds', 15 * MINUTE_IN_SECONDS );
     196        $sync_cutoff    = ( $last_sync < $default_cutoff ) ? $last_sync : $default_cutoff;
     197
     198        // Cleanup threshold: remove UIDs not seen in 31+ days.
     199        $cleanup_cutoff = time() - ( 31 * DAY_IN_SECONDS );
     200
     201        // Step 1: Add/update UIDs from recent statistics (last 10-15 minutes).
     202        $sql = $wpdb->prepare(
     203            "
     204        INSERT INTO $known_table (uid, first_seen, last_seen)
     205        SELECT uid, MIN(time) as first_seen, MAX(time) as last_seen
     206        FROM $stats_table
     207        WHERE time >= %d
     208        GROUP BY uid
     209        ON DUPLICATE KEY UPDATE
     210            first_seen = LEAST(first_seen, VALUES(first_seen)),
     211            last_seen = GREATEST(last_seen, VALUES(last_seen))
     212    ",
     213            $sync_cutoff
     214        );
     215
     216        $wpdb->query( $sql );
     217
     218        // Step 2: Remove UIDs not seen in 31+ days (cleanup old visitors).
     219        $wpdb->query(
     220            $wpdb->prepare(
     221                "
     222        DELETE FROM $known_table
     223        WHERE last_seen < %d
     224    ",
     225                $cleanup_cutoff
     226            )
     227        );
     228
     229        update_option( 'burst_last_known_uids_sync', time(), false );
     230    }
     231
     232    /**
     233     * Recalculate bounces using until last non-bounce
     234     */
     235    public function recalculate_bounces(): void {
     236        $last_update    = get_option( 'burst_last_bounces_update', time() - 15 * MINUTE_IN_SECONDS );
     237        $default_cutoff = time() - apply_filters( 'burst_cron_update_range_seconds', 15 * MINUTE_IN_SECONDS );
     238        $time_cutoff    = ( $last_update < $default_cutoff ) ? $last_update : $default_cutoff;
     239        global $wpdb;
     240        $wpdb->query(
     241            $wpdb->prepare(
     242                "UPDATE {$wpdb->prefix}burst_statistics bs
     243        INNER JOIN (
     244            SELECT session_id
     245            FROM {$wpdb->prefix}burst_statistics
     246            WHERE time > %d
     247            GROUP BY session_id
     248            HAVING COUNT(*) > 1
     249                OR MAX(time_on_page) > 5000 -- long page time means engaged
     250        ) nb ON bs.session_id = nb.session_id
     251        SET bs.bounce = 0
     252        WHERE bs.bounce = 1",
     253                $time_cutoff
     254            )
     255        );
     256        update_option( 'burst_last_bounces_update', time(), false );
     257    }
     258
     259    /**
    124260     * Add ecommerce menu item to the admin menu
    125261     *
     
    130266        $should_load_ecommerce = \Burst\burst_loader()->integrations->should_load_ecommerce();
    131267
    132         if ( ! $should_load_ecommerce ) {
     268        if ( ! $should_load_ecommerce || ! $this->has_admin_access() || ! $this->has_sales_admin_access() ) {
    133269            return $menu_items;
    134270        }
     
    139275            'default_hidden' => false,
    140276            'menu_items'     => [],
    141             'capabilities'   => 'view_burst_statistics',
     277            'capabilities'   => 'view_sales_burst_statistics',
    142278            'menu_slug'      => 'burst#/sales',
    143279            'show_in_admin'  => true,
     
    590726                    VALUES " . implode( ', ', $placeholders );
    591727                $wpdb->query( $wpdb->prepare( $query, ...$values ) );
    592 
    593                 if ( ! $total_entry_added ) {
    594                     $wpdb->insert(
    595                         "{$wpdb->prefix}burst_summary",
    596                         [
    597                             'date'                => $stats_date,
    598                             'page_url'            => 'burst_day_total',
    599                             'sessions'            => $sessions,
    600                             'pageviews'           => $page_views,
    601                             'visitors'            => $first_time_visitors,
    602                             'first_time_visitors' => $first_time_visitors,
    603                             'bounces'             => $bounces,
    604                             'avg_time_on_page'    => wp_rand( 20, 3 * MINUTE_IN_SECONDS ),
    605                             'completed'           => 1,
    606                         ]
    607                     );
    608                     $total_entry_added = true;
    609                 }
    610728            }
    611729        }
     
    11351253                'burst_goals',
    11361254                'burst_goal_statistics',
    1137                 'burst_summary',
    11381255                'burst_browsers',
    11391256                'burst_browser_versions',
     
    11411258                'burst_devices',
    11421259                'burst_referrers',
     1260                'burst_known_uids',
    11431261            ],
    11441262        );
  • burst-statistics/trunk/includes/Admin/class-tasks.php

    r3402379 r3406692  
    107107            $current_tasks = array_diff( $current_tasks, [ $task_id ] );
    108108            update_option( 'burst_tasks', $current_tasks, false );
    109 
    110             // only dismiss permanently if the task exists in the tasks array.
    111             $this->maybe_dismiss_permanently( $task_id );
    112         }
     109        }
     110        $this->maybe_dismiss_permanently( $task_id );
    113111        delete_transient( 'burst_plusone_count' );
    114112    }
  • burst-statistics/trunk/includes/Admin/class-upgrade.php

    r3402379 r3406692  
    88use Burst\Admin\Capability\Capability;
    99use Burst\Admin\DB_Upgrade\DB_Upgrade;
    10 use Burst\Admin\Statistics\Summary;
    1110use Burst\Traits\Admin_Helper;
    1211use Burst\Traits\Save;
     
    127126        }
    128127
    129         if ( $prev_version
    130             && version_compare( $prev_version, '1.6.0', '<' ) ) {
    131             ( new Summary() )->restart_update_summary_table_alltime();
    132         }
    133128        if ( $prev_version
    134129            && version_compare( $prev_version, '1.6.1', '<' ) ) {
     
    238233        }
    239234
    240         if ( $prev_version && version_compare( $prev_version, '3.0.2', '<' ) ) {
     235        if ( $prev_version && version_compare( $prev_version, '3.0.1', '<' ) ) {
    241236            update_option( 'burst_is_multi_domain', false );
    242             $plugin_activated_time = get_option( 'burst_activation_time', 0 );
    243             $cutoff_date          = strtotime( '2025-11-24 00:00:00' );
    244             if ( $plugin_activated_time > 0 && $plugin_activated_time < $cutoff_date ) {
    245                 if ( ! defined( 'BURST_PRO' ) ) {
    246                     \Burst\burst_loader()->admin->tasks->undismiss_task( 'bf_notice' );
    247                     \Burst\burst_loader()->admin->tasks->undismiss_task( 'cm_notice' );
    248                     \Burst\burst_loader()->admin->tasks->schedule_task_validation();
    249                 }
    250             }
    251         }
     237            burst_reinstall_rest_api_optimizer();
     238        }
     239
     240        // phpcs:disable
     241        if ( $prev_version && version_compare( $prev_version, '3.1.0', '<' ) ) {
     242            global $wpdb;
     243            $sql = "DROP TABLE IF EXISTS {$wpdb->prefix}burst_summary";
     244            $wpdb->query( $sql );
     245
     246            $stats_table = "{$wpdb->prefix}burst_statistics";
     247            $known_table = "{$wpdb->prefix}burst_known_uids";
     248
     249            // One-time fill from existing data
     250            $wpdb->query("
     251                INSERT INTO $known_table (uid, first_seen, last_seen)
     252                SELECT uid, MIN(time) as first_seen, MAX(time) as last_seen
     253                FROM $stats_table
     254                WHERE time >= UNIX_TIMESTAMP(NOW() - INTERVAL 1 MONTH)
     255                GROUP BY uid
     256            ");
     257        }
     258        //phpcs:enable
    252259
    253260        $admin = new Admin();
  • burst-statistics/trunk/includes/Frontend/Goals/class-goals-tracker.php

    r3392751 r3406692  
    2121         */
    2222        public function add_dynamic_hooks(): void {
    23             $goals = \Burst\burst_loader()->frontend->tracking->get_active_goals( true );
     23            $goals = \Burst\burst_loader()->frontend->tracking->get_active_goals( [ 'hook' ] );
    2424            foreach ( $goals as $goal ) {
    25                 if ( $goal['type'] !== 'hook' ) {
    26                     continue;
    27                 }
    2825                $hook = (string) $goal['hook'];
    2926                if ( strlen( $hook ) > 0 ) {
     
    4239         */
    4340        public function get_goal_by_hook_name( string $find_hook_name ): int {
    44             $goals = \Burst\burst_loader()->frontend->tracking->get_active_goals( true );
     41            $goals = \Burst\burst_loader()->frontend->tracking->get_active_goals( [ 'hook' ] );
    4542
    4643            foreach ( $goals as $goal ) {
    4744                $goal = new Goal( $goal['ID'] );
    48                 if ( $goal->type !== 'hook' ) {
    49                     continue;
    50                 }
    51 
    5245                $hook = $goal->hook;
    5346                if ( $hook === $find_hook_name ) {
     
    9184                }
    9285
    93                 $goal_arr = [
    94                     'goal_id'      => $goal->id,
    95                     'statistic_id' => $statistic_id,
    96                 ];
    97 
    98                 \Burst\burst_loader()->frontend->tracking->create_goal_statistic( $goal_arr );
     86                \Burst\burst_loader()->frontend->tracking->create_goal_statistic( $statistic_id, [$goal_id] );
    9987            } else {
    10088                self::error_log( 'No burst_uid found in handle_hook' );
  • burst-statistics/trunk/includes/Frontend/Goals/class-goals.php

    r3377993 r3406692  
    33
    44use Burst\Traits\Admin_Helper;
     5use Burst\Traits\Database_Helper;
    56use Burst\Traits\Helper;
    67use Burst\Traits\Sanitize;
     
    1112    use Helper;
    1213    use Admin_Helper;
     14    use Database_Helper;
    1315    use Sanitize;
    1416
     
    2830        require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    2931
    30         global $wpdb;
    31         // server_side property to be removed after 2.2 update.
    32         $charset_collate = $wpdb->get_charset_collate();
    33         $table_name      = $wpdb->prefix . 'burst_goals';
    34         $sql             = "CREATE TABLE $table_name (
    35         `ID` int NOT NULL AUTO_INCREMENT,
    36         `title` varchar(255) NOT NULL,
    37         `type` varchar(30) NOT NULL,
    38         `status` varchar(30) NOT NULL,
    39         `url` varchar(255) NOT NULL,
    40         `conversion_metric` varchar(255) NOT NULL,
    41         `date_created` int NOT NULL,
    42         `server_side` int NOT NULL,
    43         `date_start` int NOT NULL,
    44         `date_end` int NOT NULL,
    45         `selector` varchar(255) NOT NULL,
    46         `hook` varchar(255) NOT NULL,
    47         PRIMARY KEY (ID)
    48     ) $charset_collate;";
    49 
    50         dbDelta( $sql );
    5132        if ( ! empty( $wpdb->last_error ) ) {
    5233            self::error_log( 'Error creating goals table: ' . $wpdb->last_error );
  • burst-statistics/trunk/includes/Frontend/Tracking/class-tracking.php

    r3392751 r3406692  
    1616use Burst\Frontend\Ip\Ip;
    1717use Burst\Traits\Helper;
    18 
    19 require_once BURST_PATH . 'helpers/php-user-agent/UserAgentParser.php';
    20 
    2118use Burst\Traits\Sanitize;
    22 use function Burst\UserAgent\parse_user_agent;
     19use Burst\UserAgentParser\UserAgentParser;
     20
    2321class Tracking {
    2422    use Helper;
     
    2624
    2725    public string $beacon_enabled;
    28     public array $look_up_table_ids = [];
    29     public array $goals             = [];
     26    public array $lookup_table_cache = [];
     27    public array $goals              = [];
    3028    /**
    3129     * Constructor
     
    7472        $hit_type = $result['hit_type'];
    7573        // last row. create can also have a last row from the previous hit.
    76         $previous_hit = $result['last_row'];
    77         if ( $previous_hit !== null ) {
    78             // Determine non-bounce conditions.
    79             $is_different_page          = $previous_hit['page_url'] . $previous_hit['parameters'] !== $sanitized_data['page_url'] . $sanitized_data['parameters'];
    80             $is_time_over_threshold     = ( (int) $previous_hit['time_on_page'] + (int) $sanitized_data['time_on_page'] ) > 5000;
    81             $is_previous_hit_not_bounce = (int) $previous_hit['bounce'] === 0;
    82 
    83             if ( $is_previous_hit_not_bounce || $is_different_page || $is_time_over_threshold ) {
    84                 // Not a bounce.
    85                 $sanitized_data['bounce'] = 0;
    86                 // If the user visited more than one page, update all previous hits to not be a bounce.
    87                 if ( $is_different_page ) {
    88                     $this->set_bounce_for_session( (int) $previous_hit['session_id'] );
    89                 }
    90             }
    91         }
    92 
     74        $previous_hit          = $result['last_row'];
    9375        $filtered_previous_hit = $previous_hit;
    9476        if ( $previous_hit === null ) {
     
    11597                update_option( 'burst_first_domain', $normalized_host );
    11698            } elseif ( $first_domain !== $normalized_host ) {
    117                     // if it's different from the first used, it is multi domain.
    118                     update_option( 'burst_is_multi_domain', true );
     99                // if it's different from the first used, it is multi domain.
     100                update_option( 'burst_is_multi_domain', true );
    119101            }
    120102        }
     
    127109        // Get the last record with the same uid within 30 minutes. If it exists, use session_id. If not, create a new session.
    128110        if ( isset( $previous_hit ) && $previous_hit['session_id'] > 0 ) {
    129             // Existing session found, reuse the session ID.
    130111            $sanitized_data['session_id'] = $previous_hit['session_id'];
    131 
    132             // Update existing session with new data.
    133             if ( ! $this->update_session( (int) $sanitized_data['session_id'], $session_arr ) ) {
    134                 // Handle error if session update fails.
    135                 self::error_log( 'Failed to update session for session ID: ' . $sanitized_data['session_id'] );
     112            if ( $this->session_needs_update( $previous_hit, $session_arr ) ) {
     113                $this->update_session( (int) $sanitized_data['session_id'], $session_arr );
    136114            }
    137115        } elseif ( $previous_hit === null ) {
    138             // No previous hit, indicating a new session.
    139116            $session_arr['first_visited_url'] = $this->create_path( $sanitized_data );
    140 
    141             // Attempt to create a new session and assign its ID.
    142             $sanitized_data['session_id'] = $this->create_session( $session_arr );
     117            $sanitized_data['session_id']     = $this->create_session( $session_arr );
    143118        }
    144119
     
    154129        // Get the last record with the same uid and page_url. If it exists update it. If not, create a new record and add time() to $sanitized_data['time'].
    155130        // if update hit, make sure that the URL matches.
    156         if ( $hit_type === 'update' && ( $previous_hit['page_url'] . $previous_hit['parameters'] === $sanitized_data['page_url'] . $sanitized_data['parameters'] || $previous_hit['session_id'] === '' ) ) {
     131        $previous_page_url = $previous_hit['page_url'] ?? '';
     132
     133        $new_page_url = $sanitized_data['page_url'];
     134
     135        // if track_url_changes is enabled, also check for changing parameters.
     136        if ( $this->get_option_bool( 'track_url_change' ) ) {
     137            $previous_page_url .= $previous_hit['parameters'] ?? '';
     138            $new_page_url      .= $sanitized_data['parameters'];
     139        }
     140        $is_same_url = $previous_page_url === $new_page_url;
     141
     142        if ( $hit_type === 'update' && ( $is_same_url || $previous_hit['session_id'] === '' ) ) {
    157143            // add up time_on_page to the existing record.
    158144            $sanitized_data['time_on_page'] += $previous_hit['time_on_page'];
     
    163149            // if it is not an update hit, create a new record.
    164150            $sanitized_data['time']             = time();
    165             $sanitized_data['first_time_visit'] = $this->is_first_time_visit( $sanitized_data['uid'] );
     151            $sanitized_data['first_time_visit'] = 0;
    166152            $insert_id                          = $this->create_statistic( $sanitized_data );
    167153            do_action( 'burst_after_create_statistic', $insert_id, $sanitized_data );
     
    177163            // if $sanitized_data['completed_goals'] is not an empty array, update burst_goals table.
    178164            if ( ! empty( $completed_goals ) ) {
    179                 foreach ( $completed_goals as $goal_id ) {
    180                     $goal_arr = [
    181                         'goal_id'      => $goal_id,
    182                         'statistic_id' => $statistic_id,
    183                     ];
    184                     $this->create_goal_statistic( $goal_arr );
    185                 }
     165                $this->create_goal_statistic( $statistic_id, $completed_goals );
    186166            }
    187167        }
     
    282262     */
    283263    public function prepare_tracking_data( array $data ): array {
    284         $user_agent_data = isset( $data['user_agent'] ) ? $this->get_user_agent_data( $data['user_agent'] ) : [
     264        $parser          = new UserAgentParser();
     265        $user_agent_data = isset( $data['user_agent'] ) ? $parser->get_user_agent_data( $data['user_agent'] ) : [
    285266            'browser'         => '',
    286267            'browser_version' => '',
     
    382363
    383364        // Attempt to get the last user statistic based on the presence or absence of certain conditions.
    384         $uid = $data['fingerprint'] ?: $data['uid'];
    385         if ( $is_update_hit ) {
    386             // For an update hit, require matching uid, fingerprint, and parameters.
    387             $page_url = $data['host'] . $this->create_path( $data );
    388             $last_row = $this->get_last_user_statistic( $uid, $page_url );
    389         } else {
    390             // For a potential create hit, uid and fingerprint are sufficient.
    391             $last_row = $this->get_last_user_statistic( $uid );
    392         }
     365        $page_url = $is_update_hit ? $data['host'] . $this->create_path( $data ) : '';
     366        $uid      = $data['fingerprint'] ?: $data['uid'];
     367        $last_row = $this->get_last_user_statistic( $uid, $page_url );
    393368
    394369        // Determine the appropriate action based on the result.
     
    414389
    415390    /**
     391     * Check if session needs updating by comparing previous hit data with new session data.
     392     *
     393     * @param array $previous_hit     Previous hit data from burst_statistics (may include host/city_code via JOIN).
     394     * @param array $new_session_data New session data to be written.
     395     * @return bool True if update is needed, false if data hasn't changed.
     396     */
     397    private function session_needs_update( array $previous_hit, array $new_session_data ): bool {
     398        // If we don't have previous hit data, update to be safe.
     399        if ( empty( $previous_hit ) ) {
     400            return true;
     401        }
     402
     403        $old_url      = $previous_hit['page_url'] ?? '';
     404        $old_params   = $previous_hit['parameters'] ?? '';
     405        $old_full_url = empty( $old_params ) ? $old_url : $old_url . '?' . $old_params;
     406
     407        $new_url = $new_session_data['last_visited_url'] ?? '';
     408
     409        if ( $old_full_url !== $new_url ) {
     410            return true;
     411        }
     412
     413        // 2. Check host (only relevant for multi-domain with filtering enabled)
     414        // Note: host will only be in previous_hit if JOIN was performed
     415        if ( isset( $previous_hit['host'] ) && isset( $new_session_data['host'] ) ) {
     416            $old_host = $previous_hit['host'] ?? '';
     417            $new_host = $new_session_data['host'];
     418
     419            if ( $old_host !== $new_host ) {
     420                // Host changed (cross-domain navigation).
     421                return true;
     422            }
     423        }
     424
     425        return false;
     426    }
     427
     428    /**
    416429     * Sanitize completed goal IDs.
    417430     *
     
    422435     */
    423436    public function sanitize_completed_goal_ids( array $completed_goals ): array {
    424         $active_client_side_goals    = $this->get_active_goals( false );
    425         $active_client_side_goal_ids = wp_list_pluck( $active_client_side_goals, 'ID' );
    426         // only keep active goals ids.
    427         $completed_goals = array_intersect( $completed_goals, $active_client_side_goal_ids );
    428         // remove duplicates.
    429437        $completed_goals = array_unique( $completed_goals );
    430         // make sure all values are integers.
    431         return array_map( 'absint', $completed_goals );
    432     }
    433 
    434     /**
    435      * Get cached value for lookup table id
    436      */
    437     public function get_lookup_table_id_cached( string $item, ?string $value ): int {
    438         if ( isset( $this->look_up_table_ids[ $item ][ $value ] ) ) {
    439             return $this->look_up_table_ids[ $item ][ $value ];
    440         }
    441 
    442         $id = self::get_lookup_table_id( $item, $value );
    443         $this->look_up_table_ids[ $item ][ $value ] = $id;
    444         return $id;
     438        $completed_goals = array_map( 'absint', $completed_goals );
     439        return array_values( $completed_goals );
    445440    }
    446441
     
    448443     * Get the id of the lookup table for the given item and value.
    449444     */
    450     public static function get_lookup_table_id( string $item, ?string $value ): int {
     445    public function get_lookup_table_id( string $item, ?string $value ): int {
    451446        if ( empty( $value ) ) {
    452447            return 0;
     
    458453        }
    459454
    460         // check if $value exists in table burst_$item.
    461         $id = wp_cache_get( 'burst_' . $item . '_' . $value, 'burst' );
    462         if ( ! $id ) {
    463             global $wpdb;
    464             $id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->prefix}burst_{$item}s WHERE name = %s LIMIT 1", $value ) );
    465             if ( ! $id ) {
    466                 // doesn't exist, so insert it.
    467                 $wpdb->insert(
    468                     $wpdb->prefix . "burst_{$item}s",
    469                     [
    470                         'name' => $value,
    471                     ]
     455        // Load all items for this type if not cached yet.
     456        if ( ! isset( $this->lookup_table_cache[ $item ] ) ) {
     457            $cache_key = 'burst_' . $item . '_all';
     458            $all_items = wp_cache_get( $cache_key, 'burst' );
     459
     460            if ( false === $all_items ) {
     461                // Cache miss - load all items from database.
     462                global $wpdb;
     463                $results = $wpdb->get_results(
     464                    "SELECT ID, name FROM {$wpdb->prefix}burst_{$item}s",
     465                    OBJECT_K
    472466                );
    473                 $id = $wpdb->insert_id;
    474             }
    475             wp_cache_set( 'burst_' . $item . '_' . $value, $id, 'burst' );
    476         }
     467
     468                $all_items = [];
     469                foreach ( $results as $result ) {
     470                    $all_items[ $result->name ] = (int) $result->ID;
     471                }
     472
     473                wp_cache_set( $cache_key, $all_items, 'burst' );
     474            }
     475
     476            $this->lookup_table_cache[ $item ] = $all_items;
     477        }
     478
     479        // Check if value exists.
     480        if ( isset( $this->lookup_table_cache[ $item ][ $value ] ) ) {
     481            return $this->lookup_table_cache[ $item ][ $value ];
     482        }
     483
     484        // Value doesn't exist - insert it.
     485        global $wpdb;
     486        $wpdb->insert(
     487            $wpdb->prefix . "burst_{$item}s",
     488            [ 'name' => $value ]
     489        );
     490        $id = $wpdb->insert_id;
     491
     492        // Invalidate caches.
     493        unset( $this->lookup_table_cache[ $item ] );
     494        wp_cache_delete( 'burst_' . $item . '_all', 'burst' );
     495
    477496        return (int) $id;
    478497    }
     
    534553                    'completed' => [],
    535554                    'scriptUrl' => apply_filters( 'burst_goals_script_url', BURST_URL . 'assets/js/build/burst-goals.js?v=' . $script_version ),
    536                     'active'    => $this->get_active_goals( false ),
     555                    'active'    => $this->get_active_goals( [ 'clicks', 'views' ] ),
    537556                ],
    538557                'cache'    => [
     
    560579     * Get all active goals from the database with single query + cached result.
    561580     *
    562      * @param bool $server_side Whether to return server-side goals only.
     581     * @param array $goal_types list of goal types to select.
    563582     * @return array<array<string, mixed>> Filtered list of active goals.
    564583     */
    565     public function get_active_goals( bool $server_side ): array {
     584    public function get_active_goals( array $goal_types ): array {
     585        // Validate and clean goal types.
     586        foreach ( $goal_types as $key => $type ) {
     587            if ( ! in_array( $type, [ 'hook', 'visits', 'clicks', 'views' ], true ) ) {
     588                unset( $goal_types[ $key ] );
     589            }
     590        }
     591
     592        // If no valid goal types remain, return empty array.
     593        if ( empty( $goal_types ) ) {
     594            return [];
     595        }
     596
    566597        // Prevent queries during install.
    567598        if ( defined( 'BURST_INSTALL_TABLES_RUNNING' ) ) {
     
    569600        }
    570601
    571         // Reuse per-scope cache if we already computed it this request.
    572         $scope = $server_side ? 'server_side' : 'client_side';
    573         if ( isset( $this->goals[ $scope ] ) ) {
    574             return $this->goals[ $scope ];
     602        // Check if all requested types are already cached.
     603        $cache_miss = false;
     604        foreach ( $goal_types as $type ) {
     605            if ( ! isset( $this->goals[ $type ] ) ) {
     606                $cache_miss = true;
     607                break;
     608            }
     609        }
     610
     611        // If all types are cached, combine and return them.
     612        if ( ! $cache_miss ) {
     613            $goals = [];
     614            foreach ( $goal_types as $type ) {
     615                $goals = array_merge( $goals, $this->goals[ $type ] );
     616            }
     617            return $goals;
    575618        }
    576619
     
    594637        }
    595638
    596         // Filter in PHP to avoid a second DB roundtrip.
    597         $filtered = array_values(
    598             array_filter(
    599                 $all_goals,
    600                 static function ( array $goal ) use ( $server_side ): bool {
    601                     $server_side_types = [ 'visits', 'hook' ];
    602                     $type              = $goal['type'] ?? '';
    603                     return $server_side
    604                         ? in_array( $type, $server_side_types, true )
    605                         : ! in_array( $type, $server_side_types, true );
    606                 }
    607             )
    608         );
    609 
    610         // Memoize filtered results.
    611         $this->goals[ $scope ] = $filtered;
     639        // Filter goals by goal type, and store in $this->goals[$type].
     640        foreach ( $goal_types as $type ) {
     641            if ( ! isset( $this->goals[ $type ] ) ) {
     642                $this->goals[ $type ] = array_values(
     643                    array_filter(
     644                        $all_goals,
     645                        static function ( array $goal ) use ( $type ): bool {
     646                            return isset( $goal['type'] ) && $goal['type'] === $type;
     647                        }
     648                    )
     649                );
     650            }
     651        }
     652
     653        // Return combined array for the requested goal_types.
     654        $filtered = [];
     655        foreach ( $goal_types as $type ) {
     656            $filtered = array_merge( $filtered, $this->goals[ $type ] );
     657        }
    612658
    613659        return $filtered;
     
    620666     * @param int    $goal_id The ID of the goal to check.
    621667     * @param string $page_url The current page URL.
     668     * @param array  $goals the available goals.
    622669     * @return bool Returns true if the goal is completed, false otherwise.
    623670     */
    624     public function goal_is_completed( int $goal_id, string $page_url ): bool {
    625         $goal = new Goal( $goal_id );
     671    public function goal_is_completed( int $goal_id, string $page_url, array $goals ): bool {
     672        $goal = array_filter(
     673            $goals,
     674            function ( $goal ) use ( $goal_id ) {
     675                return isset( $goal['ID'] ) && (int) $goal['ID'] === $goal_id;
     676            }
     677        );
     678        $goal = reset( $goal );
    626679
    627680        // Check if the goal and page URL are properly set.
    628         if ( empty( $goal->type ) || empty( $goal->url ) || empty( $page_url ) ) {
     681        if ( empty( $goal['type'] ) || empty( $goal['url'] ) || empty( $page_url ) ) {
    629682            return false;
    630683        }
    631684
    632         switch ( $goal->type ) {
     685        switch ( $goal['type'] ) {
    633686            case 'visits':
    634687                // Improved URL comparison logic could go here.
    635688                // @TODO: Maybe add support for * and ? wildcards?.
    636                 if ( rtrim( $page_url, '/' ) === rtrim( $goal->url, '/' ) ) {
     689                if ( rtrim( $page_url, '/' ) === rtrim( $goal['url'], '/' ) ) {
    637690                    return true;
    638691                }
    639692                break;
    640             // @todo Add more case statements for other types of goals.
    641693
    642694            default:
     
    656708    public function get_completed_goals( array $completed_client_goals, string $page_url ): array {
    657709        $completed_server_goals = [];
    658         $server_goals           = $this->get_active_goals( true );
     710        $server_goals           = $this->get_active_goals( [ 'visits' ] );
    659711        // if server side goals exist.
    660712        if ( count( $server_goals ) > 0 ) {
     
    662714            foreach ( $server_goals as $goal ) {
    663715                // if goal is completed.
    664                 if ( $this->goal_is_completed( $goal['ID'], $page_url ) ) {
     716                if ( $this->goal_is_completed( $goal['ID'], $page_url, $server_goals ) ) {
    665717                    // add goal id to completed goals array.
    666718                    $completed_server_goals[] = $goal['ID'];
     
    671723        // merge completed client goals and completed server goals.
    672724        return array_merge( $completed_client_goals, $completed_server_goals );
    673     }
    674 
    675     /**
    676      * Get user agent data
    677      *
    678      * @param string $user_agent The User Agent.
    679      * @return null[]|string[]
    680      */
    681     public function get_user_agent_data( string $user_agent ): array {
    682         $defaults = [
    683             'browser'         => '',
    684             'browser_version' => '',
    685             'platform'        => '',
    686             'device'          => '',
    687         ];
    688         if ( $user_agent === '' ) {
    689             return $defaults;
    690         }
    691 
    692         $ua = parse_user_agent( $user_agent );
    693 
    694         switch ( $ua['platform'] ) {
    695             case 'Macintosh':
    696             case 'Chrome OS':
    697             case 'Linux':
    698             case 'Windows':
    699                 $ua['device'] = 'desktop';
    700                 break;
    701             case 'Android':
    702             case 'BlackBerry':
    703             case 'iPhone':
    704             case 'Windows Phone':
    705             case 'Sailfish':
    706             case 'Symbian':
    707             case 'Tizen':
    708                 $ua['device'] = 'mobile';
    709                 break;
    710             case 'iPad':
    711                 $ua['device'] = 'tablet';
    712                 break;
    713             case 'PlayStation 3':
    714             case 'PlayStation 4':
    715             case 'PlayStation 5':
    716             case 'PlayStation Vita':
    717             case 'Xbox':
    718             case 'Xbox One':
    719             case 'New Nintendo 3DS':
    720             case 'Nintendo 3DS':
    721             case 'Nintendo DS':
    722             case 'Nintendo Switch':
    723             case 'Nintendo Wii':
    724             case 'Nintendo WiiU':
    725             case 'iPod':
    726             case 'Kindle':
    727             case 'Kindle Fire':
    728             case 'NetBSD':
    729             case 'OpenBSD':
    730             case 'PlayBook':
    731             case 'FreeBSD':
    732             default:
    733                 $ua['device'] = 'other';
    734                 break;
    735         }
    736 
    737         // change version to browser_version.
    738         $ua['browser_version'] = $ua['version'];
    739         unset( $ua['version'] );
    740 
    741         return wp_parse_args( $ua, $defaults );
    742725    }
    743726
     
    772755     */
    773756    public function get_last_user_statistic( string $uid, string $page_url = '' ): array {
    774         global $wpdb;
    775         // if fingerprint is send get the last user statistic with the same fingerprint.
    776757        if ( strlen( $uid ) === 0 ) {
    777758            return [];
    778759        }
     760        $need_session_data = $this->get_option_bool( 'filtering_by_domain' );
     761
     762        global $wpdb;
    779763        $where = '';
    780764        if ( $page_url !== '' ) {
     
    785769
    786770        $where .= $wpdb->prepare( ' AND time > %d', strtotime( '-30 minutes' ) );
    787 
    788         $data = $wpdb->get_row(
    789             $wpdb->prepare(
    790                 "select ID, session_id, parameters, time_on_page, bounce, page_url
    791                 from {$wpdb->prefix}burst_statistics
    792                 where uid = %s $where ORDER BY ID DESC limit 1",
    793                 $uid,
    794             )
    795         );
    796 
    797         return $data ? (array) $data : [];
     771        // Build query based on whether we need session data.
     772        if ( $need_session_data ) {
     773            // With JOIN to get host.
     774            $last_row = $wpdb->get_row(
     775                $wpdb->prepare(
     776                    "SELECT
     777                    s.ID,
     778                    s.session_id,
     779                    s.parameters,
     780                    s.time_on_page,
     781                    s.bounce,
     782                    s.page_url,
     783                    sess.host
     784                FROM {$wpdb->prefix}burst_statistics s
     785                LEFT JOIN {$wpdb->prefix}burst_sessions sess ON s.session_id = sess.ID
     786                WHERE s.uid = %s {$where}
     787                ORDER BY s.ID DESC
     788                LIMIT 1",
     789                    $uid
     790                )
     791            );
     792        } else {
     793            $last_row = $wpdb->get_row(
     794                $wpdb->prepare(
     795                    "SELECT
     796                    ID,
     797                    session_id,
     798                    parameters,
     799                    time_on_page,
     800                    bounce,
     801                    page_url
     802                FROM {$wpdb->prefix}burst_statistics
     803                WHERE uid = %s {$where}
     804                ORDER BY ID DESC
     805                LIMIT 1",
     806                    $uid
     807                )
     808            );
     809        }
     810
     811        return $last_row ? (array) $last_row : [];
    798812    }
    799813
     
    851865
    852866        if ( ! $this->required_values_set( $data ) ) {
    853             // phpcs:ignore
    854             self::error_log( 'Missing required values for statistic creation. Data: ' . print_r( $data, true ) );
     867            // phpcs:ignore
     868            self::error_log( 'Missing required values for statistic creation. Data: ' . print_r( $data, true ) );
    855869            return 0;
    856870        }
    857871
    858872        $inserted = $wpdb->insert( $wpdb->prefix . 'burst_statistics', $data );
    859 
    860         if ( $inserted ) {
    861             return $wpdb->insert_id;
    862         } else {
    863             self::error_log( 'Failed to create statistic. Error: ' . $wpdb->last_error );
    864             return 0;
    865         }
     873        if ( $inserted === false ) {
     874            self::error_log( 'Failed to create statistic. Error: ' . $wpdb->last_error );
     875            return 0;
     876        }
     877        return $wpdb->insert_id;
    866878    }
    867879
     
    879891        // Ensure 'ID' is present for update.
    880892        if ( ! isset( $data['ID'] ) ) {
    881             // phpcs:ignore
    882             self::error_log( 'Missing ID for statistic update. Data: ' . print_r( $data, true ) );
     893            // phpcs:ignore
     894            self::error_log( 'Missing ID for statistic update. Data: ' . print_r( $data, true ) );
    883895            return false;
    884896        }
    885897
    886898        $updated = $wpdb->update( $wpdb->prefix . 'burst_statistics', $data, [ 'ID' => (int) $data['ID'] ] );
    887 
    888899        if ( $updated === false ) {
    889900            self::error_log( 'Failed to update statistic. Error: ' . $wpdb->last_error );
     
    897908     * Create goal statistic in {prefix}_burst_goal_statistics
    898909     */
    899     public function create_goal_statistic( array $data ): void {
     910    public function create_goal_statistic( int $statistic_id, array $goal_ids ): void {
    900911        global $wpdb;
    901         // do not create goal statistic if statistic_id or goal_id is not set.
    902         if ( ! isset( $data['statistic_id'] ) || ! isset( $data['goal_id'] ) ) {
    903             return;
    904         }
    905         // first get row with same statistics_id and goal_id.
    906         // check if goals already exists.
    907         $goal_exists = $wpdb->get_var(
    908             $wpdb->prepare(
    909                 "SELECT 1 FROM {$wpdb->prefix}burst_goal_statistics WHERE statistic_id = %d AND goal_id = %d LIMIT 1",
    910                 $data['statistic_id'],
    911                 $data['goal_id']
    912             )
     912        $values = [];
     913        foreach ( $goal_ids as $goal_id ) {
     914            $values[] = $wpdb->prepare( '(%d, %d)', $goal_id, $statistic_id );
     915        }
     916
     917        $wpdb->query(
     918            "INSERT IGNORE INTO {$wpdb->prefix}burst_goal_statistics
     919        (goal_id, statistic_id)
     920        VALUES " . implode( ',', $values )
    913921        );
    914 
    915         // goal already exists.
    916         if ( $goal_exists ) {
    917             return;
    918         }
    919         $wpdb->insert(
    920             $wpdb->prefix . 'burst_goal_statistics',
    921             $data
    922         );
    923     }
    924 
    925     /**
    926      * Sets the bounce flag to 0 for all hits within a session.
    927      *
    928      * @param int $session_id The ID of the session.
    929      * @return bool True on success, false on failure.
    930      */
    931     public function set_bounce_for_session( int $session_id ): bool {
    932         global $wpdb;
    933 
    934         // Prepare table name to ensure it's properly quoted.
    935         $table_name = $wpdb->prefix . 'burst_statistics';
    936 
    937         // Update query.
    938         $result = $wpdb->update(
    939             $table_name,
    940             // data.
    941             [ 'bounce' => 0 ],
    942             // where.
    943             [ 'session_id' => $session_id ]
    944         );
    945 
    946         // Check for errors.
    947         if ( $result === false ) {
    948             // Handle error, log it or take other actions.
    949             self::error_log( 'Error setting bounce to 0 for session ' . $session_id );
    950             return false;
    951         }
    952 
    953         return true;
    954922    }
    955923
     
    964932    public function remove_empty_values( array $data ): array {
    965933        foreach ( $data as $key => $value ) {
     934            // skip parameters.
    966935            if ( $key === 'parameters' ) {
    967936                continue;
    968937            }
    969938
     939            // remove null or empty string.
    970940            if ( $value === null || $value === '' ) {
    971941                unset( $data[ $key ] );
    972             }
    973 
    974             if ( strpos( $key, '_id' ) !== false && $value === 0 ) {
     942                continue;
     943            }
     944
     945            // remove *_id if 0.
     946            if ( str_ends_with( $key, '_id' ) && (int) $value === 0 ) {
    975947                unset( $data[ $key ] );
    976948            }
     
    988960     */
    989961    public function store_fingerprint_in_session( string $fingerprint, bool $should_load_ecommerce ): void {
    990         $serverside_goals = $this->get_active_goals( true );
     962        $serverside_goals = $this->get_active_goals( [ 'visits' ] );
    991963        // no need for session without serverside goals.
    992964        if ( empty( $serverside_goals ) && ! $should_load_ecommerce ) {
  • burst-statistics/trunk/includes/Frontend/class-frontend.php

    r3392751 r3406692  
    263263        // fix phpcs warning.
    264264        unset( $hook );
    265         $minified = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
    266265        if ( ! $this->exclude_from_tracking() ) {
    267266            wp_enqueue_script(
    268267                'burst-timeme',
    269                 BURST_URL . "helpers/timeme/timeme$minified.js",
     268                BURST_URL . 'assets/js/timeme/timeme.min.js',
    270269                [],
    271                 filemtime( BURST_PATH . "helpers/timeme/timeme$minified.js" ),
     270                filemtime( BURST_PATH . 'assets/js/timeme/timeme.min.js' ),
    272271                false
    273272            );
     
    419418     */
    420419    public function get_post_pageviews( int $post_id, int $start = 0, int $end = 0 ): int {
    421         $cache_key    = 'burst_post_views_' . $post_id;
     420        $cache_key    = 'burst_post_views_' . $post_id . $start . $end;
    422421        $cached_views = wp_cache_get( $cache_key, 'burst' );
    423422
     
    443442
    444443        $views = (int) $wpdb->get_var( $sql );
    445         wp_cache_set( $cache_key, $views, 'burst' );
     444        wp_cache_set( $cache_key, $views, 'burst', HOUR_IN_SECONDS );
    446445
    447446        return $views;
  • burst-statistics/trunk/includes/Integrations/plugins/easy-digital-downloads.php

    r3392751 r3406692  
    6868function burst_easy_digital_downloads_order_completed( Order $order ): void {
    6969    /* @phpstan-ignore-next-line  */
    70     $order_id    = $order->id;
     70    $order_id = $order->id;
    7171    /* @phpstan-ignore-next-line  */
    7272    $order_items = $order->get_items();
  • burst-statistics/trunk/includes/TeamUpdraft/Onboarding/class-onboarding.php

    r3392751 r3406692  
    425425     */
    426426    private function signup_for_mailinglist( string $email ): void {
    427         $api_params = [
     427        $current_user = wp_get_current_user();
     428        $first_name   = $current_user->ID !== 0 ? sanitize_text_field( $current_user->first_name ) : '';
     429        $last_name    = $current_user->ID !== 0 ? sanitize_text_field( $current_user->last_name ) : '';
     430        $api_params   = [
    428431            'has_premium' => $this->is_pro,
    429432            'email'       => sanitize_email( $email ),
    430             'domain'      => esc_url_raw( site_url() ),
     433            'first_name'  => $first_name,
     434            'last_name'   => $last_name,
    431435        ];
    432436        wp_remote_post(
  • burst-statistics/trunk/includes/Traits/trait-admin-helper.php

    r3378823 r3406692  
    128128
    129129        return burst_loader()->has_admin_access = false;
     130    }
     131
     132    /**
     133     * Checks if user has sales admin access to the Burst plugin.
     134     */
     135    public function has_sales_admin_access(): bool {
     136        if ( ! $this->has_admin_access() ) {
     137            return false;
     138        }
     139
     140        if ( ! is_user_logged_in() ) {
     141            return false;
     142        }
     143
     144        if ( ! current_user_can( 'view_sales_burst_statistics' ) ) {
     145            return false;
     146        }
     147
     148        return true;
    130149    }
    131150
     
    159178            'burst_localize_script',
    160179            [
    161                 'json_translations' => $js_data['json_translations'],
    162                 'site_url'          => get_rest_url(),
    163                 'admin_ajax_url'    => add_query_arg( [ 'action' => 'burst_rest_api_fallback' ], admin_url( 'admin-ajax.php' ) ),
    164                 'dashboard_url'     => $this->admin_url( 'burst' ),
    165                 'plugin_url'        => BURST_URL,
    166                 'network_link'      => network_site_url( 'plugins.php' ),
    167                 'is_pro'            => defined( 'BURST_PRO' ),
     180                'json_translations'           => $js_data['json_translations'],
     181                'site_url'                    => get_rest_url(),
     182                'admin_ajax_url'              => add_query_arg( [ 'action' => 'burst_rest_api_fallback' ], admin_url( 'admin-ajax.php' ) ),
     183                'dashboard_url'               => $this->admin_url( 'burst' ),
     184                'plugin_url'                  => BURST_URL,
     185                'network_link'                => network_site_url( 'plugins.php' ),
     186                'is_pro'                      => defined( 'BURST_PRO' ),
    168187                // to authenticate the logged in user.
    169                 'nonce'             => wp_create_nonce( 'wp_rest' ),
    170                 'burst_nonce'       => wp_create_nonce( 'burst_nonce' ),
    171                 'current_ip'        => Ip::get_ip_address(),
    172                 'user_roles'        => $this->get_user_roles(),
    173                 'date_ranges'       => $this->get_date_ranges(),
    174                 'date_format'       => get_option( 'date_format' ),
    175                 'tour_shown'        => $this->get_option_int( 'burst_tour_shown_once' ),
    176                 'gmt_offset'        => get_option( 'gmt_offset' ),
    177                 'burst_version'     => BURST_VERSION,
    178                 'installed_by'      => get_option( 'teamupdraft_installation_source_burst-statistics', '' ),
     188                'nonce'                       => wp_create_nonce( 'wp_rest' ),
     189                'burst_nonce'                 => wp_create_nonce( 'burst_nonce' ),
     190                'current_ip'                  => Ip::get_ip_address(),
     191                'user_roles'                  => $this->get_user_roles(),
     192                'date_ranges'                 => $this->get_date_ranges(),
     193                'date_format'                 => get_option( 'date_format' ),
     194                'tour_shown'                  => $this->get_option_int( 'burst_tour_shown_once' ),
     195                'gmt_offset'                  => get_option( 'gmt_offset' ),
     196                'burst_version'               => BURST_VERSION,
     197                'installed_by'                => get_option( 'teamupdraft_installation_source_burst-statistics', '' ),
     198                'view_sales_burst_statistics' => current_user_can( 'view_sales_burst_statistics' ),
    179199            ]
    180200        );
  • burst-statistics/trunk/includes/Traits/trait-sanitize.php

    r3392751 r3406692  
    451451        }
    452452
    453         $ref_spam_list = file( BURST_PATH . 'helpers/referrer-spam-list/spammers.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );
     453        $ref_spam_list = file( BURST_PATH . 'lib/vendor/matomo/referrer-spam-list/spammers.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );
    454454        $ref_spam_list = apply_filters( 'burst_referrer_spam_list', $ref_spam_list );
    455455        if ( array_search( $referrer_host, $ref_spam_list, true ) ) {
  • burst-statistics/trunk/includes/class-burst.php

    r3402379 r3406692  
    6666        define( 'BURST_PLUGIN', plugin_basename( BURST_FILE ) );
    6767        define( 'BURST_PLUGIN_NAME', defined( 'BURST_PRO' ) ? 'Burst Pro' : 'Burst Statistics' );
    68         define( 'BURST_VERSION', '3.0.2' );
     68        define( 'BURST_VERSION', '3.1.0.3' );
    6969        // deprecated constant.
    7070        //phpcs:ignore
  • burst-statistics/trunk/languages/burst-statistics.pot

    r3392751 r3406692  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: Burst Pro 3.0.0\n"
     5"Project-Id-Version: Burst Pro 3.1.0.3\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/burst-pro\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2025-11-03T12:15:22+00:00\n"
     12"POT-Creation-Date: 2025-11-21T08:40:45+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.11.0\n"
     
    4040msgstr ""
    4141
    42 #: includes/Admin/App/class-app.php:178
    43 #: includes/Admin/App/class-app.php:728
     42#: includes/Admin/App/class-app.php:181
     43#: includes/Admin/App/class-app.php:731
    4444#: includes/Frontend/class-frontend-admin.php:44
    4545msgid "Statistics"
    4646msgstr ""
    4747
    48 #: includes/Admin/App/class-app.php:269
    49 #: includes/Admin/class-admin.php:710
    50 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    51 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    52 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    53 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
    54 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
    55 #: includes/Admin/App/src/components/Common/Header.jsx:175
     48#: includes/Admin/App/class-app.php:272
     49#: includes/Admin/class-admin.php:871
     50#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     51#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     52#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     53#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
     54#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
     55#: includes/Admin/App/src/components/Common/Header.jsx:176
    5656#: includes/Admin/App/src/components/Common/ProPopover.js:66
    5757#: includes/Admin/App/src/components/Goals/GoalsSettings.js:172
     
    6060msgstr ""
    6161
    62 #: includes/Admin/App/class-app.php:727
     62#: includes/Admin/App/class-app.php:730
    6363#: includes/Admin/App/config/menu.php:8
    6464msgid "Dashboard"
    6565msgstr ""
    6666
    67 #: includes/Admin/App/class-app.php:729
     67#: includes/Admin/App/class-app.php:732
    6868#: includes/Admin/App/config/menu.php:37
    6969msgid "Settings"
    7070msgstr ""
    7171
    72 #: includes/Admin/App/class-app.php:1154
     72#: includes/Admin/App/class-app.php:1157
    7373#: includes/Admin/Statistics/class-goal-statistics.php:251
    7474#: includes/Frontend/class-shortcodes.php:465
    75 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     75#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    7676#: includes/Admin/App/src/api/getDevicesData.js:12
    7777#: includes/Admin/App/src/components/Statistics/DevicesBlock.js:46
     
    7979msgstr ""
    8080
    81 #: includes/Admin/App/class-app.php:1157
     81#: includes/Admin/App/class-app.php:1160
    8282#: includes/Admin/Statistics/class-goal-statistics.php:254
    8383#: includes/Frontend/class-shortcodes.php:467
    84 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     84#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    8585#: includes/Admin/App/src/api/getDevicesData.js:14
    8686#: includes/Admin/App/src/components/Statistics/DevicesBlock.js:48
     
    8888msgstr ""
    8989
    90 #: includes/Admin/App/class-app.php:1160
     90#: includes/Admin/App/class-app.php:1163
    9191#: includes/Admin/Statistics/class-goal-statistics.php:257
    9292#: includes/Frontend/class-shortcodes.php:466
    93 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     93#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    9494#: includes/Admin/App/src/api/getDevicesData.js:13
    9595#: includes/Admin/App/src/components/Statistics/DevicesBlock.js:47
     
    9797msgstr ""
    9898
    99 #: includes/Admin/App/class-app.php:1163
     99#: includes/Admin/App/class-app.php:1166
    100100#: includes/Admin/Statistics/class-goal-statistics.php:261
    101101#: includes/Frontend/class-shortcodes.php:468
    102 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     102#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    103103#: includes/Admin/App/src/api/getDevicesData.js:15
    104104#: includes/Admin/App/src/components/Statistics/DevicesBlock.js:49
     
    106106msgstr ""
    107107
    108 #: includes/Admin/App/class-app.php:1560
     108#: includes/Admin/App/class-app.php:1651
    109109msgid "Settings saved successfully"
    110110msgstr ""
    111111
    112 #: includes/Admin/App/class-app.php:1561
     112#: includes/Admin/App/class-app.php:1652
    113113msgid "No changes were made"
    114114msgstr ""
     
    170170#: includes/Admin/App/config/menu.php:62
    171171#: includes/Admin/App/config/menu.php:66
    172 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     172#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    173173#: includes/Admin/App/src/components/Dashboard/GoalsBlock.js:236
    174174#: includes/Admin/App/src/components/Dashboard/GoalsBlock.js:264
     
    333333
    334334#: includes/Admin/App/config/goal-fields.php:33
    335 #: includes/Pro/Admin/Ecommerce/class-funnel.php:31
    336335msgid "Visits"
    337336msgstr ""
     
    391390#: includes/Frontend/class-frontend-statistics.php:636
    392391#: includes/Traits/trait-sanitize.php:601
    393 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    394 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    395 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     392#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     393#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     394#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    396395#: includes/Admin/App/src/api/getCompareData.js:14
    397396#: includes/Admin/App/src/api/getCompareData.js:22
     
    410409#: includes/Frontend/class-frontend-statistics.php:637
    411410#: includes/Traits/trait-sanitize.php:600
    412 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    413 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    414 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     411#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     412#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     413#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    415414#: includes/Admin/App/src/api/getCompareData.js:13
    416415#: includes/Admin/App/src/api/getCompareData.js:21
     
    431430#: includes/Admin/Statistics/class-goal-statistics.php:132
    432431#: includes/Frontend/class-frontend-statistics.php:635
    433 #: includes/Pro/class-pro.php:219
     432#: includes/Pro/class-pro.php:246
    434433#: includes/Traits/trait-sanitize.php:599
    435 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    436 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    437 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     434#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     435#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     436#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    438437#: includes/Admin/App/src/api/getCompareData.js:12
    439438#: includes/Admin/App/src/api/getCompareData.js:20
     
    447446
    448447#: includes/Admin/App/config/menu.php:18
    449 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     448#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    450449#: includes/Admin/App/src/components/Statistics/InsightsBlock.js:47
    451450msgid "Insights"
     
    453452
    454453#: includes/Admin/App/config/menu.php:27
    455 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    456 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    457 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    458 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     454#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     455#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     456#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     457#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    459458#: includes/Admin/App/src/store/useFiltersStore.js:15
    460459msgid "Sources"
     
    511510
    512511#: includes/Admin/App/config/tasks.php:32
    513 #: includes/Pro/class-pro.php:272
     512#: includes/Pro/class-pro.php:299
    514513msgid "Black Friday"
    515514msgstr ""
     
    521520
    522521#: includes/Admin/App/config/tasks.php:32
    523 #: includes/Pro/class-pro.php:272
     522#: includes/Pro/class-pro.php:299
    524523msgid "Limited time offer!"
    525524msgstr ""
    526525
    527526#: includes/Admin/App/config/tasks.php:45
    528 #: includes/Pro/class-pro.php:285
     527#: includes/Pro/class-pro.php:312
    529528msgid "Cyber Monday"
    530529msgstr ""
    531530
    532531#: includes/Admin/App/config/tasks.php:45
    533 #: includes/Pro/class-pro.php:285
     532#: includes/Pro/class-pro.php:312
    534533msgid "Last chance!"
    535534msgstr ""
     
    581580msgstr ""
    582581
    583 #: includes/Admin/App/Fields/class-fields.php:44
    584 msgid "Disable the usage of summary tables"
    585 msgstr ""
    586 
    587 #: includes/Admin/App/Fields/class-fields.php:45
    588 msgid "Using summary tables speeds up the dashboard on higher traffic environments, but can show small differences from the actual data."
    589 msgstr ""
    590 
    591 #: includes/Admin/App/Fields/class-fields.php:57
     582#: includes/Admin/App/Fields/class-fields.php:43
    592583msgid "Track all hits networkwide, and view them on the dashboard of your main site"
    593584msgstr ""
    594585
    595586#: includes/Admin/AutoInstaller/class-auto-installer.php:92
    596 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     587#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    597588#: includes/Admin/App/src/components/Dashboard/OtherPluginsBlock.js:15
    598589#: includes/TeamUpdraft/Other_Plugins/build/index.js:1
     
    602593
    603594#: includes/Admin/AutoInstaller/class-auto-installer.php:96
    604 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     595#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    605596#: includes/Admin/App/src/components/Dashboard/OtherPluginsBlock.js:199
    606597#: includes/TeamUpdraft/Other_Plugins/build/index.js:1
     
    700691
    701692#: includes/Admin/AutoInstaller/class-auto-installer.php:481
    702 #: includes/Admin/class-admin.php:983
    703 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
    704 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     693#: includes/Admin/class-admin.php:1144
     694#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
     695#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    705696#: includes/Admin/App/src/components/Goals/DeleteGoalModal.js:32
    706697msgid "Cancel"
     
    799790#: includes/Admin/Burst_Onboarding/steps.php:34
    800791#: includes/Pro/Admin/Licensing/class-licensing.php:308
    801 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     792#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    802793#: includes/Admin/App/src/components/Fields/LicenseField.js:38
    803794msgid "Enter your license key"
     
    805796
    806797#: includes/Admin/Burst_Onboarding/steps.php:52
    807 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     798#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    808799#: includes/Admin/App/src/components/Dashboard/OtherPluginsBlock.js:16
    809800#: includes/Admin/App/src/components/Dashboard/OtherPluginsBlock.js:226
     
    898889msgstr ""
    899890
     891#: includes/Admin/class-admin.php:274
     892#: includes/Pro/Admin/Statistics/class-statistics.php:165
     893#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     894#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     895#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     896#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
     897#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:242
     898msgid "Sales"
     899msgstr ""
     900
    900901#. translators: 1: opening anchor tag to the privacy statement, 2: closing anchor tag.
    901 #: includes/Admin/class-admin.php:662
     902#: includes/Admin/class-admin.php:823
    902903msgid "This website uses Burst Statistics, a Privacy-Friendly Statistics Tool to analyze visitor behavior. For this functionality we (this website) collect anonymized data, stored locally without sharing it with other parties. For more information, please read the %s Privacy Statement %s from Burst."
    903904msgstr ""
    904905
    905 #: includes/Admin/class-admin.php:691
     906#: includes/Admin/class-admin.php:852
    906907msgid "Default goal"
    907908msgstr ""
    908909
    909 #: includes/Admin/class-admin.php:731
    910 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
    911 #: includes/Admin/App/src/components/Common/Header.jsx:170
     910#: includes/Admin/class-admin.php:892
     911#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
     912#: includes/Admin/App/src/components/Common/Header.jsx:171
    912913msgid "Support"
    913914msgstr ""
    914915
    915 #: includes/Admin/class-admin.php:962
     916#: includes/Admin/class-admin.php:1123
    916917msgid "Are you sure? With Burst Statistics active:"
    917918msgstr ""
    918919
    919 #: includes/Admin/class-admin.php:964
     920#: includes/Admin/class-admin.php:1125
    920921msgid "You have access to your analytical data"
    921922msgstr ""
    922923
    923 #: includes/Admin/class-admin.php:965
     924#: includes/Admin/class-admin.php:1126
    924925msgid "Asking consent for statistics often not required."
    925926msgstr ""
    926927
    927 #: includes/Admin/class-admin.php:966
     928#: includes/Admin/class-admin.php:1127
    928929msgid "Your data securely on your own server."
    929930msgstr ""
    930931
    931 #: includes/Admin/class-admin.php:985
     932#: includes/Admin/class-admin.php:1146
    932933msgid "Deactivate"
    933934msgstr ""
    934935
    935 #: includes/Admin/class-admin.php:987
     936#: includes/Admin/class-admin.php:1148
    936937msgid "Deactivate and delete all data"
    937938msgstr ""
    938939
    939 #: includes/Admin/class-admin.php:1058
     940#: includes/Admin/class-admin.php:1219
    940941msgid "Successfully cleared data."
    941942msgstr ""
     
    972973
    973974#: includes/Admin/class-tasks.php:280
    974 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     975#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    975976msgid "Completed"
    976977msgstr ""
     
    996997#: includes/Admin/class-tasks.php:285
    997998#: includes/Pro/Admin/Licensing/class-licensing.php:910
    998 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    999 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    1000 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
    1001 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
    1002 #: includes/Admin/App/src/components/Common/Header.jsx:157
     999#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     1000#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     1001#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
     1002#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
     1003#: includes/Admin/App/src/components/Common/Header.jsx:158
    10031004#: includes/Admin/App/src/components/Common/Pro.js:22
    10041005msgid "Pro"
     
    10221023
    10231024#. translators: %s: progress of the upgrade.
    1024 #: includes/Admin/DB_Upgrade/class-db-upgrade.php:68
     1025#: includes/Admin/DB_Upgrade/class-db-upgrade.php:67
    10251026msgid "An upgrade is running in the background, and is currently at %s."
    10261027msgstr ""
    10271028
    1028 #: includes/Admin/DB_Upgrade/class-db-upgrade.php:71
     1029#: includes/Admin/DB_Upgrade/class-db-upgrade.php:70
    10291030msgid "For large databases this process may take a while. Your data will be tracked as usual."
    10301031msgstr ""
     
    11041105
    11051106#: includes/Admin/Mailer/class-mail-reports.php:197
    1106 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     1107#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    11071108#: includes/Admin/App/src/components/Statistics/CompareBlock.js:56
    11081109msgid "Compare"
     
    11191120#: includes/Admin/Mailer/class-mail-reports.php:257
    11201121#: includes/Pro/Admin/Statistics/class-statistics.php:159
    1121 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    1122 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    1123 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    1124 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    1125 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     1122#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     1123#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     1124#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     1125#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     1126#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    11261127#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:159
    11271128#: includes/Admin/App/src/store/useFiltersStore.js:123
     
    11351136
    11361137#: includes/Admin/Mailer/class-mail-reports.php:261
    1137 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    1138 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    1139 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     1138#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     1139#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     1140#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    11401141#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:103
    11411142msgid "Referrers"
     
    11451146#: includes/Frontend/class-frontend-statistics.php:638
    11461147#: includes/Traits/trait-sanitize.php:608
    1147 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    1148 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    1149 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     1148#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     1149#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     1150#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    11501151#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:47
    11511152msgid "Bounce rate"
     
    11571158#: includes/Frontend/class-frontend-statistics.php:596
    11581159#: includes/Frontend/class-shortcodes.php:446
    1159 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     1160#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    11601161#: includes/Admin/App/src/components/Dashboard/LiveTraffic.js:20
    11611162#: includes/Admin/App/src/components/Dashboard/LiveTraffic.js:27
     
    11761177
    11771178#: includes/Admin/Mailer/class-mailer.php:52
    1178 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:7
    1179 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     1179#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:7
     1180#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    11801181#: includes/Admin/App/src/components/Settings/SettingsNotices.jsx:74
    11811182#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:403
     
    12211222
    12221223#: includes/Admin/Posts/class-posts.php:33
    1223 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    1224 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    1225 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    1226 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    1227 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     1224#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     1225#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     1226#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     1227#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     1228#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    12281229#: includes/Admin/App/src/api/getGoalsData.js:106
    12291230#: includes/Admin/App/src/components/Dashboard/GoalsBlock.js:50
     
    13601361#: includes/Frontend/class-frontend-statistics.php:640
    13611362#: includes/Traits/trait-sanitize.php:605
    1362 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    1363 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    1364 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     1363#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     1364#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     1365#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    13651366#: includes/Admin/App/src/hooks/useFilterDisplay.js:87
    13661367msgid "New visitors"
     
    13681369
    13691370#. translators: %d is the number of times the page has been viewed.
    1370 #: includes/Frontend/class-frontend.php:463
     1371#: includes/Frontend/class-frontend.php:457
    13711372msgid "This page has been viewed %d time."
    13721373msgid_plural "This page has been viewed %d times."
     
    13951396#: includes/Frontend/Goals/class-goal.php:77
    13961397#: includes/Frontend/Goals/class-goal.php:117
    1397 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     1398#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    13981399#: includes/Admin/App/src/components/Goals/GoalSetup.js:54
    13991400msgid "New goal"
     
    14051406
    14061407#: includes/Integrations/translations.php:22
    1407 #: includes/Pro/Admin/Ecommerce/class-funnel.php:41
    14081408msgid "Add to Cart"
    14091409msgstr ""
     
    14841484msgstr ""
    14851485
    1486 #: includes/Pro/Admin/Archive/class-archive.php:491
     1486#: includes/Pro/Admin/Archive/class-archive.php:513
    14871487msgid "January"
    14881488msgstr ""
    14891489
    1490 #: includes/Pro/Admin/Archive/class-archive.php:492
     1490#: includes/Pro/Admin/Archive/class-archive.php:514
    14911491msgid "February"
    14921492msgstr ""
    14931493
    1494 #: includes/Pro/Admin/Archive/class-archive.php:493
     1494#: includes/Pro/Admin/Archive/class-archive.php:515
    14951495msgid "March"
    14961496msgstr ""
    14971497
    1498 #: includes/Pro/Admin/Archive/class-archive.php:494
     1498#: includes/Pro/Admin/Archive/class-archive.php:516
    14991499msgid "April"
    15001500msgstr ""
    15011501
    1502 #: includes/Pro/Admin/Archive/class-archive.php:495
     1502#: includes/Pro/Admin/Archive/class-archive.php:517
    15031503msgid "May"
    15041504msgstr ""
    15051505
    1506 #: includes/Pro/Admin/Archive/class-archive.php:496
     1506#: includes/Pro/Admin/Archive/class-archive.php:518
    15071507msgid "June"
    15081508msgstr ""
    15091509
    1510 #: includes/Pro/Admin/Archive/class-archive.php:497
     1510#: includes/Pro/Admin/Archive/class-archive.php:519
    15111511msgid "July"
    15121512msgstr ""
    15131513
    1514 #: includes/Pro/Admin/Archive/class-archive.php:498
     1514#: includes/Pro/Admin/Archive/class-archive.php:520
    15151515msgid "August"
    15161516msgstr ""
    15171517
    1518 #: includes/Pro/Admin/Archive/class-archive.php:499
     1518#: includes/Pro/Admin/Archive/class-archive.php:521
    15191519msgid "September"
    15201520msgstr ""
    15211521
    1522 #: includes/Pro/Admin/Archive/class-archive.php:500
     1522#: includes/Pro/Admin/Archive/class-archive.php:522
    15231523msgid "October"
    15241524msgstr ""
    15251525
    1526 #: includes/Pro/Admin/Archive/class-archive.php:501
     1526#: includes/Pro/Admin/Archive/class-archive.php:523
    15271527msgid "November"
    15281528msgstr ""
    15291529
    1530 #: includes/Pro/Admin/Archive/class-archive.php:502
     1530#: includes/Pro/Admin/Archive/class-archive.php:524
    15311531msgid "December"
    15321532msgstr ""
    15331533
    1534 #: includes/Pro/Admin/Ecommerce/class-admin.php:180
    1535 #: includes/Pro/Admin/Statistics/class-statistics.php:165
    1536 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    1537 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    1538 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
    1539 #: includes/Admin/App/src/components/Statistics/DataTableBlock.js:242
    1540 msgid "Sales"
     1534#: includes/Pro/Admin/Ecommerce/class-funnel.php:31
     1535msgid "Visitors started session"
    15411536msgstr ""
    15421537
    15431538#: includes/Pro/Admin/Ecommerce/class-funnel.php:36
    1544 msgid "Product Page Views"
     1539msgid "Viewed a product"
     1540msgstr ""
     1541
     1542#: includes/Pro/Admin/Ecommerce/class-funnel.php:41
     1543msgid "Added to cart"
    15451544msgstr ""
    15461545
    15471546#: includes/Pro/Admin/Ecommerce/class-funnel.php:46
    1548 msgid "Checkout Visits"
     1547msgid "Started checkout"
    15491548msgstr ""
    15501549
    15511550#: includes/Pro/Admin/Ecommerce/class-funnel.php:51
    1552 #: includes/Traits/trait-sanitize.php:606
    1553 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    1554 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    1555 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
    1556 #: includes/Admin/App/src/api/getCompareData.js:19
    1557 #: includes/Admin/App/src/api/getCompareData.js:66
    1558 #: includes/Admin/App/src/components/Statistics/DataTableBlock.js:36
    1559 #: includes/Admin/App/src/components/Statistics/InsightsHeader.js:24
    1560 msgid "Conversions"
    1561 msgstr ""
    1562 
    1563 #: includes/Pro/Admin/Ecommerce/class-quick-wins.php:222
    1564 #: includes/Pro/Admin/Ecommerce/class-quick-wins.php:269
     1551#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     1552msgid "Purchased"
     1553msgstr ""
     1554
     1555#: includes/Pro/Admin/Ecommerce/class-quick-wins.php:247
     1556#: includes/Pro/Admin/Ecommerce/class-quick-wins.php:294
    15651557msgid "Missing quick win ID"
    15661558msgstr ""
     
    15681560#: includes/Pro/Admin/Ecommerce/class-sales.php:145
    15691561#: includes/Traits/trait-sanitize.php:604
    1570 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    1571 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    1572 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    1573 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    1574 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     1562#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     1563#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     1564#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     1565#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     1566#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     1567#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    15751568#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:41
    15761569#: includes/Admin/App/src/store/useFiltersStore.js:107
     
    15801573
    15811574#: includes/Pro/Admin/Ecommerce/class-sales.php:235
     1575#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
    15821576msgid "Abandoned Carts"
    15831577msgstr ""
    15841578
    15851579#: includes/Pro/Admin/Ecommerce/class-sales.php:331
     1580#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
    15861581msgid "Average Order Value"
    15871582msgstr ""
     
    15891584#: includes/Pro/Admin/Ecommerce/class-sales.php:425
    15901585#: includes/Pro/Admin/Statistics/class-statistics.php:166
    1591 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    1592 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:4
    1593 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    1594 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     1586#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     1587#: includes/Admin/App/build/521.246fab661687c647fe82.js:1
     1588#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     1589#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     1590#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    15951591#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:236
    15961592msgid "Revenue"
     
    15991595#: includes/Pro/Admin/Ecommerce/class-top-performers.php:83
    16001596#: includes/Pro/Admin/Ecommerce/class-top-performers.php:162
     1597#: includes/Admin/App/build/521.246fab661687c647fe82.js:1
    16011598msgid "Top device"
    16021599msgstr ""
     
    16041601#: includes/Pro/Admin/Ecommerce/class-top-performers.php:221
    16051602#: includes/Pro/Admin/Ecommerce/class-top-performers.php:304
     1603#: includes/Admin/App/build/521.246fab661687c647fe82.js:1
    16061604msgid "Top country"
    16071605msgstr ""
     
    16091607#: includes/Pro/Admin/Ecommerce/class-top-performers.php:363
    16101608#: includes/Pro/Admin/Ecommerce/class-top-performers.php:449
     1609#: includes/Admin/App/build/521.246fab661687c647fe82.js:1
    16111610msgid "Top campaign"
    16121611msgstr ""
    16131612
    16141613#: includes/Pro/Admin/Ecommerce/class-top-performers.php:500
    1615 #: includes/Pro/Admin/Ecommerce/class-top-performers.php:582
     1614#: includes/Pro/Admin/Ecommerce/class-top-performers.php:591
     1615#: includes/Admin/App/build/521.246fab661687c647fe82.js:1
    16161616msgid "Top product"
    16171617msgstr ""
     
    19861986
    19871987#: includes/Pro/Admin/Statistics/class-statistics.php:153
    1988 #: includes/Pro/class-pro.php:219
    1989 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    1990 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    1991 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    1992 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    1993 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     1988#: includes/Pro/class-pro.php:246
     1989#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     1990#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     1991#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     1992#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     1993#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    19941994#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:124
    19951995#: includes/Admin/App/src/store/useFiltersStore.js:163
     
    19981998
    19991999#: includes/Pro/Admin/Statistics/class-statistics.php:154
    2000 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    2001 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    2002 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    2003 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    2004 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     2000#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     2001#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     2002#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     2003#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     2004#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    20052005#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:137
    20062006#: includes/Admin/App/src/store/useFiltersStore.js:179
     
    20092009
    20102010#: includes/Pro/Admin/Statistics/class-statistics.php:155
    2011 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    2012 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    2013 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    2014 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    2015 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     2011#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     2012#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     2013#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     2014#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     2015#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    20162016#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:131
    20172017#: includes/Admin/App/src/store/useFiltersStore.js:171
     
    20202020
    20212021#: includes/Pro/Admin/Statistics/class-statistics.php:156
    2022 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    2023 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    2024 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     2022#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     2023#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     2024#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    20252025#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:143
    20262026msgid "Continent"
     
    20282028
    20292029#: includes/Pro/Admin/Statistics/class-statistics.php:157
    2030 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    2031 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    2032 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    2033 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    2034 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     2030#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     2031#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     2032#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     2033#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     2034#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    20352035#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:166
    20362036#: includes/Admin/App/src/store/useFiltersStore.js:131
     
    20392039
    20402040#: includes/Pro/Admin/Statistics/class-statistics.php:158
    2041 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    2042 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    2043 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    2044 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    2045 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     2041#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     2042#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     2043#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     2044#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     2045#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    20462046#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:172
    20472047#: includes/Admin/App/src/store/useFiltersStore.js:139
     
    20502050
    20512051#: includes/Pro/Admin/Statistics/class-statistics.php:160
    2052 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    2053 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    2054 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    2055 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    2056 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     2052#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     2053#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     2054#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     2055#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     2056#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    20572057#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:178
    20582058#: includes/Admin/App/src/store/useFiltersStore.js:147
     
    20612061
    20622062#: includes/Pro/Admin/Statistics/class-statistics.php:161
    2063 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    2064 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    2065 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    2066 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    2067 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     2063#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     2064#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     2065#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     2066#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     2067#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    20682068#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:184
    20692069#: includes/Admin/App/src/store/useFiltersStore.js:155
     
    20722072
    20732073#: includes/Pro/Admin/Statistics/class-statistics.php:162
    2074 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    2075 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    2076 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     2074#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     2075#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     2076#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    20772077#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:199
    20782078msgid "Parameter"
     
    20802080
    20812081#: includes/Pro/Admin/Statistics/class-statistics.php:163
    2082 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    2083 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    2084 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     2082#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     2083#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     2084#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    20852085#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:193
    20862086#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:206
     
    20892089
    20902090#: includes/Pro/Admin/Statistics/class-statistics.php:164
    2091 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    2092 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    2093 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     2091#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     2092#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     2093#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    20942094#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:229
    20952095msgid "Product"
     
    21002100#: includes/Pro/Admin/Statistics/class-statistics.php:352
    21012101#: includes/Pro/Admin/Statistics/class-statistics.php:355
    2102 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    2103 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    2104 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:6
    2105 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    2106 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    2107 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    2108 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     2102#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     2103#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     2104#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:6
     2105#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     2106#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     2107#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     2108#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    21092109#: includes/Admin/App/src/components/Dashboard/GoalStatus.js:23
    21102110#: includes/Admin/App/src/components/Dashboard/LiveTraffic.js:122
     
    31533153msgstr ""
    31543154
    3155 #: includes/Pro/class-pro.php:144
    3156 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     3155#: includes/Pro/class-pro.php:169
     3156#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    31573157#: includes/Admin/App/src/components/Fields/LicenseField.js:114
    31583158msgid "License status"
    31593159msgstr ""
    31603160
    3161 #: includes/Pro/class-pro.php:157
     3161#: includes/Pro/class-pro.php:182
    31623162msgid "Top campaigns"
    31633163msgstr ""
    31643164
    3165 #: includes/Pro/class-pro.php:228
     3165#: includes/Pro/class-pro.php:255
    31663166msgid "Countries"
    31673167msgstr ""
    31683168
    3169 #: includes/Pro/class-pro.php:272
    3170 #: includes/Pro/class-pro.php:285
     3169#: includes/Pro/class-pro.php:299
     3170#: includes/Pro/class-pro.php:312
    31713171msgid "40% Off Extra Websites! Expand to more sites"
    31723172msgstr ""
     
    31923192
    31933193#: includes/Traits/trait-sanitize.php:596
    3194 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3195 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3196 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3197 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3198 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3194#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3195#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3196#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3197#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3198#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    31993199#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:85
    32003200#: includes/Admin/App/src/store/useFiltersStore.js:77
     
    32033203
    32043204#: includes/Traits/trait-sanitize.php:597
    3205 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3206 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3207 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3208 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3209 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3205#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3206#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3207#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3208#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3209#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    32103210#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:93
    32113211#: includes/Admin/App/src/store/useFiltersStore.js:35
     
    32143214
    32153215#: includes/Traits/trait-sanitize.php:598
    3216 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3217 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3218 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3219 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3220 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3216#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3217#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3218#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3219#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3220#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    32213221#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:108
    32223222#: includes/Admin/App/src/store/useFiltersStore.js:44
     
    32253225
    32263226#: includes/Traits/trait-sanitize.php:602
    3227 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3228 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3229 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3227#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3228#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3229#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    32303230#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:53
    32313231msgid "Time on page"
     
    32333233
    32343234#: includes/Traits/trait-sanitize.php:603
    3235 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
     3235#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
    32363236#: includes/Admin/App/src/store/useGeoStore.js:49
    32373237msgid "Avg. Session Duration"
    32383238msgstr ""
    32393239
     3240#: includes/Traits/trait-sanitize.php:606
     3241#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3242#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3243#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
     3244#: includes/Admin/App/src/api/getCompareData.js:19
     3245#: includes/Admin/App/src/api/getCompareData.js:66
     3246#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:36
     3247#: includes/Admin/App/src/components/Statistics/InsightsHeader.js:24
     3248msgid "Conversions"
     3249msgstr ""
     3250
    32403251#: includes/Traits/trait-sanitize.php:607
    3241 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3242 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3243 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3252#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3253#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3254#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    32443255#: includes/Admin/App/src/hooks/useFilterDisplay.js:82
    32453256msgid "Bounced visitors"
     
    32483259#: includes/Traits/trait-sanitize.php:609
    32493260#: includes/Traits/trait-sanitize.php:612
    3250 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3251 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3252 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3253 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3261#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3262#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3263#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3264#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    32543265#: includes/Admin/App/src/store/useFiltersStore.js:68
    32553266msgid "Device"
     
    32583269#: includes/Traits/trait-sanitize.php:610
    32593270#: includes/Traits/trait-sanitize.php:613
    3260 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3261 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3262 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3263 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3271#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3272#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3273#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3274#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    32643275#: includes/Admin/App/src/store/useFiltersStore.js:203
    32653276msgid "Browser"
     
    32713282msgstr ""
    32723283
    3273 #: includes/Admin/App/build/227.97a6e08e153794c552fd.js:1
    3274 #: includes/Admin/App/build/718.ac8350f40ab304e3f014.js:1
    3275 #: includes/Admin/App/build/961.841ff3b000931479bb8d.js:1
    3276 #: includes/Admin/App/src/routes/sales.jsx:25
    3277 #: includes/Admin/App/src/routes/sources.jsx:21
    3278 #: includes/Admin/App/src/routes/statistics.jsx:17
    3279 msgid "An error occurred loading statistics"
    3280 msgstr ""
    3281 
    32823284#: includes/Admin/App/build/258.df7e096fe424cde82270.js:1
    32833285#: includes/Admin/App/src/routes/settings.$settingsId.jsx:46
     
    32853287msgstr ""
    32863288
    3287 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:1
    3288 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:1
    3289 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:1
    3290 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3289#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:1
     3290#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:1
     3291#: includes/Admin/App/build/521.246fab661687c647fe82.js:1
     3292#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    32913293#: includes/Admin/App/src/components/Common/ClickToFilter.js:107
    32923294msgid "Click to filter by:"
    32933295msgstr ""
    32943296
    3295 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:1
    3296 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:1
    3297 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:1
    3298 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3297#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:1
     3298#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:1
     3299#: includes/Admin/App/build/521.246fab661687c647fe82.js:1
     3300#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    32993301#: includes/Admin/App/src/components/Common/ClickToFilter.js:108
    33003302msgid "Click to filter"
    33013303msgstr ""
    33023304
    3303 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:1
    3304 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:1
    3305 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:1
    3306 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3305#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:1
     3306#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:1
     3307#: includes/Admin/App/build/521.246fab661687c647fe82.js:1
     3308#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    33073309#: includes/Admin/App/src/components/Common/ClickToFilter.js:113
    33083310msgid "Open in new tab"
    33093311msgstr ""
    33103312
    3311 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:1
    3312 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:1
    3313 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:1
    3314 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3313#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:1
     3314#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:1
     3315#: includes/Admin/App/build/521.246fab661687c647fe82.js:1
     3316#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    33153317#: includes/Admin/App/src/components/Common/ClickToFilter.js:162
    33163318msgid "Filtering by goal & goal specific page"
    33173319msgstr ""
    33183320
    3319 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:1
    3320 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:1
    3321 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:1
    3322 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3321#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:1
     3322#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:1
     3323#: includes/Admin/App/build/521.246fab661687c647fe82.js:1
     3324#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    33233325#: includes/Admin/App/src/components/Common/ClickToFilter.js:165
    33243326msgid "Filtering by goal"
    33253327msgstr ""
    33263328
    3327 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:1
    3328 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3329 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3330 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3331 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3329#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:1
     3330#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3331#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3332#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3333#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    33323334msgid "Help information"
    33333335msgstr ""
    33343336
    3335 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:1
     3337#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:1
    33363338#: includes/Admin/App/src/components/Dashboard/TaskElement.js:19
    33373339msgid "Get 40% Off"
    33383340msgstr ""
    33393341
    3340 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:1
     3342#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:1
    33413343#: includes/Admin/App/src/components/Dashboard/TaskElement.js:20
    33423344msgid "Get 3 months free!"
    33433345msgstr ""
    33443346
    3345 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:1
    3346 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3347 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     3347#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:1
     3348#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3349#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    33483350#: includes/Admin/App/src/components/Dashboard/TaskElement.js:21
    33493351#: includes/Admin/App/src/components/Fields/LicenseField.js:152
     
    33523354msgstr ""
    33533355
    3354 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:1
     3356#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:1
    33553357#: includes/Admin/App/src/components/Dashboard/TaskElement.js:27
    33563358msgid "Fix"
     
    33583360
    33593361#. Translators: %d is the number of live visitors.
    3360 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3362#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    33613363msgid "%d person is exploring your site right now"
    33623364msgid_plural "%d people are exploring your site right now"
     
    33643366msgstr[1] ""
    33653367
    3366 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3367 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     3368#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3369#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    33683370#: includes/Admin/App/src/components/Goals/GoalsSettings.js:40
    33693371msgid "View"
    33703372msgstr ""
    33713373
    3372 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3374#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    33733375msgid "Loading tasks..."
    33743376msgstr ""
    33753377
    3376 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3377 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     3378#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3379#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
    33783380#: includes/Admin/App/src/components/Dashboard/LiveTraffic.js:250
    33793381msgid "Loading..."
    33803382msgstr ""
    33813383
    3382 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3384#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    33833385msgid "No remaining tasks to show"
    33843386msgstr ""
    33853387
    3386 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3388#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    33873389#: includes/Admin/App/src/components/Dashboard/OverviewFooter.js:31
    33883390msgid "Just now"
    33893391msgstr ""
    33903392
    3391 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3393#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    33923394#: includes/Admin/App/src/components/Dashboard/OverviewFooter.js:42
    33933395msgid "Last checked:"
    33943396msgstr ""
    33953397
    3396 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3398#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    33973399#: includes/Admin/App/src/components/Dashboard/OverviewFooter.js:47
    33983400msgid "Loading tracking status..."
    33993401msgstr ""
    34003402
    3401 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3403#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34023404#: includes/Admin/App/src/components/Dashboard/OverviewFooter.js:48
    34033405msgid "Error checking tracking status"
    34043406msgstr ""
    34053407
    3406 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3408#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34073409#: includes/Admin/App/src/components/Dashboard/OverviewFooter.js:49
    34083410msgid "Tracking with REST API"
    34093411msgstr ""
    34103412
    3411 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3413#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34123414#: includes/Admin/App/src/components/Dashboard/OverviewFooter.js:50
    34133415msgid "Tracking with an endpoint"
    34143416msgstr ""
    34153417
    3416 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3418#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34173419#: includes/Admin/App/src/components/Dashboard/OverviewFooter.js:51
    34183420#: includes/Admin/App/src/components/Dashboard/OverviewFooter.js:67
     
    34203422msgstr ""
    34213423
    3422 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3424#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34233425#: includes/Admin/App/src/components/Dashboard/OverviewFooter.js:55
    34243426msgid "Tracking does not seem to work. Check manually or contact support."
    34253427msgstr ""
    34263428
    3427 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3429#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34283430#: includes/Admin/App/src/components/Dashboard/OverviewFooter.js:59
    34293431msgid "Tracking is working. You are using the REST API to collect statistics."
    34303432msgstr ""
    34313433
    3432 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3434#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34333435#: includes/Admin/App/src/components/Dashboard/OverviewFooter.js:63
    34343436msgid "Tracking is working. You are using the Burst endpoint to collect statistics. This type of tracking is accurate and lightweight."
    34353437msgstr ""
    34363438
    3437 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3439#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34383440#: includes/Admin/App/src/components/Dashboard/OverviewFooter.js:100
    34393441msgid "View my statistics"
    34403442msgstr ""
    34413443
    3442 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3444#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34433445#: includes/Admin/App/src/components/Dashboard/LiveTraffic.js:50
    34443446msgid "%s second ago"
     
    34473449msgstr[1] ""
    34483450
    3449 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3451#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34503452#: includes/Admin/App/src/components/Dashboard/LiveTraffic.js:60
    34513453msgid "%s minute ago"
     
    34543456msgstr[1] ""
    34553457
    3456 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3458#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34573459#: includes/Admin/App/src/components/Dashboard/LiveTraffic.js:141
    34583460msgid "User is checking out"
    34593461msgstr ""
    34603462
    3461 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3463#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34623464#: includes/Admin/App/src/components/Dashboard/LiveTraffic.js:143
    34633465msgid "User just entered the site"
    34643466msgstr ""
    34653467
    3466 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3468#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34673469#: includes/Admin/App/src/components/Dashboard/LiveTraffic.js:145
    34683470msgid "User just left the site"
    34693471msgstr ""
    34703472
    3471 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3473#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34723474#: includes/Admin/App/src/components/Dashboard/LiveTraffic.js:147
    34733475msgid "User is actively browsing"
    34743476msgstr ""
    34753477
    3476 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3478#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34773479#: includes/Admin/App/src/components/Dashboard/LiveTraffic.js:158
    34783480msgid "User ID:"
    34793481msgstr ""
    34803482
    3481 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3483#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34823484#: includes/Admin/App/src/components/Dashboard/LiveTraffic.js:276
    34833485msgid "No live visitors right now"
    34843486msgstr ""
    34853487
    3486 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3488#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34873489#: includes/Admin/App/src/components/Dashboard/LiveTraffic.js:278
    34883490msgid "When someone visits your site, you’ll see them here instantly. "
    34893491msgstr ""
    34903492
    3491 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3493#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34923494#: includes/Admin/App/src/components/Dashboard/OverviewBlock.js:65
    34933495msgid "Activity"
    34943496msgstr ""
    34953497
    3496 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3498#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    34973499#: includes/Admin/App/src/components/Dashboard/OverviewBlock.js:69
    34983500msgid "Live visitors"
    34993501msgstr ""
    35003502
    3501 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3503#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    35023504#: includes/Admin/App/src/components/Dashboard/OverviewBlock.js:76
    35033505msgid "Overview"
    35043506msgstr ""
    35053507
    3506 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3508#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    35073509#: includes/Admin/App/src/components/Dashboard/TodayBlock.js:38
    35083510#: includes/Admin/App/src/components/Dashboard/TodayBlock.js:101
     
    35133515msgstr ""
    35143516
    3515 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3517#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    35163518#: includes/Admin/App/src/api/getGoalsData.js:33
    35173519#: includes/Admin/App/src/api/getGoalsData.js:110
     
    35263528msgstr ""
    35273529
    3528 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3530#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    35293531#: includes/Admin/App/src/components/Dashboard/GoalStatus.js:32
    35303532msgid "Started"
    35313533msgstr ""
    35323534
    3533 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3535#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    35343536#: includes/Admin/App/src/components/Dashboard/GoalStatus.js:33
    35353537msgid "Created"
    35363538msgstr ""
    35373539
    3538 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3539 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     3540#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3541#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    35403542#: includes/Admin/App/src/components/Dashboard/GoalStatus.js:19
    35413543#: includes/Admin/App/src/components/Goals/GoalSetup.js:64
     
    35433545msgstr ""
    35443546
    3545 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3546 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     3547#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3548#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    35473549#: includes/Admin/App/src/components/Dashboard/GoalStatus.js:21
    35483550#: includes/Admin/App/src/components/Goals/GoalSetup.js:64
     
    35503552msgstr ""
    35513553
    3552 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3553 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     3554#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3555#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    35543556#: includes/Admin/App/src/components/Dashboard/GoalsHeader.js:35
    35553557#: includes/Admin/App/src/components/Fields/EditableTextField.jsx:73
     
    35573559msgstr ""
    35583560
    3559 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3561#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    35603562#: includes/Admin/App/src/api/getGoalsData.js:84
    35613563msgid "Calculated by:"
    35623564msgstr ""
    35633565
    3564 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3566#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    35653567#: includes/Admin/App/src/api/getGoalsData.js:86
    35663568msgid "Total amount of goals reached "
    35673569msgstr ""
    35683570
    3569 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3571#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    35703572#: includes/Admin/App/src/api/getGoalsData.js:88
    35713573msgid "Total amount of"
    35723574msgstr ""
    35733575
    3574 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3576#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    35753577#: includes/Admin/App/src/api/getGoalsData.js:98
    35763578msgid "No data available yet"
    35773579msgstr ""
    35783580
    3579 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3581#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    35803582#: includes/Admin/App/src/components/Dashboard/GoalsBlock.js:215
    35813583msgid "Goal and today"
    35823584msgstr ""
    35833585
    3584 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3586#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    35853587#: includes/Admin/App/src/components/Dashboard/GoalsBlock.js:224
    35863588msgid "Goal and the start date"
    35873589msgstr ""
    35883590
    3589 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3591#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    35903592#: includes/Admin/App/src/components/Dashboard/GoalsBlock.js:238
    35913593msgid "Keep track of customizable goals and get valuable insights. Add your first goal!"
    35923594msgstr ""
    35933595
    3594 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3596#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    35953597#: includes/Admin/App/src/components/Dashboard/GoalsBlock.js:250
    35963598msgid "Learn how to set your first goal"
    35973599msgstr ""
    35983600
    3599 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3601#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    36003602#: includes/Admin/App/src/components/Dashboard/GoalsBlock.js:258
    36013603msgid "Create my first goal"
    36023604msgstr ""
    36033605
    3604 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3606#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    36053607#: includes/Admin/App/src/components/Dashboard/GoalsBlock.js:271
    36063608msgid "Error loading goals data. Please try again later."
    36073609msgstr ""
    36083610
    3609 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3611#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    36103612#: includes/Admin/App/src/components/Dashboard/GoalsBlock.js:335
    36113613msgid "View setup"
    36123614msgstr ""
    36133615
    3614 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3616#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    36153617#: includes/Admin/App/src/components/Dashboard/TipsTricksBlock.js:37
    36163618msgid "Tips & Tricks"
    36173619msgstr ""
    36183620
    3619 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3621#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    36203622#: includes/Admin/App/src/components/Dashboard/TipsTricksBlock.js:65
    36213623msgid "View all"
    36223624msgstr ""
    36233625
    3624 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3626#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    36253627#: includes/Admin/App/src/components/Dashboard/OtherPluginsBlock.js:17
    36263628#: includes/TeamUpdraft/Other_Plugins/build/index.js:1
     
    36293631msgstr ""
    36303632
    3631 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3633#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    36323634#: includes/Admin/App/src/components/Dashboard/OtherPluginsBlock.js:18
    36333635#: includes/Admin/App/src/components/Dashboard/OtherPluginsBlock.js:19
     
    36383640msgstr ""
    36393641
    3640 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3642#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    36413643#: includes/Admin/App/src/components/Dashboard/OtherPluginsBlock.js:212
    36423644#: includes/Admin/App/src/components/Dashboard/OtherPluginsBlock.js:237
     
    36463648msgstr ""
    36473649
    3648 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3650#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    36493651#: includes/Admin/App/src/components/Dashboard/OtherPluginsBlock.js:222
    36503652msgid "Loading.."
    36513653msgstr ""
    36523654
    3653 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
     3655#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
    36543656#: includes/Admin/App/src/components/Dashboard/OtherPluginsBlock.js:184
    36553657#: includes/TeamUpdraft/Other_Plugins/build/index.js:1
     
    36583660msgstr ""
    36593661
    3660 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3661 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3662 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3663 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3664 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3662#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3663#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3664#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3665#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3666#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    36653667#: includes/Admin/App/src/hooks/useGoalsData.js:108
    36663668msgid "Failed to save goals"
    36673669msgstr ""
    36683670
    3669 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3670 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3671 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3672 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3673 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3671#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3672#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3673#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3674#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3675#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    36743676#: includes/Admin/App/src/hooks/useGoalsData.js:120
    36753677msgid "Failed to save goal title"
    36763678msgstr ""
    36773679
    3678 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3679 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3680 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3681 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3682 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3680#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3681#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3682#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3683#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3684#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    36833685#: includes/Admin/App/src/hooks/useGoalsData.js:140
    36843686msgid "Goal added successfully!"
    36853687msgstr ""
    36863688
    3687 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3688 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3689 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3690 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3691 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3689#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3690#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3691#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3692#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3693#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    36923694#: includes/Admin/App/src/hooks/useGoalsData.js:144
    36933695msgid "Failed to add goal"
    36943696msgstr ""
    36953697
    3696 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3697 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3698 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3699 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3700 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3698#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3699#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3700#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3701#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3702#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    37013703#: includes/Admin/App/src/hooks/useGoalsData.js:176
    37023704msgid "Goal deleted successfully!"
    37033705msgstr ""
    37043706
    3705 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3706 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3707 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3708 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3709 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3707#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3708#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3709#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3710#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3711#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    37103712#: includes/Admin/App/src/hooks/useGoalsData.js:181
    37113713msgid "Failed to delete goal"
    37123714msgstr ""
    37133715
    3714 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3715 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3716 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3717 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3718 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
    3719 #: includes/Admin/App/src/hooks/useGoalsData.js:193
     3716#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3717#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3718#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3719#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3720#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
     3721#: includes/Admin/App/src/hooks/useGoalsData.js:189
    37203722msgid "Predefined goals are a premium feature."
    37213723msgstr ""
    37223724
    3723 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3724 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3725 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3726 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3727 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3725#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3726#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3727#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3728#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3729#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
     3730#: includes/Admin/App/src/hooks/useGoalsData.js:205
     3731msgid "Successfully added predefined goal!"
     3732msgstr ""
     3733
     3734#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3735#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3736#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3737#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3738#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    37283739#: includes/Admin/App/src/hooks/useGoalsData.js:209
    3729 msgid "Successfully added predefined goal!"
    3730 msgstr ""
    3731 
    3732 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3733 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3734 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3735 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3736 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
    3737 #: includes/Admin/App/src/hooks/useGoalsData.js:213
    37383740msgid "Failed to add predefined goal"
    37393741msgstr ""
    37403742
    3741 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3742 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3743 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3744 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3743#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3744#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3745#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3746#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    37453747#: includes/Admin/App/src/store/useFiltersStore.js:10
    37463748msgid "Context"
    37473749msgstr ""
    37483750
    3749 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3750 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3751 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3752 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3751#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3752#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3753#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3754#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    37533755#: includes/Admin/App/src/store/useFiltersStore.js:20
    37543756msgid "Behavior"
    37553757msgstr ""
    37563758
    3757 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3758 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3759 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3760 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3759#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3760#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3761#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3762#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    37613763#: includes/Admin/App/src/store/useFiltersStore.js:25
    37623764msgid "Location"
    37633765msgstr ""
    37643766
    3765 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3766 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3767 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3768 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3767#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3768#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3769#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3770#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    37693771#: includes/Admin/App/src/store/useFiltersStore.js:53
    37703772msgid "Goal"
    37713773msgstr ""
    37723774
    3773 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3774 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3775 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3776 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3775#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3776#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3777#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3778#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    37773779#: includes/Admin/App/src/store/useFiltersStore.js:61
    37783780msgid "Bounced Visitors"
    37793781msgstr ""
    37803782
    3781 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3782 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3783 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3784 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3783#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3784#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3785#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3786#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    37853787#: includes/Admin/App/src/store/useFiltersStore.js:85
    37863788msgid "New Visitors"
    37873789msgstr ""
    37883790
    3789 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3790 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3791 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3792 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3793 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3791#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3792#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3793#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3794#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3795#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    37943796#: includes/Admin/App/src/api/getCompareData.js:15
    37953797#: includes/Admin/App/src/api/getCompareData.js:55
     
    38003802msgstr ""
    38013803
    3802 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3803 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3804 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3805 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3804#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3805#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3806#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3807#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    38063808#: includes/Admin/App/src/store/useFiltersStore.js:100
    38073809msgid "Entry or exit page"
    38083810msgstr ""
    38093811
    3810 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3811 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3812 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3813 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3812#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3813#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3814#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3815#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    38143816#: includes/Admin/App/src/store/useFiltersStore.js:115
    38153817msgid "URL Parameter"
    38163818msgstr ""
    38173819
    3818 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3819 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3820 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3821 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3820#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3821#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3822#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3823#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    38223824#: includes/Admin/App/src/store/useFiltersStore.js:187
    38233825msgid "Time per Session"
    38243826msgstr ""
    38253827
    3826 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3827 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3828 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3829 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3828#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3829#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3830#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3831#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    38303832#: includes/Admin/App/src/store/useFiltersStore.js:195
    38313833msgid "Operating System"
    38323834msgstr ""
    38333835
    3834 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3835 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3836 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3837 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3838 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3839 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
    3840 #: includes/Admin/App/src/api/getDataTableData.js:134
    3841 #: includes/Admin/App/src/api/getDataTableData.js:201
     3836#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3837#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3838#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3839#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3840#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3841#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
     3842#: includes/Admin/App/src/api/getDataTableData.js:132
     3843#: includes/Admin/App/src/api/getDataTableData.js:199
    38423844#: includes/Admin/App/src/utils/formatting.js:259
    38433845#: includes/Admin/App/src/utils/formatting.js:266
     
    38453847msgstr ""
    38463848
    3847 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3848 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3849 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3850 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3851 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3849#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3850#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3851#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3852#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3853#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    38523854#: includes/Admin/App/src/utils/formatting.js:302
    38533855#: includes/Admin/Dashboard_Widget/build/index.js:1
     
    38553857msgstr ""
    38563858
    3857 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3858 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3859 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3860 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3861 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3859#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3860#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3861#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3862#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3863#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    38623864#: includes/Admin/App/src/utils/formatting.js:309
    38633865#: includes/Admin/Dashboard_Widget/build/index.js:1
     
    38653867msgstr ""
    38663868
    3867 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3868 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3869 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3870 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3871 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3869#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3870#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3871#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3872#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3873#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    38723874#: includes/Admin/App/src/utils/formatting.js:316
    38733875#: includes/Admin/Dashboard_Widget/build/index.js:1
     
    38753877msgstr ""
    38763878
    3877 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3878 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3879 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3880 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3881 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3879#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3880#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3881#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3882#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3883#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    38823884#: includes/Admin/App/src/utils/formatting.js:323
    38833885#: includes/Admin/Dashboard_Widget/build/index.js:1
     
    38853887msgstr ""
    38863888
    3887 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3888 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3889 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3890 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3891 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3889#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3890#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3891#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3892#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3893#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    38923894#: includes/Admin/App/src/utils/formatting.js:330
    38933895#: includes/Admin/Dashboard_Widget/build/index.js:1
     
    38953897msgstr ""
    38963898
    3897 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3898 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3899 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3900 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3901 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3899#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3900#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3901#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3902#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3903#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    39023904#: includes/Admin/App/src/utils/formatting.js:337
    39033905#: includes/Admin/Dashboard_Widget/build/index.js:1
     
    39053907msgstr ""
    39063908
    3907 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3908 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3909 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3910 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3911 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3909#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3910#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3911#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3912#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3913#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    39123914#: includes/Admin/App/src/utils/formatting.js:344
    39133915#: includes/Admin/Dashboard_Widget/build/index.js:1
     
    39153917msgstr ""
    39163918
    3917 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3918 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3919 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3920 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3921 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3919#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3920#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3921#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3922#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3923#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    39223924#: includes/Admin/App/src/utils/formatting.js:351
    39233925#: includes/Admin/Dashboard_Widget/build/index.js:1
     
    39253927msgstr ""
    39263928
    3927 #: includes/Admin/App/build/371.4a609543a67c13e7ac16.js:3
    3928 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    3929 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3930 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3931 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3929#: includes/Admin/App/build/371.0356c2d3d0da0fd35f76.js:3
     3930#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     3931#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3932#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3933#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    39323934#: includes/Admin/App/src/utils/formatting.js:358
    39333935#: includes/Admin/Dashboard_Widget/build/index.js:1
     
    39363938
    39373939#. translators: %s is description of the trial feature.
    3938 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3939 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:4
     3940#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3941#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    39403942msgid "%s Enjoy full access for the remainder of your trial."
    39413943msgstr ""
    39423944
    3943 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3944 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:4
     3945#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3946#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    39453947msgid "Compare all plans"
    39463948msgstr ""
    39473949
    3948 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3949 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:4
     3950#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3951#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    39503952msgid "You're exploring the Sources dashboard"
    39513953msgstr ""
    39523954
    3953 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3954 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:4
     3955#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3956#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    39553957msgid "A key feature of our all premium plans."
    39563958msgstr ""
    39573959
    3958 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3959 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:4
     3960#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3961#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    39603962msgid "You're exploring the Reporting dashboard"
    39613963msgstr ""
    39623964
    3963 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3964 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:4
     3965#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3966#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    39653967msgid "A key feature of our Agency plan."
    39663968msgstr ""
    39673969
    3968 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3969 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:4
     3970#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3971#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    39703972msgid "You're exploring the Sales dashboard"
    39713973msgstr ""
    39723974
    3973 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3974 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:4
     3975#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3976#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    39753977msgid "A key feature of our Business and Agency plans."
    39763978msgstr ""
    39773979
    3978 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3979 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    3980 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3981 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3980#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3981#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3982#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     3983#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    39823984#: includes/Admin/App/src/components/Common/SearchButton.js:18
    3983 #: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:292
     3985#: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:315
    39843986msgid "Search"
    39853987msgstr ""
    39863988
    3987 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3988 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3989 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3989#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3990#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3991#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    39903992#: includes/Admin/App/src/components/Common/SearchButton.js:104
    39913993msgid "Clear search"
    39923994msgstr ""
    39933995
    3994 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    3995 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    3996 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     3996#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     3997#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     3998#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    39973999#: includes/Admin/App/src/components/Common/ProPopover.js:46
    39984000msgid "Pro features include:"
    39994001msgstr ""
    40004002
    4001 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4002 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4003 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4003#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4004#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4005#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    40044006#: includes/Admin/App/src/components/Common/ProPopover.js:74
    40054007msgid "Learn More"
    40064008msgstr ""
    40074009
    4008 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4009 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4010 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4010#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4011#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4012#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    40114013#: includes/Admin/App/src/components/Statistics/EmptyDataTable.js:26
    40124014msgid "Loading data..."
    40134015msgstr ""
    40144016
    4015 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4016 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4017 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4017#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4018#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4019#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    40184020#: includes/Admin/App/src/components/Statistics/EmptyDataTable.js:35
    40194021msgid "Error:"
    40204022msgstr ""
    40214023
    4022 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4023 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4024 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4024#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4025#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4026#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    40254027#: includes/Admin/App/src/components/Statistics/EmptyDataTable.js:44
    40264028msgid "No data available in table"
    40274029msgstr ""
    40284030
    4029 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4030 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4031 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4031#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4032#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4033#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    40324034#: includes/Admin/App/src/components/Statistics/EmptyDataTable.js:52
    40334035msgid "Unexpected error"
    40344036msgstr ""
    40354037
    4036 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4037 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4038 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
    4039 #: includes/Admin/App/src/api/getDataTableData.js:289
     4038#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4039#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4040#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
     4041#: includes/Admin/App/src/api/getDataTableData.js:287
    40404042msgid "The test resulted in a tie. More hits might still result in a winner, but the difference will probably be very small."
    40414043msgstr ""
    40424044
    4043 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4044 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4045 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
    4046 #: includes/Admin/App/src/api/getDataTableData.js:293
     4045#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4046#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4047#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
     4048#: includes/Admin/App/src/api/getDataTableData.js:291
    40474049msgid "Not enough data yet to declare a winner or tie."
    40484050msgstr ""
    40494051
    4050 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4051 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4052 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
    4053 #: includes/Admin/App/src/api/getDataTableData.js:297
     4052#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4053#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4054#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
     4055#: includes/Admin/App/src/api/getDataTableData.js:295
    40544056msgid "Winner of the A/B test with a probability of >95%."
    40554057msgstr ""
    40564058
    4057 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4058 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4059 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
    4060 #: includes/Admin/App/src/api/getDataTableData.js:298
     4059#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4060#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4061#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
     4062#: includes/Admin/App/src/api/getDataTableData.js:296
    40614063msgid "Least performant version of the A/B test with a probability of >95%."
    40624064msgstr ""
    40634065
    4064 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4065 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4066 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4066#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4067#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4068#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    40674069#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:79
    40684070msgid "Pages"
    40694071msgstr ""
    40704072
    4071 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4072 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4073 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4073#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4074#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4075#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    40744076#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:118
    40754077msgid "Locations"
    40764078msgstr ""
    40774079
    4078 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4079 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4080 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4080#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4081#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4082#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    40814083#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:153
    40824084msgid "Campaigns"
    40834085msgstr ""
    40844086
    4085 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4086 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4087 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4087#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4088#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4089#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    40884090#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:215
    40894091msgid "Dummy"
    40904092msgstr ""
    40914093
    4092 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4093 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4094 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4094#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4095#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4096#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    40954097#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:223
    40964098msgid "Products"
    40974099msgstr ""
    40984100
    4099 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4100 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    4101 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4102 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
    4103 #: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:365
     4101#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4102#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4103#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     4104#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
     4105#: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:388
    41044106#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:436
    41054107msgid "of"
    41064108msgstr ""
    41074109
    4108 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4109 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    4110 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4111 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
    4112 #: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:368
     4110#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4111#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4112#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     4113#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
     4114#: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:391
    41134115#: includes/Admin/App/src/components/Statistics/DataTableBlock.js:439
    41144116msgid "All"
    41154117msgstr ""
    41164118
    4117 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4118 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4119#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4120#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41194121msgid "Unlock Sales Performance"
    41204122msgstr ""
    41214123
    4122 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4123 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4124#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4125#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41244126msgid "Gain valuable insights into your store’s revenue, top products, and sales trends."
    41254127msgstr ""
    41264128
    4127 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4128 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4129#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4130#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41294131msgid "Your current license does not include the Sales dashboard."
    41304132msgstr ""
    41314133
    4132 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4133 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4134#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4135#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41344136msgid "Is your checkout costing you sales?"
    41354137msgstr ""
    41364138
    4137 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4138 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4139#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4140#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41394141msgid "You work hard to bring visitors to your site. But do you know why some buy and others leave? Without the right insights, it’s impossible to see where your funnel is leaking revenue. Burst Pro reveals what’s working, what’s broken, and where you can make small changes that drive big results."
    41404142msgstr ""
    41414143
    4142 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4143 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4144#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4145#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41444146msgid "Find drop-offs: See exactly where visitors leave in your checkout funnel."
    41454147msgstr ""
    41464148
    4147 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4148 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4149#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4150#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41494151msgid "Reduce cart abandonment: Identify checkout issues before they cost sales."
    41504152msgstr ""
    41514153
    4152 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4153 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4154#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4155#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41544156msgid "Spot opportunities: Learn which products, channels, and devices generate the most revenue."
    41554157msgstr ""
    41564158
    4157 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4158 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4159#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4160#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41594161msgid "Are your visitors buying, or just browsing?"
    41604162msgstr ""
    41614163
    4162 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4163 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4164#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4165#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41644166msgid "Uncover checkout drop‑offs"
    41654167msgstr ""
    41664168
    4167 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4168 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4169#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4170#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41694171msgid "Spot and fix cart abandonment issues"
    41704172msgstr ""
    41714173
    4172 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4173 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4174#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4175#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41744176msgid "See which products and channels earn revenue"
    41754177msgstr ""
    41764178
    4177 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4178 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4179#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4180#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41794181msgid "Unlock Source Insights"
    41804182msgstr ""
    41814183
    4182 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4183 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4184#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4185#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41844186msgid "Get detailed insights into where your traffic comes from."
    41854187msgstr ""
    41864188
    4187 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4188 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4189#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4190#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41894191msgid "Are you just guessing with your marketing?"
    41904192msgstr ""
    41914193
    4192 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4193 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4194#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4195#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41944196msgid "You spend time and money creating campaigns, but can't see what's actually working. Are your newsletters driving traffic or just getting opened? Is your social media budget paying off? Without clear tracking, you're making decisions in the dark, which is inefficient and frustrating."
    41954197msgstr ""
    41964198
    4197 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4198 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4199#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4200#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    41994201msgid "Stop guessing: Track UTM campaigns to see which channels deliver real visitors."
    42004202msgstr ""
    42014203
    4202 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4203 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4204#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4205#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    42044206msgid "Optimize with confidence: Refine on-site promotions by analyzing custom URL parameters."
    42054207msgstr ""
    42064208
    4207 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4208 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4209#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4210#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    42094211msgid "Go beyond numbers: Visualize exactly where your visitors are with an interactive world map."
    42104212msgstr ""
    42114213
    4212 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4213 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4214#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4215#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    42144216msgid "Turn your traffic into targeted growth."
    42154217msgstr ""
    42164218
    4217 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4218 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4219#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4220#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    42194221msgid "Effective growth comes from understanding your audience on a deeper level. Burst Pro provides the tools to see not just how many people visit, but who they are and what brought them to you, so you can focus your efforts where they matter most."
    42204222msgstr ""
    42214223
    4222 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4223 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4224#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4225#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    42244226msgid "Measure the success of your marketing with automatic UTM campaign tracking."
    42254227msgstr ""
    42264228
    4227 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4228 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4229#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4230#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    42294231msgid "Optimize your website by tracking how visitors interact with specific parameters."
    42304232msgstr ""
    42314233
    4232 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4233 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4234#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4235#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    42344236msgid "Tailor your content by identifying key visitor locations, from country down to the city."
    42354237msgstr ""
    42364238
    4237 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4238 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4239#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4240#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    42394241msgid "Already have a license? Activate it to access these features."
    42404242msgstr ""
    42414243
    4242 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4243 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    4244 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4244#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4245#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4246#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    42454247#: includes/Admin/App/src/components/Fields/LicenseField.js:103
    42464248msgid "Activate License"
    42474249msgstr ""
    42484250
    4249 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4250 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4251#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4252#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    42514253msgid "Upgrade Plan"
    42524254msgstr ""
    42534255
    4254 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4255 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4256#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4257#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
    42564258msgid "Learn about all features"
    42574259msgstr ""
    42584260
    4259 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4260 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4261 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4261#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4262#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4263#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    42624264#: includes/Admin/App/src/hooks/useFilterDisplay.js:83
    42634265msgid "Active visitors"
    42644266msgstr ""
    42654267
    4266 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4267 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4268 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4268#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4269#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4270#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    42694271#: includes/Admin/App/src/hooks/useFilterDisplay.js:88
    42704272msgid "Returning visitors"
    42714273msgstr ""
    42724274
    4273 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4274 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4275 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4275#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4276#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4277#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    42764278#: includes/Admin/App/src/components/Filters/Display/FilterChip.js:61
    42774279msgid "Edit %s filter"
    42784280msgstr ""
    42794281
    4280 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4281 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4282 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4282#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4283#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4284#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    42834285#: includes/Admin/App/src/components/Filters/Display/FilterChip.js:62
    42844286msgid "Click to edit filter"
    42854287msgstr ""
    42864288
    4287 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4288 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4289 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4289#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4290#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4291#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    42904292#: includes/Admin/App/src/components/Filters/Display/FilterChip.js:81
    42914293#: includes/Admin/App/src/components/Filters/Display/FilterChip.js:82
     
    42934295msgstr ""
    42944296
    4295 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4296 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4297 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4297#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4298#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4299#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    42984300#: includes/Admin/App/src/components/Filters/Display/AddFilterButton.js:16
    42994301msgid "Add filter"
    43004302msgstr ""
    43014303
    4302 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4303 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4304 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4304#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4305#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4306#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43054307msgid "currently active"
    43064308msgstr ""
    43074309
    4308 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4309 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4310 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4310#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4311#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4312#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43114313msgid "Pro feature"
    43124314msgstr ""
    43134315
    4314 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4315 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4316 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4316#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4317#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4318#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43174319msgid "coming soon"
    43184320msgstr ""
    43194321
    4320 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4321 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4322 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4322#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4323#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4324#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43234325msgid "disabled"
    43244326msgstr ""
    43254327
    4326 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4327 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4328 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4328#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4329#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4330#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43294331msgid "Remove %s from favorites"
    43304332msgstr ""
    43314333
    4332 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4333 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4334 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4334#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4335#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4336#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43354337msgid "Add %s to favorites"
    43364338msgstr ""
    43374339
    4338 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4339 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4340 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4340#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4341#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4342#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43414343msgid "Coming soon"
    43424344msgstr ""
    43434345
    4344 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4345 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4346 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4346#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4347#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4348#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43474349msgid "Favorites"
    43484350msgstr ""
    43494351
    4350 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4351 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4352 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4352#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4353#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4354#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43534355msgid "No filters match your search."
    43544356msgstr ""
    43554357
    4356 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4357 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4358 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4358#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4359#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4360#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43594361msgid "No favorite filters yet. Pin filters to add them here."
    43604362msgstr ""
    43614363
    4362 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4363 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4364 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4364#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4365#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4366#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43654367msgid "No filters available."
    43664368msgstr ""
    43674369
    4368 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4369 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4370 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4370#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4371#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4372#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43714373msgid "No filters in this category."
    43724374msgstr ""
    43734375
    4374 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4375 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4376 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4376#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4377#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4378#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43774379msgid "No results found in current tab. Showing results from all filters."
    43784380msgstr ""
    43794381
    4380 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4381 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4382 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4382#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4383#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4384#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43834385msgid "Available filters"
    43844386msgstr ""
    43854387
    4386 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4387 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4388 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4388#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4389#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4390#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43894391msgid "Search filters"
    43904392msgstr ""
    43914393
    4392 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4393 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4394 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4394#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4395#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4396#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    43954397msgid "Search filters..."
    43964398msgstr ""
    43974399
    4398 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4399 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4400 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4400#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4401#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4402#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44014403msgid "Filter categories"
    44024404msgstr ""
    44034405
    4404 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4405 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4406 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4406#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4407#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4408#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44074409msgid "Showing %d search results"
    44084410msgstr ""
    44094411
    4410 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4411 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4412 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4412#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4413#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4414#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44134415msgid "Search or select an option..."
    44144416msgstr ""
    44154417
    4416 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4417 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4418 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4418#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4419#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4420#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44194421msgid "Enter page URL (e.g., /about)"
    44204422msgstr ""
    44214423
    4422 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4423 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4424 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4424#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4425#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4426#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44254427msgid "Enter referrer URL (e.g., google.com)"
    44264428msgstr ""
    44274429
    4428 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4429 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4430 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4430#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4431#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4432#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44314433msgid "Enter campaign name"
    44324434msgstr ""
    44334435
    4434 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4435 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4436 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4436#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4437#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4438#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44374439msgid "Enter traffic source"
    44384440msgstr ""
    44394441
    4440 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4441 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4442 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4442#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4443#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4444#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44434445msgid "Enter traffic medium"
    44444446msgstr ""
    44454447
    4446 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4447 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4448 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4448#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4449#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4450#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44494451msgid "Enter search term"
    44504452msgstr ""
    44514453
    4452 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4453 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4454 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4454#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4455#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4456#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44554457msgid "Enter content identifier"
    44564458msgstr ""
    44574459
    4458 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4459 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4460 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4460#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4461#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4462#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44614463msgid "Enter URL parameter (e.g., utm_campaign)"
    44624464msgstr ""
    44634465
    4464 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4465 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4466 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4466#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4467#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4468#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44674469msgid "Enter filter value..."
    44684470msgstr ""
    44694471
    4470 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4471 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4472 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4472#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4473#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4474#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44734475msgid "Filter value"
    44744476msgstr ""
    44754477
    4476 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4477 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4478 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4478#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4479#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4480#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44794481msgid "All visitors (default)"
    44804482msgstr ""
    44814483
    4482 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4483 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4484 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4484#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4485#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4486#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44854487msgid "All pages"
    44864488msgstr ""
    44874489
    4488 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4489 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4490 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4490#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4491#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4492#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44914493msgid "Entry pages"
    44924494msgstr ""
    44934495
    4494 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4495 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4496 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4496#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4497#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4498#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    44974499msgid "Exit pages"
    44984500msgstr ""
    44994501
    4500 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4501 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4502 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4502#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4503#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4504#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45034505msgid "Show all visitors without filtering"
    45044506msgstr ""
    45054507
    4506 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4507 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4508 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4508#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4509#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4510#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45094511msgid "Include"
    45104512msgstr ""
    45114513
    4512 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4513 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4514 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4514#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4515#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4516#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45154517msgid "Include visitors matching this criteria"
    45164518msgstr ""
    45174519
    4518 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4519 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4520 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4520#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4521#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4522#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45214523msgid "Exclude"
    45224524msgstr ""
    45234525
    4524 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4525 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4526 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4526#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4527#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4528#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45274529msgid "Exclude visitors matching this criteria"
    45284530msgstr ""
    45294531
    4530 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4531 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4532 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4532#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4533#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4534#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45334535msgid "Filter option"
    45344536msgstr ""
    45354537
    4536 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4537 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4538 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4538#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4539#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4540#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45394541msgid "Minimum value"
    45404542msgstr ""
    45414543
    4542 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4543 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4544 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4544#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4545#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4546#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45454547msgid "Maximum value"
    45464548msgstr ""
    45474549
    4548 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4549 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4550 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4550#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4551#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4552#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45514553msgid "Filter range"
    45524554msgstr ""
    45534555
    4554 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4555 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4556 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4556#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4557#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4558#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45574559msgid "Exact range values"
    45584560msgstr ""
    45594561
    4560 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4561 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4562 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4562#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4563#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4564#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45634565msgid "Min value..."
    45644566msgstr ""
    45654567
    4566 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4567 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4568 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4568#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4569#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4570#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45694571msgid "Max value..."
    45704572msgstr ""
    45714573
    4572 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4573 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4574 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4574#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4575#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4576#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45754577msgid "Clear"
    45764578msgstr ""
    45774579
    4578 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4579 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4580 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4580#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4581#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4582#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45814583msgid "Clear to remove this filter"
    45824584msgstr ""
    45834585
    4584 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4585 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4586 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4586#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4587#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4588#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45874589msgid "selected"
    45884590msgstr ""
    45894591
    4590 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4591 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4592 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4592#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4593#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4594#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45934595msgid "not selected"
    45944596msgstr ""
    45954597
    4596 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4597 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4598 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4598#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4599#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4600#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    45994601msgid "Device selection options"
    46004602msgstr ""
    46014603
    4602 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4603 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4604 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4604#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4605#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4606#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46054607msgid "Select a filter"
    46064608msgstr ""
    46074609
    4608 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4609 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4610 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4610#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4611#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4612#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46114613msgid "Setup Filter"
    46124614msgstr ""
    46134615
    4614 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4615 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4616 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4616#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4617#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4618#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46174619msgid "Choose a filter to apply to your analytics data"
    46184620msgstr ""
    46194621
    4620 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4621 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4622 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4622#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4623#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4624#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46234625msgid "Setup filter"
    46244626msgstr ""
    46254627
    4626 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4627 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4628 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4628#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4629#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4630#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46294631msgid "Back to filters"
    46304632msgstr ""
    46314633
    4632 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4633 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4634 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4634#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4635#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4636#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46354637msgid "Start typing to search or select from available options"
    46364638msgstr ""
    46374639
    4638 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4639 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4640 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4640#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4641#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4642#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46414643msgid "Enter the value you want to filter by"
    46424644msgstr ""
    46434645
    4644 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4645 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4646 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4646#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4647#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4648#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46474649msgid "Set the range for this filter"
    46484650msgstr ""
    46494651
    4650 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4651 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4652 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4652#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4653#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4654#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46534655msgid "Select the option you want to filter by"
    46544656msgstr ""
    46554657
    4656 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4657 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4658 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4658#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4659#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4660#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46594661msgid "Reset all active filters to default settings"
    46604662msgstr ""
    46614663
    4662 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4663 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4664 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4664#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4665#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4666#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46654667msgid "Reset all filters"
    46664668msgstr ""
    46674669
    4668 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4669 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4670 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4670#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4671#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4672#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46714673msgid "Apply %s filter"
    46724674msgstr ""
    46734675
    4674 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4675 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4676 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4676#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4677#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4678#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46774679msgid "Apply filter"
    46784680msgstr ""
    46794681
    4680 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4681 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4682 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4682#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4683#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4684#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46834685msgid "Apply Filter"
    46844686msgstr ""
    46854687
    4686 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4687 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4688 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4688#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4689#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4690#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46894691msgid "Apply %s filter and continue adding more filters"
    46904692msgstr ""
    46914693
    4692 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4693 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4694 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4694#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4695#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4696#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    46954697msgid "Apply filter and add more"
    46964698msgstr ""
    46974699
    4698 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4699 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4700 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4700#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4701#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4702#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    47014703msgid "Apply & Add More"
    47024704msgstr ""
    47034705
    4704 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4705 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    4706 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4707 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4706#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4707#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     4708#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     4709#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4710#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    47084711#: includes/Admin/App/src/components/Common/AdvancedFilter.js:79
    47094712#: includes/Admin/App/src/components/Common/PopoverFilter.js:105
     
    47124715msgstr ""
    47134716
    4714 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4715 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    4716 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4717 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4717#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4718#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     4719#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     4720#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4721#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    47184722#: includes/Admin/App/src/components/Common/AdvancedFilter.js:87
    47194723#: includes/Admin/App/src/components/Common/PopoverFilter.js:113
     
    47224726msgstr ""
    47234727
    4724 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4725 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    4726 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4727 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4728#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4729#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     4730#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4731#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    47284732#: includes/Admin/App/src/components/Common/PopoverFilter.js:123
    47294733#: includes/Admin/App/src/components/Sources/WorldMap/MapSettingsPopover.jsx:155
     
    47314735msgstr ""
    47324736
    4733 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4734 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4735 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4737#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4738#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4739#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    47364740#: includes/Admin/App/src/components/Common/PopoverFilter.js:124
    47374741msgid "Select metrics"
    47384742msgstr ""
    47394743
    4740 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
    4741 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4742 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4744#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
     4745#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4746#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    47434747#: includes/Admin/App/src/components/Common/PopoverFilter.js:164
    47444748msgid "Change metrics"
    47454749msgstr ""
    47464750
    4747 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
     4751#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
    47484752#: includes/Admin/App/src/store/useGeoStore.js:71
    47494753msgid "Natural Breaks (Jenks)"
    47504754msgstr ""
    47514755
    4752 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
     4756#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
    47534757#: includes/Admin/App/src/store/useGeoStore.js:72
    47544758msgid "Finds patterns in the data to create categories with minimal variation within groups. Works well for all metrics, especially Pageviews and Conversion Rate."
    47554759msgstr ""
    47564760
    4757 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
     4761#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
    47584762#: includes/Admin/App/src/store/useGeoStore.js:79
    47594763msgid "Equal Interval"
    47604764msgstr ""
    47614765
    4762 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
     4766#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
    47634767#: includes/Admin/App/src/store/useGeoStore.js:80
    47644768msgid "Splits the data range into equal-sized intervals. Ideal for percentage-based metrics like Bounce Rate or Conversion Rate."
    47654769msgstr ""
    47664770
    4767 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
     4771#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
    47684772#: includes/Admin/App/src/store/useGeoStore.js:86
    47694773msgid "Standard Deviation"
    47704774msgstr ""
    47714775
    4772 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
     4776#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
    47734777#: includes/Admin/App/src/store/useGeoStore.js:87
    47744778msgid "Groups data based on how far values deviate from the average. Highlights outliers in metrics like Bounce Rate or Avg. Session Duration."
    47754779msgstr ""
    47764780
    4777 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
     4781#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
    47784782#: includes/Admin/App/src/store/useGeoStore.js:93
    47794783msgid "Quantile"
    47804784msgstr ""
    47814785
    4782 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
     4786#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
    47834787#: includes/Admin/App/src/store/useGeoStore.js:94
    47844788msgid "Divides data into equal-sized groups, ensuring each category has the same number of regions. Best for evenly distributed metrics like Pageviews or Visitors."
    47854789msgstr ""
    47864790
    4787 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:4
     4791#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:4
    47884792#: includes/Admin/App/src/components/Sources/WorldMap/ChoroplethTooltip.js:29
    47894793msgid "Unknown location"
     
    47914795
    47924796#. translators: %s: Percentage value
    4793 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:5
     4797#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:5
    47944798#: includes/Admin/App/src/components/Sources/WorldMap/ChoroplethTooltip.js:103
    47954799msgid "%s of total"
     
    47974801
    47984802#. translators: 1: Population number, 2: Year
    4799 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:6
     4803#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:6
    48004804#: includes/Admin/App/src/components/Sources/WorldMap/ChoroplethTooltip.js:117
    48014805msgid "Population: %1$s (%2$s)"
    48024806msgstr ""
    48034807
    4804 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:6
     4808#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:6
    48054809#: includes/Admin/App/src/components/Sources/WorldMap/ChoroplethTooltip.js:137
    48064810msgid "Click to see country specific data"
    48074811msgstr ""
    48084812
    4809 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:6
     4813#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:6
    48104814#: includes/Admin/App/src/components/Sources/WorldMap/MapBreadcrumbs.jsx:26
    48114815msgctxt "navigation item"
     
    48134817msgstr ""
    48144818
    4815 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:6
     4819#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:6
    48164820#: includes/Admin/App/src/components/Sources/WorldMap/MapBreadcrumbs.jsx:59
    48174821msgctxt "button title"
     
    48194823msgstr ""
    48204824
    4821 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:6
     4825#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:6
    48224826#: includes/Admin/App/src/components/Sources/WorldMap/MapBreadcrumbs.jsx:60
    48234827msgctxt "button title"
     
    48254829msgstr ""
    48264830
    4827 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:6
     4831#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:6
    48284832#: includes/Admin/App/src/components/Sources/WorldMap/MapBreadcrumbs.jsx:75
    48294833msgctxt "aria label"
     
    48324836
    48334837#. translators: %s: Error message
    4834 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:7
     4838#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:7
    48354839#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:306
    48364840msgid "Error: %s"
    48374841msgstr ""
    48384842
    4839 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:7
     4843#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:7
    48404844#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:318
    48414845#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:343
     
    48434847msgstr ""
    48444848
    4845 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:7
     4849#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:7
    48464850#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:344
    48474851msgid "Loading analytics..."
    48484852msgstr ""
    48494853
    4850 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:7
     4854#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:7
    48514855#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:374
    48524856msgid "Region-level data is available for visits after %s."
    48534857msgstr ""
    48544858
    4855 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:7
     4859#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:7
    48564860#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:384
    48574861msgid "Region tracking is a new feature, so this data is only available for visits recorded after it was enabled."
    48584862msgstr ""
    48594863
    4860 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:7
     4864#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:7
    48614865#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:408
    48624866msgid "Dismiss for 30 days"
    48634867msgstr ""
    48644868
    4865 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:7
    4866 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
     4869#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:7
     4870#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
    48674871#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:410
    48684872msgid "Dismiss"
     
    48704874
    48714875#. translators: %s: Metric name (e.g., "Pageviews", "Visitors")
    4872 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:8
    4873 #: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:431
     4876#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:8
     4877#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:430
    48744878msgctxt "metric by location"
    48754879msgid "%s per country"
     
    48774881
    48784882#. translators: %s: Metric name (e.g., "Pageviews", "Visitors")
    4879 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:9
    4880 #: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:433
     4883#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:9
     4884#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:432
    48814885msgctxt "metric by location"
    48824886msgid "%s per region"
     
    48844888
    48854889#. translators: %d: Number of locations that have data
    4886 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:10
    4887 #: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:443
     4890#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:10
     4891#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:442
    48884892msgid "%d country with data"
    48894893msgid_plural "%d countries with data"
     
    48914895msgstr[1] ""
    48924896
    4893 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:10
    4894 #: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:449
     4897#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:10
     4898#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:448
    48954899msgid "%d region with data"
    48964900msgid_plural "%d regions with data"
     
    48984902msgstr[1] ""
    48994903
    4900 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:10
    4901 #: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:460
     4904#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:10
     4905#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:459
    49024906msgid "Patterns enabled"
    49034907msgstr ""
    49044908
    49054909#. translators: %d: Number of visitors with unknown region, %s: metric label
    4906 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    4907 #: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:468
     4910#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     4911#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:467
    49084912msgid "%d %s with unknown region"
    49094913msgstr ""
    49104914
    4911 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    4912 #: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:484
     4915#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     4916#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:483
    49134917msgctxt "statistic label"
    49144918msgid "Range"
    49154919msgstr ""
    49164920
    4917 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    4918 #: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:493
     4921#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     4922#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:492
    49194923msgctxt "statistic label"
    49204924msgid "Average"
    49214925msgstr ""
    49224926
    4923 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    4924 #: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:499
     4927#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     4928#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:498
    49254929msgctxt "statistic label"
    49264930msgid "Median"
    49274931msgstr ""
    49284932
    4929 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    4930 #: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:505
     4933#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     4934#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:504
    49314935msgctxt "statistic label"
    49324936msgid "Total"
    49334937msgstr ""
    49344938
    4935 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    4936 #: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:513
     4939#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     4940#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:512
    49374941msgctxt "statistic label"
    49384942msgid "Method"
    49394943msgstr ""
    49404944
    4941 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
     4945#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
    49424946#: includes/Admin/App/src/components/Sources/WorldMap/WorldMap.jsx:326
    49434947msgid "No metrics available for display."
    49444948msgstr ""
    49454949
    4946 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
     4950#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
    49474951#: includes/Admin/App/src/components/Sources/WorldMap/MapSettingsPopover.jsx:147
    49484952msgid "Metrics & options"
    49494953msgstr ""
    49504954
    4951 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
     4955#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
    49524956#: includes/Admin/App/src/components/Sources/WorldMap/MapSettingsPopover.jsx:177
    49534957msgid "Classification method"
    49544958msgstr ""
    49554959
    4956 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
     4960#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
    49574961#: includes/Admin/App/src/components/Sources/WorldMap/MapSettingsPopover.jsx:185
    49584962msgid "A classification method determines how data values are grouped into ranges or categories to color regions on a choropleth map. The recommended method is based on the selected metric. For more information for each method, see the help icon next to each method."
    49594963msgstr ""
    49604964
    4961 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
     4965#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
    49624966#: includes/Admin/App/src/components/Sources/WorldMap/MapSettingsPopover.jsx:194
    49634967msgid "Auto-select"
    49644968msgstr ""
    49654969
    4966 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
     4970#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
    49674971#: includes/Admin/App/src/components/Sources/WorldMap/MapSettingsPopover.jsx:239
    49684972msgid "Accessibility"
    49694973msgstr ""
    49704974
    4971 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
     4975#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
    49724976#: includes/Admin/App/src/components/Sources/WorldMap/MapSettingsPopover.jsx:244
    49734977msgid "Colorblind Patterns"
    49744978msgstr ""
    49754979
    4976 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
     4980#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
    49774981#: includes/Admin/App/src/components/Sources/WorldMap/MapSettingsPopover.jsx:247
    49784982msgid "Add patterns for colorblind accessibility"
    49794983msgstr ""
    49804984
    4981 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
     4985#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
    49824986#: includes/Admin/App/src/components/Sources/WorldMapBlock.jsx:20
    49834987#: includes/Admin/App/src/components/Upsell/GhostWorldMapBlock.jsx:20
     
    49854989msgstr ""
    49864990
    4987 #: includes/Admin/App/build/466.eb5c075f6389766ffddc.js:11
    4988 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    4989 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    4990 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     4991#: includes/Admin/App/build/466.f0a3ddef2e350125a9fb.js:11
     4992#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     4993#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     4994#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    49914995#: includes/Admin/App/src/components/Common/RecommendBadge.jsx:17
    49924996msgid "Recommended"
    49934997msgstr ""
    49944998
    4995 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
    4996 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:1
     4999#: includes/Admin/App/build/521.246fab661687c647fe82.js:1
     5000#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    49975001#: includes/Admin/App/src/store/usePostsStore.js:65
    49985002msgid "Untitled"
    49995003msgstr ""
    50005004
    5001 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5005#: includes/Admin/App/build/521.246fab661687c647fe82.js:1
     5006msgid "Count"
     5007msgstr ""
     5008
     5009#: includes/Admin/App/build/521.246fab661687c647fe82.js:1
     5010msgid "Top performers"
     5011msgstr ""
     5012
     5013#: includes/Admin/App/build/521.246fab661687c647fe82.js:1
     5014#: includes/Admin/App/src/api/getSalesData.js:73
     5015msgid "All visitors converted"
     5016msgstr ""
     5017
     5018#. translators: 1: converted visitors, 2: total visitors
     5019#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5020#: includes/Admin/App/src/api/getSalesData.js:83
     5021msgid "%1$d of %2$d visitors convert"
     5022msgstr ""
     5023
     5024#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5025#: includes/Admin/App/src/api/getSalesData.js:119
     5026msgid "No carts were abandoned"
     5027msgstr ""
     5028
     5029#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5030#: includes/Admin/App/src/api/getSalesData.js:153
     5031msgid "No change from last period"
     5032msgstr ""
     5033
     5034#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5035#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
     5036#: includes/Admin/App/src/components/Statistics/CompareFooter.js:14
     5037msgid "vs. previous day"
     5038msgstr ""
     5039
     5040#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5041#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
     5042#: includes/Admin/App/src/components/Statistics/CompareFooter.js:14
     5043msgid "vs. previous %s days"
     5044msgstr ""
     5045
     5046#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5047msgid "An error occurred"
     5048msgstr ""
     5049
     5050#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5051msgid "Opportunities"
     5052msgstr ""
     5053
     5054#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5055msgid "Snooze for 30 days"
     5056msgstr ""
     5057
     5058#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5059msgid "Read our guide"
     5060msgstr ""
     5061
     5062#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5063msgid "Crunching data. Check back later to see if there are quick wins!"
     5064msgstr ""
     5065
     5066#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5067msgid "Product Pages"
     5068msgstr ""
     5069
     5070#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5071msgid "Product pages"
     5072msgstr ""
     5073
     5074#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5075msgid "Select pages"
     5076msgstr ""
     5077
     5078#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5079msgid "All product pages"
     5080msgstr ""
     5081
     5082#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5083msgid "Custom product pages"
     5084msgstr ""
     5085
     5086#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5087msgid "Step %d"
     5088msgstr ""
     5089
     5090#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5091msgid "%d lost visitors"
     5092msgstr ""
     5093
     5094#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5095msgid "%d visitors purchased"
     5096msgstr ""
     5097
     5098#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5099msgid "%d%% conversion rate"
     5100msgstr ""
     5101
     5102#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5103msgid "%s visitors (%s%%)"
     5104msgstr ""
     5105
     5106#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5107msgid "%d%% conversion from previous step"
     5108msgstr ""
     5109
     5110#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5111msgid "%d%% drop-off to next step"
     5112msgstr ""
     5113
     5114#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5115msgid "Improving this by %s%% could lead to ~%d more sales."
     5116msgstr ""
     5117
     5118#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5119msgid "Funnel"
     5120msgstr ""
     5121
     5122#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5123msgid "No data available for the selected period."
     5124msgstr ""
     5125
     5126#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5127msgid "Sent"
     5128msgstr ""
     5129
     5130#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5131msgid "Viewed"
     5132msgstr ""
     5133
     5134#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5135msgid "Clicked"
     5136msgstr ""
     5137
     5138#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5139msgid "Add To Cart"
     5140msgstr ""
     5141
     5142#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5143msgid "Read more"
     5144msgstr ""
     5145
     5146#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5147msgid "Sales data is available for visits after %s."
     5148msgstr ""
     5149
     5150#: includes/Admin/App/build/521.246fab661687c647fe82.js:2
     5151msgid "Sales tracking is a new feature, so this data is only available for visits recorded after it was enabled."
     5152msgstr ""
     5153
     5154#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     5155#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5156#: includes/Admin/App/src/components/Common/DisabledBadge.jsx:17
     5157msgid "Disabled"
     5158msgstr ""
     5159
     5160#: includes/Admin/App/build/521.246fab661687c647fe82.js:5
     5161#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5162#: includes/TeamUpdraft/Onboarding/build/index.js:1
     5163msgid "Required"
     5164msgstr ""
     5165
     5166#: includes/Admin/App/build/540.dc5a288dc27ded44e488.js:1
     5167msgid "Access Restricted"
     5168msgstr ""
     5169
     5170#: includes/Admin/App/build/540.dc5a288dc27ded44e488.js:1
     5171msgid "You don’t have permission to view this page."
     5172msgstr ""
     5173
     5174#: includes/Admin/App/build/540.dc5a288dc27ded44e488.js:1
     5175#: includes/Admin/App/src/routes/sales.jsx:44
     5176msgid "Go Back"
     5177msgstr ""
     5178
     5179#: includes/Admin/App/build/540.dc5a288dc27ded44e488.js:1
     5180#: includes/Admin/App/src/routes/sales.jsx:42
     5181msgid "Unauthorized Access"
     5182msgstr ""
     5183
     5184#: includes/Admin/App/build/540.dc5a288dc27ded44e488.js:1
     5185#: includes/Admin/App/build/718.ac8350f40ab304e3f014.js:1
     5186#: includes/Admin/App/build/961.841ff3b000931479bb8d.js:1
     5187#: includes/Admin/App/src/routes/sales.jsx:51
     5188#: includes/Admin/App/src/routes/sources.jsx:21
     5189#: includes/Admin/App/src/routes/statistics.jsx:17
     5190msgid "An error occurred loading statistics"
     5191msgstr ""
     5192
     5193#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50025194#: includes/Admin/App/src/components/Fields/IpBlockField.jsx:105
    50035195msgid "Add current IP address"
    50045196msgstr ""
    50055197
    5006 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5198#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50075199msgid "Action completed successfully"
    50085200msgstr ""
    50095201
    5010 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5202#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50115203msgid "Action failed"
    50125204msgstr ""
    50135205
    5014 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5206#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50155207msgid "An error occurred while executing the action"
    50165208msgstr ""
    50175209
    5018 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5210#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50195211msgid "Processing..."
    50205212msgstr ""
    50215213
    5022 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5214#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50235215msgid "Confirm"
    50245216msgstr ""
    50255217
    5026 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5218#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50275219#: includes/Admin/App/src/components/Fields/EmailReportsField.jsx:38
    50285220msgid "Weekly"
    50295221msgstr ""
    50305222
    5031 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5223#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50325224#: includes/Admin/App/src/components/Fields/EmailReportsField.jsx:39
    50335225msgid "Monthly"
    50345226msgstr ""
    50355227
    5036 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5228#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50375229#: includes/Admin/App/src/components/Fields/EmailReportsField.jsx:49
    50385230#: includes/Admin/App/src/components/Fields/EmailReportsField.jsx:68
     
    50405232msgstr ""
    50415233
    5042 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5234#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50435235#: includes/Admin/App/src/components/Fields/EmailReportsField.jsx:72
    50445236msgid "Maximum 10 emails allowed"
    50455237msgstr ""
    50465238
    5047 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5239#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50485240#: includes/Admin/App/src/components/Fields/EmailReportsField.jsx:76
    50495241msgid "Email address already added"
    50505242msgstr ""
    50515243
    5052 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5244#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50535245#: includes/Admin/App/src/components/Fields/EmailReportsField.jsx:64
    50545246msgid "Email address is required"
    50555247msgstr ""
    50565248
    5057 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5249#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50585250#: includes/Admin/App/src/components/Fields/EmailReportsField.jsx:108
    50595251msgid "Email"
    50605252msgstr ""
    50615253
    5062 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5254#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50635255#: includes/Admin/App/src/components/Fields/EmailReportsField.jsx:112
    50645256msgid "Frequency"
    50655257msgstr ""
    50665258
    5067 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5259#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50685260#: includes/Admin/App/src/components/Fields/EmailReportsField.jsx:125
    50695261#: includes/Admin/App/src/components/Fields/EmailReportsField.jsx:131
     
    50715263msgstr ""
    50725264
    5073 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5265#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50745266#: includes/Admin/App/src/components/Fields/EmailReportsField.jsx:152
    50755267msgid "Recipients will receive weekly or monthly reports with statistics about your website. Add or remove email addresses in the list below."
    50765268msgstr ""
    50775269
    5078 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5270#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50795271#: includes/Admin/App/src/components/Fields/EmailReportsField.jsx:159
    50805272msgid "No emails added yet"
    50815273msgstr ""
    50825274
    5083 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5275#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50845276#: includes/Admin/App/src/components/Fields/EmailReportsField.jsx:191
    50855277msgid "Enter email address"
    50865278msgstr ""
    50875279
    5088 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5280#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50895281#: includes/Admin/App/src/components/Fields/EmailReportsField.jsx:200
    50905282msgid "Add to list"
    50915283msgstr ""
    50925284
    5093 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5285#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    50945286#: includes/TeamUpdraft/Onboarding/build/index.js:1
    50955287#: includes/TeamUpdraft/Onboarding/src/components/Fields/Plugins.jsx:45
     
    50975289msgstr ""
    50985290
    5099 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5291#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    51005292msgid "Show more"
    51015293msgstr ""
    51025294
    5103 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5295#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    51045296msgid "Show less"
    51055297msgstr ""
    51065298
    5107 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5299#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    51085300#: includes/Admin/App/src/components/Fields/SelectorField.jsx:127
    51095301msgid "Warning: The current element is hidden via CSS."
    51105302msgstr ""
    51115303
    5112 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:1
     5304#: includes/Admin/App/build/560.15b75c34469126da4911.js:1
    51135305#: includes/Admin/App/src/components/Fields/SelectorField.jsx:209
    51145306msgid "Warning: this element might be hidden via CSS."
     
    51165308
    51175309#. translators: 1: number of elements found 2: the URL of the preview 3: logged in/out status
    5118 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5310#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51195311#: includes/Admin/App/src/components/Fields/SelectorField.jsx:233
    51205312msgid "Found %1$d element on %2$s %3$s"
     
    51235315msgstr[1] ""
    51245316
    5125 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5317#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51265318#: includes/Admin/App/src/components/Fields/SelectorField.jsx:241
    51275319msgid "(Logged out)"
    51285320msgstr ""
    51295321
    5130 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5322#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51315323#: includes/Admin/App/src/components/Fields/SelectorField.jsx:241
    51325324msgid "(Logged in)"
    51335325msgstr ""
    51345326
    5135 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5327#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51365328#: includes/Admin/App/src/components/Fields/SelectorField.jsx:248
    51375329msgid "Selector Examples:"
    51385330msgstr ""
    51395331
    5140 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5332#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51415333#: includes/Admin/App/src/components/Fields/SelectorField.jsx:254
    51425334msgid "Selects all elements with class \"class-name\"."
    51435335msgstr ""
    51445336
    5145 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5337#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51465338#: includes/Admin/App/src/components/Fields/SelectorField.jsx:259
    51475339msgid "Selects the element with ID \"element-id\"."
    51485340msgstr ""
    51495341
    5150 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5342#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51515343#: includes/Admin/App/src/components/Fields/SelectorField.jsx:264
    51525344msgid "Selects all <button> elements."
    51535345msgstr ""
    51545346
    5155 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5347#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51565348#: includes/Admin/App/src/components/Fields/SelectorField.jsx:269
    51575349msgid "Selects links whose href starts with \"https\"."
    51585350msgstr ""
    51595351
    5160 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5352#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51615353#: includes/Admin/App/src/components/Fields/SelectorField.jsx:274
    51625354msgid "Selects .nav-item elements that do not have the \"active\" class."
    51635355msgstr ""
    51645356
    5165 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5357#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51665358#: includes/Admin/App/src/components/Fields/SelectorField.jsx:337
    51675359msgid "Preview panel, use arrow keys to navigate"
    51685360msgstr ""
    51695361
    5170 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5362#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51715363#: includes/Admin/App/src/components/Fields/SelectorField.jsx:350
    51725364msgid "Step through matches"
    51735365msgstr ""
    51745366
    5175 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5367#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51765368#: includes/Admin/App/src/components/Fields/SelectorField.jsx:357
    51775369msgid "Previous match"
    51785370msgstr ""
    51795371
    5180 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5372#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51815373#: includes/Admin/App/src/components/Fields/SelectorField.jsx:368
    51825374msgid "Next match"
    51835375msgstr ""
    51845376
    5185 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5377#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51865378#: includes/Admin/App/src/components/Fields/SelectorField.jsx:378
    51875379msgid "Set logged in mode"
    51885380msgstr ""
    51895381
    5190 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5382#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51915383#: includes/Admin/App/src/components/Fields/SelectorField.jsx:378
    51925384msgid "Set logged out mode"
    51935385msgstr ""
    51945386
    5195 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5387#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    51965388#: includes/Admin/App/src/components/Fields/SelectorField.jsx:406
    51975389msgid "%s elements match your selector. Use arrow keys to cycle through matches."
    51985390msgstr ""
    51995391
    5200 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5392#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52015393#: includes/Admin/App/src/components/Fields/EditableTextField.jsx:63
    52025394msgid "Click to edit"
    52035395msgstr ""
    52045396
    5205 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5397#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52065398#: includes/Admin/App/src/components/Goals/DeleteGoalModal.js:10
    52075399msgid "Are you sure you want to delete this goal?"
    52085400msgstr ""
    52095401
    5210 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5402#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52115403#: includes/Admin/App/src/components/Goals/DeleteGoalModal.js:12
    52125404msgid "This action cannot be undone."
    52135405msgstr ""
    52145406
    5215 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5407#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52165408#: includes/Admin/App/src/components/Goals/DeleteGoalModal.js:15
    52175409msgid "Goal name"
    52185410msgstr ""
    52195411
    5220 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5412#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52215413#: includes/Admin/App/src/components/Goals/DeleteGoalModal.js:17
    52225414msgid "Status"
    52235415msgstr ""
    52245416
    5225 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5417#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52265418#: includes/Admin/App/src/components/Goals/DeleteGoalModal.js:19
    52275419msgid "Date created"
    52285420msgstr ""
    52295421
    5230 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5422#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52315423#: includes/Admin/App/src/components/Goals/DeleteGoalModal.js:40
    52325424#: includes/Admin/App/src/components/Goals/DeleteGoalModal.js:69
     
    52345426msgstr ""
    52355427
    5236 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5428#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52375429#: includes/Admin/App/src/components/Goals/GoalSetup.js:75
    52385430msgid "Click to de-activate"
    52395431msgstr ""
    52405432
    5241 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5433#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52425434#: includes/Admin/App/src/components/Goals/GoalSetup.js:75
    52435435msgid "Click to activate"
    52445436msgstr ""
    52455437
    5246 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5438#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52475439#: includes/Admin/App/src/components/Goals/GoalsSettings.js:38
    52485440msgid "Click"
    52495441msgstr ""
    52505442
    5251 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5443#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52525444#: includes/Admin/App/src/components/Goals/GoalsSettings.js:51
    52535445msgid "Goals are a great way to track your progress and keep you motivated."
    52545446msgstr ""
    52555447
    5256 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5448#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52575449#: includes/Admin/App/src/components/Goals/GoalsSettings.js:57
    52585450msgid "While free users can create one goal, Burst Pro lets you set unlimited goals to plan, measure, and achieve more."
    52595451msgstr ""
    52605452
    5261 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5453#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52625454#: includes/Admin/App/src/components/Goals/GoalsSettings.js:85
    52635455msgid "Add goal"
    52645456msgstr ""
    52655457
    5266 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5458#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52675459#: includes/Admin/App/src/components/Goals/GoalsSettings.js:104
    52685460msgid "Add predefined goal"
    52695461msgstr ""
    52705462
    5271 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5463#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52725464#: includes/Admin/App/src/components/Goals/GoalsSettings.js:130
    52735465msgid "Plug-in you're looking for not listed?"
    52745466msgstr ""
    52755467
    5276 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5468#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52775469#: includes/Admin/App/src/components/Goals/GoalsSettings.js:140
    52785470msgid "Request it here!"
    52795471msgstr ""
    52805472
    5281 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5473#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52825474#: includes/Admin/App/src/components/Goals/GoalsSettings.js:161
    52835475msgid "Want more goals?"
    52845476msgstr ""
    52855477
    5286 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5478#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52875479#: includes/Admin/App/src/components/Goals/GoalsSettings.js:163
    52885480msgid "Upgrade to Burst Pro"
    52895481msgstr ""
    52905482
    5291 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5483#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52925484#: includes/Admin/App/src/components/Fields/LicenseField.js:45
    52935485msgid "Activating your license gives you automatic updates and support."
    52945486msgstr ""
    52955487
    5296 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5488#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    52975489#: includes/Admin/App/src/components/Fields/LicenseField.js:51
    52985490msgid "Having trouble? %sCheck our installation guide%s."
    52995491msgstr ""
    53005492
    5301 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5493#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    53025494#: includes/Admin/App/src/components/Fields/LicenseField.js:58
    53035495msgid "If that does not help, please %sopen a support ticket%s so we can help you out!"
    53045496msgstr ""
    53055497
    5306 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5498#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    53075499#: includes/Admin/App/src/components/Fields/LicenseField.js:82
    53085500msgid "Enter your license key here."
    53095501msgstr ""
    53105502
    5311 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5503#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    53125504#: includes/Admin/App/src/components/Fields/LicenseField.js:94
    53135505msgid "Deactivate License"
    53145506msgstr ""
    53155507
    5316 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5508#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    53175509#: includes/Admin/App/src/components/Fields/LogoEditorField.jsx:54
    53185510msgid "Select a logo"
    53195511msgstr ""
    53205512
    5321 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5513#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    53225514#: includes/Admin/App/src/components/Fields/LogoEditorField.jsx:56
    53235515msgid "Set logo"
    53245516msgstr ""
    53255517
    5326 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5518#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    53275519#: includes/Admin/App/src/components/Fields/LogoEditorField.jsx:110
    53285520msgid "Reset to Default"
    53295521msgstr ""
    53305522
    5331 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5523#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5524#: includes/Admin/App/src/store/useArchivesStore.js:25
     5525msgid "Deleting..."
     5526msgstr ""
     5527
     5528#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5529#: includes/Admin/App/src/store/useArchivesStore.js:26
     5530msgid "Archives deleted successfully!"
     5531msgstr ""
     5532
     5533#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    53325534#: includes/Admin/App/src/store/useArchivesStore.js:27
    5333 msgid "Deleting..."
    5334 msgstr ""
    5335 
    5336 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5337 #: includes/Admin/App/src/store/useArchivesStore.js:28
    5338 msgid "Archives deleted successfully!"
    5339 msgstr ""
    5340 
    5341 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5342 #: includes/Admin/App/src/store/useArchivesStore.js:29
    53435535msgid "Failed to delete archive"
    53445536msgstr ""
    53455537
    5346 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5538#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    53475539#: includes/Admin/App/src/store/useArchivesStore.js:73
    53485540msgid "Starting restore..."
    53495541msgstr ""
    53505542
    5351 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5543#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    53525544#: includes/Admin/App/src/store/useArchivesStore.js:74
    53535545msgid "Restore successfully started!"
    53545546msgstr ""
    53555547
    5356 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5548#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    53575549#: includes/Admin/App/src/store/useArchivesStore.js:75
    53585550msgid "Failed to start restore process."
    53595551msgstr ""
    53605552
    5361 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5362 #: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:246
     5553#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5554#: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:267
    53635555msgid "Archive"
    53645556msgstr ""
    53655557
    5366 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5367 #: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:252
     5558#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5559#: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:272
    53685560msgid "Size"
    53695561msgstr ""
    53705562
    5371 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5372 #: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:309
     5563#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5564#: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:331
     5565msgid "%s item selected"
     5566msgid_plural "%s items selected"
     5567msgstr[0] ""
     5568msgstr[1] ""
     5569
     5570#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5571#: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:343
    53735572msgid "Download"
    53745573msgstr ""
    53755574
    5376 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5377 #: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:67
     5575#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5576#: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:87
    53785577msgid "Because restoring files can conflict with the archiving functionality, archiving has been disabled."
    53795578msgstr ""
    53805579
    5381 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5382 #: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:68
     5580#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5581#: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:88
    53835582msgid "Archiving disabled"
    53845583msgstr ""
    53855584
    5386 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5387 #: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:319
     5585#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5586#: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:355
    53885587msgid "Restore"
    53895588msgstr ""
    53905589
    5391 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5392 #: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:327
     5590#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5591#: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:364
    53935592msgid "Delete"
    53945593msgstr ""
    53955594
    5396 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5397 #: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:331
    5398 msgid "%s items selected"
    5399 msgstr ""
    5400 
    5401 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5402 #: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:336
    5403 msgid "1 item selected"
    5404 msgstr ""
    5405 
    5406 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5407 #: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:344
    5408 msgid "Restore in progress, %s complete"
    5409 msgstr ""
    5410 
    5411 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5412 #: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:372
     5595#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5596#: includes/Admin/App/src/components/Fields/RestoreArchivesField.jsx:396
    54135597msgid "No archives"
    54145598msgstr ""
    54155599
    5416 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5417 #: includes/Admin/App/src/components/Fields/Field.jsx:151
     5600#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5601#: includes/Admin/App/src/components/Fields/Field.jsx:150
    54185602msgid "This field is required"
    54195603msgstr ""
    54205604
    5421 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5422 #: includes/Admin/App/src/components/Fields/Field.jsx:160
     5605#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5606#: includes/Admin/App/src/components/Fields/Field.jsx:159
    54235607msgid "Invalid format"
    54245608msgstr ""
    54255609
    5426 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5610#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    54275611#: includes/Admin/App/src/components/Fields/Field.jsx:107
    54285612msgid "Invalid IP address format: "
    54295613msgstr ""
    54305614
    5431 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5615#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    54325616#: includes/Admin/App/src/components/Fields/Field.jsx:132
    54335617msgid "Duplicate IP addresses found: "
    54345618msgstr ""
    54355619
    5436 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5620#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5621#: includes/Admin/App/src/components/Fields/Field.jsx:167
     5622msgid "Value must be at least %s"
     5623msgstr ""
     5624
     5625#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
     5626#: includes/Admin/App/src/components/Fields/Field.jsx:176
     5627msgid "Value must be at most %s"
     5628msgstr ""
     5629
     5630#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    54375631#: includes/Admin/App/src/components/Settings/SettingsGroupBlock.jsx:30
    54385632msgid "Unlock Advanced Features with Burst Pro"
    54395633msgstr ""
    54405634
    5441 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5635#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    54425636#: includes/Admin/App/src/components/Settings/SettingsGroupBlock.jsx:32
    54435637msgid "This setting is exclusive to Pro users."
    54445638msgstr ""
    54455639
    5446 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5640#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    54475641#: includes/Admin/App/src/components/Settings/SettingsFooter.jsx:14
    54485642msgid "Saving..."
    54495643msgstr ""
    54505644
    5451 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5645#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    54525646#: includes/Admin/App/src/components/Settings/SettingsFooter.jsx:19
    54535647msgid "Validating..."
    54545648msgstr ""
    54555649
    5456 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5650#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    54575651#: includes/Admin/App/src/components/Settings/SettingsFooter.jsx:24
    54585652msgid "You have unsaved changes"
    54595653msgstr ""
    54605654
    5461 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5655#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    54625656#: includes/Admin/App/src/components/Settings/SettingsFooter.jsx:39
    54635657msgid "Save"
    54645658msgstr ""
    54655659
    5466 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5660#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    54675661#: includes/Admin/App/src/components/Settings/SettingsNotices.jsx:38
    54685662msgid "Collapse all"
    54695663msgstr ""
    54705664
    5471 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5665#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    54725666#: includes/Admin/App/src/components/Settings/SettingsNotices.jsx:39
    54735667msgid "Expand all"
    54745668msgstr ""
    54755669
    5476 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
     5670#: includes/Admin/App/build/560.15b75c34469126da4911.js:10
    54775671#: includes/Admin/App/src/components/Settings/SettingsNotices.jsx:45
    54785672msgid "Notifications"
    54795673msgstr ""
    54805674
    5481 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5482 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5483 #: includes/Admin/App/src/components/Common/DisabledBadge.jsx:17
    5484 msgid "Disabled"
    5485 msgstr ""
    5486 
    5487 #: includes/Admin/App/build/560.b89e7c1923a59cd04ee8.js:10
    5488 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5489 #: includes/TeamUpdraft/Onboarding/build/index.js:1
    5490 msgid "Required"
    5491 msgstr ""
    5492 
    5493 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:4
    5494 msgid "Count"
    5495 msgstr ""
    5496 
    5497 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:4
    5498 msgid "Top performers"
    5499 msgstr ""
    5500 
    5501 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:4
    5502 #: includes/Admin/App/src/api/getSalesData.js:73
    5503 msgid "All visitors converted"
    5504 msgstr ""
    5505 
    5506 #. translators: 1: converted visitors, 2: total visitors
    5507 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5508 #: includes/Admin/App/src/api/getSalesData.js:83
    5509 msgid "%1$d of %2$d visitors convert"
    5510 msgstr ""
    5511 
    5512 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5513 #: includes/Admin/App/src/api/getSalesData.js:119
    5514 msgid "No carts were abandoned"
    5515 msgstr ""
    5516 
    5517 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5518 #: includes/Admin/App/src/api/getSalesData.js:154
    5519 msgid "No change from last period"
    5520 msgstr ""
    5521 
    5522 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5523 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
    5524 #: includes/Admin/App/src/components/Statistics/CompareFooter.js:14
    5525 msgid "vs. previous day"
    5526 msgstr ""
    5527 
    5528 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5529 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
    5530 #: includes/Admin/App/src/components/Statistics/CompareFooter.js:14
    5531 msgid "vs. previous %s days"
    5532 msgstr ""
    5533 
    5534 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5535 msgid "Opportunities"
    5536 msgstr ""
    5537 
    5538 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5539 msgid "An error occurred"
    5540 msgstr ""
    5541 
    5542 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5543 msgid "Snooze for 30 days"
    5544 msgstr ""
    5545 
    5546 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5547 msgid "Read our guide"
    5548 msgstr ""
    5549 
    5550 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5551 msgid "Crunching data. Check back later to see if there are quick wins!"
    5552 msgstr ""
    5553 
    5554 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5555 msgid "Product Pages"
    5556 msgstr ""
    5557 
    5558 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5559 msgid "Product pages"
    5560 msgstr ""
    5561 
    5562 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5563 msgid "Select pages"
    5564 msgstr ""
    5565 
    5566 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5567 msgid "All product pages"
    5568 msgstr ""
    5569 
    5570 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5571 msgid "Custom product pages"
    5572 msgstr ""
    5573 
    5574 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5575 msgid "Step %d"
    5576 msgstr ""
    5577 
    5578 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5579 msgid "<DropOffPercentage/> <tspan>drop-off</tspan>"
    5580 msgstr ""
    5581 
    5582 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5583 msgid "<PathValue /> <tspan>session</tspan>"
    5584 msgid_plural "<PathValue /> <tspan>sessions</tspan>"
    5585 msgstr[0] ""
    5586 msgstr[1] ""
    5587 
    5588 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5589 msgid "Funnel"
    5590 msgstr ""
    5591 
    5592 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5593 msgid "No data available for the selected period."
    5594 msgstr ""
    5595 
    5596 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5597 msgid "Sent"
    5598 msgstr ""
    5599 
    5600 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5601 msgid "Viewed"
    5602 msgstr ""
    5603 
    5604 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5605 msgid "Clicked"
    5606 msgstr ""
    5607 
    5608 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5609 msgid "Add To Cart"
    5610 msgstr ""
    5611 
    5612 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5613 msgid "Purchased"
    5614 msgstr ""
    5615 
    5616 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5617 msgid "Read more"
    5618 msgstr ""
    5619 
    5620 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5621 msgid "Sales data is available for visits after %s."
    5622 msgstr ""
    5623 
    5624 #: includes/Admin/App/build/824.0373a16424a358ca8c24.js:5
    5625 msgid "Sales tracking is a new feature, so this data is only available for visits recorded after it was enabled."
    5626 msgstr ""
    5627 
    5628 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     5675#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    56295676#: includes/Admin/App/src/components/Statistics/InsightsHeader.js:21
    56305677msgid "Bounces"
    56315678msgstr ""
    56325679
    5633 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     5680#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    56345681#: includes/Admin/App/src/components/Statistics/CompareFooter.js:7
    56355682msgid "No data available for comparison"
    56365683msgstr ""
    56375684
    5638 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     5685#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    56395686#: includes/Admin/App/src/api/getCompareData.js:29
    56405687msgid "%s pageviews per session"
    56415688msgstr ""
    56425689
    5643 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     5690#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    56445691#: includes/Admin/App/src/api/getCompareData.js:38
    56455692msgid "%s per session"
    56465693msgstr ""
    56475694
    5648 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     5695#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    56495696#: includes/Admin/App/src/api/getCompareData.js:47
    56505697msgid "%s are new visitors"
    56515698msgstr ""
    56525699
    5653 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     5700#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    56545701#: includes/Admin/App/src/api/getCompareData.js:56
    56555702msgid "%s visitors bounced"
    56565703msgstr ""
    56575704
    5658 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     5705#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    56595706#: includes/Admin/App/src/api/getCompareData.js:67
    56605707msgid "%s of pageviews converted"
    56615708msgstr ""
    56625709
    5663 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     5710#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    56645711#: includes/Admin/App/src/api/getCompareData.js:76
    56655712msgid "%s pageviews per conversion"
    56665713msgstr ""
    56675714
    5668 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     5715#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    56695716#: includes/Admin/App/src/api/getCompareData.js:85
    56705717msgid "%s sessions per conversion"
    56715718msgstr ""
    56725719
    5673 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     5720#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    56745721#: includes/Admin/App/src/api/getCompareData.js:94
    56755722msgid "%s visitors per conversion"
    56765723msgstr ""
    56775724
    5678 #: includes/Admin/App/build/875.ff8d36052fc68e665538.js:1
     5725#: includes/Admin/App/build/875.b30bd12152ab12faffba.js:1
    56795726#: includes/Admin/App/src/components/Statistics/DevicesBlock.js:115
    56805727msgid "Devices"
    56815728msgstr ""
    56825729
    5683 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
    5684 #: includes/Admin/App/src/utils/api.js:33
     5730#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
     5731#: includes/Admin/App/src/routes/sales.jsx:33
     5732msgid "You do not have permission to view sales data."
     5733msgstr ""
     5734
     5735#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
     5736#: includes/Admin/App/src/utils/api.js:35
    56855737#: includes/Admin/Dashboard_Widget/build/index.js:1
    56865738msgid "Server error"
    56875739msgstr ""
    56885740
    5689 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
    5690 #: includes/Admin/App/src/utils/api.js:42
     5741#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
     5742#: includes/Admin/App/src/utils/api.js:44
    56915743#: includes/Admin/Dashboard_Widget/build/index.js:1
    56925744msgid "Server error in"
    56935745msgstr ""
    56945746
    5695 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
    5696 #: includes/Admin/App/src/utils/api.js:61
     5747#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
     5748#: includes/Admin/App/src/utils/api.js:63
    56975749#: includes/Admin/Dashboard_Widget/build/index.js:1
    56985750msgid "Click to copy"
    56995751msgstr ""
    57005752
    5701 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
    5702 #: includes/Admin/App/src/utils/api.js:64
     5753#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
     5754#: includes/Admin/App/src/utils/api.js:66
    57035755#: includes/Admin/Dashboard_Widget/build/index.js:1
    57045756msgid "Error copied to clipboard"
    57055757msgstr ""
    57065758
    5707 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5759#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57085760#: includes/Admin/App/src/components/Common/ErrorBoundary.jsx:44
    57095761msgid "Uh-oh! We stumbled upon an error."
    57105762msgstr ""
    57115763
    5712 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5764#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57135765#: includes/Admin/App/src/components/Common/ErrorBoundary.jsx:59
    57145766msgid "Copied"
    57155767msgstr ""
    57165768
    5717 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5769#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57185770#: includes/Admin/App/src/components/Common/ErrorBoundary.jsx:60
    57195771msgid "Copy Error"
    57205772msgstr ""
    57215773
    5722 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5774#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57235775#: includes/Admin/App/src/components/Common/ErrorBoundary.jsx:64
    57245776msgid "We're sorry for the trouble. Please take a moment to report this issue on the WordPress forums so we can work on fixing it. Here’s how you can report the issue:"
    57255777msgstr ""
    57265778
    5727 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5779#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57285780#: includes/Admin/App/src/components/Common/ErrorBoundary.jsx:72
    57295781msgid "Copy the error details by clicking the %s button above."
    57305782msgstr ""
    57315783
    5732 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5784#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57335785#: includes/Admin/App/src/components/Common/ErrorBoundary.jsx:84
    57345786msgid "Navigate to the Support Forum."
    57355787msgstr ""
    57365788
    5737 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5789#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57385790#: includes/Admin/App/src/components/Common/ErrorBoundary.jsx:88
    57395791msgid "If you haven’t already, log in to your WordPress.org account or create a new account."
    57405792msgstr ""
    57415793
    5742 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5794#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57435795#: includes/Admin/App/src/components/Common/ErrorBoundary.jsx:95
    57445796msgid "Once logged in, click on %s under the Burst Statistics forum."
    57455797msgstr ""
    57465798
    5747 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5799#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57485800#: includes/Admin/App/src/components/Common/ErrorBoundary.jsx:104
    57495801msgid "Title: Mention %s along with a brief hint of the error."
    57505802msgstr ""
    57515803
    5752 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5804#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57535805#: includes/Admin/App/src/components/Common/ErrorBoundary.jsx:112
    57545806msgid "Description: Paste the copied error details and explain what you were doing when the error occurred."
    57555807msgstr ""
    57565808
    5757 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5809#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57585810#: includes/Admin/App/src/components/Common/ErrorBoundary.jsx:119
    57595811msgid "Click %s to post your topic. Our team will look into the issue and provide assistance."
    57605812msgstr ""
    57615813
    5762 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5814#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57635815msgid "Unlock this feature with Pro. Upgrade for more insights and control."
    57645816msgstr ""
    57655817
    5766 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5818#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57675819#: includes/Admin/App/src/routes/settings.$settingsId.jsx:13
    57685820msgid "Settings section not found"
    57695821msgstr ""
    57705822
    5771 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5823#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57725824#: includes/Admin/App/src/routes/settings.$settingsId.jsx:19
    57735825msgid "Settings page not found"
    57745826msgstr ""
    57755827
    5776 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5828#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57775829msgid "You're enjoying a full-featured trial with <highlight>%d days left.</highlight> It includes premium features from our higher tiers."
    57785830msgstr ""
    57795831
    5780 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5832#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57815833msgid "Your trial has ended. Upgrade now to reactivate premium features."
    57825834msgstr ""
    57835835
    5784 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5836#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57855837msgid "Your license is <highlight>expiring in %d days.</highlight> Upgrade now to reactivate premium features."
    57865838msgstr ""
    57875839
    5788 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5840#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57895841msgid "Your license has expired. Upgrade now to reactivate premium features."
    57905842msgstr ""
    57915843
    5792 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5844#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57935845msgid "Activate your license to access premium features."
    57945846msgstr ""
    57955847
    5796 #: includes/Admin/App/build/index.d1ae230031b8f54fed6d.js:1
     5848#: includes/Admin/App/build/index.1a38302286708ded50a6.js:1
    57975849msgid "Manage subscription"
    57985850msgstr ""
  • burst-statistics/trunk/readme.txt

    r3402386 r3406692  
    66License: GPL2
    77Requires PHP: 8.0
    8 Tested up to: 6.8
     8Tested up to: 6.9
    99Stable tag: 3.0.2
    1010
     
    9898
    9999== Change log ==
     100= 3.1.0.3 =
     101* December 1st
     102* Fix: saving settings changes after saving initial changes required a reload.
     103* Performance: Performance improvements by offloading resource greedy processes during tracking to cron in batches
     104* Improvement: User Agent Parser improvements, removing invalid browsers
     105* Fix: dropdown for advanced filters not filtering the list.
     106* Fix: undefined tab caused by incomplete removal of sales menu when no WooCommerce or EDD detected.
     107* Fix: object caching on page counts causing slow update of page counts, props @fveits
     108
    100109= 3.0.2 =
    101 * November 25th
    102 * Fix: some notices were incorrectly dismissed during validation. 
     110* November 25th 2025
     111* Fix: some notices were incorrectly dismissed during validation.
    103112* Improvement: added automated test for hook goals.
    104113* Improvement: added automated test for archiving restoration.
Note: See TracChangeset for help on using the changeset viewer.