// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import keyMirror from 'keymirror'; import audioIcon from 'images/icons/audio.png'; import videoIcon from 'images/icons/video.png'; import excelIcon from 'images/icons/excel.png'; import pptIcon from 'images/icons/ppt.png'; import pdfIcon from 'images/icons/pdf.png'; import codeIcon from 'images/icons/code.png'; import wordIcon from 'images/icons/word.png'; import patchIcon from 'images/icons/patch.png'; import genericIcon from 'images/icons/generic.png'; import logoImage from 'images/logo_compact.png'; import solarizedDarkCSS from '!!file?name=files/code_themes/[hash].[ext]!highlight.js/styles/solarized-dark.css'; import solarizedDarkIcon from 'images/themes/code_themes/solarized-dark.png'; import solarizedLightCSS from '!!file?name=files/code_themes/[hash].[ext]!highlight.js/styles/solarized-light.css'; import solarizedLightIcon from 'images/themes/code_themes/solarized-light.png'; import githubCSS from '!!file?name=files/code_themes/[hash].[ext]!highlight.js/styles/github.css'; import githubIcon from 'images/themes/code_themes/github.png'; import monokaiCSS from '!!file?name=files/code_themes/[hash].[ext]!highlight.js/styles/monokai.css'; import monokaiIcon from 'images/themes/code_themes/monokai.png'; import defaultThemeImage from 'images/themes/organization.png'; import mattermostDarkThemeImage from 'images/themes/mattermost_dark.png'; import mattermostThemeImage from 'images/themes/mattermost.png'; import windows10ThemeImage from 'images/themes/windows_dark.png'; export default { ActionTypes: keyMirror({ RECEIVED_ERROR: null, CLICK_CHANNEL: null, CREATE_CHANNEL: null, LEAVE_CHANNEL: null, CREATE_POST: null, POST_DELETED: null, REMOVE_POST: null, RECEIVED_CHANNELS: null, RECEIVED_CHANNEL: null, RECEIVED_MORE_CHANNELS: null, RECEIVED_CHANNEL_EXTRA_INFO: null, FOCUS_POST: null, RECEIVED_POSTS: null, RECEIVED_FOCUSED_POST: null, RECEIVED_POST: null, RECEIVED_EDIT_POST: null, RECEIVED_SEARCH: null, RECEIVED_SEARCH_TERM: null, RECEIVED_POST_SELECTED: null, RECEIVED_MENTION_DATA: null, RECEIVED_ADD_MENTION: null, RECEIVED_PROFILES: null, RECEIVED_ME: null, RECEIVED_SESSIONS: null, RECEIVED_AUDITS: null, RECEIVED_TEAMS: null, RECEIVED_STATUSES: null, RECEIVED_PREFERENCE: null, RECEIVED_PREFERENCES: null, RECEIVED_FILE_INFO: null, RECEIVED_ANALYTICS: null, RECEIVED_INCOMING_WEBHOOKS: null, RECEIVED_INCOMING_WEBHOOK: null, REMOVED_INCOMING_WEBHOOK: null, RECEIVED_OUTGOING_WEBHOOKS: null, RECEIVED_OUTGOING_WEBHOOK: null, UPDATED_OUTGOING_WEBHOOK: null, REMOVED_OUTGOING_WEBHOOK: null, RECEIVED_MSG: null, RECEIVED_MY_TEAM: null, RECEIVED_CONFIG: null, RECEIVED_LOGS: null, RECEIVED_SERVER_AUDITS: null, RECEIVED_SERVER_COMPLIANCE_REPORTS: null, RECEIVED_ALL_TEAMS: null, RECEIVED_LOCALE: null, SHOW_SEARCH: null, USER_TYPING: null, TOGGLE_IMPORT_THEME_MODAL: null, TOGGLE_INVITE_MEMBER_MODAL: null, TOGGLE_DELETE_POST_MODAL: null, TOGGLE_GET_POST_LINK_MODAL: null, TOGGLE_GET_TEAM_INVITE_LINK_MODAL: null, TOGGLE_REGISTER_APP_MODAL: null, SUGGESTION_PRETEXT_CHANGED: null, SUGGESTION_RECEIVED_SUGGESTIONS: null, SUGGESTION_CLEAR_SUGGESTIONS: null, SUGGESTION_COMPLETE_WORD: null, SUGGESTION_SELECT_NEXT: null, SUGGESTION_SELECT_PREVIOUS: null }), PayloadSources: keyMirror({ SERVER_ACTION: null, VIEW_ACTION: null }), StatTypes: keyMirror({ TOTAL_USERS: null, TOTAL_PUBLIC_CHANNELS: null, TOTAL_PRIVATE_GROUPS: null, TOTAL_POSTS: null, TOTAL_TEAMS: null, TOTAL_FILE_POSTS: null, TOTAL_HASHTAG_POSTS: null, TOTAL_IHOOKS: null, TOTAL_OHOOKS: null, TOTAL_COMMANDS: null, TOTAL_SESSIONS: null, POST_PER_DAY: null, USERS_WITH_POSTS_PER_DAY: null, RECENTLY_ACTIVE_USERS: null, NEWLY_CREATED_USERS: null }), STAT_MAX_ACTIVE_USERS: 20, STAT_MAX_NEW_USERS: 20, SocketEvents: { POSTED: 'posted', POST_EDITED: 'post_edited', POST_DELETED: 'post_deleted', CHANNEL_VIEWED: 'channel_viewed', NEW_USER: 'new_user', USER_ADDED: 'user_added', USER_REMOVED: 'user_removed', TYPING: 'typing', PREFERENCE_CHANGED: 'preference_changed', EPHEMERAL_MESSAGE: 'ephemeral_message' }, //SPECIAL_MENTIONS: ['all', 'channel'], SPECIAL_MENTIONS: ['channel'], CHARACTER_LIMIT: 4000, IMAGE_TYPES: ['jpg', 'gif', 'bmp', 'png', 'jpeg'], AUDIO_TYPES: ['mp3', 'wav', 'wma', 'm4a', 'flac', 'aac', 'ogg'], VIDEO_TYPES: ['mp4', 'avi', 'webm', 'mkv', 'wmv', 'mpg', 'mov', 'flv'], PRESENTATION_TYPES: ['ppt', 'pptx'], SPREADSHEET_TYPES: ['xlsx', 'csv'], WORD_TYPES: ['doc', 'docx'], CODE_TYPES: ['as', 'applescript', 'osascript', 'scpt', 'bash', 'sh', 'zsh', 'clj', 'boot', 'cl2', 'cljc', 'cljs', 'cljs.hl', 'cljscm', 'cljx', 'hic', 'coffee', '_coffee', 'cake', 'cjsx', 'cson', 'iced', 'cpp', 'c', 'cc', 'h', 'c++', 'h++', 'hpp', 'cs', 'csharp', 'css', 'd', 'di', 'dart', 'delphi', 'dpr', 'dfm', 'pas', 'pascal', 'freepascal', 'lazarus', 'lpr', 'lfm', 'diff', 'django', 'jinja', 'dockerfile', 'docker', 'erl', 'f90', 'f95', 'fsharp', 'fs', 'gcode', 'nc', 'go', 'groovy', 'handlebars', 'hbs', 'html.hbs', 'html.handlebars', 'hs', 'hx', 'java', 'jsp', 'js', 'jsx', 'json', 'jl', 'kt', 'ktm', 'kts', 'less', 'lisp', 'lua', 'mk', 'mak', 'md', 'mkdown', 'mkd', 'matlab', 'm', 'mm', 'objc', 'obj-c', 'ml', 'perl', 'pl', 'php', 'php3', 'php4', 'php5', 'php6', 'ps', 'ps1', 'pp', 'py', 'gyp', 'r', 'ruby', 'rb', 'gemspec', 'podspec', 'thor', 'irb', 'rs', 'scala', 'scm', 'sld', 'scss', 'st', 'sql', 'swift', 'tex', 'vbnet', 'vb', 'bas', 'vbs', 'v', 'veo', 'xml', 'html', 'xhtml', 'rss', 'atom', 'xsl', 'plist', 'yaml'], PDF_TYPES: ['pdf'], PATCH_TYPES: ['patch'], ICON_FROM_TYPE: { audio: audioIcon, video: videoIcon, spreadsheet: excelIcon, presentation: pptIcon, pdf: pdfIcon, code: codeIcon, word: wordIcon, patch: patchIcon, other: genericIcon }, ICON_NAME_FROM_TYPE: { audio: 'audio', video: 'video', spreadsheet: 'excel', presentation: 'ppt', pdf: 'pdf', code: 'code', word: 'word', patch: 'patch', other: 'generic' }, MAX_DISPLAY_FILES: 5, MAX_UPLOAD_FILES: 5, MAX_FILE_SIZE: 50000000, // 50 MB THUMBNAIL_WIDTH: 128, THUMBNAIL_HEIGHT: 100, WEB_VIDEO_WIDTH: 640, WEB_VIDEO_HEIGHT: 480, MOBILE_VIDEO_WIDTH: 480, MOBILE_VIDEO_HEIGHT: 360, DEFAULT_CHANNEL: 'town-square', OFFTOPIC_CHANNEL: 'off-topic', GITLAB_SERVICE: 'gitlab', GOOGLE_SERVICE: 'google', LDAP_SERVICE: 'ldap', EMAIL_SERVICE: 'email', SIGNIN_CHANGE: 'signin_change', SIGNIN_VERIFIED: 'verified', SESSION_EXPIRED: 'expired', POST_CHUNK_SIZE: 60, MAX_POST_CHUNKS: 3, POST_FOCUS_CONTEXT_RADIUS: 10, POST_LOADING: 'loading', POST_FAILED: 'failed', POST_DELETED: 'deleted', POST_TYPE_EPHEMERAL: 'system_ephemeral', POST_TYPE_JOIN_LEAVE: 'system_join_leave', SYSTEM_MESSAGE_PREFIX: 'system_', SYSTEM_MESSAGE_PROFILE_NAME: 'System', SYSTEM_MESSAGE_PROFILE_IMAGE: logoImage, RESERVED_TEAM_NAMES: [ 'www', 'web', 'admin', 'support', 'notify', 'test', 'demo', 'mail', 'team', 'channel', 'internal', 'localhost', 'dockerhost', 'stag', 'post', 'cluster', 'api' ], RESERVED_USERNAMES: [ 'valet', 'all', 'channel' ], MONTHS: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], MAX_DMS: 20, MAX_CHANNEL_POPOVER_COUNT: 100, DM_CHANNEL: 'D', OPEN_CHANNEL: 'O', PRIVATE_CHANNEL: 'P', INVITE_TEAM: 'I', OPEN_TEAM: 'O', MAX_POST_LEN: 4000, EMOJI_SIZE: 16, ONLINE_ICON_SVG: " ", AWAY_ICON_SVG: " ", OFFLINE_ICON_SVG: " ", MENU_ICON: " ", COMMENT_ICON: " ", REPLY_ICON: " ", SCROLL_BOTTOM_ICON: " ", UPDATE_TYPING_MS: 5000, THEMES: { default: { type: 'Organization', sidebarBg: '#2071a7', sidebarText: '#fff', sidebarUnreadText: '#fff', sidebarTextHoverBg: '#136197', sidebarTextActiveBorder: '#7AB0D6', sidebarTextActiveColor: '#FFFFFF', sidebarHeaderBg: '#2f81b7', sidebarHeaderTextColor: '#FFFFFF', onlineIndicator: '#7DBE00', awayIndicator: '#DCBD4E', mentionBj: '#FBFBFB', mentionColor: '#2071A7', centerChannelBg: '#f2f4f8', centerChannelColor: '#333333', newMessageSeparator: '#FF8800', linkColor: '#2f81b7', buttonBg: '#1dacfc', buttonColor: '#FFFFFF', mentionHighlightBg: '#fff2bb', mentionHighlightLink: '#2f81b7', codeTheme: 'github', image: defaultThemeImage }, mattermost: { type: 'Mattermost', sidebarBg: '#fafafa', sidebarText: '#333333', sidebarUnreadText: '#333333', sidebarTextHoverBg: '#e6f2fa', sidebarTextActiveBorder: '#378FD2', sidebarTextActiveColor: '#111111', sidebarHeaderBg: '#2389d7', sidebarHeaderTextColor: '#ffffff', onlineIndicator: '#7DBE00', awayIndicator: '#DCBD4E', mentionBj: '#2389d7', mentionColor: '#ffffff', centerChannelBg: '#ffffff', centerChannelColor: '#333333', newMessageSeparator: '#FF8800', linkColor: '#2389d7', buttonBg: '#2389d7', buttonColor: '#FFFFFF', mentionHighlightBg: '#fff2bb', mentionHighlightLink: '#2f81b7', codeTheme: 'github', image: mattermostThemeImage }, mattermostDark: { type: 'Mattermost Dark', sidebarBg: '#1B2C3E', sidebarText: '#fff', sidebarUnreadText: '#fff', sidebarTextHoverBg: '#4A5664', sidebarTextActiveBorder: '#39769C', sidebarTextActiveColor: '#FFFFFF', sidebarHeaderBg: '#1B2C3E', sidebarHeaderTextColor: '#FFFFFF', onlineIndicator: '#55C5B2', awayIndicator: '#A9A14C', mentionBj: '#B74A4A', mentionColor: '#FFFFFF', centerChannelBg: '#2F3E4E', centerChannelColor: '#DDDDDD', newMessageSeparator: '#5de5da', linkColor: '#A4FFEB', buttonBg: '#4CBBA4', buttonColor: '#FFFFFF', mentionHighlightBg: '#984063', mentionHighlightLink: '#A4FFEB', codeTheme: 'solarized-dark', image: mattermostDarkThemeImage }, windows10: { type: 'Windows Dark', sidebarBg: '#171717', sidebarText: '#fff', sidebarUnreadText: '#fff', sidebarTextHoverBg: '#302e30', sidebarTextActiveBorder: '#196CAF', sidebarTextActiveColor: '#FFFFFF', sidebarHeaderBg: '#1f1f1f', sidebarHeaderTextColor: '#FFFFFF', onlineIndicator: '#0177e7', awayIndicator: '#A9A14C', mentionBj: '#0177e7', mentionColor: '#FFFFFF', centerChannelBg: '#1F1F1F', centerChannelColor: '#DDDDDD', newMessageSeparator: '#CC992D', linkColor: '#0D93FF', buttonBg: '#0177e7', buttonColor: '#FFFFFF', mentionHighlightBg: '#784098', mentionHighlightLink: '#A4FFEB', codeTheme: 'monokai', image: windows10ThemeImage } }, THEME_ELEMENTS: [ { group: 'sidebarElements', id: 'sidebarBg', uiName: 'Sidebar BG' }, { group: 'sidebarElements', id: 'sidebarText', uiName: 'Sidebar Text' }, { group: 'sidebarElements', id: 'sidebarHeaderBg', uiName: 'Sidebar Header BG' }, { group: 'sidebarElements', id: 'sidebarHeaderTextColor', uiName: 'Sidebar Header Text' }, { group: 'sidebarElements', id: 'sidebarUnreadText', uiName: 'Sidebar Unread Text' }, { group: 'sidebarElements', id: 'sidebarTextHoverBg', uiName: 'Sidebar Text Hover BG' }, { group: 'sidebarElements', id: 'sidebarTextActiveBorder', uiName: 'Sidebar Text Active Border' }, { group: 'sidebarElements', id: 'sidebarTextActiveColor', uiName: 'Sidebar Text Active Color' }, { group: 'sidebarElements', id: 'onlineIndicator', uiName: 'Online Indicator' }, { group: 'sidebarElements', id: 'awayIndicator', uiName: 'Away Indicator' }, { group: 'sidebarElements', id: 'mentionBj', uiName: 'Mention Jewel BG' }, { group: 'sidebarElements', id: 'mentionColor', uiName: 'Mention Jewel Text' }, { group: 'centerChannelElements', id: 'centerChannelBg', uiName: 'Center Channel BG' }, { group: 'centerChannelElements', id: 'centerChannelColor', uiName: 'Center Channel Text' }, { group: 'centerChannelElements', id: 'newMessageSeparator', uiName: 'New Message Separator' }, { group: 'centerChannelElements', id: 'mentionHighlightBg', uiName: 'Mention Highlight BG' }, { group: 'centerChannelElements', id: 'mentionHighlightLink', uiName: 'Mention Highlight Link' }, { group: 'linkAndButtonElements', id: 'linkColor', uiName: 'Link Color' }, { group: 'linkAndButtonElements', id: 'buttonBg', uiName: 'Button BG' }, { group: 'linkAndButtonElements', id: 'buttonColor', uiName: 'Button Text' }, { group: 'centerChannelElements', id: 'codeTheme', uiName: 'Code Theme', themes: [ { id: 'solarized-dark', uiName: 'Solarized Dark', cssURL: solarizedDarkCSS, iconURL: solarizedDarkIcon }, { id: 'solarized-light', uiName: 'Solarized Light', cssURL: solarizedLightCSS, iconURL: solarizedLightIcon }, { id: 'github', uiName: 'GitHub', cssURL: githubCSS, iconURL: githubIcon }, { id: 'monokai', uiName: 'Monokai', cssURL: monokaiCSS, iconURL: monokaiIcon } ] } ], DEFAULT_CODE_THEME: 'github', FONTS: { 'Droid Serif': 'font--droid_serif', 'Roboto Slab': 'font--roboto_slab', Lora: 'font--lora', Arvo: 'font--arvo', 'Open Sans': 'font--open_sans', Roboto: 'font--roboto', 'PT Sans': 'font--pt_sans', Lato: 'font--lato', 'Source Sans Pro': 'font--source_sans_pro', 'Exo 2': 'font--exo_2', Ubuntu: 'font--ubuntu' }, DEFAULT_FONT: 'Open Sans', Preferences: { CATEGORY_DIRECT_CHANNEL_SHOW: 'direct_channel_show', CATEGORY_DISPLAY_SETTINGS: 'display_settings', DISPLAY_PREFER_NICKNAME: 'nickname_full_name', DISPLAY_PREFER_FULL_NAME: 'full_name', CATEGORY_ADVANCED_SETTINGS: 'advanced_settings', TUTORIAL_STEP: 'tutorial_step' }, TutorialSteps: { INTRO_SCREENS: 0, POST_POPOVER: 1, CHANNEL_POPOVER: 2, MENU_POPOVER: 3 }, KeyCodes: { UP: 38, DOWN: 40, LEFT: 37, RIGHT: 39, BACKSPACE: 8, ENTER: 13, ESCAPE: 27, SPACE: 32, TAB: 9 }, CODE_PREVIEW_MAX_FILE_SIZE: 500000, // 500 KB HighlightedLanguages: { actionscript: {name: 'ActionScript', extensions: ['as']}, applescript: {name: 'AppleScript', extensions: ['applescript', 'osascript', 'scpt']}, bash: {name: 'Bash', extensions: ['bash', 'sh', 'zsh']}, clojure: {name: 'Clojure', extensions: ['clj', 'boot', 'cl2', 'cljc', 'cljs', 'cljs.hl', 'cljscm', 'cljx', 'hic']}, coffeescript: {name: 'CoffeeScript', extensions: ['coffee', '_coffee', 'cake', 'cjsx', 'cson', 'iced']}, cpp: {name: 'C/C++', extensions: ['cpp', 'c', 'cc', 'h', 'c++', 'h++', 'hpp']}, cs: {name: 'C#', extensions: ['cs', 'csharp']}, css: {name: 'CSS', extensions: ['css']}, d: {name: 'D', extensions: ['d', 'di']}, dart: {name: 'Dart', extensions: ['dart']}, delphi: {name: 'Delphi', extensions: ['delphi', 'dpr', 'dfm', 'pas', 'pascal', 'freepascal', 'lazarus', 'lpr', 'lfm']}, diff: {name: 'Diff', extensions: ['diff', 'patch']}, django: {name: 'Django', extensions: ['django', 'jinja']}, dockerfile: {name: 'Dockerfile', extensions: ['dockerfile', 'docker']}, erlang: {name: 'Erlang', extensions: ['erl']}, fortran: {name: 'Fortran', extensions: ['f90', 'f95']}, fsharp: {name: 'F#', extensions: ['fsharp', 'fs']}, gcode: {name: 'G-Code', extensions: ['gcode', 'nc']}, go: {name: 'Go', extensions: ['go']}, groovy: {name: 'Groovy', extensions: ['groovy']}, handlebars: {name: 'Handlebars', extensions: ['handlebars', 'hbs', 'html.hbs', 'html.handlebars']}, haskell: {name: 'Haskell', extensions: ['hs']}, haxe: {name: 'Haxe', extensions: ['hx']}, java: {name: 'Java', extensions: ['java', 'jsp']}, javascript: {name: 'JavaScript', extensions: ['js', 'jsx']}, json: {name: 'JSON', extensions: ['json']}, julia: {name: 'Julia', extensions: ['jl']}, kotlin: {name: 'Kotlin', extensions: ['kt', 'ktm', 'kts']}, less: {name: 'Less', extensions: ['less']}, lisp: {name: 'Lisp', extensions: ['lisp']}, lua: {name: 'Lua', extensions: ['lua']}, makefile: {name: 'Makefile', extensions: ['mk', 'mak']}, markdown: {name: 'Markdown', extensions: ['md', 'mkdown', 'mkd']}, matlab: {name: 'Matlab', extensions: ['matlab', 'm']}, objectivec: {name: 'Objective C', extensions: ['mm', 'objc', 'obj-c']}, ocaml: {name: 'OCaml', extensions: ['ml']}, perl: {name: 'Perl', extensions: ['perl', 'pl']}, php: {name: 'PHP', extensions: ['php', 'php3', 'php4', 'php5', 'php6']}, powershell: {name: 'PowerShell', extensions: ['ps', 'ps1']}, puppet: {name: 'Puppet', extensions: ['pp']}, python: {name: 'Python', extensions: ['py', 'gyp']}, r: {name: 'R', extensions: ['r']}, ruby: {name: 'Ruby', extensions: ['ruby', 'rb', 'gemspec', 'podspec', 'thor', 'irb']}, rust: {name: 'Rust', extensions: ['rs']}, scala: {name: 'Scala', extensions: ['scala']}, scheme: {name: 'Scheme', extensions: ['scm', 'sld']}, scss: {name: 'SCSS', extensions: ['scss']}, smalltalk: {name: 'Smalltalk', extensions: ['st']}, sql: {name: 'SQL', extensions: ['sql']}, swift: {name: 'Swift', extensions: ['swift']}, tex: {name: 'TeX', extensions: ['tex']}, vbnet: {name: 'VB.Net', extensions: ['vbnet', 'vb', 'bas']}, vbscript: {name: 'VBScript', extensions: ['vbs']}, verilog: {name: 'Verilog', extensions: ['v', 'veo']}, xml: {name: 'HTML, XML', extensions: ['xml', 'html', 'xhtml', 'rss', 'atom', 'xsl', 'plist']}, yaml: {name: 'YAML', extensions: ['yaml']} }, PostsViewJumpTypes: { BOTTOM: 1, POST: 2, SIDEBAR_OPEN: 3 }, NotificationPrefs: { MENTION: 'mention' }, FeatureTogglePrefix: 'feature_enabled_', PRE_RELEASE_FEATURES: { MARKDOWN_PREVIEW: { label: 'markdown_preview', // github issue: https://github.com/mattermost/platform/pull/1389 description: 'Show markdown preview option in message input box' }, EMBED_PREVIEW: { label: 'embed_preview', description: 'Show preview snippet of links below message' }, EMBED_TOGGLE: { label: 'embed_toggle', description: 'Show toggle for all embed previews' } }, OVERLAY_TIME_DELAY: 400, MIN_USERNAME_LENGTH: 3, MAX_USERNAME_LENGTH: 64, MIN_PASSWORD_LENGTH: 5, MAX_PASSWORD_LENGTH: 50, TIME_SINCE_UPDATE_INTERVAL: 30000, MIN_HASHTAG_LINK_LENGTH: 3, EMOJI_PATH: '/static/emoji' };