const shop_data = {

  API_RFQ: 'https://hooks.m-labs.hk/rfq',

  mobileSideMenuShouldOpen: false,
  currentItemHovered: null,
  currentMode: 'rack',
  currency: 'USD',

  crateModeSlots: {
    rack: 21,
    desktop: 10,
  },

  crateRules: {
    maxSlot: {
      type: 'crate',
      icon: '/shop/icon-warning.svg',
      color: '#c75e5e',
      name: 'Crate',
      message: 'You have reach the maximum number of slots allowed for this crate. Consider removing cards.',
    },
    compactSlot: {
      type: 'crate',
      icon: '/shop/icon-reminder.svg',
      name: 'Crate',
      message: 'The selected cards fit in a 42hp desktop crate, consider switching to it for a more compact system',
    },
  },

  crateModeItems: [{
    id: 'rack',
    name: 'Rack mountable crate',
    price: 1450,
  }, {
    id: 'desktop',
    name: 'Desktop crate',
    price: 1450,
  }],

  items: {
    /* keys are also ids, avoid changing them */
    'kasli': {
      id: 'kasli',
      name: 'Carrier',
      name_number: '1123',
      name_codename: 'Kasli',
      price: 3600,
      image: '/shop/graphic-03_kasli.svg',
      specs: [
        'FPGA core device, runs ARTIQ kernels, controls the EEMs.',
        '3 SFP 6GB/s slots for Ethernet or DRTIO.',
        '8 EEM connectors on board.',
        '4 MMCX clock outputs.',
        'Price includes bitstream generation, flashing, testing, and firmware updates for 1 year (USD 1,400.00).',
      ],
      size: 'big',
      type: 'kasli',
      hp: 8,
      nbrSlotMin: 0,
      nbrSlotMax: 8,
      nbrCurrentSlot: 0,
      nbrClockMax: 4,
      nbrCurrentClock: 0,
      slotOccupied: 1,
      clockOccupied: 0,
      rules: {
        maxSlot: {
          type: 'kasli-max-slot',
          icon: '/shop/icon-reminder.svg',
          name: 'Kasli',
          message: 'Add a backplane adapter to extend EEM connectors to 12 at an extra charge.',
        },
        maxSlotWarning: {
          type: 'kasli-max-slot-warning',
          icon: '/shop/icon-warning.svg',
          name: 'Kasli',
          message: 'Insufficient EEM connectors.',
        },
        maxClock: {
          type: 'kasli-max-clock',
          icon: '/shop/icon-reminder.svg',
          name: 'Kasli',
          message: 'Insufficient clock connectors. Kasli has at most 4 clock connections.',
        },
        maxClockWarning: {
          type: 'kasli-max-clock-warning',
          icon: '/shop/icon-warning.svg',
          name: 'Kasli',
          message: 'Insufficient clock connectors.',
        },
        follow: {
          type: 'kasli-follow',
          icon: '/shop/icon-reminder.svg',
          name: 'Kasli',
          message: 'Due to wiring constraints, a Kasli can only connect to EEM cards immediately at its right, without crossing another Kasli.',
        },
      },
    },
    'kasli-backplane': {
      id: 'kasli-backplane',
      name: 'Carrier',
      name_number: '1123b',
      name_codename: 'Kasli + BP adapter',
      price: 3830,
      image: '/shop/graphic-03_kasli-with-backplane.svg',
      specs: [
        'Same as above, but with adapter that provides 4 additional EEM connectors',
      ],
      size: 'big',
      type: 'kasli-backplane',
      hp: 8,
      nbrSlotMin: 0,
      nbrSlotMax: 12,
      nbrCurrentSlot: 0,
      nbrClockMax: 4,
      nbrCurrentClock: 0,
      slotOccupied: 1,
      clockOccupied: 0,
      rules: {
        maxSlot: {
          type: 'kasli-wb-max-slot',
          icon: '/shop/icon-reminder.svg',
          name: 'Kasli w/backplane',
          message: 'Insufficient EEM connectors.',
        },
        maxSlotWarning: {
          type: 'kasli-wb-max-slot-warning',
          icon: '/shop/icon-warning.svg',
          name: 'Kasli',
          message: 'Insufficient EEM connectors',
        },
        maxClock: {
          type: 'kasli-wb-max-clock',
          icon: '/shop/icon-reminder.svg',
          name: 'Kasli w/backplane',
          message: 'Insufficient clock connectors. Kasli has at most 4 clock connections.',
        },
        maxClockWarning: {
          type: 'kasli-wb-max-clock-warning',
          icon: '/shop/icon-warning.svg',
          name: 'Kasli',
          message: 'Insufficient clock connectors.',
        },
        follow: {
          type: 'kasli-wb-follow',
          icon: '/shop/icon-reminder.svg',
          name: 'Kasli w/backplane',
          message: 'Due to wiring constraints, a Kasli can only connect to EEM cards immediately at its right, without crossing another Kasli.',
        },
      },
    },
    'bnc-dio': {
      id: 'bnc-dio',
      name: 'BNC-TTL',
      name_number: '2118',
      name_codename: '',
      price: 450,
      image: '/shop/graphic-03_BNC-TTL.svg',
      specs: [
        'Two banks of four digital channels each, with BNC connectors.',
        'Each bank with individual ground isolation.',
        'Per-bank switchable direction via on-board switches.',
        'Per-channel switchable 50 Ohm termination with LED indicators.',
        'Short circuit tolerance: infinite.',
        'Minimum pulse width: 3ns.',
        'Max 150 MHz toggle rate with 50% duty cycle.'
      ],
      size: 'big',
      type: null,
      hp: 8,
      nbrSlotMin: 0,
      nbrSlotMax: 0,
      nbrClockMax: 0,
      slotOccupied: 1,
      clockOccupied: 0,
      rules: {
        resources: {
          type: 'bnc-dio',
          icon: '/shop/icon-warning.svg',
          name: 'BNC-DIO',
          message: 'This card needs a card that provides a EEM connector (e.g. Kasli) at its left.',
        },
      },
    },
    'sma-dio': {
      id: 'sma-dio',
      name: 'SMA-TTL',
      name_number: '2128',
      name_codename: '',
      price: 400,
      image: '/shop/graphic-03_SMA-TTL.svg',
      specs: [
        'Same as above, but with SMA connectors.'
      ],
      size: 'small',
      type: null,
      hp: 4,
      nbrSlotMin: 0,
      nbrSlotMax: 0,
      nbrClockMax: 0,
      slotOccupied: 1,
      clockOccupied: 0,
      rules: {
        resources: {
          type: 'sma-dio',
          icon: '/shop/icon-warning.svg',
          name: 'SMA-DIO',
          message: 'This card needs a card that provides a EEM connector (e.g. Kasli) at its left.',
        },
      },
    },
    'rj45-dio': {
      id: 'rj45-dio',
      name: 'LVDS-TTL',
      name_number: '2245',
      name_codename: '',
      price: 390,
      image: '/shop/graphic-03_LVDS.svg',
      specs: [
        'Supplies 16 LVDS pairs via 4 front-panel RJ45 connectors.',
        'Each RJ45 supplies 4 LVDS DIOs.',
        'Direction individually selectable for each signal via on-board switches.',
        'No galvanic isolation.',
        'Higher speed and lower jitter than the isolated SMA and BNC DIO cards.'
      ],
      size: 'small',
      type: null,
      hp: 4,
      nbrSlotMin: 0,
      nbrSlotMax: 0,
      nbrClockMax: 0,
      slotOccupied: 2,
      clockOccupied: 0,
      rules: {
        resources: {
          type: 'rj45-dio',
          icon: '/shop/icon-warning.svg',
          name: 'RJ45-DIO',
          message: 'This card needs a card that provides two EEM connectors (e.g. Kasli) at its left.',
        },
      },
    },
    'urukul': {
      id:  'urukul',
      name: 'DDS',
      name_number: '4410',
      name_codename: 'Urukul',
      price: 2350,
      image: '/shop/graphic-03_Urukul.svg',
      specs: [
        '4 channel 1GS/s DDS.',
        'Output frequency (-3 dB): <1 to >400 MHz.',
        'Nominal max output power 10 dBm.',
        'Digital step attenuator 0 to -31.5dB.',
        'RF switch (1ns temporal resolution), 70dB isolation.',
        'AD9910 or AD9912 chip.',
        'By default, we use the AD9910 as it provides more features. If you need the higher frequency resolution of the AD9912, leave us a note.',
        'AD9910 and AD9912 cards can be used at the same time in the same crate.',
        'External 5W power amplifier is available separately, leave us a note if interested.'
      ],
      size: 'small',
      type: 'urukul',
      hp: 4,
      nbrSlotMin: 0,
      nbrSlotMax: 0,
      nbrClockMax: 0,
      slotOccupied: 2,
      clockOccupied: 1,
      rules: {
        connectors: {
          type: 'urukul',
          icon: '/shop/icon-reminder.svg',
          name: 'Urukul',
          message: 'This configuration uses 2 EEM connectors as it is recommended. If you prefer to use 1 EEM connector, please inform us by leaving an additional note.',
        },
        info: {
          type: 'urukul-info',
          icon: '/shop/icon-reminder.svg',
          name: 'Urukul',
          message: 'The default chip is AD9910, which supports more features. If you need the higher frequency resolution of the AD9912, leave us a note.',
        },
        resources: {
          type: 'urukul',
          icon: '/shop/icon-warning.svg',
          name: 'Urukul',
          message: 'This card needs a card that provides EEM and clocking connectors (e.g. Kasli) at its left.',
        },
      },
    },
    'zotino': {
      id: 'zotino',
      name: 'DAC',
      name_number: '5432',
      name_codename: 'Zotino',
      price: 1600,
      image: '/shop/graphic-03_Zotino.svg',
      specs: [
        '32-channel DAC.',
        '16-bit resolution.',
        '1 MSPS shared between all channels.',
        'Output voltage +-10V.',
        'HD68 connector with all channels.',
        'Channels can also be broken out to BNC or SMA using IDC-BNC, IDC-SMA or IDC-MCX cards.'
      ],
      size: 'small',
      type: 'zotino',
      hp: 4,
      nbrSlotMin: 0,
      nbrSlotMax: 4,
      nbrCurrentSlot: 0,
      nbrClockMax: 0,
      slotOccupied: 1,
      clockOccupied: 0,
      rules: {
        maxSlot: {
          type: 'zotino',
          icon: '/shop/icon-reminder.svg',
          name: 'Zotino',
          message: 'Zotino has at most 4 IDC-BNC adapters.',
        },
        maxSlotWarning: {
          type: 'zotino-max-slot-warning',
          icon: '/shop/icon-warning.svg',
          name: 'Zotino',
          message: 'Insufficient connectors.',
        },
        resources: {
          type: 'zotino',
          icon: '/shop/icon-warning.svg',
          name: 'Zotino',
          message: 'This card needs a card that provides a EEM connector (e.g. Kasli) at its left.',
        },
      },
    },
    'idc-bnc-adapter': {
      id: 'idc-bnc-adapter',
      name: 'BNC-IDC',
      name_number: '5518',
      name_codename: '',
      price: 160,
      image: '/shop/graphic-03_IDC-BNC-adapter.svg',
      specs: [
        'Breaks out analog signals from Zotino or HD68-IDC to BNC connectors.',
        'Each card provides 8 channels.',
        'Breaking out all 32 channels from a Zotino requires 4 IDC-BNC cards.'
      ],
      size: 'big',
      type: 'idc-bnc',
      hp: 8,
      nbrSlotMin: 0,
      nbrSlotMax: 0,
      nbrClockMax: 0,
      slotOccupied: 1,
      clockOccupied: 0,
      rules: {
        wrong: {
          type: 'idc-bnc',
          icon: '/shop/icon-warning.svg',
          name: 'IDC-BNC',
          message: 'Should be after a Zotino or a HD68-IDC or with another IDC-BNC.',
        }
      },
    },
    'idc-sma-adapter': {
      id: 'idc-sma-adapter',
      name: 'SMA-IDC',
      name_number: '5528',
      name_codename: '',
      price: 160,
      image: '/shop/graphic-03_SMA-IDC.svg',
      specs: [
        'Breaks out analog signals from Zotino or HD68-IDC to SMA connectors.',
        'Each card provides 8 channels.',
        'Breaking out all 32 channels from a Zotino requires 4 SMA-IDC cards.'
      ],
      size: 'small',
      type: 'idc-bnc',
      hp: 4,
      nbrSlotMin: 0,
      nbrSlotMax: 0,
      nbrClockMax: 0,
      slotOccupied: 1,
      clockOccupied: 0,
      rules: {
        wrong: {
          type: 'idc-sma',
          icon: '/shop/icon-warning.svg',
          name: 'SMA-IDC',
          message: 'Should be after a Zotino or a HD68-IDC or with another SMA-IDC.',
        }
      },
    },
    'idc-mcx-adapter': {
      id: 'idc-mcx-adapter',
      name: 'MCX-IDC',
      name_number: '5538',
      name_codename: '',
      price: 160,
      image: '/shop/graphic-03_MCX-IDC.svg',
      specs: [
        'Breaks out analog signals from Zotino or HD68-IDC to MCX connectors.',
        'Each card provides 8 channels.',
        'Breaking out all 32 channels from a Zotino requires 4 MCX-IDC cards.'
      ],
      size: 'big',
      type: 'idc-bnc',
      hp: 8,
      nbrSlotMin: 0,
      nbrSlotMax: 0,
      nbrClockMax: 0,
      slotOccupied: 1,
      clockOccupied: 0,
      rules: {
        wrong: {
          type: 'idc-mcx',
          icon: '/shop/icon-warning.svg',
          name: 'MCX-IDC',
          message: 'Should be after a Zotino or a HD68-IDC or with another MCX-IDC.',
        }
      },
    },
    'hd68-idc-adapter': {
      id:'hd68-idc-adapter',
      name: 'HD68-IDC',
      name_number: '5568',
      name_codename: '',
      price: 150,
      image: '/shop/graphic-03_HD68.svg',
      specs: [
        'Connects an external HD68 cable to IDC-BNC, IDC-SMA or IDC-MCX cards.',
      ],
      size: 'small',
      type: 'hd68',
      hp: 4,
      nbrSlotMin: 1,
      nbrSlotMax: 4,
      nbrCurrentSlot: 0,
      nbrClockMax: 0,
      slotOccupied: 1,
      clockOccupied: 0,
      rules: {
        minAdapter: {
          type: 'hd68-min-adapter',
          icon: '/shop/icon-warning.svg',
          name: 'HD68-IDC',
          message: 'Need at least one IDC-BNC Adapter at its right.',
        },
        maxSlot: {
          type: 'hd68-max-slot',
          icon: '/shop/icon-reminder.svg',
          name: 'HD68-IDC',
          message: null,
        },
        maxSlotWarning: {
          type: 'hd68-max-slot-warning',
          icon: '/shop/icon-warning.svg',
          name: 'HD68-IDC',
          message: 'Insufficient connectors.',
        },
      },
    },
    'novo': {
      id: 'novo',
      name: 'Sampler',
      name_number: '5108',
      name_codename: '',
      price: 1600,
      image: '/shop/graphic-03_Sampler.svg',
      specs: [
        '8-channel ADC.',
        '16-bit resolution.',
        '1.5 MSPS simultaneously on all channels.',
        'When used with ARTIQ-Python driver, effective sample rate is lower.',
        'Digitally programmable input gain.',
        'Full-scale input ranges between +-10mV and +-10V.',
        'Supports SU-Servo laser intensity stabilization servo in conjunction with Urukul.'
      ],
      size: 'big',
      type: 'novo',
      hp: 8,
      nbrSlotMin: 0,
      nbrSlotMax: 0,
      nbrClockMax: 0,
      slotOccupied: 2,
      clockOccupied: 0,
      rules: {
        connectors: {
          type: 'novo',
          icon: '/shop/icon-reminder.svg',
          name: 'Novo',
          message: 'This configuration uses 2 EEM connectors as it is recommended. If you prefer to use 1 EEM connector, please inform us by leaving an additional note.',
        },
        resources: {
          type: 'novo',
          icon: '/shop/icon-warning.svg',
          name: 'Novo',
          message: 'This card needs a card that provides EEM connectors (e.g. Kasli) at its left.',
        },
      }
    },
    'koster': {
      id: 'koster',
      name: 'Grabber',
      name_number: '6302',
      name_codename: '',
      price: 550,
      image: '/shop/graphic-03_Grabber.svg',
      specs: [
        'Camera input interface card.',
        'Supports some EMCCD cameras.',
        'Allows image processing to occur in the FPGA with lower latency.',
        'Existing stack supports summing over rectangular ROIs and reporting the result to ARTIQ kernels.',
        'Camera signal is entirely processed in the Kasli FPGA.',
      ],
      size: 'small',
      type: 'koster',
      hp: 4,
      nbrSlotMin: 0,
      nbrSlotMax: 0,
      nbrClockMax: 0,
      slotOccupied: 2,
      clockOccupied: 0,
      rules: {
        connectors: {
          type: 'koster',
          icon: '/shop/icon-reminder.svg',
          name: 'Koster',
          message: 'This configuration uses 2 EEM connectors. If you prefer to use 1 or 3 EEM connectors, please inform us by leaving an additional note.',
        },
        resources: {
          type: 'koster',
          icon: '/shop/icon-warning.svg',
          name: 'Koster',
          message: 'This card needs a card that provides EEM connectors (e.g. Kasli) at its left.',
        },
      }
    },
    'clocker': {
      id: 'clocker',
      name: 'Clocker',
      name_number: '7210',
      name_codename: '',
      price: 525,
      image: '/shop/graphic-03_Clocker.svg',
      specs: [
        'Distribute a low jitter clock signal among cards.',
        '2 inputs.',
        '10 outputs including 4 SMAs.',
        'Frequency up to 1GHz.',
        'Low jitter <100fs RMS.'
      ],
      size: 'small',
      type: 'clocker',
      hp: 4,
      nbrSlotMin: 0,
      nbrSlotMax: 0,
      nbrClockMax: 6,
      slotOccupied: 1,
      clockOccupied: 1,
      rules: {
        maxClock: {
          type: 'clocker-max-clock',
          icon: '/shop/icon-reminder.svg',
          name: 'Clocker',
          message: 'Clocker has at most 6 clock connections.',
        },
        maxClockWarning: {
          type: 'clocker-max-clock-warning',
          icon: '/shop/icon-warning.svg',
          name: 'Clocker',
          message: 'Insufficient clock connectors.',
        },
      },
    },
    'stabilizer': {
      id: 'stabilizer',
      name: 'DSP',
      name_number: '8452',
      name_codename: 'Stabilizer',
      price: 2000,
      image: '/shop/graphic-03_Stabilizer.svg',
      specs: [
        'CPU-based dual-channel fast servo.',
        '400MHz STM32H743ZIT6.',
        'Dual 16bit ADC with x2, x5, x10 PGA (2MS/s).',
        '16bit AD5542A DAC (1us settling time).',
        '100Base-T Ethernet.',
        'Can be controlled by Kasli or work stand-alone with PoE supply.'
      ],
      size: 'small',
      type: null,
      hp: 4,
      nbrSlotMin: 0,
      nbrSlotMax: 0,
      nbrClockMax: 0,
      slotOccupied: 1,
      clockOccupied: 0,
    },
    'mirny': {
      id: 'mirny',
      name: 'Synthesizer',
      name_number: '4456',
      name_codename: 'Mirny',
      price: 2660,
      image: '/shop/graphic-03_Mirny.svg',
      specs: [
        '4-channel Wide-band PLL/VCO-based microwave frequency synthesiser.',
        '53 MHz to >4 GHz.',
        'Up to 13.6 GHz when using the mezzanine.',,
        'Much higher frequency resolution than Urukul.',
        'Lower jitter and phase noise.',
        'Large frequency changes take several milliseconds.',
      ],
      size: 'small',
      type: null,
      hp: 4,
      nbrSlotMin: 0,
      nbrSlotMax: 0,
      nbrClockMax: 0,
      slotOccupied: 1,
      clockOccupied: 1,
      rules: {
        resources: {
          type: 'mirny',
          icon: '/shop/icon-warning.svg',
          name: 'Mirny',
          message: 'This card needs a card that provides a EEM connector (e.g. Kasli) at its left.',
        },
      },
    },
  },

  columns: {
    /***
     * backlog is the column containing all items on left aside,
     * name should not change
     */
    'backlog': {
      id: 'backlog',
      title: 'Backlog',
      /* itemIds define items order - change order to suit your need */
      itemIds: [
        'kasli',
        'kasli-backplane',
        'bnc-dio',
        'sma-dio',
        'rj45-dio',
        'urukul',
        'mirny',
        'zotino',
        'idc-bnc-adapter',
        'idc-sma-adapter',
        'idc-mcx-adapter',
        'hd68-idc-adapter',
        'novo',
        'koster',
        'clocker',
        'stabilizer',
      ],
    },

    'cart': {
      id: 'cart',
      title: 'Cart',
      items: [],
      itemsData: {},
    },

  },

  rules: {},

};


window.shop_data = shop_data;
