├── tests ├── app.css ├── tests │ ├── destroy.js │ ├── events.js │ ├── bootstrap.js │ ├── methods.js │ ├── init.js │ └── options.js ├── index.html ├── input_in_container_fixed_to_top_of_viewport.html └── input_in_container_fixed_to_bottom_of_viewport.html ├── .gitignore ├── .travis.yml ├── screen ├── 1.png ├── 2.png ├── 3.1.png ├── 3.png ├── 4.png ├── 5.png └── 6.png ├── pull_request_template.md ├── karma.conf.js ├── MIT-LICENSE.txt ├── bower.json ├── datetimepicker.jquery.json ├── package.json ├── README.md ├── index.html ├── jquery.datetimepicker.css ├── doc.tpl └── yarn.lock /tests/app.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | node_modules 3 | bower_components/ -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "8" 4 | services: 5 | - xvfb -------------------------------------------------------------------------------- /screen/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdan/datetimepicker/HEAD/screen/1.png -------------------------------------------------------------------------------- /screen/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdan/datetimepicker/HEAD/screen/2.png -------------------------------------------------------------------------------- /screen/3.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdan/datetimepicker/HEAD/screen/3.1.png -------------------------------------------------------------------------------- /screen/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdan/datetimepicker/HEAD/screen/3.png -------------------------------------------------------------------------------- /screen/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdan/datetimepicker/HEAD/screen/4.png -------------------------------------------------------------------------------- /screen/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdan/datetimepicker/HEAD/screen/5.png -------------------------------------------------------------------------------- /screen/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdan/datetimepicker/HEAD/screen/6.png -------------------------------------------------------------------------------- /pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Checklist before pull request 2 | * [ ] There is an associated issue that is labelled 'Bug' or 'help wanted' or is in the Community milestone 3 | * [ ] Code is up-to-date with the `master` branch 4 | * [ ] You've successfully run `npm test` locally 5 | * [ ] There are new or updated tests validating the change 6 | 7 | ## Fixes # 8 | About your changes 9 | -------------------------------------------------------------------------------- /karma.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = function(config) { 2 | config.set({ 3 | basePath: '', 4 | frameworks: ['mocha', 'chai'], 5 | files: [ 6 | 'jquery.datetimepicker.css', 7 | 'node_modules/php-date-formatter/js/php-date-formatter.js', 8 | 'jquery.js', 9 | 'jquery.datetimepicker.js', 10 | 'tests/bootstrap.js', 11 | 'tests/tests/*.js' 12 | ], 13 | reporters: ['progress'], 14 | port: 2002, 15 | hostname: '127.0.0.1', 16 | colors: true, 17 | logLevel: config.LOG_INFO, 18 | browsers: ['Firefox'], 19 | autoWatch: true, 20 | singleRun: false, // Karma captures browsers, runs the tests and exits 21 | concurrency: Infinity, 22 | plugins: [ 23 | 'karma-firefox-launcher', 24 | 'karma-mocha', 25 | 'karma-chai' 26 | ], 27 | client: { 28 | captureConsole: true 29 | } 30 | }) 31 | }; 32 | -------------------------------------------------------------------------------- /tests/tests/destroy.js: -------------------------------------------------------------------------------- 1 | describe('Check destructor', function () { 2 | describe('Init picker and after this init again with command destroy', function () { 3 | it('Should remove picker from DOM and remove all listeners from original input', function (done) { 4 | var input = getInput(); 5 | $(input).datetimepicker(); 6 | var dtp = $(input).data('xdsoft_datetimepicker'); 7 | expect(dtp).to.be.not.equal(null); 8 | expect(dtp[0].tagName).to.be.equal('DIV'); 9 | expect(dtp[0].classList.contains('xdsoft_datetimepicker')).to.be.true; 10 | expect(dtp.is(':hidden')).to.be.true; 11 | 12 | $(input).datetimepicker('destroy'); 13 | expect($(input).data('xdsoft_datetimepicker')).to.be.equal(null); 14 | 15 | $(input).trigger('mousedown') 16 | setTimeout(function () { 17 | expect(dtp.is(':hidden')).to.be.true; 18 | done(); 19 | }, 150) 20 | }); 21 | }); 22 | }); -------------------------------------------------------------------------------- /MIT-LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013 http://xdsoft.net 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /tests/tests/events.js: -------------------------------------------------------------------------------- 1 | describe('Test events', function () { 2 | describe('onSelectDate', function () { 3 | it('Should fired after user selected day', function (done) { 4 | var input= $(getInput()).val('2011/04/15'); 5 | 6 | var picker = input.datetimepicker({ 7 | onSelectDate: function (time, inp, evt) { 8 | expect(picker).to.be.equal(this); 9 | expect(time.getDate()).to.be.equal(17); 10 | expect(time.getMonth()).to.be.equal(3); 11 | expect(time.getFullYear()).to.be.equal(2011); 12 | expect(inp[0]).to.be.equal(input[0]); 13 | expect(evt.type).to.be.equal('click'); 14 | done(); 15 | }, 16 | format: 'Y/m/d' 17 | }).trigger('mousedown').data(PICKER); 18 | 19 | setTimeout(function () { 20 | var select = picker.find('td[data-date="17"][data-month="3"][data-year="2011"]'); 21 | expect(select.length).to.be.equal(1); 22 | select.trigger('click'); 23 | }, 100); 24 | }); 25 | }); 26 | }); -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "datetimepicker", 3 | "version": "2.5.11", 4 | "main": [ 5 | "build/jquery.datetimepicker.full.min.js", 6 | "jquery.datetimepicker.css" 7 | ], 8 | "ignore": [ 9 | "**/screen", 10 | "**/datetimepicker.jquery.json", 11 | "**/*.png", 12 | "**/*.txt", 13 | "**/*.md", 14 | "**/*.html", 15 | "**/*.tpl", 16 | "**/jquery.js", 17 | "bower_components", 18 | "node_modules" 19 | ], 20 | "keywords": [ 21 | "calendar", 22 | "date", 23 | "time", 24 | "form", 25 | "datetime", 26 | "datepicker", 27 | "timepicker", 28 | "datetimepicker", 29 | "validation", 30 | "ui", 31 | "scroller", 32 | "picker", 33 | "i18n", 34 | "input", 35 | "jquery", 36 | "touch" 37 | ], 38 | "authors": [ 39 | { 40 | "name": "Chupurnov Valeriy", 41 | "email": "chupurnov@gmail.com", 42 | "homepage": "http://xdsoft.net/contacts.html" 43 | } 44 | ], 45 | "dependencies": { 46 | "jquery": ">= 1.7.2", 47 | "jquery-mousewheel": ">= 3.1.13", 48 | "php-date-formatter": ">= 1.3.3" 49 | }, 50 | "license": "MIT", 51 | "homepage": "http://xdsoft.net/jqplugins/datetimepicker/", 52 | "repository": { 53 | "type": "git", 54 | "url": "git://github.com:xdan/datetimepicker.git" 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /datetimepicker.jquery.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "datetimepicker", 3 | "version": "2.5.4", 4 | "title": "jQuery Date and Time picker", 5 | "description": "jQuery plugin for date, time, or datetime manipulation in form", 6 | "keywords": [ 7 | "calendar", 8 | "date", 9 | "time", 10 | "form", 11 | "datetime", 12 | "datepicker", 13 | "timepicker", 14 | "datetimepicker", 15 | "validation", 16 | "ui", 17 | "scroller", 18 | "picker", 19 | "i18n", 20 | "input", 21 | "jquery", 22 | "touch" 23 | ], 24 | "author": { 25 | "name": "Chupurnov Valeriy", 26 | "email": "chupurnov@gmail.com", 27 | "url": "http://xdsoft.net/contacts.html" 28 | }, 29 | "maintainers": [{ 30 | "name": "Chupurnov Valeriy", 31 | "email": "chupurnov@gmail.com", 32 | "url": "http://xdsoft.net" 33 | }], 34 | "licenses": [ 35 | { 36 | "type": "MIT", 37 | "url": "https://github.com/xdan/datetimepicker/blob/master/MIT-LICENSE.txt" 38 | } 39 | ], 40 | "bugs": "https://github.com/xdan/datetimepicker/issues", 41 | "homepage": "http://xdsoft.net/jqplugins/datetimepicker/", 42 | "docs": "http://xdsoft.net/jqplugins/datetimepicker/", 43 | "download": "https://github.com/xdan/datetimepicker/archive/master.zip", 44 | "dependencies": { 45 | "jquery": ">=1.7" 46 | } 47 | } -------------------------------------------------------------------------------- /tests/tests/bootstrap.js: -------------------------------------------------------------------------------- 1 | var inputs = []; 2 | 3 | var box = document.createElement('div'); 4 | document.body.appendChild(box); 5 | 6 | 7 | var getInput = function () { 8 | var input = document.createElement('input'); 9 | input.setAttribute('type', 'text'); 10 | inputs.push(input); 11 | box.appendChild(input); 12 | return input; 13 | }; 14 | 15 | var clear = function() { 16 | inputs.forEach(function (inp) { 17 | $(inp).datetimepicker('destroy'); 18 | inp.parentNode && inp.parentNode.removeChild(inp) 19 | }); 20 | }; 21 | 22 | var PICKER = 'xdsoft_datetimepicker'; 23 | 24 | var simulateEvent = function (type, element, keyCodeArg, options) { 25 | if (!keyCodeArg) { 26 | keyCodeArg = 0; 27 | } 28 | 29 | if (element instanceof jQuery) { 30 | element = element[0]; 31 | } 32 | 33 | var evt = (element.ownerDocument || document).createEvent('HTMLEvents') 34 | evt.initEvent(type, true, true); 35 | evt.keyCode = keyCodeArg; 36 | evt.which = keyCodeArg; 37 | 38 | if (options) { 39 | options(evt); 40 | } 41 | 42 | if (type.match(/^mouse/)) { 43 | ['pageX', 'pageY', 'clientX', 'clientY'].forEach(function (key) { 44 | if (evt[key] === undefined) { 45 | evt[key] = 0; 46 | } 47 | }) 48 | } 49 | 50 | element.dispatchEvent(evt); 51 | }; 52 | 53 | afterEach(clear); 54 | var expect = chai.expect; 55 | chai.config.includeStack = true -------------------------------------------------------------------------------- /tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | jQuery DateTimepicker Tests 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 44 | 45 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery-datetimepicker", 3 | "version": "2.5.22", 4 | "description": "jQuery Plugin DateTimePicker it is DatePicker and TimePicker in one", 5 | "main": "build/jquery.datetimepicker.full.min.js", 6 | "scripts": { 7 | "test": "karma start --browsers Firefox karma.conf.js --single-run", 8 | "concat": "concat-cli -f node_modules/php-date-formatter/js/php-date-formatter.min.js jquery.datetimepicker.js node_modules/jquery-mousewheel/jquery.mousewheel.js -o build/jquery.datetimepicker.full.js", 9 | "minify": "uglifyjs jquery.datetimepicker.js -c -m -o build/jquery.datetimepicker.min.js && uglifycss jquery.datetimepicker.css > build/jquery.datetimepicker.min.css", 10 | "minifyconcat": "uglifyjs build/jquery.datetimepicker.full.js -c -m -o build/jquery.datetimepicker.full.min.js", 11 | "github": "git add --all && git commit -m \"New version %npm_package_version% \" && git tag %npm_package_version% && git push --tags origin HEAD:master && npm publish", 12 | "build": "npm run minify && npm run concat && npm run minifyconcat", 13 | "public": "npm run test && npm version patch --no-git-tag-version && npm run build && npm run github" 14 | }, 15 | "repository": { 16 | "type": "git", 17 | "url": "https://github.com/xdan/datetimepicker.git" 18 | }, 19 | "keywords": [ 20 | "jquery-plugin", 21 | "calendar", 22 | "date", 23 | "time", 24 | "datetime", 25 | "datepicker", 26 | "timepicker" 27 | ], 28 | "author": "Chupurnov (https://xdsoft.net/)", 29 | "license": "MIT", 30 | "bugs": { 31 | "url": "https://github.com/xdan/datetimepicker/issues" 32 | }, 33 | "homepage": "https://github.com/xdan/datetimepicker", 34 | "dependencies": { 35 | "jquery": ">= 1.7.2", 36 | "jquery-mousewheel": ">= 3.1.13", 37 | "php-date-formatter": "^1.3.6" 38 | }, 39 | "devDependencies": { 40 | "chai": "^4.1.2", 41 | "concat": "azer/concat", 42 | "concat-cli": "^4.0.0", 43 | "karma": "^6.4.1", 44 | "karma-chai": "^0.1.0", 45 | "karma-firefox-launcher": "^1.1.0", 46 | "karma-mocha": "^2.0.1", 47 | "mocha": "^10.2.0", 48 | "uglify-js": "^3.4.9", 49 | "uglifycss": "^0.0.27" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /tests/tests/methods.js: -------------------------------------------------------------------------------- 1 | describe('Test methods', function () { 2 | describe('Show', function () { 3 | it('Should show picker', function () { 4 | var input= $(getInput()); 5 | var picker = input 6 | .datetimepicker() 7 | .datetimepicker('show') 8 | .data(PICKER); 9 | 10 | expect(picker.is(':hidden')).to.be.false; 11 | }); 12 | }); 13 | describe('Hide', function () { 14 | it('Should hide picker', function () { 15 | var input= $(getInput()); 16 | var picker = input 17 | .datetimepicker() 18 | .datetimepicker('show') 19 | .data(PICKER); 20 | 21 | expect(picker.is(':hidden')).to.be.false; 22 | input.datetimepicker('hide') 23 | expect(picker.is(':hidden')).to.be.true; 24 | }); 25 | }); 26 | describe('Toggle', function () { 27 | it('Should hide/show picker', function () { 28 | var input= $(getInput()); 29 | var picker = input 30 | .datetimepicker() 31 | .datetimepicker('show') 32 | .data(PICKER); 33 | 34 | expect(picker.is(':hidden')).to.be.false; 35 | input.datetimepicker('toggle') 36 | expect(picker.is(':hidden')).to.be.true; 37 | input.datetimepicker('toggle') 38 | expect(picker.is(':hidden')).to.be.false; 39 | }); 40 | }); 41 | describe('Reset', function () { 42 | it('Should restore default value', function (done) { 43 | var input= $('').appendTo(document.body); 44 | 45 | var picker = input 46 | .datetimepicker({format: 'd.m.Y'}) 47 | .datetimepicker('show') 48 | .data(PICKER); 49 | 50 | setTimeout(function () { 51 | var select = picker.find('td[data-date="16"][data-month="11"][data-year="2008"]'); 52 | expect(select.length).to.be.equal(1); 53 | select.trigger('click'); 54 | expect(input.val()).to.be.equal('16.12.2008'); 55 | input.datetimepicker('reset'); 56 | expect(input.val()).to.be.equal('15.12.2008'); 57 | input.datetimepicker('destroy').remove(); 58 | done(); 59 | }, 100) 60 | }); 61 | }); 62 | }); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | > [!IMPORTANT] 3 | > **Contributing & Maintenance** 4 | > 5 | > If you would like to help maintain this plugin, please email me at [chupurnov@gmail.com](mailto:chupurnov@gmail.com). I can grant you access to the npm package and the GitHub repository. 6 | 7 | Please note that I am no longer using jQuery, so I cannot offer full support for it. 8 | 9 | # jQuery DateTimePicker 10 | [Demo and Documentation](https://xdsoft.net/jqplugins/datetimepicker/) 11 | 12 | [![Build Status](https://travis-ci.org/xdan/datetimepicker.svg?branch=master)](https://travis-ci.org/xdan/datetimepicker) 13 | [![npm version](https://badge.fury.io/js/jquery-datetimepicker.svg)](https://badge.fury.io/js/jquery-datetimepicker) 14 | [![npm](https://img.shields.io/npm/dm/jquery-datetimepicker.svg)](https://www.npmjs.com/package/jquery-datetimepicker) 15 | 16 | PLEASE. Help me update the documentation. 17 | [Doc.tpl](https://github.com/xdan/datetimepicker/blob/master/doc.tpl) 18 | This file will be automatically displayed on the site 19 | 20 | # Installation 21 | 22 | ```bash 23 | npm install jquery-datetimepicker 24 | ``` 25 | OR 26 | ```bash 27 | yarn add jquery-datetimepicker 28 | ``` 29 | or download [zip](https://github.com/xdan/datetimepicker/releases) 30 | # datetimepicker 31 | ============== 32 | 33 | **!!! In the latest version the 'lang' option is obsolete. The language setting is now global. !!!** 34 | 35 | Use this: 36 | ```javascript 37 | jQuery.datetimepicker.setLocale('en'); 38 | ``` 39 | [Documentation][doc] 40 | 41 | jQuery Plugin Date and Time Picker 42 | 43 | DateTimePicker 44 | 45 | ![ScreenShot](https://raw.github.com/xdan/datetimepicker/master/screen/1.png) 46 | 47 | DatePicker 48 | 49 | ![ScreenShot](https://raw.github.com/xdan/datetimepicker/master/screen/2.png) 50 | 51 | TimePicker 52 | 53 | ![ScreenShot](https://raw.github.com/xdan/datetimepicker/master/screen/3.png) 54 | 55 | Options to highlight individual dates or periods 56 | 57 | ![ScreenShot](https://raw.github.com/Mingpao/datetimepicker/master/screen/4.png) 58 | 59 | ![ScreenShot](https://raw.github.com/Mingpao/datetimepicker/master/screen/5.png) 60 | 61 | ![ScreenShot](https://raw.github.com/Mingpao/datetimepicker/master/screen/6.png) 62 | 63 | [doc]: https://xdsoft.net/jqplugins/datetimepicker/ 64 | 65 | ### JS Build help 66 | 67 | **Requires Node and NPM** [Download and install node.js](http://nodejs.org/download/). 68 | 69 | Install: 70 | 71 | 1. Install `bower` globally with `npm install -g bower`. 72 | 2. Run `npm install`. npm will look at `package.json` and automatically install the necessary dependencies. 73 | 3. Run `bower install`, which installs front-end packages defined in `bower.json`. 74 | 75 | Notice: If you use Bower v1.5.2, you will get the error: `The "main" field cannot contain minified files` 76 | You can regress to version 1.3.12 77 | 78 | 1. `npm uninstall bower -g` 79 | 2. `npm install -g bower@1.3.12` 80 | 81 | Build: 82 | 83 | First install npm requirements: `npm install -g uglifycss concat-cli` 84 | Then build the files: `npm run build` 85 | 86 | When the build completes, you'll have the following files: 87 | - **build/jquery.datetimepicker.full.js** - browser file 88 | - **build/jquery.datetimepicker.full.min.js** - browser minified file 89 | - **build/jquery.datetimepicker.min.js** - amd module style minified file 90 | -------------------------------------------------------------------------------- /tests/tests/init.js: -------------------------------------------------------------------------------- 1 | describe('Init', function () { 2 | describe('jQuery.fn', function () { 3 | it('Should have datetimepicker method', function () { 4 | expect(typeof jQuery.fn.datetimepicker).to.be.equal('function'); 5 | expect(typeof $.fn.datetimepicker).to.be.equal('function'); 6 | }); 7 | }); 8 | describe('jQuery.fn.datetimepicker', function () { 9 | it('Should have `defaults` property', function () { 10 | expect(typeof jQuery.fn.datetimepicker.defaults).to.be.equal('object'); 11 | expect(jQuery.fn.datetimepicker.defaults.format).to.be.equal('Y/m/d H:i'); 12 | }); 13 | }); 14 | describe('Create datetimepicker', function () { 15 | describe('Without parameters', function () { 16 | it('Should create plugin with default options', function (done) { 17 | var input = getInput(); 18 | $(input).datetimepicker(); 19 | var dtp = $(input).data('xdsoft_datetimepicker'); 20 | expect(dtp).to.be.not.equal(null); 21 | expect(dtp[0].tagName).to.be.equal('DIV'); 22 | expect(dtp[0].classList.contains('xdsoft_datetimepicker')).to.be.true; 23 | expect(dtp.is(':hidden')).to.be.true; 24 | $(input).trigger('mousedown') 25 | setTimeout(function () { 26 | expect(dtp.is(':hidden')).to.be.false; 27 | done(); 28 | }, 150) 29 | }); 30 | }); 31 | describe('In inline mode', function () { 32 | it('Should create picker and replace original input', function () { 33 | var input = getInput(); 34 | $(input).datetimepicker({ 35 | inline: true 36 | }); 37 | var dtp = $(input).data('xdsoft_datetimepicker'); 38 | expect(dtp.is(':hidden')).to.be.false; 39 | expect($(input).is(':hidden')).to.be.true; 40 | }); 41 | }); 42 | }); 43 | describe('Set locale', function () { 44 | describe('Change locale', function () { 45 | it('Should create different pickers fro all locales', function (done) { 46 | $.datetimepicker.setLocale('en'); 47 | var $input = $(getInput()); 48 | $input.datetimepicker({inline: true}); 49 | setTimeout(function () { 50 | var text = $input.data('xdsoft_datetimepicker').text(); 51 | $input.datetimepicker('destroy'); 52 | $.datetimepicker.setLocale('ru'); 53 | $input.datetimepicker({inline: true}); 54 | setTimeout(function () { 55 | expect($input.data('xdsoft_datetimepicker').text()).to.be.not.equal(text); 56 | done(); 57 | }, 100) 58 | }, 100) 59 | }); 60 | }); 61 | }); 62 | describe('Select day', function () { 63 | it('Should set selected date to input by format', function (done) { 64 | var input= $(getInput()).val('2011/04/15'); 65 | 66 | var picker = input.datetimepicker({ 67 | format: 'Y/m/d' 68 | }).trigger('mousedown').data(PICKER); 69 | 70 | setTimeout(function () { 71 | var start = picker.find('td[data-date="15"][data-month="3"][data-year="2011"]'); 72 | expect(start.length).to.be.equal(1); 73 | expect(start.hasClass('xdsoft_disabled')).to.be.false; 74 | expect(start.hasClass('xdsoft_current')).to.be.true; 75 | var select = picker.find('td[data-date="17"][data-month="3"][data-year="2011"]'); 76 | expect(start.length).to.be.equal(1); 77 | select.trigger('click'); 78 | expect(input.val()).to.be.equal('2011/04/17') 79 | done(); 80 | }, 100); 81 | }); 82 | }); 83 | }); -------------------------------------------------------------------------------- /tests/tests/options.js: -------------------------------------------------------------------------------- 1 | describe('Test options', function () { 2 | describe('dayOfWeekStart', function () { 3 | it('Should change default start of week', function (done) { 4 | $.datetimepicker.setLocale('en'); 5 | var input = $(getInput()); 6 | var picker = input.datetimepicker({inline: true}).trigger('mousedown').data('xdsoft_datetimepicker'); 7 | setTimeout(function () { 8 | var day = picker.find('th').eq(0).text(); 9 | var date = picker.find('td').eq(0).text(); 10 | input.datetimepicker('destroy'); 11 | 12 | var picker2 = $(getInput()).datetimepicker({ 13 | inline: true, 14 | dayOfWeekStart: 2 15 | }).trigger('mousedown').data(PICKER); 16 | 17 | setTimeout(function () { 18 | expect(picker2.find('th').eq(0).text()).to.be.not.equal(day); 19 | expect(picker2.find('td').eq(0).text()).to.be.not.equal(date); 20 | done(); 21 | }, 100); 22 | }, 100); 23 | }); 24 | }); 25 | describe('disabledDates and startDate', function () { 26 | it('Should disable some dates in picker and picker should be open on startDate', function (done) { 27 | var input= $(getInput()); 28 | var picker = input.datetimepicker({ 29 | disabledDates:['1986/01/08','1986/01/09','1986/01/10'], 30 | startDate: '1986/01/05' 31 | }).trigger('mousedown').data(PICKER); 32 | 33 | setTimeout(function () { 34 | var day = picker.find('td[data-date="8"][data-month="0"][data-year="1986"]'); 35 | expect(day.hasClass('xdsoft_disabled')).to.be.true; 36 | var start = picker.find('td[data-date="5"][data-month="0"][data-year="1986"]'); 37 | expect(start.length).to.be.equal(1); 38 | expect(start.hasClass('xdsoft_disabled')).to.be.false; 39 | done(); 40 | }, 100); 41 | }); 42 | }); 43 | describe('defaultDate', function () { 44 | it('Should open picker on some date', function (done) { 45 | var input= $(getInput()); 46 | var picker = input.datetimepicker({formatDate:'d.m.Y', defaultDate: '+03.01.1970'}).trigger('mousedown').data(PICKER); 47 | 48 | setTimeout(function () { 49 | var now = new Date(); 50 | now.setDate(now.getDate() + 2) 51 | var start = picker.find('td[data-date="' + now.getDate() + '"][data-month="' + now.getMonth() + '"][data-year="' + now.getFullYear() + '"]'); 52 | expect(start.length).to.be.equal(1); 53 | expect(start.hasClass('xdsoft_disabled')).to.be.false; 54 | expect(start.hasClass('xdsoft_current xdsoft_today')).to.be.true; 55 | done(); 56 | }, 100); 57 | }); 58 | }); 59 | describe('Value', function () { 60 | it('Should set value to plugin', function (done) { 61 | var input= $(getInput()); 62 | var picker = input.datetimepicker({value: '2011/04/15 05:03'}).trigger('mousedown').data(PICKER); 63 | 64 | setTimeout(function () { 65 | var start = picker.find('td[data-date="15"][data-month="3"][data-year="2011"]'); 66 | expect(start.length).to.be.equal(1); 67 | expect(start.hasClass('xdsoft_disabled')).to.be.false; 68 | done(); 69 | }, 100); 70 | }); 71 | }); 72 | describe('timepicker = false', function () { 73 | it('Should create only datepicker', function (done) { 74 | var input= $(getInput()); 75 | var picker = input.datetimepicker({ 76 | timepicker: false 77 | }).trigger('mousedown').data(PICKER); 78 | 79 | setTimeout(function () { 80 | var timepicker = picker.find('.xdsoft_timepicker'); 81 | expect(timepicker.length).to.be.equal(1); 82 | expect(timepicker.is(':hidden')).to.be.true; 83 | done(); 84 | }, 100); 85 | }); 86 | }); 87 | describe('datepicker = false', function () { 88 | it('Should create only timepicker', function (done) { 89 | var input= $(getInput()); 90 | var picker = input.datetimepicker({ 91 | datepicker: false 92 | }).trigger('mousedown').data(PICKER); 93 | 94 | setTimeout(function () { 95 | var datepicker = picker.find('.xdsoft_datepicker'); 96 | expect(datepicker.length).to.be.equal(1); 97 | expect(datepicker.is(':hidden')).to.be.true; 98 | done(); 99 | }, 100); 100 | }); 101 | }); 102 | }); -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 19 | 20 | 21 | 22 |

