// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.

export default {

  MISC: {
    TRAY_TOGGLE_SPEED: 250,
    DEFAULT_PAGE_SIZE: 20
  },

  DATABASES: {
    DOCUMENT_LIMIT: 100
  },

  // global events for common used components
  EVENTS: {
    TRAY_OPENED: 'tray:opened',
    NAVBAR_SIZE_CHANGED: 'navbar:size_changed'
  },

  // documentation URLs
  DOC_URLS: {
    GENERAL: '/_utils/docs/intro/api.html#documents',
    ALL_DBS: '/_utils/docs/api/server/common.html?highlight=all_dbs#get--_all_dbs',
    REPLICATION: '/_utils/docs/replication/replicator.html#basics',
    DESIGN_DOCS: '/_utils/docs/couchapp/ddocs.html#design-docs',
    DESIGN_DOC_METADATA: '/_utils/docs/api/ddoc/common.html#api-ddoc-view-index-info',
    VIEW_FUNCS: '/_utils/docs/couchapp/ddocs.html#view-functions',
    MAP_FUNCS: '/_utils/docs/couchapp/ddocs.html#map-functions',
    REDUCE_FUNCS: '/_utils/docs/couchapp/ddocs.html#reduce-and-rereduce-functions',
    API_REF: '/_utils/docs/http-api.html',
    DB_PERMISSION: '/_utils/docs/api/database/security.html#db-security',
    STATS: '/_utils/docs/api/server/common.html?highlight=stats#get--_stats',
    ACTIVE_TASKS: '/_utils/docs/api/server/common.html?highlight=stats#active-tasks',
    LOG: '/_utils/docs/api/server/common.html?highlight=stats#log',
    CONFIG: '/_utils/docs/config/index.html',
    VIEWS: '/_utils/docs/intro/overview.html#views',
    MANGO_INDEX: '/_utils/docs/intro/api.html#documents',
    MANGO_SEARCH: '/_utils/docs/intro/api.html#documents',
    CHANGES: '/_utils/docs/api/database/changes.html?highlight=changes#post--db-_changes'
  }
};
