function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }

function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }

function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }

function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }

function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }

function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

import { v4 as uuid } from 'uuid';
export default {
  state: {// slice: 'mirador' // Configure the top-level slice of state for mirador selectors
  },
  canvasNavigation: {
    // Set the height and width of canvas thumbnails in the  CanvasNavigation companion window
    height: 50,
    width: 50
  },
  selectedTheme: 'light',
  // dark also available
  themes: {
    dark: {
      palette: {
        type: 'dark',
        primary: {
          main: '#4db6ac'
        },
        secondary: {
          main: '#4db6ac'
        },
        shades: {
          dark: '#000000',
          main: '#424242',
          light: '#616161'
        }
      }
    },
    light: {
      palette: {
        type: 'light'
      }
    }
  },
  theme: {
    // Sets up a MaterialUI theme. See https://material-ui.com/customization/default-theme/
    palette: {
      type: 'light',
      primary: {
        main: '#1967d2' // Controls the color of the Add button and current window indicator

      },
      secondary: {
        main: '#1967d2' // Controls the color of Selects and FormControls

      },
      shades: {
        // Shades that can be used to offset color areas of the Workspace / Window
        dark: '#eeeeee',
        main: '#ffffff',
        light: '#f5f5f5'
      },
      error: {
        main: '#b00020'
      },
      notification: {
        // Color used in MUI Badge dots
        main: '#ffa224'
      },
      hitCounter: {
        "default": '#bdbdbd'
      },
      highlights: {
        primary: '#ffff00',
        secondary: '#00BFFF'
      },
      section_divider: 'rgba(0, 0, 0, 0.25)',
      annotations: {
        hidden: {
          globalAlpha: 0
        },
        "default": {
          strokeStyle: '#00BFFF',
          globalAlpha: 1
        },
        hovered: {
          strokeStyle: '#BF00FF',
          globalAlpha: 1
        },
        selected: {
          strokeStyle: '#ffff00',
          globalAlpha: 1
        }
      },
      search: {
        "default": {
          fillStyle: '#00BFFF',
          globalAlpha: 0.3
        },
        hovered: {
          fillStyle: '#00FFFF',
          globalAlpha: 0.3
        },
        selected: {
          fillStyle: '#ffff00',
          globalAlpha: 0.3
        }
      }
    },
    typography: {
      body1: {
        fontSize: "1rem",
        letterSpacing: "0em",
        lineHeight: "1.6em"
      },
      body2: {
        fontSize: "0.878rem",
        letterSpacing: "0.015em",
        lineHeight: "1.6em"
      },
      button: {
        fontSize: "0.878rem",
        letterSpacing: "0.09em",
        lineHeight: "2.25rem",
        textTransform: "uppercase"
      },
      caption: {
        fontSize: "0.772rem",
        letterSpacing: "0.033em",
        lineHeight: "1.6rem"
      },
      body1Next: {
        fontSize: "1rem",
        letterSpacing: "0em",
        lineHeight: "1.6em"
      },
      body2Next: {
        fontSize: "0.878rem",
        letterSpacing: "0.015em",
        lineHeight: "1.6em"
      },
      buttonNext: {
        fontSize: "0.878rem",
        letterSpacing: "0.09em",
        lineHeight: "2.25rem"
      },
      captionNext: {
        fontSize: "0.772rem",
        letterSpacing: "0.33em",
        lineHeight: "1.6rem"
      },
      overline: {
        fontSize: "0.678rem",
        fontWeight: 500,
        letterSpacing: "0.166em",
        lineHeight: "2em",
        textTransform: "uppercase"
      },
      h1: {
        fontSize: "2.822rem",
        letterSpacing: "-0.015em",
        lineHeight: "1.2em"
      },
      h2: {
        fontSize: "1.575rem",
        letterSpacing: "0em",
        lineHeight: "1.33em"
      },
      h3: {
        fontSize: "1.383rem",
        fontWeight: 300,
        letterSpacing: "0em",
        lineHeight: "1.33em"
      },
      h4: {
        fontSize: "1.215rem",
        letterSpacing: "0.007em",
        lineHeight: "1.45em"
      },
      h5: {
        fontSize: "1.138rem",
        letterSpacing: "0.005em",
        lineHeight: "1.55em"
      },
      h6: {
        fontSize: "1.067rem",
        fontWeight: 400,
        letterSpacing: "0.01em",
        lineHeight: "1.6em"
      },
      subtitle1: {
        fontSize: "0.937rem",
        letterSpacing: "0.015em",
        lineHeight: "1.6em",
        fontWeight: 300
      },
      subtitle2: {
        fontSize: "0.878rem",
        fontWeight: 500,
        letterSpacing: "0.02em",
        lineHeight: "1.75em"
      },
      useNextVariants: true // set so that console deprecation warning is removed

    },
    overrides: {
      MuiListSubheader: {
        root: {
          '&[role="presentation"]:focus': {
            outline: 0
          }
        }
      },
      MuiTooltip: {
        // Overridden from https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Tooltip/Tooltip.js#L40-L70
        tooltipPlacementLeft: _defineProperty({}, '@media (min-width:600px)', {
          margin: 0
        }),
        tooltipPlacementRight: _defineProperty({}, '@media (min-width:600px)', {
          margin: 0
        }),
        tooltipPlacementTop: _defineProperty({}, '@media (min-width:600px)', {
          margin: 0
        }),
        tooltipPlacementBottom: _defineProperty({}, '@media (min-width:600px)', {
          margin: 0
        })
      },
      MuiTouchRipple: {
        childPulsate: {
          animation: 'none'
        },
        rippleVisible: {
          animation: 'none'
        }
      }
    },
    props: {
      MuiButtonBase: {
        disableTouchRipple: true
      },
      MuiLink: {
        underline: 'always'
      }
    }
  },
  language: 'en',
  // The default language set in the application
  availableLanguages: {
    // All the languages available in the language switcher
    ar: 'العربية',
    de: 'Deutsch',
    en: 'English',
    fr: 'Français',
    ja: '日本語',
    kr: '한국어',
    lt: 'Lietuvių',
    nl: 'Nederlands',
    'nb-NO': 'Norwegian Bokmål',
    pl: 'Polski',
    'pt-BR': 'Português do Brasil',
    vi: 'Tiếng Việt',
    'zh-CN': '中文(简体)',
    'zh-TW': '中文(繁體)',
    it: "Italiano",
    sr: 'Српски',
    sv: 'Svenska'
  },
  annotations: {
    htmlSanitizationRuleSet: 'iiif',
    // See src/lib/htmlRules.js for acceptable values
    filteredMotivations: ['oa:commenting', 'oa:tagging', 'sc:painting', 'commenting', 'tagging']
  },
  createGenerateClassNameOptions: {
    // Options passed directly to createGenerateClassName in Material-UI https://material-ui.com/styles/api/#creategenerateclassname-options-class-name-generator
    productionPrefix: 'mirador'
  },
  requests: {
    preprocessors: [// Functions that receive HTTP requests and manipulate them (e.g. to add headers)
      // (url, options) => (url.match('info.json') && { ...options, myCustomThing: 'blah' })
    ],
    postprocessors: [// Functions that receive HTTP responses and manipulates them before adding to store
      // An example of manipulating the response for an annotation request
      // (url, action) => {
      //   if (action.annotationId) {
      //     action.annotationJson = {};
      //   }
      // }
    ]
  },
  translations: {// Translations can be added to inject new languages or override existing labels
  },
  window: {
    //global window defaults
    allowClose: false,
    // Configure if windows can be closed or not
    allowFullscreen: false,
    // Configure to show a "fullscreen" button in the WindowTopBar
    allowMaximize: false,
    // Configure if windows can be maximized or not
    allowTopMenuButton: false,
    // Configure if window view and thumbnail display menu are visible or not
    allowWindowSideBar: true,
    // Configure if side bar menu is visible or not
    authNewWindowCenter: 'parent',
    // Configure how to center a new window created by the authentication flow. Options: parent, screen
    sideBarPanel: 'search',
    // Configure which sidebar is selected by default. Options: info, attribution, canvas, annotations, search
    defaultSidebarPanelHeight: 201,
    // Configure default sidebar height in pixels
    defaultSidebarPanelWidth: 235,
    // Configure default sidebar width in pixels
    defaultView: 'single',
    // Configure which viewing mode (e.g. single, book, gallery) for windows to be opened in
    forceDrawAnnotations: false,
    hideWindowTitle: true,
    // Configure if the window title is shown in the window title bar or not
    highlightAllAnnotations: false,
    // Configure whether to display annotations on the canvas by default
    showLocalePicker: false,
    // Configure locale picker for multi-lingual metadata
    sideBarOpen: true,
    // Configure if the sidebar (and its content panel) is open by default
    switchCanvasOnSearch: true,
    // Configure if Mirador should automatically switch to the canvas of the first search result
    panels: {
      // Configure which panels are visible in WindowSideBarButtons
      info: false,
      attribution: false,
      canvas: false,
      annotations: false,
      search: true,
      layers: false
    },
    views: [{
      key: 'single',
      behaviors: ['individuals']
    }, {
      key: 'book',
      behaviors: ['paged']
    }, {
      key: 'scroll',
      behaviors: ['continuous']
    }, {
      key: 'gallery'
    }],
    elastic: {
      height: 400,
      width: 480
    }
  },
  windows: [// Array of windows to be open when mirador initializes (each object should at least provide a manifestId key with the value of the IIIF presentation manifest to load)

    /**
    Example Window:
    {
      manifestId: 'https://iiif.harvardartmuseums.org/manifests/object/299843',
      canvasId: 'https://iiif.harvardartmuseums.org/manifests/object/299843/page_2',
      thumbnailNavigationPosition: 'far-bottom',
    }
    // ../state/actions/window.js `defaultOptions`
    // ../lib/MiradorViewer.js `windowAction`
    */
  ],
  thumbnails: {
    preferredFormats: ['jpg', 'png', 'webp', 'tif']
  },
  thumbnailNavigation: {
    defaultPosition: 'off',
    // Which position for the thumbnail navigation to be be displayed. Other possible values are "far-bottom" or "far-right"
    displaySettings: true,
    // Display the settings for this in WindowTopMenu
    height: 130,
    // height of entire ThumbnailNavigation area when position is "far-bottom"
    width: 100 // width of one canvas (doubled for book view) in ThumbnailNavigation area when position is "far-right"

  },
  workspace: {
    draggingEnabled: true,
    allowNewWindows: true,
    id: uuid(),
    isWorkspaceAddVisible: false,
    // Catalog/Workspace add window feature visible by default
    exposeModeOn: false,
    // unused?
    height: 5000,
    // height of the elastic mode's virtual canvas
    showZoomControls: false,
    // Configure if zoom controls should be displayed by default
    type: 'mosaic',
    // Which workspace type to load by default. Other possible values are "elastic". If "mosaic" or "elastic" are not selected no worksapce type will be used.
    viewportPosition: {
      // center coordinates for the elastic mode workspace
      x: 0,
      y: 0
    },
    width: 5000 // width of the elastic mode's virtual canvas

  },
  workspaceControlPanel: {
    enabled: false // Configure if the control panel should be rendered.  Useful if you want to lock the viewer down to only the configured manifests

  },
  galleryView: {
    height: 120,
    // height of gallery view thumbnails
    width: null // width of gallery view thumbnails (or null, to auto-calculate an aspect-ratio appropriate size)

  },
  osdConfig: {
    // Default config used for OpenSeadragon
    alwaysBlend: false,
    blendTime: 0.1,
    preserveImageSizeOnResize: true,
    preserveViewport: true,
    showNavigationControl: false
  },
  "export": {
    catalog: true,
    companionWindows: true,
    config: true,
    elasticLayout: true,
    layers: true,
    // filter out anything re-retrievable:
    manifests: {
      filter: function filter(_ref) {
        var _ref2 = _slicedToArray(_ref, 2),
            id = _ref2[0],
            value = _ref2[1];

        return !id.startsWith('http');
      }
    },
    viewers: true,
    windows: true,
    workspace: true
  },
  audioOptions: {
    // Additional props passed to <audio> element
    controls: true,
    crossOrigin: 'anonymous'
  },
  videoOptions: {
    // Additional props passed to <audio> element
    controls: true,
    crossOrigin: 'anonymous'
  },
  auth: {
    serviceProfiles: [{
      profile: 'http://iiif.io/api/auth/1/external',
      external: true
    }, {
      profile: 'http://iiif.io/api/auth/1/kiosk',
      kiosk: true
    }, {
      profile: 'http://iiif.io/api/auth/1/clickthrough'
    }, {
      profile: 'http://iiif.io/api/auth/1/login'
    }, {
      profile: 'http://iiif.io/api/auth/0/external',
      external: true
    }, {
      profile: 'http://iiif.io/api/auth/0/kiosk',
      kiosk: true
    }, {
      profile: 'http://iiif.io/api/auth/0/clickthrough'
    }, {
      profile: 'http://iiif.io/api/auth/0/login'
    }]
  }
};