Homepage

23 |

DateTimePicker

24 |

25 |

DateTimePickers selected by class

26 | 27 | 28 |

Mask DateTimePicker

29 |

30 |

TimePicker

31 |

32 |

DatePicker

33 |

34 |

Inline DateTimePicker

35 | 36 |

37 |

Button Trigger

38 | 39 |

TimePicker allows time

40 |

41 |

Destroy DateTimePicker

42 | 43 |

Set options runtime DateTimePicker

44 | 45 |

If select day is Saturday, the minimum set 11:00, otherwise 8:00

46 |

onGenerate

47 | 48 |

disable all weekend

49 | 50 |

Default date and time

51 | 52 |

Show inline

53 | Show/Hide 54 | 57 |

Disable Specific Dates

58 |

Disable the dates 2 days from now.

59 | 60 |

Custom Date Styling

61 |

Make the background of the date 2 days from now bright red.

62 | 63 |

Dark theme

64 |

thank for this https://github.com/lampslave

65 | 66 |

Date time format and locale

67 |

68 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 225 | 226 | -------------------------------------------------------------------------------- /tests/input_in_container_fixed_to_top_of_viewport.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Input In Container Fixed To Top Of Viewport | datetimepicker Tests 5 | 6 | 7 | 8 | 9 | 10 | 44 | 45 | 46 | 47 |
48 |

