├── example ├── src ├── umd ├── style.css ├── postcss.config.js ├── tsconfig.json ├── index.html ├── package.json ├── webpack.config.js └── index.tsx ├── .prettierrc ├── .editorconfig ├── tsconfig.json ├── .vscode └── settings.json ├── .gitignore ├── .npmignore ├── umd ├── OwlCarousel.d.ts ├── options.d.ts └── OwlCarousel.min.js ├── rollup.config.js ├── tslint.json ├── package.json ├── src ├── options.ts └── OwlCarousel.tsx ├── LICENSE ├── README.md └── yarn.lock /example/src: -------------------------------------------------------------------------------- 1 | ../src -------------------------------------------------------------------------------- /example/umd: -------------------------------------------------------------------------------- 1 | ../umd -------------------------------------------------------------------------------- /example/style.css: -------------------------------------------------------------------------------- 1 | .item { 2 | height: 10rem; 3 | background: #4DC7A0; 4 | padding: 1rem; 5 | } 6 | 7 | .item-video { 8 | height: 300px; 9 | } -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 4, 3 | "semi": true, 4 | "bracketSpacing": true, 5 | "arrowParens": "always", 6 | "jsxBracketSameLine": true, 7 | "jsxSingleQuote": true, 8 | "singleQuote": true 9 | } 10 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | [*] 7 | indent_style = space 8 | indent_size = 4 9 | end_of_line = lf 10 | charset = utf-8 11 | trim_trailing_whitespace = true 12 | insert_final_newline = true 13 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "es5", "es2015"], 5 | "sourceMap": true, 6 | "moduleResolution": "node", 7 | "module": "ES2015", 8 | "jsx": "react", 9 | "declaration": true, 10 | "strict": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "noUnusedLocals": true, 14 | "noUnusedParameters": true, 15 | "noImplicitReturns": true, 16 | "noEmitOnError": false 17 | }, 18 | "include": [ 19 | "./src" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /example/postcss.config.js: -------------------------------------------------------------------------------- 1 | // var postcssFlexbugsFixes = require('postcss-flexbugs-fixes'); 2 | 3 | module.exports = { 4 | plugins: { 5 | 'postcss-import': {}, 6 | 'postcss-cssnext': { 7 | browsers: [ 8 | '>1%', 9 | 'last 4 versions', 10 | 'Firefox ESR', 11 | 'not ie < 9', // React doesn't support IE8 anyway 12 | ], 13 | warnForDuplicates: false, 14 | flexbox: 'no-2009', 15 | }, 16 | 'cssnano': {}, 17 | }, 18 | }; 19 | -------------------------------------------------------------------------------- /example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "sourceMap": true, 5 | "moduleResolution": "node", 6 | "module": "esnext", 7 | "jsx": "react", 8 | "noEmitHelpers": true, 9 | "importHelpers": true, 10 | "strict": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "noUnusedLocals": true, 14 | "noUnusedParameters": true, 15 | "noImplicitReturns": true, 16 | "noEmitOnError": false 17 | }, 18 | "files": [ 19 | "./index.tsx" 20 | ], 21 | "exclude": [ 22 | "./umd" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "search.exclude": { 3 | "**/node_modules": true, 4 | "**/yarn.lock": true, 5 | "**/dist": true 6 | }, 7 | "emmet.showExpandedAbbreviation": "never", 8 | "tslint.enable": true, 9 | "tslint.run": "onType", 10 | "tslint.autoFixOnSave": true, 11 | "files.trimTrailingWhitespace": true, 12 | "files.insertFinalNewline": true, 13 | "typescript.locale": "en", 14 | "editor.tabSize": 4, 15 | "editor.insertSpaces": true, 16 | "workbench.colorCustomizations": { 17 | "editorWarning.foreground": "#FFAA00" 18 | }, 19 | "prettier.configPath": "./.prettierrc" 20 | } 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | dist 5 | .rpt2_cache 6 | !example/umd 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | 13 | # Directory for instrumented libs generated by jscoverage/JSCover 14 | lib-cov 15 | 16 | # Coverage directory used by tools like istanbul 17 | coverage 18 | 19 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 20 | .grunt 21 | 22 | # node-waf configuration 23 | .lock-wscript 24 | 25 | # Compiled binary addons (http://nodejs.org/api/addons.html) 26 | build/Release 27 | 28 | # Dependency directory 29 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git 30 | node_modules 31 | lib 32 | *.zip 33 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | dist 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 18 | .grunt 19 | 20 | # node-waf configuration 21 | .lock-wscript 22 | 23 | # Compiled binary addons (http://nodejs.org/api/addons.html) 24 | build/Release 25 | 26 | # Dependency directory 27 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git 28 | node_modules 29 | lib 30 | 31 | example 32 | tslint.json 33 | *.zip 34 | .vscode 35 | tsconfig.json 36 | rollup.config.js 37 | .yarn-lock 38 | .rpt2_cache 39 | -------------------------------------------------------------------------------- /example/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | React Owl-Carousel 13 | 14 | 15 | 16 |
17 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "0.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "webpack-dev-server" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "awesome-typescript-loader": "^5.0.0", 13 | "css-loader": "^0.28.11", 14 | "file-loader": "^1.1.11", 15 | "jquery": "^3.3.1", 16 | "postcss-cssnext": "^3.1.0", 17 | "postcss-import": "^11.1.0", 18 | "postcss-loader": "^2.1.5", 19 | "react": "~16.14.0", 20 | "react-dom": "~16.14.0", 21 | "react-owl-carousel": "^2.3.1", 22 | "source-map-loader": "^0.2.3", 23 | "style-loader": "^0.21.0", 24 | "webpack": "^4.8.3", 25 | "webpack-cli": "^2.1.3", 26 | "webpack-dev-server": "^3.1.4" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /umd/OwlCarousel.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | import { Component, AllHTMLAttributes, ReactNode } from 'react'; 5 | import { Options } from './options'; 6 | import 'owl.carousel'; 7 | export declare type ComponentProps = Readonly & { 8 | children: ReactNode; 9 | }>; 10 | export declare type OwlCarouselProps = Options & ComponentProps; 11 | export default class ReactOwlCarousel extends Component { 12 | $ele?: JQuery; 13 | private container?; 14 | private propsWithoutOptions; 15 | private options; 16 | constructor(props: OwlCarouselProps); 17 | componentDidMount(): void; 18 | UNSAFE_componentWillReceiveProps(): void; 19 | componentDidUpdate(): void; 20 | next(speed: number | number[]): void; 21 | prev(speed: number | number[]): void; 22 | to(position: number, speed: number): void; 23 | create(options?: Options): void; 24 | destory(): void; 25 | play(timeout: number, speed: number): void; 26 | stop(): void; 27 | render(): JSX.Element; 28 | private containerRef; 29 | } 30 | export * from './options'; 31 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | // rollup.config.js 2 | import typescript from 'rollup-plugin-typescript2'; 3 | import uglify from 'rollup-plugin-uglify'; 4 | import replace from 'rollup-plugin-replace'; 5 | import commonjs from 'rollup-plugin-commonjs'; 6 | import resolve from 'rollup-plugin-node-resolve'; 7 | import path from 'path'; 8 | 9 | const isDev = process.env.NODE_ENV !== 'production'; 10 | 11 | const config = { 12 | input: path.resolve(__dirname, 'src/OwlCarousel.tsx'), 13 | treeshake: { 14 | pureExternalModules: true, 15 | }, 16 | output: { 17 | name: 'ReactOwlCarousel', 18 | format: 'umd', 19 | file: path.resolve(__dirname, 'umd/OwlCarousel.js'), 20 | globals: { 21 | react: 'React', 22 | jquery: '$', 23 | } 24 | }, 25 | external: ['react', 'jquery'], 26 | 27 | plugins: [ 28 | typescript({ 29 | typescript: require('typescript') 30 | }), 31 | resolve(), 32 | commonjs({ 33 | include: /node_modules/ 34 | }), 35 | replace({ 36 | 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV) 37 | }) 38 | ].concat() 39 | } 40 | 41 | if (!isDev) { 42 | config.output.file = path.resolve(__dirname, 'umd/OwlCarousel.min.js'); 43 | config.plugins.push(uglify()); 44 | } 45 | 46 | export default config; 47 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSeverity": "error", 3 | "extends": [ 4 | "tslint:recommended", 5 | "tslint-eslint-rules", 6 | "tslint-react", 7 | "tslint-config-airbnb" 8 | ], 9 | "jsRules": {}, 10 | "rules": { 11 | "one-line": false, 12 | "indent": [true, "spaces"], 13 | "ter-indent": [true, 4], 14 | "object-literal-sort-keys": false, 15 | "ordered-imports": false, 16 | "import-name": false, 17 | "interface-name": false, 18 | "space-in-parens": false, 19 | "no-unused-variable": true, 20 | "no-console": [true, "log"], 21 | "semicolon": true, 22 | "object-shorthand-properties-first": false, 23 | "prefer-array-literal": false, 24 | "variable-name": [true, "ban-keywords", "check-format", "allow-leading-underscore", "allow-pascal-case"], 25 | "no-shadowed-variable": [ 26 | true, 27 | { 28 | "class": true, 29 | "enum": true, 30 | "function": true, 31 | "interface": false, 32 | "namespace": true, 33 | "typeAlias": true, 34 | "typeParameter": true, 35 | "temporalDeadZone": false 36 | } 37 | ], 38 | 39 | "jsx-alignment": true, 40 | "jsx-boolean-value": [true, "never"], 41 | "jsx-equals-spacing": [true, "never"], 42 | "jsx-curly-spacing": [false, "never"], 43 | "jsx-key": true, 44 | "jsx-no-bind": "warning", 45 | "jsx-no-lambda": true, 46 | "jsx-no-multiline-js": false, 47 | "jsx-no-string-ref": true, 48 | "jsx-self-close": true, 49 | "jsx-wrap-multiline": true, 50 | 51 | "brace-style": [true, "stroustrup"] 52 | }, 53 | "rulesDirectory": [] 54 | } 55 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-owl-carousel", 3 | "version": "2.3.3", 4 | "description": "React.js + Owl Carousel", 5 | "main": "umd/OwlCarousel.js", 6 | "types": "umd/OwlCarousel.d.ts", 7 | "scripts": { 8 | "clean": "rimraf umd", 9 | "build:uncompressed": "cross-env NODE_ENV=development rollup -c", 10 | "build:minified": "cross-env NODE_ENV=production rollup -c", 11 | "build": "npm run clean && npm run build:uncompressed && npm run build:minified " 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/seal789ie/react-owl-carousel.git" 16 | }, 17 | "keywords": [ 18 | "react", 19 | "OwlCarousel", 20 | "gallery" 21 | ], 22 | "author": "xhriman", 23 | "license": "ISC", 24 | "bugs": { 25 | "url": "https://github.com/seal789ie/react-owl-carousel/issues" 26 | }, 27 | "homepage": "https://github.com/seal789ie/react-owl-carousel#readme", 28 | "peerDependencies": { 29 | "jquery": ">=1.8.3", 30 | "react": ">=15" 31 | }, 32 | "devDependencies": { 33 | "@types/owl.carousel": "^2.2.1", 34 | "@types/react": "^15.0.0", 35 | "@types/react-dom": "^15.0.0", 36 | "cross-env": "^5.1.5", 37 | "rimraf": "^2.6.2", 38 | "rollup": "^0.58.2", 39 | "rollup-plugin-babel": "^3.0.4", 40 | "rollup-plugin-commonjs": "^9.1.3", 41 | "rollup-plugin-node-resolve": "^3.3.0", 42 | "rollup-plugin-replace": "^2.0.0", 43 | "rollup-plugin-typescript": "^0.8.1", 44 | "rollup-plugin-typescript2": "^0.14.0", 45 | "rollup-plugin-uglify": "^3.0.0", 46 | "tslint": "^5.10.0", 47 | "tslint-config-airbnb": "^5.8.0", 48 | "tslint-eslint-rules": "^5.2.0", 49 | "tslint-react": "^3.6.0", 50 | "typescript": "^2.8.3" 51 | }, 52 | "dependencies": { 53 | "owl.carousel": "~2.3.4", 54 | "react": "16.14.0", 55 | "react-dom": "16.14.0" 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /example/webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const webpack = require('webpack'); 3 | const os = require('os'); 4 | 5 | const localIP = (() => { 6 | const ifaces = os.networkInterfaces(); 7 | for (const device of Object.keys(ifaces)) { 8 | for (const iface of ifaces[device]) { 9 | if ('IPv4' !== iface.family || iface.internal !== false) { 10 | continue; 11 | } 12 | return iface.address; 13 | } 14 | } 15 | return 'localhost'; 16 | })(); 17 | 18 | module.exports = { 19 | mode: 'development', 20 | devtool: 'source-map', 21 | target: 'web', 22 | 23 | entry: { 24 | bundle: path.join(__dirname, './index.tsx'), 25 | }, 26 | 27 | resolve: { 28 | symlinks: true, 29 | extensions: ['.tsx', '.ts', '.js', '.json'], 30 | }, 31 | 32 | output: { 33 | path: '/dist', 34 | publicPath: '/dist/', 35 | filename: 'bundle.js', 36 | }, 37 | 38 | plugins: [ 39 | new webpack.ProvidePlugin({ 40 | $: "jquery", 41 | 'window.jQuery': "jquery", 42 | jQuery: "jquery" 43 | }) 44 | ], 45 | 46 | module: { 47 | rules: [ 48 | // All files with a '.ts' or '.tsx' extension will be handled by 'awesome-typescript-loader'. 49 | { 50 | test: /\.tsx?$/, 51 | include: [ 52 | path.resolve(__dirname, './index.tsx'), 53 | path.resolve(__dirname, './src'), 54 | path.resolve(__dirname, '../src'), 55 | ], 56 | loader: 'awesome-typescript-loader', 57 | options: { 58 | configFileName: path.resolve(__dirname, './tsconfig.json'), 59 | }, 60 | }, 61 | { 62 | test: /\.css$/, 63 | use: [ 64 | 'style-loader', 65 | { loader: 'css-loader', options: { importLoaders: 1, sourceMap: true } }, 66 | { 67 | loader: 'postcss-loader', 68 | options: { 69 | sourceMap: true, 70 | config: { 71 | path: path.resolve(__dirname, './postcss.config.js'), 72 | }, 73 | }, 74 | }, 75 | ], 76 | }, 77 | { 78 | test: /\.png$/, 79 | use: 'file-loader', 80 | }, 81 | { 82 | enforce: 'pre', 83 | test: /\.js$/, 84 | loader: 'source-map-loader', 85 | }, 86 | ], 87 | }, 88 | performance: { 89 | hints: false, 90 | }, 91 | devServer: { 92 | contentBase: [ 93 | path.resolve(__dirname, './'), 94 | ], 95 | host: '0.0.0.0', 96 | port: 8080, 97 | allowedHosts: [ 98 | localIP, 99 | ], 100 | headers: { 101 | 'Access-Control-Allow-Origin': '*', 102 | }, 103 | historyApiFallback: true, 104 | compress: true, 105 | }, 106 | }; 107 | -------------------------------------------------------------------------------- /example/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { Component, ReactNode } from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import 'owl.carousel/dist/assets/owl.carousel.css'; 4 | import 'owl.carousel/dist/assets/owl.theme.default.css'; 5 | // import OwlCarousel, { Options } from 'react-owl-carousel'; 6 | import OwlCarousel, { Options } from './umd/OwlCarousel'; 7 | 8 | interface State { 9 | options: Options; 10 | items: ReactNode[]; 11 | } 12 | 13 | class Example extends Component<{}, State> { 14 | public state: State = { 15 | options: { 16 | loop: true, 17 | margin: 10, 18 | nav: true, 19 | responsive: { 20 | 0: { 21 | items: 1, 22 | }, 23 | 600: { 24 | items: 3, 25 | }, 26 | 1000: { 27 | items: 5, 28 | }, 29 | }, 30 | }, 31 | 32 | items: [ 33 |
34 |

1

35 |
, 36 |
37 |

2

38 |
, 39 |
40 |

3

41 |
, 42 |
43 |

4

44 |
, 45 |
46 |

5

47 |
, 48 |
49 |

6

50 |
, 51 |
52 |

7

53 |
, 54 |
55 |

8

56 |
, 57 |
58 |

9

59 |
, 60 |
61 |

10

62 |
, 63 |
64 |

11

65 |
, 66 |
67 |

12

68 |
, 69 | ], 70 | }; 71 | 72 | public render() { 73 | return ( 74 |
75 | 76 | {this.state.items} 77 | 78 | 79 | 80 | 81 | 82 |
83 | ); 84 | } 85 | 86 | private addItem = () => { 87 | const { items } = this.state; 88 | items.push( 89 |
90 |

{items.length + 1}

91 |
92 | ); 93 | 94 | this.setState({ items }); 95 | }; 96 | 97 | private deleteItem = () => { 98 | const { items, options } = this.state; 99 | items.pop(); 100 | 101 | options.loop = items.length >= 5; 102 | this.setState({ items, options }); 103 | }; 104 | } 105 | 106 | ReactDOM.render(, document.getElementById('root')); 107 | -------------------------------------------------------------------------------- /umd/options.d.ts: -------------------------------------------------------------------------------- 1 | export interface Options { 2 | items?: number; 3 | margin?: number; 4 | loop?: boolean; 5 | center?: boolean; 6 | mouseDrag?: boolean; 7 | touchDrag?: boolean; 8 | pullDrag?: boolean; 9 | freeDrag?: boolean; 10 | stagePadding?: number; 11 | merge?: boolean; 12 | mergeFit?: boolean; 13 | autoWidth?: boolean; 14 | startPosition?: number | string; 15 | URLhashListener?: boolean; 16 | nav?: boolean; 17 | rewind?: boolean; 18 | navText?: string[]; 19 | navElement?: string; 20 | slideBy?: number | string; 21 | dots?: boolean; 22 | dotsEach?: number | boolean; 23 | dotData?: boolean; 24 | lazyLoad?: boolean; 25 | lazyContent?: boolean; 26 | autoplay?: boolean; 27 | autoplayTimeout?: number; 28 | autoplayHoverPause?: boolean; 29 | smartSpeed?: number | boolean; 30 | fluidSpeed?: number | boolean; 31 | autoplaySpeed?: number | boolean; 32 | navSpeed?: number | boolean; 33 | dotsSpeed?: number | boolean; 34 | dragEndSpeed?: number | boolean; 35 | callbacks?: boolean; 36 | responsive?: { 37 | [breakpoint: string]: Options; 38 | }; 39 | responsiveRefreshRate?: number; 40 | responsiveBaseElement?: Element; 41 | video?: boolean; 42 | videoHeight?: number | boolean; 43 | videoWidth?: number | boolean; 44 | animateOut?: string | boolean; 45 | animateIn?: string | boolean; 46 | fallbackEasing?: string; 47 | info?: HandlerCallback; 48 | nestedItemSelector?: string; 49 | itemElement?: string; 50 | stageElement?: string; 51 | navContainer?: string | boolean; 52 | dotsContainer?: string | boolean; 53 | refreshClass?: string; 54 | loadingClass?: string; 55 | loadedClass?: string; 56 | rtlClass?: string; 57 | dragClass?: string; 58 | grabClass?: string; 59 | stageClass?: string; 60 | stageOuterClass?: string; 61 | navContainerClass?: string; 62 | navClass?: string[]; 63 | controlsClass?: string; 64 | dotClass?: string; 65 | dotsClass?: string; 66 | autoHeightClass?: string; 67 | responsiveClass?: string | boolean; 68 | onInitialize?: HandlerCallback; 69 | onInitialized?: HandlerCallback; 70 | onResize?: HandlerCallback; 71 | onResized?: HandlerCallback; 72 | onRefresh?: HandlerCallback; 73 | onRefreshed?: HandlerCallback; 74 | onDrag?: HandlerCallback; 75 | onDragged?: HandlerCallback; 76 | onTranslate?: HandlerCallback; 77 | onTranslated?: HandlerCallback; 78 | onChange?: HandlerCallback; 79 | onChanged?: HandlerCallback; 80 | onLoadLazy?: HandlerCallback; 81 | onLoadedLazy?: HandlerCallback; 82 | onStopVideo?: HandlerCallback; 83 | onPlayVideo?: HandlerCallback; 84 | } 85 | export declare type HandlerCallback = (...args: any[]) => void; 86 | export declare type OnEvent = 'initialize.owl.carousel' | 'initialized.owl.carousel' | 'resize.owl.carousel' | 'resized.owl.carousel' | 'refresh.owl.carousel' | 'refreshed.owl.carousel' | 'drag.owl.carousel' | 'dragged.owl.carousel' | 'translate.owl.carousel' | 'translated.owl.carousel' | 'change.owl.carousel' | 'changed.owl.carousel' | 'load.owl.lazy' | 'loaded.owl.lazy' | 'stop.owl.video' | 'play.owl.video'; 87 | export declare type TriggerEvent = 'refresh.owl.carousel' | 'next.owl.carousel' | 'prev.owl.carousel' | 'to.owl.carousel' | 'destroy.owl.carousel' | 'replace.owl.carousel' | 'add.owl.carousel' | 'remove.owl.carousel' | 'play.owl.autoplay' | 'stop.owl.autoplay'; 88 | -------------------------------------------------------------------------------- /src/options.ts: -------------------------------------------------------------------------------- 1 | export interface Options { 2 | // OPTIONS 3 | items?: number; 4 | margin?: number; 5 | loop?: boolean; 6 | center?: boolean; 7 | mouseDrag?: boolean; 8 | touchDrag?: boolean; 9 | pullDrag?: boolean; 10 | freeDrag?: boolean; 11 | stagePadding?: number; 12 | merge?: boolean; 13 | mergeFit?: boolean; 14 | autoWidth?: boolean; 15 | startPosition?: number | string; 16 | URLhashListener?: boolean; 17 | nav?: boolean; 18 | rewind?: boolean; 19 | navText?: string[]; 20 | navElement?: string; 21 | slideBy?: number | string; 22 | dots?: boolean; 23 | dotsEach?: number | boolean; 24 | dotData?: boolean; 25 | lazyLoad?: boolean; 26 | lazyContent?: boolean; 27 | autoplay?: boolean; 28 | autoplayTimeout?: number; 29 | autoplayHoverPause?: boolean; 30 | smartSpeed?: number | boolean; 31 | fluidSpeed?: number | boolean; 32 | autoplaySpeed?: number | boolean; 33 | navSpeed?: number | boolean; 34 | dotsSpeed?: number | boolean; 35 | dragEndSpeed?: number | boolean; 36 | callbacks?: boolean; 37 | responsive?: { [breakpoint: string]: Options }; 38 | responsiveRefreshRate?: number; 39 | responsiveBaseElement?: Element; 40 | video?: boolean; 41 | videoHeight?: number | boolean; 42 | videoWidth?: number | boolean; 43 | animateOut?: string | boolean; 44 | animateIn?: string | boolean; 45 | fallbackEasing?: string; 46 | info?: HandlerCallback; 47 | nestedItemSelector?: string; 48 | itemElement?: string; 49 | stageElement?: string; 50 | navContainer?: string | boolean; 51 | dotsContainer?: string | boolean; 52 | 53 | // CLASSES 54 | refreshClass?: string; 55 | loadingClass?: string; 56 | loadedClass?: string; 57 | rtlClass?: string; 58 | dragClass?: string; 59 | grabClass?: string; 60 | stageClass?: string; 61 | stageOuterClass?: string; 62 | navContainerClass?: string; 63 | navClass?: string[]; 64 | controlsClass?: string; 65 | dotClass?: string; 66 | dotsClass?: string; 67 | autoHeightClass?: string; 68 | responsiveClass?: string | boolean; 69 | 70 | // EVENTS 71 | onInitialize?: HandlerCallback; 72 | onInitialized?: HandlerCallback; 73 | onResize?: HandlerCallback; 74 | onResized?: HandlerCallback; 75 | onRefresh?: HandlerCallback; 76 | onRefreshed?: HandlerCallback; 77 | onDrag?: HandlerCallback; 78 | onDragged?: HandlerCallback; 79 | onTranslate?: HandlerCallback; 80 | onTranslated?: HandlerCallback; 81 | onChange?: HandlerCallback; 82 | onChanged?: HandlerCallback; 83 | onLoadLazy?: HandlerCallback; 84 | onLoadedLazy?: HandlerCallback; 85 | onStopVideo?: HandlerCallback; 86 | onPlayVideo?: HandlerCallback; 87 | } 88 | 89 | export type HandlerCallback = (...args: any[]) => void; 90 | 91 | export type OnEvent = 92 | | 'initialize.owl.carousel' 93 | | 'initialized.owl.carousel' 94 | | 'resize.owl.carousel' 95 | | 'resized.owl.carousel' 96 | | 'refresh.owl.carousel' 97 | | 'refreshed.owl.carousel' 98 | | 'drag.owl.carousel' 99 | | 'dragged.owl.carousel' 100 | | 'translate.owl.carousel' 101 | | 'translated.owl.carousel' 102 | | 'change.owl.carousel' 103 | | 'changed.owl.carousel' 104 | | 'load.owl.lazy' 105 | | 'loaded.owl.lazy' 106 | | 'stop.owl.video' 107 | | 'play.owl.video'; 108 | 109 | export type TriggerEvent = 110 | | 'refresh.owl.carousel' 111 | | 'next.owl.carousel' 112 | | 'prev.owl.carousel' 113 | | 'to.owl.carousel' 114 | | 'destroy.owl.carousel' 115 | | 'replace.owl.carousel' 116 | | 'add.owl.carousel' 117 | | 'remove.owl.carousel' 118 | | 'play.owl.autoplay' 119 | | 'stop.owl.autoplay'; 120 | -------------------------------------------------------------------------------- /src/OwlCarousel.tsx: -------------------------------------------------------------------------------- 1 | import React, { Component, AllHTMLAttributes, ReactNode, Ref } from 'react'; 2 | import jquery from 'jquery'; 3 | import { Options } from './options'; 4 | 5 | import 'owl.carousel'; 6 | 7 | const $: typeof jquery = (window as any).jQuery; 8 | 9 | export type ComponentProps = Readonly< 10 | AllHTMLAttributes & { children: ReactNode } 11 | >; 12 | export type OwlCarouselProps = Options & ComponentProps; 13 | 14 | export default class ReactOwlCarousel extends Component { 15 | public $ele?: JQuery; 16 | private container?: HTMLDivElement | null; 17 | private propsWithoutOptions: ComponentProps; 18 | private options: Options; 19 | 20 | constructor(props: OwlCarouselProps) { 21 | super(props); 22 | const [options, propsWithoutOptions] = filterOptions(this.props); 23 | this.options = options; 24 | this.propsWithoutOptions = propsWithoutOptions; 25 | } 26 | 27 | public componentDidMount() { 28 | this.$ele = $(this.container!); 29 | this.create(); 30 | } 31 | 32 | public UNSAFE_componentWillReceiveProps() { 33 | this.destory(); 34 | } 35 | 36 | public componentDidUpdate() { 37 | const [options, propsWithoutOptions] = filterOptions(this.props); 38 | this.options = options; 39 | this.propsWithoutOptions = propsWithoutOptions; 40 | 41 | this.create(); 42 | } 43 | 44 | public next(speed: number | number[]) { 45 | if (!this.$ele) throw new Error('OwlCarousel is not created'); 46 | 47 | if (typeof speed === 'number') { 48 | this.$ele.trigger('next.owl.carousel', [speed]); 49 | } else { 50 | this.$ele.trigger('next.owl.carousel', speed); 51 | } 52 | } 53 | 54 | public prev(speed: number | number[]) { 55 | if (!this.$ele) throw new Error('OwlCarousel is not created'); 56 | 57 | if (typeof speed === 'number') { 58 | this.$ele.trigger('prev.owl.carousel', [speed]); 59 | } else { 60 | this.$ele.trigger('prev.owl.carousel', speed); 61 | } 62 | } 63 | 64 | public to(position: number, speed: number) { 65 | if (!this.$ele) throw new Error('OwlCarousel is not created'); 66 | 67 | if (typeof position === 'number' && typeof speed === 'number') { 68 | this.$ele.trigger('to.owl.carousel', [position, speed]); 69 | } else { 70 | this.$ele.trigger('to.owl.carousel'); 71 | } 72 | } 73 | 74 | public create(options?: Options) { 75 | if (!this.$ele) throw new Error('OwlCarousel is not created'); 76 | 77 | this.$ele.owlCarousel(options || this.options); 78 | } 79 | 80 | public destory() { 81 | if (!this.$ele) throw new Error('OwlCarousel is not created'); 82 | 83 | this.$ele.trigger('destroy.owl.carousel'); 84 | } 85 | 86 | public play(timeout: number, speed: number) { 87 | if (!this.$ele) throw new Error('OwlCarousel is not created'); 88 | 89 | if (typeof timeout === 'number' && typeof speed === 'number') { 90 | this.$ele.trigger('play.owl.autoplay', [timeout, speed]); 91 | } else { 92 | this.$ele.trigger('play.owl.autoplay'); 93 | } 94 | } 95 | 96 | public stop() { 97 | if (!this.$ele) throw new Error('OwlCarousel is not created'); 98 | 99 | this.$ele.trigger('stop.owl.autoplay'); 100 | } 101 | 102 | public render() { 103 | const { className, ...props } = this.propsWithoutOptions; 104 | 105 | return ( 106 |
111 | ); 112 | } 113 | 114 | private containerRef: Ref = (inst) => { 115 | this.container = inst; 116 | }; 117 | } 118 | 119 | const OPTIONS = new Set([ 120 | 'items', 121 | 'margin', 122 | 'loop', 123 | 'center', 124 | 'mouseDrag', 125 | 'touchDrag', 126 | 'pullDrag', 127 | 'freeDrag', 128 | 'stagePadding', 129 | 'merge', 130 | 'mergeFit', 131 | 'autoWidth', 132 | 'startPosition', 133 | 'URLhashListener', 134 | 'nav', 135 | 'rewind', 136 | 'navText', 137 | 'navElement', 138 | 'slideBy', 139 | 'dots', 140 | 'dotsEach', 141 | 'dotData', 142 | 'lazyLoad', 143 | 'lazyContent', 144 | 'autoplay', 145 | 'autoplayTimeout', 146 | 'autoplayHoverPause', 147 | 'smartSpeed', 148 | 'fluidSpeed', 149 | 'autoplaySpeed', 150 | 'navSpeed', 151 | 'dotsSpeed', 152 | 'dragEndSpeed', 153 | 'callbacks', 154 | 'responsive', 155 | 'responsiveRefreshRate', 156 | 'responsiveBaseElement', 157 | 'video', 158 | 'videoHeight', 159 | 'videoWidth', 160 | 'animateOut', 161 | 'animateIn', 162 | 'fallbackEasing', 163 | 'info', 164 | 'nestedItemSelector', 165 | 'itemElement', 166 | 'stageElement', 167 | 'navContainer', 168 | 'dotsContainer', 169 | 170 | // 'CLASSES' 171 | 'refreshClass', 172 | 'loadingClass', 173 | 'loadedClass', 174 | 'rtlClass', 175 | 'dragClass', 176 | 'grabClass', 177 | 'stageClass', 178 | 'stageOuterClass', 179 | 'navContainerClass', 180 | 'navClass', 181 | 'controlsClass', 182 | 'dotClass', 183 | 'dotsClass', 184 | 'autoHeightClass', 185 | 'responsiveClass', 186 | 187 | // 'EVENTS' 188 | 'onInitialize', 189 | 'onInitialized', 190 | 'onResize', 191 | 'onResized', 192 | 'onRefresh', 193 | 'onRefreshed', 194 | 'onDrag', 195 | 'onDragged', 196 | 'onTranslate', 197 | 'onTranslated', 198 | 'onChange', 199 | 'onChanged', 200 | 'onLoadLazy', 201 | 'onLoadedLazy', 202 | 'onStopVideo', 203 | 'onPlayVideo', 204 | ]); 205 | 206 | interface Params { 207 | [key: string]: any; 208 | } 209 | function filterOptions(item: Params): [Options, ComponentProps] { 210 | const options: Params = {}; 211 | const propsWithoutOptions: Params = {}; 212 | Object.keys(item).forEach((key) => { 213 | if (OPTIONS.has(key)) { 214 | options[key] = item[key]; 215 | } else { 216 | propsWithoutOptions[key] = item[key]; 217 | } 218 | }); 219 | 220 | return [options as Options, propsWithoutOptions as ComponentProps]; 221 | } 222 | 223 | export * from './options'; 224 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # react-owl-carousel [![npm version](https://img.shields.io/npm/v/react-owl-carousel.svg?style=flat)](https://www.npmjs.com/package/react-owl-carousel) 2 | 3 | [React](http://facebook.github.io/react/) + [Owl Carousel 2.3](https://owlcarousel2.github.io/OwlCarousel2/) 4 | 5 | ### 1. Getting Started 6 | 7 | - You need to inject a global window.jQuery first. 8 | 9 | e.g. webpack 10 | 11 | ```js 12 | // ... 13 | plugins: [ 14 | // other plugins, 15 | new webpack.ProvidePlugin({ 16 | $: 'jquery', 17 | jQuery: 'jquery', 18 | 'window.jQuery': 'jquery' 19 | }), 20 | ], 21 | //... 22 | ``` 23 | 24 | you can use html script tag to inject jquery as well. 25 | 26 | ### 2. Set up your component 27 | 28 | wrap your divs inside the OwlCarousel component 29 | 30 | ```jsx 31 | import React from 'react'; 32 | import OwlCarousel from 'react-owl-carousel'; 33 | import 'owl.carousel/dist/assets/owl.carousel.css'; 34 | import 'owl.carousel/dist/assets/owl.theme.default.css'; 35 | 36 | // .... 37 | 38 | // className "owl-theme" is optional 39 | 40 |
41 |

1

42 |
43 |
44 |

2

45 |
46 |
47 |

3

48 |
49 |
50 |

4

51 |
52 |
53 |

5

54 |
55 |
56 |

6

57 |
58 |
59 |

7

60 |
61 |
62 |

8

63 |
64 |
65 |

9

66 |
67 |
68 |

10

69 |
70 |
71 |

11

72 |
73 |
74 |

12

75 |
76 |
; 77 | ``` 78 | 79 | ## Event 80 | 81 | | Name | Descrption | 82 | | :-----------: | :----------------------------------------------------------------- | --- | 83 | | onInitialize | When the plugin initializes. | ' | 84 | | onInitialized | When the plugin has initialized. | 85 | | onResize | When the plugin gets resized. | 86 | | onResized | When the plugin has resized. | 87 | | onRefresh | When the internal state of the plugin needs update. | 88 | | onRefreshed | When the internal state of the plugin has updated. | 89 | | onDrag | When the dragging of an item is started. | 90 | | onDragged | When the dragging of an item has finished. | 91 | | onTranslate | When the translation of the stage starts. | 92 | | onTranslated | When the translation of the stage has finished. | 93 | | onChange | Parameter: property. When a property is going to change its value. | 94 | | onChanged | Parameter: property. When a property has changed its value. | 95 | | onLoadLazy | When lazy image loads. | 96 | | onLoadedLazy | When lazy image has loaded. | 97 | | onStopVideo | When video has unloaded. | 98 | | onPlayVideo | When video has loaded. | 99 | 100 | ## OwlCarousel Method 101 | 102 | - next(speed) 103 | - prev(speed) 104 | - to(position, speed) 105 | - create() 106 | - destroy() 107 | - play(timeout, speed) 108 | - stop() 109 | 110 | ## OwlCarousel Class Props 111 | 112 | | Name | Type | Default | Descrption | 113 | | :---------------: | :---------: | :-----------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------- | 114 | | refreshClass | string | 'owl-refresh' | Class during refresh. | 115 | | loadingClass | string | 'owl-loading' | Class during load. | 116 | | loadedClass | string | 'owl-loaded' | Class after load. | 117 | | rtlClass | string | 'owl-rtl' | Class for right to left mode. | 118 | | dragClass | string | 'owl-drag' | Class for mouse drag mode. | 119 | | grabClass | string | 'owl-grab' | Class during mouse drag. | 120 | | stageClass | string | 'owl-stage' | Stage class. | 121 | | stageOuterClass | string | 'owl-stage-outer' | Stage outer class. | 122 | | navContainerClass | string | 'owl-nav' | Navigation container class. | 123 | | navClass | [string] | ['owl-prev','owl-next'] | Navigation buttons classes. | 124 | | controlsClass | string | 'owl-controls' | Controls container class - wrapper for navs and dots. | 125 | | dotClass | string | 'owl-dot' | Dot Class. | 126 | | dotsClass | string | 'owl-dots' | Dots container class. | 127 | | autoHeightClass | string | 'owl-height' | Auto height class. | 128 | | responsiveClass | string/bool | false | Optional helper class. Add '-' class to main element. Can be used to stylize content on given breakpoint. | 129 | 130 | ## OwlCarousel Options 131 | 132 | [offical docs](https://owlcarousel2.github.io/OwlCarousel2/docs/api-options.html) 133 | 134 | | Name | Type | Default | Descrption | 135 | | :-------------------: | :-----------: | :---------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 136 | | items | number | 3 | The number of items you want to see on the screen. | 137 | | margin | number | 0 | margin-right(px) on item. | 138 | | loop | bool | false | Infinity loop. Duplicate last and first items to get loop illusion. | 139 | | center | bool | false | Center item. Works well with even an odd number of items. | 140 | | mouseDrag | bool | true | Mouse drag enabled. | 141 | | touchDrag | bool | true | Touch drag enabled. | 142 | | pullDrag | bool | true | Stage pull to edge. | 143 | | freeDrag | bool | false | Item pull to edge. | 144 | | stagePadding | number | 0 | Padding left and right on stage (can see neighbours). | 145 | | merge | bool | false | Merge items. Looking for data-merge='{number}' inside item.. | 146 | | mergeFit | bool | true | Fit merged items if screen is smaller than items value. | 147 | | autoWidth | bool | false | Set non grid content. Try using width style on divs. | 148 | | startPosition | number/string | 0 | Start position or URL Hash string like '#id'. | 149 | | URLhashListener | bool | false | Listen to url hash changes. data-hash on items is required. | 150 | | nav | bool | false | Show next/prev buttons. | 151 | | rewind | bool | true | Go backwards when the boundary has reached. | 152 | | navText | [dom element] | ['next','prev'] | HTML allowed. | 153 | | navElement | string | 'div' | DOM element type for a single directional navigation link. | 154 | | slideBy | number/string | 1 | Navigation slide by x. 'page' string can be set to slide by page. | 155 | | dots | bool | true | Show dots navigation. | 156 | | dotsEach | number/bool | false | Show dots each x item. | 157 | | dotData | bool | false | Used by data-dot content. | 158 | | lazyLoad | bool | false | Lazy load images. data-src and data-src-retina for highres. Also load images into background inline style if element is not \ | 159 | | lazyContent | bool | false | lazyContent was introduced during beta tests but i removed it from the final release due to bad implementation. It is a nice options so i will work on it in the nearest feature. | 160 | | autoplay | bool | false | Autoplay. | 161 | | autoplayTimeout | number | 5000 | Autoplay interval timeout. | 162 | | autoplayHoverPause | bool | false | Pause on mouse hover. | 163 | | smartSpeed | number | 250 | Speed Calculate. More info to come.. | 164 | | fluidSpeed | number | | Speed Calculate. More info to come.. | 165 | | autoplaySpeed | number/bool | false | autoplay speed. | 166 | | navSpeed | number/bool | false | Navigation speed. | 167 | | dotsSpeed | number/bool | | Pagination speed. | 168 | | dragEndSpeed | number/bool | false | Drag end speed. | 169 | | callbacks | bool | true | **Enable callback events.** | 170 | | responsive | object | empty object | Object containing responsive options. Can be set to false to remove responsive capabilities. | 171 | | responsiveRefreshRate | number | 200 | Responsive refresh rate. | 172 | | responsiveBaseElement | dom element | window | Set on any DOM element. If you care about non responsive browser (like ie8) then use it on main wrapper. This will prevent from crazy resizing. | 173 | | video | bool | false | Enable fetching YouTube/Vimeo/Vzaar videos. | 174 | | videoHeight | number/bool | false | Set height for videos. | 175 | | videoWidth | number/bool | false | Set width for videos. | 176 | | animateOut | string/bool | false | Class for CSS3 animation out. | 177 | | animateIn | string/bool | false | Class for CSS3 animation in. | 178 | | fallbackEasing | string | swing | Easing for CSS2 $.animate. | 179 | | info | function | false | Callback to retrieve basic information (current item/pages/widths). Info function second parameter is Owl DOM object reference. | 180 | | nestedItemSelector | string | false | Use it if owl items are deep nested inside some generated content. E.g 'youritem'. Dont use dot before class name. | 181 | | itemElement | string | 'div' | DOM element type for owl-item. | 182 | | stageElement | string | 'div' | DOM element type for owl-stage. | 183 | | navContainer | string/bool | false | Set your own container for nav. | 184 | | dotsContainer | string/bool | false | Set your own container for dots. | 185 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@fimbul/bifrost@^0.6.0": 6 | version "0.6.0" 7 | resolved "https://registry.yarnpkg.com/@fimbul/bifrost/-/bifrost-0.6.0.tgz#5150302b63e1bd37ff95f561c3605949cb7e3770" 8 | dependencies: 9 | "@fimbul/ymir" "^0.6.0" 10 | get-caller-file "^1.0.2" 11 | tslib "^1.8.1" 12 | 13 | "@fimbul/ymir@^0.6.0": 14 | version "0.6.0" 15 | resolved "https://registry.yarnpkg.com/@fimbul/ymir/-/ymir-0.6.0.tgz#537cb15d361b7c993fe953b48c898ecdf4f671b8" 16 | dependencies: 17 | inversify "^4.10.0" 18 | reflect-metadata "^0.1.12" 19 | tslib "^1.8.1" 20 | 21 | "@types/estree@0.0.38": 22 | version "0.0.38" 23 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.38.tgz#c1be40aa933723c608820a99a373a16d215a1ca2" 24 | 25 | "@types/jquery@*": 26 | version "3.3.1" 27 | resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.1.tgz#55758d44d422756d6329cbf54e6d41931d7ba28f" 28 | 29 | "@types/node@*": 30 | version "10.0.8" 31 | resolved "https://registry.yarnpkg.com/@types/node/-/node-10.0.8.tgz#37b4d91d4e958e4c2ba0be2b86e7ed4ff19b0858" 32 | 33 | "@types/owl.carousel@^2.2.1": 34 | version "2.2.1" 35 | resolved "https://registry.yarnpkg.com/@types/owl.carousel/-/owl.carousel-2.2.1.tgz#4d50ffbc23df2ea05e688020473be55be2ebd9d6" 36 | dependencies: 37 | "@types/jquery" "*" 38 | 39 | "@types/react-dom@^15.0.0": 40 | version "15.5.7" 41 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-15.5.7.tgz#a5c1c8b315e925d84d59db5ee88ca7e31c5030f9" 42 | dependencies: 43 | "@types/react" "^15" 44 | 45 | "@types/react@^15", "@types/react@^15.0.0": 46 | version "15.6.15" 47 | resolved "https://registry.yarnpkg.com/@types/react/-/react-15.6.15.tgz#1856f932120311aa566f91e6d0c6e613d6448236" 48 | 49 | ansi-regex@^2.0.0: 50 | version "2.1.1" 51 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 52 | 53 | ansi-styles@^2.2.1: 54 | version "2.2.1" 55 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 56 | 57 | ansi-styles@^3.2.1: 58 | version "3.2.1" 59 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 60 | dependencies: 61 | color-convert "^1.9.0" 62 | 63 | argparse@^1.0.7: 64 | version "1.0.10" 65 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 66 | dependencies: 67 | sprintf-js "~1.0.2" 68 | 69 | arr-diff@^2.0.0: 70 | version "2.0.0" 71 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 72 | dependencies: 73 | arr-flatten "^1.0.1" 74 | 75 | arr-flatten@^1.0.1: 76 | version "1.1.0" 77 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 78 | 79 | array-unique@^0.2.1: 80 | version "0.2.1" 81 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 82 | 83 | babel-code-frame@^6.22.0: 84 | version "6.26.0" 85 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 86 | dependencies: 87 | chalk "^1.1.3" 88 | esutils "^2.0.2" 89 | js-tokens "^3.0.2" 90 | 91 | balanced-match@^1.0.0: 92 | version "1.0.0" 93 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 94 | 95 | brace-expansion@^1.1.7: 96 | version "1.1.11" 97 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 98 | dependencies: 99 | balanced-match "^1.0.0" 100 | concat-map "0.0.1" 101 | 102 | braces@^1.8.2: 103 | version "1.8.5" 104 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 105 | dependencies: 106 | expand-range "^1.8.1" 107 | preserve "^0.2.0" 108 | repeat-element "^1.1.2" 109 | 110 | builtin-modules@^1.1.1: 111 | version "1.1.1" 112 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 113 | 114 | builtin-modules@^2.0.0: 115 | version "2.0.0" 116 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-2.0.0.tgz#60b7ef5ae6546bd7deefa74b08b62a43a232648e" 117 | 118 | chalk@^1.1.3: 119 | version "1.1.3" 120 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 121 | dependencies: 122 | ansi-styles "^2.2.1" 123 | escape-string-regexp "^1.0.2" 124 | has-ansi "^2.0.0" 125 | strip-ansi "^3.0.0" 126 | supports-color "^2.0.0" 127 | 128 | chalk@^2.3.0: 129 | version "2.4.1" 130 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" 131 | dependencies: 132 | ansi-styles "^3.2.1" 133 | escape-string-regexp "^1.0.5" 134 | supports-color "^5.3.0" 135 | 136 | color-convert@^1.9.0: 137 | version "1.9.1" 138 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" 139 | dependencies: 140 | color-name "^1.1.1" 141 | 142 | color-name@^1.1.1: 143 | version "1.1.3" 144 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 145 | 146 | commander@^2.12.1: 147 | version "2.15.1" 148 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" 149 | 150 | commander@~2.13.0: 151 | version "2.13.0" 152 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" 153 | 154 | compare-versions@2.0.1: 155 | version "2.0.1" 156 | resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-2.0.1.tgz#1edc1f93687fd97a325c59f55e45a07db106aca6" 157 | 158 | concat-map@0.0.1: 159 | version "0.0.1" 160 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 161 | 162 | cross-env@^5.1.5: 163 | version "5.1.5" 164 | resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.5.tgz#31daf7f3a52ef337c8ddda585f08175cce5d1fa5" 165 | dependencies: 166 | cross-spawn "^5.1.0" 167 | is-windows "^1.0.0" 168 | 169 | cross-spawn@^5.1.0: 170 | version "5.1.0" 171 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 172 | dependencies: 173 | lru-cache "^4.0.1" 174 | shebang-command "^1.2.0" 175 | which "^1.2.9" 176 | 177 | diff@^3.2.0: 178 | version "3.5.0" 179 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 180 | 181 | doctrine@0.7.2, doctrine@^0.7.2: 182 | version "0.7.2" 183 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-0.7.2.tgz#7cb860359ba3be90e040b26b729ce4bfa654c523" 184 | dependencies: 185 | esutils "^1.1.6" 186 | isarray "0.0.1" 187 | 188 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 189 | version "1.0.5" 190 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 191 | 192 | esprima@^4.0.0: 193 | version "4.0.0" 194 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" 195 | 196 | estree-walker@^0.2.1: 197 | version "0.2.1" 198 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" 199 | 200 | estree-walker@^0.5.1, estree-walker@^0.5.2: 201 | version "0.5.2" 202 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" 203 | 204 | esutils@^1.1.6: 205 | version "1.1.6" 206 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" 207 | 208 | esutils@^2.0.2: 209 | version "2.0.2" 210 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 211 | 212 | expand-brackets@^0.1.4: 213 | version "0.1.5" 214 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 215 | dependencies: 216 | is-posix-bracket "^0.1.0" 217 | 218 | expand-range@^1.8.1: 219 | version "1.8.2" 220 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 221 | dependencies: 222 | fill-range "^2.1.0" 223 | 224 | extglob@^0.3.1: 225 | version "0.3.2" 226 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 227 | dependencies: 228 | is-extglob "^1.0.0" 229 | 230 | filename-regex@^2.0.0: 231 | version "2.0.1" 232 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" 233 | 234 | fill-range@^2.1.0: 235 | version "2.2.4" 236 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" 237 | dependencies: 238 | is-number "^2.1.0" 239 | isobject "^2.0.0" 240 | randomatic "^3.0.0" 241 | repeat-element "^1.1.2" 242 | repeat-string "^1.5.2" 243 | 244 | for-in@^1.0.1: 245 | version "1.0.2" 246 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 247 | 248 | for-own@^0.1.4: 249 | version "0.1.5" 250 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 251 | dependencies: 252 | for-in "^1.0.1" 253 | 254 | fs-extra@^5.0.0: 255 | version "5.0.0" 256 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" 257 | dependencies: 258 | graceful-fs "^4.1.2" 259 | jsonfile "^4.0.0" 260 | universalify "^0.1.0" 261 | 262 | fs.realpath@^1.0.0: 263 | version "1.0.0" 264 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 265 | 266 | get-caller-file@^1.0.2: 267 | version "1.0.2" 268 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" 269 | 270 | glob-base@^0.3.0: 271 | version "0.3.0" 272 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 273 | dependencies: 274 | glob-parent "^2.0.0" 275 | is-glob "^2.0.0" 276 | 277 | glob-parent@^2.0.0: 278 | version "2.0.0" 279 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 280 | dependencies: 281 | is-glob "^2.0.0" 282 | 283 | glob@^7.0.5, glob@^7.1.1: 284 | version "7.1.2" 285 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 286 | dependencies: 287 | fs.realpath "^1.0.0" 288 | inflight "^1.0.4" 289 | inherits "2" 290 | minimatch "^3.0.4" 291 | once "^1.3.0" 292 | path-is-absolute "^1.0.0" 293 | 294 | graceful-fs@^4.1.2, graceful-fs@^4.1.6: 295 | version "4.1.11" 296 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 297 | 298 | has-ansi@^2.0.0: 299 | version "2.0.0" 300 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 301 | dependencies: 302 | ansi-regex "^2.0.0" 303 | 304 | has-flag@^3.0.0: 305 | version "3.0.0" 306 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 307 | 308 | inflight@^1.0.4: 309 | version "1.0.6" 310 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 311 | dependencies: 312 | once "^1.3.0" 313 | wrappy "1" 314 | 315 | inherits@2: 316 | version "2.0.3" 317 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 318 | 319 | inversify@^4.10.0: 320 | version "4.13.0" 321 | resolved "https://registry.yarnpkg.com/inversify/-/inversify-4.13.0.tgz#0ab40570bfa4474b04d5b919bbab3a4f682a72f5" 322 | 323 | is-buffer@^1.1.5: 324 | version "1.1.6" 325 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 326 | 327 | is-dotfile@^1.0.0: 328 | version "1.0.3" 329 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" 330 | 331 | is-equal-shallow@^0.1.3: 332 | version "0.1.3" 333 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 334 | dependencies: 335 | is-primitive "^2.0.0" 336 | 337 | is-extendable@^0.1.1: 338 | version "0.1.1" 339 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 340 | 341 | is-extglob@^1.0.0: 342 | version "1.0.0" 343 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 344 | 345 | is-glob@^2.0.0, is-glob@^2.0.1: 346 | version "2.0.1" 347 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 348 | dependencies: 349 | is-extglob "^1.0.0" 350 | 351 | is-module@^1.0.0: 352 | version "1.0.0" 353 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" 354 | 355 | is-number@^2.1.0: 356 | version "2.1.0" 357 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 358 | dependencies: 359 | kind-of "^3.0.2" 360 | 361 | is-number@^4.0.0: 362 | version "4.0.0" 363 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" 364 | 365 | is-posix-bracket@^0.1.0: 366 | version "0.1.1" 367 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 368 | 369 | is-primitive@^2.0.0: 370 | version "2.0.0" 371 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 372 | 373 | is-windows@^1.0.0: 374 | version "1.0.2" 375 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 376 | 377 | isarray@0.0.1: 378 | version "0.0.1" 379 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 380 | 381 | isarray@1.0.0: 382 | version "1.0.0" 383 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 384 | 385 | isexe@^2.0.0: 386 | version "2.0.0" 387 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 388 | 389 | isobject@^2.0.0: 390 | version "2.1.0" 391 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 392 | dependencies: 393 | isarray "1.0.0" 394 | 395 | jquery@>=1.8.3: 396 | version "3.3.1" 397 | resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca" 398 | 399 | js-tokens@^3.0.0, js-tokens@^3.0.2: 400 | version "3.0.2" 401 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 402 | 403 | "js-tokens@^3.0.0 || ^4.0.0": 404 | version "4.0.0" 405 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 406 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 407 | 408 | js-yaml@^3.7.0: 409 | version "3.11.0" 410 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" 411 | dependencies: 412 | argparse "^1.0.7" 413 | esprima "^4.0.0" 414 | 415 | jsonfile@^4.0.0: 416 | version "4.0.0" 417 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 418 | optionalDependencies: 419 | graceful-fs "^4.1.6" 420 | 421 | kind-of@^3.0.2: 422 | version "3.2.2" 423 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 424 | dependencies: 425 | is-buffer "^1.1.5" 426 | 427 | kind-of@^6.0.0: 428 | version "6.0.2" 429 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" 430 | 431 | loose-envify@^1.1.0: 432 | version "1.3.1" 433 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" 434 | dependencies: 435 | js-tokens "^3.0.0" 436 | 437 | loose-envify@^1.4.0: 438 | version "1.4.0" 439 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 440 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 441 | dependencies: 442 | js-tokens "^3.0.0 || ^4.0.0" 443 | 444 | lru-cache@^4.0.1: 445 | version "4.1.3" 446 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" 447 | dependencies: 448 | pseudomap "^1.0.2" 449 | yallist "^2.1.2" 450 | 451 | magic-string@^0.22.4: 452 | version "0.22.5" 453 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" 454 | dependencies: 455 | vlq "^0.2.2" 456 | 457 | math-random@^1.0.1: 458 | version "1.0.1" 459 | resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" 460 | 461 | micromatch@^2.3.11: 462 | version "2.3.11" 463 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 464 | dependencies: 465 | arr-diff "^2.0.0" 466 | array-unique "^0.2.1" 467 | braces "^1.8.2" 468 | expand-brackets "^0.1.4" 469 | extglob "^0.3.1" 470 | filename-regex "^2.0.0" 471 | is-extglob "^1.0.0" 472 | is-glob "^2.0.1" 473 | kind-of "^3.0.2" 474 | normalize-path "^2.0.1" 475 | object.omit "^2.0.0" 476 | parse-glob "^3.0.4" 477 | regex-cache "^0.4.2" 478 | 479 | minimatch@^3.0.2, minimatch@^3.0.4: 480 | version "3.0.4" 481 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 482 | dependencies: 483 | brace-expansion "^1.1.7" 484 | 485 | normalize-path@^2.0.1: 486 | version "2.1.1" 487 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 488 | dependencies: 489 | remove-trailing-separator "^1.0.1" 490 | 491 | object-assign@^4.0.1, object-assign@^4.1.1: 492 | version "4.1.1" 493 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 494 | 495 | object.omit@^2.0.0: 496 | version "2.0.1" 497 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 498 | dependencies: 499 | for-own "^0.1.4" 500 | is-extendable "^0.1.1" 501 | 502 | once@^1.3.0: 503 | version "1.4.0" 504 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 505 | dependencies: 506 | wrappy "1" 507 | 508 | owl.carousel@~2.3.4: 509 | version "2.3.4" 510 | resolved "https://registry.yarnpkg.com/owl.carousel/-/owl.carousel-2.3.4.tgz#6c53dc8d24304b790e4f27a1dc4a655e973ccdc9" 511 | dependencies: 512 | jquery ">=1.8.3" 513 | 514 | parse-glob@^3.0.4: 515 | version "3.0.4" 516 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 517 | dependencies: 518 | glob-base "^0.3.0" 519 | is-dotfile "^1.0.0" 520 | is-extglob "^1.0.0" 521 | is-glob "^2.0.0" 522 | 523 | path-is-absolute@^1.0.0: 524 | version "1.0.1" 525 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 526 | 527 | path-parse@^1.0.5: 528 | version "1.0.5" 529 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 530 | 531 | preserve@^0.2.0: 532 | version "0.2.0" 533 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 534 | 535 | prop-types@^15.6.2: 536 | version "15.7.2" 537 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" 538 | integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== 539 | dependencies: 540 | loose-envify "^1.4.0" 541 | object-assign "^4.1.1" 542 | react-is "^16.8.1" 543 | 544 | pseudomap@^1.0.2: 545 | version "1.0.2" 546 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 547 | 548 | randomatic@^3.0.0: 549 | version "3.0.0" 550 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923" 551 | dependencies: 552 | is-number "^4.0.0" 553 | kind-of "^6.0.0" 554 | math-random "^1.0.1" 555 | 556 | react-dom@16.14.0: 557 | version "16.14.0" 558 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" 559 | integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== 560 | dependencies: 561 | loose-envify "^1.1.0" 562 | object-assign "^4.1.1" 563 | prop-types "^15.6.2" 564 | scheduler "^0.19.1" 565 | 566 | react-is@^16.8.1: 567 | version "16.13.1" 568 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 569 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 570 | 571 | react@16.14.0: 572 | version "16.14.0" 573 | resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" 574 | integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== 575 | dependencies: 576 | loose-envify "^1.1.0" 577 | object-assign "^4.1.1" 578 | prop-types "^15.6.2" 579 | 580 | reflect-metadata@^0.1.12: 581 | version "0.1.12" 582 | resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.12.tgz#311bf0c6b63cd782f228a81abe146a2bfa9c56f2" 583 | 584 | regex-cache@^0.4.2: 585 | version "0.4.4" 586 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" 587 | dependencies: 588 | is-equal-shallow "^0.1.3" 589 | 590 | remove-trailing-separator@^1.0.1: 591 | version "1.1.0" 592 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 593 | 594 | repeat-element@^1.1.2: 595 | version "1.1.2" 596 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 597 | 598 | repeat-string@^1.5.2: 599 | version "1.6.1" 600 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 601 | 602 | resolve@^1.1.6, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.7.1: 603 | version "1.7.1" 604 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" 605 | dependencies: 606 | path-parse "^1.0.5" 607 | 608 | rimraf@^2.6.2: 609 | version "2.6.2" 610 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 611 | dependencies: 612 | glob "^7.0.5" 613 | 614 | rollup-plugin-babel@^3.0.4: 615 | version "3.0.4" 616 | resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-3.0.4.tgz#41b3e762fe64450dd61da3105a2cf7ad76be4edc" 617 | dependencies: 618 | rollup-pluginutils "^1.5.0" 619 | 620 | rollup-plugin-commonjs@^9.1.3: 621 | version "9.1.3" 622 | resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.1.3.tgz#37bfbf341292ea14f512438a56df8f9ca3ba4d67" 623 | dependencies: 624 | estree-walker "^0.5.1" 625 | magic-string "^0.22.4" 626 | resolve "^1.5.0" 627 | rollup-pluginutils "^2.0.1" 628 | 629 | rollup-plugin-node-resolve@^3.3.0: 630 | version "3.3.0" 631 | resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.3.0.tgz#c26d110a36812cbefa7ce117cadcd3439aa1c713" 632 | dependencies: 633 | builtin-modules "^2.0.0" 634 | is-module "^1.0.0" 635 | resolve "^1.1.6" 636 | 637 | rollup-plugin-replace@^2.0.0: 638 | version "2.0.0" 639 | resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-2.0.0.tgz#19074089c8ed57184b8cc64e967a03d095119277" 640 | dependencies: 641 | magic-string "^0.22.4" 642 | minimatch "^3.0.2" 643 | rollup-pluginutils "^2.0.1" 644 | 645 | rollup-plugin-typescript2@^0.14.0: 646 | version "0.14.0" 647 | resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.14.0.tgz#b24c1019facdcfb100beff5673e0b229e9c79475" 648 | dependencies: 649 | fs-extra "^5.0.0" 650 | resolve "^1.7.1" 651 | rollup-pluginutils "^2.0.1" 652 | tslib "^1.9.0" 653 | 654 | rollup-plugin-typescript@^0.8.1: 655 | version "0.8.1" 656 | resolved "https://registry.yarnpkg.com/rollup-plugin-typescript/-/rollup-plugin-typescript-0.8.1.tgz#2ff7eecc21cf6bb2b43fc27e5b688952ce71924a" 657 | dependencies: 658 | compare-versions "2.0.1" 659 | object-assign "^4.0.1" 660 | rollup-pluginutils "^1.3.1" 661 | tippex "^2.1.1" 662 | typescript "^1.8.9" 663 | 664 | rollup-plugin-uglify@^3.0.0: 665 | version "3.0.0" 666 | resolved "https://registry.yarnpkg.com/rollup-plugin-uglify/-/rollup-plugin-uglify-3.0.0.tgz#a34eca24617709c6bf1778e9653baafa06099b86" 667 | dependencies: 668 | uglify-es "^3.3.7" 669 | 670 | rollup-pluginutils@^1.3.1, rollup-pluginutils@^1.5.0: 671 | version "1.5.2" 672 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" 673 | dependencies: 674 | estree-walker "^0.2.1" 675 | minimatch "^3.0.2" 676 | 677 | rollup-pluginutils@^2.0.1: 678 | version "2.2.0" 679 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.2.0.tgz#64ba3f29988b84322bafa188a9f99ca731c95354" 680 | dependencies: 681 | estree-walker "^0.5.2" 682 | micromatch "^2.3.11" 683 | 684 | rollup@^0.58.2: 685 | version "0.58.2" 686 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.58.2.tgz#2feddea8c0c022f3e74b35c48e3c21b3433803ce" 687 | dependencies: 688 | "@types/estree" "0.0.38" 689 | "@types/node" "*" 690 | 691 | scheduler@^0.19.1: 692 | version "0.19.1" 693 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" 694 | integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== 695 | dependencies: 696 | loose-envify "^1.1.0" 697 | object-assign "^4.1.1" 698 | 699 | semver@^5.3.0: 700 | version "5.5.0" 701 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" 702 | 703 | shebang-command@^1.2.0: 704 | version "1.2.0" 705 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 706 | dependencies: 707 | shebang-regex "^1.0.0" 708 | 709 | shebang-regex@^1.0.0: 710 | version "1.0.0" 711 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 712 | 713 | source-map@~0.6.1: 714 | version "0.6.1" 715 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 716 | 717 | sprintf-js@~1.0.2: 718 | version "1.0.3" 719 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 720 | 721 | strip-ansi@^3.0.0: 722 | version "3.0.1" 723 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 724 | dependencies: 725 | ansi-regex "^2.0.0" 726 | 727 | supports-color@^2.0.0: 728 | version "2.0.0" 729 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 730 | 731 | supports-color@^5.3.0: 732 | version "5.4.0" 733 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" 734 | dependencies: 735 | has-flag "^3.0.0" 736 | 737 | tippex@^2.1.1: 738 | version "2.3.1" 739 | resolved "https://registry.yarnpkg.com/tippex/-/tippex-2.3.1.tgz#a2fd5b7087d7cbfb20c9806a6c16108c2c0fafda" 740 | 741 | tslib@1.9.0, tslib@^1.0.0, tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: 742 | version "1.9.0" 743 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" 744 | 745 | tslint-config-airbnb@^5.8.0: 746 | version "5.8.0" 747 | resolved "https://registry.yarnpkg.com/tslint-config-airbnb/-/tslint-config-airbnb-5.8.0.tgz#0398cf4b5a8715b604cb40e9580532c5c0e68716" 748 | dependencies: 749 | tslint-consistent-codestyle "^1.10.0" 750 | tslint-eslint-rules "^4.1.1" 751 | tslint-microsoft-contrib "~5.0.1" 752 | 753 | tslint-consistent-codestyle@^1.10.0: 754 | version "1.13.0" 755 | resolved "https://registry.yarnpkg.com/tslint-consistent-codestyle/-/tslint-consistent-codestyle-1.13.0.tgz#82abf230bf39e01159b4e9af721d489dd5ae0e6c" 756 | dependencies: 757 | "@fimbul/bifrost" "^0.6.0" 758 | tslib "^1.7.1" 759 | tsutils "^2.24.0" 760 | 761 | tslint-eslint-rules@^4.1.1: 762 | version "4.1.1" 763 | resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-4.1.1.tgz#7c30e7882f26bc276bff91d2384975c69daf88ba" 764 | dependencies: 765 | doctrine "^0.7.2" 766 | tslib "^1.0.0" 767 | tsutils "^1.4.0" 768 | 769 | tslint-eslint-rules@^5.2.0: 770 | version "5.2.0" 771 | resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-5.2.0.tgz#3e767e7e9cc7877497a2bde5bcb6184dee9b28c4" 772 | dependencies: 773 | doctrine "0.7.2" 774 | tslib "1.9.0" 775 | tsutils "2.8.0" 776 | 777 | tslint-microsoft-contrib@~5.0.1: 778 | version "5.0.3" 779 | resolved "https://registry.yarnpkg.com/tslint-microsoft-contrib/-/tslint-microsoft-contrib-5.0.3.tgz#6fc3e238179cd72045c2b422e4d655f4183a8d5c" 780 | dependencies: 781 | tsutils "^2.12.1" 782 | 783 | tslint-react@^3.6.0: 784 | version "3.6.0" 785 | resolved "https://registry.yarnpkg.com/tslint-react/-/tslint-react-3.6.0.tgz#7f462c95c4a0afaae82507f06517ff02942196a1" 786 | dependencies: 787 | tsutils "^2.13.1" 788 | 789 | tslint@^5.10.0: 790 | version "5.10.0" 791 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.10.0.tgz#11e26bccb88afa02dd0d9956cae3d4540b5f54c3" 792 | dependencies: 793 | babel-code-frame "^6.22.0" 794 | builtin-modules "^1.1.1" 795 | chalk "^2.3.0" 796 | commander "^2.12.1" 797 | diff "^3.2.0" 798 | glob "^7.1.1" 799 | js-yaml "^3.7.0" 800 | minimatch "^3.0.4" 801 | resolve "^1.3.2" 802 | semver "^5.3.0" 803 | tslib "^1.8.0" 804 | tsutils "^2.12.1" 805 | 806 | tsutils@2.8.0: 807 | version "2.8.0" 808 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.8.0.tgz#0160173729b3bf138628dd14a1537e00851d814a" 809 | dependencies: 810 | tslib "^1.7.1" 811 | 812 | tsutils@^1.4.0: 813 | version "1.9.1" 814 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.9.1.tgz#b9f9ab44e55af9681831d5f28d0aeeaf5c750cb0" 815 | 816 | tsutils@^2.12.1, tsutils@^2.13.1, tsutils@^2.24.0: 817 | version "2.27.0" 818 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.0.tgz#9efb252b188eaa0ca3ade41dc410d6ce7eaab816" 819 | dependencies: 820 | tslib "^1.8.1" 821 | 822 | typescript@^1.8.9: 823 | version "1.8.10" 824 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-1.8.10.tgz#b475d6e0dff0bf50f296e5ca6ef9fbb5c7320f1e" 825 | 826 | typescript@^2.8.3: 827 | version "2.8.3" 828 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.3.tgz#5d817f9b6f31bb871835f4edf0089f21abe6c170" 829 | 830 | uglify-es@^3.3.7: 831 | version "3.3.9" 832 | resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" 833 | dependencies: 834 | commander "~2.13.0" 835 | source-map "~0.6.1" 836 | 837 | universalify@^0.1.0: 838 | version "0.1.1" 839 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" 840 | 841 | vlq@^0.2.2: 842 | version "0.2.3" 843 | resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" 844 | 845 | which@^1.2.9: 846 | version "1.3.0" 847 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" 848 | dependencies: 849 | isexe "^2.0.0" 850 | 851 | wrappy@1: 852 | version "1.0.2" 853 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 854 | 855 | yallist@^2.1.2: 856 | version "2.1.2" 857 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 858 | -------------------------------------------------------------------------------- /umd/OwlCarousel.min.js: -------------------------------------------------------------------------------- 1 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("react")):"function"==typeof define&&define.amd?define(["react"],e):t.ReactOwlCarousel=e(t.React)}(this,function(t){"use strict";var e="default"in t?t.default:t,i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])};var s=Object.assign||function(t){for(var e,i=1,s=arguments.length;i1||t.items.merge,o[s]=n?e*i:this._items[s].width();this._widths=o}},{filter:["items","settings"],run:function(){var e=[],i=this._items,s=this.settings,n=Math.max(2*s.items,4),o=2*Math.ceil(i.length/2),r=s.loop&&i.length?s.rewind?n:Math.max(n,o):0,a="",h="";for(r/=2;r>0;)e.push(this.normalize(e.length/2,!0)),a+=i[e[e.length-1]][0].outerHTML,e.push(this.normalize(i.length-1-(e.length-1)/2,!0)),h=i[e[e.length-1]][0].outerHTML+h,r-=1;this._clones=e,t(a).addClass("cloned").appendTo(this.$stage),t(h).addClass("cloned").prependTo(this.$stage)}},{filter:["width","items","settings"],run:function(){for(var t=this.settings.rtl?1:-1,e=this._clones.length+this._items.length,i=-1,s=0,n=0,o=[];++i",a)||this.op(e,"<",r)&&this.op(e,">",a))&&h.push(i);this.$stage.children(".active").removeClass("active"),this.$stage.children(":eq("+h.join("), :eq(")+")").addClass("active"),this.$stage.children(".center").removeClass("center"),this.settings.center&&this.$stage.children().eq(this.current()).addClass("center")}}],n.prototype.initializeStage=function(){this.$stage=this.$element.find("."+this.settings.stageClass),this.$stage.length||(this.$element.addClass(this.options.loadingClass),this.$stage=t("<"+this.settings.stageElement+">",{class:this.settings.stageClass}).wrap(t("
",{class:this.settings.stageOuterClass})),this.$element.append(this.$stage.parent()))},n.prototype.initializeItems=function(){var e=this.$element.find(".owl-item");if(e.length)return this._items=e.get().map(function(e){return t(e)}),this._mergers=this._items.map(function(){return 1}),void this.refresh();this.replace(this.$element.children().not(this.$stage.parent())),this.isVisible()?this.refresh():this.invalidate("width"),this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass)},n.prototype.initialize=function(){var t,e,i;(this.enter("initializing"),this.trigger("initialize"),this.$element.toggleClass(this.settings.rtlClass,this.settings.rtl),this.settings.autoWidth&&!this.is("pre-loading"))&&(t=this.$element.find("img"),e=this.settings.nestedItemSelector?"."+this.settings.nestedItemSelector:void 0,i=this.$element.children(e).width(),t.length&&i<=0&&this.preloadAutoWidthImages(t));this.initializeStage(),this.initializeItems(),this.registerEventHandlers(),this.leave("initializing"),this.trigger("initialized")},n.prototype.isVisible=function(){return!this.settings.checkVisibility||this.$element.is(":visible")},n.prototype.setup=function(){var e=this.viewport(),i=this.options.responsive,s=-1,n=null;i?(t.each(i,function(t){t<=e&&t>s&&(s=Number(t))}),"function"==typeof(n=t.extend({},this.options,i[s])).stagePadding&&(n.stagePadding=n.stagePadding()),delete n.responsive,n.responsiveClass&&this.$element.attr("class",this.$element.attr("class").replace(new RegExp("("+this.options.responsiveClass+"-)\\S+\\s","g"),"$1"+s))):n=t.extend({},this.options),this.trigger("change",{property:{name:"settings",value:n}}),this._breakpoint=s,this.settings=n,this.invalidate("settings"),this.trigger("changed",{property:{name:"settings",value:this.settings}})},n.prototype.optionsLogic=function(){this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},n.prototype.prepare=function(e){var i=this.trigger("prepare",{content:e});return i.data||(i.data=t("<"+this.settings.itemElement+"/>").addClass(this.options.itemClass).append(e)),this.trigger("prepared",{content:i.data}),i.data},n.prototype.update=function(){for(var e=0,i=this._pipe.length,s=t.proxy(function(t){return this[t]},this._invalidated),n={};e0)&&this._pipe[e].run(n),e++;this._invalidated={},!this.is("valid")&&this.enter("valid")},n.prototype.width=function(t){switch(t=t||n.Width.Default){case n.Width.Inner:case n.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},n.prototype.refresh=function(){this.enter("refreshing"),this.trigger("refresh"),this.setup(),this.optionsLogic(),this.$element.addClass(this.options.refreshClass),this.update(),this.$element.removeClass(this.options.refreshClass),this.leave("refreshing"),this.trigger("refreshed")},n.prototype.onThrottledResize=function(){e.clearTimeout(this.resizeTimer),this.resizeTimer=e.setTimeout(this._handlers.onResize,this.settings.responsiveRefreshRate)},n.prototype.onResize=function(){return!!this._items.length&&(this._width!==this.$element.width()&&(!!this.isVisible()&&(this.enter("resizing"),this.trigger("resize").isDefaultPrevented()?(this.leave("resizing"),!1):(this.invalidate("width"),this.refresh(),this.leave("resizing"),void this.trigger("resized")))))},n.prototype.registerEventHandlers=function(){t.support.transition&&this.$stage.on(t.support.transition.end+".owl.core",t.proxy(this.onTransitionEnd,this)),!1!==this.settings.responsive&&this.on(e,"resize",this._handlers.onThrottledResize),this.settings.mouseDrag&&(this.$element.addClass(this.options.dragClass),this.$stage.on("mousedown.owl.core",t.proxy(this.onDragStart,this)),this.$stage.on("dragstart.owl.core selectstart.owl.core",function(){return!1})),this.settings.touchDrag&&(this.$stage.on("touchstart.owl.core",t.proxy(this.onDragStart,this)),this.$stage.on("touchcancel.owl.core",t.proxy(this.onDragEnd,this)))},n.prototype.onDragStart=function(e){var s=null;3!==e.which&&(t.support.transform?s={x:(s=this.$stage.css("transform").replace(/.*\(|\)| /g,"").split(","))[16===s.length?12:4],y:s[16===s.length?13:5]}:(s=this.$stage.position(),s={x:this.settings.rtl?s.left+this.$stage.width()-this.width()+this.settings.margin:s.left,y:s.top}),this.is("animating")&&(t.support.transform?this.animate(s.x):this.$stage.stop(),this.invalidate("position")),this.$element.toggleClass(this.options.grabClass,"mousedown"===e.type),this.speed(0),this._drag.time=(new Date).getTime(),this._drag.target=t(e.target),this._drag.stage.start=s,this._drag.stage.current=s,this._drag.pointer=this.pointer(e),t(i).on("mouseup.owl.core touchend.owl.core",t.proxy(this.onDragEnd,this)),t(i).one("mousemove.owl.core touchmove.owl.core",t.proxy(function(e){var s=this.difference(this._drag.pointer,this.pointer(e));t(i).on("mousemove.owl.core touchmove.owl.core",t.proxy(this.onDragMove,this)),Math.abs(s.x)0^this.settings.rtl?"left":"right";t(i).off(".owl.core"),this.$element.removeClass(this.options.grabClass),(0!==s.x&&this.is("dragging")||!this.is("valid"))&&(this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(this.closest(n.x,0!==s.x?o:this._drag.direction)),this.invalidate("position"),this.update(),this._drag.direction=o,(Math.abs(s.x)>3||(new Date).getTime()-this._drag.time>300)&&this._drag.target.one("click.owl.core",function(){return!1})),this.is("dragging")&&(this.leave("dragging"),this.trigger("dragged"))},n.prototype.closest=function(e,i){var s=-1,n=this.width(),o=this.coordinates();return this.settings.freeDrag||t.each(o,t.proxy(function(t,r){return"left"===i&&e>r-30&&er-n-30&&e",void 0!==o[t+1]?o[t+1]:r-n)&&(s="left"===i?t+1:t),-1===s},this)),this.settings.loop||(this.op(e,">",o[this.minimum()])?s=e=this.minimum():this.op(e,"<",o[this.maximum()])&&(s=e=this.maximum())),s},n.prototype.animate=function(e){var i=this.speed()>0;this.is("animating")&&this.onTransitionEnd(),i&&(this.enter("animating"),this.trigger("translate")),t.support.transform3d&&t.support.transition?this.$stage.css({transform:"translate3d("+e+"px,0px,0px)",transition:this.speed()/1e3+"s"+(this.settings.slideTransition?" "+this.settings.slideTransition:"")}):i?this.$stage.animate({left:e+"px"},this.speed(),this.settings.fallbackEasing,t.proxy(this.onTransitionEnd,this)):this.$stage.css({left:e+"px"})},n.prototype.is=function(t){return this._states.current[t]&&this._states.current[t]>0},n.prototype.current=function(t){if(void 0===t)return this._current;if(0!==this._items.length){if(t=this.normalize(t),this._current!==t){var e=this.trigger("change",{property:{name:"position",value:t}});void 0!==e.data&&(t=this.normalize(e.data)),this._current=t,this.invalidate("position"),this.trigger("changed",{property:{name:"position",value:this._current}})}return this._current}},n.prototype.invalidate=function(e){return"string"===t.type(e)&&(this._invalidated[e]=!0,this.is("valid")&&this.leave("valid")),t.map(this._invalidated,function(t,e){return e})},n.prototype.reset=function(t){void 0!==(t=this.normalize(t))&&(this._speed=0,this._current=t,this.suppress(["translate","translated"]),this.animate(this.coordinates(t)),this.release(["translate","translated"]))},n.prototype.normalize=function(t,e){var i=this._items.length,s=e?0:this._clones.length;return!this.isNumeric(t)||i<1?t=void 0:(t<0||t>=i+s)&&(t=((t-s/2)%i+i)%i+s/2),t},n.prototype.relative=function(t){return t-=this._clones.length/2,this.normalize(t,!0)},n.prototype.maximum=function(t){var e,i,s,n=this.settings,o=this._coordinates.length;if(n.loop)o=this._clones.length/2+this._items.length-1;else if(n.autoWidth||n.merge){if(e=this._items.length)for(i=this._items[--e].width(),s=this.$element.width();e--&&!((i+=this._items[e].width()+this.settings.margin)>s););o=e+1}else o=n.center?this._items.length-1:this._items.length-n.items;return t&&(o-=this._clones.length/2),Math.max(o,0)},n.prototype.minimum=function(t){return t?0:this._clones.length/2},n.prototype.items=function(t){return void 0===t?this._items.slice():(t=this.normalize(t,!0),this._items[t])},n.prototype.mergers=function(t){return void 0===t?this._mergers.slice():(t=this.normalize(t,!0),this._mergers[t])},n.prototype.clones=function(e){var i=this._clones.length/2,s=i+this._items.length,n=function(t){return t%2==0?s+t/2:i-(t+1)/2};return void 0===e?t.map(this._clones,function(t,e){return n(e)}):t.map(this._clones,function(t,i){return t===e?n(i):null})},n.prototype.speed=function(t){return void 0!==t&&(this._speed=t),this._speed},n.prototype.coordinates=function(e){var i,s=1,n=e-1;return void 0===e?t.map(this._coordinates,t.proxy(function(t,e){return this.coordinates(e)},this)):(this.settings.center?(this.settings.rtl&&(s=-1,n=e+1),i=this._coordinates[e],i+=(this.width()-i+(this._coordinates[n]||0))/2*s):i=this._coordinates[n]||0,i=Math.ceil(i))},n.prototype.duration=function(t,e,i){return 0===i?0:Math.min(Math.max(Math.abs(e-t),1),6)*Math.abs(i||this.settings.smartSpeed)},n.prototype.to=function(t,e){var i=this.current(),s=null,n=t-this.relative(i),o=(n>0)-(n<0),r=this._items.length,a=this.minimum(),h=this.maximum();this.settings.loop?(!this.settings.rewind&&Math.abs(n)>r/2&&(n+=-1*o*r),(s=(((t=i+n)-a)%r+r)%r+a)!==t&&s-n<=h&&s-n>0&&(i=s-n,t=s,this.reset(i))):t=this.settings.rewind?(t%(h+=1)+h)%h:Math.max(a,Math.min(h,t)),this.speed(this.duration(i,t,e)),this.current(t),this.isVisible()&&this.update()},n.prototype.next=function(t){t=t||!1,this.to(this.relative(this.current())+1,t)},n.prototype.prev=function(t){t=t||!1,this.to(this.relative(this.current())-1,t)},n.prototype.onTransitionEnd=function(t){if(void 0!==t&&(t.stopPropagation(),(t.target||t.srcElement||t.originalTarget)!==this.$stage.get(0)))return!1;this.leave("animating"),this.trigger("translated")},n.prototype.viewport=function(){var s;return this.options.responsiveBaseElement!==e?s=t(this.options.responsiveBaseElement).width():e.innerWidth?s=e.innerWidth:i.documentElement&&i.documentElement.clientWidth?s=i.documentElement.clientWidth:console.warn("Can not detect viewport width."),s},n.prototype.replace=function(e){this.$stage.empty(),this._items=[],e&&(e=e instanceof jQuery?e:t(e)),this.settings.nestedItemSelector&&(e=e.find("."+this.settings.nestedItemSelector)),e.filter(function(){return 1===this.nodeType}).each(t.proxy(function(t,e){e=this.prepare(e),this.$stage.append(e),this._items.push(e),this._mergers.push(1*e.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)},this)),this.reset(this.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate("items")},n.prototype.add=function(e,i){var s=this.relative(this._current);i=void 0===i?this._items.length:this.normalize(i,!0),e=e instanceof jQuery?e:t(e),this.trigger("add",{content:e,position:i}),e=this.prepare(e),0===this._items.length||i===this._items.length?(0===this._items.length&&this.$stage.append(e),0!==this._items.length&&this._items[i-1].after(e),this._items.push(e),this._mergers.push(1*e.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)):(this._items[i].before(e),this._items.splice(i,0,e),this._mergers.splice(i,0,1*e.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)),this._items[s]&&this.reset(this._items[s].index()),this.invalidate("items"),this.trigger("added",{content:e,position:i})},n.prototype.remove=function(t){void 0!==(t=this.normalize(t,!0))&&(this.trigger("remove",{content:this._items[t],position:t}),this._items[t].remove(),this._items.splice(t,1),this._mergers.splice(t,1),this.invalidate("items"),this.trigger("removed",{content:null,position:t}))},n.prototype.preloadAutoWidthImages=function(e){e.each(t.proxy(function(e,i){this.enter("pre-loading"),i=t(i),t(new Image).one("load",t.proxy(function(t){i.attr("src",t.target.src),i.css("opacity",1),this.leave("pre-loading"),!this.is("pre-loading")&&!this.is("initializing")&&this.refresh()},this)).attr("src",i.attr("src")||i.attr("data-src")||i.attr("data-src-retina"))},this))},n.prototype.destroy=function(){for(var s in this.$element.off(".owl.core"),this.$stage.off(".owl.core"),t(i).off(".owl.core"),!1!==this.settings.responsive&&(e.clearTimeout(this.resizeTimer),this.off(e,"resize",this._handlers.onThrottledResize)),this._plugins)this._plugins[s].destroy();this.$stage.children(".cloned").remove(),this.$stage.unwrap(),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$stage.remove(),this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class",this.$element.attr("class").replace(new RegExp(this.options.responsiveClass+"-\\S+\\s","g"),"")).removeData("owl.carousel")},n.prototype.op=function(t,e,i){var s=this.settings.rtl;switch(e){case"<":return s?t>i:t":return s?ti;case">=":return s?t<=i:t>=i;case"<=":return s?t>=i:t<=i}},n.prototype.on=function(t,e,i,s){t.addEventListener?t.addEventListener(e,i,s):t.attachEvent&&t.attachEvent("on"+e,i)},n.prototype.off=function(t,e,i,s){t.removeEventListener?t.removeEventListener(e,i,s):t.detachEvent&&t.detachEvent("on"+e,i)},n.prototype.trigger=function(e,i,s,o,r){var a={item:{count:this._items.length,index:this.current()}},h=t.camelCase(t.grep(["on",e,s],function(t){return t}).join("-").toLowerCase()),l=t.Event([e,"owl",s||"carousel"].join(".").toLowerCase(),t.extend({relatedTarget:this},a,i));return this._supress[e]||(t.each(this._plugins,function(t,e){e.onTrigger&&e.onTrigger(l)}),this.register({type:n.Type.Event,name:e}),this.$element.trigger(l),this.settings&&"function"==typeof this.settings[h]&&this.settings[h].call(this,l)),l},n.prototype.enter=function(e){t.each([e].concat(this._states.tags[e]||[]),t.proxy(function(t,e){void 0===this._states.current[e]&&(this._states.current[e]=0),this._states.current[e]++},this))},n.prototype.leave=function(e){t.each([e].concat(this._states.tags[e]||[]),t.proxy(function(t,e){this._states.current[e]--},this))},n.prototype.register=function(e){if(e.type===n.Type.Event){if(t.event.special[e.name]||(t.event.special[e.name]={}),!t.event.special[e.name].owl){var i=t.event.special[e.name]._default;t.event.special[e.name]._default=function(t){return!i||!i.apply||t.namespace&&-1!==t.namespace.indexOf("owl")?t.namespace&&t.namespace.indexOf("owl")>-1:i.apply(this,arguments)},t.event.special[e.name].owl=!0}}else e.type===n.Type.State&&(this._states.tags[e.name]?this._states.tags[e.name]=this._states.tags[e.name].concat(e.tags):this._states.tags[e.name]=e.tags,this._states.tags[e.name]=t.grep(this._states.tags[e.name],t.proxy(function(i,s){return t.inArray(i,this._states.tags[e.name])===s},this)))},n.prototype.suppress=function(e){t.each(e,t.proxy(function(t,e){this._supress[e]=!0},this))},n.prototype.release=function(e){t.each(e,t.proxy(function(t,e){delete this._supress[e]},this))},n.prototype.pointer=function(t){var i={x:null,y:null};return(t=(t=t.originalEvent||t||e.event).touches&&t.touches.length?t.touches[0]:t.changedTouches&&t.changedTouches.length?t.changedTouches[0]:t).pageX?(i.x=t.pageX,i.y=t.pageY):(i.x=t.clientX,i.y=t.clientY),i},n.prototype.isNumeric=function(t){return!isNaN(parseFloat(t))},n.prototype.difference=function(t,e){return{x:t.x-e.x,y:t.y-e.y}},t.fn.owlCarousel=function(e){var i=Array.prototype.slice.call(arguments,1);return this.each(function(){var s=t(this),o=s.data("owl.carousel");o||(o=new n(this,"object"==typeof e&&e),s.data("owl.carousel",o),t.each(["next","prev","to","destroy","refresh","replace","add","remove"],function(e,i){o.register({type:n.Type.Event,name:i}),o.$element.on(i+".owl.carousel.core",t.proxy(function(t){t.namespace&&t.relatedTarget!==this&&(this.suppress([i]),o[i].apply(this,[].slice.call(arguments,1)),this.release([i]))},o))})),"string"==typeof e&&"_"!==e.charAt(0)&&o[e].apply(o,i)})},t.fn.owlCarousel.Constructor=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this._core=e,this._interval=null,this._visible=null,this._handlers={"initialized.owl.carousel":t.proxy(function(t){t.namespace&&this._core.settings.autoRefresh&&this.watch()},this)},this._core.options=t.extend({},n.Defaults,this._core.options),this._core.$element.on(this._handlers)};n.Defaults={autoRefresh:!0,autoRefreshInterval:500},n.prototype.watch=function(){this._interval||(this._visible=this._core.isVisible(),this._interval=e.setInterval(t.proxy(this.refresh,this),this._core.settings.autoRefreshInterval))},n.prototype.refresh=function(){this._core.isVisible()!==this._visible&&(this._visible=!this._visible,this._core.$element.toggleClass("owl-hidden",!this._visible),this._visible&&this._core.invalidate("width")&&this._core.refresh())},n.prototype.destroy=function(){var t,i;for(t in e.clearInterval(this._interval),this._handlers)this._core.$element.off(t,this._handlers[t]);for(i in Object.getOwnPropertyNames(this))"function"!=typeof this[i]&&(this[i]=null)},t.fn.owlCarousel.Constructor.Plugins.AutoRefresh=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this._core=e,this._loaded=[],this._handlers={"initialized.owl.carousel change.owl.carousel resized.owl.carousel":t.proxy(function(e){if(e.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(e.property&&"position"==e.property.name||"initialized"==e.type)){var i=this._core.settings,s=i.center&&Math.ceil(i.items/2)||i.items,n=i.center&&-1*s||0,o=(e.property&&void 0!==e.property.value?e.property.value:this._core.current())+n,r=this._core.clones().length,a=t.proxy(function(t,e){this.load(e)},this);for(i.lazyLoadEager>0&&(s+=i.lazyLoadEager,i.loop&&(o-=i.lazyLoadEager,s++));n++-1||(n.each(t.proxy(function(i,s){var n,o=t(s),r=e.devicePixelRatio>1&&o.attr("data-src-retina")||o.attr("data-src")||o.attr("data-srcset");this._core.trigger("load",{element:o,url:r},"lazy"),o.is("img")?o.one("load.owl.lazy",t.proxy(function(){o.css("opacity",1),this._core.trigger("loaded",{element:o,url:r},"lazy")},this)).attr("src",r):o.is("source")?o.one("load.owl.lazy",t.proxy(function(){this._core.trigger("loaded",{element:o,url:r},"lazy")},this)).attr("srcset",r):((n=new Image).onload=t.proxy(function(){o.css({"background-image":'url("'+r+'")',opacity:"1"}),this._core.trigger("loaded",{element:o,url:r},"lazy")},this),n.src=r)},this)),this._loaded.push(s.get(0)))},n.prototype.destroy=function(){var t,e;for(t in this.handlers)this._core.$element.off(t,this.handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.owlCarousel.Constructor.Plugins.Lazy=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(i){this._core=i,this._previousHeight=null,this._handlers={"initialized.owl.carousel refreshed.owl.carousel":t.proxy(function(t){t.namespace&&this._core.settings.autoHeight&&this.update()},this),"changed.owl.carousel":t.proxy(function(t){t.namespace&&this._core.settings.autoHeight&&"position"===t.property.name&&this.update()},this),"loaded.owl.lazy":t.proxy(function(t){t.namespace&&this._core.settings.autoHeight&&t.element.closest("."+this._core.settings.itemClass).index()===this._core.current()&&this.update()},this)},this._core.options=t.extend({},n.Defaults,this._core.options),this._core.$element.on(this._handlers),this._intervalId=null;var s=this;t(e).on("load",function(){s._core.settings.autoHeight&&s.update()}),t(e).resize(function(){s._core.settings.autoHeight&&(null!=s._intervalId&&clearTimeout(s._intervalId),s._intervalId=setTimeout(function(){s.update()},250))})};n.Defaults={autoHeight:!1,autoHeightClass:"owl-height"},n.prototype.update=function(){var e=this._core._current,i=e+this._core.settings.items,s=this._core.settings.lazyLoad,n=this._core.$stage.children().toArray().slice(e,i),o=[],r=0;t.each(n,function(e,i){o.push(t(i).height())}),(r=Math.max.apply(null,o))<=1&&s&&this._previousHeight&&(r=this._previousHeight),this._previousHeight=r,this._core.$stage.parent().height(r).addClass(this._core.settings.autoHeightClass)},n.prototype.destroy=function(){var t,e;for(t in this._handlers)this._core.$element.off(t,this._handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.owlCarousel.Constructor.Plugins.AutoHeight=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this._core=e,this._videos={},this._playing=null,this._handlers={"initialized.owl.carousel":t.proxy(function(t){t.namespace&&this._core.register({type:"state",name:"playing",tags:["interacting"]})},this),"resize.owl.carousel":t.proxy(function(t){t.namespace&&this._core.settings.video&&this.isInFullScreen()&&t.preventDefault()},this),"refreshed.owl.carousel":t.proxy(function(t){t.namespace&&this._core.is("resizing")&&this._core.$stage.find(".cloned .owl-video-frame").remove()},this),"changed.owl.carousel":t.proxy(function(t){t.namespace&&"position"===t.property.name&&this._playing&&this.stop()},this),"prepared.owl.carousel":t.proxy(function(e){if(e.namespace){var i=t(e.content).find(".owl-video");i.length&&(i.css("display","none"),this.fetch(i,t(e.content)))}},this)},this._core.options=t.extend({},n.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on("click.owl.video",".owl-video-play-icon",t.proxy(function(t){this.play(t)},this))};n.Defaults={video:!1,videoHeight:!1,videoWidth:!1},n.prototype.fetch=function(t,e){var i=t.attr("data-vimeo-id")?"vimeo":t.attr("data-vzaar-id")?"vzaar":"youtube",s=t.attr("data-vimeo-id")||t.attr("data-youtube-id")||t.attr("data-vzaar-id"),n=t.attr("data-width")||this._core.settings.videoWidth,o=t.attr("data-height")||this._core.settings.videoHeight,r=t.attr("href");if(!r)throw new Error("Missing video URL.");if((s=r.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com|be\-nocookie\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/))[3].indexOf("youtu")>-1)i="youtube";else if(s[3].indexOf("vimeo")>-1)i="vimeo";else{if(!(s[3].indexOf("vzaar")>-1))throw new Error("Video URL not supported.");i="vzaar"}s=s[6],this._videos[r]={type:i,id:s,width:n,height:o},e.attr("data-video",r),this.thumbnail(t,this._videos[r])},n.prototype.thumbnail=function(e,i){var s,n,o,r=i.width&&i.height?"width:"+i.width+"px;height:"+i.height+"px;":"",a=e.find("img"),h="src",l="",c=this._core.settings,p=function(i){n='
',s=c.lazyLoad?t("
",{class:"owl-video-tn "+l,srcType:i}):t("
",{class:"owl-video-tn",style:"opacity:1;background-image:url("+i+")"}),e.after(s),e.after(n)};if(e.wrap(t("
",{class:"owl-video-wrapper",style:r})),this._core.settings.lazyLoad&&(h="data-src",l="owl-lazy"),a.length)return p(a.attr(h)),a.remove(),!1;"youtube"===i.type?(o="//img.youtube.com/vi/"+i.id+"/hqdefault.jpg",p(o)):"vimeo"===i.type?t.ajax({type:"GET",url:"//vimeo.com/api/v2/video/"+i.id+".json",jsonp:"callback",dataType:"jsonp",success:function(t){o=t[0].thumbnail_large,p(o)}}):"vzaar"===i.type&&t.ajax({type:"GET",url:"//vzaar.com/api/videos/"+i.id+".json",jsonp:"callback",dataType:"jsonp",success:function(t){o=t.framegrab_url,p(o)}})},n.prototype.stop=function(){this._core.trigger("stop",null,"video"),this._playing.find(".owl-video-frame").remove(),this._playing.removeClass("owl-video-playing"),this._playing=null,this._core.leave("playing"),this._core.trigger("stopped",null,"video")},n.prototype.play=function(e){var i,s=t(e.target).closest("."+this._core.settings.itemClass),n=this._videos[s.attr("data-video")],o=n.width||"100%",r=n.height||this._core.$stage.height();this._playing||(this._core.enter("playing"),this._core.trigger("play",null,"video"),s=this._core.items(this._core.relative(s.index())),this._core.reset(s.index()),(i=t('')).attr("height",r),i.attr("width",o),"youtube"===n.type?i.attr("src","//www.youtube.com/embed/"+n.id+"?autoplay=1&rel=0&v="+n.id):"vimeo"===n.type?i.attr("src","//player.vimeo.com/video/"+n.id+"?autoplay=1"):"vzaar"===n.type&&i.attr("src","//view.vzaar.com/"+n.id+"/player?autoplay=true"),t(i).wrap('
').insertAfter(s.find(".owl-video")),this._playing=s.addClass("owl-video-playing"))},n.prototype.isInFullScreen=function(){var e=i.fullscreenElement||i.mozFullScreenElement||i.webkitFullscreenElement;return e&&t(e).parent().hasClass("owl-video-frame")},n.prototype.destroy=function(){var t,e;for(t in this._core.$element.off("click.owl.video"),this._handlers)this._core.$element.off(t,this._handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.owlCarousel.Constructor.Plugins.Video=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this.core=e,this.core.options=t.extend({},n.Defaults,this.core.options),this.swapping=!0,this.previous=void 0,this.next=void 0,this.handlers={"change.owl.carousel":t.proxy(function(t){t.namespace&&"position"==t.property.name&&(this.previous=this.core.current(),this.next=t.property.value)},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":t.proxy(function(t){t.namespace&&(this.swapping="translated"==t.type)},this),"translate.owl.carousel":t.proxy(function(t){t.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};n.Defaults={animateOut:!1,animateIn:!1},n.prototype.swap=function(){if(1===this.core.settings.items&&t.support.animation&&t.support.transition){this.core.speed(0);var e,i=t.proxy(this.clear,this),s=this.core.$stage.children().eq(this.previous),n=this.core.$stage.children().eq(this.next),o=this.core.settings.animateIn,r=this.core.settings.animateOut;this.core.current()!==this.previous&&(r&&(e=this.core.coordinates(this.previous)-this.core.coordinates(this.next),s.one(t.support.animation.end,i).css({left:e+"px"}).addClass("animated owl-animated-out").addClass(r)),o&&n.one(t.support.animation.end,i).addClass("animated owl-animated-in").addClass(o))}},n.prototype.clear=function(e){t(e.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},n.prototype.destroy=function(){var t,e;for(t in this.handlers)this.core.$element.off(t,this.handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.owlCarousel.Constructor.Plugins.Animate=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this._core=e,this._call=null,this._time=0,this._timeout=0,this._paused=!0,this._handlers={"changed.owl.carousel":t.proxy(function(t){t.namespace&&"settings"===t.property.name?this._core.settings.autoplay?this.play():this.stop():t.namespace&&"position"===t.property.name&&this._paused&&(this._time=0)},this),"initialized.owl.carousel":t.proxy(function(t){t.namespace&&this._core.settings.autoplay&&this.play()},this),"play.owl.autoplay":t.proxy(function(t,e,i){t.namespace&&this.play(e,i)},this),"stop.owl.autoplay":t.proxy(function(t){t.namespace&&this.stop()},this),"mouseover.owl.autoplay":t.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"mouseleave.owl.autoplay":t.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.play()},this),"touchstart.owl.core":t.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"touchend.owl.core":t.proxy(function(){this._core.settings.autoplayHoverPause&&this.play()},this)},this._core.$element.on(this._handlers),this._core.options=t.extend({},n.Defaults,this._core.options)};n.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},n.prototype._next=function(s){this._call=e.setTimeout(t.proxy(this._next,this,s),this._timeout*(Math.round(this.read()/this._timeout)+1)-this.read()),this._core.is("interacting")||i.hidden||this._core.next(s||this._core.settings.autoplaySpeed)},n.prototype.read=function(){return(new Date).getTime()-this._time},n.prototype.play=function(i,s){var n;this._core.is("rotating")||this._core.enter("rotating"),i=i||this._core.settings.autoplayTimeout,n=Math.min(this._time%(this._timeout||i),i),this._paused?(this._time=this.read(),this._paused=!1):e.clearTimeout(this._call),this._time+=this.read()%i-n,this._timeout=i,this._call=e.setTimeout(t.proxy(this._next,this,s),i-n)},n.prototype.stop=function(){this._core.is("rotating")&&(this._time=0,this._paused=!0,e.clearTimeout(this._call),this._core.leave("rotating"))},n.prototype.pause=function(){this._core.is("rotating")&&!this._paused&&(this._time=this.read(),this._paused=!0,e.clearTimeout(this._call))},n.prototype.destroy=function(){var t,e;for(t in this.stop(),this._handlers)this._core.$element.off(t,this._handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.owlCarousel.Constructor.Plugins.autoplay=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this._core=e,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.carousel":t.proxy(function(e){e.namespace&&this._core.settings.dotsData&&this._templates.push('
'+t(e.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot")+"
")},this),"added.owl.carousel":t.proxy(function(t){t.namespace&&this._core.settings.dotsData&&this._templates.splice(t.position,0,this._templates.pop())},this),"remove.owl.carousel":t.proxy(function(t){t.namespace&&this._core.settings.dotsData&&this._templates.splice(t.position,1)},this),"changed.owl.carousel":t.proxy(function(t){t.namespace&&"position"==t.property.name&&this.draw()},this),"initialized.owl.carousel":t.proxy(function(t){t.namespace&&!this._initialized&&(this._core.trigger("initialize",null,"navigation"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger("initialized",null,"navigation"))},this),"refreshed.owl.carousel":t.proxy(function(t){t.namespace&&this._initialized&&(this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation"))},this)},this._core.options=t.extend({},n.Defaults,this._core.options),this.$element.on(this._handlers)};n.Defaults={nav:!1,navText:['',''],navSpeed:!1,navElement:'button type="button" role="presentation"',navContainer:!1,navContainerClass:"owl-nav",navClass:["owl-prev","owl-next"],slideBy:1,dotClass:"owl-dot",dotsClass:"owl-dots",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},n.prototype.initialize=function(){var e,i=this._core.settings;for(e in this._controls.$relative=(i.navContainer?t(i.navContainer):t("
").addClass(i.navContainerClass).appendTo(this.$element)).addClass("disabled"),this._controls.$previous=t("<"+i.navElement+">").addClass(i.navClass[0]).html(i.navText[0]).prependTo(this._controls.$relative).on("click",t.proxy(function(t){this.prev(i.navSpeed)},this)),this._controls.$next=t("<"+i.navElement+">").addClass(i.navClass[1]).html(i.navText[1]).appendTo(this._controls.$relative).on("click",t.proxy(function(t){this.next(i.navSpeed)},this)),i.dotsData||(this._templates=[t('