Input In Container Fixed To Top Of Viewport

49 | 50 |
51 |
52 |
53 | 54 | 55 |
56 | 57 |
58 | 59 |
60 |
61 |
62 | 63 | 79 |
80 | 81 | 100 | 101 | 102 | 103 | 104 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /tests/input_in_container_fixed_to_bottom_of_viewport.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Input In Container Fixed To Bottom Of Viewport | datetimepicker Tests 5 | 6 | 7 | 8 | 9 | 10 | 44 | 45 | 46 | 47 |
48 |

Input In Container Fixed To Bottom Of Viewport

49 | 50 |
51 |
52 |
53 | 54 | 55 |
56 | 57 |
58 | 59 |
60 |
61 |
62 | 63 | 79 |
80 | 81 | 100 | 101 | 102 | 103 | 104 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /jquery.datetimepicker.css: -------------------------------------------------------------------------------- 1 | .xdsoft_datetimepicker { 2 | box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.506); 3 | background: #fff; 4 | border-bottom: 1px solid #bbb; 5 | border-left: 1px solid #ccc; 6 | border-right: 1px solid #ccc; 7 | border-top: 1px solid #ccc; 8 | color: #333; 9 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 10 | padding: 8px; 11 | padding-left: 0; 12 | padding-top: 2px; 13 | position: absolute; 14 | z-index: 9999; 15 | -moz-box-sizing: border-box; 16 | box-sizing: border-box; 17 | display: none; 18 | } 19 | .xdsoft_datetimepicker.xdsoft_rtl { 20 | padding: 8px 0 8px 8px; 21 | } 22 | 23 | .xdsoft_datetimepicker iframe { 24 | position: absolute; 25 | left: 0; 26 | top: 0; 27 | width: 75px; 28 | height: 210px; 29 | background: transparent; 30 | border: none; 31 | } 32 | 33 | /*For IE8 or lower*/ 34 | .xdsoft_datetimepicker button { 35 | border: none !important; 36 | } 37 | 38 | .xdsoft_noselect { 39 | -webkit-touch-callout: none; 40 | -webkit-user-select: none; 41 | -khtml-user-select: none; 42 | -moz-user-select: none; 43 | -ms-user-select: none; 44 | -o-user-select: none; 45 | user-select: none; 46 | } 47 | 48 | .xdsoft_noselect::selection { background: transparent } 49 | .xdsoft_noselect::-moz-selection { background: transparent } 50 | 51 | .xdsoft_datetimepicker.xdsoft_inline { 52 | display: inline-block; 53 | position: static; 54 | box-shadow: none; 55 | } 56 | 57 | .xdsoft_datetimepicker * { 58 | -moz-box-sizing: border-box; 59 | box-sizing: border-box; 60 | padding: 0; 61 | margin: 0; 62 | } 63 | 64 | .xdsoft_datetimepicker .xdsoft_datepicker, .xdsoft_datetimepicker .xdsoft_timepicker { 65 | display: none; 66 | } 67 | 68 | .xdsoft_datetimepicker .xdsoft_datepicker.active, .xdsoft_datetimepicker .xdsoft_timepicker.active { 69 | display: block; 70 | } 71 | 72 | .xdsoft_datetimepicker .xdsoft_datepicker { 73 | width: 224px; 74 | float: left; 75 | margin-left: 8px; 76 | } 77 | .xdsoft_datetimepicker.xdsoft_rtl .xdsoft_datepicker { 78 | float: right; 79 | margin-right: 8px; 80 | margin-left: 0; 81 | } 82 | 83 | .xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker { 84 | width: 256px; 85 | } 86 | 87 | .xdsoft_datetimepicker .xdsoft_timepicker { 88 | width: 58px; 89 | float: left; 90 | text-align: center; 91 | margin-left: 8px; 92 | margin-top: 0; 93 | } 94 | .xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker { 95 | float: right; 96 | margin-right: 8px; 97 | margin-left: 0; 98 | } 99 | 100 | .xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker { 101 | margin-top: 8px; 102 | margin-bottom: 3px 103 | } 104 | 105 | .xdsoft_datetimepicker .xdsoft_monthpicker { 106 | position: relative; 107 | text-align: center; 108 | } 109 | 110 | .xdsoft_datetimepicker .xdsoft_label i, 111 | .xdsoft_datetimepicker .xdsoft_prev, 112 | .xdsoft_datetimepicker .xdsoft_next, 113 | .xdsoft_datetimepicker .xdsoft_today_button { 114 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC); 115 | } 116 | 117 | .xdsoft_datetimepicker .xdsoft_label i { 118 | opacity: 0.5; 119 | background-position: -92px -19px; 120 | display: inline-block; 121 | width: 9px; 122 | height: 20px; 123 | vertical-align: middle; 124 | } 125 | 126 | .xdsoft_datetimepicker .xdsoft_prev { 127 | float: left; 128 | background-position: -20px 0; 129 | } 130 | .xdsoft_datetimepicker .xdsoft_today_button { 131 | float: left; 132 | background-position: -70px 0; 133 | margin-left: 5px; 134 | } 135 | 136 | .xdsoft_datetimepicker .xdsoft_next { 137 | float: right; 138 | background-position: 0 0; 139 | } 140 | 141 | .xdsoft_datetimepicker .xdsoft_next, 142 | .xdsoft_datetimepicker .xdsoft_prev , 143 | .xdsoft_datetimepicker .xdsoft_today_button { 144 | background-color: transparent; 145 | background-repeat: no-repeat; 146 | border: 0 none; 147 | cursor: pointer; 148 | display: block; 149 | height: 30px; 150 | opacity: 0.5; 151 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; 152 | outline: medium none; 153 | overflow: hidden; 154 | padding: 0; 155 | position: relative; 156 | text-indent: 100%; 157 | white-space: nowrap; 158 | width: 20px; 159 | min-width: 0; 160 | } 161 | 162 | .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev, 163 | .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next { 164 | float: none; 165 | background-position: -40px -15px; 166 | height: 15px; 167 | width: 30px; 168 | display: block; 169 | margin-left: 14px; 170 | margin-top: 7px; 171 | } 172 | .xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_prev, 173 | .xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_next { 174 | float: none; 175 | margin-left: 0; 176 | margin-right: 14px; 177 | } 178 | 179 | .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev { 180 | background-position: -40px 0; 181 | margin-bottom: 7px; 182 | margin-top: 0; 183 | } 184 | 185 | .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box { 186 | height: 151px; 187 | overflow: hidden; 188 | border-bottom: 1px solid #ddd; 189 | } 190 | 191 | .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div { 192 | background: #f5f5f5; 193 | border-top: 1px solid #ddd; 194 | color: #666; 195 | font-size: 12px; 196 | text-align: center; 197 | border-collapse: collapse; 198 | cursor: pointer; 199 | border-bottom-width: 0; 200 | height: 25px; 201 | line-height: 25px; 202 | } 203 | 204 | .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div > div:first-child { 205 | border-top-width: 0; 206 | } 207 | 208 | .xdsoft_datetimepicker .xdsoft_today_button:hover, 209 | .xdsoft_datetimepicker .xdsoft_next:hover, 210 | .xdsoft_datetimepicker .xdsoft_prev:hover { 211 | opacity: 1; 212 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; 213 | } 214 | 215 | .xdsoft_datetimepicker .xdsoft_label { 216 | display: inline; 217 | position: relative; 218 | z-index: 9999; 219 | margin: 0; 220 | padding: 5px 3px; 221 | font-size: 14px; 222 | line-height: 20px; 223 | font-weight: bold; 224 | background-color: #fff; 225 | float: left; 226 | width: 182px; 227 | text-align: center; 228 | cursor: pointer; 229 | } 230 | 231 | .xdsoft_datetimepicker .xdsoft_label:hover>span { 232 | text-decoration: underline; 233 | } 234 | 235 | .xdsoft_datetimepicker .xdsoft_label:hover i { 236 | opacity: 1.0; 237 | } 238 | 239 | .xdsoft_datetimepicker .xdsoft_label > .xdsoft_select { 240 | border: 1px solid #ccc; 241 | position: absolute; 242 | right: 0; 243 | top: 30px; 244 | z-index: 101; 245 | display: none; 246 | background: #fff; 247 | max-height: 160px; 248 | overflow-y: hidden; 249 | } 250 | 251 | .xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect{ right: -7px } 252 | .xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect{ right: 2px } 253 | .xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover { 254 | color: #fff; 255 | background: #ff8000; 256 | } 257 | 258 | .xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option { 259 | padding: 2px 10px 2px 5px; 260 | text-decoration: none !important; 261 | } 262 | 263 | .xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current { 264 | background: #33aaff; 265 | box-shadow: #178fe5 0 1px 3px 0 inset; 266 | color: #fff; 267 | font-weight: 700; 268 | } 269 | 270 | .xdsoft_datetimepicker .xdsoft_month { 271 | width: 100px; 272 | text-align: right; 273 | } 274 | 275 | .xdsoft_datetimepicker .xdsoft_calendar { 276 | clear: both; 277 | } 278 | 279 | .xdsoft_datetimepicker .xdsoft_year{ 280 | width: 48px; 281 | margin-left: 5px; 282 | } 283 | 284 | .xdsoft_datetimepicker .xdsoft_calendar table { 285 | border-collapse: collapse; 286 | width: 100%; 287 | 288 | } 289 | 290 | .xdsoft_datetimepicker .xdsoft_calendar td > div { 291 | padding-right: 5px; 292 | } 293 | 294 | .xdsoft_datetimepicker .xdsoft_calendar th { 295 | height: 25px; 296 | } 297 | 298 | .xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th { 299 | width: 14.2857142%; 300 | background: #f5f5f5; 301 | border: 1px solid #ddd; 302 | color: #666; 303 | font-size: 12px; 304 | text-align: right; 305 | vertical-align: middle; 306 | padding: 0; 307 | border-collapse: collapse; 308 | cursor: pointer; 309 | height: 25px; 310 | } 311 | .xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th { 312 | width: 12.5%; 313 | } 314 | 315 | .xdsoft_datetimepicker .xdsoft_calendar th { 316 | background: #f1f1f1; 317 | } 318 | 319 | .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today { 320 | color: #33aaff; 321 | } 322 | 323 | .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_default { 324 | background: #ffe9d2; 325 | box-shadow: #ffb871 0 1px 4px 0 inset; 326 | color: #000; 327 | } 328 | .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_mint { 329 | background: #c1ffc9; 330 | box-shadow: #00dd1c 0 1px 4px 0 inset; 331 | color: #000; 332 | } 333 | 334 | .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default, 335 | .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current, 336 | .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current { 337 | background: #33aaff; 338 | box-shadow: #178fe5 0 1px 3px 0 inset; 339 | color: #fff; 340 | font-weight: 700; 341 | } 342 | 343 | .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month, 344 | .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled, 345 | .xdsoft_datetimepicker .xdsoft_time_box >div >div.xdsoft_disabled { 346 | opacity: 0.5; 347 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; 348 | cursor: default; 349 | } 350 | 351 | .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled { 352 | opacity: 0.2; 353 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; 354 | } 355 | 356 | .xdsoft_datetimepicker .xdsoft_calendar td:hover, 357 | .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div:hover { 358 | color: #fff !important; 359 | background: #ff8000 !important; 360 | box-shadow: none !important; 361 | } 362 | 363 | .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover, 364 | .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current.xdsoft_disabled:hover { 365 | background: #33aaff !important; 366 | box-shadow: #178fe5 0 1px 3px 0 inset !important; 367 | color: #fff !important; 368 | } 369 | 370 | .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover, 371 | .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_disabled:hover { 372 | color: inherit !important; 373 | background: inherit !important; 374 | box-shadow: inherit !important; 375 | } 376 | 377 | .xdsoft_datetimepicker .xdsoft_calendar th { 378 | font-weight: 700; 379 | text-align: center; 380 | color: #999; 381 | cursor: default; 382 | } 383 | 384 | .xdsoft_datetimepicker .xdsoft_copyright { 385 | color: #ccc !important; 386 | font-size: 10px; 387 | clear: both; 388 | float: none; 389 | margin-left: 8px; 390 | } 391 | 392 | .xdsoft_datetimepicker .xdsoft_copyright a { color: #eee !important } 393 | .xdsoft_datetimepicker .xdsoft_copyright a:hover { color: #aaa !important } 394 | 395 | .xdsoft_time_box { 396 | position: relative; 397 | border: 1px solid #ccc; 398 | } 399 | .xdsoft_scrollbar >.xdsoft_scroller { 400 | background: #ccc !important; 401 | height: 20px; 402 | border-radius: 3px; 403 | } 404 | .xdsoft_scrollbar { 405 | position: absolute; 406 | width: 7px; 407 | right: 0; 408 | top: 0; 409 | bottom: 0; 410 | cursor: pointer; 411 | } 412 | .xdsoft_datetimepicker.xdsoft_rtl .xdsoft_scrollbar { 413 | left: 0; 414 | right: auto; 415 | } 416 | .xdsoft_scroller_box { 417 | position: relative; 418 | } 419 | 420 | .xdsoft_datetimepicker.xdsoft_dark { 421 | box-shadow: 0 5px 15px -5px rgba(255, 255, 255, 0.506); 422 | background: #000; 423 | border-bottom: 1px solid #444; 424 | border-left: 1px solid #333; 425 | border-right: 1px solid #333; 426 | border-top: 1px solid #333; 427 | color: #ccc; 428 | } 429 | 430 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box { 431 | border-bottom: 1px solid #222; 432 | } 433 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div { 434 | background: #0a0a0a; 435 | border-top: 1px solid #222; 436 | color: #999; 437 | } 438 | 439 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_label { 440 | background-color: #000; 441 | } 442 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select { 443 | border: 1px solid #333; 444 | background: #000; 445 | } 446 | 447 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover { 448 | color: #000; 449 | background: #007fff; 450 | } 451 | 452 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current { 453 | background: #cc5500; 454 | box-shadow: #b03e00 0 1px 3px 0 inset; 455 | color: #000; 456 | } 457 | 458 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i, 459 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev, 460 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_next, 461 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button { 462 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==); 463 | } 464 | 465 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td, 466 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th { 467 | background: #0a0a0a; 468 | border: 1px solid #222; 469 | color: #999; 470 | } 471 | 472 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th { 473 | background: #0e0e0e; 474 | } 475 | 476 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today { 477 | color: #cc5500; 478 | } 479 | 480 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_default { 481 | background: #ffe9d2; 482 | box-shadow: #ffb871 0 1px 4px 0 inset; 483 | color:#000; 484 | } 485 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_mint { 486 | background: #c1ffc9; 487 | box-shadow: #00dd1c 0 1px 4px 0 inset; 488 | color:#000; 489 | } 490 | 491 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default, 492 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current, 493 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current { 494 | background: #cc5500; 495 | box-shadow: #b03e00 0 1px 3px 0 inset; 496 | color: #000; 497 | } 498 | 499 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover, 500 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div:hover { 501 | color: #000 !important; 502 | background: #007fff !important; 503 | } 504 | 505 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th { 506 | color: #666; 507 | } 508 | 509 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright { color: #333 !important } 510 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a { color: #111 !important } 511 | .xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover { color: #555 !important } 512 | 513 | .xdsoft_dark .xdsoft_time_box { 514 | border: 1px solid #333; 515 | } 516 | 517 | .xdsoft_dark .xdsoft_scrollbar >.xdsoft_scroller { 518 | background: #333 !important; 519 | } 520 | .xdsoft_datetimepicker .xdsoft_save_selected { 521 | display: block; 522 | border: 1px solid #dddddd !important; 523 | margin-top: 5px; 524 | width: 100%; 525 | color: #454551; 526 | font-size: 13px; 527 | } 528 | .xdsoft_datetimepicker .blue-gradient-button { 529 | font-family: "museo-sans", "Book Antiqua", sans-serif; 530 | font-size: 12px; 531 | font-weight: 300; 532 | color: #82878c; 533 | height: 28px; 534 | position: relative; 535 | padding: 4px 17px 4px 33px; 536 | border: 1px solid #d7d8da; 537 | background: -moz-linear-gradient(top, #fff 0%, #f4f8fa 73%); 538 | /* FF3.6+ */ 539 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(73%, #f4f8fa)); 540 | /* Chrome,Safari4+ */ 541 | background: -webkit-linear-gradient(top, #fff 0%, #f4f8fa 73%); 542 | /* Chrome10+,Safari5.1+ */ 543 | background: -o-linear-gradient(top, #fff 0%, #f4f8fa 73%); 544 | /* Opera 11.10+ */ 545 | background: -ms-linear-gradient(top, #fff 0%, #f4f8fa 73%); 546 | /* IE10+ */ 547 | background: linear-gradient(to bottom, #fff 0%, #f4f8fa 73%); 548 | /* W3C */ 549 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff', endColorstr='#f4f8fa',GradientType=0 ); 550 | /* IE6-9 */ 551 | } 552 | .xdsoft_datetimepicker .blue-gradient-button:hover, .xdsoft_datetimepicker .blue-gradient-button:focus, .xdsoft_datetimepicker .blue-gradient-button:hover span, .xdsoft_datetimepicker .blue-gradient-button:focus span { 553 | color: #454551; 554 | background: -moz-linear-gradient(top, #f4f8fa 0%, #FFF 73%); 555 | /* FF3.6+ */ 556 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f4f8fa), color-stop(73%, #FFF)); 557 | /* Chrome,Safari4+ */ 558 | background: -webkit-linear-gradient(top, #f4f8fa 0%, #FFF 73%); 559 | /* Chrome10+,Safari5.1+ */ 560 | background: -o-linear-gradient(top, #f4f8fa 0%, #FFF 73%); 561 | /* Opera 11.10+ */ 562 | background: -ms-linear-gradient(top, #f4f8fa 0%, #FFF 73%); 563 | /* IE10+ */ 564 | background: linear-gradient(to bottom, #f4f8fa 0%, #FFF 73%); 565 | /* W3C */ 566 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f8fa', endColorstr='#FFF',GradientType=0 ); 567 | /* IE6-9 */ 568 | } 569 | -------------------------------------------------------------------------------- /doc.tpl: -------------------------------------------------------------------------------- 1 |

DateTimepicker

2 |

3 |

Use mask DateTimepicker

4 |

5 |

TimePicker

6 |

7 |

DatePicker

8 |

9 |

Inline DateTimePicker

10 |

11 |

Dark theme

12 |

13 | 39 | [include scripts/pp/reklama1.php] 40 |

How do I use it?

41 |

First include to page css and js files

42 |
<!-- this should go after your </body> -->
  43 | <link rel="stylesheet" type="text/css" href="jquery.datetimepicker.css"/ >
  44 | <script src="jquery.js"></script>
  45 | <script src="build/jquery.datetimepicker.full.min.js"></script>
46 |

Examples

47 |
48 |

Simple init DateTimePicker Example #

49 |

HTML

50 |
<input id="datetimepicker" type="text" >
51 |

javaScript

52 |
jQuery('#datetimepicker').datetimepicker();
53 |

Result

54 |

55 | 58 |
59 |

i18n DatePicker Example #

60 |

All supported languages here

61 |

javaScript

62 |
jQuery.datetimepicker.setLocale('de');
  63 | 
  64 | jQuery('#datetimepicker1').datetimepicker({
  65 |  i18n:{
  66 |   de:{
  67 |    months:[
  68 |     'Januar','Februar','März','April',
  69 |     'Mai','Juni','Juli','August',
  70 |     'September','Oktober','November','Dezember',
  71 |    ],
  72 |    dayOfWeek:[
  73 |     "So.", "Mo", "Di", "Mi", 
  74 |     "Do", "Fr", "Sa.",
  75 |    ]
  76 |   }
  77 |  },
  78 |  timepicker:false,
  79 |  format:'d.m.Y'
  80 | });
81 |

Result

82 |

83 | 98 |
99 |

Only TimePicker Example #

100 |

javaScript

101 |
jQuery('#datetimepicker2').datetimepicker({
 102 |   datepicker:false,
 103 |   format:'H:i'
 104 | });
105 |

Result

106 |

107 | 115 |

Date Time Picker start date #

116 |

javaScript

117 |
jQuery('#datetimepicker_start_time').datetimepicker({
 118 |   startDate:'+1971/05/01'//or 1986/12/08
 119 | });
120 |

Result

121 |

122 | 129 |

Date Time Picker from unixtime #

130 |

javaScript

131 |
jQuery('#datetimepicker_unixtime').datetimepicker({
 132 |   format:'unixtime'
 133 | });
134 |

Result

135 |

136 | 143 |
144 |

Inline DateTimePicker Example #

145 |

javaScript

146 |
jQuery('#datetimepicker3').datetimepicker({
 147 |   format:'d.m.Y H:i',
 148 |   inline:true,
 149 |   lang:'ru'
 150 | });
151 |

Result

152 |

153 | 162 |
163 |

Icon trigger #

164 |

Click the icon next to the input field to show the datetimepicker

165 |

javaScript

166 |
jQuery('#datetimepicker4').datetimepicker({
 167 |   format:'d.m.Y H:i',
 168 |   lang:'ru'
 169 | });
170 |

and handler onclick event

171 |
jQuery('#image_button').click(function(){
 172 |   jQuery('#datetimepicker4').datetimepicker('show'); //support hide,show and destroy command
 173 | });
174 |

Result

175 |
176 |
177 |
178 |
179 |
180 | 181 | 192 |
193 |

allowTimes options TimePicker Example #

194 |

javaScript

195 |
jQuery('#datetimepicker5').datetimepicker({
 196 |  datepicker:false,
 197 |  allowTimes:[
 198 |   '12:00', '13:00', '15:00', 
 199 |   '17:00', '17:05', '17:20', '19:00', '20:00'
 200 |  ]
 201 | });
202 |

Result

203 |

204 | 212 |
213 |

handler onChangeDateTime Example #

214 |

javaScript

215 |
jQuery('#datetimepicker6').datetimepicker({
 216 |   timepicker:false,
 217 |   onChangeDateTime:function(dp,$input){
 218 |     alert($input.val())
 219 |   }
 220 | });
221 |

Result

222 |

223 | 233 |
234 |

minDate and maxDate Example #

235 |

javaScript

236 |
jQuery('#datetimepicker7').datetimepicker({
 237 |  timepicker:false,
 238 |  formatDate:'Y/m/d',
 239 |  minDate:'-1970/01/02',//yesterday is minimum date(for today use 0 or -1970/01/01)
 240 |  maxDate:'+1970/01/02'//tomorrow is maximum date calendar
 241 | });
242 |

Result

243 |

244 | 254 |
255 |

Use mask input Example #

256 |

javaScript

257 |
jQuery('#datetimepicker_mask').datetimepicker({
 258 |  timepicker:false,
 259 |  mask:true, // '9999/19/39 29:59' - digit is the maximum possible for a cell
 260 | });
261 |

Result

262 |

263 | 272 |
273 |

Set options runtime DateTimePicker #

274 |

If select day is Saturday, the minimum set 11:00, otherwise 8:00

275 |

javaScript

276 |
var logic = function( currentDateTime ){
 277 |   // 'this' is jquery object datetimepicker
 278 |   if( currentDateTime.getDay()==6 ){
 279 |     this.setOptions({
 280 |       minTime:'11:00'
 281 |     });
 282 |   }else
 283 |     this.setOptions({
 284 |       minTime:'8:00'
 285 |     });
 286 | };
 287 | jQuery('#datetimepicker_rantime').datetimepicker({
 288 |   onChangeDateTime:logic,
 289 |   onShow:logic
 290 | });
291 |

Result

292 |

293 | 311 |
312 |

After generating a calendar called the event onGenerate #

313 |

Invert settings minDate and maxDate

314 |

javaScript

315 |
jQuery('#datetimepicker8').datetimepicker({
 316 |   onGenerate:function( ct ){
 317 |     jQuery(this).find('.xdsoft_date')
 318 |       .toggleClass('xdsoft_disabled');
 319 |   },
 320 |   minDate:'-1970/01/2',
 321 |   maxDate:'+1970/01/2',
 322 |   timepicker:false
 323 | });
324 |

Result

325 |

326 | 339 |
340 |

disable all weekend #

341 |

javaScript

342 |
jQuery('#datetimepicker9').datetimepicker({
 343 |   onGenerate:function( ct ){
 344 |     jQuery(this).find('.xdsoft_date.xdsoft_weekend')
 345 |       .addClass('xdsoft_disabled');
 346 |   },
 347 |   weekends:['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014'],
 348 |   timepicker:false
 349 | });
350 |

Result

351 |

352 | 364 |
365 |

Use another date parser/formatter#

366 |

By default, datetimepicker uses php-date-formatter for parsing and formatting the date and time displayed. You can replace the library by setting a custom DateFormatter. Simply supply an object that implements the parseDate and formatDate methods. This example uses the popular MomentJS library:

367 |
$.datetimepicker.setDateFormatter({
 368 |     parseDate: function (date, format) {
 369 |         var d = moment(date, format);
 370 |         return d.isValid() ? d.toDate() : false;
 371 |     },
 372 |     
 373 |     formatDate: function (date, format) {
 374 |         return moment(date).format(format);
 375 |     },
 376 | 
 377 |     //Optional if using mask input
 378 |     formatMask: function(format){
 379 |         return format
 380 |             .replace(/Y{4}/g, '9999')
 381 |             .replace(/Y{2}/g, '99')
 382 |             .replace(/M{2}/g, '19')
 383 |             .replace(/D{2}/g, '39')
 384 |             .replace(/H{2}/g, '29')
 385 |             .replace(/m{2}/g, '59')
 386 |             .replace(/s{2}/g, '59');
 387 |     }
 388 | });
 389 | 
390 |

After this, you can init datetimepicker with moment.js format

391 |
jQuery('#datetimepicker').datetimepicker({
 392 |   format:'DD.MM.YYYY h:mm a',
 393 |   formatTime:'h:mm a',
 394 |   formatDate:'DD.MM.YYYY'
 395 | });
396 |

Because of its popularity, moment.js has a pre-defined configuration that can be enabled with:

397 |
$.datetimepicker.setDateFormatter('moment');
398 |
399 |

Range between date#

400 |

javaScript

401 |
jQuery(function(){
 402 |  jQuery('#date_timepicker_start').datetimepicker({
 403 |   format:'Y/m/d',
 404 |   onShow:function( ct ){
 405 |    this.setOptions({
 406 |     maxDate:jQuery('#date_timepicker_end').val()?jQuery('#date_timepicker_end').val():false
 407 |    })
 408 |   },
 409 |   timepicker:false
 410 |  });
 411 |  jQuery('#date_timepicker_end').datetimepicker({
 412 |   format:'Y/m/d',
 413 |   onShow:function( ct ){
 414 |    this.setOptions({
 415 |     minDate:jQuery('#date_timepicker_start').val()?jQuery('#date_timepicker_start').val():false
 416 |    })
 417 |   },
 418 |   timepicker:false
 419 |  });
 420 | });
421 |

Result

422 |

Start End

423 | 445 | [include scripts/pp/reklama2.php] 446 | {module 147} 447 |

Full options list

448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 466 | 467 | 468 | 469 | 470 | 471 | 475 | 476 | 477 | 478 | 479 | 536 | 539 | 540 | 541 | 542 | 543 | 544 | 548 | 549 | 550 | 551 | 552 | 553 | 556 | 557 | 558 | 559 | 560 | 561 | 564 | 565 | 566 | 567 | 568 | 569 | 572 | 573 | 574 | 575 | 576 | 577 | 580 | 581 | 582 | 583 | 584 | 585 | 588 | 589 | 590 | 591 | 592 | 593 | 596 | 597 | 598 | 599 | 600 | 601 | 604 | 605 | 606 | 607 | 608 | 609 | 612 | 613 | 614 | 615 | 616 | 617 | 620 | 621 | 622 | 623 | 624 | 625 | 628 | 629 | 630 | 631 | 632 | 633 | 639 | 640 | 641 | 642 | 643 | 644 | 650 | 651 | 652 | 653 | 654 | 655 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 695 | 696 | 697 | 698 | 699 | 700 | 705 | 706 | 707 | 708 | 709 | 710 | 718 | 719 | 720 | 721 | 722 | 723 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 881 | 882 | 883 | 884 | 885 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 904 | 905 | 906 | 907 | 908 | 909 | 912 | 913 | 914 | 915 | 916 | 917 | 920 | 921 | 922 | 923 | 924 | 925 | 928 | 929 | 930 | 931 | 932 | 933 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 |
Name defaultDescrEx.
lazyInitfalseInitializing plugin occurs only when the user interacts. Greatly accelerates plugin work with a large number of fields
parentID'body'Attach datetimepicker to this element, which can be either a selector or a DOM/JQuery element 464 |
{parentID:'#parent'}
465 |
valuenullCurrent value datetimepicker. If it is set, ignored input.value 472 |
{value:'12.03.2013',
 473 |  format:'d.m.Y'}
474 |
langenLanguage i18n
480 | 481 | ar - Arabic 482 |
az - Azerbaijanian (Azeri) 483 |
bg - Bulgarian 484 |
bs - Bosanski 485 |
ca - Català 486 |
ch - Simplified Chinese 487 |
cs - Čeština 488 |
da - Dansk 489 |
de - German 490 |
el - Ελληνικά 491 |
en - English 492 |
en-GB - English (British) 493 |
es - Spanish 494 |
et - "Eesti" 495 |
eu - Euskara 496 |
fa - Persian 497 |
fi - Finnish (Suomi) 498 |
fr - French 499 |
gl - Galego 500 |
he - Hebrew (עברית) 501 |
hr - Hrvatski 502 |
hu - Hungarian 503 |
id - Indonesian 504 |
it - Italian 505 |
ja - Japanese 506 |
ko - Korean (한국어) 507 |
kr - Korean 508 |
lt - Lithuanian (lietuvių) 509 |
lv - Latvian (Latviešu) 510 |
mk - Macedonian (Македонски) 511 |
mn - Mongolian (Монгол) 512 |
nl - Dutch 513 |
no - Norwegian 514 |
pl - Polish 515 |
pt - Portuguese 516 |
pt-BR - Português(Brasil) 517 |
ro - Romanian 518 |
ru - Russian 519 |
se - Swedish 520 |
sk - Slovenčina 521 |
sl - Slovenščina 522 |
sq - Albanian (Shqip) 523 |
sr - Serbian Cyrillic (Српски) 524 |
sr-YU - Serbian (Srpski) 525 |
sv - Svenska 526 |
th - Thai 527 |
tr - Turkish 528 |
uk - Ukrainian 529 |
vi - Vietnamese 530 |
zh - Simplified Chinese (简体中文) 531 |
zh-TW - Traditional Chinese (繁體中文) 532 |
533 | 534 | 535 |
537 |
$.datetimepicker.setLocale('ru');
538 |
formatY/m/d H:iFormat datetime. More Also there is a special type of «unixtime» 545 |
{format:'H'}
 546 | {format:'Y'}{format:'unixtime'}
547 |
formatDateY/m/dFormat date for minDate and maxDate 554 |
{formatDate:'d.m.Y'}
555 |
formatTimeH:i Similarly, formatDate . But for minTime and maxTime 562 |
{formatTime:'H'}
563 |
step60Step time 570 |
{step:5}
571 |
closeOnDateSelect0 578 |
{closeOnDateSelect:true}
579 |
closeOnWithoutClicktrue 586 |
{ closeOnWithoutClick :false}
587 |
validateOnBlurtrueVerify datetime value from input, when losing focus. If value is not valid datetime, then to value inserts the current datetime 594 |
{ validateOnBlur:false}
595 |
timepickertrue 602 |
{timepicker:false}
603 |
datepickertrue 610 |
{datepicker:false}
611 |
weeksfalseShow week number 618 |
{weeks:true}
619 |
theme'default'Setting a color scheme. Now only supported default and dark theme 626 |
{theme:'dark'}
627 |
minDatefalse 634 |
{minDate:0} // today
 635 | {minDate:'2013/12/03'}
 636 | {minDate:'-1970/01/02'} // yesterday
 637 | {minDate:'05.12.2013',formatDate:'d.m.Y'}
638 |
maxDatefalse 645 |
{maxDate:0}
 646 | {maxDate:'2013/12/03'}
 647 | {maxDate:'+1970/01/02'} // tomorrow
 648 | {maxDate:'05.12.2013',formatDate:'d.m.Y'}
649 |
startDatefalsecalendar set date use starDate 656 |
{startDate:'1987/12/03'}
 657 | {startDate:new Date()}
 658 | {startDate:'+1970/01/02'} // tomorrow
 659 | {startDate:'08.12.1986',formatDate:'d.m.Y'}
660 |
defaultDatefalseif input value is empty, calendar set date use defaultDate 668 |
{defaultDate:'1987/12/03'}
 669 | {defaultDate:new Date()}
 670 | {defaultDate:'+1970/01/02'} // tomorrow
 671 | {defaultDate:'08.12.1986',formatDate:'d.m.Y'}
672 |
defaultTimefalseif input value is empty, timepicker set time use defaultTime 680 |
{defaultTime:'05:00'}
 681 | {defaultTime:'33-12',formatTime:'i-H'}
682 |
minTimefalse 690 |
{minTime:0,}// now
 691 | {minTime:new Date()}
 692 | {minTime:'12:00'}
 693 | {minTime:'13:45:34',formatTime:'H:i:s'}
694 |
maxTimefalse 701 |
{maxTime:0,}
 702 | {maxTime:'12:00'}
 703 | {maxTime:'13:45:34',formatTime:'H:i:s'}
704 |
allowTimes[] 711 |
{allowTimes:[
 712 |   '09:00',
 713 |   '11:00',
 714 |   '12:00',
 715 |   '21:00'
 716 | ]}
717 |
maskfalseUse mask for input. true - automatically generates a mask on the field 'format', Digit from 0 to 9, set the highest possible digit for the value. For example: the first digit of hours can not be greater than 2, and the first digit of the minutes can not be greater than 5 724 |
{mask:'9999/19/39',format:'Y/m/d'}
 725 | {mask:true,format:'Y/m/d'} // automatically generate a mask 9999/99/99
 726 | {mask:'29:59',format:'H:i'} //
 727 | {mask:true,format:'H:i'} //automatically generate a mask 99:99
728 |
openedfalse
yearOffset0Year offset for Buddhist era
inlinefalse
todayButtontrueShow button "Go To Today"
defaultSelecttrueHighlight the current date even if the input is empty
allowBlankfalseAllow field to be empty even with the option validateOnBlur in true
timepickerScrollbartrue
onSelectDatefunction(){} 777 |
onSelectDate:function(ct,$i){
 778 |   alert(ct.dateFormat('d/m/Y'))
 779 | }
780 |
onSelectTimefunction(current_time,$input){}
onChangeMonthfunction(current_time,$input){}
onChangeYearfunction(current_time,$input){}
onChangeDateTimefunction(current_time,$input){}
onShowfunction(current_time,$input){}
onClosefunction(current_time,$input){}
onSelectDate:function(ct,$i){
 817 |   $i.datetimepicker('destroy');
 818 | }
onGeneratefunction(current_time,$input){}trigger after construct calendar and timepicker
withoutCopyrighttrue
inverseButtonfalse
scrollMonthtrue
scrollTimetrue
scrollInputtrue
hours12false
yearStart1950Start value for fast Year selector
yearEnd2050End value for fast Year selector
roundTimeroundRound time in timepicker, possible values: round, ceil, floor 879 |
{roundTime:'floor'}
880 |
dayOfWeekStart0 886 |

Star week DatePicker. Default Sunday - 0.

887 |

Monday - 1 ...

888 |
className
weekends[] 902 |
['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014']
903 |
disabledDates[]

Disbale all dates in list

910 |
{disabledDates: ['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014'], formatDate:'d.m.Y'}
911 |
allowDates[]

Allow all dates in list

918 |
{allowDates: ['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014'], formatDate:'d.m.Y'}
919 |
allowDateRe[]

Use Regex to check dates

926 |
{format:'Y-m-d',allowDateRe:'\d{4}-(03-31|06-30|09-30|12-31)' }
927 |
disabledWeekDays[]

Disable days listed by index

934 |
[0, 3, 4]
935 |
id
style
ownerDocumentdocumentThe ownerDocument object for the datetimepicker to properly attach events and calc position (iframe support).
contentWindowwindowThe contentWindow object that contains the datetimepicker to properly attach events (iframe support).
963 |
964 |

Methods

965 |

show

966 |

Show Datetimepicker

967 |
$('#input').datetimepicker();
 968 | $('button.somebutton').on('click', function () {
 969 |     $('#input').datetimepicker('show');
 970 | });
971 |

hide

972 |

Hide Datetimepicker

973 |
$('#input').datetimepicker();
 974 | $(window).on('resize', function () {
 975 |     $('#input').datetimepicker('hide');
 976 | });
977 |

toggle

978 |

Sgow/Hide Datetimepicker

979 |
$('#input').datetimepicker();
 980 | $('button.trigger').on('click', function () {
 981 |     $('#input').datetimepicker('toggle');
 982 | });
983 |

destroy

984 |

Destroy datetimepicker

985 |
$('#input').datetimepicker();
 986 | $('#input').datetimepicker('destroy');
 987 | 
988 |

reset

989 |

Reset datetimepicker's value

990 |
$('#input').datetimepicker();
 991 | $('#input').val('12/01/2006');
 992 | $('#input')
 993 |     .datetimepicker('show')
 994 |     .datetimepicker('reset')
 995 | 
996 |

validate

997 |

Validate datetimepicker's value

998 |
$('#input').datetimepicker();
 999 | $('#input').datetimepicker(validate)
1000 | 
1001 |

setOptions

1002 |

Set datetimepicker's options

1003 |
$('#input').datetimepicker({format: 'd.m.Y'});
1004 | $('#input').datetimepicker('setOptions', {format: 'd/m/Y'});
1005 | //or
1006 | $('#input').datetimepicker({format: 'd/m/Y'});
1007 | 
1008 |

getValue

1009 |

Get current datetimepicker's value (Date object)

1010 |
$('#input').datetimepicker();
1011 | $('button.somebutton').on('click', function () {
1012 |     var d = $('#input').datetimepicker('getValue');
1013 |     console.log(d.getFullYear());
1014 | });
1015 | 
1016 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@colors/colors@1.5.0": 6 | version "1.5.0" 7 | resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" 8 | integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== 9 | 10 | "@socket.io/component-emitter@~3.1.0": 11 | version "3.1.0" 12 | resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" 13 | integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== 14 | 15 | "@types/cookie@^0.4.1": 16 | version "0.4.1" 17 | resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" 18 | integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== 19 | 20 | "@types/cors@^2.8.12": 21 | version "2.8.13" 22 | resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.13.tgz#b8ade22ba455a1b8cb3b5d3f35910fd204f84f94" 23 | integrity sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA== 24 | dependencies: 25 | "@types/node" "*" 26 | 27 | "@types/node@*", "@types/node@>=10.0.0": 28 | version "18.14.2" 29 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.2.tgz#c076ed1d7b6095078ad3cf21dfeea951842778b1" 30 | integrity sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA== 31 | 32 | accepts@~1.3.4: 33 | version "1.3.7" 34 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 35 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 36 | dependencies: 37 | mime-types "~2.1.24" 38 | negotiator "0.6.2" 39 | 40 | ansi-colors@4.1.1: 41 | version "4.1.1" 42 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 43 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 44 | 45 | ansi-regex@^2.0.0: 46 | version "2.1.1" 47 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 48 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 49 | 50 | ansi-regex@^5.0.1: 51 | version "5.0.1" 52 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 53 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 54 | 55 | ansi-styles@^2.2.1: 56 | version "2.2.1" 57 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 58 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= 59 | 60 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 61 | version "4.3.0" 62 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 63 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 64 | dependencies: 65 | color-convert "^2.0.1" 66 | 67 | anymatch@~3.1.2: 68 | version "3.1.3" 69 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 70 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 71 | dependencies: 72 | normalize-path "^3.0.0" 73 | picomatch "^2.0.4" 74 | 75 | argparse@^2.0.1: 76 | version "2.0.1" 77 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 78 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 79 | 80 | assertion-error@^1.1.0: 81 | version "1.1.0" 82 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 83 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 84 | 85 | balanced-match@^1.0.0: 86 | version "1.0.0" 87 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 88 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 89 | 90 | base64id@2.0.0, base64id@~2.0.0: 91 | version "2.0.0" 92 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" 93 | integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== 94 | 95 | binary-extensions@^2.0.0: 96 | version "2.2.0" 97 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 98 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 99 | 100 | body-parser@^1.19.0: 101 | version "1.20.2" 102 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" 103 | integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== 104 | dependencies: 105 | bytes "3.1.2" 106 | content-type "~1.0.5" 107 | debug "2.6.9" 108 | depd "2.0.0" 109 | destroy "1.2.0" 110 | http-errors "2.0.0" 111 | iconv-lite "0.4.24" 112 | on-finished "2.4.1" 113 | qs "6.11.0" 114 | raw-body "2.5.2" 115 | type-is "~1.6.18" 116 | unpipe "1.0.0" 117 | 118 | brace-expansion@^1.1.7: 119 | version "1.1.11" 120 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 121 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 122 | dependencies: 123 | balanced-match "^1.0.0" 124 | concat-map "0.0.1" 125 | 126 | brace-expansion@^2.0.1: 127 | version "2.0.1" 128 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 129 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 130 | dependencies: 131 | balanced-match "^1.0.0" 132 | 133 | braces@^3.0.2, braces@~3.0.2: 134 | version "3.0.2" 135 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 136 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 137 | dependencies: 138 | fill-range "^7.0.1" 139 | 140 | browser-stdout@1.3.1: 141 | version "1.3.1" 142 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 143 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 144 | 145 | bytes@3.1.2: 146 | version "3.1.2" 147 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 148 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 149 | 150 | call-bind@^1.0.0: 151 | version "1.0.2" 152 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 153 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 154 | dependencies: 155 | function-bind "^1.1.1" 156 | get-intrinsic "^1.0.2" 157 | 158 | camelcase@^2.0.1: 159 | version "2.1.1" 160 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" 161 | integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= 162 | 163 | camelcase@^6.0.0: 164 | version "6.3.0" 165 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 166 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 167 | 168 | chai@^4.1.2: 169 | version "4.2.0" 170 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" 171 | integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== 172 | dependencies: 173 | assertion-error "^1.1.0" 174 | check-error "^1.0.2" 175 | deep-eql "^3.0.1" 176 | get-func-name "^2.0.0" 177 | pathval "^1.1.0" 178 | type-detect "^4.0.5" 179 | 180 | chalk@^1.1.1: 181 | version "1.1.3" 182 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 183 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= 184 | dependencies: 185 | ansi-styles "^2.2.1" 186 | escape-string-regexp "^1.0.2" 187 | has-ansi "^2.0.0" 188 | strip-ansi "^3.0.0" 189 | supports-color "^2.0.0" 190 | 191 | chalk@^4.1.0: 192 | version "4.1.2" 193 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 194 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 195 | dependencies: 196 | ansi-styles "^4.1.0" 197 | supports-color "^7.1.0" 198 | 199 | check-error@^1.0.2: 200 | version "1.0.2" 201 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 202 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= 203 | 204 | chokidar@3.5.3, chokidar@^3.5.1: 205 | version "3.5.3" 206 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 207 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 208 | dependencies: 209 | anymatch "~3.1.2" 210 | braces "~3.0.2" 211 | glob-parent "~5.1.2" 212 | is-binary-path "~2.1.0" 213 | is-glob "~4.0.1" 214 | normalize-path "~3.0.0" 215 | readdirp "~3.6.0" 216 | optionalDependencies: 217 | fsevents "~2.3.2" 218 | 219 | cliui@^3.0.3: 220 | version "3.2.0" 221 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" 222 | integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= 223 | dependencies: 224 | string-width "^1.0.1" 225 | strip-ansi "^3.0.1" 226 | wrap-ansi "^2.0.0" 227 | 228 | cliui@^7.0.2: 229 | version "7.0.4" 230 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 231 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 232 | dependencies: 233 | string-width "^4.2.0" 234 | strip-ansi "^6.0.0" 235 | wrap-ansi "^7.0.0" 236 | 237 | code-point-at@^1.0.0: 238 | version "1.1.0" 239 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 240 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 241 | 242 | color-convert@^2.0.1: 243 | version "2.0.1" 244 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 245 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 246 | dependencies: 247 | color-name "~1.1.4" 248 | 249 | color-name@~1.1.4: 250 | version "1.1.4" 251 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 252 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 253 | 254 | commander@^2.9.0: 255 | version "2.20.3" 256 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 257 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 258 | 259 | concat-cli@^4.0.0: 260 | version "4.0.0" 261 | resolved "https://registry.yarnpkg.com/concat-cli/-/concat-cli-4.0.0.tgz#a73a0fb0d18b25804ebe703bcc35922324dbf74d" 262 | integrity sha1-pzoPsNGLJYBOvnA7zDWSIyTb900= 263 | dependencies: 264 | chalk "^1.1.1" 265 | concat "^1.0.0" 266 | yargs "^3.30.0" 267 | 268 | concat-map@0.0.1: 269 | version "0.0.1" 270 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 271 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 272 | 273 | concat@^1.0.0: 274 | version "1.0.3" 275 | resolved "https://registry.yarnpkg.com/concat/-/concat-1.0.3.tgz#40f3353089d65467695cb1886b45edd637d8cca8" 276 | integrity sha1-QPM1MInWVGdpXLGIa0Xt1jfYzKg= 277 | dependencies: 278 | commander "^2.9.0" 279 | 280 | concat@azer/concat: 281 | version "1.0.0" 282 | resolved "https://codeload.github.com/azer/concat/tar.gz/c64c5cbc2e60b0bc1a8f4bceafed661f66f19dcf" 283 | dependencies: 284 | parallel-loop azer/parallel-loop 285 | serial-loop azer/serial-loop 286 | 287 | connect@^3.7.0: 288 | version "3.7.0" 289 | resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" 290 | integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== 291 | dependencies: 292 | debug "2.6.9" 293 | finalhandler "1.1.2" 294 | parseurl "~1.3.3" 295 | utils-merge "1.0.1" 296 | 297 | content-type@~1.0.5: 298 | version "1.0.5" 299 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" 300 | integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== 301 | 302 | cookie@~0.4.1: 303 | version "0.4.2" 304 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" 305 | integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== 306 | 307 | cors@~2.8.5: 308 | version "2.8.5" 309 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" 310 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== 311 | dependencies: 312 | object-assign "^4" 313 | vary "^1" 314 | 315 | custom-event@~1.0.0: 316 | version "1.0.1" 317 | resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" 318 | integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= 319 | 320 | date-format@^4.0.14: 321 | version "4.0.14" 322 | resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" 323 | integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== 324 | 325 | debug@2.6.9: 326 | version "2.6.9" 327 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 328 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 329 | dependencies: 330 | ms "2.0.0" 331 | 332 | debug@4.3.4, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: 333 | version "4.3.4" 334 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 335 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 336 | dependencies: 337 | ms "2.1.2" 338 | 339 | decamelize@^1.1.1: 340 | version "1.2.0" 341 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 342 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 343 | 344 | decamelize@^4.0.0: 345 | version "4.0.0" 346 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 347 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 348 | 349 | deep-eql@^3.0.1: 350 | version "3.0.1" 351 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 352 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 353 | dependencies: 354 | type-detect "^4.0.0" 355 | 356 | depd@2.0.0: 357 | version "2.0.0" 358 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 359 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 360 | 361 | destroy@1.2.0: 362 | version "1.2.0" 363 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 364 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 365 | 366 | di@^0.0.1: 367 | version "0.0.1" 368 | resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" 369 | integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= 370 | 371 | diff@5.0.0: 372 | version "5.0.0" 373 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 374 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 375 | 376 | dom-serialize@^2.2.1: 377 | version "2.2.1" 378 | resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" 379 | integrity sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ== 380 | dependencies: 381 | custom-event "~1.0.0" 382 | ent "~2.2.0" 383 | extend "^3.0.0" 384 | void-elements "^2.0.0" 385 | 386 | ee-first@1.1.1: 387 | version "1.1.1" 388 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 389 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 390 | 391 | emoji-regex@^8.0.0: 392 | version "8.0.0" 393 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 394 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 395 | 396 | encodeurl@~1.0.2: 397 | version "1.0.2" 398 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 399 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 400 | 401 | engine.io-parser@~5.0.3: 402 | version "5.0.6" 403 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.6.tgz#7811244af173e157295dec9b2718dfe42a64ef45" 404 | integrity sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw== 405 | 406 | engine.io@~6.4.1: 407 | version "6.4.1" 408 | resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.4.1.tgz#8056b4526a88e779f9c280d820422d4e3eeaaae5" 409 | integrity sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw== 410 | dependencies: 411 | "@types/cookie" "^0.4.1" 412 | "@types/cors" "^2.8.12" 413 | "@types/node" ">=10.0.0" 414 | accepts "~1.3.4" 415 | base64id "2.0.0" 416 | cookie "~0.4.1" 417 | cors "~2.8.5" 418 | debug "~4.3.1" 419 | engine.io-parser "~5.0.3" 420 | ws "~8.11.0" 421 | 422 | ent@~2.2.0: 423 | version "2.2.0" 424 | resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" 425 | integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= 426 | 427 | escalade@^3.1.1: 428 | version "3.1.1" 429 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 430 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 431 | 432 | escape-html@~1.0.3: 433 | version "1.0.3" 434 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 435 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 436 | 437 | escape-string-regexp@4.0.0: 438 | version "4.0.0" 439 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 440 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 441 | 442 | escape-string-regexp@^1.0.2: 443 | version "1.0.5" 444 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 445 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 446 | 447 | eventemitter3@^4.0.0: 448 | version "4.0.7" 449 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" 450 | integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== 451 | 452 | extend@^3.0.0: 453 | version "3.0.2" 454 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 455 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 456 | 457 | fill-range@^7.0.1: 458 | version "7.0.1" 459 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 460 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 461 | dependencies: 462 | to-regex-range "^5.0.1" 463 | 464 | finalhandler@1.1.2: 465 | version "1.1.2" 466 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 467 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 468 | dependencies: 469 | debug "2.6.9" 470 | encodeurl "~1.0.2" 471 | escape-html "~1.0.3" 472 | on-finished "~2.3.0" 473 | parseurl "~1.3.3" 474 | statuses "~1.5.0" 475 | unpipe "~1.0.0" 476 | 477 | find-up@5.0.0: 478 | version "5.0.0" 479 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 480 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 481 | dependencies: 482 | locate-path "^6.0.0" 483 | path-exists "^4.0.0" 484 | 485 | flat@^5.0.2: 486 | version "5.0.2" 487 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 488 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 489 | 490 | flatted@^3.2.7: 491 | version "3.2.7" 492 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" 493 | integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== 494 | 495 | follow-redirects@^1.0.0: 496 | version "1.13.0" 497 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" 498 | integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== 499 | 500 | fs-extra@^8.1.0: 501 | version "8.1.0" 502 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 503 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 504 | dependencies: 505 | graceful-fs "^4.2.0" 506 | jsonfile "^4.0.0" 507 | universalify "^0.1.0" 508 | 509 | fs.realpath@^1.0.0: 510 | version "1.0.0" 511 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 512 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 513 | 514 | fsevents@~2.3.2: 515 | version "2.3.2" 516 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 517 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 518 | 519 | function-bind@^1.1.1: 520 | version "1.1.1" 521 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 522 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 523 | 524 | get-caller-file@^2.0.5: 525 | version "2.0.5" 526 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 527 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 528 | 529 | get-func-name@^2.0.0: 530 | version "2.0.0" 531 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 532 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= 533 | 534 | get-intrinsic@^1.0.2: 535 | version "1.2.0" 536 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" 537 | integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== 538 | dependencies: 539 | function-bind "^1.1.1" 540 | has "^1.0.3" 541 | has-symbols "^1.0.3" 542 | 543 | glob-parent@~5.1.2: 544 | version "5.1.2" 545 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 546 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 547 | dependencies: 548 | is-glob "^4.0.1" 549 | 550 | glob@7.2.0: 551 | version "7.2.0" 552 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 553 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 554 | dependencies: 555 | fs.realpath "^1.0.0" 556 | inflight "^1.0.4" 557 | inherits "2" 558 | minimatch "^3.0.4" 559 | once "^1.3.0" 560 | path-is-absolute "^1.0.0" 561 | 562 | glob@^7.1.3, glob@^7.1.7: 563 | version "7.2.3" 564 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 565 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 566 | dependencies: 567 | fs.realpath "^1.0.0" 568 | inflight "^1.0.4" 569 | inherits "2" 570 | minimatch "^3.1.1" 571 | once "^1.3.0" 572 | path-is-absolute "^1.0.0" 573 | 574 | graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6: 575 | version "4.2.10" 576 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 577 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 578 | 579 | has-ansi@^2.0.0: 580 | version "2.0.0" 581 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 582 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= 583 | dependencies: 584 | ansi-regex "^2.0.0" 585 | 586 | has-flag@^4.0.0: 587 | version "4.0.0" 588 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 589 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 590 | 591 | has-symbols@^1.0.3: 592 | version "1.0.3" 593 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 594 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 595 | 596 | has@^1.0.3: 597 | version "1.0.3" 598 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 599 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 600 | dependencies: 601 | function-bind "^1.1.1" 602 | 603 | he@1.2.0: 604 | version "1.2.0" 605 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 606 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 607 | 608 | http-errors@2.0.0: 609 | version "2.0.0" 610 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 611 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 612 | dependencies: 613 | depd "2.0.0" 614 | inherits "2.0.4" 615 | setprototypeof "1.2.0" 616 | statuses "2.0.1" 617 | toidentifier "1.0.1" 618 | 619 | http-proxy@^1.18.1: 620 | version "1.18.1" 621 | resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" 622 | integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== 623 | dependencies: 624 | eventemitter3 "^4.0.0" 625 | follow-redirects "^1.0.0" 626 | requires-port "^1.0.0" 627 | 628 | iconv-lite@0.4.24: 629 | version "0.4.24" 630 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 631 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 632 | dependencies: 633 | safer-buffer ">= 2.1.2 < 3" 634 | 635 | inflight@^1.0.4: 636 | version "1.0.6" 637 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 638 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 639 | dependencies: 640 | once "^1.3.0" 641 | wrappy "1" 642 | 643 | inherits@2, inherits@2.0.4: 644 | version "2.0.4" 645 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 646 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 647 | 648 | invert-kv@^1.0.0: 649 | version "1.0.0" 650 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" 651 | integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= 652 | 653 | is-binary-path@~2.1.0: 654 | version "2.1.0" 655 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 656 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 657 | dependencies: 658 | binary-extensions "^2.0.0" 659 | 660 | is-docker@^2.0.0: 661 | version "2.1.1" 662 | resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" 663 | integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== 664 | 665 | is-extglob@^2.1.1: 666 | version "2.1.1" 667 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 668 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 669 | 670 | is-fullwidth-code-point@^1.0.0: 671 | version "1.0.0" 672 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 673 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 674 | dependencies: 675 | number-is-nan "^1.0.0" 676 | 677 | is-fullwidth-code-point@^3.0.0: 678 | version "3.0.0" 679 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 680 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 681 | 682 | is-glob@^4.0.1, is-glob@~4.0.1: 683 | version "4.0.3" 684 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 685 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 686 | dependencies: 687 | is-extglob "^2.1.1" 688 | 689 | is-number@^7.0.0: 690 | version "7.0.0" 691 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 692 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 693 | 694 | is-plain-obj@^2.1.0: 695 | version "2.1.0" 696 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 697 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 698 | 699 | is-unicode-supported@^0.1.0: 700 | version "0.1.0" 701 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 702 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 703 | 704 | is-wsl@^2.1.0: 705 | version "2.2.0" 706 | resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" 707 | integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== 708 | dependencies: 709 | is-docker "^2.0.0" 710 | 711 | isbinaryfile@^4.0.8: 712 | version "4.0.10" 713 | resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" 714 | integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== 715 | 716 | "jquery-mousewheel@>= 3.1.13": 717 | version "3.1.13" 718 | resolved "https://registry.yarnpkg.com/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz#06f0335f16e353a695e7206bf50503cb523a6ee5" 719 | integrity sha1-BvAzXxbjU6aV5yBr9QUDy1I6buU= 720 | 721 | "jquery@>= 1.7.2": 722 | version "3.5.1" 723 | resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz#d7b4d08e1bfdb86ad2f1a3d039ea17304717abb5" 724 | integrity sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg== 725 | 726 | js-yaml@4.1.0: 727 | version "4.1.0" 728 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 729 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 730 | dependencies: 731 | argparse "^2.0.1" 732 | 733 | jsonfile@^4.0.0: 734 | version "4.0.0" 735 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 736 | integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== 737 | optionalDependencies: 738 | graceful-fs "^4.1.6" 739 | 740 | karma-chai@^0.1.0: 741 | version "0.1.0" 742 | resolved "https://registry.yarnpkg.com/karma-chai/-/karma-chai-0.1.0.tgz#bee5ad40400517811ae34bb945f762909108b79a" 743 | integrity sha1-vuWtQEAFF4Ea40u5RfdikJEIt5o= 744 | 745 | karma-firefox-launcher@^1.1.0: 746 | version "1.3.0" 747 | resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.3.0.tgz#ebcbb1d1ddfada6be900eb8fae25bcf2dcdc8171" 748 | integrity sha512-Fi7xPhwrRgr+94BnHX0F5dCl1miIW4RHnzjIGxF8GaIEp7rNqX7LSi7ok63VXs3PS/5MQaQMhGxw+bvD+pibBQ== 749 | dependencies: 750 | is-wsl "^2.1.0" 751 | 752 | karma-mocha@^2.0.1: 753 | version "2.0.1" 754 | resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-2.0.1.tgz#4b0254a18dfee71bdbe6188d9a6861bf86b0cd7d" 755 | integrity sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ== 756 | dependencies: 757 | minimist "^1.2.3" 758 | 759 | karma@^6.4.1: 760 | version "6.4.1" 761 | resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.1.tgz#f2253716dd3a41aaa813fa9f54b6ee047e1127d9" 762 | integrity sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA== 763 | dependencies: 764 | "@colors/colors" "1.5.0" 765 | body-parser "^1.19.0" 766 | braces "^3.0.2" 767 | chokidar "^3.5.1" 768 | connect "^3.7.0" 769 | di "^0.0.1" 770 | dom-serialize "^2.2.1" 771 | glob "^7.1.7" 772 | graceful-fs "^4.2.6" 773 | http-proxy "^1.18.1" 774 | isbinaryfile "^4.0.8" 775 | lodash "^4.17.21" 776 | log4js "^6.4.1" 777 | mime "^2.5.2" 778 | minimatch "^3.0.4" 779 | mkdirp "^0.5.5" 780 | qjobs "^1.2.0" 781 | range-parser "^1.2.1" 782 | rimraf "^3.0.2" 783 | socket.io "^4.4.1" 784 | source-map "^0.6.1" 785 | tmp "^0.2.1" 786 | ua-parser-js "^0.7.30" 787 | yargs "^16.1.1" 788 | 789 | lcid@^1.0.0: 790 | version "1.0.0" 791 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" 792 | integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= 793 | dependencies: 794 | invert-kv "^1.0.0" 795 | 796 | locate-path@^6.0.0: 797 | version "6.0.0" 798 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 799 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 800 | dependencies: 801 | p-locate "^5.0.0" 802 | 803 | lodash@^4.17.21: 804 | version "4.17.21" 805 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 806 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 807 | 808 | log-symbols@4.1.0: 809 | version "4.1.0" 810 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 811 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 812 | dependencies: 813 | chalk "^4.1.0" 814 | is-unicode-supported "^0.1.0" 815 | 816 | log4js@^6.4.1: 817 | version "6.8.0" 818 | resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.8.0.tgz#f0fe9b2b82725aaf97f20692e23381a5c5722448" 819 | integrity sha512-g+V8gZyurIexrOvWQ+AcZsIvuK/lBnx2argejZxL4gVZ4Hq02kUYH6WZOnqxgBml+zzQZYdaEoTN84B6Hzm8Fg== 820 | dependencies: 821 | date-format "^4.0.14" 822 | debug "^4.3.4" 823 | flatted "^3.2.7" 824 | rfdc "^1.3.0" 825 | streamroller "^3.1.5" 826 | 827 | media-typer@0.3.0: 828 | version "0.3.0" 829 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 830 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 831 | 832 | mime-db@1.44.0: 833 | version "1.44.0" 834 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" 835 | integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== 836 | 837 | mime-types@~2.1.24: 838 | version "2.1.27" 839 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" 840 | integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== 841 | dependencies: 842 | mime-db "1.44.0" 843 | 844 | mime@^2.5.2: 845 | version "2.6.0" 846 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" 847 | integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== 848 | 849 | minimatch@5.0.1: 850 | version "5.0.1" 851 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" 852 | integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== 853 | dependencies: 854 | brace-expansion "^2.0.1" 855 | 856 | minimatch@^3.0.4, minimatch@^3.1.1: 857 | version "3.1.2" 858 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 859 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 860 | dependencies: 861 | brace-expansion "^1.1.7" 862 | 863 | minimist@^1.2.3, minimist@^1.2.6: 864 | version "1.2.8" 865 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 866 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 867 | 868 | mkdirp@^0.5.5: 869 | version "0.5.6" 870 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" 871 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== 872 | dependencies: 873 | minimist "^1.2.6" 874 | 875 | mocha@^10.2.0: 876 | version "10.2.0" 877 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" 878 | integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== 879 | dependencies: 880 | ansi-colors "4.1.1" 881 | browser-stdout "1.3.1" 882 | chokidar "3.5.3" 883 | debug "4.3.4" 884 | diff "5.0.0" 885 | escape-string-regexp "4.0.0" 886 | find-up "5.0.0" 887 | glob "7.2.0" 888 | he "1.2.0" 889 | js-yaml "4.1.0" 890 | log-symbols "4.1.0" 891 | minimatch "5.0.1" 892 | ms "2.1.3" 893 | nanoid "3.3.3" 894 | serialize-javascript "6.0.0" 895 | strip-json-comments "3.1.1" 896 | supports-color "8.1.1" 897 | workerpool "6.2.1" 898 | yargs "16.2.0" 899 | yargs-parser "20.2.4" 900 | yargs-unparser "2.0.0" 901 | 902 | ms@2.0.0: 903 | version "2.0.0" 904 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 905 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 906 | 907 | ms@2.1.2: 908 | version "2.1.2" 909 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 910 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 911 | 912 | ms@2.1.3: 913 | version "2.1.3" 914 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 915 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 916 | 917 | nanoid@3.3.3: 918 | version "3.3.3" 919 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" 920 | integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== 921 | 922 | negotiator@0.6.2: 923 | version "0.6.2" 924 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 925 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 926 | 927 | normalize-path@^3.0.0, normalize-path@~3.0.0: 928 | version "3.0.0" 929 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 930 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 931 | 932 | number-is-nan@^1.0.0: 933 | version "1.0.1" 934 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 935 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 936 | 937 | object-assign@^4: 938 | version "4.1.1" 939 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 940 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 941 | 942 | object-inspect@^1.9.0: 943 | version "1.12.3" 944 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" 945 | integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== 946 | 947 | on-finished@2.4.1: 948 | version "2.4.1" 949 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 950 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 951 | dependencies: 952 | ee-first "1.1.1" 953 | 954 | on-finished@~2.3.0: 955 | version "2.3.0" 956 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 957 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 958 | dependencies: 959 | ee-first "1.1.1" 960 | 961 | once@^1.3.0: 962 | version "1.4.0" 963 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 964 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 965 | dependencies: 966 | wrappy "1" 967 | 968 | os-locale@^1.4.0: 969 | version "1.4.0" 970 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" 971 | integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= 972 | dependencies: 973 | lcid "^1.0.0" 974 | 975 | p-limit@^3.0.2: 976 | version "3.1.0" 977 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 978 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 979 | dependencies: 980 | yocto-queue "^0.1.0" 981 | 982 | p-locate@^5.0.0: 983 | version "5.0.0" 984 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 985 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 986 | dependencies: 987 | p-limit "^3.0.2" 988 | 989 | parallel-loop@azer/parallel-loop: 990 | version "0.0.2" 991 | resolved "https://codeload.github.com/azer/parallel-loop/tar.gz/054b0d3fe633483a3a6b94104c8343473208d5fb" 992 | 993 | parseurl@~1.3.3: 994 | version "1.3.3" 995 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 996 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 997 | 998 | path-exists@^4.0.0: 999 | version "4.0.0" 1000 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1001 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1002 | 1003 | path-is-absolute@^1.0.0: 1004 | version "1.0.1" 1005 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1006 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1007 | 1008 | pathval@^1.1.0: 1009 | version "1.1.0" 1010 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" 1011 | integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= 1012 | 1013 | php-date-formatter@^1.3.6: 1014 | version "1.3.6" 1015 | resolved "https://registry.yarnpkg.com/php-date-formatter/-/php-date-formatter-1.3.6.tgz#6d67359da890c742005fa89d20be3ded31cc1d2a" 1016 | integrity sha512-/CKsZYmAwXeNh8KpD/CF9hcJDZNhdb2ICN8+qgqOt5sUu9liZIxZ1R284TNj5MtPt8RjG5X0xn6WSqL0kcKMBg== 1017 | 1018 | picomatch@^2.0.4, picomatch@^2.2.1: 1019 | version "2.3.1" 1020 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1021 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1022 | 1023 | qjobs@^1.2.0: 1024 | version "1.2.0" 1025 | resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" 1026 | integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== 1027 | 1028 | qs@6.11.0: 1029 | version "6.11.0" 1030 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" 1031 | integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== 1032 | dependencies: 1033 | side-channel "^1.0.4" 1034 | 1035 | randombytes@^2.1.0: 1036 | version "2.1.0" 1037 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1038 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1039 | dependencies: 1040 | safe-buffer "^5.1.0" 1041 | 1042 | range-parser@^1.2.1: 1043 | version "1.2.1" 1044 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1045 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1046 | 1047 | raw-body@2.5.2: 1048 | version "2.5.2" 1049 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" 1050 | integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== 1051 | dependencies: 1052 | bytes "3.1.2" 1053 | http-errors "2.0.0" 1054 | iconv-lite "0.4.24" 1055 | unpipe "1.0.0" 1056 | 1057 | readdirp@~3.6.0: 1058 | version "3.6.0" 1059 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1060 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1061 | dependencies: 1062 | picomatch "^2.2.1" 1063 | 1064 | require-directory@^2.1.1: 1065 | version "2.1.1" 1066 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1067 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 1068 | 1069 | requires-port@^1.0.0: 1070 | version "1.0.0" 1071 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 1072 | integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= 1073 | 1074 | rfdc@^1.3.0: 1075 | version "1.3.0" 1076 | resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" 1077 | integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== 1078 | 1079 | rimraf@^3.0.0, rimraf@^3.0.2: 1080 | version "3.0.2" 1081 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1082 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1083 | dependencies: 1084 | glob "^7.1.3" 1085 | 1086 | safe-buffer@^5.1.0: 1087 | version "5.2.1" 1088 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1089 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1090 | 1091 | "safer-buffer@>= 2.1.2 < 3": 1092 | version "2.1.2" 1093 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1094 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1095 | 1096 | serial-loop@azer/serial-loop: 1097 | version "0.0.1" 1098 | resolved "https://codeload.github.com/azer/serial-loop/tar.gz/99c6271f80f075b7db089a1aadc7178a310a4570" 1099 | 1100 | serialize-javascript@6.0.0: 1101 | version "6.0.0" 1102 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" 1103 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 1104 | dependencies: 1105 | randombytes "^2.1.0" 1106 | 1107 | setprototypeof@1.2.0: 1108 | version "1.2.0" 1109 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 1110 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 1111 | 1112 | side-channel@^1.0.4: 1113 | version "1.0.4" 1114 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1115 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1116 | dependencies: 1117 | call-bind "^1.0.0" 1118 | get-intrinsic "^1.0.2" 1119 | object-inspect "^1.9.0" 1120 | 1121 | socket.io-adapter@~2.5.2: 1122 | version "2.5.2" 1123 | resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz#5de9477c9182fdc171cd8c8364b9a8894ec75d12" 1124 | integrity sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA== 1125 | dependencies: 1126 | ws "~8.11.0" 1127 | 1128 | socket.io-parser@~4.2.1: 1129 | version "4.2.2" 1130 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.2.tgz#1dd384019e25b7a3d374877f492ab34f2ad0d206" 1131 | integrity sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw== 1132 | dependencies: 1133 | "@socket.io/component-emitter" "~3.1.0" 1134 | debug "~4.3.1" 1135 | 1136 | socket.io@^4.4.1: 1137 | version "4.6.1" 1138 | resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.6.1.tgz#62ec117e5fce0692fa50498da9347cfb52c3bc70" 1139 | integrity sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA== 1140 | dependencies: 1141 | accepts "~1.3.4" 1142 | base64id "~2.0.0" 1143 | debug "~4.3.2" 1144 | engine.io "~6.4.1" 1145 | socket.io-adapter "~2.5.2" 1146 | socket.io-parser "~4.2.1" 1147 | 1148 | source-map@^0.6.1: 1149 | version "0.6.1" 1150 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1151 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1152 | 1153 | statuses@2.0.1: 1154 | version "2.0.1" 1155 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 1156 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 1157 | 1158 | statuses@~1.5.0: 1159 | version "1.5.0" 1160 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1161 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 1162 | 1163 | streamroller@^3.1.5: 1164 | version "3.1.5" 1165 | resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.5.tgz#1263182329a45def1ffaef58d31b15d13d2ee7ff" 1166 | integrity sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw== 1167 | dependencies: 1168 | date-format "^4.0.14" 1169 | debug "^4.3.4" 1170 | fs-extra "^8.1.0" 1171 | 1172 | string-width@^1.0.1: 1173 | version "1.0.2" 1174 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 1175 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 1176 | dependencies: 1177 | code-point-at "^1.0.0" 1178 | is-fullwidth-code-point "^1.0.0" 1179 | strip-ansi "^3.0.0" 1180 | 1181 | string-width@^4.1.0, string-width@^4.2.0: 1182 | version "4.2.3" 1183 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1184 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1185 | dependencies: 1186 | emoji-regex "^8.0.0" 1187 | is-fullwidth-code-point "^3.0.0" 1188 | strip-ansi "^6.0.1" 1189 | 1190 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 1191 | version "3.0.1" 1192 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1193 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 1194 | dependencies: 1195 | ansi-regex "^2.0.0" 1196 | 1197 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1198 | version "6.0.1" 1199 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1200 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1201 | dependencies: 1202 | ansi-regex "^5.0.1" 1203 | 1204 | strip-json-comments@3.1.1: 1205 | version "3.1.1" 1206 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1207 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1208 | 1209 | supports-color@8.1.1: 1210 | version "8.1.1" 1211 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1212 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1213 | dependencies: 1214 | has-flag "^4.0.0" 1215 | 1216 | supports-color@^2.0.0: 1217 | version "2.0.0" 1218 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 1219 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= 1220 | 1221 | supports-color@^7.1.0: 1222 | version "7.2.0" 1223 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1224 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1225 | dependencies: 1226 | has-flag "^4.0.0" 1227 | 1228 | tmp@^0.2.1: 1229 | version "0.2.1" 1230 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" 1231 | integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== 1232 | dependencies: 1233 | rimraf "^3.0.0" 1234 | 1235 | to-regex-range@^5.0.1: 1236 | version "5.0.1" 1237 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1238 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1239 | dependencies: 1240 | is-number "^7.0.0" 1241 | 1242 | toidentifier@1.0.1: 1243 | version "1.0.1" 1244 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 1245 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 1246 | 1247 | type-detect@^4.0.0, type-detect@^4.0.5: 1248 | version "4.0.8" 1249 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 1250 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 1251 | 1252 | type-is@~1.6.18: 1253 | version "1.6.18" 1254 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1255 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1256 | dependencies: 1257 | media-typer "0.3.0" 1258 | mime-types "~2.1.24" 1259 | 1260 | ua-parser-js@^0.7.30: 1261 | version "0.7.33" 1262 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.33.tgz#1d04acb4ccef9293df6f70f2c3d22f3030d8b532" 1263 | integrity sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw== 1264 | 1265 | uglify-js@^3.4.9: 1266 | version "3.11.2" 1267 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.11.2.tgz#9f50325544273c27b20e586def140e7726c525ea" 1268 | integrity sha512-G440NU6fewtnQftSgqRV1r2A5ChKbU1gqFCJ7I8S7MPpY/eZZfLGefaY6gUZYiWebMaO+txgiQ1ZyLDuNWJulg== 1269 | 1270 | uglifycss@^0.0.27: 1271 | version "0.0.27" 1272 | resolved "https://registry.yarnpkg.com/uglifycss/-/uglifycss-0.0.27.tgz#53553b8115de26dce57b42ba0b34e88dd80d0cde" 1273 | integrity sha1-U1U7gRXeJtzle0K6CzTojdgNDN4= 1274 | 1275 | universalify@^0.1.0: 1276 | version "0.1.2" 1277 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1278 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1279 | 1280 | unpipe@1.0.0, unpipe@~1.0.0: 1281 | version "1.0.0" 1282 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1283 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 1284 | 1285 | utils-merge@1.0.1: 1286 | version "1.0.1" 1287 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1288 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 1289 | 1290 | vary@^1: 1291 | version "1.1.2" 1292 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1293 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 1294 | 1295 | void-elements@^2.0.0: 1296 | version "2.0.1" 1297 | resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" 1298 | integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= 1299 | 1300 | window-size@^0.1.4: 1301 | version "0.1.4" 1302 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" 1303 | integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= 1304 | 1305 | workerpool@6.2.1: 1306 | version "6.2.1" 1307 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" 1308 | integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== 1309 | 1310 | wrap-ansi@^2.0.0: 1311 | version "2.1.0" 1312 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 1313 | integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= 1314 | dependencies: 1315 | string-width "^1.0.1" 1316 | strip-ansi "^3.0.1" 1317 | 1318 | wrap-ansi@^7.0.0: 1319 | version "7.0.0" 1320 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1321 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1322 | dependencies: 1323 | ansi-styles "^4.0.0" 1324 | string-width "^4.1.0" 1325 | strip-ansi "^6.0.0" 1326 | 1327 | wrappy@1: 1328 | version "1.0.2" 1329 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1330 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1331 | 1332 | ws@~8.11.0: 1333 | version "8.11.0" 1334 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" 1335 | integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== 1336 | 1337 | y18n@^3.2.0: 1338 | version "3.2.1" 1339 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 1340 | integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= 1341 | 1342 | y18n@^5.0.5: 1343 | version "5.0.8" 1344 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1345 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1346 | 1347 | yargs-parser@20.2.4: 1348 | version "20.2.4" 1349 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 1350 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 1351 | 1352 | yargs-parser@^20.2.2: 1353 | version "20.2.9" 1354 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 1355 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1356 | 1357 | yargs-unparser@2.0.0: 1358 | version "2.0.0" 1359 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 1360 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1361 | dependencies: 1362 | camelcase "^6.0.0" 1363 | decamelize "^4.0.0" 1364 | flat "^5.0.2" 1365 | is-plain-obj "^2.1.0" 1366 | 1367 | yargs@16.2.0, yargs@^16.1.1: 1368 | version "16.2.0" 1369 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 1370 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1371 | dependencies: 1372 | cliui "^7.0.2" 1373 | escalade "^3.1.1" 1374 | get-caller-file "^2.0.5" 1375 | require-directory "^2.1.1" 1376 | string-width "^4.2.0" 1377 | y18n "^5.0.5" 1378 | yargs-parser "^20.2.2" 1379 | 1380 | yargs@^3.30.0: 1381 | version "3.32.0" 1382 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" 1383 | integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= 1384 | dependencies: 1385 | camelcase "^2.0.1" 1386 | cliui "^3.0.3" 1387 | decamelize "^1.1.1" 1388 | os-locale "^1.4.0" 1389 | string-width "^1.0.1" 1390 | window-size "^0.1.4" 1391 | y18n "^3.2.0" 1392 | 1393 | yocto-queue@^0.1.0: 1394 | version "0.1.0" 1395 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1396 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1397 | --------------------------------------------------------------------------------